今天在進行幾何運算時,發現在UCS非世界座標系的時候運算結果不正確
這與我以往的認知出現了衝突,我個人的經驗,只有在使用者互動的時候(如GetPoint,GetEntity),才用得到ucs。
當一個圖元已經從id拿到,轉化為Entity時,從改圖元屬性上取出的屬性應該為均為世界座標系。
經過我的排查後發現,Line的Delta屬性居然在不同的UCS下取值不同。我原以為Delta屬性就是起點到終點的向量。
這裡我寫了一個最小化測試Demo
var line1 = new Line(Point3d.Origin,new Point3d(100,0,0));
line1.Delta.Print();
line1.StartPoint.GetVectorTo(line1.EndPoint).Print();
其中print函式是Editor.WriteMessage(); 輸出到命令列。
此程式碼在UCS為世界座標系時輸出是這樣的
當修改了UCS後,輸出如下
由此可見,“從圖元上取得的屬性值均為世界座標系”,此說法雖然大部分情況正確,但未必完全正確。