土木在线论坛 \ 建筑设计 \ CAD下载及教程 \ 对AutoCAD进行二次开发

对AutoCAD进行二次开发

发布于:2004-10-09 17:41:09 来自:建筑设计/CAD下载及教程 [复制转发]
一、引言
AutoCAD一直是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对象模型的层次结构树,其中父对象与子对象之间的关系并不是对象继承关系,而是包含关系。 
  
三、ActiveX Automation的使用方法
  1. Application对象
如果在计算机系统上安装了AutoCAD,则Windows会自动将其所有的信息注册到系统注册表里。那么在启动Visual Basic后,用户可以象调用VB自己的对象一样调用AutoCAD所提供的ActiveX。
在编程、调试或运行时至少应该有一个AutoCAD副本在运行。可以通过以下的代码创建AutoCAD对象。
  Dim AcadApp as Object ’定义一个对象
  On Error Resume Next
  Set AcadApp =GetObject(,"AutoCAD.Application")
  If Err Then ’如果没有一个AutoCAD副本在运行
  Err.Clear
  Set AcadApp =CreateObject("AutoCAD.Application")
  AcadApp.Visable =True ’启动一个AutoCAD副本并设为可见
  If Err Then
  MsgBox Err.Descri ption ’如果失败,给出错误提示
  Exit Sub
  End If
  End If
  
2. Preferences与Document对象
  与AutoCAD中的Preferences对话框的作用相同,通过Preferences对象可以读取或设置AutoCAD的一些基本设置。Preferences对象通过Application的Preferences属性返回。
  Dim AcadPref as Object
  Set AcadPref = AcadApp.Preferences
  比如,用户可通过Preferences对象进行如下的设置
  AcadPref.Cursorsize =100
  AcadPref.DisplayScreenMenu =acTrue
  AcadPref.DisplayScrollBars =Check1.Value
  Document对象表示AutoCAD中中当前打开的文档,对AutoCAD中的任何其它操作都需用到Document对象,该对象可以通过ActiveDocument属性返回。
  Dim AcadDoc as Object
  Set AcadDoc = AcadApp.ActiveDocument
  AutoDesk公司使用了集合的概念。在Document对象中有14个集合,具体如图1所示。与VB中的集合一样,这些集合都支持Add、Item方法与Count属性。例如Add方法可以向该集合中添加一个对象,Item(X)可以的得到该集合中的第X个对象,Count属性可以得到该集合中的对象的个数。
  在一个AutoCAD副本运行时,只能同时打开一个 Document。可以调用Document的New、Save方法以及Saved属性来打开或保存一个AutoCAD文档。
  If Not AcadDoc.Saved Then
  AcadDoc.Save
  Else
  Set AcadDoc =AcadDoc.New("acad")
End If

  3. 创建、查询与修改AutoCAD图形对象
  在创建AutoCAD图形对象之前,首先必须定义并创建ModelSpace与PaperSpace集合对象。这两个对象可通过Document对象的ModelSpace属性与PaperSpace属性返回。
  Dim moSpace as Object,paSpace as Object
  Set moSpace = AcadDoc.ModelSpace
  Set paSpace = AcadDoc.PaperSpace
  所有关于图形对象操作的方法与属性都包含在这两个对象中。
  创建文本对象:
  Dim moSpace as Object
  Set moSpace =AcadDoc.ModelSpace
  Dim Pnt(0 to 2) as Double ’定义一个AutoCAD三维点
  Dim TextH as Double ’定义字符高度
  Dim Textstr as String ’定义字符变量
  Dim TextObj as Object ’定义一个AutoCAD文本对象
  Pnt(0) =2:Pnt(1) =4: Pnt(2) =0 ’初始化坐标
  TextH =1
  TexrStr =“This is a test”
  Set TextObj=moSpace.AddText(TextStr,Pnt,TextH) ’创建文本对象
  

全部回复(2 )

只看楼主 我来说两句抢地板
  • wujing0618
    wujing0618 沙发
    对程序不是很懂,但是二次开发的很多成果对我们却很是有用!
    谢谢这些同志们,辛苦啦
    2006-12-27 22:42:27

    回复 举报
    赞同0
  • nba-3000
    nba-3000 板凳
    stephen66说的 非常好!CAD的二次开发很重要,能极大的提高我们的作图效率,比
    如TSSD对我们的帮助,也希望大家多研究研究LISP,做一些对自己作图有帮助的软
    件.
    2004-10-11 00:58:11

    回复 举报
    赞同0
这个家伙什么也没有留下。。。

CAD下载及教程

返回版块

52.08 万条内容 · 682 人订阅

猜你喜欢

阅读下一篇

zdm软件一日一题,改变实体性质cr命令

修改实体性质命令是最常用的命令之一,在acadr14常用的是change命令,在acad2000后用properties命令,前者在修改层、线形、颜色.....要敲入名称,后者启动后对话框太大,选项太多,影响绘图速度。总之用的用的都不够爽。zdm软件cr命令采用了键盘输入与对话框选择结合的方式,并且将格式刷功能也溶入进来,可以刷线宽,修改线宽,这可是cad没有的哦,能不能提高绘图速度,大家去试试,结果告诉我,再图改进。

回帖成功

经验值 +10