版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、A utoCAD一直是CAD市场中的主流产品。随着 AutoCAD勺日益普及, 在其上进行二次开发的工具也不断更新。从早期的Auto Lisp 、ADS、DCL到现在流行的 Object ARX ActiveX Automation、Visual Lisp, 均可十分方便地对 AutoCAD进行二次开发。本文主要讨论关于运用 Visual Basic 对 AutoCAD基于 ActiveX Automation 的二次开发技术。 选用 ActiveX 有两个原因,一是因为 Visual Basic 的普及性与易用 性,二是采用这种方法进行二次开发可方便地实现与其它图形软件的 接口,如与Soli
2、d Works实现实体造型与二维绘图的结合,以及根据 用户的特殊需要开发出一定功能的软件。二、 ActiveX Automation 技术AutoCAD中的 ActiveX Automation 是微软公司 ActiveX 规范的具体应用。 它通过基于 ActiveX 的自动化对象, 为其他应用程序提供 了访问AutoCAD内部功能的方法,是AutoCAD最新的开发接口。在运 行时,AutoCAD与其他应用程序之间的关系是服务器与客户的关系, 开发人员使用支持 ActiveX 规范的编程语言 (如 VB、Dephi 等) 能通过 访问AutoCAD的对象模型,把 AutoCAD的强大功能集成到
3、应用程序 中.AutoCAD的对象模型是一种树型结构模型,根为"AutoCAD Application" , AutoCAD中 的所有对象都是 AutoCAD Application 的 子对象。图1所示为AutoCAD对象模型的层次结构树,其中父对象与 子对象之间的关系并不是对象继承关系,而是包含关系。图1 AutoCAD中ActiveX对象的总结构图三、 ActiveX Automation 的使用方法1. Application 对象如果在计算机系统上安装了 AutoCAD则Windows会自动将其所 有的信息注册到系统注册表里。那么在启动 Visual Basic
4、后,用户 可以象调用VB自己的对象一样调用 AutoCAD所提供的ActiveX。在编程、调试或运行时至少应该有一个AutoCAD副本在运行。可 以通过以下的代码创建 AutoCAD对象。Dim AcadApp as Object '定义一个对象On Error Resume NextSet AcadApp =GetObject(,"")If Err Then'如果没有一个AutoCAD副本在运行Set AcadApp =CreateObject("")二True '启动一个AutoCAD副本并设为可见If Err ThenMsg
5、Box '如果失败,给出错误提示Exit SubEnd IfEnd If2. Preferences 与 Document对象与 AutoCAD 中 的 Preferences 对 话 框 的 作 用 相 同 , 通 过 Preferences 对象可以读取或设置 AutoCAD 的一些基本设置。Preferences 对象通过 Application 的 Preferences 属性返回。Dim AcadPref as ObjectSet AcadPref =比如,用户可通过 Preferences 对象进行如下的设置=100=acTrueDocument对象表示 AutoCAD中中
6、当前打开的文档,对 AutoCAD中的任何其它操作都需用到 Document 对象,该对象可以通过ActiveDocument 属性返回。Dim AcadDoc as ObjectSet AcadDoc =AutoDesk公司使用了集合的概念。在 Document对象中有14个集合,具体如图1所示。与VB中的集合一样,这些集合都支持 Add Item方法与Count属性。例如Add方法可以向该集合中添加一个对 象, Item(X) 可以的得到该集合中的第 X 个对象, Count 属性可以得 到该集合中的对象的个数。在一个AutoCAD副本运行时,只能同时打开一个 Document。可以调用D
7、ocument的New Save方法以及Saved属性来打开或保存一 个 AutoCA文档。If Not ThenElseSet AcadDoc =("acad")End If3. 创建、查询与修改AutoCAD图形对象在创建AutoCAD图形对象之前,首先必须定义并创建ModelSpace 与 PaperSpace 集合对象。这两个对象可通过 Document 对象的 ModelSpace属性与PaperSpace属性返回。Dim moSpace as Object,paSpace as ObjectSet moSpace =Set paSpace =所有关于图形对象操作
8、的方法与属性都包含在这两个对象中。创建文本对象:Dim moSpace as ObjectSet moSpace =Dim Pnt(O to 2) as Double'定义一个 AutoCAD三维点Dim TextH as Double '定义字符高度Dim Textstr as String '定义字符变量Dim Text Obj as Object'定义一个 AutoCAD文本对象Pnt(0) =2:Pnt(1) =4: Pnt(2) =0 '初始化坐标TextH =1'创建文本对象TexrStr = “This is a test ”Set
9、 TextObj=(TextStr,Pnt,TextH)查询与修改图形对象有时用户不但要创建图形对象, 更多的情况是修改或控制已存在 的对象,这就需要对已创建的对象进行查询, 从而得到所要操作的 对象。可以通过属性来得到图形对象的个数。Dim noMSOBJ as String,noPSOBJ as StringNoMSOBJ=StrNoPSOBJ=StrMsgBox "Object:Mspace="& noMSOBJ & "Pspace="& noPSOBJ 用户也可以通过 For.Loop 语句来遍历所有的图形对象或是通 过方
10、法来得到某个具体的对象。下面的代码说明了如何来修改当前中的对象,如果对象为一直 线,则修改其颜色为红色,否则不做任何改动。Dim ent as objectFor each ent in mospaceIf = "acdline" then=acredEnd IfNext需要注意:如果对图形对象做了改动,则需要调用 Update 方法 在AutoCAD窗口中重画该对象。同样,可以得到 Model Space 中最后生成的图形对象。Dim ent as objectSet ent =4. 非图形对象除了 ModelSpace与 PaperSpace集合,Document对象中
11、另外 12 个集合中的对象都是非图形对象,如Layers集合包含了 AutoCAD当前文档中所有的层,而 Linetypes 和 TextStyles 则分别为线型对象 与字符型对象的集合。创建层可以调用 Layers 集合的 Add 方法创建层。以下代码创建一个名 称为 LAYER,1 颜色为洋红色的层。Dim layerobj as objectSet layerobj ="LAYER1")=acMagenta视口以下的代码使用ActiveSpace属性设置一个活动的Space,然后 调用 Viewports 集合的Add方法创建一个名为"NEW_VIEWPO
12、RT视 口。当视口建立后, Split 方法可使原视口与新视口呈上下排列,最 后, ActiveViewport 属性使新视口成为活动视口。Dim vport as object=acModelSpaceSet vport="NEW_VIEWPORT")acViewport2VerticalSet =vport5. 用户输入Document 对象中还包含有一个很重要的子对象 Utility , Utility对象 提 供 了 一 些 其 它 的实 用 功 能 ,如 用 户 输 入控 制(user-input) 。user-input 方法可以在AutoCAD的命令提示行中提
13、 示用户输入, 并显示相应的输入数据类型。 这种类型的输入对于屏幕 坐标系,实体选择,短字符与数字的输入有着极为重要的应用。以下的代码定义了 Utility 对象。Dim AcadUtil as objectSet AcadUtil =每个user-input方法都在AutoCAD的命令行里给出了适当的输 入提示并返回相应的数据类型。如: GetString 返回一个字符串, GetPoint 返 回 一 个 点 ( 三 个 双 精 度 数 值 ) 。 也 可 以 调 用 InitializeUserInput 方法进行更高级的输入设置。用户可以定义一个变量 :NL=Chr(13)+Chr(10) ,将这个变量用于 输入提示的开始处。四、结束语AutoCAD 的 ActiveX Automation 技术的出现 ,标志着 AutoCAD 的 二次开发技术取得了历史性转折
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 无锡市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(综合题)
- 德州市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(基础题)
- 山西省农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及答案详解(全优)
- 黑龙江省农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)完整参考答案详解
- 张家口市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(黄金题型)
- 西双版纳州农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及参考答案详解一套
- 自贡市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(考试直接用)
- 2025年全国特种设备检验检测人员考试模拟题库锅炉检验师训练题及答案(手机版)
- 赤峰市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及答案详解(夺冠系列)
- 丽江市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(模拟题)
- 2025年及未来5年中国特钢棒材制造市场深度评估及行业投资前景咨询报告
- 幼儿园课件:《体能大循环的有效开展策略》
- 2025见证取样员考试试题带答案
- 医疗器械委托生产课件
- 招投标自查报告和问题整改指导
- 《人工智能语言与伦理》章节测试题及答案
- 高校实验室安全基础(华东理工大学)学习通网课章节测试答案
- 建筑垃圾现场分拣作业流程方案
- 2022利达消防LD6901 消防控制室图形显示装置(Linux)使用说明书
- 8.2 守护正义(课件)- 2025-2026学年八年级道德与法治上册(统编版2024)
- 储能电池产品售后服务与维保方案
评论
0/150
提交评论