autocad中大多數物件都是不支援non-uniform scale的,
但我這兩天卻遇到了類似的需求,
需要將線、多段線等物件進行不等比例縮放,
比如x方向放大2倍,y方向放大0.4倍,
於是就想著自己寫**實現,
但轉換矩陣怎麼計算卻被難住了,
(自己看的書還是遠遠不夠啊!)
從書架上翻出的第一本書中有類似的公式,
但怎麼用**實現沒有,
於是又找到一本《計算機圖形學》(影印版,c語言版,第二版,清華大學出版社),
11-5節(p424)裡面有現成的**,
於是就照著書中的**進行測試,
在敲**的時候,
居然忘了接小孩放學......
為了備忘,
將**分享在此。
測試**,
非常簡單,
權當拋磚引玉。
editor ed =doc.editor;
double sx = 2, sy = 3,sz = 1
;var ppr = ed.getpoint("
\n拾取點");
if (ppr.status != promptstatus.ok) return
;point3d refpt =ppr.value;
//matrix3d m = matrix3d.scaling(2, new point3d(5,3,1));
"\nthe scalearoundpoint matrix is: \n\n", m);
double ds = new
double ;
matrix3d m = new
matrix3d(ds);
promptentityresult per = ed.getentity("
\n拾取需要縮放的直線");
if (per.status != promptstatus.ok) return
;using (transaction tr =doc.transactionmanager.starttransaction())
直接變換直線是不行的,
autocad是不支援的,
於是採用變換直線端點的方式,
這種方式恰好能滿足我的需求。
c 相鄰數字不等比skew數
在 skew binary表示中,第 k 位的值x k表示x k 2 k 1 1 每個位上的可能數字是0 或 1,最後面乙個非零位可以是2,例如,10120 skew 1 2 5 1 0 2 4 1 1 2 3 1 2 2 2 1 0 2 1 1 31 0 7 6 0 44.前十個skew數是 0 ...
3 2 相鄰數字的基數不等比 skew數
問題定義 在 skew binary表示中,第 k 位的值 xk表示 xk.2k 1 1 每個位上的可能數字是 0 或1,最後面乙個非零位可以是 2,例如,10120 skew 1 2 5 1 0 2 4 1 1 2 3 1 2 2 2 1 0 2 1 1 31 0 7 6 0 44.前十個 ske...
C 實現AutoCAD批量Purge
傳說很久很久以前,久到不知道是2004年還是2005年初 在工作的第一家公司,為資料部門謝了一些cad輔助工具,幫助資料部門提高生產效率。當時用的是vba,略微看了一點lisp和objectarx,後邊幾年就沒有再進行過cad相關的開發了。昨天,乙個客戶說要幫忙寫乙個小程式,把資料夾下的cad檔案批...