CAA vs Automation

Программирование для CATIA.

CAA vs Automation

Сообщение AnTe » 14 янв 2011 17:37

Здравствуйте. Стал насущным вопрос, возможно, возникающий у многих.

CAA и Automation - в чём принципиальная разница? Как её понять новичку, в программировании под Catia?

Пожалуй, лучший ответ, найден на форуме, в теме "Всё что Вы хотели узнать о CAA-RADE, но стеснялись спросить"
viewtopic.php?f=140&t=127

Основные отличия Automation от CAA:
+ Не требует установки CAA и специальной лицензии
+ Относительно прост в использовании и позволяет решать довольно большой круг задач
- Не представляет доступа ко некоторым функциональностям доступным в CAA (например: топологическое ядро, математика, прямой доступ к содержимому фичеров и.т.д)
- Automation API синхронизирован с въювером (создание массива из 10000 точек займет раз эдак в 100 раз больше времени, чем на CAA)
Позволяет работать с Knowledgeware, писать внутренние макросы и внешние расширения на любом COM или .NET - поддерживающем языке.
(правда, я не совсем понял, к чему это предложение относится, наверное, к CAA ?)

но он слишком краткий :(

Попробую сформулировать конкретные вопросы.

1. Насколько я понимаю, структура объектов, доступа к ним, в САА и Automation рознится принципиально? Так ли это?

2. Какие, хотя бы примерно, задачи невозможно выполнить в Automation?

Например, несколько лет назад сам брался за Automation, пытаясь решить одну насущную задачку, но не смог. Программа строила линию, и искала её пересечение, с деталью. Пересечение в интерактиве обозначалось точкой, но программно я эту точку найти так и не смог. В отладчике в структуре объектов её не было. Возможно, плохо искал? Не в том месте? Или всё же это и было ограничение Automation?

Проглядев документацию по САА и вспоминая опыт работы в Automation, мне показалось, что программирование в САА сложнее, в разы? На Automation тексты короче, и гораздо нагляднее, или это только первое впечатление?

3. С чего лучше начинать новичку?
Есть программист, которого решили озадачить программированием под Catia,небольших насущных задач. Опыта программирования в Catia у него нет, есть опыт небольшой работы в ней, и небольшие познания в языка, в частности, С++. С чего ему лучше начать? Сначала Automation, или сразу с САА?

Если подобные темы были, может я плохо искал, по форуму?
AnTe
Новичок
Новичок
 
Сообщения: 17
Зарегистрирован: 22 ноя 2007 08:00

Re: CAA vs Automation

Сообщение booSter » 14 янв 2011 18:35

  1. Объектная модель - одна, но уровень доступа - разный.
    Условно можно разделить на 3 группы (по убыванию "ширины" интерфейса и соответственно доступного функционала)

    • Внутренний CAA - API доступный подразделениям Dassault Syetemes, полный доступ к объектной модели
    • Публичный CAA - API доступный обладателям CAA+RADE, ограниченный доступ к объектной модели
    • Automation - доступен всем обладателям CATIA, ограниченный доступ предоставляется через "зауженный" COM интерфейс

    Касательно принципиальности различия доступа к объектной модели в CAA и Automation - да принципиально.

  2. Примеров много. На форуме то и дело всплывают новые.
    Основное отличие в том, что в Automation нет низкоуровневого доступа к данным. Т.е. те атрибуты, что вы видите в отладчике VB - это результат вызова функций обёрток, а не реальные атрибуты объектов. Второе - это тот факт, что в VB вам разрешено "видеть" лишь ограниченный набор объектов через COM обёртки.

    Язык VB используемый в Automation "локаничнее" С++, однако это не означает что он "круче". "Мантры" можно одинаково успешно писать на обоих :)
    С++/CAA сложнее хотя бы в силу того, что позволяет оперировать с гораздо большим числом сущностей как в объектной модели так и в окружении.

  3. Можно и одновременно
Сделаешь доброе дело за деньги - скажут спасибо,
Сделаешь бесплатно - сядут на шею...
©пёрто
Аватара пользователя
booSter
Moderator
 
Сообщения: 227
Images: 15
Зарегистрирован: 09 фев 2008 16:48
Откуда: Minsk

Re: CAA vs Automation

Сообщение bit » 14 янв 2011 18:55

AnTe писал(а):
2. Какие, хотя бы примерно, задачи невозможно выполнить в Automation?

Например эту

AnTe писал(а):3. С чего лучше начинать новичку?
Есть программист, которого решили озадачить программированием под Catia,небольших насущных задач. Опыта программирования в Catia у него нет, есть опыт небольшой работы в ней, и небольшие познания в языка, в частности, С++. С чего ему лучше начать? Сначала Automation, или сразу с САА?


Все зависит от задач, которые нужно решать.
Я бы рекомендовал начать с Automation, особенно если задачи действительно небольшие и познания в C++ тоже не велики.
IMHO CAA надо использовать, когда Automation по каким-либо причинам не подходит.
bit
Участник
Участник
 
Сообщения: 166
Images: 3
Зарегистрирован: 24 июл 2008 11:45
Откуда: Минск

Re: CAA vs Automation

Сообщение AnTe » 19 янв 2011 07:16

booSter писал(а):
  1. Объектная модель - одна, но уровень доступа - разный.
    Условно можно разделить на 3 группы (по убыванию "ширины" интерфейса и соответственно доступного функционала)
Спасибо. Но похоже мы говорим об одном и том же. Я бы сформулировал так, что "ядро" одно, а доступ к нему - через принципиально разно устроенные программные модели. В принципе, ничего удивительного, в акаде даже доступ с использованием двух разных языков организован, автолисп и объектная COM-модель.

Под одинаковой моделью, с разным уровнем доступа я понимаю, например, объект "Автомобиль" для рядового пользователя "поехать", "остановиться", а для не-рядового - дополнительно, "сменить колёса", но объектная модель одна, и класс называется "Автомобиль" :)

booSter писал(а):
  • Внутренний CAA - API доступный подразделениям Dassault Syetemes, полный доступ к объектной модели
  • Публичный CAA - API доступный обладателям CAA+RADE, ограниченный доступ к объектной модели
  • Предполагаю, что как раз вот тут две одинаковых модели, с разным уровнем доступа. Хотя хз, в чём они в дассо программируют....

    booSter писал(а):
  • Automation - доступен всем обладателям CATIA, ограниченный доступ предоставляется через "зауженный" COM интерфейс
  • Причём, иерархия объектов совершенно иная, или я ошибаюсь?

    Но это всё терминология, сути не меняет.

    Примеров много. На форуме то и дело всплывают новые.
    Спасибо, дополнительно задам вопросы:

    Основное отличие в том, что в Automation нет низкоуровневого доступа к данным. Т.е. те атрибуты, что вы видите в отладчике VB - это результат вызова функций обёрток, а не реальные атрибуты объектов.
    Для чего необходим низкоуровенвый доступ, если не принимать во внимание, что доступен не весь функционал? Скорость работы?

    Второе - это тот факт, что в VB вам разрешено "видеть" лишь ограниченный набор объектов через COM обёртки.
    Насколько я понимаю, то, в чём "ограниченность", нигде коротко не описано, и пользователь сам, случайно, натыкается, то на одни, то на другие "грабли", не находя той или иной функции в модели Automation?

    Язык VB используемый в Automation "локаничнее" С++, однако это не означает что он "круче". "Мантры" можно одинаково успешно писать на обоих :)
    Ну, речь не про крутость, а про читабельность. Мантры, конечно же, умудриться можно написать хоть на чём, однако, глядя на текст примера на VB, смысл всех действий понятен даже без обращения к документации. Когда смотрю тексты примеров, на С++, такого не происходит. Практически любой текст - мантра какая-то :) Или это привыкнуть надо? :)
    AnTe
    Новичок
    Новичок
     
    Сообщения: 17
    Зарегистрирован: 22 ноя 2007 08:00

    Re: CAA vs Automation

    Сообщение AnTe » 19 янв 2011 07:26

    bit писал(а):Все зависит от задач, которые нужно решать.
    Я бы рекомендовал начать с Automation, особенно если задачи действительно небольшие и познания в C++ тоже не велики.
    IMHO CAA надо использовать, когда Automation по каким-либо причинам не подходит.
    Вот я и поднял как раз тему для того, чтобы выяснить "общие намётки", когда Automation не подходит. Если они существуют, конечно....

    Как понимаю, в общем смысле разницу между CAA и Automation сформулировать практически невозможно, и единственный путь - начинать программировать?

    Сейчас план действий имеется только такой. Определить, насколько критична задача, ко времени выполнения (90% задач не критичны), и начинать её реализовывать в Automation. Если, после массы бесплодных попыток и прочтения документации, каких-то нужных полей не найдено, какие-то возможности не реализуются, - "забивать" на Automation, и начинат (практичеки с нуля! :(), в САА.

    По мне - выход не самый наилучший, т.к. к моменту, как напороться на очередные грабли в Automation, работы в нём уже может быть выполнено прилично, однако, другого способа определить, подходит ли Automation, я не вижу. :(
    AnTe
    Новичок
    Новичок
     
    Сообщения: 17
    Зарегистрирован: 22 ноя 2007 08:00

    Re: CAA vs Automation

    Сообщение Wireless_Fidelity » 19 янв 2011 10:01

    AnTe, здравствуйте.

    Хотя хз, в чём они в дассо программируют....


    По всему выходит, что на CAA и именно в том ключе, который описал booster

    Для чего необходим низкоуровенвый доступ, если не принимать во внимание, что доступен не весь функционал? Скорость работы?

    Скорость работы, возможность низкоуровневой отладки, написания альтернатив имеющимся "высокоуровневым" методам. Не стоит забывать, что "доступен не весь функционал" стоит понимать не только как скудный набор функций/методов/свойств у классов Automation, но и как принципиальное отсутствие в нём таких областей как работа с пользовательским интерфейсом (создание кнопок, панелей, модулей, диалоговых окон), работа с ENOVIA.

    Насколько я понимаю, то, в чём "ограниченность", нигде коротко не описано, и пользователь сам, случайно, натыкается, то на одни, то на другие "грабли", не находя той или иной функции в модели Automation?

    Есть чёткий список того, что Automation умеет. Называется CAA V5 Visual Basic help и хранится он в файле V5Automation.chm в папке CATIA. Рассуждая логически, то, чего в этом файле нет, Automation сделать не может :) Самый простой и часто встречающийся пример "ограниченности": Automation не умеет работать со сгенерированными элементами чертёжного документа. Создали чертёж на основе детали - будьте любезны обрабатывать его вручную, поскольку ни один геометрический элемент из этого чертежа (в CATIA они имеют тип GeneratedItem и GeneratedShape) не будет доступен в Automation ни в каком виде.


    Возможности CAA по определению превосходят Automation, потому как API второго создан с использованием первого. В этом свете и при условии, что у Вас есть время и возможность, я бы рекомендовал изучить CAA, поскольку перейти с него на Automation несравненно проще, чем наоборот. Опять же, на CAA можно писать собственное Automation API.
    Кстати говоря, не стоит опускать вопрос о лицензировании, потому как у CAA требования к наличию лицензий значительно более жёсткие, чем у Automation.
    Аватара пользователя
    Wireless_Fidelity
    Активный участник
    Активный участник
     
    Сообщения: 394
    Зарегистрирован: 10 апр 2010 00:11

    Re: CAA vs Automation

    Сообщение bit » 19 янв 2011 12:38

    Wireless_Fidelity писал(а):
    AnTe писал(а):Хотя хз, в чём они в дассо программируют....

    По всему выходит, что на CAA и именно в том ключе, который описал booster


    Ну если быть совсем точным то Дассо сначала пишет сам CAA а потом пишет CATIA на CAA.
    Какого-то другого более низкоуровнего API нет.

    AnTe писал(а):т.к. к моменту, как напороться на очередные грабли в Automation, работы в нём уже может быть выполнено прилично

    Не обязательно. Можно поиграться неделю-две, потом переходить к CAA. Даже имея конкретную задачу в новой области, работа начинается с обучения (самообучения :-) ). Многие интерфейсы в Automation это просто "обертки" над аналогичными в CAA, и как ими пользоваться намного проще понять в Automation.

    Самое простое для начала - это записать макрос и посмотреть что происходит. Даже если сразу начинать с CAA, макросы все равно бывают полезны.
    bit
    Участник
    Участник
     
    Сообщения: 166
    Images: 3
    Зарегистрирован: 24 июл 2008 11:45
    Откуда: Минск

    Re: CAA vs Automation

    Сообщение booSter » 19 янв 2011 13:06

    AnTe писал(а):... Если, после массы бесплодных попыток и прочтения документации, каких-то нужных полей не найдено, какие-то возможности не реализуются, - "забивать" на Automation ...

    Вот это как раз таки не обязательно.
    Если у вас есть кусок рабочего кода на Automation (VB, C#, Delphi) и вам не хватает буквально несколько методов, чтобы всё стало "волшебно" - нет необходимости всё переписывать с нуля на C++/CAA. Вы можете недостающий (либо критичный ко времени) функционал реализовать на C++/CAA и сделать его доступным в Automation. CAA позволяет это делать, равно как и вызывать функционал из Automation. Мало того, есть несколько случаев (немного, но как ни странно есть), когда через C++/CAA нет возможности что-то сделать, а через Automation есть (только не спрашивайте почему :) - не знаю...)

    Лично у меня был опыт подобных "гибридных" проектов - подход имеет право на жизнь.
    Сделаешь доброе дело за деньги - скажут спасибо,
    Сделаешь бесплатно - сядут на шею...
    ©пёрто
    Аватара пользователя
    booSter
    Moderator
     
    Сообщения: 227
    Images: 15
    Зарегистрирован: 09 фев 2008 16:48
    Откуда: Minsk

    Re: CAA vs Automation

    Сообщение Artem » 20 янв 2011 09:51

    ...
    ну а вот ваше мнение, намного облегчается/ускоряется работа используя RADE по сравнению с CAA Automation?
    ...
    Там есть пара/тройка бонусов - возможность сделать свое меню при активации элемента, навесить свои действия на кнопку обновления, отследить твои действия над элементом(ну например пресловутая однобокая стрелка в сварочном обозначении - можно интерактивно отслеживать изменение положения текста и двигать стрелку вслед за ней).По поводу облегчения / ускорения ты про что? Про разработку? Время на нее увеличится в разы......Если про работу/результат, то надо смотреть конкретные задачи - где то проще за 15 минут макрос написать, чем недели три возиться на рейде. Хотя функционал беспорно шире, смотрится красиво и звучит гордо))))) ...


    Бывали ситуации, когда надо срочно сделать чтото именно на рейде - а по этому направлению только разбираться дня четыре, хотя на том же коме уже знаешь, как делать и за день будет все готово. Юзал я тогда CATIA_ интерфейсы - те же самые функции как минимум + еще немного дополнительных.С их же помощью можно быстро перевести проект с VB на рейд. Еще, наверное я кошек готовить не умею-но работа с timer (или другим подобным компонентом) на коме мне больше понравилась чем создание нитей на рейде...
    animae scrinium servitus
    Аватара пользователя
    Artem
    Активный участник
    Активный участник
     
    Сообщения: 387
    Зарегистрирован: 14 сен 2007 07:14


    Вернуться в CAA-RADE

    Кто сейчас на конференции

    Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    cron