首页 > 软件开发 > 超详细的CAD二次开发教程

快速发布【软件开发】相关需求,专业顾问为您服务 快速发布

用此手机号发布,您还可以点击 更换

发布需求
请输入正确的手机号
请输入正确的验证码

您是不是要找:

  • 专家问诊,提供专业建议
  • 急速响应,体验省心
  • 根据需求灵活定制解决方案

超详细的CAD二次开发教程

标签:CAD二次开发 2017-7-25 作者:Lfdhjbsufvycn

VBA擅长执行包括在其他应用程序中的组件,如Microsoft的Excel和Access。AutoLISP是基于表处理的编程体系,它允许程序员随意地存储和操作传送信息,然而VBA部件包括数据和对复杂情况的各种有效操作,这就是问题变得复杂的地方,除非你已真正懂得这些工具的好处。


让我们从学术角度讨论一些两种语言间的不同之处。前面提到的AutoLISP是综合了逻辑结构与传统AutoLISP命令的一个完美工具,你能组合AutoCAD命令并放在一个有条件的逻辑脚本里,而产生强有力的自定义命令,这些命令能被用于自动操作通常的任务,也能解决计算问题而得到一个结果。基于命令种类的思想比目标角度的思想更简单,一个清楚直接指出不同点的例子:在一个多义线对象里打断编辑方法。如果你要打断一条多义线,你必须先计算并重新更新这个物体,Extend和Trim命令也一样。这些命令现在还并不包含在AutoCAD对象系统的实体对象编辑方法中。在不久它们会随时出现,这就是对象的好处。


在许多情况下,对象级的处理比命令方式更高级。当你执行一个命令时,你有可能可以也有可能不可以直接操作你所选取的对象。因为你必须依赖于AutoCAD的对象选择机制。对象不是模糊不清的。当你专门指定一个对象时,对你要操作的对象,它是很清楚的。


对象级别的处理在VisualLISP也可实现。使用VisualLISP中的(VL)扩展,你能改变对象的参数且在需要时调用对象的方法。你不得不使用对象引用,它可以从已有的实体名或直接产生的对象中生成,在大多数情况下,一个有经验的AutoLISP程序员不需要使用这些对象,但迟早它们会派上用场。


VisualLISP的另一优点是比VBA更接近AutoCAD系统。VBA不是由AutoCAD产生的,它是在其它的环境下同样工作的一个附加的语言,象Microsoft的Word和Excel一样。它也类似于在AutoCAD中用VB(Visualbasic)语言编制程序的方法。VisualLISP仅在AutoCAD里运行,它的优势是软件间有着密切的工作关系。当在命令行里提示用户时,你能发现一个不同点的例子。在VisualLISP里,你可以使用PROMPT或PRINT语句。在VBA里,你必须使用Prompt方法,这是优化对象的一部分,也是绘制对象的一部分,下面的几行代码将对AutoCAD命令行发出一个提示。第一行为VisualLISP语言;第二行用的是VBA。


对于AutoCAD的定制来说,由于AutoLISP语言是以命令的标准建立的,这促进了偏向于支持AutoLISP的尺度。你能使用AutoLISP中带“C:”作为新命令名称的头两个字符的方式来定义函数,该命令就像AutoCAD命令一样使用。“C:”函数被叫做“命令函数”。VBA有宏,你必须从程序管理器里运行宏。从命令提示(或普通的macro菜单)里运行不了宏,这就存在着一个重要问题。用户可以使用AutoLISP启动VBA程序管理,然后以相同的方式执行宏。使用命令行语句时,你应该确信在语句前加了“-”,格式如下:

command“-VBALOAD”“mymacros”“-VBARUN”“mymacro”


如果你未用此负号,将会出现一个对话框,提示用户装载VBA和运行宏。在多数情况下用户并不想出现这个对话框。取而代之的是在命令行装载宏并用一个VBA模块来运行它,这样,首先出现的是在AutoLISP中很强列关注的东西,不再仅仅只是一个倾向。一但一个错误和漏洞发生,就会有其他相关问题出现,这在编程中并不寻常。


另外一点,VBA允许一个经由AutoLISP启动的过程,VBA还有一个反应绘图及同时处理多个图形的优良机制。在VisualLISP里,你能做这些工作,但在VBA里就不是如此容易了。其反应的事物与图形连系在一起,甚至嵌入图形模板中,有多种原因允许你所编程绘制图形。VisualLISP没有一些灵活的运行程序或操作菜单,因此它没有这些能力。VBA与VisualLISP争夺的另一领域为数据种类。VBA的数据种类多于VisualLISP,它包括了一些有用的如Date、Time的数据类型。在VisualLISP里日期和时间是用字符串或是数值存储的。在一张图形里,当你通过系统变量存取系统日期信息时,你会得到纯数字而不是日历天数。

 

在VBA中操作日期和时间是非常容易的,Format函数可以产生几乎任一种描述的格式,你可以用基本的数值来完成比较和区别。你能以某种自定义的格式存储或操作时间信息,方法简单。我听说顽固的AutoLISP程序员声称VBA不支持表处理而LISP支持,这是事实。但VBA不支持Variants类型,Variants与LISP库中的一些数据种类标志十分相似。Variants允许VBA使用不同类型的数据和结构,但不如LISP中的表处理功能强大。表能存储许多种类型的数据且用几行基于MAPCAR、FOREACH、APPLY的代码就可以快速操作它们。但是这些程序设计体系需要时间去掌握,许多程序设计的新手在使用VBA时,将不会遗漏结构的存取。


坦白的说,表处理进程并不像对象操作那样令人感兴趣。在VBA(和VisualLISP)中你能连接其它系统支持的对象。对程序员而言,ActiveX是面向Windows的一个面向对象的过程到过程的通信编程系统,它允许你的VBA程序运行在AutoCAD里,并且可借用Excel或其它一些支持自动操作的程序。因为Excel支持VBA,所以你能在一个Excel工作表中驱动AutoCAD。当你试着思考它时,多自动进程处理有着某些让人敬畏的潜力。

 

话又说回来,这还要依据你所使用的工具而定,学会其一,已可以了,但你会错过向另一个方向发展的时间,这是必然的冲突。第一步,你可能从VBA中学习怎样运行LISP语句或者从VisualLISP中学习运行传统VBA的方法。谁知道下一个将会是什么?

 

哪里开始


为了决定先学哪一个语言,让我们做一些自我评价:如果你很好地了解了AutoCAD的命令并希望自动使用它们,那么VisualLISP将是你的首选;如果你不懂AutoCAD,但你是一名知道对象是如何工作的计算机程序员,你可以学习VBA;如果你是一名C++程序员,你可以通过学习VBA而了解对象集是怎么结合在一起的,然后花一点时间学习ObjectARX(一个DLLs结构的C++库,运行于AutoCAD自身相同的内存映像),在这篇文章中没有讨论ObjectARX,是因为你必须使用外部的C++编译器,且必须从Autodesk公司获得开发工具包,而AutoCAD2000中直接配有VisualLISP和VBA编译器。


给想学习AutoCAD的人最后一点建议


寻找那些有范例的书和杂志。

上网查询这些内容,甚至是例子。VisualLISP和VBA的在线帮助常令初学者感到困惑,因为一些函数从VBA中引证,而另一些从VisualLISP中引证。无论你使用哪一个语言,你都有可能有从其它语言里偶然得到帮助的好机遇,因为它们是相关的。因此我强烈推荐看一本或两本书。你有大量选择的自由,多存些好书。存在着许多选择,每一个都有其优点。无论你先学什么,在某一时间你应当学习所有的东西,为了去追寻更多的知识,这就意味着要不停的编制程序。BillCramer——有着二十多年的运用CAD/CAM/CAE系统的经验,对于代码的更新,可到下载处下载。

最新文章推荐

软件开发暂无最新文章查看全部推荐文章>

推荐人才