.net AutoCAD二次開發,PDF打印,UCS轉換DCS坐標系問題


用C#進行AutoCAD開發PDF打印機,會遇到打印位置偏差的情況,通過查詢資料,這些因為坐標系不同的原因,畫圖使用的是UCS坐標,打印使用的是DCS坐標。

根據查對資料,有三種解決方法:

第一種:參考http://bbs.mjtd.com/thread-169479-1-1.html,對於視圖方向與Z軸平行的情況,先Point3d ptTarget = Application.GetSystemVariable("TARGET");然后將打印范圍的X和Y分別減去ptTarget的X和Y值即可。

第二種:參考https://www.jixie5.com/jiaocheng/476.html,在圖紙中將TARGET恢復成默認值:0,0,0。

第三種:參考https://www.cnblogs.com/suncoolcat/p/3395455.html,利用ObjectARX 中有acedTrans()函數,進行坐標轉換。該參考文章中,使用的CAD版本為CAD2014前的,對應CAD2014后的,調用方法改為:

[DllImport("accore.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "acedTrans")]
private static extern int acedTrans(double[] point, IntPtr fromResbuf, IntPtr toResbuf, int displacement, double[] result);

其它方法不變。

第四種:不應用com庫,直接用Autodesk.AutoCAD.Internal.UcsToDisplay 函數將UCS轉換成DCS 坐標打印圖紙


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM