sharksun 发表于 2004-6-12 09:20:00

[求助]关于用户坐标的问题。

为了画图方便。使用了用户自定义坐标,而且已经成功的移动了坐标。但是再作图的时候,为什么还是以原坐标为基准啊?下面是代码一部分,大家看看:


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>

雪山飞狐_lzh 发表于 2004-6-12 13:54:00

Set AcadApp.ActiveDocument.ActiveUCS = ucsObj


AcadApp.ActiveDocument.ActiveUCS是对象,应该用Set语句赋值

sharksun 发表于 2004-6-12 15:46:00

飞狐兄弟,应该不是你说的那样。


写法应该没问题的。


很多书上都是那么写的。我按你说的方法试了一下,提示:ID为空。

sharksun 发表于 2004-6-12 16:02:00

原来还要用transformBy方法将在wcs中创建的的实体转换到ucs中:


               Dim TransMatrix As Variant<BR>               TransMatrix = ucsObj.GetUCSMatrix()<BR>               pointObj.TransformBy (TransMatrix)


转换之后还要删除原来的对象。:(


我要画一个平面的三视图,为了画图方便,需要定义3个用户坐标。有没有方便的方法呢?就像转到一个用户坐标中后,直接可以在里面画?


谢谢指教。

雪山飞狐_lzh 发表于 2004-6-12 16:13:00

AutoCAD<SUP class=SuperScript>&reg;</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 坐标。

sharksun 发表于 2004-6-12 16:21:00

我要画一个平面的三视图,为了画图方便,需要定义3个用户坐标。有没有方便的方法呢?就像转到一个用户坐标中后,直接可以在里面画?


大家都用代码画过这样的图吧,不知道如何做能方便些。


如果用转换矩阵的话,那还不如现在世界坐标下话,画完之后全部选择或者形成块,再move到合适的位置。


感谢飞狐兄。
页: [1]
查看完整版本: [求助]关于用户坐标的问题。