AutoCAD 的 AccoreConsole - 第三篇(执行插件命令)

来源:互联网 发布:linux查看用户和组 编辑:程序博客网 时间:2024/06/07 00:24

前面看到我们可以执行AutoCAD本身的命令,而AccoreConsole 也可以执行二次开发的插件程序。原理很简单,就是加载插件,执行其中定义的命令。需要注意的是由于AccoreConsole 和界面无关(这也是为何有时我们称其为无头AutoCAD),插件程序如果是ObjectARX的,只能是基于CRX (或DBX程序),.NET的只能基于AcCoreMgd和AcDbMdg。即程序不能和使用与界面有关的模块。这源于AutoCAD对内核进行了重构,拆分出数据层和界面层的模块。如果你使用ObjectARX,可以参考这篇博客了解哪些库是属于CRX的。

请先下载本系列文章中相关的代码: AccoreConsole视频教程

其中,\DevTV-AccoreConsole\Samples\AccoreConsoleDemoSource\CrxTest1 是CRX例子,\DevTV-AccoreConsole\Samples\AccoreConsoleDemoSource\NetTest1是.NET例子。

CRX

先来看看CRX,打开工程后,需要对SDK的路径进行重新指定,因为当时例子是基于AutoCAD 2013介绍的。如果是64位的机器,还要切换到64配置。其它版本类似。






尤其,AutoCAD库文件只引用CRX相关的。其中的20表示的是2015以后的版本号。




切换到文件夹 \DevTV-AccoreConsole\Samples\CustomCRX,对*.scr和*.bat文件修改,设置DWG路径和scr路径。测试的DWG在\DevTV-AccoreConsole\Samples\SampleDrawings\Lights.dwg。该图纸中有几个块,每个块的Attribute显示 " 1000 W"字样,我们通过CRX程序修改为"2000 W"。




修改RunCustomCRXCmd.scr如下,设置CRX程序所在路径,和执行CRX命令需要的参数。

; Loading a .crx module(arxload "C:\\Users\\liangx\\Documents\\01_AutoCADIO\\DevTV-AccoreConsole\\Samples\\AccoreConsoleDemoSource\\x64\\Debug\\CrxTest1.crx"); Run the command(command "AttReplace" "Power" "1000 W" "2000 W")

修改RunAccore.bat, 设置AutoCAD安装路径,DWG图纸路径和脚本所在路径。


cd "C:\Program Files\Autodesk\AutoCAD 2016"c:clsaccoreconsole.exe /i "C:\Users\liangx\Documents\01_AutoCADIO\DevTV-AccoreConsole\Samples\SampleDrawings\Lights.dwg" /s "C:\Users\liangx\Documents\01_AutoCADIO\DevTV-AccoreConsole\Samples\CustomCRX\RunCustomCRXCmd.scr" /l en-USPAUSE


经过操作,DWG图纸得到更新:




.NET

再来看看.NET的插件,打开工程 \DevTV-AccoreConsole\Samples\AccoreConsoleDemoSource\NetTest1 ,添加对应版本的AutoCAD相关引用:



该插件的命令通过传入的两个坐标点,得到构成的框选里的实体,打印出Handle。编译后,切换到\DevTV-AccoreConsole\Samples\CustomNET,修改*.src和*.bat

RunCustomNETCmd.scr


;Loading the .Net module(command "_.Netload" "C:\\Users\\liangx\\Documents\\01_AutoCADIO\\DevTV-AccoreConsole\\Samples\\AccoreConsoleDemoSource\\Demo\\bin\\Debug\\NetTest1.dll");; Run the command(command "EntSelect" "0.0,0.0,0.0" "30.0,30.0,0.0")


RunAccore.bat

cd "C:\Program Files\Autodesk\AutoCAD 2016"c:clsaccoreconsole.exe /i "C:\Users\liangx\Documents\01_AutoCADIO\DevTV-AccoreConsole\Samples\SampleDrawings\Lights.dwg" /s "C:\Users\liangx\Documents\01_AutoCADIO\DevTV-AccoreConsole\Samples\CustomNET\RunCustomNETCmd.scr" /l en-USPAUSE


运行RunAccore.bat,在AccoreConsole\窗口中显示出选择到的实体Handle。





0 0