AutoCAD中實現不等比例縮放

2022-09-21 19:45:06 字數 1115 閱讀 7723

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檔案批...