众所周知,对autocad进行二次开发用到的主要工具有:objectarx,vba,vlisp。但它们的优缺点是显而易见的:objectarx功能强大,编程效率高,但它的缺点是编程者必须掌握vc++,而这门语言非常的难学;vba和vlisp虽然简单易上手,但它们对于开发大型的程序好象无能为力。 那究竟有没有一种语言能结合它们的优点而尽量避免它们的缺点呢? 回答是肯定的,那就是微软新推出的21世纪编程语言c#。关于c#的详细介绍,大家可以参考有关的文章。
c#是通过autocad activex 这座桥梁来和autocad之间进行通讯的。autocad activex 使用户能够从 autocad 的内部或外部以编程方式来操作 autocad。它是通过将 autocad 对象显示到“外部世界”来做到这一点的。一旦这些对象被显示,许多不同的编程语言和环境就可以访问它们。关于autocad activex 的情况,大家可以参考autocad自带的帮助。
呵呵,说了这么多无聊的,还是让我们通过一个具体的例子来说明怎样利用c#进行autocad的二次开发吧。在介绍例子之前先讲一下有关的配置:
(1)visual studio .net (2003和2002都可以,我用的是2002)
(2)autocad2000以上版本(我用的是2004)
这个例子非常简单,就是通过c#建立的窗体来启动autocad并画一条直线。下面是编程的具体步骤:
(1)通过visual studio .net 建立一c#的windows应用程序。
(2)在“解决方案资源管理器”中右击“引用”标签,在弹出的菜单中选择“添加引用”,在“添加引用”对话框中选择“com"选项卡下的下拉列表框中的“autocad 2004 type library"项(注意:不同版本的cad的数字不同),单击右边的“选择”按钮,最后单击下面的“确定”按钮。
(3)在c#窗体中加入两个文本框和一个按钮,分别用于输入直线起点、终点的坐标和在cad中画直线。下面主要解释一下添加的代码。
(a)在程序的开头加入:using autocad;//导入autocad引用空间
(b)在窗体的变量声明部分加入: private acadapplication a;//声明autocad对象
(c)在窗体的构造函数部分加入:a=new acadapplicationclass();//创建autocad对象
a.visible=true;//使autocad可见
(d)在按钮的消息处理函数中加入:
double[] startpoint=new double[3]; //声明直线起点坐标
double[] endpoint=new double[3];//声明直线终点坐标
string[] str=textbox1.text.split(',');//取出直线起点坐标输入文本框的值,文本框的输入模式为"x,y,z"
for(int i=0;i<3;i++)
startpoint[i]=convert.todouble(str[i]);//将str数组转为double型
str=textbox2.text.split(',');//取出直线终点坐标输入文本框的值
for(int i=0;i<3;i++)
endpoint[i]=convert.todouble(str[i]);
a.activedocument.modelspace.addline(startpoint,endpoint);//在autocad中画直线
a.application.update();//更新显示
好了,简单吧,你可以试着编译一下。关于上面一些语句的用法,我会在下一讲中作详细介绍。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器