zccbest 发表于 2010-9-20 14:41:34

[原创]MATLAB 利用VB.NET在AutoCAD中画图

本帖最后由 zccbest 于 2010-9-27 16:03 编辑

在上一个帖子中说到,matlab 调用.NET的 dll文件,但是那个输入不是数组,matlab的数组怎么能够被C#或VB.NET识别呢?下面的实例演示一下。以前做凸轮型线设计的软件,用户提出一个要求,能不能在matlab把生成数据直接倒AutoCAD生成升程表呢?因为几百个数据手工输入至少需要半天时间。我做了一些尝试,matlab直接调用AutoCAD,结果失败。因为当涉及到数组时(坐标点为数组)matlab的数组并不能被AutoCAD识别,后来又尝试在MATLAB中将数组转换成.NET数组,结果还是不行。但是利用VB.NET来调用AutoCAD却正常,于是产生一个想法,利用VB.NET写一个类库(dll文件)来调用AutoCAD,matlab调用VB.NET生成的dll文件,在matlab中将数组转换成NET 数组,然后作为dll文件的输入,结果验证成功。P.S:为什么利用VB.NET而不用C#呢,因为AutoCAD的VB是利用VB编写的,利用VB.NET语法接近并且VB.NET的CreateObject功能很强大,虽然利用C#也可以实现,但程序显得复杂了,我认为混编应该基于.NET平台,而不应该拘泥于哪种语言。

bainhome 发表于 2010-9-20 16:11:35

本帖最后由 bainhome 于 2010-9-20 16:12 编辑

先赞一个!
关于AUTOCAD,我个人的观点是用OBJECTARX或者Lisp也能做得很好,现在很多CAD外挂都是用Objectarx做二次开发,比如机械工程师、清华天河或者土木的探索者等。
CAD的二次开发中,2009之后已不再支持VB编辑器(这个选项没了),这一点,是我们学习zccbest兄这项技术的同时,也需要注意的问题。

zccbest 发表于 2010-9-20 16:44:18

VB编辑器不随Autocad一起安装了,2010和2011可以在autocad官方下载
http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=12715668&linkID=9240618

feihu_1042 发表于 2010-9-28 15:42:32

谢谢分享,多谢~~~

uuvv 发表于 2010-10-6 14:12:34

为什么利用VB.NET而不用C#呢,因为AutoCAD的VB是利用VB编写的,利用VB.NET语法接近并且VB.NET的CreateObject功能很强大,虽然利用C#也可以实现,但程序显得复杂了,

这样说有失偏颇吧,C#开发AutoCAD也极其简单,参见下面的链接:
[*]C# 开发AutoCAD[*]Matlab 调用 C#

zccbest 发表于 2010-10-6 15:53:27

一个问题,autocad不同版本怎么都兼容

uuvv 发表于 2010-10-7 10:26:02

一个问题,autocad不同版本怎么都兼容
zccbest 发表于 2010-10-6 15:53 http://forum.simwe.com/images/common/back.gif

这个不是大问题,你编好程序后,在运行的机器上甚至不需要安装AutoCAD,把需要的DLL打包后就可以了,当然你需要.net framework。

当然你可以用AutoCAD2010的dll,然后自己的机器上安装2011,程序会直接调用2010的功能,而不会与2011发生冲突。
页: [1]
查看完整版本: [原创]MATLAB 利用VB.NET在AutoCAD中画图