定义用户坐标系

AutoCAD ActiveX/VBA

 
定义用户坐标系
 
 
 

定义用户坐标系 (UCS) 对象以更改 (0, 0, 0) 原点的位置以及 XY 平面和 Z轴的方向。可以在三维空间中的任意位置放置 UCS 并定义其方向,并且可以定义、保存和调用所需任意数目的用户坐标系。坐标的输入和显示均相对于当前 UCS。

要标明 UCS 的原点和方向,请使用 UCSIconAtOrigin 特性,可以在 UCS 原点处显示 UCS 图标。如果已打开 UCS 图标(请参见 UCSIconOn 特性)但它没有显示在原点,则该图标将显示在由 UCSORG 系统变量定义的 WCS 坐标处。

可以使用 Add 方法创建新的用户坐标系。此方法需要输入四个值:原点的坐标、X 轴和 Y 轴上的坐标以及 UCS 的名称。

AutoCAD® ActiveX Automation 中的所有坐标都是在世界坐标系中输入的。使用 GetUCSMatrix 方法可以返回给定 UCS 的转换矩阵。由此转换矩阵可以找出等价的 WCS 坐标。

要激活 UCS 坐标系,请使用 Document 对象的 ActiveUCS 特性。如果对活动 UCS 进行更改,则必须将新的 UCS 对象重置为活动的 UCS 才能显示所做的更改。要重置活动的 UCS,只需再次调用更新的 UCS 对象的 ActiveUCS 特性即可。

有关定义 UCS 的详细信息,请参见《用户手册》中的“控制三维中的用户坐标系”。

创建新的 UCS,将其激活,并将一个点的坐标转换为 UCS 坐标

下面的子例程将创建新的 UCS,并将其设置为图形的活动 UCS。然后要求用户在图形中拾取一点,并返回该点的 WCS 和 UCS 坐标。

Sub Ch8_NewUCS()
    ' 定义所需的变量
    Dim ucsObj As AcadUCS
    Dim origin(0 To 2) As Double
    Dim xAxisPnt(0 To 2) As Double
    Dim yAxisPnt(0 To 2) As Double
    ' 定义 UCS 点
    origin(0) = 4: origin(1) = 5: origin(2) = 3
    xAxisPnt(0) = 5: xAxisPnt(1) = 5: xAxisPnt(2) = 3
    yAxisPnt(0) = 4: yAxisPnt(1) = 6: yAxisPnt(2) = 3
      
    ' 将 UCS 添加到
    ' UserCoordinatesSystems 集合
    Set ucsObj = ThisDrawing.UserCoordinateSystems. _
             Add(origin, xAxisPnt, yAxisPnt, "New_UCS")
    ' 显示 UCS 图标
    ThisDrawing.ActiveViewport.UCSIconAtOrigin = True
    ThisDrawing.ActiveViewport.UCSIconOn = True
      
    ' 使新的 UCS 成为活动的 UCS
    ThisDrawing.ActiveUCS = ucsObj
    MsgBox "The current UCS is : " & ThisDrawing.ActiveUCS.Name _
            & vbCrLf & " Pick a point in the drawing."
      
    ' 找出某一点的 WCS 和 UCS 坐标
    Dim WCSPnt As Variant
    Dim UCSPnt As Variant
      
    WCSPnt = ThisDrawing.Utility.GetPoint(, "Enter a point: ")
    UCSPnt = ThisDrawing.Utility.TranslateCoordinates _
             (WCSPnt, acWorld, acUCS, False)
      
    MsgBox "The WCS coordinates are: " & WCSPnt(0) & ", " _
             & WCSPnt(1) & ", " & WCSPnt(2) & vbCrLf & _
             "The UCS coordinates are: " & UCSPnt(0) & ", " _
             & UCSPnt(1) & ", " & UCSPnt(2)
End Sub