三、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 ’初始化坐标