PKPM出来的板负筋,左右相等的时候,经常是在中间标一个数,但是就会跟梁线重叠,因此考虑做个程序,将文字分成两边,每边数字是原数字的一半。现在程序也有了,就是经常会出现莫名的问题,文字的坐标点控制不对。另外,对字体已经设置了字高的情况也会出现bug。这是第一次对着书写的,也不知道哪些地方需要改,恳请各位给点意见程序如下:(defun c:bdf(/ e ent tc newt mc ang st zb zbx zby zg zb1x zb1y zb2x zb2y zb1 zb2)
现在程序也有了,就是经常会出现莫名的问题,文字的坐标点控制不对。
另外,对字体已经设置了字高的情况也会出现bug。
这是第一次对着书写的,也不知道哪些地方需要改,恳请各位给点意见
程序如下:
(defun c:bdf(/ e ent tc newt mc ang st zb zbx zby zg zb1x zb1y zb2x zb2y zb1 zb2)
(setvar "cmdecho" 0)
(setq e (entsel "\n选择要对分的板筋: "))
(setq ent (entget (car e)))
(setq newt (atoi (cdr (assoc 1 ent))))
(if (/= 0 newt)
(progn
(setq tc (cdr (assoc 8 ent)))
(command "._Clayer" tc)
(setq newt (atoi (cdr (assoc 1 ent))))
(setq mc (cdr (assoc -1 ent)))
(setq ang (cdr (assoc 50 ent)))
(setq st (cdr (assoc 7 ent)))
(setq zb (cdr (assoc 10 ent)))
(setq zbx (car zb))
(setq zby (cadr zb))
(setq zg (cdr (assoc 40 ent)))
(setq zb1x (+ zbx (* 0.25 (* newt (cos ang)))))
(setq zb1y (+ zby (* 0.25 (* newt (sin ang)))))
(setq zb2x (- zbx (* 0.25 (* newt (cos ang)))))
(setq zb2y (- zby (* 0.25 (* newt (sin ang)))))
(setq zb1 (list zb1x zb1y))
(setq zb2 (list zb2x zb2y))
(command "text" "s" st zb1 zg (* 180 (/ ang pi)) (/ newt 2))
(command "text" "s" st zb2 zg (* 180 (/ ang pi)) (/ newt 2))
(entdel mc)
)
(princ "\n所选对象不能处理")
)
(setvar "cmdecho" 1)
(princ)
)