ADN Club > AutoCAD .NET API

Импорт step файла в Autocad (Python)

(1/1)

izhgtumekhanik:
Добрый день!
Как импортировать Step файл в Autocad Mechanical 2016 x64 ?

Вот часть кода - рабочий:


--- Код - Python [Выбрать] ---from win32com.client import Dispatch, gencache AcadAPI = gencache.EnsureModule('{4E3F492A-FB57-4439-9BF0-1567ED84A3A9}', 0, 1, 0)AcadObject = Dispatch('AutoCAD.Application.20.1', None, AcadAPI.IAcadApplication.CLSID)AcadObject.Visible = True # Открываем ГОСТ-шаблонtemplate_path = r"C:\Users\ZeroHour\AppData\Local\Autodesk\AutoCAD Mechanical 2016\R20.1\rus\Acadm\Template\am_gost.dwt"doc = AcadObject.Documents.Add(template_path) # Импортируем STEPAcadObject.ActiveDocument.SetVariable("FILEDIA", 0)  # отключаем диалог выбора файлаAcadObject.ActiveDocument.SendCommand(f'._IMPORT\r"{r"C:\cad\Деталь.stp"}"\r') 
А дальше я так понимаю Autocad тратит время на обработку этого файла и выходит всплывающее окошко о готовности с гиперссылкой по которому надо кликнуть и модель открывается. Фото окошка прикладываю.


izhgtumekhanik:
Через события средствами api Autocad не могу подойти.

izhgtumekhanik:
Вот вторя часть - рабочий.


--- Код - Python [Выбрать] ---time.sleep(4) # Открываем готовый результат (аналог клика по уведомлению)AcadObject.ActiveDocument.SendCommand("IMPORTTRANSLATIONRESULT\r") # Перестраиваем видAcadObject.ActiveDocument.SendCommand("._REGEN\r") 
Остается каким то образом отловить событие окончания импорта.

izhgtumekhanik:
Так как отловить событие конца импорта ?

izhgtumekhanik:
Наверно кто то заметил что получил объект doc, но работа идет через AcadObject.ActiveDocument..

Объект doc во время активного перестраивания недоступен и вылетает ошибка:


--- Код - Python [Выбрать] ---Reloaded modules: win32com.gen_py.4E3F492A-FB57-4439-9BF0-1567ED84A3A9x0x1x0Traceback (most recent call last):   File C:\Python3.13.5x64\Lib\site-packages\spyder_kernels\py3compat.py:356 in compat_exec    exec(code, globals, locals)   File c:\cad\безымянный1.py:31    doc.SetVariable("FILEDIA", 0)  # отключаем диалог выбора файла   File ~\AppData\Local\Temp\gen_py\3.13\4E3F492A-FB57-4439-9BF0-1567ED84A3A9x0x1x0.py:7038 in SetVariable    return self._oleobj_.InvokeTypes(52, LCID, 1, (24, 0), ((8, 1), (12, 1)),Name com_error: (-2147418111, 'Вызов был отклонен.', None, None) 
НО! После вызова


--- Код - Python [Выбрать] ---AcadObject.ActiveDocument.SendCommand(f'._IMPORT\r"{step_file}"\r')
объект doc доступен после ожидания 0.1 сек и доступен до момента завершения импорта!

значит потеря доступа к doc - признак завершения импорта!


--- Код - Python [Выбрать] ---from win32com.client import Dispatch, gencache# import pythoncomimport time AcadAPI = gencache.EnsureModule('{4E3F492A-FB57-4439-9BF0-1567ED84A3A9}', 0, 1, 0)AcadObject = Dispatch('AutoCAD.Application.20.1', None, AcadAPI.IAcadApplication.CLSID)# AcadObject = DispatchWithEvents('AutoCAD.Application.20.1', AcadAPI.IAcadApplication) AcadObject.Visible = True # Открываем ГОСТ-шаблонtemplate_path = r"C:\Users\ZeroHour\AppData\Local\Autodesk\AutoCAD Mechanical 2016\R20.1\rus\Acadm\Template\am_gost.dwt"doc = AcadObject.Documents.Add(template_path) # AcadObject.ActiveDocument.SetVariable("FILEDIA", 0)  # отключаем диалог выбора файла time.sleep(0.1)doc.SetVariable("FILEDIA", 0) # Импортируем STEPstep_file = r"C:\cad\Деталь.stp"# Импортируем STEP# AcadObject.ActiveDocument.SendCommand(f'._IMPORT\r"{step_file}"\r') time.sleep(0.1)doc.SendCommand(f'._IMPORT\r"{step_file}"\r') flag = True # for i in range(20):#     # pythoncom.PumpWaitingMessages()    #     print(doc.ModelSpace.Count)#     time.sleep(0.2) while flag:    try:        tmp = doc.ModelSpace.Count        time.sleep(0.2)    except:        flag = False        time.sleep(1)  print('модель импортирована') # Открываем готовый результат (аналог клика по уведомлению)AcadObject.ActiveDocument.SendCommand("IMPORTTRANSLATIONRESULT\r") # Перестраиваем видAcadObject.ActiveDocument.SendCommand("._REGEN\r") AcadObject.ActiveDocument.SetVariable("FILEDIA", 1)  # возвращаем диалог выбора файла 

Навигация

[0] Главная страница сообщений

Перейти к полной версии