標籤:

CAD下生成隨機圖案

某鑽研黑科技的基友讓我在CAD裡面生成黑白隨機圖案給他加工一個器件用,生成圖案很容易,但是加工廠一定要CAD的矢量圖文件,雖然此基友天縱英才,可惜不懂搬磚,所以找上我了,我考慮了一下AI點陣圖文件轉制的方案,行不通,AI會把方塊邊緣擬合掉。所以想來想去只能在CAD下面靠命令自己搞。

隱隱約約覺得Auto LISP可以搞定,但是因為沒學過,網上找了本教材看了幾個小時,再搜索搜索搞定了,思路超簡單,雙循環形成n階方陣,任意位置(i,j)處生成一個0~9的隨機數,0~4則畫框,5~9跳過,生成之後用H命令把所有框填滿就OK。題圖背景就是這段代碼生成的。

分享一下,可能有其他朋友會需要。

;(i,i) is the coordinate of start (setq i 0)(setq j 0);(m,n) is the coordinate of end(setq m 200)(setq n 200);Double loop (while (<= i m) (while (<= j n) ;Random Number Generator(0~9) (setq n3 (rtos (rem (getvar "Date") 1) 2 16)) (setq n3 (substr n3 18 1) n3 (atoi n3)) (setq n4 (rem (getvar "CPUTICKS") 10)) (setq p (fix (rem (+ n3 n4) 10))) (while (< p 5) (command "rectang" (list i j) (list (+ 1 i) (+ 1 j))) (setq p 5) ) (setq j (+ 1 j)) ) (setq i (+ 1 i)) (setq j 0))

第一次用Auto LISP在CAD裡面搞事,感覺還是挺好用,但是不得不吐槽兩點

1、LISP的括弧實在是太TMD花眼了,不在乎可讀性的時候寫個一行流感覺也不錯呢~

(setq i 0)(setq j 0)(setq m 5)(setq n 5)(while (<= i m) (while (<= j n)(setq n3 (rtos (rem (getvar "Date") 1) 2 16))(setq n3 (substr n3 18 1) n3 (atoi n3))(setq n4 (rem (getvar "CPUTICKS") 10))(setq p (fix (rem (+ n3 n4) 10)))(while (< p 5)(command "rectang" (list i j) (list (+ 1 i) (+ 1 j)))(setq p 5))(setq j (+ 1 j)))(setq i (+ 1 i))(setq j 0))

2、Auto LISP不是LISP,這貨竟然沒有隨機數Random,還要自己搞一個,還好已經有大神寫了,免去不少功夫。

推薦閱讀:

使用Python創建AutoCAD DXF文檔
那些你知道,或是不知道的AutoCAD小秘密-009:關於字體的那些事
那些你知道,或是不知道的AutoCAD小秘密-011:屬性塊——能改文字的塊
如何用AutoCAD中3D模型直接生成模型的2D三視圖?
那些你知道,或是不知道的AutoCAD小秘密-004:和Excel有個約會

TAG:AutoCAD |