AutoLISP纹理地板图案

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)
  )

代码如下。

越来越多代码。

作者:codee
文章千古事,得失寸心知。


原文地址:https://www.cnblogs.com/bimgoo/p/2502988.html