Использование приложения lisp из AutoCAD с Python 3.5

У меня есть 6000+ .gml файлов, которые содержат информацию о кадастровых частицах. У меня также есть приложение.lsp для AutoCAD (я не писал код), которое читает файл.gml и рисует частицу в файле.dxf. Проблема заключается в том, что приложение может принимать только один файл.gml в качестве входных данных, поэтому слишком много работы выполняется вручную.

Когда я писал скрипт для загрузки всех этих файлов.gml с сервера в Python 3.5., Я хотел бы знать, есть ли способ запуска приложений ACAD с помощью Python, чтобы я мог просмотреть все файлы и запустить приложение? Спасибо за чтение.

2 ответа

AutoCAD можно контролировать с помощью автоматизации COM. Python может сделать это с помощью Марка Хаммонда pywin32 пакет (несмотря на название, доступны 64-битные сборки).

Вы закончите с чем-то вроде

import glob
import win32com.client

GML_FILES = r"c:\users\mario\documents\gml\*.gml"

# For other versions of AutoCAD see
# http://help.autodesk.com/view/OARX/2018/ENU/?guid=GUID-0EDC04D5-2ACB-4555-B5AC-936D54A9FF61
acad = win32com.client.Dispatch("AutoCAD.Application.22")   # AutoCAD 2018

for gml_file in glob.glob(GML_FILES):
    # I spent quite a while trying to fill this in,
    # but (a) the documentation is very short on examples,
    # and (b) I don't have a copy of AutoCAD
    # which makes it very hard to test - sorry!

Вы можете обратиться к http://help.autodesk.com/view/OARX/2018/ENU/?guid=GUID-86E44F95-2372-461D-862C-426038A6A24F

Существует пакет под названием PyAutoCad, который поможет вам взаимодействовать с AutoCAD COM. https://pypi.python.org/pypi/pyautocad/. Устанавливается с PIP:

pip install pyautocad

Таким образом, ваш сценарий LISP может быть вызван как команда. Так что я думаю, что вы используете

GMLIMPORT "PATHTOGML"

когда ваш скрипт на LISP называется GMLIMPORT. Вы можете автоматизировать это таким образом

from pyautocad import Autocad
acad = Autocad()
for gml in gmls:
  acad.doc.SendCommand("GMLIMPORT " + gml)

Это требует, чтобы Autocad был запущен. Проверьте документацию pyautocad, чтобы запустить autocad, если он не запущен.

Другие вопросы по тегам