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

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

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

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

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

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

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

Подключение библиотеки ActiveX к компасу версии 16 или 14

Автор Elisey Afanasjev, 28.03.19, 12:19:31

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

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

DesignЯR

ЦитироватьНичего там такого нового не было, чтобы таких трудностей добавить.
Перейти на С# - вовсе не трудность. Просто в Embarcadero  на 15 год была плохо реализован механизм написания приложений для Android - а тогда мне это было интересно. Интерес к микроконтроллерам заставлял изучать С++,а тут был очень похожий синтаксис. VisualStudio - бесплатная без всяких танцев с кряками. По моему мнению, написание кода более комфортно, чем в ERS 15 года.
Новым там был интерфейс.Уход от плавающей панели с произвольным набором команд - было серьёзным ударом , как я понимаю по многим. В справке SDK по сей день не могу найти описания как создать инструментальную панель и как использовать иконки из шрифта. Где описание структуры xml-файла для панелей?где названия стандартных панелей? Step2 из С# показывает  как это сделать, как там насчет Delphi  - не знаю? А вот назначение иконки из шрифта на значок кнопки в панели свойств -вообще только методом тыка получилось, да и то только на IPropertyControl1.
Вот перейти сейчас человеку на Delphi - тут придется повозится и с выбором среды программирования (платная ERS, сомнительный Lazarus или неизведанная VS Code+Delphi ExtentionPack), да и  описание ресурсов (меню,кнопки) - тоже отличается от С#овского, так что придется ломать в голове старые шаблоны и создавать новые.

Elisey Afanasjev

Цитата: Sabahs от 29.03.19, 03:30:40
Rtw - это переименованная Dll, смотрите в SDK, какие функции в ней обязательны, чтобы Компас-3D понял, что это его библиотека.Ничего там такого нового не было, чтобы таких трудностей добавить.

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

И ещё, если брать за основу step2, она разве сама по себе не Activex библиотека? (То бишь, права админа нужны и всё прочее)
:~

Дмитрий22

Читаю я все это и думаю про себя, блин, так это уж все я прошел методом проб и ошибок....
Библиотеку, написанную на С# нужно регистрировать через командную строку при помощи команды regasm.../codebase
https://forum.ascon.ru/index.php/topic,23942.msg202778.html#msg202778
После регистрации она должна появится на вкладке ActiveX. Но есть нюанс. Это справедливо для версий 12,13. В v15.0, 16.0 Аскон зачем-то потребовал запуска Компаса под администратором для отображения библиотеки на этой вкладке. После этого некоторые товарищи (включая меня) написали в техподдержку с просьбой вернуть возможность обычным пользователям регистрировать библиотеки. И, о чудо! Аскон вернул в v 15.2.14, 16.1 эту возможность, но, боюсь в новых версиях опять "забыл".
Для того, чтобы регистрировать библиотеку не вручную, я написал Регистратор и включил во все свои проекты (Авторедактор, Конструкторская библиотека 64, Подпись).
+ Благодарностей: 3

DesignЯR

В примерах по  С# только Active X библиотеки.
При создании rtw библиотек используются файлы из папки SDK\Include, которые предусмотрены только для Pascal и C++.
Я могу ошибаться, но не думаю что на C# есть возможность создания rtw библиотек.
+ Благодарностей: 1

Elisey Afanasjev

Цитата: DesignЯR от 29.03.19, 13:16:04
В примерах по  С# только Active X библиотеки.
При создании rtw библиотек используются файлы из папки SDK\Include, которые предусмотрены только для Pascal и C++.
Я могу ошибаться, но не думаю что на C# есть возможность создания rtw библиотек.

Помогите пожалуйста в таком случае разобраться с C++.
Я уже начал писать, но никак не могу понять, какие головные и ресурсные файлы нужно прикреплять к проекту
: (

DesignЯR

Вот очень старое руководство. Архив из 3 частей
В SDK примеры в решении  VisualCBuilder\ libs6.sln


DesignЯR

глупо сделано добавление файлов....то 30 сек не прошло, то один файл два раза во вложении
часть 3

Человек не под Builder просил, архив примеров от v18.1.
+ Благодарностей: 1

Denis78

Опыта использования компас-СДК нет совсем.

Я должен создать приложение (не dll!) на Visual C++ (не Builder!) которое бы открывало файл и "перебирало" все объекты в файле. Если использовать псевдокод, что-то вроде:
auto file = Kompas.OpenFile("C:\Users\User\Documents\qqq.m3d");
auto objects = file.GetObjects() ;
for (auto obj : objects)
{
    //что-то сделать, например, вывести в консоль
}

Посмотрел примеры. Вот одна строчка из примера Cube.cpp:
IApplicationPtr newKompasAPI;

То есть текст моего "недоприложения" таков

#include "ksAPI7.h"

int main()
{
    IApplicationPtr newKompasAPI;
}

Хорошо, IApplicationPtr объявлен в заголовочнике ksAPI7.h, подключил его. Вылетает ошибка
Цитата: undefinedThis file requires a newer version of the header UTILCLS.H" You need to apply an update/patch to your copy of C++Builder
Какой билдер? У меня требование под Visual C++ сделать.
В других заголовочниках IApplicationPtr не объявляется.

Как быть, подскажите, пожалуйста?

p3452

- Изучайте примеры не кусочно, а последовательно, с самых простых...
- В двух словах о вашей задаче: - распознать тип файла, получить интерфейс документа, получить коллекцию объектов документа, пройтись по ней итератором - всего то  :angel:

Denis78

Так почему ни один пример из папки под VS не компилируется?
Почему даже такая программка в одну строчку не компилируется и требует Builder?
Хотелось бы конкретный ответ, что я делаю не так и как это исправить.
Как скомпилять хотя бы один пример?

p3452

Умение излагать мысли ясно и четко, нынче, большая редкость...
- Вы обратили внимание на раздел форума в котором размещаете пост?
- Вы знаете какая сейчас актуальная версия Компас?
- Вы указали каким компилятором пользуетесь?
- Вы привели текст "самой простой" программки, которая не компилируется?
- Вы предоставили текст (лог) ошибок выдаваемых компилятором?

Denis78

20.12.21, 11:11:09 #33 Последнее редактирование: 20.12.21, 11:30:37 от Rosatom
ЦитироватьУмение излагать мысли ясно и четко, нынче, большая редкость...
И не говорите, а внимательно читать вообще не сыскать

Цитировать- Вы обратили внимание на раздел форума в котором размещаете пост?
Перенес в https://forum.ascon.ru/index.php?msg=292481
Ладно, тут косяк, признаю, но вот дальше...

ЦитироватьВы указали каким компилятором пользуетесь?
Да, указал Visual С++ (Visua Studio, то есть), если еще точнее, VS2017, 32 bit. Только эта инфа явно избыточная, так как ни в шестом, ни в 2010, ни в 2019-ой версии компилироваться не будет.

ЦитироватьВы привели текст "самой простой" программки, которая не компилируется?
Да, привел, продублирую
#include "ksAPI7.h"

int main()
{
    IApplicationPtr newKompasAPI;
}

ЦитироватьВы предоставили текст (лог) ошибок выдаваемых компилятором?
Там целая "простыня" этих ошибок, но возможно они все наведенные из-за вот этой ошибки:

This file requires a newer version of the header UTILCLS.H" You need to apply an update/patch to your copy of C++Builder

И да, я ее привел (см выше).

Semargl1990

Хотел добавить по поводу регистраций activex библиотеки: Проект желательно компилировать на AnyCPU, при регистраций на корпоративном компе надо запустить коммандную строку с правами админа, тут нужно обратиться службам предприятия и т.д., в зависимости от битности винды использовать regasm соответсвующей битности, например, regasm64.exe для 64 битной системы. Это все работает на компасе 17.1.