作为一只熟练的画图狗,在安装完CAD后,第一件事必须是工具-自定义-编辑程序参数(acad.pgp),修改自己熟悉的快捷命令,然后保存重启CAD,开始愉快地画图……
acad.pgp文件
定义外部命令
除了设置CAD自带命令的快捷命令外,acad.pgp还有一个相对不为人知的功能,就是定义外部命令(External Commands)。外部命令可以调用其他应用程序,例如Windows系统命令、打开应用程序等,定义的具体方法如下所示:
command,[executable/shell request],bit flag[,
prompt[,return_code]]
command——即要在CAD中定义的快捷命令名;
executable/shell request——输入命令名时发送到操作系统的字符串(这个字符串其实就是要执行的外部命令,可以在cmd中先尝试是否可行)
bit flag——所需的位码参数。按任意组合相加这些整数值以得到所需结果:
bit flag |
结果 |
0 |
启动应用程序并等待结束 |
1 |
不等待应用程序结束 |
2 |
以最小化模式运行应用程序 |
4 |
“隐藏”地运行应用程序 |
8 |
将参数字符串括在引号中 |
prompt——可选参数,它指定在程序的命令提示下显示的提示。
return_code——可选参数,暂时可以忽略。
操作实例
比如说打开Excel记录些数据,acad.pgp文件中添加一行:
EXCEL, start "" "C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE", 1
在CAD命令行中输入“EXCEL"就好了:
比如说刷个知乎摸个鱼:
ZHIHU, explorer "https://www.zhihu.com", 1
同样的,输入”ZHIHU“
再比如说关机下班:
SHUTDOWN, shutdown /s /t 0,1
当然还可以是其他命令,大家可以尝试一下~
CAD中运行Python
Python由于简单易学加上能很方便的在程序间传递数据,本身就很适合用来二次开发,可惜AutoCAD官方不支持。网上有不少关于Python二次开发AutoCAD的资料,但基本上都是从外部调用CAD的,也就是每次都要在CAD外面跑一遍脚本才可以运行,无法像AutoLisp、VB、C#等一样直接在CAD中通过快捷命令运行。 借助上文介绍的方法,可以”假装“实现在CAD中运行Python。
1.以在CAD中选择两个点画直线为例,我们可以建立一个pyline.py文件,代码如下所示:
from pyautocad import Autocad, APoint
def pyline():
acad = Autocad(create_if_not_exists=False)
try:
p1 = acad.doc.Utility.getpoint(APoint(0, 0), "PyLine:请输入第一个点")
p2 = acad.doc.Utility.getpoint(APoint(p1), "PyLine:请输入第二个点")
acad.model.addline(APoint(p1), APoint(p2))
except:
print("Error")
if __name__ == "__main__":
pyline()
2.由于直接运行pyline.py文件,会有黑框弹出,将原pyline.py文件重命名为pyline.pyw。
3.在acad.pgp文件中添加一行:
PYL, start "" "C:\...\pyline.pyw", 4
其中PYL代表AutoCAD中的快捷命令;C:\...\pyline.pyw为具体路径,最后一个参数要填4或者5,否则仍然会有黑框产生。
4.在AutoCAD命令行中输入PYL,就可以绘制直线啦!
当然,这种方法本质上还是Python从外部调用CAD,所以电脑上必须得安装有Python以及相应的包才行。
0人已收藏
0人已打赏
免费0人已点赞
分享
结构资料库
返回版块41.23 万条内容 · 393 人订阅
阅读下一篇
干货工程价款纠纷不要怕!69个有关问题梳理来了~《民法典》第七百八十八条规定,建设工程合同是承包人进行工程建设,发包人支付价款的合同。建设工程合同包括工程勘察、设计和施工合同。由此,在建设工程施工合同关系中,支付工程价款是发包人的主要义务,承包人进行工程施工的合同目的是依法依约取得工程价款;然而,工程实务中发包人欠付工程款问题比较严重;绝大部案件均涉及工程价款的问题;从1164篇裁判文书反映的情况来看,从基层法院到最高人民法院,对工程价款的争议非常大,导致建设工程施工合同纠纷案件二审案件发改率及申请再审成功率明显高于其他民商事案件。
回帖成功
经验值 +10
全部回复(0 )
只看楼主 我来说两句抢沙发