vb.net cad 块表最后的实体_[CAD二次开发]旅途的开始——从台前到幕后

        CAD是一个在很多行业被使用的软件,在工程设计的工作中使用的非常之多。因为其通用性,在某些方面通过对其进行二次开发定制一些功能变得可能和必要,就让我们在接下来这一系列的文章里,来一场说走就走的旅行,一起来探讨一下如何通过CAD的二次开发在一定程度上提高我们的工作效率。

    这里先说明一下,本系列讨论的是使用C#语言对CAD进行二次开发,由于笔者个人只是一个接触编程时间不长的业余程序员,关于C#语言的一些语法知识会在同步的一个系列中,以拾遗的形式进行讨论。这里我们先进行一下准备工作:本系列以CAD2014和C#的.NET framework4.0为例进行开发,注意CAD的版本要和.NET的版本对应,否则程序无法运行,具体对应关系可以查询CAD官网或者查找相应的API文件。下图给出部分版本的对应关系,以供参考。

95e857aa6aa48abce953baefa4d59162.png

打开C#的IDE,也就是Visual Studio,新建项目,由于是在CAD程序上进行拓展,所以选择.NET framework的类库,如下图所示

27074af937e4b2eaf738fb7231b2a3a9.png

点击下一步,选择存储路径,并将版本选为4.0

77084d66e437f64b48fc2f94742214dc.png

建立好项目之后,在Visual Studio右侧的解决方案管理器中右键引用,进行添加,加工CAD安装目录下的3个dll文件(acdbmgd.dll,accoremgd.dll,acmgd.dll)添加到引用当中,并将三个文件的复制本地属性改为False。同时,在文件开头添加几个using语句以引用CAD中相关的名称空间:

5f67176d6d7c1b2acf3d22f47ab6cc84.png

这里注意不要硬敲代码,Visual Studio有着非常完善的代码提示功能,在业界有宇宙第一IDE之称,关于一些快捷键等使用技巧请在上文所说的语法拾遗系列中介绍。

弄好了开发环境,有了引用之后,我们就该开始正式工作,本篇作为旅途的开始,完成下列任务:在CAD中绘制一条直线,并且,在CAD下方的编辑栏中输出一句话来表示。

这里介绍下我们在CAD绘制一条直线的过程:

首先,更改CAD的系统命令,在类中声明一个特性,以中括号括住CommandMethod,其参数是一个字符串,该字符串即为要添加到CAD系统里面的命令,当我们在CAD中输入这个命令的时候,CAD会执行这个特性下的方法:

017ed4fe7bb7121a76016a1dfe713493.png

现在,向方法中写入代码。众所周知(实际上我也刚搞明白),CAD是一个关系型数据库,关系型数据库有存储数据的表以及每个客体所占的记录(类似于Excel的行),那么,我们的直线所在的记录也要添加进CAD所对应的表中,这样才能做到在程序中绘制一条直线,并且让所有人看到,具体过程是这样的:

  1. 获取当前图形的数据库

  2. 在内存中创建一个对象(要绘制的图形)

  3. 打开CAD的块表并找到对应模型空间的块表记录

  4. 添加所绘制图形的记录

听起来比较晦涩,这里分开来看:

(1)当前图形的数据库在我们引用的Autodesk.AutoCAD.DatabaseServices这个名称空间里面,所以这里我们找一个变量来储存即可,对于编辑栏,同样的道理,编辑栏属于Autodesk.AutoCAD.ApplicationServices:

71b2e637f5a042c436ae7524ffbf7131.png

(2)CAD的图形(点,直线,圆,多段线等)属于名称空间Autodesk.AutoCAD.Geometry:这里我们声明两个点和一条直线,并将直线赋值为两点相连的直线:

e7d590fec73f251a782bf176cd0e8b1c.png

这里的声明语法涉及到C#数据类型方面的一些语法,老样子,这里在另一个系列里面细说

(3)关系型数据库需要以事务处理的方式进行写的操作,事务处理的类Transaction属于DatabaseServices名称空间:

6846448acf23a82e4c351d5f8b304caa.png

接下来寻找块表并且获取块表记录,寻找块表即以读的方式打开块表,由于需要向块表记录中添加直线的记录,属于块表记录以写的形式打开,这里的as是强制转换操作符,也可以用隐式转换:

3f1da6f86f57ef2c355ead25034ea6ae.png

(4)接下来,将直线记录添加到模型空间的块表记录中,再将直线添加进事务处理中,最后提交事务处理,一条直线绘制完成:

0821bbb1ebd7d766ec6384d6adf9776e.png

最后,调用Editor的WriteMessage方法,向编辑栏写入想要的信息

af5e2cb6f27c36271196e6f6f97dd80b.png

到此为止,完成目标。016ed9b509a4485b84d53be9f9787928.png

e65654930d97ae808dd54fa351cb454a.png

    是不是觉得有些从入门到放弃的意思,不要着急,下一篇我们来讨论如何使用面向对象编程的特性,使得同样的过程只用一行代码就可以完成,从此以后,只要引用了现在的类库,向CAD添加图形就是一行代码就完成的了。

        由于笔者能力有限,文章叙述有误之处,还请大家批评指正。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值