首页 AutoCAD二次开发

AutoCAD二次开发

举报
开通vip

AutoCAD二次开发AutoCAD二次开发 AutoCAD 二次开发 黄亚平 ,周一飞 () 浙江工业大学 职业技术学院 ,浙江 杭州 310014 摘 要 :在论述 AutoCAD 二次开发重要性的基础上 ,通过实例分析了 VBA 进行 AutoCAD 二次开发的编程原理 。使用 Au2 toCAD 二次开发工具进行计算机辅助设计 ,可制作专业化模块 ,提高自动化程度 ,从而提高工作效率 。 关键词 :二次开发 ;AutoCAD ; 视觉化 Basic 语言应用 ;编程原理 ( ) 中图分类号 : TP391文献标识码 :...

AutoCAD二次开发
AutoCAD二次开发 AutoCAD 二次开发 黄亚平 ,周一飞 () 浙江工业大学 职业技术学院 ,浙江 杭州 310014 摘 要 :在论述 AutoCAD 二次开发重要性的基础上 ,通过实例分析了 VBA 进行 AutoCAD 二次开发的编程原理 。使用 Au2 toCAD 二次开发工具进行计算机辅助 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 ,可制作专业化模块 ,提高自动化程度 ,从而提高工作效率 。 关键词 :二次开发 ;AutoCAD ; 视觉化 Basic 语言应用 ;编程原理 ( ) 中图分类号 : TP391文献标识码 :A文章编号 :1005 - 3751 200303 - 0084 - 04 of AutoCAD Re2expl oitat ion HUAN G Ya2ping ZHOU Yi2fei ( )Professio nal and Technological College of Zhejiang U niversit y of Technology , Hangzhou ZJ 310014 ,China Abstract :Have analysed t he p rogramming p rinciple of using VBA to re2exploitatio n of Auto CAD o n fo undatio n of discussio n t he impo rtance of re2exploitatio n of Auto CAD t hro ugh an example . U sing Auto CAD re2exploitatio n tool to make CAD can get specializatio n mo del ,imp rove auto matio n level ,and raise wo r king efficiency. Key words :re2exploitatio n ; Auto CAD ; VBA ; p rogramming p rinciple AutoCAD 对象模型对象模型用来显示对象间的关系 。在 1 引 言 中定义了 AutoCAD 用于 VBA 对象的所有层次结构 ,如图AutoCAD 是目前在 Windows95/ 98/ 2000/ N T 环境下 (1 所示 图中圆角形状 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示为单个对象 ,方角表示为对象 应用最广泛 、使用人数最多的 CAD 软件 , 但 AutoCAD 提 ) 集。 供给我们的只是一般的通用 CAD 功能 ,如绘图 、编辑 、标 注等 。在进行某一具体项目的设计时 ,如果不使用 Auto2 CAD 的开发工具 , 则在设计完成后要更改一些数据必须 重新绘图 。如果使用 AutoCAD 二次开发工具 , 则用户可 将项目中的计算和绘图过程通过高级语言编制相应的程 序 ,运行该程序则上述计算和设计绘图过程自动完成 ,不 仅大大提高了设计效率 ,而且通过开发工具可定制出满足 行业需要的专业化模块 ,如国内建筑行业的天正 CAD 软 件 、机械行业的大恒 CAD 系统等都是用 AutoCAD 开发工 1 具实现的。因此为了使 AutoCAD 真正适用于某一具体 领域 ,或让其经常完成一些重复性的工作 , 最好利用 Au2 toCAD 的开发工具对其进行二次开发 。 2 用 VBA 进行 AutoCAD 二次开发的编程原理 AutoCAD 开发工具较多 ,现采用从 AutoCAD R14 . 01 图 1 AutoCAD 对象模型( 版开 始 内 置 、能 共 享 AutoCAD 地 址 空 间 的 VBA Visual 2 创建图形对象的常用方法是在图形对象的名称前添 ) Basic for Applications开发工具。VBA 是一个面向对象 加 Add 前缀 ,下面的语句创建 Circle 对象 。 的环境 ,包含不同的对象类 。每一对象类都有自己的一组 属性 ,用来定义对象的形状 ,对象类还有自己的方法 ,用来 () Application. Document s. Item 0. Modelspace . Addcircle 操作该类对象 。任何具有 VBA 功能的应用程序都有一个 Center , Radius 由图 1 可知 ,AutoCAD 的 Application 对象位于对象模 型层级的顶部 ,表示它为当前的 AutoCAD 应用程序的对 象 ,它可以直接或间接地访问模型中的所有对象 。由于每 收稿日期 :2002 - 09 - 16 ’并把它们保存在变量 newblip 和 newcmde 中 一层级只允许是 AutoCAD Application 对象 , 当访问它所)(newblip = ThisDrawing. Get Variable ″blip mode″ 包含的对象时 ,就隐含该应用程序 ,故前面语句中的 Ap2 ()newcmde = ThisDrawin g. Get Variable ″cmdecho″ plication 可以省略 。’将系统变量 blip mode 和 cmdecho 设为 0 , 从而使 blips 和命 Document 集是 Application 对 象 的 下 一 层 级 , 用 于 获 令回显失效 取 AutoCAD 应用程序中当前打开的任何文档 。使用带有 ThisDrawing. Set Variable ″blip mode″, 0 索引值的 Item 方法可以指示 Document 对象在集中的位 ThisDrawing. Set Variable″cmdecho″, 0 ( ) 置 。AutoCAD 提供了两种获取激活 当前文档的方法 : drawground ’调用绘制地面轮廓子程序 通过 Application 对象的 ActiveDocument 属性 ,或使用关键 词 ThisDrawing ,这两条语句是等价的 ,如下所示 。 drawtiles ’调用绘制瓷砖子程序ActiveDocument . ModelSpace . Addcircle Center , Radius ’将系统变量 blip mode 和 cmdecho 设回初始值ThisDrawing. ModelSpace . Addcircle Center , Radius ThisDrawing. Set Variable ″blip mode″, newblip Document 集包含 了 由 AutoCAD 窗 口 模 型 选 项 卡 的 ThisDrawing. Set Variable ″cmdecho″, newcmde 所有对象 组 成 的 ModelSpace 集 , ModelSpace 集 可 以 访 问 Zoo mAll AutoCAD 窗口模型空间中的任何图形对象 , 如直线 、圆 、 End Sub 文本等 。 312 输入用户信息子程序 userinf ormation 作为 Document 对象下层的 Utilit y 对象 ,定义了用户 3 输入方法。用户输入方法在 AutoCAD 命令行中显示提 示并要求输入各种类型的值 。因该应用程序需要输入的 3 用 VBA 设计瓷砖地面值较多 ,故使用 Get Point 方法输入地面的起点 、终点坐标 ; 用 VBA 开发 AutoCAD 应用程序 ,一般先编制解决实 用 GetDistance 方法输入地面的半宽度 ; 用对话框选择瓷 际问题的子程序 ,然后把所有的子程序组合成宏 ,最后运 砖的形状并输入瓷砖的半径 、间距 、边数 , 使输入形式多 () 行宏 。宏是公用 可执行的子程序 ,每一工程通常至少一 样 、方便 。其中 Get Point 方法在命令行中提示用户指定一 个宏 。用 VBA 设计瓷砖地面的目的是为 AutoCAD 开发 个点 ,该方法接受两个参数 ———可选用的参考点和提示字 一个名为 ground 的宏 , 运行该宏时 , 在 AutoCAD 的命令 符串 。 行中输入地面的起点 、终点 、地面的半宽度 ;在弹出的对话 ( )Private Sub userinfor mation ’输入用户信息子程序为瓷砖地 框中选择铺设的瓷砖形状并输入瓷砖的半径 、间距 、边数 ,面获取信息 如图 2 所示 ,程序自动绘出铺满瓷砖的地面 。当需要改变 Di m point3D As Variant Get Point 方法返回’定义存放 瓷砖的形状或瓷砖的半径 、间距等数据时 ,只要再运行一 的坐标的变量为变体变量 次宏即可 ,大大提高了设计效率 。 ( point3D = ThisDrawing. Utilit y. Get Point , ″输入地面的起)点 :″ ( ) ( ) ( ) ( ) startpoint 0= point3D 0: startpoint 1= point3D 1 : ( ) ( )startpoint 2= point3D 2 ( point3D = ThisDrawing. Utilit y. Get Point , ″输入地面的终 )点 :″ ( ) ( ) ( ) ( ) endpoint 0 = point3D 0 : endpoint 1 = point3D 1 : ( ) ( )endpoint 2= point3D 2 ( hwidt h = ThisDrawing. Utilit y. GetDistance startpoint , ″输入 )地面的半宽度 :″ Load f r m- Dialo g 图 2 用户输入对话框( f r m- Dialo g. Show ’显示输入信息的 f r m- Dialo g 窗体 见311 宏的内容 )图 2 单击 AutoCAD‚工具?菜单中的‚宏?———‚Visual Basic ( angle = ThisDrawing. Utilit y. Angle Fro mXAxis startpoint , 编辑器?, 打开 VBA 交互式开发环境 , 在 ThisDrawing 的 ) ’获得地面角度 endpoint 代码窗口中输入名为 ground 的宏代码 ,程序如下 : totalwidt h = 2 3 hwidt h ’计算地面宽度( )Sub ground ( )lengt h = distance startpoint , endpoint distance’调 用 Di m newblip As Variant 函数计算地面长度 Di m newcmde As Variant ( )angp90 = angle + dt r 90 ’调用 dt r 函数计算地面的拐角 userinfor mation ’调用输入用户信息子程序 ( ) angm90 = angle - dt r 90 ’用 Get Variable 方法获 得 系 统 变 量 blip mode 和 cmdecho 的 当前值 End Sub Di m new Point As Variant ’distance 函数计算两点之间的距离 ’用 Polar Point 方法找到从一个基点以给定角度和距离给出 ( ) Function distance startpoint As Variant , endpoint As Variant 的一个点 Di m x As Double , y As Double , z As Double ( ( )( )ThisDrawin g. Utilit y. Polar Point startpoint , x = startpoint 0 endpoint 0 - new Point = ( )( ))y = startpoint 1 - endpoint 1 angm90 , hwidt h ( )( )( )( )z = startpoint 2 - endpoint 2 = new Point 0 polyArray 0 ’地面第一个拐角点 A 的^^ ^ ^ 横坐标 ( ( ( ( ) ( ) ) )() )distance = Sqr Sqr x 2+ y22 z2 + ( )polyArray 1 End Function ( )= new Point 1 ’地面第一个拐角点 A 的纵坐标 ’t dr 函数把角从度转化为弧度 ( )polyArray 8 ( ) ( )Function dt r a As DoubleAs Double = new Point 0 ’多义线的起点 A 和终点 ( ) dt r = a / 180 3 pi 重合形成封闭矩形A ’pi 已在变量声明中用 const pi = 3 . 14159 声明 ( ) ( )polyArray 9= new Point 1 End Function ( new Point = ThisDrawin g. Utilit y. Polar Point new Point , an2 )gle , lengt h 313 绘制地面轮廓子程序 dra wground ( )( )polyArray 2 = new Point 0 ’地面第二个拐角点 B 的 绘制 地 面 的 外 形 轮 廓 可 以 调 用 Add LightWeight 横坐标 Polyline 方 法 , 该 方 法 接 收 一 个 参 数 : 一 个 组 成 多 义 线( )polyArray 3 ( )() = new Point 1 polyline点的数组 。为此必须找出所有组成多义线对象 new Point = 的点 ,并把它们以绘制顺序放入数组中 。该应用程序用到 ( ThisDrawin g. Utilit y. Polar Point new Point , 的多义线所需要的点即为地面的拐角点 。可以使用 Po2 )angp90 , totalwidt h lar Point 方法找到地面的拐角点 ,该方法找到从一个基点 ( ) ( )polyArray 4= new Point 0 ’地面第三个拐角点 C 的2 ( 以给 定 角 度 和 距 离 给 出 的 一 个 点。从 起 始 点 start2 横坐标 ) point开始 ,以逆时针方向找到地面的第一个拐角点 A ,该 ( ) ( )polyArray 5= new Point 1 ( ) 拐角点离起始点距离为一半地面宽度 hwidt h,角度为小 ( new Point = ThisDrawin g. Utilit y. Polar Point new Point , angle () 路角度 angle加 - 90 度 , 即 angm90 弧度的位置 , 如图 3 ( ) )+ dt r 180, lengt h 所示 。 ( ) ( )polyArray 6= new Point 0 ’地面第四个拐角点 D 的横坐标 ( ) ( )polyArray 7= new Point 1 ’调用 AddLight Weight Polyline 方法画出地面轮廓 Set pline = ThisDrawin g. ModelSpace . Ad2 ()dLight Weight Polyline polyArray End Sub 314 绘制瓷砖子程序 dra wtiles 用指定形状瓷砖填充地面的 draw 子程序 ,以一给定 距离沿它的第一个参数确定的地面绘制一行瓷砖 ,并把这 行瓷砖以第二个参数确定的距离垂直于该地面作平行移 动 ,应交错地偏移瓷砖以覆盖更多的地方并获得更好的排 列方式 。draw 子程序通过使用 Polar Point 方法沿着地面 移动在第一个参数中确定的距离 , 找到第一行瓷砖的位 置 。然后 ,子程序再次使用 Polar Point 方法垂直于地面作 偏移 。子程序使用 While 语句连续绘制指定形状瓷砖直 图 3 绘制瓷砖地面原理图到碰到地面的边界为止 。在第一个 While 语句中的 Polar2 假设地面为封闭的矩形 ,则该点为数组 polyArray 中 ( ) 的第一点和最后一点 。用同样的方法可以确定地面的其 Point 方 法 以 两 个 瓷 砖 半 径 t radius 加 一 个 瓷 砖 间 距 余拐角点坐标 , 每调用一次 Polar Point 方法 , 将返回的坐 () t space的距离移动到下一个瓷砖位置 。第二个 While 循 标值存放到 polyArray 数组中 ,当所有的拐角点坐标确定 环接着在该行中以另一个方向绘制瓷砖直到碰上另一边 后 ,调用 AddLight Weight Polyline 画出地面轮廓线 ,其代码 为止 。 如下 : drawtiles 子程序重复调用 draw 子程序以绘制所有的 ( )Private Sub drawground 瓷砖行列 。子程序中的 While 循环沿着地面为每一行调 用 draw 子程序 。相邻两行的瓷砖形成等边三角形 ,如图( ) Di m polyArray 0 To 9As Double ’定义存放拐角点坐标 4 所示 。三角形的边长等于两倍瓷砖半径加一个瓷砖间的数组 Di m pline As AcadL WPol yline draw dist , off set ’调 用 以 指 定 形 状 瓷 砖 填 充 地 面 的 距 。因此 ,运用三角函数知识可知 ,沿地面方向 ,两行之间. draw 子程序 的距离为 AB 乘以 sin60; 奇数行之间的偏移量为 AB 乘 . ( ( ) ( dist = dist + t space + t radius + t radius3 Sin dt r 以 cos60。IF 语句用于每隔一行进行偏移 。如果偏移量 . ( ) ) )60 等于 0 ,则设置为两瓷砖中心距乘以 cos60;如果偏移量不 等于 0 ,则设置为 0 ,因限于篇幅 ,下面只给出 drawtiles 子 If off set = 0 Then 程序代码 。 ( ) ( off set = t space + t radius + t radius 3 Cos dt r ( ) )60 Else off set = 0 End If Loop End Sub 4 结 论 用 VBA 进行 AutoCAD 二次开发可以极大地发挥用 户的编程技巧 , 定制出个性化的 、满足行业需要的 Auto2 CAD 应用程序 。图 4绘制瓷砖原理图 ’绘制瓷砖行列子程序 ( ) Private Sub drawtiles Di m dist As Double 参考文献 : Di m off set As Double 1 王福军 1AutoCAD 2000 环境下 C/ Visual C + + 应用程序开 发教程M 1 北京 :希望电子工业出版社 ,2000 . dist = t radius + t space ’t radius 为瓷砖半径 , t space 为胡 荣 1AutoCAD 2000 开发工具 ———VBA 及 Active X 开 瓷砖间距 2 发 指南 验证指南下载验证指南下载验证指南下载星度指南下载审查指南PDF M 1 北京 :人民邮电出版社 ,1999 . off set = 0 Marion Cot tingham1AutoCAD VBA 从入门到精通M 1 孔 ( )lengt h t radius Do While dist < = - ’lengt h 为地面长度3 祥丰译 1 北京 :电子工业出版社 ,2001 . ( )见图 3 () 上接第 44 页参考文献 : 1 Horst mann C S ,Cornell G. J ava 2 核心技术 ,卷 ?:基础知识 M . 北京 :机械工业出版社 ,20001 4 结束语 2 王克宏 ,董 丽. J ava 技术及其应用M .: 高等教育北京 在 J AVA 虚拟机中 ,一个非顶层内部类的对象存在着 出版社 ,19991 对其外部类的对象的一个引用 ,以致于内部类可以存取外 3 薛 刚 ,刘 禹 ,刘 尧 ,等. J ava 语言及类库详解M .南 部类的成员变量和调用其成员方法 。巧妙地利用这一点 ,京 :南京大学出版社 ,19991 可以大大简化 J AVA 程序的编写 。4 阳 光 ,晓 文 ,鸿 套. J ava 编程实用指南M . 北京 : 国防工业出版社 ,19981 () 上接第 83 页 实现 。除此之外 ,代码也简洁了许多 ,因为第一个方案需(Text : =‘ < content > ’, Replace Wit h : = query1 . fieldbyname ‘con2 要用程序写出一个完整的 Word 文档 ,而第二个方案只是 ) ) tent ’. asst ring; 去调用 Word 服务器作一系列的替换工作而已 。同时效 率也有很大的提高 。 4 结束语 从上可以看出第二个解决方案是极具灵活性的 ,在写 参考文献 : 程序前需要和用户去商定合同中需要程序处理的参数 ,然 Pet rout sos E. Visual Basic 6 从入门到精通M 1 邱仲潘译 1 1 北京 :电子工业出版社 ,1999 . 后 ,将这些参数定义成模板文件中的 TA G , 这样 , 打印程 Miller T , Powell D. Delp hi 3 开发使用 手册 华为质量管理手册 下载焊接手册下载团建手册下载团建手册下载ld手册下载 M . 林君工作室 2 序在用户看来就像是一个接口 ,一个可以替换他所定义的 译 1 北京 :机械工业出版社 ,1998 . TA G 的接口 ,只要接口不变 ,也就是说合同所需的这些参 数不变 ,合同形式的变化可以由用户任意修改模板文件来
本文档为【AutoCAD二次开发】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_769254
暂无简介~
格式:doc
大小:87KB
软件:Word
页数:11
分类:生活休闲
上传时间:2018-09-29
浏览量:45