随着CAD技术的发展
分离设备压滤设备2020年02月17日
随着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(AcGcPoint3d.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- 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 = ThisDrawing.Utility.GetPoint(,prompt1)enpt = ThisDrawing.Utility.GetPoint(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 = ThisDrawing.ModelSpace.AddLine(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(,"AutoCAD.Application")If Err ThenErr.ClearSet =cadlApp=CreateObject("AutoCAD.Application")If Err Then
Set acadDoc = acadApp.ActiveDocumentSet ModSpace = acadDoc.ModelSpace
接下来绘制直线的代码与VBA基本相同,只要把ThisDrawing换成acadDoc即可。总之,通过以上分析可以看出AutoLisp仍然是AutoCAD的基本开发手段,它适十一般开发者用于较为简单交互性程序的开发。ADS将逐步被更为完善的ARX所取代。VBA则成为AutoCAD用户二次开发的另一支生力军。AutoCAD提供的开发手段让各类开发者都能有适合于自己的开发工具。
report AutoCAD开发工具综述资讯由中国机床网技术动态频道提供。中国机床网专业提供等方面的资讯,是机床商人获得信息的最佳网络平台。 更多资讯敬请关注技术动态频道他达拉非药房可以买到吗
不含防腐剂的止咳药好使吗
莱芜白癜风医院咋样
(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(AcGcPoint3d.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- 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 = ThisDrawing.Utility.GetPoint(,prompt1)enpt = ThisDrawing.Utility.GetPoint(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 = ThisDrawing.ModelSpace.AddLine(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(,"AutoCAD.Application")If Err ThenErr.ClearSet =cadlApp=CreateObject("AutoCAD.Application")If Err Then
Set acadDoc = acadApp.ActiveDocumentSet ModSpace = acadDoc.ModelSpace
接下来绘制直线的代码与VBA基本相同,只要把ThisDrawing换成acadDoc即可。总之,通过以上分析可以看出AutoLisp仍然是AutoCAD的基本开发手段,它适十一般开发者用于较为简单交互性程序的开发。ADS将逐步被更为完善的ARX所取代。VBA则成为AutoCAD用户二次开发的另一支生力军。AutoCAD提供的开发手段让各类开发者都能有适合于自己的开发工具。
report AutoCAD开发工具综述资讯由中国机床网技术动态频道提供。中国机床网专业提供等方面的资讯,是机床商人获得信息的最佳网络平台。 更多资讯敬请关注技术动态频道他达拉非药房可以买到吗
不含防腐剂的止咳药好使吗
莱芜白癜风医院咋样
- 上一页:该公司的展位位于5号展馆的77号
- 下一页:[p][-p]在东山钣金企业
相关阅读
-
你就不要这样一来言爱,不要随意让爱潮泛滥
你就绝不就会轻易言爱,绝不就会可任意让爱潮洪水,绝不就会将人类所最值...
2023-09-08
-
受疫情严重影响 郑开、郑焦等C开头的城际列车停运了
大河报·豫录像名记者 王新昌 “郑开城后际快速车为啥停航了?也没见停航...
2023-09-03
-
2022年,十二生肖阳历7月份运势南北向!
2022年,十二如意阴历7年初份吉凶过渡到! 文/易鑫 7年初吉凶丁未——小暑...
2023-08-31
-
“粉红色”别纠“节”
今天下午,988《医生知道》娱乐节目受邀了郑州第三各族人民医院肾上腺乳腺...
2023-08-30
-
惋惜!某设计院停工量产,这个寒冬我们还要熬多久?
近日,小驿从材料学新鲜事公众号获知,北京市某巴洛克式设计院6年初8日发...
2023-08-29
-
沈阳河西区、和平区恢复有关公共场所运营活动
为方便红桥区村民北京市民生活,其他部门登革热预防和城乡发展,确保实现...
2023-08-28