创建图纸空间视口

AutoCAD ActiveX/VBA

 
创建图纸空间视口
 
 
 

可以使用 AddPViewport 方法创建图纸空间视口。此方法需要一个中心点以及新建视口的宽度和高度。在创建视口之前,请使用 ActiveSpace 特性将图纸空间设置为当前空间(一般通过将 TILEMODE 设置为 0 来完成)。

在创建 PViewport 对象后,可以设置视图本身的特性,例如观察方向(Direction 特性)、透视图的镜头长度(LensLength 特性)和栅格显示(GridOn 特性)。还可以控制视口本身的特性,例如图层(Layer 特性)、线型(Linetype 特性)和线型缩放(LinetypeScale 特性)。

创建并启用浮动视口

本样例说明如何将 AutoCAD 切换到图纸空间、创建浮动视口、设置视图以及启用视口。

Sub Ch9_SwitchToPaperSpace()
   ' 将活动空间设置为图纸空间
    ThisDrawing.ActiveSpace = acPaperSpace
      
   ' 创建图纸空间视口
    Dim newVport As AcadPViewport
    Dim center(0 To 2) As Double
    center(0) = 3.25
    center(1) = 3
    center(2) = 0
    Set newVport = ThisDrawing.PaperSpace. _
                              AddPViewport(center, 6, 5)
      
   ' 修改视口的观察方向
    Dim viewDir(0 To 2) As Double
    viewDir(0) = 1
    viewDir(1) = 1
    viewDir(2) = 1
    newVport.direction = viewDir
      
   ' 启用视口
    newVport.Display True
      
   ' 切换到模型空间
    ThisDrawing.MSpace = True
      
   ' 将 newVport 置为当前
   ' (并非始终需要,但建议如此)
    ThisDrawing.ActivePViewport = newVport
      
   ' 在模型空间中进行范围缩放
    ZoomExtents
      
   ' 关闭模型空间编辑
    ThisDrawing.MSpace = False
      
    ' 在图纸空间中进行范围缩放
    ZoomExtents
End Sub

上述代码中的步骤顺序非常重要。一般来讲,步骤的顺序必须与它们在 AutoCAD 命令行中的执行顺序相同。唯一不能预期的操作是定义视图和启用视口。

注意要设置或修改视图的特性(视图方向、焦距等),必须将 Viewport 对象的 Display 方法设置为关 (FALSE);并且,必须将 Display 方法设置为开 (TRUE),才能将视口置为当前。

创建四个浮动视口

本样例使用了“创建和启用浮动视口”中的例子,并以之为基础继续创建了四个浮动视口,同时分别将每个视口的视图设置为俯视图、主视图、右视图和等轴测视图。每个视图按图纸空间比例的一半进行缩放。为确保在这些视口中能够看到一些内容,可以在进行本样例之前创建一个三维实体球体。

Sub Ch9_FourPViewports()
    Dim topVport, frontVport As AcadPViewport
    Dim rightVport, isoVport As AcadPViewport
    Dim pt(0 To 2) As Double
    Dim viewDir(0 To 2) As Double
    ThisDrawing.ActiveSpace = acPaperSpace
    ThisDrawing.MSpace = True
' 获取现有的 PViewport 并使其成为 topVport
    pt(0) = 2.5: pt(1) = 5.5: pt(2) = 0
    Set topVport = ThisDrawing.ActivePViewport
    ' 对俯视图不需要设置 Direction
    topVport.center = pt
    topVport.width = 2.5
    topVport.height = 2.5
    topVport.Display True
    ThisDrawing.MSpace = True
    ThisDrawing.ActivePViewport = topVport
    ZoomExtents
    ZoomScaled 0.5, acZoomScaledRelativePSpace
' 创建并设置 frontVport
    pt(0) = 2.5: pt(1) = 2.5: pt(2) = 0
    Set frontVport = ThisDrawing.PaperSpace. _
            AddPViewport(pt, 2.5, 2.5)
    viewDir(0) = 0: viewDir(1) = 1: viewDir(2) = 0
    frontVport.direction = viewDir
    frontVport.Display acOn
    ThisDrawing.MSpace = True
    ThisDrawing.ActivePViewport = frontVport
    ZoomExtents
    ZoomScaled 0.5, acZoomScaledRelativePSpace
' 创建并设置 rightVport
    pt(0) = 5.5: pt(1) = 5.5: pt(2) = 0
    Set rightVport = ThisDrawing.PaperSpace. _
            AddPViewport(pt, 2.5, 2.5)
    viewDir(0) = 1: viewDir(1) = 0: viewDir(2) = 0
    rightVport.direction = viewDir
    rightVport.Display acOn
    ThisDrawing.MSpace = True
    ThisDrawing.ActivePViewport = rightVport
    ZoomExtents
    ZoomScaled 0.5, acZoomScaledRelativePSpace
' 创建并设置 isoVport
    pt(0) = 5.5: pt(1) = 2.5: pt(2) = 0
    Set isoVport = ThisDrawing.PaperSpace. _
                             AddPViewport(pt, 2.5, 2.5)
    viewDir(0) = 1: viewDir(1) = 1: viewDir(2) = 1
    isoVport.direction = viewDir
    isoVport.Display acOn
    ThisDrawing.MSpace = True
    ThisDrawing.ActivePViewport = isoVport
    ZoomExtents
    ZoomScaled 0.5, acZoomScaledRelativePSpace
'完成:在所有视口中执行重生成
    ThisDrawing.Regen True
End Sub