Коллекция ребер конкретной поверхности.

Автор graphdark, 27.07.21, 10:18:28

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

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

graphdark

Как найти конкретную поверхность после операции выдавливания, я понял. А как ребра получить, чтобы потом построить фаску-не понял.
EdgePartCollection := ksEntityCollection(Form1.Part.EntityCollection(6{7}));
Получаю коллекцию всех поверхностей Part
EdgePartCollection := EdgePartCollection.GetByIndex(EdgePartCollection.GetCount - 1);
По индексу нахожу нужную поверхность. Пробовал по индексу же выискивать ребра, работает только с одним вырезанием, понятно почему.


graphdark

Цитата: Sabahs от 27.07.21, 10:28:55.Owner
Искал у еджепартколлекшон такое свойство, не нашел. Есть еще идея по точке найти ребро. Но пока не нашел.


graphdark

Долго не мог придумать правильное решение, но нашел-таки.
  EntityCut.Name := 'Отверстие' + IntToStr(n);
  EntityCut.Create();
  Feat := ksFeature(part.GetFeature);
  FeatCol := ksFeatureCollection(feat.SubFeatureCollection(true,true));
  Feat := FeatCol.GetByName('Отверстие' + IntToStr(n),true,true);
  if Feat = nil then ShowMessage('Feat=nil');
  after := ksEntityCollection(feat.EntityCollection(o3d_face));
//      ShowMessage('Отверстие' + IntToStr(n));
  hole := ksEntity(after.First);
  hole.name := 'Hole' + IntToStr(n) + '_D:' + FloatToStr(D)
Для ребер будет o3d_edge естественно и либо after.first, либо after.last.