' 更新圆
circleObj.Update End Sub
第五节:重置活动对象
更改大多数活动对象,如活动的图层和活动的线型,将立即显示出来。然而,还有几个活动的对象必须重置以使更改显示出来。这些对象为活动的字型、活动的UCS和活动的视口。如果这些对象的任何一个做过更改,该对象必须重置,并且必须调用Regen方法以使更改显示出来。
要重置这些对象,只要使用更新了的对象,设定其ActiveTextStyle、ActiveUCS或ActiveViewport属性。
重新设定活动视口
以下例子在活动视口中更改栅格显示,然后重置视口为活动视口以显示更改。
Sub Ch3_ResetActiveViewport() ' 切换活动视口的栅格设定
ThisDrawing.ActiveViewport.GridOn = _ Not (ThisDrawing.ActiveViewport.GridOn)
' 重新设定活动视口
ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewport End Sub
第六节:设定和返回系统变量
Document对象提供SetVariable和GetVariable方法以设定和返回AutoCAD系统变量。 设定MAXSORT系统变量
本例使用SetVariable方法分配整数给MAXSORT系统变量,以设定最大数目的符号名称或通过命令列表排序的图块名称。
ThisDrawing.SetVariable \
第七节:精确制图
用AutoCAD你可在没有乏味计算的基础上创建具有精确几何体的图形。通常你可在不懂得坐标的情况下指定精确的点。在不离开图形屏幕的状态下,你可在图形上执行并显示多种类型的状态信息。
在此,AutoCAD ActiveX自动操作不能提供以下AutoCAD性能的相应方法:
? ? ?
设定等轴捕捉和栅格 设定对象捕捉
指定对象的等距测量或分段等分对象
本节内容:
调整捕捉和栅格对齐 使用正交模式 绘制构造线 计算点和值 计算面积
调整捕捉和栅格对齐
你可将栅格作为可见的辅助线使用,也可打开捕捉模式以约束光标运动。通过设定间隔,你可调整捕捉和栅格对齐。你可旋转该对齐方式,或你可将其设定为用于等轴图形。 更改捕捉角度和基点
如果你需要通过指定的对齐方式和角度制图,你可旋转捕捉角度。当捕捉或正交模式打开时,该旋转角度重新对齐十字光标并强迫光标到新的对齐方式上。在以下例子中,捕捉角度调整到与锚支架匹配的角度。通过这样的调整,你可使用栅格在30度角度状态下绘制图形。
捕捉角度旋转的中心点为捕捉的基点。如果你需要对齐阴影图案,你可更改通常被设为0,0的基点。 要旋转捕捉角度,使用SnapRotationAngle属性。要更改捕捉角度旋转的基点,使用SnapBasePoint属性。
注意:这两个属性都需要调用Update方法以更新AutoCAD的显示。 更改捕捉基点和旋转角度
本例更改捕捉基点为(1,1),更改捕捉旋转角度为30度。栅格打开以使所做的更改可见。 Sub Ch3_ChangeSnapBasePoint() ' 打开活动视口的栅格
ThisDrawing.ActiveViewport.GridOn = True
' 更改捕捉基点为1, 1
Dim newBasePoint(0 To 1) As Double newBasePoint(0) = 1: newBasePoint(1) = 1
ThisDrawing.ActiveViewport.SnapBasePoint = newBasePoint
' 更改捕捉旋转角度为30度(0.575 弧度) Dim rotationAngle As Double rotationAngle = 0.575
ThisDrawing.ActiveViewport.SnapRotationAngle = rotationAngle
' 重置视口
ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewport End Sub
使用正交模式
你在绘制线或移动对象时,可使用正交模式以约束光标在水平或垂直的轴上(正交对齐是依赖于当前捕捉角度或UCS坐标)。正交模式是在你需要指定第二个点时被激活的。使用正交模式不仅可建立垂直或水平方向对齐,而且强迫平行或创建规则的偏移。
通过允许AutoCAD利用正交抑制可提高制图的速度。例如,你可在开始制图时打开正交模式以创建一系列的平行线。因为所有的线都被强迫在水平或垂直的轴上,你可更快地制图,因为你知道这些线是平行的。
当你移动光标时,定义位移的一个橡皮筋线将跟随在水平或垂直轴上,这要看光标离哪个轴更接近。在透视图中、或你在命令行输入坐标或指定对象捕捉时,AutoCAD会忽略正交模式。
要打开或关闭正交模式,使用OrthoOn属性,该属性需要输入逻辑值。设定TURE时打开正交模式,FALSE时关闭正交模式。 打开活动视口的正交模式
ThisDrawing.ActiveViewport.OrthoOn = True
绘制构造线
你可创建单向或双向无限延伸的构造线。单向延伸的构造线称为射线。而双向延伸的构造线称为构造直线。这些构造线可用于创建其它对象的参考。例如,你可使用构造线以查找三角形的中心、准备多视图中的同一构件,或创建用于对象捕捉的临时交点。
构造线不会更改图形的最大区域,也就是说,这些无限的尺寸不会影响缩放或视口。你可移动、旋转和复制构造线,就象你移动、旋转和复制其它对象一样。你可将构造线创建于构造线图层并在打印前冻结或关闭。
本节内容: 创建构造直线 查询构造直线 创建射线 查询射线 创建构造直线
构造直线可置于三维空间的任何位置并双向无限延伸。要创建构造直线,使用AddXLine方法。该方法通过两个点的方法指定线,你输入或选择两个点以定义方位。第一个点为基点,它做为构造线的中点。
添加构造直线
以下示例代码使用(5, 0, 0)和(1, 1, 0)两点创建构造直线。 Sub Ch3_AddXLine() Dim xlineObj As AcadXline Dim basePoint(0 To 2) As Double Dim directionVec(0 To 2) As Double
' 定义构造直线
basePoint(0) = 2#: basePoint(1) = 2#: basePoint(2) = 0#
directionVec(0) = 1#: directionVec(1) = 1#: directionVec(2) = 0#
' 在模型空间创建构造直线
Set xlineObj = ThisDrawing.ModelSpace.AddXLine _ (basePoint, directionVec) ThisDrawing.Application.ZoomAll End Sub
查询构造直线
当构造直线创建后,你可使用BasePoint属性查询构造直线的第一个点。用于创建构造直线的第二个点没有保存在对象中。而是使用DirectionVector属性以获取构造直线的方位矢量。 查询构造直线
本例查找上节所创建的构造直线的基点和方位矢量。 Dim BPoint As Variant Dim Vector As Variant BPoint = xlineObj.basePoint Vector = xlineObj.DirectionVector
创建射线
射线是在三维空间中开始于指定点并无限延伸的线。射线不是和构造直线一样双向延伸,而只是向单向延伸。正因为这样,射线可帮助减少由于众多的构造直线而产生的混乱。
和构造直线一样,射线在显示图形范围的命令中被忽略。 查询射线
当射线创建后,可使用BasePoint属性查询射线的第一个点。用于创建射线的第二个点没有被对象保存。然而可使用DirectionVector属性获取射线的方位矢量。 添加、查询和编辑射线对象
以下例程使用(5, 0, 0)和(1, 1, 0)两点创建射线对象。然后查询当前基点和方位矢量,并且在消息框中显示结果。随后更改方位矢量,接着又查询和显示基点和新的方位矢量。
Sub Ch3_EditRay() Dim rayObj As AcadRay
Dim basePoint(0 To 2) As Double Dim secondPoint(0 To 2) As Double
' 定义射线
basePoint(0) = 3#: basePoint(1) = 3#: basePoint(2) = 0# secondPoint(0) = 4#: secondPoint(1) = 4#: secondPoint(2) = 0#
' 在模型空间创建射线对象
Set rayObj = ThisDrawing.ModelSpace.AddRay _ (basePoint, secondPoint) ThisDrawing.Application.ZoomAll
' 查找射线的当前状态 MsgBox \射线的基点为: \rayObj.basePoint(0) & \rayObj.basePoint(1) & \rayObj.basePoint(2) & vbCrLf & _ \射线的方位矢量为: \
rayObj.DirectionVector(0) & \rayObj.DirectionVector(1) & \