AutoCAD二次开发(VBA) 联系客服

发布时间 : 星期三 文章AutoCAD二次开发(VBA)更新完毕开始阅读de6e21086c85ec3a87c2c560

? GetRemoteFile:取得远程文件名; ? GetString:取得字符串; ? GetSubEntity:取得子对象。

下面就用以GetString方法和GetPoint方法分别编写应用程序。 1.GetString方法

GetString方法提示用户在AutoCAD的命令输入一个字符串。该方法需要两个参数,第一个参数控制输入字符串的空格,如果设置为0,表示不接受空格,一旦出现空格就可以终止输入;如果设置为1,则字符串可以包含空格,需要使用回车键来终止输入;第二个参数是提示字符。

下面的程序显示“请输入你的姓名:”的提示,需要按下回车键来结束输入,输入的字符串允许带有空格,输入的字符串存储在InPutStr变量中,并用信息框显示:

Dim InPutStr As String Me.Hide

InPutStr = ThisDrawing.Utility.GetString(1, vbCrLf & \请输入你的姓名:\MsgBox \输入的姓名是:\2.GetPoint方法

GetPoint方法提示用户在AutoCAD的命令提示中输入点坐标。该方法需要用两个参数:起点坐标(可选)和提示字符串。如果有起点,AutoCAD从该点到取得的点绘制一条伸缩线,如果需要控制用户输入格式,则在使用该方法之前调用InitializeUserInptu方法。

下面的程序提示输入两个点,然后使用这两个点作为起点和终点绘直线。 Dim SP As Variant Dim EP As Variant Dim Hint1 As String Dim Hint2 As String

Hint1 = vbCrLf & \输入直线起点:\Hint2 = vbCrLf & \输入直线终点:\Me.Hide

'取得第一点,基准点缺省

SP = ThisDrawing.Utility.GetPoint(, Hint1)

'使用上面取得的输入点作为基准点,再取得一点 EP = ThisDrawing.Utility.GetPoint(SP, Hint2) '使用两点绘制一直线

ThisDrawing.ModelSpace.AddLine SP, EP ThisDrawing.Application.ZoomAll

14.4.6使用AutoCAD命令行

进行设置AutoCAD环境或者绘图等其他操作,最简单的方法是使用SendCommand方法将命令传送到AutoCAD的命令提示行。

SendCommand方法需要一个参数,该参数即为要传送的命令字符串,该字符串里必须包含有命令所需要的参数,并且按照命令的执行顺序依次排列。其中字符串中的空格相当于ASCII码,表示在键盘上按下了Enter键。与AutoLISP环境不同,在VBA程序中,如果调用SendCommand,但没有参数是无效的。

下面的程序先在点(10,10,0)和点(20,22,0)之间绘制一直线,然后以点(20,22,0)为圆心,绘制一个半径为5的圆,最后以点(20,30,0)为起点,以字高为5,倾斜30°绘制文字。

ThisDrawing.SendCommand \ 20,22,0 \ThisDrawing.SendCommand \

ThisDrawing.SendCommand \采矿工程' \

使用SendCommand方法需要注意的是,在每个字符串的结尾都有一个空格,这是相当于输入命令以后,按下Enter键,开始执行命令。

14.4.7基本图形绘制

与直接使用AutoCAD一样,在VBA应用程序对图形的操作中,首先是绘制图形对象,只有有了图形对象,才能进行其他的操作,例如编辑、打印等。

在VBA应用程序中,可以绘制和编辑几乎所有的AutoCAD实体对象,从最简单的点和直线到多段线和文字,以及关联的剖面线对象等。可以将实体对象添加到当前的模型空间中,也可以将实体对象创建在图纸空间或者块中。

在直接使用AutoCAD绘图时,用户可以使用几种不同的方法来绘制相同的实体对象,但是,在ActiveX Automation中,绘制一个实体只有一种方法。使用CreateObject或Dim和New关键字绘制实体对象的VB和VBA方法只能用来创建AutoCAD Application对象,所有其他AutoCAD实体对象都必须使用AutoCAD环境中提供的Add或Add方式来绘制。

所有的图形对象都是创建在ModelSpace集合、PaperSpace集合或者Block集合上的对象,这三个集合分别对应AutoCAD的模型空间、图纸空间和块。ModelSpace集合是由对象的ModelSpace属性返回;而PaperSpace集合则是由对象的PaperSpace属性返回。在这些空间上绘制图形,用户可以直接使用这些集合对象,这时需要将实体对象设置到当前激活图层。 14.4.7.1绘制点对象

1.点样式

点的样式以及点的大小是可以设置的。AutoCAD提供了20种点样式,点的大小尺寸可以是相对于屏幕坐标,也可以是相对于绝对坐标。系统变量是PDMODE和PDSIZE用于控制点对象的样式和大小。

2.绘制点对象

Dim PointObj As AcadPoint Dim pP(0 To 2) As Double '点的位置 pP(0) = 12 pP(1) = 12 pP(2) = 0 '绘制点

Set PointObj = ThisDrawing.ModelSpace.AddPoint(pP) '设置系统变量,设置点的样式与大小 ThisDrawing.SetVariable \ThisDrawing.SetVariable \14.4.7.2绘制直线

直线是AutoCAD中最基本的对象,可以是单段线段,也可以是连续折线段。使用指定

坐标点的方式绘制直线较方便。默认的直线线型是CONTINUOUS,但在实际图形中,许多对象需要使用其他的线型,在编写应用程序时也可以设置线型。

Dim LineObj As AcadLine Dim SP(0 To 2) As Double Dim EP(0 To 2) As Double '起点坐标 SP(0) = 0 SP(1) = 0 SP(2) = 0 '终点坐标 EP(0) = 100 EP(1) = 50 EP(2) = 0 '绘制直线

Set LineObj = ThisDrawing.ModelSpace.AddLine(SP, EP)

可以使用LineObj对象的Linetype属性改变线型,以满足编写应用程序需求。 Dim LTname As String LTname = \

'加载线型文件“acadiso.lin”

acadDoc.Linetypes.Load LTname, App.Path & \ LineObj.Linetype = \ LineObj.LinetypeScale = 5 LineObj.Update 14.4.7.3绘制圆

绘制圆需要使用AddCircle方法,该方法需要两个参数。第一个参数是设置圆的圆心坐标,第二个参数设置圆的半径。

下面的程序绘制一个圆心坐标为(10,10,0)、半径为100的圆。 Dim CenP(0 To 2) As Double Dim R As Double CenP(0) = 10 CenP(1) = 10 CenP(2) = 0 R = 100

Call ThisDrawing.ModelSpace.AddCircle(CenP, R) 14.4.7.4绘制圆弧

绘制圆弧需要使用AddArc方法,该方法需要四个参数。第一个参数为圆心坐标,第二个参数为圆弧半径,第三个参数为圆弧起始角度,第四个参数为圆弧的终止角度。

下面的程序要绘制一个1/4圆,圆心坐标为(100,0,0),圆弧半径为100,起始角度为0°,终止角度为90°。这里需要注意的是,在编写应用程序给定角度时,需要按弧度给变量赋值。

Dim ArcObj As AcadArc Dim CenP(0 To 2) As Double Dim R As Double Dim SAng As Double

Dim EAng As Double CenP(0) = 100 CenP(1) = 0 CenP(2) = 0 R = 100 SAng = 0

EAng = 3.14159265 / 2

Set ArcObj = ThisDrawing.ModelSpace.AddArc(CenP, R, SAng, EAng) 14.4.7.5绘制椭圆

绘制椭圆需要使用AddEllipse方法,该方法需要三个参数。第一个参数为椭圆中心坐标,第二个参数为主轴上一点,第三个参数为椭圆两轴的半径比例,它是一个小于1的数值。

Dim CenP(0 To 2) As Double Dim MajAxisP(0 To 2) As Double Dim Radt As Double '定义椭圆参数 CenP(0) = 100 CenP(1) = 100 CenP(2) = 0

MajAxisP(0) = 130 MajAxisP(1) = 100 MajAxisP(2) = 0 Radt = 0.6

Call ThisDrawing.ModelSpace.AddEllipse(CenP, MajAxisP, Radt) 请自行运行程序查看程序运行结果。 14.4.7.6绘制多段线

多段线是由多条线段组成的组合对象,这些线段可以是直线段,也可以是圆弧段。在VBA程序中,有两种方法绘制多段线对象:AddPolyline和AddLightWeightPolyline,其中,AddPolyline方法可以绘制二维或三维多段线,它的参数是一个多段线顶点的三维坐标;AddLightWeightPolyline方法只能绘制二维多段线,它的参数是多段线顶点的二维坐标。

下面的程序是应用AddLightWeightPolyline方法,以二维坐标点(10,10)、(20,20)、(30,30)、(40,40)与(50,50)为顶点绘制一条二维多段线,在开发采矿工程专业图形时,通常使用AddLightWeightPolyline方法绘制二维多段线。

Dim LWPLinObj As AcadLWPolyline Dim Pp(0 To 9) As Double Pp(0) = 10: Pp(1) = 10 Pp(2) = 20: Pp(3) = 20 Pp(4) = 30: Pp(5) = 30 Pp(6) = 40: Pp(7) = 40 Pp(8) = 50: Pp(9) = 50

Set LWPLinObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(Pp) 14.4.7.7绘制样条曲线

样条曲线在AutoCAD中是绘制在世界坐标系(WCS)中的XY平面上的。这种曲线在绘制煤层底板等高线及在编制煤矿瓦斯地质图中应用广泛。绘制样条曲线需要使用

AddSpline方法,该方法需要三个参数。第一个参数为样条曲线顶点的坐标,第二个参数和