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

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

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

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

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

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

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

При получении АПИ7 interface not supported

Автор graphdark, 22.07.22, 13:47:22

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

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

graphdark

function API7(DWGPath: string): boolean;
begin
  Kompas := KompasObject(GetActiveOleObject('Kompas.Application.5'));
  if kompas = nil then ShowMessage('kompas nil');

  iKompas := GetActiveOleObject('Kompas.Application.7') as iApplication;
  if iKompas = nil then ShowMessage('ikompas nil');
  iDoc := iKompas.Documents;
  if iDoc = nil then ShowMessage('idoc nil');

  Ikom2D := iDoc.Open(DWGPath, true, false);
  iDoc2D := Ikom2D as IKompasDocument2D;
end;

Раньше функция в 17ом работала, в 19ом ошибка. Приложение exe.

Slaviation

Добрый день.
Попробуйте перерегистрировать КОМПАС-3D.
Для этого в каталоге BIN КОМПАС-3D от имени администратора выполните команду
regsvr32 <ваш полный путь до komoas.exe>
+ Благодарностей: 1

Vi2

Цитата: graphdark от 22.07.22, 13:47:22Раньше функция в 17ом работала, в 19ом ошибка. Приложение exe.
А может лучше использовать
 iKompas := kompas.ksGetApplication7() as iApplication;
вместо
 iKompas := GetActiveOleObject('Kompas.Application.7') as iApplication;
+ Благодарностей: 1

graphdark

Спасибо за советы. Завтра попробую.и насчёт регистрации годный совет, сам не догадался, насчёт другой команды тоже стоит попробовать.

Vi2

Регистрация, если Компас инсталлируется, вряд ли слетает. Но кто ж знает...

Я вот посмотрел: очень много изменений в v19 по сравнению с v17 в самой tlb. Может, стоит в самих Дельфях посмотреть, почему ему не нравится интерфейс IApplication. Есть смысл попробовать просто получить этот указатель в Object, Variant или как там в Дельфях представляется интерфейс IDispatch. Если IDispatch будет не нулевой, то ошибка в преобразовании его в IApplication. Но если и IDispatch будет нулевой, то проблема в самом получении этого объекта.

Причём в АПИ5 сплошные IDispatch или dispinterface, и вроде указатель принимается, а вот в АПИ7 дуальные интерфейсы, может, Дельфи как-то более строго к ним относится.

graphdark

Притом приложение 3х уровневое. Клиент, сервер, длл. Проблема возникла при переходе на 19 версию и одновременно я сервак с питоно фласка нас рест Делфи переписал. После пытался на 17откатиться, не помогло. Тогда я в длл больше модели строил и забил все на 5 апи. Он в аналогичной функции нормально работал. А счас чертежи надо рисовать без 7 уже никак не могу придумать. Но завтра действительно через idispatch попробую, должно получиться.