连续画直线自动在直线上标注长度,求高手帮忙
本帖最后由 717957265 于 2016-5-24 09:44 编辑像图片里的效果,能改自高,最终效果一样就行,求大大们帮忙,小弟感激不尽
cad2008
达到图片效果就可以,谢谢大大们了
自己顶一顶 本帖最后由 danxingpen 于 2016-5-30 11:18 编辑
试一下,文字大小取默认,文字样式取默认,错误处理没有添加。
本帖最后由 717957265 于 2016-5-30 08:38 编辑
danxingpen 发表于 2016-5-29 08:59 static/image/common/back.gif
试一下,文字大小取默认,文字样式取默认,错误处理没有添加。
直线从右往左画,文字是倒着的,还在线的下边。能改成和从左往右画一样的文字在线的上边,正着的文字吗? 717957265 发表于 2016-5-30 08:37 static/image/common/back.gif
直线从右往左画,文字是倒着的,还在线的下边。能改成和从左往右画一样的文字在线的上边,正着的文字吗?
三楼已改,,,,,,,,,,,,, 本帖最后由 717957265 于 2016-5-31 13:24 编辑
danxingpen 发表于 2016-5-30 11:19 static/image/common/back.gif
三楼已改,,,,,,,,,,,,,
发现一个小问题,麻烦您看看怎么回事。
如果标注样式改为宋体,直线从左往右画 和从右边往做画,会有标注压线的情况。
文字距离我改成了0.5,0.2也是这种情况。 danxingpen 发表于 2016-5-30 11:19 static/image/common/back.gif
三楼已改,,,,,,,,,,,,,
自己顶一顶 717957265 发表于 2016-6-1 14:44 static/image/common/back.gif
自己顶一顶
(defun c:1111( / rlastent ss n lent ps pe ang dist midp textdist bsang)
(setq rlastent(entlast))
(command "._line")
(while (/= 0 (getvar "CMDACTIVE"))
(command pause)
)
(if rlastent
(progn
(setq ss (ssadd))
(while (setq rlastent(entnext rlastent))
(ssadd rlastent ss)
))
(setq ss(ssget "x"))
)
(setq textdist(* 0.2 (getvar "textsize"));文字距离线取默认字体高度的0.2,这个高度可自己调整--
bsang(angle'(0 0 0) (getvar "ucsxdir"));考虑UCS--------------------------------------
bsang(* 180.0 (/ bsang pi))
)
(repeat (setq n(sslength ss))
(setq n(1- n)
rlastent(ssname ss n)
lent(entget rlastent)
ps(cdr(assoc 10 lent))
pe(cdr(assoc 11 lent))
ang(angle ps pe)
dist(distance ps pe)
midp(mapcar '+ pe ps)
midp(mapcar '* midp '(0.5 0.5 0.5))
)
(cond
((>= (* 0.5 pi) ang 0);第一象限,
(setq textinp(trans (polar midp (+ ang (* pi 0.5)) textdist) 0 1))
)
((>= pi ang (* 0.5 pi));第二象限,
(setq textinp(trans (polar midp (- ang (* pi 0.5)) textdist) 0 1))
(setq ang(- ang pi))
)
((>= (* 1.5 pi) ang pi);第三象限,
(setq textinp(trans (polar midp (- ang (* pi 0.5)) textdist) 0 1))
(setq ang(- ang pi))
)
(t;第四象限,
(setq textinp(trans (polar midp (+ ang (* pi 0.5)) textdist) 0 1))
)
)
(setq ang(* 180.0 (/ ang pi)))
(command ".-text" "j" "bc" "non" textinp "" (- ang bsang) (rtos dist));文字高度就是这一行的"",这个可以自己调整,或者干脆和线长度相关--
(princ (rtos ang))
)
(princ)
) danxingpen 发表于 2016-6-3 09:50 static/image/common/back.gif
(defun c:1111( / rlastent ss n lent ps pe ang dist midp textdist bsang)
(setq rlastent(entlast) ...
(defun c:1111( / rlastent ss n lent ps pe ang dist midp textdist bsang)
(setq rlastent(entlast))
(command "._line")
(while (/= 0 (getvar "CMDACTIVE"))
(command pause)
)
(if rlastent
(progn
(setq ss (ssadd))
(while (setq rlastent(entnext rlastent))
(ssadd rlastent ss)
))
(setq ss(ssget "x"))
)
(setq textdist(* 0.2 (getvar "textsize"));文字距离线取默认字体高度的0.2,这个高度可自己调整--
bsang(angle'(0 0 0) (getvar "ucsxdir"));考虑UCS--------------------------------------
bsang(* 180.0 (/ bsang pi))
)
(repeat (setq n(sslength ss))
(setq n(1- n)
rlastent(ssname ss n)
lent(entget rlastent)
ps(cdr(assoc 10 lent))
pe(cdr(assoc 11 lent))
ang(angle ps pe)
dist(distance ps pe)
midp(mapcar '+ pe ps)
midp(mapcar '* midp '(0.5 0.5 0.5))
textinp(trans (polar midp (+ ang (* pi 0.5)) textdist) 0 1)
ang(* 180.0 (/ ang pi))
)
(if (>= 270 ang 90)(setqtextinp(trans (polar midp (+ ang (* pi -0.5)) textdist) 0 1) ang(- ang 180)));保证文字向上----------------
(command ".-text" "j" "bc" "non" textinp "" (- ang bsang) (rtos dist));文字高度就是这一行的"",这个可以自己调整,或者干脆和线长度相关--
(princ (rtos ang))
)
(princ)
)
这是其他人改的 非常感谢你
页:
[1]