API КОМПАС 3D

Автор Lemieux, 04.12.23, 10:53:46

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

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

Lemieux

Всех приветствую.
Я устроился в фирму, где рабочий процесс будет стоится вокруг экосистемы КОМПАС. Так как раньше я занимался разработкой под ПО Autodesk у меня возникло несколько вопросов.

1. Как я понимаю слой абстракций API у ПО АСКОН кардинально отличается ПО Autodesk? У того же КОМПАС всё взаимодействие происходит через прослойку COM, какое я приложение не писал бы, rtw или dll (ActiveX)?

2. Я правильно понимаю, что примеры в папке SKD идут с 2005 года и не обновлялись?

3. Только у меня возникли небольшие трудности при запуске примеров на C# и большие трудности при компиляции C++ примеров? Почему при открывании C++ примеров запрашивает build tools v143, хотя Wizard для 2019 студии.

4. Почему в документации нет описания работы с инструментальными панелями? А в примере (Step2New) дана неправильная иерархия файлов (все файлы должны быть в одной папке).

5. Я правильно понимаю, чтобы запускать примеры на C++ должен быть установлен MFC?

6. Как человек, который только начал изучать хелп по API может попасть вот сюда https://help.ascon.ru/KOMPAS_SDK/22/ru-RU/index.html без гугления?

7. Я правильно понимаю, что хелп написан так, что подразумевает знания у специалиста по конфигурированию проекта С++ именно для КОМПАС? Но тогда зачем сделали Wizard проектов? (Который тоже не заводится).

8. Как вы проводите отладку своих приложений в C#? HotReload работает? Какими версиями API пользуетесь? - Лично у меня на версии 5 (KompasObject) VS вообще не читает объекты при отладке, а только показывает "com_Object", версия 7 (IApplication) уже сносно показывает состояния объектов.

9. АСКОН/Дочерние компании предоставляют курсы по программированию на С++ и C#?
+ Благодарностей: 1

MrBarry

#1
Добрый день
Сам несколько месяцев писал под API Компас под С++, сейчас пишу на С#. Постараюсь ответить на что смогу
1) Да, всё API написано под COM
2) Не скажу с какого года, но обновляются они действительно почти никогда. С другой стороны, API кардинально тоже не менялся (лишь расширялся), функции помечаются как устаревшие, но не удаляются, так что примеры до сих пор рабочие
3) Абсолютно также. Более того, у меня с запуском приложения на С# проблем не возникло вовсе (не считая опечаток), несмотря на то, что я не был знаком с этим языком до этого. Первое приложение на С++ я запустил через почти две недели бесконечных настроек, установок, перекомпиляций библиотек и прочих ведьминских заклятий ухищрений. Более того, некоторые примеры под С++ не компилируются без предварительной модификации, когда ровно те же на Delphi или C# запускаются сразу и без жалоб
4) Не знаю
5) Я устанавливал. Не уверен, нужен ли, но после тех двух недель запустившийся проект походил на башню в Дженге после затянувшейся игры - я боялся смотреть в сторону настроек, чтоб не сломать и не обеспечить себе проблем ещё на день-два
6) Если при установке Компаса поставить галочку "Компас-Макро", то в папке SDK будет файл SDK.chm, в котором лежит эта же справка (но ею пользоваться удобнее, чем онлайн справкой)
7) Да, если не хочется повторять мой путь, нужен опыт по конфигурированию проектов (я до этого писал относительно простые приложения и в настройках не копался)
8) Я отлаживал в основном на С++, там ситуация аналогичная, объекты не показывают состояния, я видел только pid, который был невнятным значением int и делу не помогал
9) Нет, не предоставляют. Всё, что есть, это уже известная Вам справка. Информацию нужно искать только у сторонних источников. Например, на Хабре есть курс по программированию на С++ под Компас API от Норсеева. Всё описывается понятно, но не слишком подробно и затрагивается очень мало тем. Подойдёт только для самого начала. Ещё от того же человека есть целая книга о Компас API, но уже под Delphi. Вот там информации много, хоть язык и другой, но методы и суть почерпнуть можно. Насчёт С# - есть серия видео на Ютубе, если написать в поиск "C# Компас API", можно посмотреть и выбрать нужный

В целом не рекомендую писать на С++, я потратил пару месяцев впустую, пытаясь написать хоть что-то внятное на нём. С# куда более щадящий. Если знаете Delphi, то для него и книга есть, и много хороших программистов тут, на этом форуме, пишут на нём. Выбирайте из них двух.
+ Благодарностей: 3

MrBarry

Забыл написать про Wizard в 7 вопросе. Полагаю, корень проблемы тут тот же, как и с примерами - справка не обновляется, она только добавляется. Скорее всего, эти Wizard написаны давно, под старые версии, и не проверялись на работоспособность, потому информации мало и то не работает.

Вират Лакх

6. Браузерный SDK появился совсем недавно, буквально "вчера". До него пользовались SDK.chm
8. "Какими версиями API пользуетесь?" - Приходится пользоваться обеими версиями, т.к. в первой есть то, чего нет во второй, и наоборот. Можно конвертировать интерфейсы из одной версии в другую. Проще писать на 7, но когда вы столкнетесь с косяками 7, то придётся переделывать на 5.
--
Сдались Вам эти C-образные языки с этими всеми примерами, билдами, визардами и курсами по программированию? Может проще Python?
+ Благодарностей: 1

MrBarry

Цитата: Вират Лакх от 04.12.23, 11:40:36Приходится пользоваться обеими версиями, т.к. в первой есть то, чего нет во второй, и наоборот.
Забыл про это написать, спасибо за дополнение.
Цитата: Вират Лакх от 04.12.23, 11:40:36Сдались Вам эти C-образные языки с этими всеми примерами, билдами, визардами и курсами по программированию? Может проще Python?
C# концептуально далёк от C и C++, он в целом очень близок к Java. На нём писать удобно, проблем языков С почти не возникает. Питон, конечно, ещё удобнее, но я по нему инфы вообще мало видел, потому рекомендовать не мог. Если знаете полезную информацию по нему (руководства, гайды), поделитесь, вдруг автору темы (и ещё кому-либо) полезно будет. Конечно, не по самому Питону, а по Питону под наш API.
+ Благодарностей: 1

Nipal

#5
Цитата: Lemieux от 04.12.23, 10:53:46Какими версиями API пользуетесь?
API5, API7 и API экспортных функций.
Цитата: Lemieux от 04.12.23, 10:53:46Как вы проводите отладку своих приложений в C#?
Правда не С#.
+ Благодарностей: 1

Lemieux

Цитата: Nipal от 04.12.23, 11:49:428. API5, API7 и API экспортных функций.

Я этот вопрос задал в свете того, что когда изучал отладку в VS приложения в виде AddIn (Если я правильно понял термины в хелпе) (Реализация интерфейса IKompasLibrary и получение KompasObject), я заметил, что VS не может прочитать COM объекты. Но когда увидел пример внешнего приложения, где получают IApplication и вообще работают с другими интерфейсами, как я понял из API 7, то попробовал повторить его. И что странно, VS уже читало объекты.

Цитата: Nipal от 04.12.23, 11:49:42API экспортных функций.
Это что за функции? По описанию из хелпа похожи на глобальные функции.

Цитата: Вират Лакх от 04.12.23, 11:40:36Сдались Вам эти C-образные языки с этими всеми примерами, билдами, визардами и курсами по программированию? Может проще Python?
Так у меня большой опыт в C#. C++ ради спортивного интереса пробовал.

Nipal

Цитата: Lemieux от 04.12.23, 12:11:17Это что за функции? По описанию из хелпа похожи на глобальные функции.
Это функции находящиеся в kAPI2D5.dll, т.е. с Компас работаете на прямую.

MrBarry

Nipal, поправьте меня если ошибаюсь, но вроде экспортные функции используются для библиотек, а функции COM для отдельных приложений

Nipal

Цитата: MrBarry от 04.12.23, 13:03:11Nipal, поправьте меня если ошибаюсь, но вроде экспортные функции используются для библиотек, а функции COM для отдельных приложений
Недавно показывал в одной из тем.
Первый код exe, второй и третий Rtw(Dll).
Третий API экспортных функций, но и его можно в exe использовать, единственное приложение должно лежать в папке Bin Компас-3D, т.к. kAPI2D5.dll потянет остальные dll Компас.

p3452

Прежде всего, не питайте иллюзий - нет "экосистемы КОМПАС", можно, с большой натяжкой, говорит об экосистеме АСКОН.
Теперь по пунктам.
1. "слой абстракций API" зависит от того на каком языке Вы собираетесь писать.
2. - посмотрите даты изменения файлов.
3. С С++ у подавляющего большинства возникают трудности. Трудностей с C# нет совсем (если не считать нескольких ошибок в примерах).
4. После долгих дебатов на форуме, по " инструментальными панелями", "инструкция" была собрана "по крупицам" (пользуйтесь Поиском на форуме) - появление "Step2New" результат этого обсуждения. 
5. - Не в курсе.
6. Справка - хорошо, но важнее освоить примеры - открывайте папку \SDK\Samples, выбираете язык и...
7. - Неправильно. Можно, вообще, не знать о существовании C++ и спокойно писать под API.
8. - Раскрою БОЛЬШУЮ "тайну" - для осваивающего API лучше просто писать "независимые" программки (exe- файлы), из которых и брать управление Компасом (режим контролера) - как ЭТО делать - см. пример ksContr.
9. Курсы есть, но вначале рекомендую ознакомится с программой курсов, что бы не потратить деньги впустую.

Какой язык выбрать:
- самый родной для Компас (как утверждает АСКОН) - С++(С) - какая это "прелесть" Вы уже поняли;
- самый простой - Python - но тогда без претензий на серьезные программы;
- самый универсальный Delphi(Pascal) - но перспектива отсутствует;
- самый подходящий - C# !
+ Благодарностей: 2

Lemieux

Цитата: p3452 от 04.12.23, 14:05:45Прежде всего, не питайте иллюзий - нет "экосистемы КОМПАС", можно, с большой натяжкой, говорит об экосистеме АСКОН.
Я неверно выразился. Просто на производстве намечается вот такая связка КОМПАС-3D - КОМПАС-Электрик - Оборудование: Жгуты и кабели - Лоцман:КБ(PLM).

Цитата: p3452 от 04.12.23, 14:05:45Неправильно. Можно, вообще, не знать о существовании C++ и спокойно писать под API.
Тут я непонятно выразился. Имелся ввиду контекст написания плагинов на С++.

Цитата: p3452 от 04.12.23, 14:05:45Раскрою БОЛЬШУЮ "тайну" - для осваивающего API лучше просто писать "независимые" программки (exe- файлы), из которых и брать управление Компасом (режим контролера) - как ЭТО делать - см. пример ksContr.
Когда писал под AutoCAD, то я привык писать в виде плагина и использовать ленту. Чтобы пользователь не переключался из одной программы в другой, а работал в одном контексте приложения. Как по мне, это было очень удобно. Поэтому, когда узнал про КОМПАС, то сразу же стал искать такие же возможности.

Всем спасибо за ответы. Примерный вектор развития понятен.
+ Благодарностей: 1

Михаил88

https://forum.ascon.ru/index.php?topic=31309.0

Можете еще установить PyKompasMacro. Записывает макросы на языке python. Можно использовать для изучения API.
+ Благодарностей: 1

p3452

Цитата: Lemieux от 04.12.23, 14:33:41Когда писал под AutoCAD, то я привык писать в виде плагина и использовать ленту. Чтобы пользователь не переключался из одной программы в другой, а работал в одном контексте приложения. Как по мне, это было очень удобно. Поэтому, когда узнал про КОМПАС, то сразу же стал искать такие же возможности.
В Компасе плагины (AddIn приложения) тоже есть - большинство примеров (Step-ов) демонстрируют создание, именно, плагинов, но подключаются они более сложным образом чем в AutoCAD...
+ Благодарностей: 1

Nipal

Цитата: p3452 от 04.12.23, 15:09:33В Компасе плагины (AddIn приложения) тоже есть - большинство примеров (Step-ов) демонстрируют создание, именно, плагинов, но подключаются они более сложным образом чем в AutoCAD...
Абсолютно ничего сложного в их подключении нет.
+ Благодарностей: 1

Lemieux

Цитата: Nipal от 04.12.23, 16:08:33Абсолютно ничего сложного в их подключении нет.
В КОМПАС возможно одной командой подключить dll, или написать код определённым образом, разместить dll в нужной папке и всё будет подхватываться автоматически?
Просто, пока что, для меня подключение библиотеки это танцы с бубном.
 1. Нужно реализовать интерфейс, написать методы регистрации класса в реестре и удаления из реестра.
 2. Написать методы регистрации класса в реестре и удаления из реестра.
 3. Запускать КОМПАС от администратора, чтобы можно было добавить dll в закладке ActiveX

Но если всё это уметь, то на другой машине может плагин не завестись

Nipal

AddIn, не обязательно ActiveX, можно писать Rtw.
При добавлении библиотек не зря две вкладки, да AddIn нужно в реестре прописать, но сложности в этом нет.

Lemieux

Цитата: Nipal от 04.12.23, 16:36:46AddIn, не обязательно ActiveX, можно писать Rtw.
Если я правильно понял, то rtw пишется на С++ и Delphi(Хотя на закладке RTW можно выбирать и dll файлы). dll(ActiveX) пишется на C#.

Nipal

Цитата: Lemieux от 04.12.23, 16:42:57Если я правильно понял, то rtw пишется на С++ и Delphi(Хотя на закладке RTW можно выбирать и dll файлы). dll(ActiveX) пишется на C#.
Конечно можно, т.к. Rtw - это обычная Dll с изменённым расширением, просто в ней должны быть реализованы экспортные функции, чтобы Компас считал данную Dll своим расширением.
+ Благодарностей: 1

p3452

Судя по тому, что Вы пишите:
Цитата: Lemieux от 04.12.23, 16:29:34Просто, пока что, для меня подключение библиотеки это танцы с бубном.
 1. Нужно реализовать интерфейс, написать методы регистрации класса в реестре и удаления из реестра.
 2. Написать методы регистрации класса в реестре и удаления из реестра.
 3. Запускать КОМПАС от администратора, чтобы можно было добавить dll в закладке ActiveX
- Вы не видели ни одного примера и представляете из себя "удобного" для "вешания лапши"!
- Меньше разговоров больше "экспериментов" с кодом...