发个xy坐标标注,应急用~
功能简单,主要用于应急。欢迎拿去应急~~~(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 )
)
)
) 文字的图层怎么改? 建议楼主添加(setvar"dimzin"0);;保留小数位数时如果位数不足可以补零,不然最后一位是0时无法显示。 说错了 是文字的样式!!! spp_wall 发表于 2014-10-20 19:10 static/image/common/back.gif
说错了 是文字的样式!!!
这个只是应急用的,所以功能不全。
你可以在标注之前,设定好你要的字体,并置为当前字体。。。 77077 发表于 2014-10-20 19:24 static/image/common/back.gif
这个只是应急用的,所以功能不全。
你可以在标注之前,设定好你要的字体,并置为当前字体。。。
设置了当前 但是好像没用
页:
[1]