1. Как а CAA выбрать линию на чертеже? Какой интерфейс или edu посмотреть? Выбор (selection) на CAA без окна может быть реализован?
Интерактивный выбор осуществляется с помощью
AquisitionAgent.
2. Можно ли как-то сделать интегрированное решение:
часть на Automation и из Automation вызвать функцию dll или нечто подобное? Только не exe, долго работает. Т.е. выполняется часть на Automation, затем передача управления модулю на САА (выбор линии на чертеже), который возвращает PartNumber выбранной сборки. Далее продолжает работать Automation (выбор точек, через них стрелка с полочкой для нанесения позиции.
Или наоборот из dll'ки САА вызвать Automation, чтобы попроще писать.
Такой подход представляется мне наиболее перспективным, особенно для решений, не связанных с интенсивным использованием API низкого уровня (например, топологического). Для расширения возможностей Automation следует разработать собственные компоненты, как указано в статье
Creating Interfaces for Automation в энциклопедии.
Но на Automation нельзя по линии на чертеже определить деталь...
Не просто нельзя определить деталь, но и вообще получить доступ к сгенерированной геометрии, т.к. классов в Automation для неё нет. Если выбрать на чертеже сгенерированную линию и запустить код:
- Код: Выделить всё
MsgBox TypeName(CATIA.ActiveDocument.Selection.Item(1).Value)
то будет выведено
DrawingView, а не какой-нибудь
Line2D. Поэтому, как мне видится, придётся решить несколько задач:
- получение выделенного объекта геометрии в виде AnyObject (CAA)
- получение у геометрии 3D-объекта (тела), из которого она была получена (CAA)
- анализ тела, рисование выноски на чертеже (Automation)
Компонент CAA можно для простоты сделать один, назвав его, например,
GenDraftingServices и реализовав соответствующие методы.