前一段时间在做CAD二次开发。不管是诚恳地说还是不诚恳地说,做出来的东西都很坑爹,不值一提。现在那个任务已经暂告一个段落了,所以写篇博客把值得总结得东西记录下来。下面的两个技巧都是困惑了很长时间才解决的,应当略有一些价值。
第一个技巧是启动CAD的方法。CAD二次开发的技术貌似有很多种,我不太熟悉所以不一一列举。我是在
首先当然是添加引用(如果没有装CAD的话,第一步的第一步是先安装CAD)。我这里添加的引用有三个,分别是AutoCAD,AXDBLib,MPolygonComlib。我忘了是不是有哪一条可以删除了?
然后using下面两条
using
using
然后在窗体所在的命名空间里写这么一行
[ComImport,
#p#分页标题#e#然后在这个命名空间里写一个接口
public
然后在窗体类里写上下面这些东西
[DllImport("ole32.dll")]
static extern int CoRegisterMessageFilter(IMessageFilter lpMessageFilter, out IMessageFilter lplpMessageFilter);#p#分页标题#e#
int IMessageFilter.HandleInComingCall(int dwCallType, IntPtr hTaskCaller, int dwTickCount, IntPtr lpInterfaceInfo)
{
}
int IMessageFilter.RetryRejectedCall(IntPtr hTaskCallee, int dwTickCount, int dwRejectType)
{
}
int IMessageFilter.MessagePending(IntPtr hTaskCallee, int dwTickCount, int dwPendingType)
{
}
然后在窗体的构造函数里加上两行,把构造函数弄成下面这样
public Form1()
{
}
#p#分页标题#e#以上内容除了加引用以外我都不知道是干什么用的,不过经过实验以上内容缺了哪一行都不能启动CAD。
接下来的步骤就比较清晰了。
AcadApplication pCAD;
System.Type oType = System.Type.GetTypeFromProgID("AutoCAD.Application");
pCAD = System.Activator.CreateInstance(oType,true) as AcadApplication;
pCAD.Visible = true;
pCAD.Documents.Open("CAD文件的路径",
CAD就成功启动了。
第二个技巧是用代码往CAD里发送命令行。说起来很惭愧,有很多操作,比如合并多段线,我没有找到相应的接口。解决方法之一是读取两条多段线的坐标,新画一条合并后的多段线并删除两个旧的多段线,但是这个做法太恶心了。于是我找到了一个方法,用代码往CAD里发送命令行。下面是一句合并多段线的代码。
pCAD.ActiveDocument.SendCommand("pen(handent""
里面这个命令行等价于下面这个操作。
首先,在CAD里输入命令pe,回车,进入多段线操作。
然后,如果是在CAD#p#分页标题#e#里直接操作的话,这个时候应该用鼠标选择一个实体。但是代码不能实现这个操作,所以要用代码指定一个实体。例如(handent"EX21")是指定了编号为EX21的实体。这个实体用代码表示是"(handent""
然后,往CAD里输入命令j,即选择合并多段线命令。
然后再用代码选中另外一个实体,比如"XE78"号实体。这相当于在CAD中输入(handent"XE78")并回车。
然后再回车,合并两条多段线。
输入(command),回车,退出多段线操作命令。在CAD中,这个操作可以通过点击esc键实现,但是用代码的话只能输入(command)并回车。
用代码发送命令行跟直接往CAD里输入命令行是一样的,上面那句代码执行后CAD的命令行窗口里会显示相应的命令。上面这个例子说明了命令行的构造规则,其他命令可以按照这个规则构造。同时这导致一个问题,即代码执行完毕前千万不要点击CAD窗口,否则点击操作可能被视为一个选择实体的操作,从而干扰命令行的执行。例如,如果系统认为点击操作是在"pen"之后、"(handent""
致谢:肖泽云编著的《基于Visual
相关文章
- 2021-08-23精通AutoCAD三维设计与开发PDF下载
- 2021-08-22AutoCAD 2013应用与开发系列中文版AutoCAD 2013室内装
- 2021-08-22AutoCAD 2013应用与开发系列中文版AutoCAD 2013机械图
- 2021-08-19数字化成图-最新AutoCAD地形图测绘高级开发PDF下载
- 2021-08-03Autodesk RevitStructure2012应用宝典 [欧特克软件(中
- 2021-08-02Autodesk RevitMEP2012应用宝典 [欧特克软件(中国)有限
- 2021-08-02Autodesk Revit2013族达人速成 [欧特克软件(中国)有限公
- 2021-08-01Visual Basic与AutoCAD二次开发PDF下载
- 2021-07-31Autodesk Revit2012族达人速成 [欧特克软件(中国)有限公
- 2021-07-18AutoCAD VBA开发手册PDF下载