Скругление кривых

Автор oit, 27.05.13, 08:28:34

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

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

oit

Добрый день!

Создаю скругление кривых с помощью интерфейса IFilletCurve, устанавливаю свойства TrimCurve1:=true и TrimCurve2:=true.
В результате операции получаются усеченные кривые и радиус скругления. Как получить указатель на усеченную кривую и радиус скругления, которые получились в результате операции "Скругление кривых"?

Есть два варианта:
- первый искать по координатам и остальным известным признакам;
- второй создать список указателей IDispatch объектов o3d_TrimmedCurveObject и o3d_FilletCurveObject до операции, а затем найти вновь появившиеся указатели после операции, их будет два o3d_TrimmedCurveObject если усекались обе кривые и один o3d_FilletCurveObject.

oit

Есть еще один вариант: привести интерфейс IFilletCurve к интерфейсу IModelObject1 и через свойство Childrens получить потомков, а дальше в зависимости от Name привести к нужному типу которые выше привел Sabahs.

...
        newFillet_:=newFillet as IModelObject1;
        arr:=newFillet_.Childrens[ksRTIndifferent];
        ShowMessage('Count children = '+IntToStr(VarArrayHighBound(arr, 1)+1));
        for i := 0 to VarArrayHighBound(arr, 1) do
        begin
          objDisp:=arr;
          objModelObject:=objDisp as IModelObject;
          ShowMessage(objModelObject.Name);
        end;
...
+ Благодарностей: 1

Спасибо, что напомнили про интерфейс IModelObject1, а то он у меня совсем из головы вылетел.
Привести к типу, лучше непосредственно по типу самого полученного объекта IModelObject.ModelObjectType.