




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VBA对AutoCAD二次开发开发背景 因为公司电脑的layout设计部门人员不能将元器件转换为3D,故而每次需要结构工程师自行将元器件的2D图处理后导入三位软件进行3D绘制,在处理二维工程图时,出现很多小圆弧,小圆弧处于不同的层,依次删除小圆弧很繁琐造成工作效率低下。 故而通过创建一个菜单栏,将删除小圆弧的程序全部放入一个菜单之下,实现自动化操作操作的流程如下:连接AutoCAD获取AutoCAD的菜单组链接创建菜单创建菜单项将菜单显示到AutoCAD中编辑圆弧删除程序。详尽代码一、在VB中连接AutoCAD的。在VBA中则可以跳过此步Application 对象是VB 应用程序与AutoC
2、AD 之间链接的关键。将Application 对象与AutoCAD 链接是为AutoCAD 二次开发 应用程序的第一步工作。当AutoCAD 运行时,GetObject 函数返回Application 对象,否则发生一个错误,这时Err对象的基础属性就会被赋值为一个非零值,可以利用一个错误陷井进行处理。如果AutoCAD 没有运行,可以使用CreateObject 函数强迫AutoCAD 启动。Dim myapp As Object On Error Resume Next如果已有CAD程序打开,则直接获得CAD的控制句柄 Set myapp = GetObject(, AutoCAD.Ap
3、plication) myapp.Visible = True如果没有CAD程序打开,则通过开启cad软件获得CAD的控制句柄 If Err 0 Then Set myapp = CreateObject(Autocad.Application) myapp.Visible = True End If注意: GetObject(, AutoCAD.Application)里面的那个逗号的来源请仔细阅读VB程序帮助里面的解释二、创建菜单(在VBA环境下)取得AutoCAD的菜单组的链接 代码如下: Public Sub menu() Dim my_菜单组 As AcadMenuGroup Set
4、 my_菜单组 = ThisDrawing.Application.MenuGroups.Item(0)创建一个名为乾康工具集的新菜单 Dim my_弹出式菜单 As AcadPopupMenu Set my_弹出式菜单 = my_菜单组.Menus.Add(乾康工具集) Dim my_弹出式菜单项 As AcadPopupMenuItem Dim openMacro As String Set my_弹出式菜单项 = my_弹出式菜单.AddMenuItem(0, 删除圆及圆弧, -VBARUN DEL_ACR + chr(13) ) my_菜单组.Menus.InsertMenuInMen
5、uBar 乾康工具集, 6取得AutoCAD的菜单组的链接创建一个名为删除圆及圆弧的下拉菜单项的注:无论是使用InsertMenuInMenuBar方法还是InsertInMenuBar方法来加载菜单,被加载菜单都必须要有菜单项 End Sub -VBARUN DEL_ACR + chr(13) 在宏名称之前添加 -VBARUN是因为从AutoCAD 工具栏或菜 单运行 VBA 宏。Macro 特性必须设置为等于 -VBARUN filename.dvb!modulename.macroname 其中,filename 是工程文件的名称,modulename 是包含要运行的宏的模块名称,而ma
6、croname 是要运行的宏的名称。只有在当前 AutoCAD 任务中未加载文件时,才需要文件 名。如果提供了文件名,将会加载该文件。取得AutoCAD的菜单组的链接菜单组,个人认为AutoCAD中就只有一个菜单中取得AutoCAD的菜单组的链接注:图示解释相关名称菜单,需要使用PopupMenus里面的Add方法来创建新的菜单这些都是工具条菜单项,需要使用PopupMenu里面的AddMenuItem方法来创建新的菜单 下图中的“文件”“编辑”“视图”“帮助”这些合起来就是菜单组(MenuGroup) 而“文件”“编辑”“视图”这些单独描述就是弹出式菜单(PopupMenu) 再则,标注底下
7、的“快速标注”“线性”“对齐”等,就是特定菜单里面的菜单项(PopupMenuItem)三、自动加载VBA工程文件(在VBA环境下)此处不需要用代码来实现,仅仅需要进入Autocad进行一次设置即可,操作参见下图A、 点击 “工具” 选项B、选择工具下拉菜单中的”加载应用程序”选项,在弹出的对话框中点击”内容”选项C、在接下来的对话框中点击”添加”,来添加需要自动加载的VBA工程文件四、自动运行VBA工程文件中自己设置的宏文件(在VBA环境下),本例中的宏名称menu首先介绍一下Autocad帮助文件中关于自动运行宏文件的说明用户可以自动运行VBA工程文件中的任何宏,方法是从 AutoCAD
8、启动功能(如 acad.lsp)中使用 VBARUN 的命令行版本调用。例如,要自动运行名为 drawline 的宏,请先将 drawline 宏保存在VBA工程文件中。然后调用记事本程序新建一个txt文档 并在 文档中中创建(或附加)下面几行:(defun S:STARTUP() (command _-vbarun drawline)然后将text文档的文件名(包含后缀名)改为acad.lsp将宏命名为 AcadStartup,这样在加载 VBA 时就会自动运行该宏。当加载 VBA 时,将自动执行 acad.dvb 文件中所有名为 AcadStartup 的宏。依据以上信息,结合本例,本文要
9、自动运行的宏名称问menu。操作如下:A、在电脑桌面上,新建一个文本文档,名称为acad.lsp。B、双击文件,在文档中写入如下代码,然后保存(defun S:STARTUP() (command _-vbarun menu)C、将acad.lsp放入Autocad安装目录下的Support文件夹内即可 5、 编写删除圆弧的宏程序(在VBA环境下),本例中的宏名称DEL_ACR()初略思路为程序运行过程中,弹出窗体文件,由用户输入需要删除的圆弧的半径范围然后创建一个选集,将符合条件的圆弧加入选集,然后执行选集里面的元素删除代码即可 A、首先创建一个窗体对象,其中textbox1和textbox
10、2的文本控件用于传递圆弧的半径范围Textbox2文本输入框Textbox1文本输入框窗体的名称定为”删除元和窗体”在设定号圆弧半径值后,调用hide命令隐藏窗体Private Sub CommandButton1_Click() 删除圆弧窗体.HideEnd SubPrivate Sub UserForm_Initialize() TextBox1.Text = 0.01 TextBox2.Text = 0.25End Sub B、编写删除圆弧的代码,依次创建选择集名称,设置过滤器规则。给选集增加对象,遍历选集对象执行删除命令。窗体显示,用于设置圆弧半径Public Sub DEL_ACR(
11、) 删除圆弧窗体.Show创建圆弧选择集。VBA对象浏览器中有Item和Add的详细说明。使用时注意Auotcad对象的层级关系 On Error Resume Next Dim my_圆弧选择集 As AcadSelectionSet Set my_圆弧选择集 = ThisDrawing.SelectionSets.Item(圆弧集) my_圆弧选择集.Delete Set my_圆弧选择集 = ThisDrawing.SelectionSets.Add(圆弧集) Dim FilterType(6) As Integer Dim FilterData(6) As Variant Filter
12、Type(0) = -4 FilterData(0) = = FilterType(3) = 40 FilterData(3) = Val(删除圆弧窗体.TextBox1.Text) FilterType(4) = -4 FilterData(4) = = FilterType(5) = 40过滤器列表中的逻辑运算符也由 -4 组代码表示,运算符以小于号开始 ()。 FilterData(5) = Val(删除圆弧窗体.TextBox2.Text) FilterType(6) = -4 FilterData(6) = AND my_圆弧选择集.SelectOnScreen FilterType, FilterData使用for循环函数遍历选择集里面的对象进行删除 Dim i As Integer For i = 0 To my_圆弧选择集.Count - 1 my_圆弧选择集.Item(i).Delete Next my_圆弧选择集.DeleteEnd Sub注:在Autocad中选择集删除的方式对比RemoveItems 方法从选择集中删除一个或多个项。删除的项仍然存在于图形中,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省稽阳联谊学校2025年4月高三联考数学试卷(含答案)
- 《人生的意义在于奉献》课件
- 《演讲的艺术》课件
- 受弯构件的其他构造要求钢筋混凝土结构课件
- 短期合同续签建议
- 铁路班组管理S班组凝聚力训练课件
- 讨论照明电路能否采用三相三线制供电方式不加零线会不会出现问
- 网格桥架安装施工方案
- 铁路客运站车无线交互系统客运管理部分课件
- 大学生职业规划大赛《视觉传达设计专业》生涯发展展示
- 任务三家庭清扫有工序(教学课件)二年级下册劳动技术(人美版)
- 电商订单处理流程优化计划
- 建筑工程检测行业市场现状分析及未来三到五年发展趋势报告
- 高炉水渣基础知识
- 肿瘤标志物的试题及答案
- 烟草行业网络安全体系建设
- 2025年中考地理二轮复习:中考地理常见易混易错知识点与练习题(含答案)
- 硫酸使用安全培训
- 政务服务窗口培训课件
- 2025年湖南湘潭高新集团有限公司招聘笔试参考题库含答案解析
- 2024年02月福建2024年兴业银行福州分行金融科技人才招考笔试历年参考题库附带答案详解
评论
0/150
提交评论