vba开发cad经验.docx

上传人:b****7 文档编号:23798087 上传时间:2023-05-20 格式:DOCX 页数:30 大小:1.10MB
下载 相关 举报
vba开发cad经验.docx_第1页
第1页 / 共30页
vba开发cad经验.docx_第2页
第2页 / 共30页
vba开发cad经验.docx_第3页
第3页 / 共30页
vba开发cad经验.docx_第4页
第4页 / 共30页
vba开发cad经验.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

vba开发cad经验.docx

《vba开发cad经验.docx》由会员分享,可在线阅读,更多相关《vba开发cad经验.docx(30页珍藏版)》请在冰豆网上搜索。

vba开发cad经验.docx

vba开发cad经验

大家知道什么是宏吗?

说白它就是VBA过程。

看下面的代码:

PublicSubMacroDemo()

  MsgBox"Hello,WelcometoAutoCADVBA!

"

EndSub

这就是宏。

打开CAD输入命令vbaide回车会出现VBA的编辑界面,双击ThisDrawing在右侧的代码区输入上面的代码。

如下图:

然后按F5键会出现宏窗口,如下图:

点击运行,大家看到什么?

这就是一个最简单的一个用VBA对CAD进行二次开发的程序,也就是宏

那什么是VBA呢?

VBA就是VB的一个子集它的全称是VisualBasicForApplication,它具有VB的大部分功能。

既然我们选择了VBA,我们首先要知道VBA能操作CAD里的哪些对象呢?

打开VBAIDE窗口按下F2键会出现对象浏览器。

如下图

库选择AutoCAD,这时下面显示的就是CAD为VBA提供的可操作的对象的类了。

这时有的人因没有基础,所以还是一头雾水,别怕,选中一个类图标后按F1,这时会弹出AutoCADActiveXandVBAReference,选择最上面的一个子项ObjectModel(对象模型),这个就是在CAD里那些对象的关系,如下图:

如果英文不好的话,可以安装CAD2000,它的这个部分是中文的。

为想学好VBA二次开发这个是必需的,而且VBA对Office的二次开发也是这样的。

这个在编程界叫做ActiveX,包括ActiveX控件、ActiveXDLL、和ActiveXEXE

就好比一个程序为其它程序提供的一个后门一样

下面我就给大家讲一下菜单吧。

因为我们用到的其它公司做CAD二次开发的插件,从直观上首先接触的就是它的菜单,刚开始用的时候就是从它的菜单开始接触的。

我经常用到的做菜单的方法有两种,一种是用CAD的菜单文件,另一种就是用VBA代码直接长成菜单。

我先介绍第一种,CAD的菜单文件

它是文本文件,我们用记事本就可打开并编辑它,或者再重新创建一个

说到这里有的人可能要问了,我应该从何处开始入手呢,要怎样做呢?

别急,CAD本身就有现成的供我们参考,就放在CAD的安装文件夹下的Support文件夹内,或者其它插件的文件夹内,找不到可以按F3搜一下,扩展名分别为.mnu.mns,mnc

默认的菜单文件是acad.mnu。

原始ASCII菜单文件,即用户通常编辑或创建的文件。

该文件以查看完整菜单文件的外表特征。

.mnc已编译的菜单文件;一种二进制文件,包含用于定义菜单或其他界面元素的功能及外观的命令字符串和菜单语法。

首次加载MNU文件时,AutoCAD将编译此文件。

.mns源菜单文件;一种与MNU文件相同的ASCII文件,但是不包含注释或特殊格式。

每次菜单文件的内容被更改时,AutoCAD将修改源菜单文件。

.mnr菜单资源文件;一种二进制文件,包含由菜单或其他界面元素使用的位图。

AutoCAD每次编译MNC文件时,均生成菜单资源文件。

.mnt菜单资源文件。

仅在MNR文件无效(例如,只读)时生成该文件。

.mnl菜单LISP文件;包含菜单文件使用的AutoLISP表达式。

当加载与菜单LISP文件具有相同文件名的菜单文件时,AutoCAD会将菜单LISP文件加载至内存。

自己做的.mns的文件内容如下

//

//   AutoCAD菜单文件-C:

\DocumentsandSettings\wuyp\LocalSettings\ApplicationData\Autodesk\AutoCAD2004\R16.0\chs\FD04Menu.mns

//

***MENUGROUP=wyp

***POP1

**WYP

ID_COMPUTE    [富地2004(&C)]

ID_TongXin    [通信...CTRL+SHIFT+A]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/通信.dvb!

Module1.TongXin

ID_WorkAffiliation  [工作联系单...]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/AcadVBA.dvb!

ModWorkAffiliation.WorkAffiliation  

ID_StyleBook    [样本查询...]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/AcadVBA.dvb!

ModStyleBook.StyleBook

ID_DRAW    [->绘图工具]

ID_ZISZERO      [多义线各节点Z轴设为零]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/Z轴为0.dvb!

Module1.SetZIs0

ID_LuoXuanXian    [三维螺旋线...]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/螺旋线.dvb!

Module1.LuoXuanXian

ID_JKX        [<-渐开线齿轮...]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/渐开线.dvb!

jkx.jkx

ID_DesignTools  [->设计工具]

ID_MXB      [导出明细表...]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/AcadVBA.dvb!

ModMXB.mxb

ID_YGXCKDGS      [圆管型材宽度估算...]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/圆管型材宽度估算.dvb!

Module1.YGXCKDGS

ID_BKJQJS    [圆管型材宽度精算...CTRL+SHIFT+S]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/圆管型材宽度精算.dvb!

Module1.BKJQJS

ID_NDJS        [挠度计算...CTRL+SHIFT+C]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/挠度计算.dvb!

Module1.NDJS

ID_BULK1       [体积...CTRL+SHIFT+Z]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/体积.dvb!

Module1.bulk

ID_LianLun      [链轮参数]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/链轮参数.dvb!

Module1.LianLun

ID_YLGBHJS      [压力管壁厚计算...]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/压力管壁厚计算.dvb!

Module1.YLGBHJS

ID_GTBHJS       [缸筒壁厚计算...]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/缸筒壁厚计算.dvb!

Module1.GTBHJS

ID_Bearing    [轴承型号大全...]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/AcadVBA.dvb!

ModBearing.Bearing

ID_LiuLiang      [油缸流量计算]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/流量计算.dvb!

Module1.LiuLiang

ID_YYZHDJGL    [液压站电机功率计算]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/AcadVBA.dvb!

modYYZHDJGL.YYZHDJGL

id_GearMatching    [<-齿轮幅齿数匹配...]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/AcadVBA.dvb!

modGearMatching.GearMatching

ID_CADSysOption[->CAD系统设置]

ID_MButton     [->鼠标中键控制]

ID_MButtonPan       [鼠标中键平移]^C^C_setvarmbuttonpan1

ID_MButtonMenu      [<-鼠标中键菜单]^C^C_setvarmbuttonpan0

ID_ANGDIR      [->设置正角度的方向]

ID_anticlockwise     [逆时针]^C^C_setvarANGDIR0

ID_deasil         [<-顺时针]^C^C_setvarANGDIR1

ID_extendMode    [->隐含边延伸模式]

ID_extend      [延伸(&E)]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/AcadVBA.dvb!

ModExtendMode.extend

ID_NoExtend      [<-不延伸(&N)]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/AcadVBA.dvb!

ModExtendmode.noextend

ID_filedia     [->显示文件对话框]

ID_filediaON       [显示]^C^C_setvarfiledia1

ID_filediaOFF       [<-不显示]^C^C_setvarfiledia0

ID_PROJMODE     [->设置修剪和延伸的当前“投影”模式]

ID_PROJMODE0        [真三维模式(无投影)]^C^C_setvarPROJMODE0

ID_PROJMODE1        [投影到当前UCS的XY平面上]^C^C_setvarPROJMODE1

ID_PROJMODE2        [<-投影到当前视图平面]^C^C_setvarPROJMODE2

ID_RASTERPREVIEW  [->预览图像是否随图形一起保存]

ID_RASTERPREVIEWOFF    [不创建预览图像]^C^C_setvarRASTERPREVIEW0

ID_RASTERPREVIEWON     [<-创建预览图像]^C^C_setvarRASTERPREVIEW1

ID_REPORTERROR     [->寄出错误报告到]

ID_REPORTERRORON    [显示]^C^C_setvarREPORTERROR1

ID_REPORTERROROFF    [<-不显示]^C^C_setvarREPORTERROR0

ID_PICKSTYLE    [->双击鼠标编辑对象]

ID_PICKSTYLE_OK      [使用]^C^C_setvarPICKSTYLE0

ID_PICKSTYLE_NO      [<-不使用]^C^C_setvarPICKSTYLE1

ID_ANGBASE     [基准角置零,图案为Ansi31]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/AcadVBA.dvb!

modCADSysVariant.AngBaseIs0

ID_ZOOMFACTOR     [鼠标辊抡缩放速度...]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/鼠标辊抡缩放速度.dvb!

Module1.SFSD

ID_HPNAME      [设置默认填充图案为ANSI31]^C^C_setvarHPNAMEansi31

ID_CELTSCALE    [设置当前对象的线型比例因子为1]^C^C_setvarCELTSCALE1

    

ID_QLHCHBC   [<-清理、核查、缩放并保存CTRL+ALT+Q]^C^C-purgea*n_audityzoomeqsave

ID_WinOption   [->Windows系统工具]

ID_CALC        [计算器...CTRL+SHIFT+ALT+Z]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/winsystools.dvb!

Module1.calc

ID_Mspaint    [画笔...]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/winsystools.dvb!

Module1.mspaint

ID_CALC1       [实用计算器...]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/winsystools.dvb!

Module1.calc1

ID_ChangeWPaper    [<-更换系统桌面...]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/WallPaperChanger.dvb!

Module1.WallPaperChanger

ID_Tel    [->电话表]

ID_FDTel    [公司电话表...]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/AcadVBA.dvb!

modTel.FDTel

ID_ZHGTel    [<-重工电话表...]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/AcadVBA.dvb!

modTel.ZHGTel

ID_Menu       [->菜单]

ID_Update      [CAD2002菜单更新]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/UpdateFDMenu.dvb!

Module1.Update02menu

ID_Update04     [<-CAD2004菜单更新]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/UpdateFDMenu.dvb!

Module1.Update04menu

***TOOLBARS

**TOOLBARWYP

ID_ToolbarWYP_0[_Toolbar("ToolbarWyp",_Top,_Show,0,2,1)]

ID_OsnapCent [_Button("捕捉到圆心","RCDATA_16_OSNCEN","RCDATA_16_OSNCEN")]_cen

ID_OsnapTang [_Button("捕捉到切点","RCDATA_16_OSNTAN","RCDATA_16_OSNTAN")]_tan

ID_PCCAD_PCZXX_0[_Button("中心线ZX","//Ca.bmp","ZXX.bmp")]^P^C^CPC_zXXT

       [--]

ID_Circle2pt_0[_Button("圆 两点","RCDATA_16_CIR2PT","RCDATA_16_CIR2PT")]^C^C_circle_2p

ID_3dpoly_0  [_Button("三维多段线","RCDATA_16_3DPOLY","RCDATA_16_3DPOLY")]^C^C_3dpoly

ID_Hatchedit_0[_Button("编辑图案填充","RCDATA_16_HATEDI","RCDATA_16_HATEDI")]^C^C_hatchedit

ID_Region_0  [_Button("面域","RCDATA_16_REGION","RCDATA_16_REGION")]^C^C_region

       [--]

ID_Sphere_0  [_Button("球体","RCDATA_16_SPHERE","RCDATA_16_SPHERE")]^C^C_sphere

ID_Extrude_0 [_Button("拉伸","RCDATA_16_EXTRUD","RCDATA_16_EXTRUD")]^C^C_extrude

ID_Revolve_0 [_Button("旋转","RCDATA_16_REVOLV","RCDATA_16_REVOLV")]^C^C_revolve

ID_Slice_0  [_Button("剖切","RCDATA_16_SLICE","RCDATA_16_SLICE")]^C^C_slice

       [--]

ID_Union_0  [_Button("并集","RCDATA_16_UNION","RCDATA_16_UNION")]^C^C_union

ID_Subtract_0 [_Button("差集","RCDATA_16_SUBTRA","RCDATA_16_SUBTRA")]^C^C_subtract

ID_Intersect_0[_Button("交集","RCDATA_16_INTERS","RCDATA_16_INTERS")]^C^C_intersect

ID_FaceExtru_0[_Button("拉伸面","RCDATA_16_EXTRUD","RCDATA_16_EXTRUD")]^C^C_solidedit_face_extrude

ID_Shell_0  [_Button("抽壳","RCDATA_16_SHELL","RCDATA_16_SHELL")]^C^C_solidedit_body_shell

       [--]

ID_Massprop_0 [_Button("面域/质量特性","RCDATA_16_MASSPR","RCDATA_16_MASSPR")]^C^C_massprop

ID_UBBulk_0  [_Button("体积","ICON.bmp","ICON_16_BLANK")]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/体积.dvb!

Module1.bulk

       [--]

ID_2doptim_0 [_Button("二维线框","RCDATA_16_2DOPTIM","RCDATA_16_2DOPTIM")]$M=$(if,$(and,$(eq,$(getvar,tilemode),0),$(eq,$(getvar,cvport),1)),^C^C_shademode,^C^C_shademode_2)

ID_Wireframe_0[_Button("三维线框","RCDATA_16_WIREFRAME","RCDATA_16_WIREFRAME")]$M=$(if,$(and,$(eq,$(getvar,tilemode),0),$(eq,$(getvar,cvport),1)),^C^C_shademode,^C^C_shademode_3)

ID_Hidden_0  [_Button("消隐","RCDATA_16_HIDDEN","RCDATA_16_HIDDEN")]$M=$(if,$(and,$(eq,$(getvar,tilemode),0),$(eq,$(getvar,cvport),1)),^C^C_shademode,^C^C_shademode_h)

ID_Gouraud_0 [_Button("体着色","RCDATA_16_GOURAUD","RCDATA_16_GOURAUD")]$M=$(if,$(and,$(eq,$(getvar,tilemode),0),$(eq,$(getvar,cvport),1)),^C^C_shademode,^C^C_shademode_g)

ID_UBZIs0   [_Button("UserDefinedButton","ICON1286.bmp","ICON_16_BLANK")]^C^C-vbarunF:

/编程/作品/CAD二次开发/二次开发/Vba计算/Z轴为0.dvb!

Module1.SetZIs0

       [--]

ID_Dimlinear [_Button("线性标注","RCDATA_16_DIMLIN","RCDATA_16_DIMLIN")]^C^C_dimlinear

ID_DimUpdate [_Button("标注更新","RCDATA_16_DIMUPD","RCDATA_16_DIMUPD")]^C^C_-dimstyle_apply

       [--]

ID_TbViewpoi_0[_Flyout("视图",RCDATA_16_DDVIEW,RCDATA_16_DDVIEW,_OtherIcon,ACAD.TB_VIEWPOINT)]

ID_ZoomExten_0[_Button("范围缩放","RCDATA_16_ZOOEXT","RCDATA_16_ZOOEXT")]'_zoom_e

       [--]

ID_UserButton_1[_Button("清理、核查、缩放并保存","RCDA0986.bmp","RCDATA_16_BLANK")]^C^C-purgea*n_audityzoomeqsave

       [--]

ID_3darray_0 [_Button("三维阵列","RCDA9985.bmp","RCDATA_16_BLANK")]^C^C_3darray

ID_Mirror3d_0 [_Button("三维镜像","RCDA3513.bmp","RCDATA_16_BLANK")]^C^C_mirror3d

ID_Rotate3d_0 [_Button("三维旋转","RCDA5650.bmp","RCDATA_16_BLANK")]^C^C_rotate3d

***ACCELERATORS

ID_BULK1   [CONT

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 演讲主持

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1