TJ1台阶绘制1.LSP
上传用户:sd555111
上传日期:2014-05-17
资源大小:31k
文件大小:2k
源码类别:

CAD

开发平台:

MathCAD

  1. ;   =========================================
  2. ;   |               台阶软件1               |
  3. ;   |       Ver: 1.0      作者: 迟俊岭      |
  4. ;   =========================================
  5. (defun *error*(st)
  6.   (if (and (/= st "Function cancelled")
  7.    (/= st "quit / exit abort")
  8.       )
  9.       (princ (strcat "错误: " st))
  10.   )
  11.   (setq *error* old_err)
  12.   (princ)
  13. )
  14. (defun C:tj1( / old_err lay loop pt ptt chang kuan ge kuan1 ss 
  15. pt1 pt2 pt3 s a ptm)
  16.   (setq old_err *error*)
  17.   (setvar "CMDECHO" 0)
  18.   (setq lay (getvar "clayer"))
  19.   (command "layer" "m" "tj" "c" "y" "tj" "")
  20.   (command "osnap" "nea")
  21.   (setq loop T)
  22.   (while loop
  23.     (initget 1 "R")
  24.     (setq pt (getpoint "nR参照点/<外墙线上任意一点(nea方式)>: "))
  25.     (cond
  26.       ((eq pt "R") (progn
  27.      (command "osnap" "int")
  28.      (setq pt (getpoint "n参照点(int方式): "))
  29.      (setq pt (getpoint pt "n相对坐标(格式:@X,Y或@长度<角度): "))
  30.      (setq loop nil)
  31.     ))
  32.       (t (setq loop nil))
  33.     )
  34.   )
  35.   (command "osnap" "non")
  36.   (setq ptt pt)
  37.   (setq chang (getdist pt "n台阶长度(最上面的)<3000>: "))
  38.   (if (null chang) (setq chang 3000)) 
  39.   (setq kuan (getdist "n台阶宽度(最上面的)<1200>: "))
  40.   (if (null kuan) (setq kuan 1200)) 
  41.   (setq ge (getint "n台阶阶数<3>: "))
  42.   (if (null ge) (setq ge 3)) 
  43.   (setq kuan1 (getdist "n台阶阶宽<300>: "))
  44.   (if (null kuan1) (setq kuan1 300))
  45.   (progn
  46.     (setq ss (ssadd))
  47.     (setq pt1 (polar pt (* pi 1.5) kuan))
  48.     (setq pt2 (polar pt1 0 chang))
  49.     (setq pt3 (polar pt2 (* pi 0.5) kuan))
  50.     (command "pline" pt "w" "0" "0" pt1 pt2 pt3 "")
  51.     (setq ss (ssadd (entlast) ss))
  52.   )
  53.   (setq s 1)
  54.   (repeat (1- ge)
  55.     (setq pt (polar pt (* pi 1.0) kuan1))
  56.     (setq pt1 (polar pt (* pi 1.5) (+ kuan (* kuan1 s))))
  57.     (setq pt2 (polar pt1 0 (+ chang (* kuan1 s 2))))
  58.     (setq pt3 (polar pt2 (* pi 0.5) (+ kuan (* kuan1 s))))
  59.     (command "pline" pt "w" "0" "0" pt1 pt2 pt3 "")
  60.     (setq ss (ssadd (entlast) ss))
  61.     (setq s (1+ s))
  62.   )
  63.   (setq a (getstring "nY旋转/<N>: "))
  64.   (if (/= a "")
  65.     (progn
  66.       (setq ang (getreal "n旋转角度<90>: "))
  67.       (if (null ang) (setq ang 90))
  68.       (command "rotate" ss "" ptt ang)
  69.     )
  70.   )
  71.   (setq a (getstring "nY移动/<N>: "))
  72.   (if (/= a "")
  73.     (progn
  74.       (setq ptm (getpoint ptt "n另一点: "))
  75.       (command "move" ss "" ptt ptm)
  76.     )
  77.   )
  78.   (command "layer" "s" lay "")
  79.   (redraw)(princ)
  80. )