pyautocad包是一个 *** 作autocad的python包。使用pip直接安装即可,要求本地已安装autocad。
报错:OSError:[WinError -2147221005] 无效的类字符串 解决方案按win+R运行regedit打开注册表,查看HKEY_CLASSES_ROOT中的AutoCAD.Application版本号
然后去pyautocad的安装位置(比如上图红框中的路径下),修改第63和67行,把版本号改成刚查到的(上图中是24,就改成.24,如下图所示)。
主要表现在:无法打印当前Autocad对象的名字,也无法绘制图像。命令行直接卡住了。
解决方案创建Autocad对象时,加 create_if_not_exists=True
pyacad = Autocad(create_if_not_exists=True)
如果仍然不行(比如我就是),那么在autocad主面板新建一个文件,然后可以看到代码正常执行了。绘制的内容在布局1/布局2中。
pyautocad相关代码我这里用qt画了个面板,允许用户输入线段两端点的坐标+一段文字,然后在autocad中显示,再用Python代码保存。qt代码有省略,主要贴pyautocad的代码。
from tkinter import * from pyautocad import Autocad, APoint, aDouble def draw_frame(): root = Tk() root.title('xxx') global entryx1, entryy1, entryx2, entryy2, entry # 起点 labelx1 = Label(root, text="起点 x") labelx1.grid(row=0, column=0) entryx1 = Entry(root) entryx1.grid(row=0, column=1, padx=10, pady=5) ... # 省略布局 # 文字框 label = Label(root, text="输入文字") label.grid(row=2, column=0) entry = Entry(root) entry.grid(row=2, column=1, padx=10, pady=5) # 按钮 button1 = Button(root, text="绘制", command=draw) .grid(row=4, column=0, padx=30, pady=5) button2 = Button(root, text="保存", command=save) .grid(row=4, column=1, padx=30, pady=5) button3 = Button(root, text="关闭", command=root.quit) .grid(row=4, column=2, padx=30, pady=5) root.mainloop() def draw(): # get就可以获取内容了 #print("起点:(%s, %s)"%(entryx1.get(), entryy1.get())) #print("终点:(%s, %s)"%(entryx2.get(), entryy2.get())) global pyacad pyacad = Autocad(create_if_not_exists=True) #pyacad.prompt("Hello! Autocad from pyautocad.") #print(pyacad.doc.Name) ... # 省略一些内容 startPoint = APoint(x1, y1) # z坐标可空缺,空缺时系统默认其为0 endPoint = APoint(x2, y2) # 当然,pyautocad自动将各坐标转化为双精度浮点数。 # 画线段 lineObj = pyacad.model.AddLine(startPoint, endPoint) # 贴文字 textString = entry.get() insertPnt = APoint(0, 0) height = 1 textObj = pyacad.model.AddText(textString, insertPnt, height) def save(): # 保存在默认位置 pyacad.doc.SaveAs(pyacad.doc.Name) if __name__ == "__main__": draw_frame()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)