• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Скругление 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;

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