77077 发表于 2014-10-20 15:29:42

发个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 )
            )
   )
)

spp_wall 发表于 2014-10-20 17:39:16

文字的图层怎么改?

香田里浪人 发表于 2014-10-20 18:17:12

建议楼主添加(setvar"dimzin"0);;保留小数位数时如果位数不足可以补零,不然最后一位是0时无法显示。

spp_wall 发表于 2014-10-20 19:10:48

说错了 是文字的样式!!!

77077 发表于 2014-10-20 19:24:15

spp_wall 发表于 2014-10-20 19:10 static/image/common/back.gif
说错了 是文字的样式!!!

这个只是应急用的,所以功能不全。
你可以在标注之前,设定好你要的字体,并置为当前字体。。。

spp_wall 发表于 2014-10-20 20:05:03

77077 发表于 2014-10-20 19:24 static/image/common/back.gif
这个只是应急用的,所以功能不全。
你可以在标注之前,设定好你要的字体,并置为当前字体。。。

设置了当前 但是好像没用
页: [1]
查看完整版本: 发个xy坐标标注,应急用~