1、AutoCAD二次开发,第二讲 创建二维图形,AutoCAD的主要功能之一就是绘制各种二维和三维图形,用VB编程实现AutoCAD绘图,就是用Add方法在AutoCAD模型空间(MoodelSpace)创建二维或三维图形对象,也可在图纸空间(PaperSpace)或块(Block)中创建对象。,1 创建直线,用AddLine方法可以创建直线,应用该方法时要给出直线起点与终点的三维坐标。 Dim Zx as AcadLine Set Zx=AcadApp.ActivaDocument.MoodlSpace.AddLine(ptst,pten),例:创建两点(1,1,0)与(15,15,0)之间的
2、直线。 Dim Zx As AcadLine Dim Ps(2) As Double Dim Pe(2) As Double Ps(0)=1:Ps(1)=1:Ps(2)=0 Pe(0)=15:Pe(1)=15:Pe(2)=0 Set Zx=AcadApp.ActiveDocument.ModelSpace.AddLine(Ps,Pe) AcadApp.ZoomAll,2 创建轻便多段线,用AddLightWeightPolyline方法可以创建轻便直线,应用该方法时要给出轻便多段线各顶点的二维坐标。 Dim Qx as AcadLWPolyline Set Qx=AcadApp.ActivaD
3、ocument. MoodlSpace.AddLightWeightPolyline(points) 多段线的凸度设置:使用SetBulge方法SetBulge 起点数,nn凸出参数,0代表直线,1代表半圆,介于01之间的劣弧为圆心角四分之一的正切值。,例:创建过三点(1,1)、(3,2)、(4,9) 的轻便多段线。 Dim Dx As AcadLWPolyline Dim Po(5) As Double Po(0)=1:Po(1)=1 Po(2)=3: Po(3)=2 Po(4)=4: Po(5)=9 Set Dx=AcadApp.ActiveDocument.ModelSpace.AddL
4、ightWeightPolyline(Po) Acadapp.ZoomExtents AcadApp.ZoomAll,3 创建圆,用AddCircle方法可以创建圆,应用该方法时要给出圆的圆心坐标和半径。 Dim y as AcadCircle Set y=AcadApp.ActivaDocument. MoodlSpace.AddCircle(ptcen,ra),例:创建圆心为(20,30,0),半径为5的圆。 Dim Y As AcadCircle Dim Pc(2) As Double Dim r As Double Pc(0) = 20: Pc(1) = 30: Pc(2) = 0 r
5、 = 5 Set Y = Acadapp.ActiveDocument.ModelSpace.AddCircle(Pc, r) Acadapp.ZoomExtents,4 创建圆弧,用AddArc方法可以创建圆弧,应用该方法时要给出圆弧的圆心坐标、半径、起始角度和终止角度。 Dim yh as AcadArc Set yh=AcadApp.ActivaDocument. MoodlSpace.AddArc(ptcen,ra,stang,enang),例:创建圆心为(20,30,0),半径为5,起始角为,终止角/8的圆弧。 Dim Yh As AcadArc Dim Ptcen(2) As Do
6、uble Dim ra As Double Dim sa As Double, ea As Double stang = 4 * Atn(1) enang = Atn(1) / 2 Ptcen(0) = 20: Ptcen(1) = 30: Ptcen(2) = 0 ra = 5 Set Yh = Acadapp.ActiveDocument.ModelSpace.AddArc(Ptcen, ra, stang, enang) Acadapp.ZoomExtents,5 接收用户输入点,用ActivaDocument.Utility 的GetPoint、GetDistance、GetAngle
7、函数可以接收用户输入的点坐标、半径、起始角度和终止角度。 ptcen = acadapp.ActiveDocument.Utility.GetPoint(, “指定圆心“) ra = acadapp.ActiveDocument.Utility.GetDistance(, “输入半径“) stang = acadapp.ActiveDocument.Utility.GetAngle(, “输入起始角度“) enang = acadapp.ActiveDocument.Utility.GetAngle(, “输入终止角度“),例:创建圆心为(20,30,0),半径为5,起始角为,终止角/8的圆弧
8、。 Dim Yh As AcadArc Dim Pc As Variant Dim r As Double Dim sa As Double, ea As Double Pc = Acadapp.ActiveDocument.Utility.GetPoint(, “指定圆心:“) r = Acadapp.ActiveDocument.Utility.GetDistance(, “输入半径:“) sa = Acadapp.ActiveDocument.Utility.GetAngle(, “输入起始角度“) ea = Acadapp.ActiveDocument.Utility.GetAngle
9、(, “输入终止角度“) Set Yh = Acadapp.ActiveDocument.ModelSpace.AddArc(Pc, r, sa, ea) Acadapp.ZoomExtents,本章小结,掌握创建二维图形的原理; 能创建直线、多段线、圆、圆弧对象; 会接收用户输入操作。,1 AutoCAD对象,AutoCAD对象分为以下类型:图形对象:例如直线(Lines)、球体(Sphere)、文本(Text)、尺寸(Dimensions)等。 样式设置对象:如线型样式(Linetypes)、标注样式(Dimstyles)等。 组织结构对象:如图层(Layers)、块(Blocks)等。
10、图形显示对象:如视图(View)、视口(Viewport)等。 AutoCAD应用程序(Application)和文档(Document),AutoCAD对象根据它们的不同功能,具有一定 的隶属关系。,2 连接AutoCAD,用VB语言编程进行AutoCAD二次开发,首先将VB与AutoCAD连接起来,需要以下两个步骤:在编写VB代码前,引用AutoCAD对象库。 编写VB程序代码,创建AutoCAD对象,启动AutoCAD。,一、引用AutoCAD对象库 工程/引用AutoCAD2006 Type Library二、创建AutoCAD对象,启动AutoCAD 实质是:引用 AutoCAD应用
11、程序对象(Application)AutoCAD应用程序对象的引用采用对象变量来完成。首先声明变量类型,然后使用Set语句将对象引用赋给变量。,Dim AcadApp as AcadApplication (在窗体代码声明段定义) Private Sub Form_Load() On Error Resume Next Set Acadapp=GetObject ( , “AutoCAD.Application”) If Err ThenErr.ClearSet Acadapp=CreatObject (, “AutoCAD.Application”)If Err ThenMsgBox (“请
12、检查是否安装了AutoCAD2006”)Exit SubEnd If End If AcadApp.Visible=Ture End Sub,三、说明1、GetObject函数返回文件中的 ActiveX 对象的引用。格式:GetObject(Pathname , class) Pathname包含待检索对象的文件的全路径和名称。 Class代表该对象的类的字符串,Class 参数的语法格式为 appname.objecttype。其中appname提供该对象的应用程序名称; objecttype为待创建对象的类型或类。 Pathname和Class二选一。,2、CreatObject函数创建
13、并返回一个对 ActiveX 对象的引用。格式 CreateObject(Class) Class要创建的应用程序名称和类 3、Set语句把对象的引用赋予变量或属性。,3 图形文件的使用,AutoCAD图形的绘制、编辑均在图形文件中进行,因此首先应掌握用VB控制AutoCAD图形文件的操作。,一、创建新图形文件使用文档Documents的Add方法。AcadApp. Documents.Add 二、打开已有图形文件使用文档Documents的Open方法。AcadApp. Documents.Oppen 文件名 可以用公用对话框控件的ShowOpen方法。 三、保存图形文件使用活动文档对象ActivetDocuments的Save方法。AcadApp. ActivetDocuments.Save 可以用公用对话框控件的ShowOpen方法。 四、关闭图形文件使用活动文档对象ActivetDocuments的Close方法。AcadApp. ActivetDocuments.Close,4 退出AutoCAD,使用AcadApp的Quit方法。AcadApp. QuitSet AcadApp=Nothing,本章小结,了解AutoCAD对象模型树结构; 重点掌握AutoCAD的连接原理及代码; 能对图形文件进行新建、打开、保存和关闭操作;,