为什么USC active不起作用
我在使用USC时遇到了一个问题,例如,我试图更改de USC以定位一个新点,并使用该点和之前创建的其他点添加一条线,我向您展示了我为此编写的代码片段。问题是,当我定义x0、y0和z0时,请注意,当我这样做时,它支持USC被更改(newUCS),因此x0、y0和z0由之前的USC定位。
向我的朋友致意
注:我知道m2,xm
如果此图纸。GetVariable(“UCSNAME”)=“”然后
使用此图纸
设置电流=。用户协调系统。添加(_
.GetVariable(“UCSORG”)_
.公用事业平移坐标(.GetVariable(“UCSXDIR”)、acUCS、acWorld、0)_
.公用事业平移坐标(.GetVariable(“UCSYDIR”)、acUCS、acWorld、0)_
“OriginalUCS”)
以结束
其他的
设置currUCS=此图形。ActiveUCS的当前UCS已保存
如果结束
如果m2
x3=xm-1:y3=m2+ym:z3=0
如果m2>0,则
x3=xm+1:y3=m2+ym:z3=0
如果结束
原点(0)=xm:原点(1)=ym:原点(2)=zm
xAxis(0)=x2:xAxis(1)=y2:xAxis(2)=z2
yAxis(0)=x3:yAxis(1)=y3:yAxis(2)=z3
设置newUCS=ThisDrawing。用户协调系统。添加(origin,xAxis,yAxis,“TestUCS”)
此图纸。ActiveUCS=新UCS的更改UCS
x0=0:y0=-距离(0):z0=0
起始点(0)=xm:起始点(1)=ym:起始点(2)=zm
端点(0)=x0:端点(1)=y0:端点(2)=z0
设置lineObj=ThisDrawing。模型空间。添加线(起点、终点)
此图纸。ActiveUCS=当前UCS重置为以前的UCS
末端接头 无论当前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 谢谢
我认为改变USC并使其成为当前版本解决了这个问题
我不知道transformby方法。阅读帮助我看到,这适用于绘图中的任何对象,这是一个强大的工具。
页:
[1]