使用python调用pyautocad,报错OSError: [WinError -2147221005] 无效的类字符串;在本机正常运行,复制到另外一台电脑就报错,python版本、windows版本、pyautocad都是相同的,现四台电脑两台会报错,求大神指教
# 导入库
#导入APoint类是非常必要的,画图都是靠点来画,而且CAD中所有的点都必须用APoint类进行包裹。APoint(10,30),
# 其中10代表点的x坐标,30代表点的y坐标。
from pyautocad import Autocad,APoint
import math
import time
#创建acad对象,若cad未启动,启动cad
acad=Autocad(create_if_not_exists=True)
#cad控制台输出信息
acad.prompt('python+CAD已连接') #本行报错
#acad.doc.name获取当前打开的文件名
acad.prompt('当前文件:'+acad.doc.name)
time.sleep(2)
# 绘制直线
P1=APoint(5,5)
P2=APoint(5,1000)
acad.model.AddLine(P1,P2)
acad.prompt('直线完成')
time.sleep(2)
#text文本
#T1=input("输入文字:")
T1='text文本'
P3=APoint(10,10)
P4=APoint(1000,1000)
P5='CAD'
text=acad.model.AddText("{0}".format(T1),P3,800)
acad.prompt('文本输出完成')
#文本移动
time.sleep(4)
text.move(P3,P4)
acad.prompt('文本移动完成')
print("文本移动完成",P4)
print(type(P4))
#绘制圆
C1=APoint(0,0)
C2=APoint(100,0)
R1=100
acad.model.AddCircle(C1,R1)
acad.model.AddCircle(C2,R1)
#绘制圆弧
C3=APoint(100,100)
acad.model.AddArc(C3, R1, math.radians(90), math.radians(270))
acad.prompt('程序执行完毕')
推测是电脑中有不同的AutoCAD版本
按win+R运行regedit打开注册表,查看HKEY_CLASSES_ROOT中的AutoCAD.Application版本号,我这里AutoCAD2014版显示的是AutoCAD.Application.19
找到报错的这一行:
File "D:\Anaconda3\Lib\site-packages\pyautocad\api.py", line 67, in app
self._app = comtypes.client.CreateObject('AutoCAD.Application', dynamic=True)
将其中的'AutoCAD.Application'改成'AutoCAD.Application.19'
那台有问题的计算机安装的autocad是什么版本,32bit还是64bit,应该是环境的问题
你好,这个问题后来解决了吗?运行没问题的python版本、CAD版本是什么?
我也是这样的情况 请问现在解决了吗
我也遇到相同的情况,不知您是如何解决的?
经测试,应该是CAD版本的问题,先在注册表中查看AutoCAD.Application的版本
然后按版本修改命令:
cad=win32com.client.Dispatch("AutoCAD.Application.23")