[求助]关于用户坐标的问题。
为了画图方便。使用了用户自定义坐标,而且已经成功的移动了坐标。但是再作图的时候,为什么还是以原坐标为基准啊?下面是代码一部分,大家看看:Public Sub UCS_Down()<BR> ' 定义所需的变量<BR> Dim ucsObj As AcadUCS<BR> Dim origin(0 To 2) As Double<BR> Dim xAxisPnt(0 To 2) As Double<BR> Dim yAxisPnt(0 To 2) As Double<BR> Dim downBaseP3(0 To 2) As Double<BR> ' 定义UCS点<BR> origin(0) = GridWidth / 2: origin(1) = 2 * GridPerHeight: origin(2) = 0<BR> xAxisPnt(0) = GridWidth / 2 + 1000#: xAxisPnt(1) = 2 * GridPerHeight: xAxisPnt(2) = 0<BR> yAxisPnt(0) = GridWidth / 2: yAxisPnt(1) = 2 * GridPerHeight + 1000#: yAxisPnt(2) = 0<BR> <BR> ' 添加UCS到 UserCoordinatesSystems 集合<BR> Set ucsObj = AcadApp.ActiveDocument.UserCoordinateSystems.Add(origin, xAxisPnt, yAxisPnt, "Down_UCS")<BR> ' 显示UCS图标<BR> AcadApp.ActiveDocument.ActiveViewport.UCSIconAtOrigin = True<BR> AcadApp.ActiveDocument.ActiveViewport.UCSIconOn = True<BR> <BR> ' 使新的UCS成为活动的UCS<BR> AcadApp.ActiveDocument.ActiveUCS = ucsObj<BR><BR>End Sub<BR>
<FONT color=#f70938><b> downBaseP3(0) = 0: downBaseP3(1) = 0: downBaseP3(2) = 0</b></FONT>
<FONT color=#f70938><b> call AddPoint (downBaseP3)</b></FONT>
<FONT color=#f70938>画一个点(0,0,0),为什么还是以原来的世界坐标为基准呢? </FONT>
<FONT color=#f70938>谢谢指教。</FONT>
<FONT color=#f70938></FONT> Set AcadApp.ActiveDocument.ActiveUCS = ucsObj
AcadApp.ActiveDocument.ActiveUCS是对象,应该用Set语句赋值 飞狐兄弟,应该不是你说的那样。
写法应该没问题的。
很多书上都是那么写的。我按你说的方法试了一下,提示:ID为空。 原来还要用transformBy方法将在wcs中创建的的实体转换到ucs中:
Dim TransMatrix As Variant<BR> TransMatrix = ucsObj.GetUCSMatrix()<BR> pointObj.TransformBy (TransMatrix)
转换之后还要删除原来的对象。:(
我要画一个平面的三视图,为了画图方便,需要定义3个用户坐标。有没有方便的方法呢?就像转到一个用户坐标中后,直接可以在里面画?
谢谢指教。 AutoCAD<SUP class=SuperScript>®</SUP> ActiveX Automation 中的所有坐标都是在世界坐标系输入的。使用
<OBJECT id=alink_GetUCSMatrix_AXM_396220 type=application/x-oleobject classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11><PARAM NAME="Width" VALUE="0"><PARAM NAME="Height" VALUE="0"><PARAM NAME="Command" VALUE="ALink"><PARAM NAME="Item1" VALUE="acadauto.chm"><PARAM NAME="Item2" VALUE="GetUCSMatrix_AXM"></OBJECT>GetUCSMatrix 方法可以返回给定 <FONT style="BACKGROUND-COLOR: #316ac5" color=#ffffff>UCS</FONT> 的转换矩阵。由此转换矩阵可以找出等价的 WCS 坐标。 我要画一个平面的三视图,为了画图方便,需要定义3个用户坐标。有没有方便的方法呢?就像转到一个用户坐标中后,直接可以在里面画?
大家都用代码画过这样的图吧,不知道如何做能方便些。
如果用转换矩阵的话,那还不如现在世界坐标下话,画完之后全部选择或者形成块,再move到合适的位置。
感谢飞狐兄。
页:
[1]