- (defun c:smer
- (/ ang ang2 i long ps_cmdecho ps_luprec ps_osmode pt pt1 pts radius somode sunmer words)
- (setq ps_cmdecho (getvar "cmdecho")
- ps_osmode (getvar "osmode")
- ps_luprec (getvar "luprec")
- )
- (setvar "cmdecho" 0)
- (setvar "osmode" 0)
- (setvar "luprec" 0)
- (command "-layer" "n" "桩号标注" "c" "4" "桩号标注" "")
- (initvar 'words "输入文字大小(2~6)" 2.0)
- (initvar 'radius "输入引线起点圆的半径(建议1mm)" 1.0)
- (initvar 'long "输入引线长度" (* words 14))
- (setq sunmer (ssget '((0 . "*POLYLINE")))
- i 0
- )
- (while (< i (sslength sunmer))
- (setq pts (massoc (entget (ssname sunmer i)) 10))
- (repeat (length pts)
- (command "layer" "s" "桩号标注" "")
- (setq pt (cdar pts))
- (if (not (null (cdr pts)))
- (setq ang (angle pt (cdadr pts)))
- )
- (setq
- ang2 (- ang (* 0.5 pi))
- pt1 (polar pt ang2 long)
- )
- (command "circle" pt radius)
- (command "line" pt pt1 "")
- (command "text"
- (polar (polar pt ang2 2) (+ ang2 (* pi 0.5)) (* 0.5 words))
- words
- (radtodeg ang2)
- (strcat "X=" (rtos (car pt) 2 4))
- )
- (command "text"
- (polar (polar pt ang2 2) (- ang2 (* pi 0.5)) (* 1.5 words))
- words
- (radtodeg ang2)
- (strcat "Y=" (rtos (cadr pt) 2 4))
- )
- (setq pts (cdr pts))
- )
- (setq i (1+ i))
- )
- (setvar "cmdecho" ps_cmdecho)
- (setvar "osmode" ps_osmode)
- (setvar "luprec" ps_luprec)
- )
- (defun initvar (symbol msg default / r)
- (if (null (vl-symbol-value symbol))
- (set symbol default)
- )
- (setq r (getdist (strcat msg "<" (rtos (vl-symbol-value symbol) 2) ">:")))
- (if (not (null r))
- (set symbol r)
- )
- )
- (defun radtodeg (rad)
- (* 180.0 (/ rad pi))
- )
- (defun massoc (lst key)
- (vl-remove-if '(lambda (x) (/= key (car x))) lst)
- )
|