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

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

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

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

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

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

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

Сохранение деталей

Автор Lemieux, 17.05.24, 16:24:36

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

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

Lemieux

Почему не работает метод SaveAs у интерфейса IPart7?
Пробовал вот так сохранять
IApplication application = Marshal.GetActiveObject("KOMPAS.Application.7") as IApplication;
IKompasDocument document = application.ActiveDocument;
IPartDocument partDocument = document as IPartDocument;
IPart7 topPart = partDocument.TopPart;
topPart.SaveAs(@"C:\Users\Lemieux\Documents\Деталь2.m3d");
Никакой реакции, только возвращает false

lavgirb

Цитата: Lemieux от 17.05.24, 16:24:36Почему не работает метод SaveAs у интерфейса IPart7?
Пробовал вот так сохранять
IApplication application = Marshal.GetActiveObject("KOMPAS.Application.7") as IApplication;
IKompasDocument document = application.ActiveDocument;
IPartDocument partDocument = document as IPartDocument;
IPart7 topPart = partDocument.TopPart;
topPart.SaveAs(@"C:\Users\Lemieux\Documents\Деталь2.m3d");
Никакой реакции, только возвращает false
Не потому ли, что TopPart и не документ и не компонент сборки?

Lemieux

Цитата: lavgirb от 17.05.24, 17:03:13Не потому ли, что TopPart и не документ и не компонент сборки?
Тогда возникают вопросы реализации и механики использования. Зачем мне у компонента сборки вызывать метод SaveAs? Как сохранять исполнение детали? Почему вообще доступен данный метод в данном контексте?
Опять, в описании ничего не сказано о контексте https://help.ascon.ru/KOMPAS_SDK/22/ru-RU/ipart7_saveas.html

UU

Цитата: Lemieux от 17.05.24, 18:06:17Как сохранять исполнение детали?
Так как и ручками, сборка сохраняется в текущем исполнении.

lavgirb

Цитата: Lemieux от 17.05.24, 18:06:17Зачем мне у компонента сборки вызывать метод SaveAs?
Так никто не заставляет.
Кому надо сохранить компонент под другим именем, сохраняет.
Это, кстати, штатная команда для пользователей КОМПАС-3D.

Цитата: Lemieux от 17.05.24, 18:06:17Как сохранять исполнение детали?
Наверное, надо сделать исполнение активным, а потом сохранить. Но я не пробовал еще.

Цитата: Lemieux от 17.05.24, 18:06:17Опять, в описании ничего не сказано о контексте https://help.ascon.ru/KOMPAS_SDK/22/ru-RU/ipart7_saveas.html
Ну не знаю. Лично у меня к этой ссылке вопросов нет. Все ясно.





Lemieux

Цитата: lavgirb от 17.05.24, 18:39:20Наверное, надо сделать исполнение активным, а потом сохранить. Но я не пробовал еще.
Зато я попробовал.

Цитата: lavgirb от 17.05.24, 18:39:20Ну не знаю. Лично у меня к этой ссылке вопросов нет. Все ясно.
И что там ясно?

Lemieux

Цитата: UU от 17.05.24, 18:35:40Так как и ручками, сборка сохраняется в текущем исполнении.
А при чём тут сборка?

lavgirb


Lemieux

Цитата: lavgirb от 17.05.24, 19:15:32Получилось?
В том то и дело, что нет.
Я же в тестах сразу брал свойство CurrentEmbodiment.
А у интерфейса IEmbodiment есть свойство Part, через него и пытался сохранить.

Сейчас освобожусь, проведу тест со сборкой.

Кстати, КОМПАС-Макро не все действия записывает.

lavgirb


Lemieux

Цитата: lavgirb от 17.05.24, 19:24:55Получится.
:laugh:
Пока только получилось сохранить из сборки деталь. Надо же так коряво реализовать API.

Lemieux

Я бы хотел пообщаться с человеком кто придумал архитектуру КОМПАС и API.

IApplication application = Marshal.GetActiveObject("KOMPAS.Application.7") as IApplication;
IKompasDocument document = application.ActiveDocument;
IKompasDocument1 kompasDocument1 = document as IKompasDocument1;
SaveAsDetailParam saveAsDetailParam = kompasDocument1.GetInterface(KompasAPIObjectTypeEnum.ksObjectSaveAsDetailParam) as SaveAsDetailParam;
saveAsDetailParam.FileName = @"C:\Users\Lemieux\Documents\PART3.m3d";
IKompasDocument3D document3d = document as IKompasDocument3D;
IEmbodimentsManager embodimentsManager = document3d as IEmbodimentsManager;
IEmbodiment currentEmbodiment = embodimentsManager.CurrentEmbodiment;
IPart7 part7 = currentEmbodiment.Part;
IParts7 parts7 = part7.Parts;
IModelContainer modelContainer = part7 as IModelContainer;
parts7.SaveAsDetail(modelContainer.Objects[KompasAPIObjectTypeEnum.ksObjectUnknown], saveAsDetailParam);

Хотя, прочитав статью в журнале от 17 года я ничему не удивляюсь.