Как изменить ориентацию эскиза в CATIA с помощью VB/Knowledgeware?

Я пытаюсь создать шаблон знаний, чтобы при выборе строкового значения из раскрывающегося списка параметра с несколькими значениями реакция срабатывала в соответствии с выбором. Например, если я выберу «без выреза», элементы кармана не будут созданы. (или удалены, если они уже существуют) Если я выберу «вырез сверху», для создания элемента кармана будет использоваться предопределенный эскиз. Однако, где я застрял, так это в том, что я хочу определить «нижний разрез», изменив ориентацию позиционированного эскиза. Я себе это так представляю:

  1. "нижний разрез" выбран из выпадающего списка
  2. будет инициирована поддержка изменения эскиза
  3. Будет выбран вариант "Reverse V"
  4. эскиз будет перевернут вокруг плоскости xy
  5. Если выбран «вырез как сверху, так и снизу», он вернет эскиз в верхнее положение (снимите флажок «Обратный V») и отразит полученный карман вокруг XY.

Мне удалось выполнить все, кроме «Reverse V» в «Change Sketch Support». Понятия не имею, как лучше всего это сделать.
До сих пор я создавал как действия Knowledgeware, так и действия VB. Открыт для любых предложений по этому поводу.

Спасибо.


person Mhan7    schedule 13.09.2017    source источник
comment
Добро пожаловать в SO - пожалуйста, предоставьте соответствующий код.   -  person bated    schedule 13.09.2017
comment
Я не могу предоставить соответствующий код. API для этой операции не предоставляется. Лучшее, что я могу дать, это приведенный выше алгоритм, и, надеюсь, кто-то знает, как этого добиться. Спасибо за прием.   -  person Mhan7    schedule 13.09.2017


Ответы (1)


Что касается того, что API для переворота ориентации объектов недоступен, я предлагаю вам основывать ориентацию эскиза на функции, которую можно легко перевернуть:

  • Создайте линию на основе двух точек «координат»
  • Используйте позиционированный эскиз и укажите опорную плоскость, исходную точку и ориентацию для направления V с помощью ранее созданной линии.
  • Теперь вы можете управлять координатами точек, чтобы изменить ориентацию линии, и эскиз будет следовать.

Код будет простым, а решение очень стабильным.

Предполагая, что опорная линия основана на двух точках {0,0,0} и {x,0,0}, код будет таким:

if TopOrientation
{
    GeoSet1\RefPoint\X=1mm
}
else
{
    GeoSet1\RefPoint\X=-1mm
}

Я надеюсь, что это поможет вам.

person P.Manthe    schedule 14.09.2017
comment
Это интересный подход. Я собираюсь попробовать это, но вместо того, чтобы использовать линию, я попытаюсь инвертировать нормаль плоскости. Доложит. Спасибо. - person Mhan7; 14.09.2017