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

CAD

开发平台:

MathCAD

  1. ;   =========================================
  2. ;   |                坡道软件               |
  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:pd( / old_err lay loop pt chang kuan ss pt1 pt2 pt3  
  15.        pt4 pt5 ang1 ang2 d a ang ptm)
  16.   (setq old_err *error*)
  17.   (setvar "CMDECHO" 0)
  18.   (setq lay (getvar "clayer"))
  19.   (command "layer" "m" "pd" "c" "y" "pd" "")
  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 chang (getdist pt "n台阶长度(最上面的)<2000>: "))
  37.   (if (null chang) (setq chang 2000.0)) 
  38.   (setq kuan (getdist "n台阶宽度(最上面的)<1500>: "))
  39.   (if (null kuan) (setq kuan 1500.0)) 
  40.   (progn
  41.     (setq ss (ssadd))
  42.     (setq pt1 (polar pt (* pi 1.5) kuan))
  43.     (setq pt2 (polar pt1 0 chang))
  44.     (setq pt3 (polar pt2 (* pi 0.5) kuan))
  45.     (command "pline" pt "w" "0" "0" pt1 pt2 pt3 "")
  46.     (setq ss (ssadd (entlast) ss))
  47.     (setq pt4 (polar pt 0 300))
  48.     (setq pt5 (polar pt 0 (- chang 300)))
  49.     (command "line" pt1 pt4 "")
  50.     (setq ss (ssadd (entlast) ss))
  51.     (command "line" pt2 pt5 "")
  52.     (setq ss (ssadd (entlast) ss))
  53.   )
  54.   (setq ang1 (angle pt1 pt4))
  55.   (setq ang2 (- pi ang1))
  56.   (setq d (/ 120.0 (sin ang1)))
  57.   (repeat (fix (/ kuan 120.0))
  58.     (setq pt1 (polar pt1 ang1 d))
  59.     (setq pt2 (polar pt2 ang2 d))
  60.     (command "line" pt1 pt2 "")
  61.     (setq ss (ssadd (entlast) ss))
  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 "" pt ang)
  69.     )
  70.   )
  71.   (setq a (getstring "nY移动/<N>: "))
  72.   (if (/= a "")
  73.     (progn
  74.       (setq ptm (getpoint pt "n另一点: "))
  75.       (command "move" ss "" pt ptm)
  76.     )
  77.   )
  78.   (command "layer" "s" lay "")
  79.   (redraw)(princ)
  80. )