AutoLISP纹理地板图案,代码如下。
(defun c:test()
(setvar "cmdecho" 0)
(setq os (getvar "osmode"))
(setq oldclayer (getvar "clayer"))
(setvar "osmode" 0)
(command "undo" "be")
(setq pt1 (getpoint "木质地板左下角基准点:"))
(setq w (getdist pt1 "\n宽度<70>:")) (if (null w) (setq w 70))
(setq h (getdist pt1 "\n高度<70>:")) (if (null h) (setq h 70))
(setq m (getint "\n列数---<4>:")) (if (null m) (setq m 4))
(setq n (getint "\n行数|||<4>:")) (if (null n) (setq n 4))
(setq m1 (getint "\n每块水平分割---<3>:")) (if (null m1) (setq m1 3))
(setq n1 (getint "\n每块垂直分割|||<3>:")) (if (null n1) (setq n1 3))
(setq gap_w (/ w n)
gap_h (/ h m)
gap_w1 (/ gap_w n1)
gap_h1 (/ gap_h m1)
)
(command "-layer" "m" "str" "c" 4 "" "")
(command "line" pt1 (polar pt1 0 w) "")
(command "array" (entlast) "" "r" (1+ m) 1 gap_h)
(command "line" pt1 (polar pt1 (/ pi 2) h) "")
(command "array" (entlast) "" "r" 1 (1+ n) gap_w)
(setq i 1 pa pt1)
(repeat m
(setq j 1)
(repeat n
(setq pb pa)
(if (or (and (= rem i 2) 1) (= (rem j 2) 1)) (and (= (rem i 2) 0) (= (rem j 2) 0)))
(repeat (1- m1)
(setq pb (polar pb (/ pi 2) gap_h1))
(command "line" pb (polar pb 0 gap_w) "")
)
(repeat (1- n1)
(setq pb (polar pb 0 gap_w1))
(command "line" pb (polar pb (/ pi 2) gap_h) "")
)
)
(setq pa (polar pa 0 gap_w) pb pa)
(setq j (1+ j))
(setq pa (polar pt1 (/ pi 2) (* i gap_h)))
(setq i (1+ i))
)
(command "-layer" "m" "dim" "c" 1 "" "")
(command "dim1" "ver" pt1 (polar pt1 (/ pi 2) h) (polar pt1 pi 10) "")
(command "dim1" "hor" pt1 (polar pt1 0 w) (polar pt1 (* pi 1.5) 10) "")
(command "undo" "e")
(setvar "osmode" os)
(setvar "clayer" oldclayer)
(prin1)
)
代码如下。
越来越多代码。