ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:23.62KB ,
资源ID:6497806      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6497806.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VB与AUTOCAD的接口.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

VB与AUTOCAD的接口.docx

1、VB与AUTOCAD的接口VB 与 AUTOCAD 的接口(一AutoCAD 具有开放的体系结构,是一种极其灵活的应用系统,用户可以通过编程的方式对 其进行定制, 它允许用户和开发者采用各种方法对其进行扩充和修改, 即二次开发, 能最大 限度地满足用户的特殊要求。 我们先对以往 AutoCAD 二次开发中用到的方法简单做一回顾, 然后以 Visual Basic6.0为编程工具,详细讨论应用 ActiveX 对 AutoCAD 进行二次开发的方 法。(一 AutoCAD 二次开发中用到的方法1 AutoLISPAutoLISP (LIST Processing Language ,它是一种表处

2、理语言,是被解释执行的。它被 嵌入在 AutoCAD 内部,作为二次开发的编程语言,她一直是低版本 AutoCAD 的首选编程 语言。2 autocad 的 scri pt文件scri pt 文件是成批集成 Autocad 命令的文本文件,可以在 Autocad 中运行,早期国内 CAD 二次开发中应用较为普遍,这种方法比较容易实现,通过在外部程序中按照要求将绘 图参数融合进 scri pt文件,然后利用 autocad 定制菜单实现绘图。3 ADSADS (AutoCAD Development System是 AutoCAD 的 C 语言开发系统,它直接利用 C 语言 编译器,将应用程序编

3、译成可执行的文件在 AutoCAD 环境下运行,这种可执行的文件叫做 ADS 应用程序。 ADS 由于其速度快,又采用结构化的编程体系,因而很适合二次开发机械 设计 CAD 、土木工程 CAD 等。4 ObjectARXObjectARX 是一种崭新的开发 AutoCAD 应用程序的工具,她以 C 为编程语言,采用先进 的面向对象的编程原理,提供可与 AutoCAD 直接交互的开发环境,能使用户方便快捷地开 发出高效简洁的 Auto CAD 应用程序。 ObjectARX 并没有包含在 AutoCAD 中,可在 AutoDESK 公司网站中去下载,其最新版本是 ObjectARX for Au

4、toCAD 2000,它能够对 AutoCAD 进行完整的、先进的、面向对象的设计与开发,并且开发的应用程序速度更快、 集成度更高、稳定性更强。 ObjectARX 是一种特定的 C 编程环境,她包括一组动态链接库 (DLL ,这些库与 AutoCAD 在同一地址空间运行并能直接利用 AutoCAD 核心数据结构和 代码,库中包含一组通用工具,使得二次开发者可以充分利用 AutoCAD 的开放结构,直接 访问 AutoCAD 数据库结构、图形系统以及 CAD 几何造型核心,以便能在运行期间实时扩 展 AutoCAD 的功能,创建能全面享受 AutoCAD 固有命令的新命令。5 VisualLI

5、SPVisualLISP 已经被完整地集成到 AutoCAD 2000中,她为开发者提供了崭新的、增强的集成 开发环境,一改过去在 AutoCAD 中内嵌 AtuoLISP 运行引擎的机制,这样开发者可以直接 使用 AutoCAD 中的对象和反应器,进行更底层的开发。用它开发程序的时间被缩短,原始 代码能被保密;能帮助大家使用 ActiveX 对象及其事件;使大家很容易创建和分析 LISP 程 序的运行情况。6 VBAVBA (即 Mcrosoft office中的 Visual Basic for Applications ,被集成到 AutoCAD 2000中。 VBA 为开发者提供了一种

6、新的选择,也为用户访问 AutoCAD 2000中丰富的技术框架打开 一条新的通道。 VBA 和 AutoCAD 2000中强大的 ActiveX 自动化对象模型的结合,代表了 一种新型的定制 AutoCAD 的模式构架。 通过 VBA , 我们可以操作 AutoCAD , 控制 ActiveX 和其它一些应用程序,使之相互之间发生互易活动。(二 Visual Basic应用 ActiveX 对 AutoCAD 进行二次开发(1 AutoCAD 的对象模型如果一个应用程序支持自动化,那么其他应用程序就可以通过其开放对象(Object 对其 进行操作。 对象本身包含自己的方法和属性。 通过对象的

7、方法和属性可以实现对象的操作及 状态信息的收集或改变。例如,圆是 AutoCAD 中的一个对象,它的属性可以是圆心坐标、 半径及所在层等性质,方法则有拷贝、镜像等操作。理解 AutoCAD 的对象模型是对其编程的基础。 AutoCAD 以层次结构组织对象。在顶层是 Application 对象 (即 AutoCAD 本身 , 其他对象均为 Application 对象的子对象。 在 Application 对象下面是 Preferences (设置和 Document (文档对象。其中: AutoCAD 的 Application 对象Application 对象是应用程序对象。 通过该对象,

8、 你可访问其它的对象, 或指派对象的属性和 方法。例如,应用程序对象具有 Preferences(参数选择 属性,它返回 Preferences(参数选择 对象。该对象提供访问在选项对话框中设定的注册信息 (图形信息设定包含在 Database Preferences 对象 。应用程序对象的其它属性提供你访问应用程序指定数据,如应用程序的 名称和版本、还有 AutoCAD 的窗口大小、位置和可见性等。应用程序对象的方法执行应用 程序指定的动作,如列出、装载、卸载 ADS 和 ARX 应用程序,还有退出 AutoCAD 。 应用程序对象也提供通过 Documents(文档 集合链接到 AutoC

9、AD 图形、通过 MenuBar 和 MenuGroups 集合链接到 AutoCAD 菜单和工具栏, 还有通过称为 VBE 属性链接到 VBA IDE。 应用程序对象也是 ActiveX 界面的全局对象。 也就是说应用程序对象的所有方法和属性在全 局名称空间都是有效的。 AutoCAD 的 Preferences 对象通过它可以获取或改变 AutoCAD 的设置。 AutoCAD 的 Document 对象。是 AutoCAD 图形文件对象,它代表当前激活的 DWG 文件。 Document 对象下面有 Model Space(模型空间和 Paper Space(图纸空间对象及 Blocks

10、(块 、 Layers (层 、 Plot (出图 、 Selectionsets (选择集 、 views (视图 、 utility (功能等一系列对象(集合 , 其含义与 AutoCAD 中相似。 Model Space 是当前图形文件中图形实体,如直线、圆、多义 线等的集合,每个实体即是一个对象,可通过属性和方法改变实体或生成新实体。对非图形实体,如层(layer 、线形(line type 等的访问则通过访问 Document 对象 下面的相应的集合类型的子对象, 如 Layers 、 LineTypes 等来实现。 集合类型的对象可以使 用 VB 中所有的集合操作方法。 Plot

11、对象提供了访问 Plot 对话框中各选项的桥梁, 使程序具 有用不同方式控制 AutoCAD 出图的能力。 Utility 对象使用户在 AutoCAD 命令行与 CAD 交 互成为可能,通过它可以处理整型、浮点型、字符型等用户输入,还可以接受点(Point 或角(Angle 等 AutoCAD 的特殊量。对象是通过分层方式来组织的, 应用程序对象为根对象。 这种分层结构被归结为对象模 型。(2 AutoCAD 对象的使用要想在 AutoCAD 中使用 Active Automation技术,首要条件是在 VB6.0中选择 AutoCAD 作 为其对象,并对需要操作的具体对象按照 AutoCA

12、D 对象的树状结构逐级遍历。首先打开 VB6.0,选择“工程 /引用”菜单,在“引用”对话框中选择“ AutoCAD Object Library” 。 按照 VB 的编程步骤,写入下面相应的程序代码,即可实现 CAD 中相应的操作。下面说明 CAD 中常用操作的实现方法:a .开始一个应用程序的 VB 语句Application 对象位于 AutoCAD 层次对象结构的顶层,它代表 AutoCAD 本身,用户的应用程序也理所当然从 Appliction 对象的建立开始。Dim objacad As AutoCAD.AcadApplication 定义 Autocad 程序对象Dim objd

13、wg As AutoCAD.AcadDocument 定义 DWG 文件对象Dim objcircle As AutoCAD.AcadCircle 定义 circle 对象Set objacad = New AutoCAD.AcadApplication 建立 Autocad 程序列程Set objdwg = objacad.Documents.Add 建立名称为 acab 的 DWG 文件Set objcircle = objdwg.ModelSpace.AddCircle(cen, rad 在 acab 的 DWG 文件中画一个圆 objdwg.SaveAs (sf 保存文件objdwg.

14、Close 关闭文件objacad.Quit 退出 AutoCADSet objdwg = Nothing 释放 acab 的 DWG 文件占用的内存Set objacad = Nothing 释放 Autocad 程序列程占用的内存另外,若 AutoCAD 已启动 , 则使用下面语句激活它:Set Acadapp = GetObject(, Autocad.application也可以使用下面语句启动 AutoCAD :Set Acadapp = CreateObject(Autocad.application其它:Acadapp.Visible = True 使 AutoCAD 可见Set

15、 Acaddoc = Acadapp.ActiveDocument 设 Acaddoc 为当前图形文件Set Mospace = Acaddoc.ModelSpace 设 Mospace 为当前图形文件的模型空间以上程序段是应用程序初始化的过程,一般对 AutoCAD 图形文件的操作,主要是与 Application 、 Document 和 Model Space等对象发生关系。Application 对象是一系列对象的父对象,可以通过它的属性设置来改变 AutoCAD 的窗口设 置。请看下面代码:acadapp.Top=100 设置 AutoCAD 窗口的位置Acadapp.Left=20

16、0Acadapp.Height=1000 调整 AutoCAD 窗口的大小acadapp.Width=800Acadapp.Caption=my first application 设置 AutoCAD 窗口的标题b .操作 Document 对象的 VB 语句Document 对象提供了大多数 AutoCAD 的文件功能,可以通过它实现对文件的更新 (New 、打开 (Open、输出 (Export、输入 (Import等操作 , 一般要先把 Document 对象设为 Application 对象的 ActiveDocument 属性,以返回当前图形文件。Set Acaddoc=Appli

17、cation.ActiveDocument请看下面的例子对文件的操作:Dim dwgname As Stringdwgname = c:acad struc.dwg打开一个已有的 CAD 文件Acaddoc.Open dwgname建立一个新 CAD 文件 acad.dwgAcaddoc.new(acadDocument 对象还提供了两个十分有用的方法 SetVariable 和 GetVariable , 通过它们可以 得到或改变 AutoCAD 的系统变量。如:Acaddoc.SetVariable Orthomode, 1 打开正交模式Dim cadver As Stringcadver

18、=Acaddoc.Getvariable(Acadver 获取 AutoCAD 的版本号c .绘制直线对象的 VB 语句要描绘一条直线至少要有直线的起始点和终止点的坐标,如应用 AddLine 方法绘制一条直 线,起始点坐标为:(10, 10, 0 ,终止点坐标为:(50, 50, 0程序代码如下:Dim SP(0 To 2 As DoubleDim EP(0 To 2 As DoubleSP(0 = 5SP(1 = 5SP(2 = 0EP(0 = 20EP(1 = 20EP(2 = 0mospace.AddLine SP, EPd .插入文本对象的 VB 语句文本的主要参数为插入点、文本高度

19、、旋转角和字符串。 AddText 方法需要四个参数来产生 一个文本。如产生一个 Text 对象:字符串为“岩土工程勘察 CAD ” ,插入点坐标为:(10, 10, 0文本高度为 120。程序代码如下:Dim InsertP(0 To 2 As DoubleDim TextHeight As DoubleDim TextString As StringDim TextObj As ObjectInsertP(0 = 10InsertP(1 = 10InsertP(2 = 0TextHeight = 120TextString = 岩土工程勘察 CAD Set TextObj = mospac

20、e.AddText(TextString, InsertP,_ TextHeighte .向图形中插入已有的一个图块的 VB 语句块处理是 AutoCAD 中经常使用的技术。块包括两种:一种是外部文件,使用块引用的方法 加入到图形文件中; 另一种是文件内部的块, 该块的定义包含在当前图形中。 内部块比较容 易处理,可以对块进行编辑,也可以生成引用块。 而采用外部文件时, 有时为了图形输出的 需要,必须将块引用用 Xbind 命令插入到图形文件中。如将一个图形中经常用到的图块 BlockName1插入到点(20, 20, 0 ,其旋转角为 0,比例 因子为 1。 插入块的函数是 InsertBl

21、ock , 它返回一个块的引用实例对象 BlockRef 实际上; 块 也可以用 InsertBlock 函数插入到其它块中。块是可以嵌套的,但是它不能引用自身,否则 会形成无穷的循环。程序代码如下:Private Sub Command3_Click(Dim BlockName As StringDim BlockRef As ObjectDim InsertP(0 To 2 As DoubleDim Xscale As Double, Yscale As DoubleDim RotAngle As DoubleDim Found As BooleanDim EnTry As Variant

22、InsertP(0 = 100InsertP(1 = 100InsertP(2 = 0BlockName = BlockName1 查找所有的文件中已有图块For Each EnTry In acadDoc.BlocksIf EnTry.Name = BlockName ThenFound = TrueExit ForEnd IfNext 有则插入图块If Found ThenSetBlockRef=acadDoc.ModelSpace.InsertBlock(_InsertP, BlockName, Xscale, Yscale, RotAngleElseMsgBox 此图块名不存在。 En

23、d IfEnd Subf. 填充图形的 VB 语句本例提供的是画一个圆心为(3, 3, 0 ,半径为 1的圆,然后填充这个圆的内部区域。具体 过程如下:Dim hatchObj As AcadHatchDim ptnName As StringDim ptnType As LongDim b As BooleanDim outerLoop(0 To 0 As ObjectptnName = ANSI31 定义填充的样式patnType = 0b = True 在模型空间创建一个填充对象Set hatchObj = moSpace.AddHatch(ptnType, ptnName, b 创建填

24、充的边界,画一个圆心为(3, 3, 0 ,半径为 1的圆Dim center(0 To 2 As DoubleDim radius As Doublecenter(0 = 3: center(1 = 3: center(2 = 0radius = 1Set outerLoop(0 = moSpace.AddCircle(center, radius 把填充边界传递给 hatchObj 对象,并显示填充 hatchObj.AppendOuterLoop (outerLoop hatchObj.Evaluate Acaddoc.Regen True g保存图形的 VB 语句 保存活动的图形,以下示

25、例以当前名称保存活动图形然后再以新的名称保存该图形。 Sub Ch3_SaveActiveDrawing( 以当前名称保存活动图形 Acaddoc.Save 以新的名称保存活动图形 Acaddoc.SaveAs MyDrawing.dwg End Sub 当然你会想到去检查活动图形是否存在有未保存的更改。在退出 AutoCAD 进程之前或开始 一个新的图形之前这样做是一种好的习惯。 使用 Saved 属性可以确定当前图形是否包含未保 存的更改。 测试图形是否有未保存的更改内容, 检查图形是否有未保存的更改并由用户确定是否保存图 形(如果取消,则直接跳到结束处。如果确定的话,使用 Save 方法

26、保存当前图形,程序如 下: Sub Ch3_TestIfSaved( If Not (acaddoc.Saved Then If MsgBox(你是否想保存该图形?,vbYesNo = vbYes Then acaddoc.Save End If End If End Sub 亦可使用 Save 或 SaveAs 方法保存图形,具体使用方法请查看相关资料。 现在国内有不少介绍 ActiveX 编程及 AutoCAD 的资料,但迄今还未发现有完整讨论 AutoCAD 的 ActiveX 编程的书籍,目前最容易得到的资料就是 Autodesk 公司编写的随机帮 助,其中有一章“ActiveX Au

27、tomation,有全部对象的方法、属性说明。具体内容请查看 AutoCAD 的随机帮助文件。 本节主要论述利用 VB 的 ActiveX 编程实现与 AutoCAD 的连接的技术及相关 VB 语句。其 实用用 VB 编写具有 DDE 功能的程序来控制 AutoCAD 也是不错的方法,在 Windows 平台 下,VB 和 AutoCAD 都支持强有力的 DDE(动态数据交换功能,既能与 AutoCAD 交换各种 复杂的数据结构,又能向 AutoCAD 发送命令,由此开发出的应用程序也足能满足用户的需 要,下面我们简单讨论一下这方面的内容。 (三)Visual Basic 应用 DDE 实现对

28、 AutoCAD 的控制 DDE 是 Windows 的强大功能之一,它可以使应用程序自动地接收由其它应用程序发送 来的数据,当传送端的数据有变化时,接收端的数据也会随之改变,也可将命令或键盘输入 传递给其它程序,实现远程控制。 在 VB 编程环境中,创建应用程序的方法很简单,VB 中能和其它 Window 应用程序建 立 DDE 通道的控件有文本框,标签和图片框。下面结合简单实例,说明 VB 应用程序与 AutoCAD 间建立 DDE 通道和交换数据的方法。 在 VB 中启动一个新项目,参见图(1建立窗体,其中“建立链接”“直线”“标注” , , , “退出”为命令按钮,标有“Text1”的

29、为文本框,用于建立 DDE 通道,并输入下面的事件 代码。 Option Explicit Private Sub cmdLine_Click( 画直线 Text1.LinkExecute 33line 3,3 8,8 3 End Sub Private Sub cmdText_Click( 标注文字 Text1.LinkExecute 33text 10,10 1 90 AUTOCAD!10 End Sub Private Sub cmdLink_click( 建立链接 Text1.LinkMode = 0 Text1.LinkTopic = autocad.dde|system Text1

30、.LinkMode = 2 End Sub Private Sub cmdExit_click( 退出 End End Sub 运行此应用程序,注意在运行前,一定要先加载 AutoCAD。单击“建立链接”按扭, cmdLink_Click(过程被执行,执行时设置文本框 Text1 的 LinkTopic 和 LinkMode 的属性, 完成 VB 应用程序与 AutoCAD 间 DDE 通道的建立。LinkTopic 属性用于通知 AutoCAD 由 谁来提供数据,它被管道符“|”分成两部分,第一部分“AutoCAD.DDE”为应用程序名, 第二部分“System”是通讯的主题。LinkMod

31、e 属性用于切实建立链接,在 LinkMode=0 时, 表示关闭以前的 DDE 通道,在 LinkMode=2 时,表示以手动模式激活 DDE 通道。 在完成 DDE 链接后,VB 应用程序就可以与 AutoCAD 间进行数据交换或命令传送了。 单击 “直线” 按扭, cmdLine_Click(过程被执行, 应用程序通过 LinkExecute 方法向 AutoCAD 发送命令, AutoCAD 中以点(3,3和(8,8为端心, 在 画一条直线。 语句中的3 相当于 AutoCAD 中的取消键 Ctrl C, 空格相当于 AutoCAD 中的回车键。 “标注” 单击 按扭, 执行 cmdText_Click( 过程, 可在 AutoCAD 中显示以(10,10为基点, 高为 1, 旋转角度为 90 的字符串 “AutoCAD!” 。 语句中的10 相当于 AutoCAD 中的回车键,在标注文字时不能用空格代替回车键。 根据需要,可用上面的方法传送 AutoCAD 的其它命令,实现对 AutoCAD 的开发。 (四)Visual Basic 应用 SCRIPT 文件实现对 AutoCAD 的控制 AutoCAD 提供了一种被称为命令文件(SCRIPT 文件)的工具。它允许将不同的 AutoCAD 的命令组

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

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