Создание деталей в сборке программным способом.

Автор КАВ, 09.02.06, 14:22:45

« предыдущая - следующая »

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

КАВ

09.02.06, 14:22:45 Последнее редактирование: 09.02.06, 14:27:48 от КАВ
Коллеги, подскажите, как можно создать деталь в сборке, сгенерировав её программным способом. Опишите алгоритм по подробнее. Может у кого есть написанный код для этого, поделитесь с начинающим.

Gek

Пожалста.
           Part := ksPart(iDoc2.CreatePartInAssembly(CurDir + '\' + RefDes + '.m3d', OffEn));   {Создаем деталь в сборке}
           Part.name := RefDes;
           Part.Update;
           Part.BeginEdit;                { Всячески ее редактируем}
           SkEn := ksEntity(Part.NewEntity(o3d_sketch));
           SkDef := ksSketchDefinition(SkEn.GetDefinition);
           PlaneEn := ksEntity(Part.GetDefaultEntity(o3d_planeXOY));
           SkDef.SetPlane(PlaneEn);
           SkEn.Create;
           SkDoc := ksDocument2D(SkDef.BeginEdit);
           .....
           Part.EndEdit(true);
Но вообще хочу сказать, что намного быстрее вставлять в сборку уже созданную деталь.

КАВ

10.02.06, 15:44:11 #2 Последнее редактирование: 10.02.06, 16:29:07 от КАВ
Спасибо за ответ. Ещё есть команда ksDocument3D::CreatePartFromFile (Создать деталь в сборке). Она как применяется?

Gek

Это и есть вставка готовой детали (сборки) из файла. Делается очень просто
           Components.Part := ksPart(iDoc2.GetPart(pNew_Part));
           iDoc2.SetPartFromFile(ModelName, Components.Part, false);

Но как правило, после этого надо отредактировать размещение и ориентацию модели
Placement := ksPlacement(Components.Part.GetPlacement);
Placement.SetOrigin(X, Y, Z);
Placement.SetAxis(X1, Y1, Z1, 0);       {Ориентация Оси Х модели}
Placement.SetAxis(X2, Y2, Z2, 1);       {Ориентация Оси Y модели}
Components.Part.UpdatePlacement;

КАВ

 iDoc2.SetPartFromFile(ModelName, Components.Part, false); это понятно, в SDK есть пример, а вот команда    ksDocument3D::CreatePartFromFile как работает?

Gek

Есть мнение, что она вообще не работает. Да и потом, зачем она тебе нужна? Два приведенных способа, имхо, полностью покрывают программерские потребности. Или ты любитель экзотики?

КАВ

 
Цитата: Gek от 15.02.06, 10:57:31
Есть мнение, что она вообще не работает. Да и потом, зачем она тебе нужна? Два приведенных способа, имхо, полностью покрывают программерские потребности. Или ты любитель экзотики?


Просто интересно. А вот как получить  OffEn в команде  Part := ksPart(iDoc2.CreatePartInAssembly(CurDir + '\' + RefDes + '.m3d', OffEn));   {Создаем деталь в сборке}. У меня получилось её только указать.

Gek

Смещенная плоскость делается так

   Main := ksPart(iDoc2.GetPart(pTop_Part));             {Верхняя сборка документа iDoc2}
   OffEn := ksEntity(Main.NewEntity(o3d_planeOffset)); 
   OD := ksPlaneOffsetDefinition(OffEn.GetDefinition);
   OD.offset := Delta;               {Смещение}
   OD.direction := true;            {Направление сдвига}
   OD.SetPlane(iPlaneEntity);     {Относительно кого смещенная}
   OffEn.Create;