网通访问 |电信访问 | 网络测速 | 联系管理员 |安全退出论坛,保护账号安全!
 21 12
发新话题
打印

AutoCAD二次开发语言及工具介绍

AutoCAD二次开发语言及工具介绍

AutoCAD荣登全球绘图软件的龙头宝座,主要是因为它具有开放的体系结构。它允许用户和开发者采用高级编程语言对其进行扩充和修改,即二次开发,能最大限度地满足用户的特殊要求。AutoCAD第一版于1982年11月由AutoDESK公司推出,目前大家广泛使用的是AutoCAD 2000或2002,最新版本是AutoCAD 2004,其二次开发语言及工具也在不断地涌现,本文做了一些介绍。

1 AutoLISP

AutoLISP的全名是LIST Processing Language,她出现于1985年推出的AutoCAD R2.18中,是一种嵌入在AutoCAD内部的编程语言,是LISP原版的一个子集,她一直是低版本AutoCAD的首选编程语言。它是一种表处理语言,是被解释执行的,任何一个语句键入后就能马上执行,它对于交互式的程序开发非常方便。其缺点是继承了LISP语言的编程规则而导致繁多的括号。

3 ADS

ADS的全名是AutoCAD Development System,它是AutoCAD的C语言开发系统,ADS本质上是一组可以用C语言编写AutoCAD应用程序的头文件和目标库,它直接利用用户熟悉的各种流行的C语言编译器,将应用程序编译成可执行的文件在AutoCAD环境下运行,这种可以在AutoCAD环境中直接运行的可执行文件叫做ADS应用程序。ADS由于其速度快,又采用结构化的编程体系,因而很适合于高强度的数据处理,如二次开发的机械设计CAD、工程分析CAD、建筑结构CAD、土木工程CAD、化学工程CAD、电气工程CAD等。

4 ObjectARX

ObjectARX是一种崭新的开发AutoCAD应用程序的工具,她以C++为编程语言,采用先进的面向对象的编程原理,提供可与AutoCAD直接交互的开发环境,能使用户方便快捷地开发出高效简洁的Auto CAD应用程序。ObjectARX并没有包含在AutoCAD中,可在AutoDESK公司网站中去下载,其最新版本是ObjectARX for AutoCAD 2000,它能够对AutoCAD的所有事务进行完整的、先进的、面向对象的设计与开发,并且开发的应用程序速度更快、集成度更高、稳定性更强。ObjectARX从本质上讲,是一种特定的C++编程环境,她包括一组动态链接库(DLL),这些库与AutoCAD在同一地址空间运行并能直接利用AutoCAD核心数据结构和代码,库中包含一组通用工具,使得二次开发者可以充分利用AutoCAD的开放结构,直接访问AutoCAD数据库结构、图形系统以及CAD几何造型核心,以便能在运行期间实时扩展AutoCAD的功能,创建能全面享受AutoCAD固有命令的新命令。ObjectARX的核心是两组关键的API,即AcDb(Auto CAD数据库)和AcEd(Auto CAD编译器),另外还有其它的一些重要库组件,如AcRX(Auto CAD实时扩展)、AcGi(Auto CAD图形接口)、AcGe(Auto CAD几何库)、ADSRX(Auto CAD开发系统实时扩展)。ObjectARX 还可以按需要加载应用程序;使用ObjectARX进行应用开发还可以在同一水平上与Windows系统集成,并与其它Windows应用程序实现交互操作。

5 VisualLISP

VisualLISP已经被完整地集成到AutoCAD 2000中,她为开发者提供了崭新的、增强的集成开发环境,一改过去在AutoCAD中内嵌AtuoLISP运行引擎的机制,这样开发者可以直接使用AutoCAD中的对象和反应器,进行更底层的开发。其特点为自身是AutoCAD 2000中默认的代码编辑工具;用它开发AutoLISP程序的时间被大大地缩短,原始代码能被保密,以防盗版和被更改;能帮助大家使用ActiveX对象及其事件;使用了流行的有色代码编辑器和完善的调试工具,使大家很容易创建和分析LISP程序的运行情况。在VisualLISP中新增了一些函数:如基于AutoLISP的ActiveX/COM自动化操作接口;用于执行基于Auto CAD内部事件的LISP程序的对象反应器;新增了能够对操作系统文件进行操作的函数。

6 VBA

VBA 即Mcrosoft office中的Visual Basic for Applications,它被集成到AutoCAD 2000中。VBA为开发者提供了一种新的选择,也为用户访问AutoCAD 2000中丰富的技术框架打开一条新的通道。VBA和AutoCAD 2000中强大的ActiveX自动化对象模型的结合,代表了一种新型的定制AutoCAD的模式构架。通过VBA,我们可以操作AutoCAD,控制ActiveX和其它一些应用程序,使之相互之间发生互易活动。

TOP

笔者在AUTOCAD中编辑大量图形时,发现仅用AUOTCAD本身提供的命令,效率实在太低,故编写系列批量处理程序以提高工作效率、工作质量。


1.批量修改POLYLINE的线宽(CH_w):
  我们知道编辑一条POLYLINE的线宽可以通过Pedit命令来完成,如果需要编辑多条POLYLINE时还使用Pedit命令则不但需要选择目标,还要输入线宽,实在有点不方便,而且还可能漏选。其实编写个小小的LISP程序便可一次性完成。程序CH_W.LSP如下:

  (DEFUN C:CH_W( / wid ent_ss n_ss ent_n j ent_a)

     (PRINC "\n请选择目标(W C WP CP F)")

     (SETQ ENT_SS (SSGET) WID (GETREAL"\n请输入线宽<0.3>:"))

     (if (= wid nil) (setq wid 0.3))

     (IF (/= ENT_ss nil)

       (PROGN

         (SETQ N_SS (SSLENGTH ENT_SS)  J 0)

         (REPEAT N_SS

       (SETQ ENT_N (SSNAME ENT_SS J) ent_a (cdr (assoc 0 (entget ent_n)))

                   J  (1+ J))

          (if (or (= ent_a "POLYLINE") (= ent_a "LWPOLYLINE"))

  

            (COMMAND "PED99v" ENT_N "w" wid "" COMMAND))

         );ENDREP

       );ENDPROGN

     ) ;ENDIF

  ) ;enddefun

2. 批量打印出图(Mplot)
  在AUTOCAD中用PLOT命令每次只能打印一张图纸,如果在一个图形文件内有多张大小一样的图纸成纵向排列,间距M_d=500mm。通过Mplot只需调试一张,便可打印所有图纸。程序如下:

  (defun c:Mplot()

    (setq p_1 (getpoint"\n\tFirst CORNER:")

       P_2 (getPOINT"\n\tOther CORNER:")

       n (getint"\n\t总张数:<1>"))

    (if (= n nil) (setq n 1))

    (setq m_d 500)

   (REPEAT n

       (command"plot" "w" P_1 P_2 "n" COMMAND)

TOP

点坐标查询
    “id”命令用于查询指定点的坐标值。该命令的调用方法为:
    工具栏:“Inquiry(查询)”→
    菜单:【Tool(工具)】→【Inquiry(查询)】→【ID Point(点坐标)】
    命令行:id
    使用“id”命令后AutoCAD将给出指定点的X、Y和Z坐标值。
    说明 “id”命令可透明地使用。
距 离 查 询
8.2.1 距离查询的功能和使用
    “dist”命令用于计算空间中任意两点间的距离和角度。该命令的调用方法为:
    工具栏:“Inquiry(查询)”→
    菜单:【Tool(工具)】→【Inquiry(查询)】→【Distance(距离)】
    命令行:dist(或别名di)
8.2.2 距离查询命令详解
    调用“dist”命令后,根据提示分别指定第一点和第二点,查询结果包括表8-1中所示各项。
表8-1 DIST命令查询内容

项目

含义

Distance(距离)

两点之间的三维距离

Angle in XY Plane

(XY平面中倾角)

两点之间连线在XY平面上的投影与X轴的夹角

Angle from XY Plane(与XY平面的夹角)

两点之间连线与XY平面的夹角

Delta X(X增量)

第2点X坐标相对于第1点X坐标的增量

Delta Y(Y增量)

第2点Y坐标相对于第1点Y坐标的增量

Delta Z(Z增量)

第2点Z坐标相对于第1点Z坐标的增量

    说明 “dist”命令可透明地使用。
    专家指定 系统变量DISTANCE中存储了“dist”命令最后一次的测量结果。
面 积 查 询
8.3.1 面积查询的功能和使用
    AutoCAD中的面积查询命令可以计算一系列指定点之间的面积和周长,或计算多种对象的面积和周长。此外,该命令还可使用加模式和减模式来计算组合面积。
    “area”命令的调用方法为:
    工具栏:“Inquiry(查询)”→
    菜单:【Tool(工具)】→【Inquiry(查询)】→【Area(面积)】
    命令行:area(或别名aa)
8.3.2 面积查询命令详解
    AutoCAD通过两种形式来使用“area”命令,(如图8-1所示)。
    (1) 调用“area”命令后,根据提示指定一系列角点,AutoCAD将其视为一个封闭多边形的各个顶点,并计算和报告该封闭多边形的面积和周长。
    (2) 调用“area”命令后,根据提示某个对象,AutoCAD将计算和报告该对象的面积和周长;可被“area”命令所使用的对象包括圆、椭圆、样条曲线、多段线、正多边形、面域和实体等。

TOP

 注意 在计算某对象的面积和周长时,如果该对象不是封闭的,则系统在计算面积时认为该对象的第一点和最后一点间通过直线进行封闭;而在计算周长时则为对象的实际长度,而不考虑对象的第一点和最后一点间的距离。
    在通过上述两种方式进行计算时,均可使用“加(Add)”模式和“减(Subtract)”模式进行组合计算。
    (1) Add(加):使用该选项计算某个面积时,系统除了报告该面积和周长的计算结果之外,还在总面积中加上该面积。
    (2) Subtract(减):使用该选项计算某个面积时,系统除了报告该面积和周长的计算结果之外,还在总面积中减去该面积。
    例如图8-2中所示,图A中在加模式下选择对象一,在减模式下选择对象二,则总面积为对象一和对象二之间部分。图B中分别在加模式下选择对象一和对象二,则总面积为面积一和面积二之和。
 专家指点 系统变量AREA存储由“area”命令计算的最后一个面积值。系统变量PERIMETER存储“area”、“dblist”和“list”命令计算的最后一个周长值。
质量特性查询
8.4.1 质量特性查询的功能和使用
    AutoCAD中的质量特性查询命令可以计算并显示面域(Region)或实体(Solids)的质量特性,如面积、质心和边界框等。关于实体请参见第22章。
    该命令的调用方法为:
    工具栏:“Inquiry(查询)”→
    菜单:【Tool(工具)】→【Inquiry(查询)】→【Region/Mass Properties(质量特性)】
    命令行:massprop
8.4.2 质量特性查询命令详解
    调用“massprop”命令后,根据提示可指定一个或多个面域对象,报告结果包括表8-2中所示各项。
表8-2 MASSPROP命令查询内容

TOP

请问如果,没有封闭曲线的话,但是不全是直线,还有曲线包围的,有什么命令可以点击图形就可以得出他的面积!

TOP

自己写程序处理呗,今天没时间上传,如果需要该程序可发邮件给俺,xbbcad@126.com,免费哦~

TOP

好文章,谢谢楼主,收藏了!

TOP

好文章,谢谢楼主

TOP

回复:

发贴心情
请问如果,没有封闭曲线的话,但是不全是直线,还有曲线包围的,有什么命令可以点击图形就可以得

先将封闭曲线做成面域,用测量面积工具就可以了

TOP

谢谢

TOP

我还刚学,好多看不懂哦

TOP

收到
认知是一种乐趣
http://www.5cax.cn/?fromuid=16783   5维网
http://www.jxcad.com.cn/?u=873406  中国机械CAD论坛

TOP

 请教楼主!!!!

批量打印出图(Mplot)
  我在AUTOCAD中用PLOT命令每次只能打印一张图纸,如果在一个图形文件内有多张大小不一样的图纸,排列也不一样,间距不一样。怎样打印所有图纸????,

如果有结果,请发电邮给我:YANGZHIPING7745@SINA.COM

TOP

我是新手.我才从学校毕业,搞设计要求高不 

TOP

二次开发应该怎么学啊?

TOP

不是很实用!
不过也顶下

TOP

回复 13楼 的帖子

你这个就要麻烦些,需要抓取你的图框,上面那个程序是不行的。
请熟悉模具的朋友多多交流

TOP

偶能问个问题吗?别人传给偶的图纸上标注和文字都是炸开了的,乱码!!怎么把它给串起来?谢谢!!!   偶的邮箱是(kh0773@163.com)   再次谢谢了!!!!

TOP

正在学习中,不过好多不懂.

TOP

这些个功能一般的外挂插件上都有了,没什么,不过老兄精神可佳
靠,有空去模具论坛学点先进的东西
http://www.zrle.com.cn/?fromuid=907
别做井底之蛙 !!!

TOP

 21 12
发新话题