Как конвертировать DWG-файл AutoCAD в формате PNG с помощью Python, есть ли способ? - PullRequest
0 голосов
/ 29 марта 2019

Есть ли способ изменить файл DWG AutoCAD в формат PNG или PDF, используя Python.

Я пытался найти много документации, ни один из них не ответил на мой вопрос

```
from __future__ import print_function
from os.path import join, dirname, abspath
from xlutils.copy import copy
import xlrd
import xlwt
from pyautocad import Autocad, APoint
import os
import win32com.client
from pyautocad import Autocad, APoint
from pyautocad.contrib.tables import Table
from comtypes import COMError
def props(cls):
  return [i for i in cls.__dict__.keys() if i[:1] != '_']
# Create workbook
book = xlwt.Workbook()
ws = book.add_sheet("ExportedData")
book.save("Exported.xls")

# Open the workbook
xl_workbook = xlrd.open_workbook("Exported.xls")
sheet_names = xl_workbook.sheet_names()

xl_sheet = xl_workbook.sheet_by_name(sheet_names[0])

wb = copy(xl_workbook)
sheet = wb.get_sheet(0)

dwgfiles = filter(os.path.isfile, os.listdir(os.curdir))



cwd = os.path.abspath(os.path.curdir)  # current working dir
print(cwd)


for f in dwgfiles:
    print("++++++++++++++++++++++++++++++")
    print("++++++++++++++++++++++++++++++")
    print("++++++++++++++++++++++++++++++")
    print("++++++++++++++++++++++++++++++")

    print(f)
    if f.endswith(".dwg"):
        print("sdaasdas")
        """ open Document"""
        acad = Autocad()
        print(cwd)
        acad.app.Documents.open(cwd + "/" + f)
        exportFile="new2.bmp"





        num_cols = xl_sheet.ncols  # Number of columns
        idx = 1

        acad = win32com.client.Dispatch("AutoCAD.Application")

        doc = acad.ActiveDocument  # Document object
        print(dir(doc))
        doc.Export('exportFile','bmp')
        print("MODEL SPACE")
        count=0
```

пожалуйста, помогите мне решить это? ошибка, которую я получаю, приведена ниже

**e_to_string_', '_username_', '_wrap_dispatch_']
Traceback (most recent call last):
  File "auto1.py", line 63, in <module>
    doc.Export(exportFile,"bmp")
  File "<COMObject <unknown>>", line 3, in Export
pywintypes.com_error: (-2147352562, 'Invalid number of parameters.', None, None)**

----------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ---------------------------

Ответы [ 2 ]

1 голос
/ 29 марта 2019

Я думаю, что лучший способ - запустить команду _-PLOT и использовать виртуальный PDF ploter. здесь Вы можете найти больше информации. Для запуска команды Вы можете использовать:

  acad.doc.SendCommand("_-PLOT" paramerets )

, где paramerets определяет размер бумаги, площадь печати и т. Д.

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

(setq parameters (list "_n" layoutName "" "PDFCreator" "_n" "_n" "_y")

Где layoutName - переменная, в моем случае layoutName читается, итерируя каждый макет. В этом случае все параметры будут по умолчанию - Вам нужно начать настройку в окне графика и использовать кнопку [Apply to Layout].

Более сложный пример может быть:

(setq parameters (list 
"_y"            ; detailed configuration
"Layout1"       ; Layout name
"PDFCreator"    ; ploter name 
"A4"            ; page size
""              ; drawing units
""              ; drawing orientation
""              ; plot upside-down
"_w"            ; plot area - window
(strcat (rtos(car P1)) "," (rtos(cadr P1)))     ; P1 and P2 are points ( three elemenets list of coordinates as real value ))
(strcat (rtos(car P2)) "," (rtos(cadr P2)))     ; we need to convert real values to strings
""              ; drawing scale
""              ; plot offset
""              ; use plot style table
""              ; plot styme name
""              ; Lineweight
""              ; Lineweight scale
""              ; plot paperspace first
""              ; plot paperspace objects
""              ; save to file ( *.plt)
"_n"            ; save changes to page configuration
"_y"            ; confirm
)
0 голосов
/ 03 апреля 2019

Это разница, если вы хотите экспортировать в PDF или PNG.

В случае PDF, на мой взгляд, лучший способ - использовать виртуальный плоттер, например PDFCreator. Вам нужно установить размер бумаги и т. д.

Но для .PNG Вы можете использовать команду _Export. По умолчанию будет отображаться диалог сохранения окна, но если вы установите системную переменную FILEDIA на 0, диалог будет отключен, и вы можете экспортировать, используя только командную строку. Просто не забудьте установить FILEDIA на старое значение в конце. в другом случае это делает Вас очень несчастным;)

...