VB与AutoCAD二次开发入门技巧资料_13066-ARX
用VB对AutoC进行二次开发
用V B对A u t o C进行二次开发The Standardization Office was revised on the afternoon of December 13, 2020用VB对AutoCAD进行二次开发|用VB对AutoCAD进行二次开发A utoCAD一直是CAD市场中的主流产品。
随着AutoCAD的日益普及,在其上进行二次开发的工具也不断更新。
从早期的Auto Lisp、ADS、 DCL到现在流行的 Object ARX、ActiveX Automation、Visual Lisp,均可十分方便地对AutoCAD进行二次开发。
本文主要讨论关于运用Visual Basic对AutoCAD基于ActiveX Automation的二次开发技术。
选用 ActiveX 有两个原因,一是因为Visual Basic的普及性与易用性,二是采用这种方法进行二次开发可方便地实现与其它图形软件的接口,如与Solid Works实现实体造型与二维绘图的结合,以及根据用户的特殊需要开发出一定功能的软件。
二、ActiveX Automation技术AutoCAD中的ActiveX Automation是微软公司ActiveX规范的具体应用。
它通过基于ActiveX的自动化对象,为其他应用程序提供了访问AutoCAD内部功能的方法,是AutoCAD 最新的开发接口。
在运行时,AutoCAD与其他应用程序之间的关系是服务器与客户的关系,开发人员使用支持ActiveX规范的编程语言(如VB、Dephi等)能通过访问AutoCAD的对象模型,把AutoCAD的强大功能集成到应用程序中.AutoCAD的对象模型是一种树型结构模型,根为"AutoCAD Application",AutoCAD中的所有对象都是AutoCAD Application的子对象。
图1所示为AutoCAD对象模型的层次结构树,其中父对象与子对象之间的关系并不是对象继承关系,而是包含关系。
关于VB对AutoCAD二次开发学习笔记
关于VB对AutoCAD二次开发学习笔记□By OYLS基于VB对AutoCAD的二次开发,主要是通过运用VB编程对AutoCAD软件中的基本绘图操作进行控制,了解AutoCAD软件中的常用命令。
在编程过程中我们要借助AutoCAD软件中的“帮助文件”,即“AutoCAD开发人员帮助”文档。
一、获取VB对AutoCAD的控制权:先定义变量acadApp,acadDoc:Public acadApp As AcadApplicationPublic acadDoc As AcadDocumentFunction boot_CAD() As BooleanOn Error Resume NextSet acadApp = GetObject(, "AutoCAD.Application")If Err ThenErr.ClearSet acadApp = CreateObject("AutoCAD.Application")If Err ThenMsgBox "您没有安装AutoCAD ,或安装版本错误!", vbOKOnly + vbInformation, "CAD简易绘图系统"boot_CAD = FalseBtOK = FalseExit FunctionEnd IfEnd IfSet acadDoc = acadApp.ActiveDocumentacadApp.Visible = Trueboot_CAD = TrueEnd Function需要说明的是,我们只有先对CAD获取了控制权以后才能有效地运用VB编程方式进行CAD的基本绘图操作。
不然,以后的各种对CAD的操作将无法得以实现。
二、基本绘图思路:先了解所绘对象的基本属性,可以说,也正是由于对象的各种属性才构成了一个特性为一而标准的实体。
对象的属性特点我们可以事先通过CAD帮助文件查找得出。
基于VBA的AUTOCAD二次开发及应用实例
基于VBA的AutoCAD二次开发及应用实例时间:2011-10-0318:25:09来源:作者:1引言AutOCAD2005是AutOdesk公司的系列产品,该软件从其使用和设计思路上都秉承了工程制图人员的绘图习惯,能够非常轻松地绘制出带有平面视图和三维渲染效果的工程图纸,是绘图人员的一个理想工具。
随着CAD基础理论和应用技术的不断发展,对CAD系统的功能要求也越来越高。
因而AutoCAD 不可能完全满足每个用户的具体而特定的要求。
设计人员希望它能从本质上减轻大量简单烦琐的工作量,使他们能集中精力于那些富有创造性的高层次思维活动中。
AutoCAD提供的开放式体系结构允许用户和开发者采用高级编程语言对其进行扩充和修改,即二次开发,能最大限度地满足用户的特殊要求,更方便、更规范、更专业的实现设计和绘图中的应用。
VBA最早是建立在0ffice97中的标准宏语言,由于它在开发方面的易用性及具有的强大功能,许多软件开发商都将其嵌入自己的应用程序中,作为一种开发工具提供给用户使用。
AutOdeSk公司自从Aut0CADRl4.0l版开始,内置了VBA开发工具。
新一代程序开发工具ViSual BaSic,不仅继承了面向对象方法的特性,同时具备可视化程序语言及程序产生器的概念。
VBA(visual Basic For Apphcation)是AutoCAD R12以后推出的一种新的编程环境,提供了以Visual Basic为基础的面向对象的开发特征及程序接口,能真正快速地访问AutOCAD图形数据库,能明显提高软件开发和维护的效率。
2VBA的技术特性2.1VBA开发AUTOCAD的技术特点VBA是微软开发出来的应用程序共享一种通用的自动化语言,它可以使常用的程序自动化,并可以创建自定义的解决方案。
VBA被集成到AutoCAD中,VBA和AutoCAD中强大的Activex自动化对象模型的结合,代表了一种新型的定制AutoCAD的模式构架。
VB与AutoCAD二次开发入门技巧资料_13062-ARX
ARX 程序的装载和卸载---- 1. ARX 程序的装载---- ARX 应用程序的装载有以下几种方法:---- (1)在AutoCAD 启动文件acad.rx 中指定待装入的ARX 应用程序名。
acad.rx 是ASCII 文本文件,每个ARX 应用程序必须单独占一行,AutoCAD 启动时会自动装载该文件中的ARX 应用程序。
另外,应确保$ACAD 路径定义中包括文件acad.rx 的存放目录。
---- (2)用acrxLoadModule() 或AcRxDynamicLinker::loadModule() 函数,在一个ARX 应用程序里装载另一个ARX 应用程序。
这两个函数的原型是:---- int acrxLoadModule(char *moduleName, int printit);---- virtual Adesk::Boolean AcRxDynamicLinker::loadModule (char *fileName, int printIt) = 0;---- 其中各参数含义如下:---- moduleName:待装载的ARX 应用程序名;ARX 应用程序扩展名默认为.ARX,如果不是.ARX,则此处char *moduleName 参数必须包括应用程序扩展名。
---- fileName:含义与上述moduleName 相同。
但是fileName 必须包括待装载的ARX 应用程序的路径和扩展名。
---- printit:取0 则不显示装载结果,取非0 值则显示。
当printit 取非0 值时,如装载成功,则在AutoCAD 命令窗口显示“Runtime Extension is already loaded.",否则,显示“AcRxDynamicLinker failed to load "。
"---- acrxLoadModule() 与AcRxDynamicLinker::loadModule 不同的是:acrxLoadModule() 从$ACAD 定义的AutoCAD 搜索路径自动搜索待装载的ARX 应用程序,并默认ARX 应用程序扩展名为.ARX。
VB与AutoCAD二次开发入门技巧资料_13064-AutoCAD2000
AutoCAD 2000定制开发技术简介及在工程制图中的应用周荣军(辽宁省国土资源规划院遥感所沈阳110031)摘要本文介绍AutoCAD 2000定制开发的必要性、开发工具、定制开发内容和方法,使AutoCAD用户能够定制开发自己的AutoCAD系统,从而使系统更高效,举例说明其在工程制图中的应用。
关键词AutoCAD 2000 定制开发应用0 引言在工程CAD领域中,各种商用CAD系统层出不穷,如Autodesk公司的AutoCAD 系统、Computervision公司的CADDS系统、Dassault公司的Catia系统、EDS公司的Unigraphics系统、HP公司的PE系统、Intergraph公司的I/EMS系统、Matra Datavision公司的Euclid系统、PTC公司的PRO/Engineer系统和SDRC公司的I桪eas系统等等。
由Autodesk公司开发的AutoCAD自20世纪80年代以来一直独领风骚。
成为各工程领域首选的CAD系统,是市场上最流行的PC桟AD系统。
全世界有80个国家的200万人在使用AutoCAD绘制各种各样的图形。
1998年AutoCAD在市场上的占有率达79%,成为事实上的世界范围内的计算机制图标准。
AutoCAD的巨大成功,首先得益于它的开放性,使得第三方很容易开发各种适用的专用软件,给用户带来标准、廉价、方便、高效等益处,从而进一步占领了市场。
用户通过对AutoCAD系统的定制开发,可以结合自己的专业特点,开发属于自己的专用型CAD 系统。
目前,国内开发的工程制图软件大多采用AutoCAD作为其软件支撑平台,进行二次开发而成,为工程设计和制图行业创造了巨大的经济效益和社会效益。
1 定制开发的必要性AutoCAD是目前Windows95/98/nt/2000环境下应用最广泛、使用人数最多的CAD 软件。
但是AutoCAD所提供的只是一般的通用的CAD功能,如造型、编辑、注释等。
VB对AutoCAD的二次开
实验VB对AutoCAD的二次开发一、实验目的了解CAD二次开发的几种形式,掌握VB对AutoCAD进行二次开发,实现参数化绘图的技巧。
二、实验要求1、了解AutoCAD二次开发的基本原理2、掌握运用VB开发界面的方法3、掌握运用VB调用AutoCAD库函数,完成相关功能的方法三、实验步骤1、建立AutoCAD和VB之间的连接启动VB,建立“标准exe”程序,选择菜单“工程”——“引用”,选择“AutoCAD 2004 Type Library”。
2、创建界面3、程序编码1)定义全局变量Dim AcadApp As AcadApplication 'AutoCAD应用程序变量Dim AcadDoc As AcadDocument 'AutoCAD文档变量2)引用AutoCAD应用程序Private Sub Command1_Click()On Error Resume NextIf Err ThenErr.ClearEnd IfSet AcadApp = New AcadApplicationIf Err ThenMsgBox Err.DescriptionExit SubEnd If'设置AutoCAD应用程序参数AcadApp.WindowTop = 0AcadApp.WindowLeft = 400AcadApp.Width = 600AcadApp.Height = 800AcadApp.Visible = TrueAcadApp.Documents.AddSet AcadDoc = AcadApp.ActiveDocumentAcadDoc.WindowState = acMaxCommand4.Enabled = TrueEnd Sub3)参数化绘图Private Sub Command4_Click()'设置新图层Dim layer1 As AcadLayerDim layer2 As AcadLayerSet layer0 = yers.Item(0)Set layer1 = yers.Add("粗实线层")Set layer2 = yers.Add("中心线层")layer1.Lineweight = acLnWt080 '粗实线的线宽layer1.Color = acWhitelayer2.Color = acRedAcadDoc.Linetypes.Load "centerx2", "acad.lin"layer2.Linetype = "centerx2"'输入原始参数Dim Center(0 To 2) As DoubleDim Vert(0 To 7) As DoubleDim L04 As DoubleDim L01 As DoubleDim b As DoubleDim r As Doubleb = Val(Text2.Text): r = Val(Text1.Text) / 2: L01 = r - Val(Text3.Text) L04 = Sqr(r * r - (b / 2) ^ 2)Center(0) = 100: Center(1) = 100: Center(2) = 0'画中心线AcadDoc.ActiveLayer = layer2Dim line1 As AcadLineDim line2 As AcadLine'定义两直线的端点Dim pl1s(0 To 2) As DoubleDim pl1e(0 To 2) As DoubleDim pl2s(0 To 2) As DoubleDim pl2e(0 To 2) As Doublepl1s(0) = Center(0) - r - 1.5: pl1s(1) = Center(1): pl1s(2) = 0pl1e(0) = Center(0) + r + 1.5: pl1e(1) = Center(1): pl1e(2) = 0pl2s(0) = Center(0): pl2s(1) = Center(1) + r + 1.5: pl2s(2) = 0pl2e(0) = Center(0): pl2e(1) = Center(1) - r - 1.5: pl2e(2) = 0Set line1 = AcadDoc.ModelSpace.AddLine(pl1s, pl1e)Set line2 = AcadDoc.ModelSpace.AddLine(pl2s, pl2e)'创建辅助的优化多段线AcadDoc.ActiveLayer = layer1'定义键槽直线端点Dim p1(0 To 2) As DoubleDim p2(0 To 2) As DoubleDim p3(0 To 2) As DoubleDim p4(0 To 2) As DoubleDim angVal As DoubleDim pLine1 As AcadLineDim pLine2 As AcadLineDim pLine3 As AcadLineDim pArc As AcadArcDim pi As Double '定义圆周率p1(0) = Center(0) - b / 2: p1(1) = Center(1) + L01: p1(2) = 0p2(0) = p1(0): p2(1) = Center(1) + L04: p2(2) = 0p3(0) = p1(0) + b: p3(1) = p1(1): p3(2) = 0p4(0) = p1(0) + b: p4(1) = p2(1): p4(2) = 0Set pLine1 = AcadDoc.ModelSpace.AddLine(p1, p2)Set pLine2 = AcadDoc.ModelSpace.AddLine(p1, p3)Set pLine3 = AcadDoc.ModelSpace.AddLine(p3, p4)angVal = Atn((b / 2) / L04)pi = 3.1415Set pArc = AcadDoc.ModelSpace.AddArc(Center, r, pi / 2 + angVal, 2 * pi + pi / 2 - angVal)AcadApp.ZoomExtentsAcadDoc.ActiveLayer = layer0End Sub'查询Private Sub CmdSeek_Click() Dim aVal As Integer 'A值 aVal = CInt(Text1.Text) Text2.Text = GetVal(aVal)End Sub。
autocad二次开发(VBA)就这么简单
autocad二次开发(VBA)就这么简单autocad二次开发(VBA)就这么简单运行autocad,创建一个新文件,Alt+F11(或者在菜单栏点“工具”→“宏”→“Visual Basic 编辑器”),在新出现的窗口菜单栏点“插入”→“模块”,输入下面的代码:Sub 我的第一个程序()Dim 直线1 As AcadLineDim 起点(0 TO 2) As DoubleDim 端点(0 TO 2) As Double起点(0) = 10起点(1) = 20端点(0) = 80端点(1) = 100Set 直线1 = ThisDrawing.ModelSpace.AddLine(起点, 端点)End Sub检查一下,确信没有问题后按F5回到autocad窗口,看见了吗?一条直线,起点坐标(10,20),端点坐标(80,100) 这个程序的第一行里,“SUB”和“()”是必须有的(人家微软就是这么规定的,我也没办法),“我的第一个程序”是这个程序的名字(如果你不喜欢也可以改个别的名字,我无所谓)。
第二行里,“Dim”是定义一个变量,“直线1”是要画的直线的名字(随便改,中英文都行),后面的英文必须有,意思是说:这是一条autocad直线。
第三行里,“起点(2)”是一个数组(因为我要用它给直线赋予起点,所以取了个直观的名字,又因为点的坐标是三维的,所以必须用能容纳三个数据的数组),后面的英文意思是“这个数据是双精度类型”。
第四行和第三行差不多,是用来给直线赋予端点的。
第五行和第六行是分别赋值给起点的x和y坐标(因为起点的z坐标是0,而定义这个数组的时候,默认数据就是(0,0,0),所以就不用管z坐标了)。
第七行、第八行赋值给端点x和y坐标。
第九行画直线,在“当前文件”的“模型空间”“画直线(按起点和端点)”。
第十行,完事了。
有的网友一看见英文,头就会变大。
别怕,如果你是用“复制/粘贴”把这段代码拷贝到VB编辑器里,就不会知道autocad有多么友善。
关于VB对AutoCAD二次开发学习笔记
关于VB对AutoCAD二次开发学习笔记关于VB对AutoCAD二次开发学习笔记□By OYLS基于VB对AutoCAD的二次开发,主要是通过运用VB编程对AutoCAD软件中的基本绘图操作进行控制,了解AutoCAD软件中的常用命令。
在编程过程中我们要借助AutoCAD软件中的“帮助文件”,即“AutoCAD开发人员帮助”文档。
一、获取VB对AutoCAD的控制权:先定义变量acadApp,acadDoc:Public acadApp As AcadApplicationPublic acadDoc As AcadDocumentFunction boot_CAD() As BooleanOn Error Resume NextSet acadApp = GetObject(, "AutoCAD.Application")If Err ThenErr.ClearSet acadApp = CreateObject("AutoCAD.Application")If Err ThenMsgBox "您没有安装AutoCAD ,或安装版本错误!", vbOKOnly + vbInformation, "CAD简易绘图系统"boot_CAD = FalseBtOK = FalseExit FunctionEnd IfEnd IfSet acadDoc = acadApp.ActiveDocumentacadApp.Visible = Trueboot_CAD = TrueEnd Function需要说明的是,我们只有先对CAD获取了控制权以后才能有效地运用VB编程方式进行CAD的基本绘图操作。
不然,以后的各种对CAD的操作将无法得以实现。
二、基本绘图思路:先了解所绘对象的基本属性,可以说,也正是由于对象的各种属性才构成了一个特性为一而标准的实体。
基于VB的AutoCAD二次开发
基于VB的AutoCAD二次开发摘要:Visual Basic是当今世界上最流行的编程语言之一,CAD是目前使用最广泛的绘图软件,本文将在测绘领域,探讨基于Visual Basic对AutoCAD进行二次开发,对外业获取的数据内业进行自动绘图,提高工作效率。
关键词:Visual basic;AutoCAD;ActiveX;CAD二次开发1.引言在使用全站仪的外业测图,如果我们对采集的数据赋予遵循特定规则的简码,用成图软件导入外业数据,然后利用二次开发的软件完成自动绘图,更能提高作业效率。
本文将基于Visual Basic对AutoCAD二次开发一个自动绘图的程序。
2.需求分析需求分析:该程序可以实现“外业测图,内业自动绘图”的功能。
具体是通过导出外业数据,对数据进行读取、分析识别,然后实现在AutoCAD画布上展点,自动绘图。
3.程序的设计程序的设计包括界面和功能设计和数据格式的设计。
3.1界面和功能设计程序Frmbase窗体由一个菜单栏、一个状态栏、一个公共对话框组成。
该程序主窗体frmbase设计如图3.1所示。
图3.1 frmbase窗体设计效果图菜单栏“文件”菜单下有创建新图形文件、打开、保存图形文件、导入DXF文件、导出DXF和BMP文件、关闭图形文件和退出程序这些子菜单。
如图3.2所示。
图3.2 “文件”菜单及其子菜单菜单栏“绘图”菜单下有展点和自动绘图子菜单,而展点可以通过两种数据文件来读取数据,所以展点子菜单下还有两个子菜单。
如图3.3所示。
图3.3 “绘图”菜单及其子菜单3.2数据格式的设计数据格式的设计:文件后缀为*.dat或者*.xls。
第一列是点名,第二列是简码,第三列是AutoCAD中的Y坐标,也是测量坐标系中的X坐标,第四列是测量坐标系中的Y坐标,第五列是高程。
编码规则:以地物名字的中文拼音首字母进行命名,例如井盖的简码为“JG”,平房的简码为“pf”。
图上的地物都是由点状地物、线状地物和面状地物这三种的抽象。
AutoCAD-VBA二次开发初级教程(选做)
AutoCAD VBA二次开发初级教程第一课:入门1.什么是Autocad VBA?VBA是Visual Basic for Applications的英文缩写,它是一个功能强大的开发工具,学好VBA可以成倍甚至成百、成万倍提高工作效率,在工作中,有很多任务仅用ACAD命令不可能完成的,只要学好VBA就可以做到,相信到时候您一定会得到同事的佩服、老板的器重。
2、VBA有多难?相信大家都知道Basic是的含义。
应该承认,我的水平还不高,错误之处在所难免,如果大家发现错误一定要提出批评,以便及时更正。
3、怎样学习VBA?介绍大家一个学习公式:信心+恒心=开心。
仔细阅读本教程,完成例题,在学习的过程中一定要多思考,多想一些是什么、为什么。
本教程将陆续发布在CAD 世界论坛上,您不需要付费就可以学习。
本作者在此郑重承诺:关于本教程中有任何疑问,可以跟贴提问,只要有时间,本人一定会耐心解答。
我不会发到任何人的邮箱中,您自己在论坛上找就可以了,请不要再向我索要这份教程。
4、现在我们开始编写第一个程序:画一百个同心圆第一步:复制下面的红色代码第二步:在模型空间按快捷键Alt+F8,出现宏窗口第三步:在宏名称中填写C100,点“创建”、“确定”第四步:在Sub c100()和End Sub之间粘贴代码第五步:回到模型空间,再次按Alt+F8,点击“运行”Sub c100()Dim cc(0 To 2) As Double '声明坐标变量cc(0) = 1000 '定义圆心座标cc(1) = 1000cc(2) = 0For i = 1 To 1000 Step 10 '开始循环Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10) '画圆Next iEnd Sub也许您还看不懂上面的代码,这没有关系,只要能把同心画出来就可以了,祝您成功。
用VB对AutoCAD进行二次开发
用VB对AutoCAD进行二次开发|用VB对AutoCAD进行二次开发AutoCAD一直是CAD市场中的主流产品。
随着AutoCAD的日益普及,在其上进行二次开发的工具也不断更新。
从早期的AutoLisp、ADS、DCL到现在流行的ObjectARX、ActiveXAutomation、VisualLisp,均可十分方便地对AutoCAD进行二次开发。
本文主要讨论关于运用VisualBasic对AutoCAD基于ActiveXAutomation的二次开发技术。
选用ActiveX有两个原因,一是因为VisualBasic的普及性与易用性,二是采用这种方法进行二次开发可方便地实现与其它图形软件的接口,如与SolidWorks实现实体造型与二维绘图的结合,以及根据用户的特殊需要开发出一定功能的软件。
的自动(如VB的图在启动对象。
EndIf2.Preferences与Document对象与AutoCAD中的Preferences对话框的作用相同,通过Preferences对象可以读取或设置AutoCAD的一些基本设置。
Preferences对象通过Application的Preferences属性返回。
DimAcadPrefasObjectSetAcadPref=AcadApp.Preferences比如,用户可通过Preferences对象进行如下的设置AcadPref.Cursorsize=100AcadPref.DisplayScreenMenu=acTrueAcadPref.DisplayScrollBars=Check1.valueDocument对象表示AutoCAD中中当前打开的文档,对AutoCAD中的任何其它操作都需用到Document对象,该对象可以通过ActiveDocument属性返回。
DimAcadDocasObjectSetAcadDoc=AcadApp.ActiveDocumentAutoDesk公司使用了集合的概念。
基于VBA的AutoCAD二次开发
定 义 菜单 了 ,通过 点击 菜单 运行a da es d ly r 来
实 现具 体程 序 功能 。
D m S S b . be t 定 义 二 级 i u u Me uAs jc n O
菜 单 D m h n tig 定义 宏命 令 i o g Sr As n
h ng o
p
S b n1 d Me utm 1 ” u Me tA d n l ,二级 菜 单名 A . e
S
”
,
h ng o
A
C
由 于S bman) A tC D 动 时 自动 u i( uo A 启 是 运 行 的 启 动 入 口 ,因 此 可 以用 来 加 载 菜 单 和工 具 栏 , 以及 其 他 必 要 在 启 动 时运 行 的 程 序 都 可 以放 在 此 代 码 段 。 比如 图 层 、线 型 、字体 等等 。
基于VB A的Auo AD ̄ 次开 发 tC _ .
饶玉田 莫 华娟 颜 利军
( 船 国 际技 术 中心 ) 广
摘 要 :本 文 主要介 绍 如何 对A t C D 行二 次开 发 ,并针 对广 船 国际实 际设 计应 uoA进 用举 例 介绍 。 关键词 :A t C DV A 二次 开发 实 际应用 u 0 A B
( e u S : TART ( ( O d f n :S UP ) C mma d n
集 成 开 发 环 境 的 语 言 。 由 于 A tC D uo A 2 1 或 以上 版本Auo A 官方 已经不 再 绑 00 tC D 定 安装VB A,因此需 要 安装 独立 的V A 言 B 语 环 境 ,否 则 系 统 自带 , 不 需 要 单 独 安 装
基于VB环境下的AutoCAD二次开发技术
收稿日期:2002209219作者简介:李 超(1977-),男,安徽望江人,在读硕士生. 文章编号:100522895(2003)0320081203基于VB 环境下的A utoCAD 二次开发技术李 超,董继先 (陕西科技大学机电学院,陕西咸阳712081) 摘 要:介绍了用流行的W indow s 应用程序开发工具V isual Basic 语言进行A utoCAD 二次开发的三种技术,以实例详细地阐述了在VB 的环境下开发A utoCAD 的方法。
关 键 词:动态数据交换;对象链接与嵌入;A ctiveX A utom ati on ;A utoCAD ;VB 中图分类号:TH 126.2 文献标识码:B1 引 言作为目前世界上主流的计算机辅助设计软件,A u toCAD 以其强大的通用图形功能广泛地应用于机械、电子、建筑、化工等各个领域。
但是由于其通用性强,从而造成针对某一具体应用的特殊功能较弱,为了克服这一缺点,A u toCAD 为O E M 厂商和最终用户提供了多种二次开发接口,以便用户能随时扩充该软件的功能。
近年来,各行业的工程技术人员都在以A u toCAD 为平台,结合自己的需要,进行CAD 的二次开发。
就目前而言,A u toCAD 二次开发人员大都利用C 语言和A u toL ISP 语言对A uo tCAD 软件包进行开发,而利用VB 语言作为A u toCAD 二次开发工具的并不多,究其原因,主要是因为人们对VB 的强大功能认识不足。
V isual B asic (以下简称VB )是M icro soft 公司推出的面向对象的可视化编程工具。
VB 的特点非常突出,那就是具有快速的程序开发环境,编制程序界面简单,代码的编写量小,用户可以很方便的直接改动界面,所见即所得。
VB 作为二次开发工具,具有语法简单,功能强大,调试方便等特点。
此外,A uo toCAD 自R 14版本起,加入了A ctiveX 自动化服务功能,而VB又是最为常用的支持A ctiveX 技术的开发工具,以它作为开发工具,使A u toCAD 与其他W indow s 程序的数据共享变得非常容易。
VB与AutoCAD二次开发入门技巧资料_13065-AutoCAD
AutoCAD中表格自动化彭德华 工程图纸中经常遇到大量表格填写,例如工程勘察中的成果表、设计的材料表,在AutoCAD中文字处理比较差,用TEXT、DTEXT命令在表格中定位也不方便,填写的表格既不美观,还容易出错。
在一些杂志中有关表格填写程序介绍,但是使用不方便,也不能连续填写多个表格,长距离线路勘察中线转点少则几十个,多则上千,中线数据可由计算直接生成,能否利用中线数据直接填表出图。
利用AutoCAD二次开发,编写中线成果填写程序(zxcg.lsp),改变以往出图工序(填写、校对),大大提高工作效率。
一、程序功能与编写说明 1、本程序具有下列功能: (1)直接在文本编辑器(EDIT、QE、WPS等等)编辑、修改数据,免去AutoCAD文字编辑、修改之不便; (2)可以自动分页,自动填写工程名称、档案号、日期等等; (3)可以自动处理中线成果数据前后的空格,例如: “123123.123”将自动转化为“123123.123”; (4)可以自动识别两种工程名称数据文件; (5)文本状态下数据正确无误,出图前无需在AutoCAD中修改,调图速度和重新成图速度相差无几,可直接保存数据文件,节省磁盘空间。
2、程序说明: 程序利用AutoLISP的计算、判断、字符处理、循环结构以及调用Text命令等功能对读入的数据进行处理后填写,与本程序对应的Zxcg.dwg图形文件含四个表格图块,程序中的有关参数均取决于四个图块。
二、使用说明 1、关于中线成果数据格式: (1)无曲线 第一行,总点数(N) 第二至七行,点名(NAME)、里程(K)、高程(H)、坐标X、Y、转角(B)……重复二至七行(没有数据项用空行代替) (2)有曲线 第一行,总点数(N) 第二至十一行,点名(NAME)、里程(K)、高程(H)、坐标X、Y、转角B,半径R,切线长T、曲线长L、外矢矩E……重复二至十一行(没有数据项用空行代替) 2、关于工程名称数据格式: (1)单标题 第一行,工程名称 第二行,档案号(如测-3777/表,只需输入3777) 第三行,日期(可省略,取当前日期) (2)双标题 第一行,工程名称大标题 第二行,工程名称小标题 第三行,档案号(如测-3777/表,只需输入3777) 第四行,日期(可省略,取当前日期)三、加载及运行{{婓AutoCADR12ㄗ么AutoCADforWindowsㄘ笢ㄛ参Zxcgㄝlsp睿Zxcg ㄝdwg萧探善SUPPORT赽醴翘狟ㄛ蚚扷梓萸恅璃ㄗFileㄘ狟茼蚚最唗ㄗApplicationsㄘㄛ么婓Com珏mandㄩ狟??Appload楼婥Zxcgㄝlspㄛ么婓Commandㄩ狟??ㄗLoad※Zxcg§ㄘ捞褫〔?缀婓Commandㄩ狟??ZX堍俴最唗ㄛ挂最唗蔚笢恅枑尨〔四、结束语 该应用程序提供了两种形式的表格,有兴趣的AutoCAD用户不妨增加几种表格,修改程序中对应的参数即可。
VB与AutoCAD二次开发入门技巧资料_13050-
什么是"ObjectARX"AutoCAD 有几种编程接口,最原始的一种是AutoLISP。
它是一种解释性的编程语言,最初出现于1985年发行的AutoCAD 2.5 版中。
四年以后,在R10中增加了称为ADS的C 语言编程能力。
然后,在R13中又增添了ARX(AutoCAD运行扩展)编程接口,它是新一代的基于C++的应用程序接口,可以为应用程序扩展AutoCAD的功能提供前所未有的能力。
ObjectARX 接口的功能十分强大,R14自身的很大一部分就是用ObjectARX 实现的。
例如,处理光栅图像的子系统就几乎没有向AutoCAD 核心系统增添什么新代码。
其结果是,ObjectARX 使得AutoCAD 成为了一个更加模块化的系统。
需要了解的是,ObjectARX 并没有取代LISP和ADS,在R14中,LISP和ADS仍然存在并有所扩展。
R13中使用的ARX是1996年1月发行的1.1版。
在R14中,通过新的API和其他改进,ARX的功能又有了新的扩充。
它最主要的特点是:14版的ARX与13版中的ARX具有高度的向上兼容关系。
R13上的ARX程序只需要重新编译就可以在R14上运行。
R14中的ARX已经重新命名为ObjectARX, 借此强调这一强有力的编程工具所具有的面向对象的基本特性。
ActiveX Automation开放的体系结构一直是AutoCAD软件极为重要的特性。
在AutoCAD过去的版本中,我们提供了一系列软件客户化工具。
而现在,通过ActiveX Automation 系统,我们更提供了R14与其他应用程序集成的客户化工具。
对于ObjectARX 应用程序,可以享受改进的对象协同操作能力带来的益处。
通过按需装入和驻留的LISP特性节约操作时间。
这里,我们重点谈谈ActiveX Automation。
AutoCAD R14宣布支持Active Automation。
VBA与AutoCAD的二次开发
2007 NO.15SCIENCE & TECHNOLOGY INFORMATIONI T 技 术1 AutoCAD与 VBAAutoCAD是由Autodesk公司开发的工程绘图软件,是CAD市场的主流产品,功能十分强大,它广泛应用于建筑、机械、测量等工程领域,是工程制图人员常用的绘图软件之一。
AutoCAD除了具有强大的绘图功能,它的开放式体系结构也允许第三方开发者为它编写应用程序,这又显著增加了它的工作效率,并使其市场占用率首屈一指,成为图形绘制的世界标准。
在AutoCAD 14版本中,Autodesk公司首次获得Microsoft公司的许可,在AutoCAD R14中使用VBA(即Visual Basic forApplication的简称),VBA是由Microsoft创建的,用来自动执行任务的一个编程环境。
它引入了对象的程序设计环境,为用户提供类似Visual Basic(VB)语言所拥有的功能,提供了一些用来创建图形用户界面(GUI)的可拖拉工具和用来与AutoCAD对象交互的编程语言。
2 使用AutoCAD VBA进行二次开发的好处工程技术人员绘制图形时,也许会一次一次重复地执行着相同的任务。
如在进行地下管线的综合普查的任务时,一条街道上存在着具有各种不同属性的管线(电力管线、燃气管线、下水管线、电信管线等),测量人员要将算以万计的管线特征点的坐标测量出来,并在AutoCAD上将这些具有相同属性的管线点连接起来绘制成综合管线图。
如果我们用手工绘制管线图,那不仅仅是一项重复的、乏味的、极低效率的工作,还会极易由于绘图人员的工作疲劳和疏忽产生错误。
此时,我们为什么不考虑让这些令人讨厌的工作能自动执行呢?幸好我们可以使用VBA语言在AutoCAD平台上进行二次开发,创建非常好的定制应用程序,帮助我们自动地高效率地完成绘图任务。
那么为什么要使用VBA呢?最简单的原因就是,VBA要比Lisp、C/C++等易学。
CAD应用二次开发---VB和VBA开发CAD的知识
CAD应⽤⼆次开发---VB和VBA开发CAD的知识1、如何在 VB 中连接 AutoCAD。
启动 VB ,引⽤ AutoCAD 类型库。
操作步骤:从“⼯程”菜单中选择“引⽤”选项,启动“引⽤”对话框。
在“引⽤”对话框中,选择AutoCAD 类型库,然后单击“确定”。
定义模块级变量 AutoCAD 应⽤程序 (acadApp) 和当前的⽂档 (acadDoc)。
如果 AutoCAD 正在运⾏,使⽤ GetObject 函数将检索 AutoCAD Application 对象。
如果 AutoCAD 没有运⾏,使⽤CreateObject 函数试图创建⼀个 AutoCAD Application 对象。
如果创建成功,会启动 AutoCAD;如果失败,则会发⽣错误。
同时运⾏多个 AutoCAD 任务时,GetObject 函数会返回 Windows 运⾏对象表中的第⼀个 AutoCAD 实例。
要显⽰ AutoCAD 图形窗⼝,需要将 AutoCAD 应⽤程序的 Visible 特性设置为 TRUE。
使⽤ acadDoc 变量引⽤当前的 AutoCAD 图形。
⽰例:Dim acadApp As AcadApplicationDim acadDoc as AcadDocumentSub ConnectToAcad()On Error Resume NextSet acadApp = GetObject(, "AutoCAD.Application")If Err ThenErr.ClearSet acadApp = CreateObject("AutoCAD.Application")If Err Then EndEnd IfacadApp.Visible = TrueSet acadDoc = acadApp.ActiveDocumentEnd Sub2、如何使 VB 开发的程序不依赖于 AutoCAD 的版本。
毕业设计说明书用vb进行autocad二次开发[管理资料]
1 引言AutoCAD工程图形处理软件,自1982年由美国Autodesk公司开发面世以来,以其完善的绘图功能、良好的用户界面、易学易用的特点,受到了广大工程技术人员的普遍欢迎目前遍布150个国家和地区。
AutoCAD 是目前微机上应用最为广泛的通用的交互式计算机辅助绘图与设计软件包。
AutoCAD的强大生命力在于它的通用性、多种工业标准和开放的体系结构。
其通用性使得它在机械、电子、航空、轮船、建筑、服装等领域得到了极为广泛的应用,是CAD工业的旗帜产品。
AutoCAD及其图形格式已经成为一种事实上的国际工业标准。
AutoCAD之所以得到广泛应用,一个重要原因还在于它开放的结构体系,即用户根据自己的需要,对其进行二次开发。
VB(Visual Basic)是目前开发windows应用程序最为迅速、简捷的程序设计语言,具有功能强大、易于掌握的特点,能够直接用它进行Word、Excel和AutoCAD 二次开发。
全世界近千万的专业和非专业程序设计人员正在用VB开发各种类型的软件。
我国高校已经把VB列入高等教育教学计划。
用VB进行AutoCAD二次开发,是AutoCAD R14以后的一种新技术,我们可以用VB语言编程,将AutoCAD当成自己VB程序中的一个图形窗口,对其进行打开、绘图、编辑、打印、关闭等操作,十分方便。
用VB进行AutoCAD二次开发,不仅简单易学、功能强大,还能实现仅用AutoCAD不能或不易实现的功能和效果,例如进行三维动画模拟、图形参数化设计等。
用VB进行AutoCAD二次开发,不论是用于理论研究,实现自己的梦想,还是用于程序设计,开发面向实际工程呢问题的软件,均是十分有效的手段和方法。
2008进行二次开发,将AutoCAD2008窗口当成VB程序中的一个图形窗口,以平面机构-三轮式齿轮连杆机构为例,根据机构参数对其运动进行动态演示,并分析该机构的运动特性。
由于本人的水平有限,本说明书中的疏漏和错误之处在所难免,恳请老师和同学们批评指正。
VB对AutoCAD二次开发案例-编辑版-创建菜单栏
对二次开发VBAAutoCAD开发背景因为公司电脑的layout设计部门人员不能将元器件转换为3D,故而每次需要结构工程师自行将元器件的2D图处理后导入三位软件进行3D绘制,在处理二维工程图时,出现很多小圆弧,小圆弧处于不同的层,依次删除小圆弧很繁琐造成工作效率低下。
故而通过创建一个菜单栏,将删除小圆弧的程序全部放入一个菜单之下,实现自动化操作操作的流程如下:连接AutoCAD→获取AutoCAD的菜单组链接→创建菜单→创建菜单项→将菜单显示到AutoCAD中→编辑圆弧删除程序。
详尽代码一、在VB中连接AutoCAD的。
在VBA中则可以跳过此步Application 对象是VB 应用程序与AutoCAD 之间链接的关键。
将Application 对象与AutoCAD 链接是为AutoCAD 二次开发应用程序的第一步工作。
当AutoCAD 运行时,GetObject 函数返回Application 对象,否则发生一个错误,这时Err对象的基础属性就会被赋值为一个非零值,可以利用一个错误陷井进行处理。
如果AutoCAD 没有运行,可以使用CreateObject 函数强迫AutoCAD 启动。
Dim myapp As ObjectOn Error Resume Next如果已有CAD程序打开,则Set myapp = GetObject(, AutoCAD.Application)的控制句柄CAD直接获得myapp.Visible = True则如果没有程序打开,CADIf Err <> 0 ThenCADcad通过开启软件获得的控制句柄Set myapp = CreateObject(Autocad.Application) myapp.Visible = TrueEnd If程序帮助里VB注意:GetObject(, AutoCAD.Application)里面的那个逗号的来源请仔细阅读面的解释二、创建菜单(在VBA环境下)代码如下:的菜单组的取得AutoCAD 链接Public Sub menu()As AcadMenuGroupDim my_菜单组= ThisDrawing.Application.MenuGroups.Item(0) Set my_ 菜单组As AcadPopupMenuDim my_弹出式菜单创建一个名为乾康工具) Set my_弹出式菜单乾康工具集= my_菜单组?湥獵?摤尨集的新菜单As AcadPopupMenuItem 弹出式菜单项Dim my_Dim openMacro As StringSet my_?尠?摤敍畮瑉浥〨?弹出式菜单= my_弹出式菜单项删除圆及圆弧-VBARUN)DEL_ACR + chr(13), 6乾康工具集?湥獵?獮牥?湥??湥?牡尠菜单组my_创建一个名为删除圆是还方法注:无论是使用InsertMenuInMenuBar及圆弧的下拉菜单项被加载菜单都必须要有菜单InsertInMenuBar方法来加载菜单,End Sub在宏名称之前添加-VBARUN DEL_ACR + chr(13)-VBARUN是因为从AutoCAD 工具栏或菜VBA 宏。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编写第一个ARX程序
以一个实际的程序为例子,讲述如何在AutoCAD14 上开发ARX 程序。
这里采用的是MSVC++5.0 编译器,如果读者使用的是MSVC++4.2b ,其开发步骤几乎是完全一样的。
在传统的C语言程序设计教材中经常可以看到下面的一个程序:
#include<stdio.h>
main()
{
printf(“Hello,world!\n”);
}
在本章中,我们将给出用ARX开发的类似的程序helloarx,它只是简单的在AutoCAD的“Command:”提示符下打印“Hello,ARX!”。
建立一个ARX程序的第一步是创建一个CPP和DEF文件。
下面是文件hello.cpp的清单。
/*********helloarx.cpp*********/
#include<stdlib.h>
#include<aced.h>
#include<adslib.h>
void hello();
void initApp();
void unloadApp();
extern "C"
AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode, void*);
// 往命令堆栈中增加命令
void initApp()
{
acedRegCmds->addCommand("TSIN_HELLO", "hello", "hello", ACRX_CMD_MODAL, hello);"
}
//从命令堆栈中删除该应用程序的命令组
void unloadApp()
{
acedRegCmds->removeGroup("TSIN_HELLO");
}
//程序入口
AcRx::AppRetCode
acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt) {
switch (msg) {
case AcRx::kInitAppMsg:
acrxDynamicLinker->unlockApplication(pkt); initApp();
break;
case AcRx::kUnloadAppMsg:
unloadApp();
}
return AcRx::kRetOK;
}
//命令函数
void hello(void)
{
ads_printf("Hello, ARX!");
}
DEF文件必须包括一个描述行,并对变量arxEntryPoint,SetacrxPtp和acrxGetApiVersion进行定义。
下面是helloarx.def的文件清单。
LIBRARY helloarx
DESCRIPTION 'Rx sample program -helloarx'
EXPORTS
acrxEntryPoint
_SetacrxPtp
acrxGetApiVersion。