AutoCAD开发工具综述区域

矿山施工设备2020年05月07日

随着CAD技术的发展,CAD领域的支挣软件也越来越多,国内外许多公司相继推出了其主导产品,Autodesk公司是目前世界上比较成功的 CAD领域的开发商,其开发的AutoCAD一直是CAD市场中的主流产品,随着AutoCAD的日益普及,在其上进行二次开发的工具也相继由该公司推出。许多企业购进AutoCAD软件,并非只是用作“代替图板”。只有真正地在其上实现了二次开发,才能充分发挥AutoCAD作用。到目前为止, Autodesk公司提供了4种主要的二次开发工具:AutoLisp(VisuaLisp)、ADS、ObjectARX及VBA(VB)。本文就此向大家分别做一介绍。1 AutoLisp语言Lisp语言是一种表处理语言,是广泛应用于人工智能的语言。 AutoLisp语言完全嵌套在AutoCAD内部,同AutoCAD有机地结合成一体它既具备一般高级语言的基本结构和功能,又具备一般高级语言所没有的图形处理能力AutoLisp可直接调用几乎全部AutoCAD的命令,从而进行AutoCAD的二次开发。利用AutoLisp开发AutoCAD的一个典型例子就是实现参数化绘图的程序设计。AutoLisp具有如下特点:AutoLisp语言是一种以解释方式运行于AutoCAD内部的解释性程序设计语言。AutoLisp没有语句概念或其他语法结构,程序非常简明。它的所有成分都是以函数形式给出的。执行AutoLisp程序就是执行一些函数,然后再调用其他函数。AutoLisp把数据和程序统一表达为表结构,故可把程序当作数据来处理,也可把数据当作程序来执行。AutoLisp语言中的程序运行过程就是对函数的求值过程,在对函数求值的过程中实现函数的功能。AutoLisp语言的主要控制结构采用递归方式。递归方式的使用,使程序简单易懂。VisuaLisp是AutoLisp的发展,它利用可视化的编程环境为学习减小难度。它的特点可以归纳出十几条,但基本上是可视化与Autolisp的结合,不再列出。这里给出用AutoLisp绘制键槽的一个小程序,可以看出其简明性:

(defun C:LWX()

(setq a(getrcal "a="))

(setq b(getreal "b='))

(setq pO(getpoint "Enter start point:"))

(setq r(getreal "r="))

(setq x(car p0) y(cadr p0))

(setq xe(- x (/ a 2.0)))

(setq ye(+ y (sqrt(- (* r r) (*a a 0.25)))))

(sctq ce(list xe ye))

(setq p1(list(- x a) y))

(setq p2(list(- x a)(- y b)))

(setq p3(list x (- y b)))

(command "pline" p0 "a" "ce" ce p1 "1" p2 p3 "c")

)执行这段程序,输入a,b,r的值,即可绘出键槽。2 ADS(AutoCAD Development System)开发系统ADS 是从AutoCAD R11开始引入的基于C语言开发应用程序的系统。ADS不是C语言的一个子集,也不是基于C而编制的专用语言(如Microstation的MDL),但它包括了C的全部功能。它对开发人员C语言要求较高,C是编译型语言,功能强大,因此ADS很轻易地克服了AutoLisp所固有的许多缺点而具有速度快,安全性高的特点。ADS不包含于AutoCAD内部,而是作为一组AutoLisp外部函数由AutoLisp解释器装入、解释并请求AutoCAD 运行。其特点如下:ADS程序是一个可执行文件,需要通过AutoLisp和AutoCAD进行通讯。ADS程序更“绝缘”,ADS程序是一系列独立的过程,程序崩溃并不一定导致AutoCAD系统崩溃(尽管并不总是如此)。ADS程序是不可重复加载的。ADS程序的运行过程类似于宏(macro)。ADS中的函数(如ads_command)以及与AutoLisp的通讯使ADS程序的工作过程类似于自动作用的宏。ADS仍然只能使用传统的C语言进行编程,只能采用传统的结构化编程方式。早期国内常见的应用软件多是用ADS进行开发的,但ADS程序必须经过AutoLisp解释加载,因此ADS的各方面性能受到限制。同时,随着络技术的迅速发展,面向过程的ADS己有些力不从心了,所以,在AutoCADR13中提供了面向对象的开发工具ARX。有关ADS的实例代码,因与ARX类似(比如ADS中的对象名称ads_name就和ARX中的AcDbObjectld是等价的)这里不再给出。3 ObjectARX( AutoCAD Runtime Extension)开发系统近几年广为应用的ObjectARX是从AutoCADR13开始推出的一个全新的面向对象的开发环境,是AutoCAD提供的第一个面向对象的开发工具。它提供了以C++为基础的面向对象的开发环境及应用程序接口,能真正快速访问AutoCAD图形、数据库。ObjectARX支持面向对象编程方法,同时向下兼容ADS。它的特点是很明显的:ARX程序在很多方面与ADS程序和AutoLisp程序都不相同。最重要的一点是,ARX程序实质上是一个动态链接库(DLL),它和AutoCAD共享地址空间并且直接和AutoCAD进行通讯。在ARX中,每个命令都有独立的入口。ARX程序还可以创建新的类(class),这些类可以为其他程序所共享,从而充分利用面向对象的编程的优点.ARX程序创建的实体和AutoCAD的内在实体几乎是完全等同的。对于需要经常和AutoCAD通讯的应用程序来说,ARX程序比ADS程序运行速度更快,这里的运行速度主要指是访问AutoCAD数据库的速度。但ARX更“脆弱”,’ARX程序和AutoCAD共享进程空间,ARX程序崩溃通常会导致AutoCAD系统的崩溃.相比之下,ARX程序是比宏更基本的程序。主程序(AutoCAD)可调用每个由ARX程序注册的命令。ARX 程序具有ADS程序和AutoLisp程序所不具备的访问和控制AutoCAD的能力。ARX程序可以监控和处理AutoCAD各种事件,可以定义 AutoCAD命令,包括可以透明执行的命令。这些命令可以像AutoCAD自身的命令一样被AutoLisp和ADS所调用.ARX提供了面向对象的编程技术,面向对象的编程技术己经成为软件开发的主流技术。ARX可充分支持C++,充分支持面向对象编程技术.对于ARX编程,Autodesk公司建议使用VisualC++4.2及以上版本的开发环境,这一点对于语言的学习要求较高。这里给出直线绘制函数的部分代码:

void myLine(GePoint3d Pt2)

{AcDbLine * pline=new AcDbLine(Pt1,Pt2):

AcDbBlockTable * pBlockTable:

AcdbCurDwg()- getBlockTable(Db::kForRead);

AcDbBlockTableRecord * pBlockTableRecord;

pBlockTable- getAt(ACDB MODEL_SPACE pBlockTableRecord,AcDb::kForWrite);

pBlockTable- close();

AcDbObjectld lineld;

pBlockTableRecord- appendAcDbEntity(lineld,pline):

pBlockTableRecord- closc();

pLine- close();}4 VBA (Visual Basic for Application)和VB作为从AutoCADR14之后提供的二次开发工具VBA(VB),使渴望CAD编程的人有一个更好的选择,用户不必学习ADS,ARX和AutoLisp 就可以用VBA(VB)来开发AutoCAD,Autodesk公司从R14开始内置了VBA开发工具,同时提供了适于VBA(VB)开发的 ActiveXAutomation对象模型。VBA(VB)的主要特点如下:VBA最早是内嵌在Ofice97中的一种编程语言,它易学易用,功能强大。所以Autodesk公司从Rl4之后把它也嵌入了AutoCAD中。VBA(VB)可以利用ActiveX Automation提供的接口访问和控制AutoCAD所有图形对象和非图形对象,并且可以访问这些对象的方法和属性。VBA(VB)数据类型丰富、界面友好。VBA是内嵌在AuLoCAD中的一种编程语言,对平台有依赖性,但VB对此有改善。正如ADS需要C语言做基础一样,VBA(VB)开发AutoCAD也必须以熟悉VB语言为前提。这里同样给出一段直线的绘制程序。用VBA编制如下:Dim stpt, enpt As VariantDim prompt1,prompt2 As StringDim startpoint (1 To 3) As DoubleDim endpoint (1 To 3) As DoubleDim lineobj As Acadlineprompt1 = NL “起点:”prompt2 = NL “终点:”stpt = tPoint(,prompt1)enpt = tPoint(stpt, prompt2)startpoint(1) = stpt(0)startpoint(2) = sptt(1)startpoint(3) = stpt(2)endpoint(1) = enpt(0)endpoint(2) = enpt(1)endpoint(3) = enpt(2)Set lineobj = dLine(startpomt,endpoint)用VB对AutoCAD开发与VBA的主要区别是当前图形对象的引用方法不同。VB中对象的获得要使用Getobject()和CreatObject()函数,从而有效地启动和切换AutoCAD窗口,具体代码如下:Public acadDoc As ObjectPublic ModSpace As ObjectPublic acadApp As ObjectOn Error Resume Next '出错处理Set acadlApp = Get Object(,"plication")If Err earSet =cadlApp=CreateObject("plication")If Err Then

Set acadDoc = tiveDocumentSet ModSpace = delSpace

接下来绘制直线的代码与VBA基本相同,只要把ThisDrawing换成acadDoc即可。总之,通过以上分析可以看出AutoLisp仍然是AutoCAD的基本开发手段,它适十一般开发者用于较为简单交互性程序的开发。ADS将逐步被更为完善的ARX所取代。VBA则成为AutoCAD用户二次开发的另一支生力军。AutoCAD提供的开发手段让各类开发者都能有适合于自己的开发工具。

report AutoCAD开发工具综述资讯由中国机床技术动态频道提供。中国机床专业提供等方面的资讯,是机床商人获得信息的最佳络平台。 更多资讯敬请关注技术动态频道

安徽哪家医院治疗白癜风
小儿呼吸科
60岁男人阳痿治疗偏方都有什么
相关阅读
16岁黄多多分享美照,短发红唇上演侧颜杀,对镜摆拍感受好!

6月23日,洪磊女儿洪;还有在即时通讯跨平台晒出一组美照,特写里的她俊秀...

2023-11-29
2022年东南大学英语语言文学考研经验、参考资料、备考指导

大家好,我是22年上岸华东师范该大专攻法文第二语言古典文专攻的专攻娥。...

2023-11-06
️来自霍格沃茨的趣味魔法编程让应用程序耕于心田,令魔法绽于指尖。影子老师全新力作,众人翘首以待,下周

...

2023-10-23
美国“双雄”崛起!波音星际客船事与愿违对接国际空间站,意味着啥?

国际上太空梭的独立自主性每个人都发觉吧,它的确是造就了生命的奇迹,并...

2023-10-10
Ulster霍尔大学优质课程推荐 BSc Nursing Science (Top-up) & MS

弗莱明所大学(Ulster University)位于苏格兰波斯尼亚和黑塞哥维那尔兰东南部贝...

2023-10-05
【党日活动】外科第二党支部开展“重温参加革命誓词

译者:榆林市儿童医院 胡锦涛指出,“发展近代史是最好的辞典。对我们共...

2023-10-03
友情链接