无论当前UCS如何,在VBA中构建对象的坐标始终解释为WCS。
考虑到这一点,可以将上面发布的例程修改为:
- . . . .
- Dim varUCSMatrix as Variant
- . . . .
- ‘may not need to store current UCS
- If m2 < 0 Then
- x3 = xm - 1: y3 = -m2 + ym: z3 = 0
- ElseIf m2 > 0 Then
- x3 = xm + 1: y3 = m2 + ym: z3 = 0
- End If
- origin(0) = xm: origin(1) = ym: origin(2) = zm
- xAxis(0) = x2: xAxis(1) = y2: xAxis(2) = z2
- yAxis(0) = x3: yAxis(1) = y3: yAxis(2) = z3
- Set newUCS = ThisDrawing.UserCoordinateSystems.Add(origin, xAxis, yAxis, "TestUCS")
- ‘no need to set newUCS current
- varUCSMatrix = newUCS.GetUCSMatrix
- x0 = 0: y0 = -Dist(0): z0 = 0
- startPoint(0) = xm: startPoint(1) = ym: startPoint(2) = zm
- endPoint(0) = x0: endPoint(1) = y0: endPoint(2) = z0
- Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
- lineObj.TransformBy varUCSMatrix
- ‘ThisDrawing.ActiveUCS = currUCS '(possibly not needed)
- End Sub
|