如何使用python将autocad的dwg文件转换为png格式,有什么办法吗?

时间:2019-03-29 09:43:17

标签: python autocad autocad-plugin

是否可以使用python将dwg文件AutoCAD更改为png格式或pdf格式。

我尝试查找许多文档,但没有一个回答

```
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 个答案:

答案 0 :(得分:1)

我认为最好的方法是运行命令_-PLOT,并使用虚拟PDF绘图仪。 here 您可以找到更多信息。 运行命令您可以使用:

  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
)

答案 1 :(得分:0)

如果要导出为PDF或PNG,则有所不同。

在我看来,对于PDF,最好的方法是使用虚拟绘图仪,例如PDFCreator。因为您需要设置纸张尺寸等等。

但是对于this.student.contact = {...this.registerForm.value}; //console.log(this.student); ,您可以使用命令.PNG。 默认情况下,它将显示窗口保存对话框,但是如果将系统变量_Export设置为FILEDIA,该对话框将被禁用,您可以仅使用命令行导出。 只记得最后将FILEDIA设置为旧值。在另一种情况下,它会使您非常不开心;)