yu411038522 发表于 2022-4-29 17:17:31

python调用CAD内置命令的思考

python语言利用win32com操作cad的方法中,有篇博客写的非常详细,我这里不再说。地址放一下:大家自行参考https://blog.csdn.net/Hulunbuir/article/details/83715279

然而我固执的想调用CAD的内置命令
打开明经的AutoCad ActiveX和VBA参考里面,关于VBA操作CAD的方法非常成熟了,也是通过调用com接口的方法,于是python也可以参考
这个介绍是文档里的介绍:Application对象相关联的属性主应用程序窗口的特性。这些方法控制当前加载的外部应用程序与接口对象的加载或列表。活动的文档 (AutoCAD 图形) 可使用 ActiveDocument 属性来访问。

于是设想VBA的object.SendCommand(Command)方法移值到python里
经过尝试,object在python里用doc代替,doc的来源为:
import win32com.client as win32c

cad=win32c.Dispatch('AutoCad.Application')
doc=cad.ActiveDocument
doc.SendCommand ("_Circle" + "\r" + "2,2,0" + "\r" + "4" + "\r")
#vba的vbcr改成"\r",然而
doc.SendCommand ("_line" +"\r" + str_pt_coorst + "\r" + str_pt_coorend + "\r\n")
#str_pt_coorst和str_pt_coorend代表两个坐标字符串
#str_pt_coorst=“2,2”,str_pt_coorend="10,10"
#需要注意的是,直接的命令结尾需要用"\r\n",原因有待体会,但画圆时如果用"\r\n",就会再次调用画圆命令,
#相当按了一次确定或者空格
#暂时研究到此,有空研究一下,内置图元的属性移值问题




landsat99 发表于 2022-4-29 19:29:05

SendCommand结尾“\r\n"或”\n\n"都可以,不会重复命令的。你再试试

烟盒迷唇 发表于 2022-4-30 07:10:17

调用内置命令还是那么慢,有啥用

yu411038522 发表于 2022-5-5 14:07:11

本帖最后由 yu411038522 于 2022-5-5 14:14 编辑

landsat99 发表于 2022-4-29 19:29
SendCommand结尾“\r\n"或”\n\n"都可以,不会重复命令的。你再试试
多谢,我试试,
经测试,CAD2008,vscode,python3.9。还是会出现重复命令

doc.SendCommand ("_Circle" + "\r" + "2,2,0" + "\r" + "4" + "\n\n")


yu411038522 发表于 2022-5-5 14:08:36

烟盒迷唇 发表于 2022-4-30 07:10
调用内置命令还是那么慢,有啥用

有用,比如:有时候需要调用已有程序或者插件的命令,实现插件优化,不用自己重新做个新功能。已有插件的命令可以当做CAD内部命令来用。

landsat99 发表于 2022-5-5 15:02:29

yu411038522 发表于 2022-5-5 14:07
多谢,我试试,
经测试,CAD2008,vscode,python3.9。还是会出现重复命令



于Acad2020,python3.9 是没问题的。
页: [1]
查看完整版本: python调用CAD内置命令的思考