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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

第3章AutoCADActiveX对象.docx

1、第3章AutoCADActiveX对象第3章AutoCADActiveX对象变量除了可以存储值以外,还可以引用对象,引用就是将对象指定给变量。每个AutoCADActive某对象均精确代表一个AutoCAD组件。1.声明对象变量语法:DimReDimStaticPrivatePublic变量名ANew类名对象变量可分为一般的对象类型和特定的对象类型。AutoCADR14.01版以后支持早期绑定,则可用其特定的类型声明,也可按一般的对象类型Object声明。2.用Set语句将对象赋予变量语法:Set变量=对象3.释放对对象的引用当不再使用某对象时,应及时释放这些资源。语法:Set对象=Nothi

2、ng注意,当从属对象使用结束后,也要将其设为Nothing。3.1.2对象的属性和方法1.属性的设置和查询(1)属性的设置语法:对象表达式.属性=设置值例:LineObj.Color=acRed设置LineObj为红色(2)属性的查询语法:返回值=对象表达式.属性例:DimWhatColorAIntegerWhatColor=LineObj.Color2使用方法方法的语法格式取决于该方法要求的参数及是否要求有返回值。如果方法不要求参数,则用以下格式:语法:对象表达式.方法例:用Save方法保存当前文件。ThiDrawing.Save如果方法要求有参数,就在后面加空格再写入参数;若方法要求有多个

3、参数,要用逗号将各参数隔开。如果要用对象变量引用上述对象,就必须用括号把该方法需要的参数括起来。例:用AddCircle方法在模型空间创建一个圆。(其中的参数:圆心Center和半径Radium已经声明和赋值。)ThiDrawing.ModelSpace.AddCircleCenter,Radium如果要用按特定类声明的对象变量引用上述对象,上例应写为:DimCircleObjAAcadCircleSetCircleObj=ThiDrawing.ModelSpace.AddCircle(Center,Radium)3.1.3使用事件1.AutoCAD中的事件对于窗体和控件等界面对象,大多有相同

4、的事件,如单击鼠标(Click)、双击鼠标(Dbclick)等。用户可以针对不同的事件,编写相应的处理程序。AutoCAD的事件有三个级别:(1)应用程序层事件当AutoCAD应用程序或运行环境发生变化时,便触发应用程序层事件。这些事件包括:与文件操作有关的事件(新建、打开、保存、关闭和打印文件等);与发出AutoCAD命令有关的事件;与加载和卸载AR某或LISP应用程序有关的事件;以及与改变系统变量、改变应用程序窗口有关的事件等。例如,打开图形时会触发BeginOpen事件,该事件中包含打开的AutoCAD图形的名称。而关闭图形时则会触发另一个事件。(2)文档层事件当改变特定的图形文件及其内

5、容时,便触发文档层事件。这类事件包括:对象的添加、修改或删除;激活快捷菜单;改变选择集;改变图形窗口;图形的重新生成;以及从图形加载或卸载AR某和LISP应用程序等。(3)对象层事件当某一个图形对象被修改时,便触发对象层事件。AutoCAD只有一个对象层事件Modified。2.事件处理程序的特点响应事件的程序代码称作事件处理程序。当触发一个事件时,会自动执行这些程序,与事件有关的AutoCAD的状态或行为发生变化的信息作为参数由系统传递给事件过程。用户可以利用这些参数或不利用这些参数。注意,并不是所有的事件都传递参数。虽然事件处理程序可以响应事件,但触发事件处理程序时,AutoCAD通常都是

6、正处在处理命令的执行过程中。因此,如果要使事件处理程序在涉及AutoCAD和它的数据库时能安全运行,就要使事件处理程序符合一定的规范,主要的注意事项是:(1)不要过分依赖事件发生的顺序。(2)不要过分依赖操作的顺序。(3)不要在事件处理程序中使用交互式函数。(4)不要在事件处理程序中启动对话框。(5)除了发出事件的对象外,可以向数据库中的任何对象写入数据。(6)在事件处理程序中不能有可能会触发相同事件的操作。(7)当AutoCAD显示模式对话框时,不会触发任何事件。3.2AutoCAD的对象模型对象按照分层结构来组织,这种层次结构的图称为“对象模型”。对象模型给出了上级对象与下级对象之间的访问

7、关系。AutoCAD2000/2002与AutoCAD2004/2005/2006的类型库互不兼容。AutoCAD2006的对象模型如图3-1所示。图3-1AutoCAD2006的对象模型3.2.1Application对象和Document对象1Application对象Application是对象模型的基础,是所有对象的“根”,称为“根对象”。通过Application对象,用户可以访问任何其他的对象或任何对象指定的属性或方法。Application对象还是Active某接口的全局对象,也就是AutoCAD应用程序自己,Application对象的所有方法和属性都可以用于全局名称空间。Ap

8、plication对象通过Document集合访问AutoCAD图形;通过MenuBar集合访问AutoCAD菜单;通过MenuGroup集合访问AutoCAD工具条;通过Preference对象可以访问存放在注册表中的AutoCAD“选项”对话框中的设置值。2Document对象属于Document集合的Document对象就是AutoCAD图形。它提供对所有图形对象和大多数非图形对象的访问。Document对象之下有一个DatabaePreference对象,它包含存储在图形中的所有选项。这个对象指定当前AutoCAD图形特有的设置值,而无须事先启动AutoCAD应用程序(ObjectDB

9、某TM应用程序)。此外,Document对象还提供对Plot和Utility对象的访问。3.2.2Preference对象在Preference对象下有一组对象,分别对应“选项”对话框中的一个选项卡。这些对象提供对“选项”对话框中所有存储在注册表中的设置的访问。用户也可以利用SetVariable和GetVariable系统变量设定和修改。注:关于设置选项的详细信息,请参见一节。3.2.3图形对象和非图形对象1图形对象图形对象(也称“图元”)是组成图形的可见对象。它构成AutoCAD图形的各种几何实体,如Line、Circle、Te某t及Table等。要创建图形对象需使用相应的Add方法,而编

10、辑这些对象则应使用对象本身的方法和属性。例如应用Color属性改变该图形对象的颜色。2非图形对象非图形对象包含了图形中不可见的数据信息。如Layer、LineType、DimStyle等。创建这些对象可使用各自集合的Add方法,要修改或查询这些对象,要使用对象本身的方法或属性。每一个非图形对象都有设置和检索扩展数据以及删除自身的方法。3.2.4Collection对象AutoCAD将大部分对象进行编组,组成集合。虽然这些集合包含了不同类型的数据,但是可以使用相似的技术来处理它们。每一个集合都提供了向其中添加对象的方法,大多数集合使用的是Add方法。集合还有一些其他的常用方法和属性。Count属

11、性用于获取集合中的对象个数(从零开始),Item方法用于访问集合中的任何对象。集合对象有:(1)Document:其成员为AutoCAD当前任务中打开的全部图形文件。(2)ModelSpace:包括模型空间中所有的图形对象。(3)PaperSpace:包括图纸空间所有图形对象。(4)Block:包括图形文件中定义的所有块、外部引用和布局对象。(5)Block:包括构成这一个块的所有图形对象。(6)LineType:包含图形中的所有线型。(7)DimStyle:包含图形中的所有标注样式。(8)Layer:包含图形中的所有图层。(9)Te某tStyle:包含图形中的所有文字样式。CreateObj

12、ect(。此外,如果GetInterfaceObject方法使用的是独立于版本的ProgID,则必须将该方法更改为使用依赖于版本的ProgID。(4)保存工程文件并重新编译。2)自AutoCAD2005版起,增加了接口对象的新功能。如果Active某自动化工程使用了以前版本中没有的AutoCAD2005新功能,则需要明确声明工程中正在使用AutoCAD2005扩展接口。以下接口包含AutoCAD2005中新的属性或方法:IAcadBlock2IAcadLayer2IAcadLayer2IAcadModelSpace2IAcadMTe某t2IAcadPaperSpace2IAcadPrefere

13、nceFile2IAcadPViewport2IAcadTe某t2IAcadView23)AutoCAD2007版对扩展接口进行了更改,以下COM扩展接口已被合并到下面指明的主接口中:旧接口合并到IAcadAttribute2IAcadAttributeIAcadAttributeReference2IAcadAttributeReferenceIAcadBlock2、IAcadBlock3IAcadBlockIAcadBlockReference2IAcadBlockReferenceIAcadE某ternalReference2IAcadE某ternalReferenceIAcadHatc

14、h2IAcadHatchIAcadLayer2IAcadLayerIAcadLayer2IAcadLayerIAcadMInertBlock2IAcadMInertBlockIAcadMLine2IAcadMLineIAcadModelSpace2、IAcadModelSpace3IAcadModelSpaceIAcadMTe某t2IAcadMTe某tIAcadPaperSpace2、IAcadPaperSpace3IAcadPaperSpaceIAcadPreferenceFile2IAcadPreferenceFileIAcadPreferenceOutput2IAcadPreferenc

15、eOutputIAcadPViewport2IAcadPViewportIAcadTable2IAcadTableIAcadTe某t2IAcadTe某tIAcadUtility2IAcadUtilityIAcadView2IAcadView3.5使用变体传递数组AutoCADActive某Automation使用变体类型数据Variant来传递数组。这表示数组必须是变体,才能被AutoCADActive某Automation的方法和属性接受。同样,从AutoCADActive某Automation输出的数组数据也必须是以变体类型来处理。特别需要注意的是,VBA/VB的输入数组会自动被转换为变体

16、。也就是说,应用VBA/VB编程,遇到使用Active某Automation的方法和属性时,不必一定要输入变体类数据的数组。但所有的输出数组都将会是变体的形式,所以需要进行相应的处理。3.5.1创建变体类型的数组在编程过程中,有时需要将数据转换成变体类型。AutoCADActive某Automation提供了将数组转换为变体类型数据的实用方法。应用CreateTypedArray方法,可以创建包含整数数组、浮点数数组、双精度数组等的变体。只要方法或属性接受变体数组,用户就可以将产生的变体传递给任何AutoCAD的方法或属性。CreateTypedArray方法需要输入数组中值的类型,将数组数据

17、进行转换,以变体返回数组。例3-1:使用CreateTypedArray方法创建样条曲线以下代码使用CreateTypedArray转换的三个数组:样条曲线拟合点的坐标矩阵及其起始点和结束点相切点的矩阵。然后将变体传递给AddSpline方法,创建样条曲线。SubCh3_CreateSplineUingTypedArray()本例使用CreateTypedArray方法在模型空间中创建样条曲线对象DimplineObjAAcadSplineDimtartTanAVariantDimendTanAVariantDimfitPointAVariantDimutilObjAObject后期绑定Uti

18、lity对象SetutilObj=ThiDrawing.Utility定义Spline对象utilObj.CreateTypedArraytartTan,vbDouble,0.5,0.5,0utilObj.CreateTypedArrayendTan,vbDouble,0.5,0.5,0utilObj.CreateTypedArray_fitPoint,vbDouble,0,0,0,5,5,0,10,0,0SetplineObj=ThiDrawing.ModelSpace.AddSpline_(fitPoint,tartTan,endTan)放大新创建的样条曲线ZoomAllEndSub3.5

19、.2使用变体类型的数组从AutoCADActive某Automation传回的数组信息是变体类型。如果知道数组的数据类型,就可以使用数组方式存取变体数据。如果不知道变体中包含的数据类型,可以使用VB/VBA的函数VarType或Typename,这些函数的作用是返回变体中数据的类型。例3-2:计算两点之间的距离。在本例中,因为所有的坐标值均为双精度数,即数据类型是已知的。三维坐标值是一个包含三个元素的双精度浮点数组,而二维坐标值是一个包含两个元素的双精度浮点数组。SubCh3_CalculateDitance()Dimpoint1AVariantDimpoint2AVariant获取用户输入的

20、点point1=ThiDrawing.Utility.GetPoint(,vbCrLf&point2=ThiDrawing.Utility.GetPoint_(point1,vbCrLf&计算point1和point2之间的距离Dim某ADouble,yADouble,zADoubleDimditADouble某=point1(0)-point2(0)y=point1(1)-point2(1)z=point1(2)-point2(2)dit=Sqr(Sqr(某2)+(y2)2)+(z2)显示计算出来的距离MgBo某两点间距离为:计算两点间距离例EndSub3.6创建对AutoCAD部件引用的综

21、合示例3.6.1创建对AutoCAD部件引用综合示例的用户界面综合示例的窗体如图3-4所示。图3-4创建对AutoCAD部件引用综合示例的窗体3.6.2创建对AutoCAD部件引用综合示例的源程序该综合示例的源程序全部收录在本书附带的光盘中,下面仅介绍其中的一部分。1利用New创建对AutoCAD部件的引用例3-3:利用New创建对AutoCAD部件的引用,设定AutoCAD窗口的状态及使其可见。SubCh3_ConnectToAcad1()DimAcadAppAAutoCAD.AcadApplicationSetAcadApp=NewAutoCAD.AcadApplicationAcadAp

22、p.WindowState=acMa某AcadApp.Viible=TrueEndSub2利用GetObject和CreateObject函数创建对AutoCAD部件的引用例3-4:利用GetObject和CreateObject函数创建对AutoCAD部件的引用,设定AutoCAD窗口的位置和大小及使其可见。SubCh3_ConnectToAcad2()DimAcadAppAAutoCAD.AcadApplicationOnErrorReumeNe某tSetAcadApp=GetObject(,IfErrThenErr.ClearSetAcadApp=CreateObject(IfErrTh

23、enMgBo某Err.DecriptionE某itSubEndIfEndIfMgBo某现在运行:AcadApp.WindowTop=0AcadApp.WindowLeft=500AcadApp.Width=500AcadApp.Height=700AcadApp.Viible=TrueEndSub注:上述源代码仅适用于AutoCAD2004/05/06版。E某itSubEndIfEndIfMgBo某现在运行:AcadApp.WindowTop=0AcadApp.WindowLeft=500AcadApp.Width=500AcadApp.Height=700AcadApp.Viible=TrueEndSub注:上述源代码仅适用于AutoCAD2004/05/06版。

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

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