Библиотека для создания 3D модели в Компас 15

Автор TatianaP, 19.03.15, 11:53:54

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

TatianaP

Была создана библиотека для создания 3D модели для Компас V13. При запуске этой библиотеки в Коспас V15, создается документ, а построение детали не выполняется. Пожалуйста, подскажите, что нужно изменить?

  Фрагмент кода для создания первой операции в модели:
if iDocument3D.Create(false, true) then
  begin
    iDocument3D.author := 'Автор';                // Автор документа
    iDocument3D.comment := 'Пример модели'; // Комментарии к документу
      iDocument3D.fileName := 'sample.m3d';    // Имя файла Документа
    iDocument3D.UpdateDocumentParam();             // Обновить параметры Документа
      iDocument3D.Save();                            // Сохранить документ
  end;

  iPart := ksPart(iDocument3D.GetPart( pNew_Part )); // новый компонент
  if iPart <> nil then
  begin
   iSketchEntity := ksEntity( iPart.NewEntity( o3d_sketch ));
    if iSketchEntity <> nil then
    begin
      // интерфейс свойств эскиза
      iSketchDef := ksSketchDefinition(iSketchEntity.GetDefinition);
      if iSketchDef <> nil then
      begin
        // интерфейс плоскости XOY
        iPlaneEntity := ksEntity(iPart.GetDefaultEntity( o3d_planeXOY ));

        if iPlaneEntity <> nil then
        begin
          iSketchDef.SetPlane( iPlaneEntity ); // установим плоскость XOY базовой для эскиза
          iSketchEntity.Create; // создадим эскиз
          // интерфейс редактора эскиза
          iSketchDocument2D := ksDocument2D(iSketchDef.BeginEdit);

          if iSketchDocument2D <> nil then
          begin
            // введем новый эскиз
            iSketchDocument2D.kslineseg( 0, 0, 0, 50, 1 );
            iSketchDocument2D.kslineseg( 0, 0, 50, 0, 1 );
            iSketchDocument2D.kslineseg( 0, 50, 50, 50, 1 );
            iSketchDocument2D.kslineseg( 50, 0, 50, 50, 1 );

           iSketchDef.EndEdit; // завершение редактирования эскиза
       iBaseExtrusionEntity := ksEntity(iPart.NewEntity( o3d_baseExtrusion ));
           if iBaseExtrusionEntity <> nil then
            begin
              // интерфейс свойств базовой операции выдавливания
              iBaseExtrusionDef := ksBaseExtrusionDefinition(iBaseExtrusionEntity.GetDefinition);
              if iBaseExtrusionDef <> nil then
              begin
      iBaseExtrusionDef.DirectionType := dtNormal; // направление выдавливания
      iBaseExtrusionDef.SetSideParam( true, etBlind, 40, 0, false );   //толщина выдавливания
      iBaseExtrusionDef.SetSketch( iSketchEntity ); // эскиз операции выдавливания
      iBaseExtrusionEntity.Create; // создать операцию

oit

в v15 вместо pNew_Part используйте pTop_Part должно быть как-то так:
iPart := ksPart(iDocument3D.GetPart( pTop_Part )); // новый компонент

Совет: прогоните на отладке.

+ Благодарностей: 1

TatianaP