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

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

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

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

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

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

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

Выгрузка размеров из чертежа

Автор Meldok, 22.03.17, 11:19:19

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

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

Meldok

Добрый день!
Пока только начинаем разбираться с API Компаса и пока не все понятно.
Для выполнения дальнейших расчетов нам необходимо выгрузить информацию о всех размерах во внешний файл и потом, переделав ее в нужный формат передать в отдельный расчетный модуль.

Пробовали сделать это через 5 версию API , получили список линейный размеров в делфи
col:=ksEntityCollection(Part.EntityCollection(81));
но как мы поняли из справки
o3d_lineDimension3D  81  Линейный размер 3D (на плоско­сти)  ILineDimension3D
класс ILineDimension3D определен только для API 7.

С седьмой версией не совсем понятно как к ней подключаться. Если в пятой версии просто пишем Set kompas = GetObject(, "Kompas.Application.5"), то для седьмой версии мы попробовали сделать как в примерах
disp := IDispatch(CreateKompasApplication);
KAPI := disp As IApplication;
Но у нас в итоге всегда почему то KAPI = nil.




Насколько я понимаю, Вы exe-ник пишите?Один из вариантов.
http://forum.ascon.ru/index.php/topic,27429.msg204826.html#msg204826
Можно так - KompasApi7:=KompasApi5.ksGetApplication7 as IApplication;

+ Благодарностей: 1

Meldok

Большое спасибо за помощь, все заработало.

Meldok

Может еще подскажете, пытаюсь получить плоскость, в которой построен размер.
Получаю линейный размер.
ld:= sc.LineDimensions3D.LineDimension3D as ILineDimension3D;
смотрю тип плоскости
ld.plane.Type_ пишет 6, то есть ksSurface
пробую получить плоскость и габариты
fd:=ksFaceDefinition(ld.Plane);
sf:=ksSurface(fd.GetSurface);
res:=sf.GetGabarit(x1,y1,z1,x2,y2,z2);
при компиляции ошибок не выдает, но при выполнении программы возникает ошибка "Член группы не найден". Пробовал через iFaceDefinition iSurface, но тоже ни к чему хорошему это не привело.

ld.plane.Type_  - IModelObject, то есть IFaceDefinition.
fd=IUnknown(ksTransferInterface(LtDefine.PIUnknown(ld.Plane),ksAPI3DCom,o3d_face)) as
IFaceDefinition;
PS. Вы в SDK на типы смотрите, что возвращается.
+ Благодарностей: 1

Meldok

Спасибо за ответ, но у нас видимо какие то проблемы с самим проектом.