明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1145|回复: 5

[基础] python调用CAD内置命令的思考

[复制链接]
发表于 2022-4-29 17:17:31 | 显示全部楼层 |阅读模式
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",就会再次调用画圆命令,
#相当按了一次确定或者空格
#暂时研究到此,有空研究一下,内置图元的属性移值问题




发表于 2022-4-29 19:29:05 | 显示全部楼层
SendCommand结尾“\r\n"或”\n\n"都可以,不会重复命令的。你再试试
发表于 2022-4-30 07:10:17 | 显示全部楼层
调用内置命令还是那么慢,有啥用
 楼主| 发表于 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")


 楼主| 发表于 2022-5-5 14:08:36 | 显示全部楼层
烟盒迷唇 发表于 2022-4-30 07:10
调用内置命令还是那么慢,有啥用

有用,比如:有时候需要调用已有程序或者插件的命令,实现插件优化,不用自己重新做个新功能。已有插件的命令可以当做CAD内部命令来用。
发表于 2022-5-5 15:02:29 来自手机 | 显示全部楼层
yu411038522 发表于 2022-5-5 14:07
多谢,我试试,
经测试,CAD2008,vscode,python3.9。还是会出现重复命令


于Acad2020,python3.9 是没问题的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 21:59 , Processed in 0.164499 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表