也很简单啊,自己做一个函数。以下的函数基本实现了这个功能,不过实际应用中自己还要完善一下。

- [FONT=courier new]
- Sub SetUCS(ByVal Origin As Variant, ByVal LineObj As AcadLine)
- Dim ucsObj As AcadUCS
-
- On Error Resume Next
-
- '先求出原点在直线上的投影。
- Dim Ang As Double
- Ang = ThisDrawing.Utility.AngleFromXAxis(LineObj.StartPoint, Origin)
- Dim Dis As Double
- Dis = Sqr((LineObj.StartPoint(0) - Origin(0)) ^ 2 + (LineObj.StartPoint(1) - Origin(1)) ^ 2)
- Dim NewOrigin As Variant
- NewOrigin = ThisDrawing.Utility.PolarPoint(LineObj.StartPoint, LineObj.Angle, Dis * Cos(LineObj.Angle - Ang))
- '再求出与直线垂直的一个点。
- Dim NewyAxisPoint As Variant
- NewyAxisPoint = ThisDrawing.Utility.PolarPoint(NewOrigin, LineObj.Angle + ThisDrawing.Utility.AngleToReal(90, acDegrees), 1)
-
- Set ucsObj = ThisDrawing.UserCoordinateSystems.Add(NewOrigin, LineObj.StartPoint, NewyAxisPoint, "MyUCS")
- ThisDrawing.ActiveUCS = ucsObj
- End Sub
- Sub Test()
- Dim Origin(0 To 2) As Double
- Dim xAxisPoint(0 To 2) As Double
- Dim yAxisPoint(0 To 2) As Double
-
- Origin(0) = 2: Origin(1) = 2: Origin(2) = 0
- xAxisPoint(0) = 3: xAxisPoint(1) = 2: xAxisPoint(2) = 0
- yAxisPoint(0) = 2: yAxisPoint(1) = 3: yAxisPoint(2) = 0
-
- Dim LineObj As AcadLine
- Set LineObj = ThisDrawing.ModelSpace.AddLine(xAxisPoint, yAxisPoint)
-
- Call SetUCS(Origin, LineObj)
- End Sub
- [/FONT]
|