jixiezhang 发表于 2021-1-7 10:33:44

Python二次开发cad批量打印

用python二次开发cad批量打印,结果打印单个dwg文件,没有问题,打印多个dwg文件时,就会报错,不知道是怎么回事。
初步判断,应该是没有打印完所引发的故障。给代码中加了延时后,效果不是很理想。查了EndPlot事件,不知道怎么在python中用。
有没有大神帮忙解决一下?
调用cad的方式:
acad = comtypes.client.GetActiveObject("AutoCAD.Application.20")
中间略去打印过程

acaddoc.Plot.PlotToFile(f"{filename1}.pdf") # 打印到当前文件夹
    sleep(8)    # r打印延时
    acad.Documents.Close()# 关闭cad文件


错误信息:
Traceback (most recent call last):
File "G:\工作cad转pdf\cad打印pdf.py", line 53, in <module>
    scr(filename1,filename,)                   # 批量转换
File "G:\工作cad转pdf\cad打印pdf.py", line 16, in scr
    layout.ConfigName = "DWG To PDF.pc3"      # 打印机名称
File "C:\Users\we\AppData\Local\Programs\Python\Python37\lib\site-packages\comtypes\__init__.py", line 292, in __setattr__
    value)
_ctypes.COMError: (-2147418111, '被呼叫方拒绝接收呼叫。', (None, None, None, 0, None))

qmqyqj 发表于 2021-1-9 16:11:11

python二次开发cad,有没有学习资料分享下呗

jixiezhang 发表于 2021-1-9 22:02:12

qmqyqj 发表于 2021-1-9 16:11
python二次开发cad,有没有学习资料分享下呗

我也在是网上看资料,主要是win32com库、comtypes库或者pyautocad库,用的技术是ActiveX开发。
参考acadauto.chm和acadaag.chm

jixiezhang 发表于 2021-1-9 23:09:53

摸索了下,把acad = comtypes.client.GetActiveObject("AutoCAD.Application.20")这句进行了修改,改成
acad = comtypes.client.CreateObject("AutoCAD.Application.20")
这样修改后,加延时后,可以批量打印,但是还想着优化。看到有个 endplot事件,但不知道怎么用,不知道有人用过没,希望大神能指点下

z123456Z 发表于 2021-2-7 18:38:03

程序运行太快了,必须连接上cad才能运行程序

jixiezhang 发表于 2021-2-7 20:36:40

z123456Z 发表于 2021-2-7 18:38
程序运行太快了,必须连接上cad才能运行程序

谢谢,已经解决

烟盒迷唇 发表于 2021-5-13 11:46:35

发个来试试啊

paulpz 发表于 2023-12-15 10:58:49

希望分享程序,谢谢
页: [1]
查看完整版本: Python二次开发cad批量打印