功能简单,主要用于应急。
欢迎拿去应急~~~ - (defun c:bzxy(/ os h jd pt1 pt2 pt3 pt4 pt5 strx stry lx ly l1 ptx1 ptx2 a b)
- (setq os (getvar "osmode"));保存捕捉模式
- (setq h (getreal (strcat "\n请键入文字高度<5>:")))
- (if (null h) (setq h 5))
- (setq jd (getint "\n请键入保留小数位数<3>"))
- (if (null jd) (setq jd 3))
- (while (and
- (setvar "osmode" 37);设置捕捉模式,交点+圆心+端点
- (setq pt1 (getpoint "\n请点选要标注坐标的点:"))
- )
- (setvar "osmode" 0);为避免意外情况,关闭捕捉
- (setq pt2 (getpoint pt1 "\n请点选坐标放置的位置:"))
- (setq strx (rtos (car pt1) 2 jd)
- stry (rtos (cadr pt1) 2 jd)
- lx (strlen strx)
- ly (strlen stry)
- l1 (max lx ly);最长字符数
- a (* l1 h 1.1);横线长度
- b (* h 0.2);文字偏移横线的距离
- ptx1 (car pt1)
- ptx2 (car pt2)
- )
- (if (> ptx2 ptx1) ;左右判断
- (setq pt3 (polar pt2 0 a);横线终点
- pt4 (polar pt2 (* 0.5 pi) b);X文字位置
- pt5 (polar pt2 (* 1.5 pi) (+ b h));Y文字位置
- )
- (setq pt3 (polar pt2 pi a)
- pt4 (polar pt3 (* 0.5 pi) b)
- pt5 (polar pt3 (* 1.5 pi) (+ b h))
- )
- )
- (mkpline "DM-坐标标注" (list pt1 pt2 pt3))
- (mktext "DM-坐标标注" (strcat "X=" strx) pt4 h)
- (mktext "DM-坐标标注" (strcat "Y=" stry) pt5 h)
- )
- (setvar "osmode" os)
- (princ)
- )
 - (defun mktext (la str pt h);写文字
- (entmake (list
- (cons 0 "TEXT")
- (cons 1 str)
- (cons 8 la)
- (cons 10 pt)
- (cons 40 h)
- )
- )
- )
- (defun mkpline (la lst);绘pl线
- (entmake (append (list
- (cons 0 "LWPOLYLINE")
- (cons 8 la)
- (cons 100 "AcDbEntity")
- (cons 100 "AcDbPolyline")
- (cons 90 (length lst))
- )
- (mapcar '(lambda (pt)(cons 10 pt)) lst )
- )
- )
- )
|