批量标注多段线各段长度(支持弧线)
本帖最后由 newer 于 2018-11-7 00:52 编辑有朋友求助这个,http://bbs.xdcad.net/thread-711444-1-1.html
(defun c:XDTB_PLSegLen (/ _process val)
(defun _process (e / segs inx g v #angle #length #midpoint p1)
(setq segs (xdrx_polyline_numverts e))
(setq inx 0)
(repeat segs
(if (setq g (xdrx_polyline_getlinesegat e inx t))
(progn
(xdge::getpropertyvalue g "length" "midpoint" "angle")
)
(progn
(setq g (xdrx_polyline_getarcsegat e inx t))
(xdge::getpropertyvalue g "length" "midpoint")
(setq v (xdrx_curve_getfirstderiv e #midpoint)
#angle (xdrx_vector_angle v))
)
)
(setq #angle (xd::geom:angleformat #angle)
p1 (trans (polar #midpoint
(+ #angle (/ pi 2.0))
(/ #txt_height 2.0))
e
0
)
)
(xdrx_text_make
p1
(rtos #length 2 #txt_bit)
(getvar "textstyle")
#txt_height
#angle
)
(xd::text:setalignment (entlast) p1 "BC")
(xd::text:adjust (entlast))
(setq inx (1+ inx))
)
(xdge::free g)
)
(if (not #txt_height)
(setq #txt_height 3.5)
)
(if (not #txt_bit)
(setq #txt_bit 1)
)
(if (setq val (getint (xdrx_prompt "\n保留位数<" #txt_bit ">:" t)))
(setq #txt_bit val)
)
(if (setq val (getreal (xdrx_prompt "\n字高<" #txt_height ">:" t)))
(setq #txt_height val)
)
(xdrx_begin)
(xdrx_sysvar_push '("dimzin" 0))
(if (and (xdrx_initssget "\n选择多段线<退出>:")
(setq ss (xdrx_ssget '((0 . "*POLYLINE"))))
)
(progn
(xd::text:init 1)
(mapcar '(lambda (x) (_process x)) (xdrx_pickset->ents ss))
)
)
(xdrx_sysvar_pop)
(xdrx_end)
(princ)
)
非常感谢楼主无私奉献
谢谢楼主分享。{:1_1:} 厉害,标注钢筋的时候很方便!!!!! {:1_16:}{:1_8:}{:1_4:}{:1_24:}{:1_23:} 程序命令是什么啊 程序命令是什么啊 相改成这样,怎么改 chen2802 发表于 2017-8-31 10:39
你是说封闭的最后那一段也标注? 工具箱里面的命令已经是这样了,安装下工具箱吧。
newer 发表于 2017-8-31 10:48
不是,我想叫数字都标注在图形的外边
支持弧线,这个功能不错 谢谢楼主分享 这个厉害了、 no function definition: XDRX_PROMPT,CAD2006可以吗? 呵呵哈哈,呵呵呵