土木在线论坛 \ 建筑设计 \ CAD下载及教程 \ 哪位帮忙完善这个板负筋长度文字对分的程序

哪位帮忙完善这个板负筋长度文字对分的程序

发布于:2011-11-29 10:08:29 来自:建筑设计/CAD下载及教程 [复制转发]
PKPM出来的板负筋,左右相等的时候,经常是在中间标一个数,但是就会跟梁线重叠,因此考虑做个程序,将文字分成两边,每边数字是原数字的一半。
现在程序也有了,就是经常会出现莫名的问题,文字的坐标点控制不对。
另外,对字体已经设置了字高的情况也会出现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)
)

全部回复(2 )

只看楼主 我来说两句抢地板
  • 蛇·蝎·茄子
    已经有人指点,bug基本没有了,关掉捕捉就好了
    只不过文字样式已定义字高的还是会有问题,不管了,自己用的,不会出这个问题
    2011-11-29 14:34:29

    回复 举报
    赞同0
  • 蛇·蝎·茄子
    上面程序里面有个if的判断,主要是为了避免对非数字字符进行操作,其实应该一开始就判断选择物体的类型的
    还有说的字体设置有字高的情况,因为设置有字高的时候,在输入文字的时候,跳过了字高项,后面的就都错了
    2011-11-29 10:11:29

    回复 举报
    赞同0
这个家伙什么也没有留下。。。

CAD下载及教程

返回版块

52.08 万条内容 · 665 人订阅

猜你喜欢

阅读下一篇

请问CAD中插入带文字的表格时........

用EXCEL做成有文字的表格,然后选择性粘贴,粘贴之后表格大小合适但是文字却太小了,我搞了好久也没有弄明白,请高手指点,谢谢!

回帖成功

经验值 +10