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

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

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

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

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

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

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

Проблема с получением указателя на KompasObject из САПР ТП Вертикаль

Автор oit, 22.08.08, 11:38:06

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

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

oit

Здравствуйте,

возникла следующая проблема:

при создание эскиза из САПР ТП Вертикаль v2 SP3 запускаю свою библиотеку rtw, после чего вываливается компас,
в тоже время если поднять библиотеку без Вертикали, из Компаса, работает библиотека на ура

//--------------- точка входа в библиотеку --------------------------
procedure LIBRARYENTRY(command: WORD); Pascal;
begin
  Kompas := KompasObject(CreateKompasObject);
  IF Kompas = nil then
  begin
    ShowMessage('Не удалось получить указатель на KompasObject');
    exit;
  end;
  iDocument2D := ksDocument2D(Kompas.ActiveDocument2D);
  IF iDocument2D = nil then
  begin
    Kompas.ksMessage('Документ не является фрагментом ил чертежом');
    exit;
  end;
  case command of
  1:Run(1);
  2:Run(2);
  4:Run(4);
  7:Run(7);
  10:Run(10);
  13:Run(13);
  16:Run(16);
  19:Run(19);
  end;
  iDocument2D:=nil;
  Kompas :=nil;
end;

//-------------------------------------
Получается что при запуска компаса из вертикали - Kompas - nil, не возращается указатель на KompasObject

подскажите как обойти эту проблему



oit

нашлось вот такое решение

вместо Kompas := KompasObject(CreateKompasObject);
используем классику
  try
    Kompas := GetActiveOleObject('KOMPAS.Application.5') as KompasObject;
  except
    Kompas := CreateOleObject('KOMPAS.Application.5')as KompasObject;
  end;
.....
причем работает если Kompas не отправлять в nil после того как отработал объект//Kompas :=nil