lennie 发表于 2009-9-24 17:26:00

[求助]如何得到ucs和wus之间的夹角(已解决)

本帖最后由 作者 于 2009-9-29 8:29:14 编辑 <br /><br /> <p>&nbsp;&nbsp;&nbsp; blockRefObj.Rotation = ThisDrawing.Utility.AngleFromXAxis(ThisDrawing.GetVariable("UCSORG"), _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ThisDrawing.GetVariable("UCSXDIR"))</p><p>用这样的方法 块的旋转角度似乎是随机性的</p><p>详见5楼</p>

雪山飞狐_lzh 发表于 2009-9-24 18:30:00

<a href="http://www.mjtd.com/object/acad2004/idh_getucsmatrix.htm">http://www.mjtd.com/object/acad2004/idh_getucsmatrix.htm</a>

lennie 发表于 2009-9-25 11:16:00

<p>斑竹 UcS是已经有了的 如何获取啊 </p><p>能不能演示一下&nbsp; </p>

lennie 发表于 2009-9-28 02:02:00

<p>参考了网上的代码</p><p>&nbsp;&nbsp;&nbsp; Dim CurrUCS As AcadUCS<br/>&nbsp;&nbsp;&nbsp; If ThisDrawing.GetVariable("UCSNAME") = "" Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; With ThisDrawing<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set CurrUCS = .UserCoordinateSystems.Add( _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .GetVariable("UCSORG"), _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .GetVariable("UCSXDIR"), .GetVariable("UCSYDIR"), _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "OriginalUCS")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End With<br/>&nbsp;&nbsp;&nbsp; Else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set CurrUCS = ThisDrawing.ActiveUCS&nbsp; 'current UCS is saved<br/>&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp; blockRefObj.TransformBy (CurrUCS.GetUCSMatrix())</p><p>结果是块角度没变</p><p>其中有段代码改一下</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Utility.TranslateCoordinates(.GetVariable("UCSXDIR"), acUCS, acWorld, 0), _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Utility.TranslateCoordinates(.GetVariable("UCSYDIR"), acUCS, acWorld, 0), _<br/>这样块的角度就是ucs的两倍角(特殊情况下不一定)</p><p>怎么会这样啊 真是无语了</p>

lennie 发表于 2009-9-29 08:28:00

<p>&nbsp;&nbsp;&nbsp; Dim P0(2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; As Double&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp; Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(P1, TreeView1.SelectedItem.Key, 1, 1, 1, 0, KeyW)<br/>&nbsp;&nbsp;&nbsp; P0(0) = 0<br/>&nbsp;&nbsp;&nbsp; P0(1) = 0<br/>&nbsp;&nbsp;&nbsp; P0(2) = 0<br/>&nbsp;&nbsp;&nbsp; blockRefObj.Rotation = ThisDrawing.Utility.AngleFromXAxis(P0, ThisDrawing.GetVariable("UCSXDIR"))<br/></p>
页: [1]
查看完整版本: [求助]如何得到ucs和wus之间的夹角(已解决)