Скругление ksFilletDefinition плохо возвращает array (КОМПАС 3D) C#

Автор booster2, 11.06.16, 18:02:31

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

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

booster2

Всем доброго времени суток!
Суть вопроса:
Есть скругление ksFilletDefinition, у него есть метод array(), который возвращает массив ребер скругления.
У меня возвращается array (правильной длины) - ksEntityCollection, но все ребра в этом массиве не имеют длины и прочих нужных параметров, почему?

Листинг:
entity - Исходное скругление (ksEntity) (построено на одном ребре)
ksFilletDefinition filletAPI5 = entity.GetDefinition();
ksEntityCollection array = filletAPI5.array();
ksEntity ENT = array.GetByIndex(0);
if (ENT.type == (int)Obj3dType.o3d_edge)
{
      ksEdgeDefinition ed = ENT.GetDefinition();
      MessageBox.Show(ed.GetLength(0x1).ToString());
}

MessagBox  упорно показывает 0.

booster2

Проблема решена!
Нужно после прочтения array убирать из расчета скругление.
В исходный код нужно добавить:

ksFilletDefinition filletAPI5 = entity.GetDefinition();
ksEntityCollection array = filletAPI5.array();
ksEntity ENT = array.GetByIndex(0);
entity.excluded = true;
if (ENT.type == (int)Obj3dType.o3d_edge)
{
      ksEdgeDefinition ed = ENT.GetDefinition();
      MessageBox.Show(ed.GetLength(0x1).ToString());
}
entity.excluded = false;

Надеюсь кому-то тоже поможет