VBA开发手册第一章VBA入门了解嵌入和全局VBA工程AutoCADVBA工程是代码模块、类模块和窗体的集合,它们组合起来以执行给予的功能。
工程可保存在AutoCAD图形中,或作为独立的文件保存。
嵌入工程是保存在AutoCAD图形中。
当包含有这些工程的图形中AutoCAD打开时,他们可以自动地装载,这种方法可以很方便地分发工程给用户。
嵌入工程也有它的极限,它不能打开或关闭AutoCAD图形,那是由于他们的函数只存在于工程所在的文档中。
使用嵌入工程不需要在运行程序之前查找并装载工程文件。
这时用户不必去记住在打开图形之前装载工程,这就是自动操作的一个很好的例子。
全局工程保存在独立的文件中,它更加通用,因为他们能在AutoCAD图形中运行,也能打开、关闭AutoCAD图形,但它在图形打开时不能自动装载。
用户必须知道他们所需要的宏包含在哪个工程文件中。
然而,全局工程非常容易与其它使用者共享,它可以将通用的宏做为很好的库而存在。
举个例子,你保存在一个工程文件中的宏是有关多个图形的材料清单。
这个宏可以在工作周期的末期由管理员运行,这样就可以收集到所有图形的信息。
AutoCADVBA工程与VisualBasic工程在二进制结构上是不兼容的。
然而,其中的窗体、模块和类可以通过在VBAIDE环境中使用输入和输出VBA命令来在工程之间进行转换。
关于VBAIDE的更多信息,可以查看“用VBAIDE编辑工程”用VBA管理器组织工程你可以使用VBA管理器查看装载在当前AutoCAD进程的所有VBA工程。
VBA管理器一个AutoCAD工具,它允许你装载、卸载、保存、创建、嵌入和分离VBA工程。
CAD中的VBA简介当用VBA开发基于AutoCAD的应用程序时,几乎总是在重复下面的几种工作:(1)创建和编辑实体。
作为计算机设计软件,AutoCAD最主要的工作时完成设计目标并为下一阶段的实际制造提供参考。
图纸仍然时其主要的工作产品,因而大部分的二次开发应用程序最终都要将结果用图形实体表现出来,这时AutoCAD二次开发的一个基础。
(2)和用户交互。
应用程序本身可以通过窗体或者命令行完成和用户交互。
(3)利用队形特性来组织实体。
AutoCAD作为一种CAD软件,其内在的特点决定了所有的图形实体不具有属性特征。
也就是说,如果绘制一条直线来作为一条道路,在AutoCAD中是无法标识出他是一条道路的,通常的解决方法是创建一个名为“道路”的图层,然后将所有的代表道路的线都放在这个图层中统一管理。
(4)处理图形文件,在文件之间交换数据。
在进行设计是,把所有的图形元素放在一个图形文件中并不总是个好主意,最常见的后果就是图形文件太大导致操作起来太慢。
解决这个问题的办法就是按某种法则将图形元素分布到几个图形文件中,在需要的时候交换图形文件之间的数据。
(5)视图管理。
在AutoCAD中绘图时,为了便于计算和观察图形,人们总时会很频繁地改变视图,列如缩放、平移或改变视点。
而在开发VBA应用程序时,这方面的要求相对来说会低一点,一般只需在创建实体之后给出一个合适的观察角度即可。
(6)文字。
在AutoCAD的基本图形元素中,文字是比较简单的一个,但是在实际使用中它的可变性最大。
列如,不同类型的说话需要不同的文字样式,还有一些特殊的符号以及行为公差都是通过文字来表现的。
(7)管理块的属性。
块是将若干个图形对象定义成一个组,在需要的地方可以多次引用它。
这带来两个好处,一是减小图形的尺寸,二是修改起来方便,只需要修改块的定义便可以更新所有引用。
CAD命令如果拿到是1:1的总图,你想变成1:500。
步骤如下:1:打开所有图层。
输SCALE比例缩放命令,全选图。
在回车确认,出现“指定基点”时,输0,0,0回车确认。
出现“指定比例因子”时输500。
好了!这样大功告成。
就变成了1:500的图了。
坐标位置不会变。
摘要利用计算机及其图形设备帮助设计人员进行设计工作。
简称cad。
在工程和产品设计中,计算机可以帮助设计人员担负计算、信息存储和制图等项工作。
在设计中通常要用计算机对不同方案进行大量的计算、分析和比较,以决定最优方案;各种设计信息,不论是数字的、文字的或图形的,都能存放在计算机的内存或外存里,并能快速地检索;设计人员通常用草图开始设计,将草图变为工作图的繁重工作可以交给计算机完成;由计算机自动产生的设计结果,可以快速作出图形显示出来,使设计人员及时对设计作出判断和修改;利用计算机可以进行与图形的编辑、放大、缩小、平移和旋转等有关的图形数据加工工作。
cad能够减轻设计人员的计算画图等重复性劳动,专注于设计本身,缩短设计周期和提高设计质量。
本课题简单介绍了CAD技术在机械方面的应用、其发展现状和趋势,以及常用的紧固件产品。
它以AutoCAD为开发平台,以VBA为开发工具,实现了紧固件设计智能化,为工程设计人员提供高效率的设计工具。
AutoCAD中用VBA进行二次开发论文:AutoCAD中用VBA进行二次开发在工程测量中的应用摘要:用VBA在AutoCAD平台上进行二次开发,创建非常好的应用程序,让那些绘制重复的测量绘图工作能自动执行,帮助我们自动地高效率地完成绘图任务。
笔者应用生产实用的二个例题来说明AutoCAD中用VBA进行二次开发在工程测量中的应用。
VBA是VisualBasicforApplications的英文缩写,是由Microsoft创建的,它是一个功能强大的定制程序开发工具,用来自动执行任务的一个编程环境。
VBA为AutoCAD的二次开发提供类似VisualBasic(VB)语言所拥有的功能,引入了对象的程序设计环境,为开发者提供了用来创建图形用户界面(GUI)的可拖拉工具和用来与AutoCAD对象交互的编程语言。
工程技术人员绘制图形时,也许会重复地一遍遍地执行着相同的绘图任务。
如在地下管线测量任务时,一条街道上存在着具有各种不同属性的管线(通讯管线、军用光缆、上水管线、污水管线等),测量人员要用全站仪将成千上万的各种管线的特征点坐标测量出来,在AutoCAD上将这些具有相同属性的管线点连接起来绘制成综合管线图。
用手工在AutoCAD上连接这些特征点绘制成管线图,那是一项乏味的、重复的、极低效率的工作,而且会由于绘图人员的工作疲劳和疏忽产生错误。
如果我们的工程技术人员可以使用VBA在AutoCAD平台上进行二次开发,根据管线绘图任务定制应用程序,就可以帮助我们自动高效率地完成管线绘图任务。
1.acad_colordlg函数语法(acad_colordlgcolornum[flag])功能及参数此函数将会显示一个标准的AutoCAD对话颜色选则窗口。
colornum是一个从0~256的数字。
其中,0将代表BYBLOCK。
256则代表BYLAYER。
如果flag参数为nil,则将解除BYBLOCK与BYLAYER两按钮的功能。
若flag被设为一非nil的值或不加,则BYBLOCK与BYLAYER两个按钮将被激活。
acad_colordlg函数将返回用户所选择的颜色号码。
不过,如果用户取消了这个对话框,那么acad_colordlg函数将返回nil。
范例(acad_colordlg3)将表示要提示用户选择一个颜色,但缺省值是3(绿色)。
2.acad_helpdlg函数语法(acad_helpdlghelpfiletopic)功能及参数此函数将激活一求助功能。
此外部定义函数已被内置的函数help所取代。
范例help函数。
3.acad_strlsort函数语法(acad_strlsortlist)功能及参数此函数将按字母顺序来对一表内的字符串做排序。
list将是一个您要对其做排序的表。
如果list参数是无效的或是硬件上已无足够的存储空间来执行排序,acad_strlsort函数将返回nil。
CAD二次开发技术介绍-工程摘要:本文对CAD技术中的二次开发所需的语言及工具介绍归纳,得出了一些有用的结论,对于了解CAD二次开发技术的发展及其如何适应具有一定的意义关键词:CAD二次开发技术;AutoLISP1.前言AutoCAD荣登全球绘图软件的龙头宝座,主要是因为它具有开放的体系结构,。
它允许用户和开发者采用高级编程语言对其进行扩充和修改,即二次开发,能最大限度地满足用户的特殊要求。
AutoCAD第一版于1982年11月由AutoDESK公司推出,目前被大家广泛使用的,最新版本是AutoCAD2010,其二次开发语言及工具也在不断地涌现由于大量的应用领域提供了特有的几何问题,对于这些问题必须建立有效的算法,画出更精确的图形,这就是孕育CAD的二次开发,AutoCAD的二次开发主要涉及以下内容:(1)编写各种用户自定义函数并形成若干LISP、ARX、VLX或ADS文件,以及一些DCL文件。
(2)建立符合自己要求的菜单文件,一般可在AutoCAD原菜单文件内添加自己的内容,对于AutoCAD2000版本还可增加部分菜单文件,然后经交互方式加入到系统中去。
(3)在系统的ACAD.LSP或类似文件中加入某些内容以便进行各种初始化操作,如在启动时立即装入一些文件等。
(4)通过系统对话框设置某些路径。
这些操作在程序开发成功后向其它AutoCAD系统上安装应用,特别是需要大批安装时,需要进行很多文件检索、内容增删、子目录创建、文件拷贝、系统设置等繁琐工作,如能令上述工作全部自动进行,使整个二次开发程序在无人干预的情况下嵌入系统,将大大提高工作效率。
2.CAD二次开发所涉及到的技术介绍2.1AutoCAD二次开发的内容和工具AutoCAD二次开发的主要目的是提高专业应用领域的工作效率,为专业绘图建立标准,并使常用的或重复的任务自动化等。
CADVBA命令大全AActivate将指定的图面设成作用中。
Add建立一个成员物件并将它加入适当的集成中。
Add3DFace以给定的四个顶点建立一个3DFace物件。
Add3DMesh以给定的M与N方向的点数以及点在M与N方向的座标值建立任意形式的3D网面。
Add3DPoly依给定的座标值阵列建立3D聚合线。
AddArc以给定的弧的中心点、半径、起始角度以及结束角度建立一个弧。
Addttribute以指定的性质在给定的位置建立属性定义。
AddBox建立边缘和wCs轴平行的3D实体方块。
AddCircle以给定的中心点及半径建立一个圆。
AddCone建立一个基底位於WCSs之XY平面上的3D实体圆锥体。
AddCustomObject建立Custom物件.AddCylinder建立一个基底是在wcs之XY平面上的3D实体圆柱体。
AddDim3PointAngular使用三点来建立角度标詿。
AddDimAligned建立一个对齐式标詿物件。
AddDimAngular建立弧、二条线或圆的角度标詿。
AddDimDiametric以给定的直径上的二点以及引线的长度建立圆或弧的直径标詿。
AddDimOrdinate以给定的定义点、及引线端点建立座标式标詿。
AddDimRadial在给定位置建立选取之物件的径向标往。
AddDimRotated建立旋转的线性标詿。
Addlipse以给定的中心点、主要轴上的一个点及半径比,在wCS的XY平面上建立一个椭圆。
AddElipticalCone以给定的Center.MajorRadius、MinorRadius以及Height在wcs的XY平面上建立一个3D实体帕圆圆锥体。
AddEdlipticalCylinder以给定的Center.MajorRadius.MinorRadius以及Height在WCS的XY平面上建立一个3D实体椭圆圆柱体。
AddExtrudedSolid以给定的Profile、Height以及TaperAngle建立挤出实体。
CAD次开发语简介CAD次开发,有很多不同层次的语和库可供选择。
先是VisualLisp和AutoLisp。
Lisp是门历史悠久的函数式编程语,很多概念和C这种过程式语不样,据说他在智能等有泛的应。
CAD引了这种语,给他添加相应的函数库,就成了命令使的AutoLisp。
在此基础上再增加关于对话框和窗界的库,就是VisualLisp,简称VL。
VL在CAD中可以视为CAD命令的整合,是脚本语,且由CAD程序提供了编写环境。
因此上相当容易,便于编写,调试也很便。
不过由于是脚本语,就有两缺陷。
第是速度,当程序规模很或是操作的对象数量过多时,你会明显感觉到迟钝。
第是功能。
如果有什么功能是命令本做不到的,那VL也做不到。
譬如关于定义对象、内存操作、数据传递之类,往往要通过别的法解决。
所以我个认为Lisp适于把现有命令组合成个新命令来使,尤其是存在量重复操作的时候,来做批处理常好。
唯让感到不适的是,由于Lisp语本的语法要使量的圆括弧,当嵌套层次较深时,往往会在括弧的配对上发问题。
第类是使ActiveX和VB。
ActiveX是Microsoft提出的组使COM(ComponentObjectModel,部件对象模型)使得软件部件在络环境中进交互的技术集。
ACAD使Acitvex把数据传送给ActiveX程序,程序处理后再传回ACAD。
这个过程有点像浏览器浏览动态站。
AcitveX与具体的编程语关,因此理论上说可以任何种持他的语来编写,但通常家选择VB语。
VBA是VB的特殊形式,他将VB植到应程序中。
ACAD包含的VBA能够和CAD共享地址空间,独的VB则需要通过接完成。
这种法在编写上Lisp复杂,调试也困难。
但速度快,功能更强劲。
但是在某些对速度要求相当的运算和涉及CAD内部的应上仍然会显得不从。
AutoCADVBA二次开发初级教程第一课:入门1.什么是AutocadVBA?VBA是VisualBasicforApplications的英文缩写,它是一个功能强大的开发工具,学好VBA可以成倍甚至成百、成万倍提高工作效率,在工作中,有很多任务仅用ACAD命令不可能完成的,只要学好VBA就可以做到,相信到时候您一定会得到同事的佩服、老板的器重。
2、VBA有多难?相信大家都知道Basic是的含义。
应该承认,我的水平还不高,错误之处在所难免,如果大家发现错误一定要提出批评,以便及时更正。
3、怎样学习VBA?介绍大家一个学习公式:信心+恒心=开心。
仔细阅读本教程,完成例题,在学习的过程中一定要多思考,多想一些是什么、为什么。
本教程将陆续发布在CAD世界论坛上,您不需要付费就可以学习。
CAD应次开发---VB和VBA开发CAD的知识1、如何在VB中连接AutoCAD。
启动VB,引AutoCAD类型库。
操作步骤:从“程”菜单中选择“引”选项,启动“引”对话框。
在“引”对话框中,选择AutoCAD类型库,然后单击“确定”。
定义模块级变量AutoCAD应程序(acadApp)和当前的档(acadDoc)。
如果AutoCAD正在运,使GetObject函数将检索AutoCADApplication对象。
如果AutoCAD没有运,使CreateObject函数试图创建个AutoCADApplication对象。
如果创建成功,会启动AutoCAD;如果失败,则会发错误。
同时运多个AutoCAD任务时,GetObject函数会返回Windows运对象表中的第个AutoCAD实例。
要显AutoCAD图形窗,需要将AutoCAD应程序的Visible特性设置为TRUE。
使acadDoc变量引当前的AutoCAD图形。
例:DimacadAppAsAcadApplicationDimacadDocasAcadDocumentSubConnectToAcad()OnErrorResumeNextSetacadApp=GetObject(,"AutoCAD.Application")IfErrThenErr.ClearSetacadApp=CreateObject("AutoCAD.Application")IfErrThenEndEndIfacadApp.Visible=TrueSetacadDoc=acadApp.ActiveDocumentEndSub2、如何使VB开发的程序不依赖于AutoCAD的版本。
CAD_VBA_二次开发中的所有方法的中文翻译AActivate激活指定的图形。
Add创建成员对象并将它添加到适当的集合中。
Add3DFace以给定的四个顶点创建3DFace对象。
Add3DMesh以给定的M和N方向上点的数目和坐标创建自由格式的三维网格。
Add3DPoly以给定的一组坐标创建三维多段线。
AddArc以给定的圆心、半径、起点角度和端点角度创建圆弧。
AddAttribute以指定的特性在给定的位置创建属性定义。
AddBox创建边与WCS轴平行的三维实心立方体。
AddCircle以给定的圆心和半径创建圆。
AddCone创建底面在WCS的XY平面上的三维实心圆锥体。
AddCustomInfo添加自定义属性字段到字段现有列表的尾部。
(2005新增)AddCustomObject创建自定义对象。
AddCylinder创建底面在WCS的XY平面上的三维实心圆柱体。
AddDim3PointAngular使用三点创建角度标注。
AddDimAligned创建对齐标注对象。
AddDimAngular创建圆弧、两条直线或圆的角度标注。
AddDimArc创建圆弧的弧长标注。
(2006新增)AddDimDiametric以给定的直径上两个点和引线长度创建圆或圆弧的直径标注。
AddDimOrdinate以给定的定义点和引线端点创建坐标标注。
AddDimRadial在给定位置创建选定对象的半径标注。
AddDimRadialLarge创建圆弧、圆或多段线弧段的折角半径标注。
(2006新增)AddDimRotated创建旋转线性标注。
AddEllipse以给定的中心点、长轴上的点和半径比例在WCS的XY平面上创建椭圆。
AddEllipticalCone以给定的中心点、长轴、短轴和高度创建底面在WCS的XY平面上的三维实心椭圆形圆锥体。
AddEllipticalCylinder以给定的中心点、长轴、短轴和高度创建底面在WCS的XY平面上的三维实心椭圆形圆柱体。
AddExtrudedSolid以给定的剖面、高度和倾斜角度创建拉伸实体。
AddExtrudedSolidAlongPath以给定的剖面和拉伸路径创建拉伸实体。
AddFitPoint将拟合点添加到样条曲线的给定索引处。
AddHatch创建图案填充对象。
(2004修改)AddItems向指定的选择集中添加一个或多个对象。
AddLeader以给定的点坐标创建引线。
AddLightweightPolyline从顶点列表创建优化多段线。
AddLine创建通过两点的直线。
AddMenuItem向弹出菜单添加弹出菜单项。
AddMInsertBlock插入块阵列。
AddMLine从顶点列表创建多面网格。
AddMtext在插入点和边框宽度定义的矩形中创建多行文字图元。
AddObject向命名词典添加对象。
AddPoint在给定的位置创建点对象。
AddPolyfaceMesh从顶点列表创建多面网格。
AddPolyline从顶点列表创建多段线。
AddPViewport以给定中心点、高度和宽度添加图纸空间视口。
AddRaster基于现有图像文件创建新的光栅图像。
AddRay创建通过两个唯一点的射线。
AddRegion从一组图元创建面域。
给定的图元必须构成闭合的共面区域。
AddRevolvedSolid以给定的面域绕轴创建旋转实体。
AddSeparator向现有菜单或工具栏添加分隔符。
AddShape基于给定名称的样板,以给定的插入点、比例因子和旋转角度创建形对象。
AddSolid创建二维实心多边形。
AddSphere以给定的球心和半径创建球体。
AddSpline创建二次或三次NURBS(非一致有理B样条)曲线。
AddSubMenu向现有菜单添加子菜单。
AddTable添加表格到图形中。
(2005新增)AddText创建单行文字。
AddTolerance创建公差图元。
AddToolbarButton将工具栏项目添加到工具栏的指定位置。
AddTorus在给定位置创建圆环。
AddTrace从一组点创建轨迹对象。
AddVertex向优化多段线中添加顶点。
AddWedge以给定的长度、宽度和高度创建边与坐标轴平行的楔体。
AddXLine创建通过两个指定点构造线(无限长线)。
AddXRecord在任何词典中创建扩展记录(XRecord)对象。
AngleFromXAxis获取直线与X坐标轴的夹角。
AngleToReal将角度从字符串转换为双精度实数值。
AngleToString将角度从双精度实数值转换为字符串。
AppendInnerLoop向图案填充中附加内边界。
AppendItems向指定的组中附加一个或多个图元。
AppendOuterLoop向图案填充中附加外边界。
AppendVertex向三维多段线、多段线或多段面网格对象的最后附加顶点。
ArrayPolar以给定的对象数量、填充角度和中心点创建对象的环形阵列。
ArrayRectangular创建对象的二维或三维矩形阵列。
AttachExternalReference将外部参照附着到图形。
AttachToolbarToFlyout将工具栏附着到定义为弹出式的工具栏按钮。
AuditInfo评估图形的完整性。
BBind将外部参照绑定到图形。
Block返回SortentsTable对象的块。
(2005新增)Boolean执行对象与其它三维实体或面域对象之间的布尔运算(并集、交集或差集)。
CCheckInterference检查两实体间的干涉,如果指定创建干涉实体,则由干涉部分创建实体。
Clear清除指定选择集中的所有项目。
ClearSubSelection移去表格中单元格的子选择集。
(2005新增)ClearTableStyleOverrides清除表格样式替换。
(2005新增)ClipBoundary为光栅图像指定剪裁边界。
Close关闭指定的图形或所有打开的图形。
ConvertToAnonymousBlock转换动态块为常规的匿名块。
(2006新增)ConvertToStaticBlock转换动态块为常规的命名块。
(2006新增)Copy在同一位置复制给定对象。
CopyFrom从给定的标注样式、布局或打印配置中复制设置。
(2006修改)CopyObjects复制多个对象(完全克隆)。
CopyProfile复制指定的配置。
(2004新增)CreateTypedArray创建包含一组各种参数的变体。
DDelete删除指定对象或一组保存了的图层设置。
DeleteCellContent删除指定行和列的单元格内容。
(2005新增)DeleteColumns删除表格中的列。
(2005新增)DeleteConfiguration删除视口配置。
DeleteFitPoint删除给定索引的样条曲线拟合点。
DeleteProfile删除指定的配置。
DeleteRows删除表格中的行。
(2005新增)Detach从图形拆离外部参照。
Display切换PViewport对象的显示控制为打开或关闭。
DisplayPlotPreview显示“打印预览”对话框以及指定的部分或完全视图预览。
DistanceToReal将距离从字符串转换为双精度实数值。
Dock将工具栏固定到宿主窗口。
EElevateOrder提高样条曲线的阶数到给定阶数。
EndUndoMark标记操作块的结束。
Erase删除选择集中的所有对象。
Eval计算VBA中的表达式。
Evaluate计算给定的图案填充或引线。
Explode将复合对象分解为子图元。
Export将图形或一组保存的图层设置输出到文件。
(2002修改)ExportProfile输出活动中的配置以便与其它用户共享。
FFieldCode返回包含字段代码的文字字符串。
(2005新增)Float将工具栏设为浮动。
GGenerateLayout生成表格的布局。
(2005新增)GenerateUsageData生成数据指出图层是否在使用中。
(2005新增)GetAcadState获取AcadState对象以便外部进程应用程序监视AutoCAD的状态。
GetAlignment返回行类型的单元格对齐方式。
(2005新增)GetAllProfileNames获取系统所有可用配置的名称。
GetAngle获取指定的角度。
考虑ANGBASE系统变量的设置。
GetAttachmentPoint返回指定行和列的附着点。
(2005新增)GetAttributes获取在块参照中的属性。
GetAutoScale返回指定的行和列是否使用自动缩放比例的值。
(2005新增)GetBackgroundColor返回指定行类型的背景颜色值。
(2005新增)GetBackgroundColorNone返回指定的行类型是否没有背景颜色的值。
(2005新增)GetBitmaps获取用作工具栏项目图标的大或小位图。
GetBlockAttributeValue返回指定单元格的块中所包含的属性定义对象的属性值。
(2005新增)GetBlockRotation返回指定行和列的块的旋转角度。
(2005新增)GetBlockScale返回指定行和列的块的比例因子。
(2005新增)GetBlockTableRecordId返回单元格的块表格记录ID。
(2005新增)GetBoundingBox返回图元对象边框的最大和最小点。
GetBulge获取多段线上给定索引位置的凸度值。
GetCanonicalMediaNames获取指定打印设备的所有可用规范介质的名称。
GetCellAlignment返回指定行和列的单元格的对齐方式。
(2005新增)GetCellBackgroundColor返回指定行和列的单元格的背景真彩色值。
(2005新增)GetCellBackgroundColorNone返回指定的行和列是否无背景颜色。
(2005新增)GetCellContentColor返回指定行和列中内容的真彩色值。
(2005新增)GetCellExtents返回指行和列的单元格区域。
(2005新增)GetCellGridColor返回指定行和列的一个边的格线颜色值。