您好,欢迎来到哗拓教育。
搜索
您的当前位置:首页AutoCAD开发工具综述

AutoCAD开发工具综述

来源:哗拓教育
机械  2001年第28卷增刊                                                                              .9.   

AutoCAD 开 发 工 具 综 述

王会刚,刘学江

(河北唐山高等专科学校机械系,河北 唐山 063000)

摘 要:综合分析了AutoCAD的几种开发工具及其特点,并提供了部分简单实例代码,使从事AutoCAD开发的人员对AutoCAD的开发工具有一个全面的认识。

关键词:AutoCAD;二次开发

随着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具有如下特点:

(1)AutoLisp语言是一种以解释方式运行于AutoCAD内部的解释性程序设计语言。

(2)AutoLisp没有语句概念或其他语法结构,程序非常简明。它的所有成分都是以函数形式给出的。执行AutoLisp程序就是执行一些函数,然后再调用其他函数。

(3)AutoLisp把数据和程序统一表达为表结构,故可把程序当作数据来处理,也可把数据当作程序来执行。

(4)AutoLisp语言中的程序运行过程就是对函数的求值过程,在对函数求值的过程中实现函数的功能。

(5)AutoLisp语言的主要控制结构采用递归方式。递归方式的使用,使程序简单易懂。

VisuaLisp是AutoLisp的发展,它利用可视化的编程环境为学习减小难度。它的特点可以归纳出十几条,但基本上是可视化与Autolisp的结合,不再列出。

这里给出用AutoLisp绘制键槽的一个小程序,可以看

2 ADS(AutoCAD Development System)开发系统

ADS是从AutoCADR11开始引入的基于C语言开发应用程序的系统。ADS不是C语言的一个子集,也不是基于C而编制的专用语言(如Microstation的MDL),但它包括了C的全部功能。它对开发人员C语言要求较高。C是编译型语言,功能强大,因此ADS很轻易地克服了AutoLisp所固有的许多缺点而具有速度快,安全性高的特点。ADS不包含于AutoCAD内部,而是作为一组AutoLisp外部函数由AutoLisp解释器装入、解释并请求AutoCAD运行。其特点如下:

(1)ADS程序是一个可执行文件,需要通过AutoLisp和AutoCAD进行通讯。

(2)ADS程序更“绝缘”,ADS程序是一系列的过程,程序崩溃并不一定导致AutoCAD系统崩溃(尽管并不总是如此)。

(3)ADS程序是不可重复加载的。

(4)ADS程序的运行过程类似于宏(macro)。ADS中的函数(如ads_command)以及与AutoLisp的通讯使ADS程序的工作过程类似于自动作用的宏。

出其简明性:

(defun C:LWX() (setq a (getreal ”a=”)) (setq b (getreal ”b=”))

(setq p0 (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))))) (setq 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 “l” p2 p3 “c”) )

执行这段程序,输入a,b,r的值,即可绘出键槽。

.10.                                                                            机械  2001年第28卷增刊   

(5)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。它的特点是很明显的:

(1)ARX程序在很多方面与ADS程序和AutoLisp程序都不相同。最重要的一点是,ARX程序实质上是一个动态链接库(DLL),它和AutoCAD共享地址空间并且直接和AutoCAD进行通讯。在ARX中,每个命令都有的入口。ARX程序还可以创建新的类(class),这些类可以为其他程序所共享,从而充分利用面向对象的编程的优点。ARX程序创建的实体和AutoCAD的内在实体几乎是完全等同的。

(2)对于需要经常和AutoCAD通讯的应用程序来说,ARX程序比ADS程序运行速度更快,这里的运行速度主要指是访问AutoCAD数据库的速度。但ARX更”脆弱”,ARX程序和AutoCAD共享进程空间,ARX程序崩溃通常会导致AutoCAD系统的崩溃。

(3)相比之下,ARX程序是比宏更基本的程序。主程序(AutoCAD)可调用每个由ARX程序注册的命令。

(4)ARX程序具有ADS程序和AutoLisp程序所不具备的访问和控制AutoCAD的能力。ARX程序可以监控和处理AutoCAD各种事件,可以定义AutoCAD命令,包括可以透明执行的命令。这些命令可以像AutoCAD自身的命令一样被AutoLisp和ADS所调用。

(5)ARX提供了面向对象的编程技术,面向对象的编程技术已经成为软件开发的主流技术。ARX可充分支持C++,充分支持面向对象编程技术。

(6)对于ARX编程,Autodesk公司建议使用Visual C++4.2及以上版本的开发环境,这一点对于语言的学习要求较高。这里给出直线绘制函数的部分代码:

void myLine(AcGePoint3d,AcGePoint3d Pt2) { AcDbLine * pline=new AcDbLine(Pt1,Pt2); AcDbBlockTable * pBlockTable;

AcdbCurDwg()->getBlockTable(pBlockTable,AcDb::kForRead);

AcDbBlockTableRecord * pBlockTableRecord; pBlockTable->getAt(ACDB MODEL_SPACE pBlockTableRecord,

AcDb::kForWrite); pBlockTable->close(); AcDbObjectld lineld;

pBlockTableRecord->appendAcDbEntity(lineld,pline);

pBlockTableRecord->close(); pLine->close();}

4 VBA(Visual Basic for Application)和VB

作为从AutoCADR14之后提供的二次开发工具VBA(VB),使渴望CAD编程的人有一个更好的选择,用户不必学习ADS,ARX和AutoLisp就可以用VBA(VB)来开发AutoCAD。Autodesk公司从R14开始内置了VBA开发工具,同时提供了适于VBA(VB)开发的ActiveX Automation对象模型。VBA(VB)的主要特点如下:

(1)VBA最早是内嵌在Office97中的一种编程语言,它易学易用,功能强大。所以Autodesk公司从R14之后把它也嵌入了AutoCAD中。

(2)VBA(VB)可以利用ActiveX Automation提供的接口访问和控制AutoCAD所有图形对象和非图形对象,并且可以访问这些对象的方法和属性。

(3)VBA(VB)数据类型丰富、界面友好。 (4)VBA是内嵌在AutoCAD中的一种编程语言,对平台有依赖性,但VB对此有改善。

(5)正如ADS需要C语言做基础一样,VBA(VB)开发AutoCAD也必须以熟悉VB语言为前提。

这里同样给出一段直线的绘制程序。用VBA编制如下:

Dim stpt, enpt As Variant Dim prompt1, prompt2 As String Dim startpoint(1 To 3) As Double Dim endpoint(1 To 3) As Double Dim lineobj As Acadline prompt1 = NL & \"起点:\" prompt2 = NL & \"终点:\"

stpt = ThisDrawing.Utility.GetPoint(, prompt1) enpt = ThisDrawing.Utility.GetPoint(stpt,

prompt2)

startpoint(1) = stpt(0) startpoint(2) = stpt(l)

(下转第12页) .12.                                                                                机械  2001年第28卷增刊           和高效率。也有利于经销商避免车辆积压加快资金周转。当然,在初期由于厂家生产能力未能完全达标,难以满足用户需求造成购车者从订购到提车的等待时间长,甚至出现了“抄车”等非正常现象,损害了部分消费者的利益。但应看到,这是由生产力不足造成的,而非制度本身的原因。 3.1.3  突出销售的服务特色 

“服务”在新的市场中不仅仅是服务,它已超出了其自身的含义,成为产品品牌的一部分。在我国国产车当中,奥迪A6、别克以及本田在这方面可算是先驱者。凡到过其特约销售店的人一定会对其优雅的购物环境留下良好的印象。从服务项目来看,他们提供的是整车销售、零部件销售、维修及信息反馈四位一体的服务方式;从服务宗旨来看,他们遵从的是“以人为本”的服务精神,以客户为中心,从“卖车”变为“帮顾客买车”,从顾客的角度出发,提供客户所需要的车型,让顾客买到满意的车的同时也享受到高品质、高档次的服务。在客户选车时,会由经过专门训练的销售人员进行车型知识、使用知识的介绍和演示。上海通用更由于产品谱系全、配置差异大,而创新性地提出了一种“顾问式”的销售服务。即根据用户的基本需求和使用特点推荐相应的车型及配置,提供完全个性化的服务。 3.2  连锁经营 

连锁经营具有规模优势、分工优势和信息优势。规模优势是连锁经营的主要优点。就连锁企业整体而言,通过大量进货、大量销售,以降低成本、少流通、优服务、高质量赢得客户;就各分店而言,其陈设的商品或提供的服务均非常

(上接第10页) 

startpoint(3) = stpt(2) endpoint(1) = enpt(0) endpoint(2) = enpt(l) endpoint(3) = enpt(2) 

Set lineobj=ThisDrawing.ModelSpace.AddLine (startpoint, endpoint)  

 用VB对AutoCAD开发与VBA的主要区别是当前图形对象的引用方法不同。VB中对象的获得要使用Getobject( )和CreatObject(  )函数,从而有效地启动和切换AutoCAD窗口,具体代码如下: 

Public acadDoc As Object Public ModSpace As Object Public acadApp As Object On Error Resume Next  ’出错处理 Set acadlApp=Get Object  (, “AutoCAD.Application”) If  Err Then 

WTO的到来虽会给中国的汽车销售业带来了不小的冲击,但同时也将刺激中国疲软的市场。汽车企业一方面要抓管理、抓人才,提高全员素质,迎头赶上;另一方面要抓质量、抓服务、抓宣传,树立品牌大旗。现代企业要有新的经营思想、远见的经营眼光,才能在WTO的巨浪中存留下来。

   Err.Clear   Set 

acadlApp=CreateObject( “AutoCAD.Application”) 

If Err Then 

MsgBox Err.Description Exit sub End If     End If 

AcadApp. Visible=True 

Set acadDoc=acadApp.ActiveDocument Set ModSpace=acadDoc.ModelSpace 

接下来绘制直线的代码与VBA基本相同,只要把ThisDrawing换成acadDoc即可。 

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

丰富、齐全,顾客在这里能一次性完成相关消费。分工优势。工业生产已走向高度的专业化分工,连锁店将专业化分工引入商业经营。分工使企业的各岗位专业性增强。这样一方面提高了连锁店的管理效率,另一方面使得汽车服务的技术水平和整体形象在不断改进中维持一个高水准。信息优势。连锁店一般通过计算机网络实现信息管理,各分店与总部之间的计算机连网后能对各种商业信息进行收集、加工、存储、传递和反馈。

3.3  开拓网络销售以及与银行或信贷公司合作,开展汽车信贷服务 

专营店、3S店以及连锁店都是有形商店,目前,随着计算机网络的发展,出现了一种新的经营模式——网络销售。虽然网络销售早在80年代就已经进入某些领域,但在汽车销售上的应用却是近几年间才发展起来的。网络销售可以使销售环节更加简化,从而提高了效率,进一步降低了成本。WTO协议之后,中国将对外国汽车信贷公司敞开大门。这类公司进入中国,其专业经验正好可以推动中国的汽车市场,刺激中国汽车的消费。 4  结束语 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo2.com 版权所有 湘ICP备2023021991号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务