(DEFUN C:ss () (setq oldclay (getvar "clayer")) ; 获得当前图层 (command "layer" "s" "dim" "") ; 设置新的图层(该图层必须已经生成) (INITGET 128 "Yes No") (SETQ my (GETKWORD "\n是否倒向?(Y/N) : ")) (setq p1 (getpoint "\n选点")) (setq ds (getpoint p1 "\n选点")) (setq x (car p1)) (setq y (cadr p1)) (setq x1 (car ds)) (setq y1 (cadr ds)) (setq xx (abs (- x x1))) (setq yy (abs (- y y1))) (if (> xx yy) (PROGN (setq p2 (list x1 y)) (if (/= my "Yes") (setq p3 (mapcar '+ p1 '(0 -10.0 0.0) ) )
(setq p3 (mapcar '+ p1 '(0 10.0 0.0) ) ) ) )
(PROGN (setq p2 (list x y1)) (if (/= my "Yes") (setq p3 (mapcar '+ p1 '(10 -10.0 0.0) ) )
(setq p3 (mapcar '+ p1 '(-10 10.0 0.0) ) ) ) ) )
(COMMAND "DIMLINEAR" p1 p2 p3) (setq oldclay1 (getvar "clayer")) ; 获得当前图层 (command "layer" "s" "BY OTHERS" "") ; 设置新的图层(该图层必须已经生成) (setq dist(DISTANCE ds p2)) (if (> dist 10 )(COMMAND "line" ds p2 "")) (command "layer" "s" oldclay1 "") (while (/= (setq dss (getpoint ds "\nNext point: ")) NIL ) (setq ds dss) (setq P1 P2) (setq x (car p1)) (setq y (cadr p1)) (setq x1 (car dss)) (setq y1 (cadr dss)) (if (> xx yy) (setq p2 (list x1 y)) (setq p2 (list x y1)) ) (COMMAND "dimcontinue" p2) ; (setq oldclay2 (getvar "clayer")) ; 获得当前图层 ; (command "layer" "s" "0" "") ; 设置新的图层(该图层必须已经生成) ; (setq dist(DISTANCE ds p2)) ; (if (> dist 10 )(COMMAND "line" ds p2 "")) ; (command "layer" "s" oldclay2 "")
) (command "layer" "s" oldclay "") ; 恢复以前图层 (COMMAND ".UNDO" "END") (PRINC) )
|