Быстрый экспорт из Компас3D в STL для 3D-печати

Быстрый экспорт из Компас3D в STL для 3D-печати 3d печать
3d печать из компаса перевести в

Быстрый экспорт из Компас3D в STL для 3D-печати

Быстрый экспорт из Компас3D в STL для 3D-печати

Так получилось, что в свободное время я «увлекаюсь» 3D-моделированием, а не программированием — это было лишь абстрактное хобби до того, как 3D-принтеры стали относительно свободно доступны. Сейчас мое тосс-моделирование приобрело естественную форму.

Планирую я в основном в compass3d (дешево и скандально), а там специальные крокодилы. экспорт В STL. Мне нужно нажать Save, выбрать место сохранения и формат STL, нажать Advanced storage settings и изменить эти настройки, чтобы сделать модель более «гладкой». После этого происходят чудеса. Кажется, что вам не нужно делать это часто, но каждый раз это невероятно раздражает. Сторч, давайте автоматизируем это! Быстрый гугл показал интересную статью на хабре об этом, но решение не очень полезное и в целом имеет C++. А выше Python я подняться не могу — уж больно это муторно. К счастью, в Compass3D есть «скрипт» для этого языка программирования. Давайте попробуем.

На python-е в STL

Вы можете автоматизировать действия в Compass3D, записывая их в макросы с помощью системы Kompas-Macro. Не забудьте выбрать этот пункт при установке приложения. Запишите макрос и пройдите болезненный путь, описанный выше экспорта в stl, останавливаем запись и сохраняем код макроса, который на поверку ничего не делает. Ну да, если бы это так сработало, то было бы слишком просто для статьи на хабре. Зато есть хорошая заготовка, которую можно дополнить и отладить в прилагающемся редакторе PyScripter. Да, дорогой гугл, при запросе как отлаживать python-скрипты в Компас3D приводи, пожалуйста, в эту статью, а не куда ты там обычно водишь. Требуется выбрать нужный файл в списке Компас-МАКРО->Макрос, нажмите «Редактировать», чтобы открыть макрос, который вы только что записали.

В следующем материале.

# - * - КОДИФИКАЦИЯ: UTF-8-* - win32com. client Import pythoncom from import dispatch, Gencache Import ldefin2d Import incellaneOuselpers as MH #подкл. As incellaneOuselpers MH#подключимконс смертные константы kompas6_constants_3d = gencache. nsuremodule ("", 0, 1, 0). Константы#подключимописаниеинтеоなるй акаи 5 kompas6_api5_module = gencache. ensureModule ("", 0, 1, 0) kompas_object = kompas6_api5_module. kompasobject (dispatch ("kompas. application. 5"). _ oleobj_. kompas_api7_module = gencache. ensureModule ("", 0, 1, 0) application = kompas_api7_module. iapplication (dispatch ("kompas. application. 7"). mh. iapplication = application documents = application. document #or #полоっと исчерпывающий докоментkompas_document = application. activedocumement kompas_. document_3d = kompas_api7_module. ikompasdocument3d (kompas_document) idocen3d = kompas_object.

Здесь вы можете создавать/редактировать код и нажимать Run для отладки. Более подробную информацию о типах кода можно найти в документации SDK Не забыли ли вы выбрать SDK при установке Compass3D? ) Он устанавливается в ту же директорию, что и остальные файлы программы. Документация запутанная, но все, что вам нужно, уже было найдено и обсуждено на форумах разработчиков. Кроме того, в файлах каталога SDK/Samples есть много примеров, но они еще не включены в Python. Немного поблуждав, найдите нужный вам метод SaveAsToAdditionFormat и получите финальный макрос, который содержит следующий код. Он должен быть вполне читабельным сверху донизу. Комментарии также включены.

import pythoncom from win32com. client import Dispatch, gencache import trackback class StlExport: def __init__(self): # Подключение констант Compass API self. kompas6_constants = gencache. EnsureModule("", 0, 1, 0). Константы self. kompas6_constants_3d = gencache . EnsureModule("", 0, 1, 0). Константы # Привязка описания интерфейса API5 self. kompas6_api5_module = gencache. EnsureModule("", 0, 1, 0) self. kompas_object = self. kompas6_api5_module. KompasObject( Dispatch("Kompas. Application. 5 "). _oleobj_. QueryInterface( self. kompas6_api5_module. KompasObject. CLSID, pythoncom. IID_IDispatch ) ) # Привязка дескриптора интерфейса API7 kompas_api7_module = gencache. EnsureModule("", 0, 1, 0) kompas_api_object = kompas_api7_module. IKompasAPIObject( Dispatch("Kompas. Application. 7"); . _oleobj_. QueryInterface( kompas_api7_module. IKompasAPIObject. CLSID, pythoncom. IID_IDispatch ) ) # Получение основного объекта API и текущего документа self. application = kompas_api_object. application self. doc = self. application. ActiveDocument # Если 3D-документ является открытой моделью, попробуйте экспортировать его в stl self. iDocument3D = self. kompas_object. ActiveDocument3D() if self. iDocument3D: self. export_to_stl() return # Иначе напишите пользователю, что это не удалось self. application. MessageBoxEx("Cannot save this document in STL", "", 64) def export_to_stl(self): # Отлавливаем все ошибки и сообщаем пользователю в модальном окне try: # Если документ не сохранен - self. doc. path: если не self, то путь к документу отсутствует - self. kompas_object. ksMess.<><>. stl". format(self. doc. Path, self. doc. Name[:-4]) self. save_as_stl(self. iDocument3D, stl_path) Exceptions: msg = "Ошибка сохранения в STL:<>\ n для экспорта экспорта ". format (traceback. format_exc()) self. kompas_object. ksmessage (msg) def save_as_stl (self, doc, resultpath): # На практике, используйте api. сам экспорт В STL с параметрами AdditionFormat = doc. AdditionFormatParam () AdditionFormat. Init () # AdditionFormat. Format = self. kompas6_constants_3d. Инициализация format_stl formatbinary = true # true - двоичная форма, false - текстовая форма additionformat. lengthunits = self. kompas6_constants. kslununmm # единицы измерения длина, мм (см. kslengthunitsenum) # Зачем нужны эти параметры?<> - sorkin additionformat. step = 0. 05 #Максимальное линейное отклонение addition Format. anger = 3. 6 #addationformat. lenge = 15. 792824 #ts_3d. ksurfaces #ksd3convertsenu m-ksd3 convertsenu m-regide chicks on register forms forms in ksd3convertsenum) # then run

И как это запускать?

result = doc. saveastoadditionformat (resultpath, additionformat) result: self. application. messageboxex («Успешное сохранение! \ n \ n \ n \ n \ n

Основная идея — добавить выполнение нашего скрипта в качестве сторонней утилиты для Компас3D. Идем через основное меню в Приложения->Конфигуратор, внутри него есть еще одно меню и там нужно выбрать Состав->Добавить утилиты. и указать путь к интерпретатору python из дистрибутива Компас3D. Он у вас по пути типа: «C:\ProgramData\ASCON\KOMPAS-3D

Быстрый экспорт из Компас3D в STL для 3D-печати

Быстрый экспорт из Компас3D в STL для 3D-печати

Так получилось, что в свободное время я «увлекаюсь» 3D-моделированием, а не программированием — это было лишь абстрактное хобби до того, как 3D-принтеры стали относительно свободно доступны. Сейчас мое тосс-моделирование приобрело естественную форму.

Планирую я в основном в compass3d (дешево и скандально), а там специальные крокодилы. экспорт В STL. Мне нужно нажать Save, выбрать место сохранения и формат STL, нажать Advanced storage settings и изменить эти настройки, чтобы сделать модель более «гладкой». После этого происходят чудеса. Кажется, что вам не нужно делать это часто, но каждый раз это невероятно раздражает. Сторч, давайте автоматизируем это! Быстрый гугл показал интересную статью на хабре об этом, но решение не очень полезное и в целом имеет C++. А выше Python я подняться не могу — уж больно это муторно. К счастью, в Compass3D есть «скрипт» для этого языка программирования. Давайте попробуем.

На python-е в STL

Вы можете автоматизировать действия в Compass3D, записывая их в макросы с помощью системы Kompas-Macro. Не забудьте выбрать этот пункт при установке приложения. Запишите макрос и пройдите болезненный путь, описанный выше экспорта в stl, останавливаем запись и сохраняем код макроса, который на поверку ничего не делает. Ну да, если бы это так сработало, то было бы слишком просто для статьи на хабре. Зато есть хорошая заготовка, которую можно дополнить и отладить в прилагающемся редакторе PyScripter. Да, дорогой гугл, при запросе как отлаживать python-скрипты в Компас3D приводи, пожалуйста, в эту статью, а не куда ты там обычно водишь. Требуется выбрать нужный файл в списке Компас-МАКРО->Макрос, нажмите «Редактировать», чтобы открыть макрос, который вы только что записали.

В следующем материале.

# - * - КОДИФИКАЦИЯ: UTF-8-* - win32com. client Import pythoncom from import dispatch, Gencache Import ldefin2d Import incellaneOuselpers as MH #подкл. As incellaneOuselpers MH#подключимконс смертные константы kompas6_constants_3d = gencache. nsuremodule ("", 0, 1, 0). Константы#подключимописаниеинтеоなるй акаи 5 kompas6_api5_module = gencache. ensureModule ("", 0, 1, 0) kompas_object = kompas6_api5_module. kompasobject (dispatch ("kompas. application. 5"). _ oleobj_. kompas_api7_module = gencache. ensureModule ("", 0, 1, 0) application = kompas_api7_module. iapplication (dispatch ("kompas. application. 7"). mh. iapplication = application documents = application. document #or #полоっと исчерпывающий докоментkompas_document = application. activedocumement kompas_. document_3d = kompas_api7_module. ikompasdocument3d (kompas_document) idocen3d = kompas_object.

Здесь вы можете создавать/редактировать код и нажимать Run для отладки. Более подробную информацию о типах кода можно найти в документации SDK Не забыли ли вы выбрать SDK при установке Compass3D? ) Он устанавливается в ту же директорию, что и остальные файлы программы. Документация запутанная, но все, что вам нужно, уже было найдено и обсуждено на форумах разработчиков. Кроме того, в файлах каталога SDK/Samples есть много примеров, но они еще не включены в Python. Немного поблуждав, найдите нужный вам метод SaveAsToAdditionFormat и получите финальный макрос, который содержит следующий код. Он должен быть вполне читабельным сверху донизу. Комментарии также включены.

import pythoncom from win32com. client import Dispatch, gencache import trackback class StlExport: def __init__(self): # Подключение констант Compass API self. kompas6_constants = gencache. EnsureModule("", 0, 1, 0). Константы self. kompas6_constants_3d = gencache . EnsureModule("", 0, 1, 0). Константы # Привязка описания интерфейса API5 self. kompas6_api5_module = gencache. EnsureModule("", 0, 1, 0) self. kompas_object = self. kompas6_api5_module. KompasObject( Dispatch("Kompas. Application. 5 "). _oleobj_. QueryInterface( self. kompas6_api5_module. KompasObject. CLSID, pythoncom. IID_IDispatch ) ) # Привязка дескриптора интерфейса API7 kompas_api7_module = gencache. EnsureModule("", 0, 1, 0) kompas_api_object = kompas_api7_module. IKompasAPIObject( Dispatch("Kompas. Application. 7"); . _oleobj_. QueryInterface( kompas_api7_module. IKompasAPIObject. CLSID, pythoncom. IID_IDispatch ) ) # Получение основного объекта API и текущего документа self. application = kompas_api_object. application self. doc = self. application. ActiveDocument # Если 3D-документ является открытой моделью, попробуйте экспортировать его в stl self. iDocument3D = self. kompas_object. ActiveDocument3D() if self. iDocument3D: self. export_to_stl() return # Иначе напишите пользователю, что это не удалось self. application. MessageBoxEx("Cannot save this document in STL", "", 64) def export_to_stl(self): # Отлавливаем все ошибки и сообщаем пользователю в модальном окне try: # Если документ не сохранен - self. doc. path: если не self, то путь к документу отсутствует - self. kompas_object. ksMess.<><>. stl". format(self. doc. Path, self. doc. Name[:-4]) self. save_as_stl(self. iDocument3D, stl_path) Exceptions: msg = "Ошибка сохранения в STL:<>\ n для экспорта экспорта ". format (traceback. format_exc()) self. kompas_object. ksmessage (msg) def save_as_stl (self, doc, resultpath): # На практике, используйте api. сам экспорт В STL с параметрами AdditionFormat = doc. AdditionFormatParam () AdditionFormat. Init () # AdditionFormat. Format = self. kompas6_constants_3d. Инициализация format_stl formatbinary = true # true - двоичная форма, false - текстовая форма additionformat. lengthunits = self. kompas6_constants. kslununmm # единицы измерения длина, мм (см. kslengthunitsenum) # Зачем нужны эти параметры?<> - sorkin additionformat. step = 0. 05 #Максимальное линейное отклонение addition Format. anger = 3. 6 #addationformat. lenge = 15. 792824 #ts_3d. ksurfaces #ksd3convertsenu m-ksd3 convertsenu m-regide chicks on register forms forms in ksd3convertsenum) # then run

И как это запускать?

result = doc. saveastoadditionformat (resultpath, additionformat) result: self. application. messageboxex («Успешное сохранение! \ n \ n \ n \ n \ n

Основная идея — добавить выполнение нашего скрипта в качестве сторонней утилиты для Компас3D. Идем через основное меню в Приложения->Конфигуратор, внутри него есть еще одно меню и там нужно выбрать Состав->». Format (resultPath), » «, 64) else: raise exception ( ‘saveastoadditionformat returned false’) if __name__ ==» __main__ «: stlexport ()

Теперь чуть ниже, в выпадайке «Утилиты», укажите любое название нового инструмента, например «STL», чтобы потом было проще его искать, при добавлении на панель инструментов. А в поле «Параметры» укажите полный путь к файлу макроса, написанного нами выше. Далее, просто закройте этот диалог — он сохраняется автомагически. Уже сейчас можно пользоваться этим инструментом через основное меню Приложения->Утилиты->Отправьте исходный код на GitHub — мы сможем развивать его там вместе. Однако еще одной болью было понимание того, как его удобно использовать. Для меня идеальным решением является кнопка на главной панели инструментов — вы можете найти страшное видео о том, как это сделать, на YouTube. Вот инструкция на словах.

А как же кнопка на панели инструментов?

Скорее всего, вы и сами знаете как ее добавить, но все-таки. Требуется пойти в Настройка интерфейса->Панели->Добавьте утилиту: route из дистрибутива Compass3D в интерпретатор Python. Вы можете найти его в таких маршрутах, как «C:Ј programData \ ascon \ kompas-3d \ 21 \ python 3 \ app \ pythonw. exe».

1\Python 3\App\pythonw.exe».

Теперь чуть ниже, в выпадайке «Утилиты», укажите любое название нового инструмента, например «STL», чтобы потом было проще его искать, при добавлении на панель инструментов. А в поле «Параметры» укажите полный путь к файлу макроса, написанного нами выше. Далее, просто закройте этот диалог — он сохраняется автомагически. Уже сейчас можно пользоваться этим инструментом через основное меню Приложения->Утилиты->Отправьте исходный код на GitHub — мы сможем развивать его там вместе. Однако еще одной болью было понимание того, как его удобно использовать. Для меня идеальным решением является кнопка на главной панели инструментов — вы можете найти страшное видео о том, как это сделать, на YouTube. Вот инструкция на словах.

А как же кнопка на панели инструментов?

Скорее всего, вы и сами знаете как ее добавить, но все-таки. Требуется пойти в Настройка интерфейса->Панели->Добавьте утилиту: route из дистрибутива Compass3D в интерпретатор Python. Вы можете найти его в таких маршрутах, как «C:Ј programData \ ascon \ kompas-3d \ 21 \ python 3 \ app \ pythonw. exe».

Оцените статью