上次提供给大家一个Grasshopper控制CAD的方法,是通过发送命令的方式。这个方法比较依赖于CAD的脚本语法,容易失败。这次提供一个更加稳定的控制方法,原理是采用CAD的ActiveX接口(进程间通信),用C#编程的方式直接控制CAD。源码如下:
- //首先引用CAD安装目录下的两个dll:
- //1 Autodesk.AutoCAD.Interop.dll
- //2 Autodesk.AutoCAD.Interop.Common.dll
- private void test()
- {
- //1、发送命令
- //1-1获得当前激活的cad进程实例
- AcadApplication _application = (AcadApplication)Marshal.GetActiveObject("AutoCAD.Application");
- _application.Visible = true;
- //1-2调用CAD的regen命令
- string cmd = "regen";
- //1-3调用CAD接口
- _application.ActiveDocument.SendCommand(cmd);
- //2、直接绘制直线
- double[] startPoint = { 4000, 4000, 0 };//起点坐标
- double[] endPt = { 6000, 4000, 0 };//终点坐标
- //调用CAD接口“AddLine”
- AcadLine l = _application.ActiveDocument.ModelSpace.AddLine(startPoint, endPt);
- }
复制代码使用方法:在Grasshopper的C#按钮中,增加上面的代码,打开CAD即可使用。其他的绘图接口,可自行探索。 扫下面二维码加作者微信(tianming3628),欢迎入群交流。
|