请高手帮忙修改“选择多段线附近文字”
找到这样一个代码,请高手帮帮忙修改:1.本代码只能实现窗口显示范围内的多段线附近文字,如果多段线较长,超出显示范围的就选择不了
2.可不可以加条命令,设置线与文字的距离,超出距离的文字不要选择;
3.只支持选择多段线附近的文字,可不可以实现直线附近的附近的文字也可以选择;
(defun c:xw()
(setq cmd (getvar "cmdecho"))
(setvar"cmdecho" 0)
(if (progn
(princ "\n请选取多段线:")
(setq ssa (ssget ":S" '((0 . "lwpolyline"))))
)
(progn
(setq ent (ssname ssa 0))
(setq dxf (entget ent))
(setq pts (mapcar 'cdr (vl-remove-if '(lambda(x)(/= (car x) 10)) dxf)))
(setq ptmin (mapcar '+ (apply 'mapcar (cons 'min pts)) '(-100 -100)))
(setq ptmax (mapcar '+ (apply 'mapcar (cons 'max pts)) '( 100100)))
(if (setq ssb (ssget "w" ptmin ptmax '((1 . "**"))))
(progn
(setq i 0)
(setq n (sslength ssb))
(setq jgb nil)
(repeat n
(setq entt (ssname ssb i))
(setq dxft (entget entt))
(setq pt (cdr (assoc 10 dxft)))
(setq str (cdr (assoc 1 dxft)))
(setq ptt (vlax-curve-getclosestpointto ent pt))
(setq jgb (cons (list ptt str) jgb))
(setq i (1+ i))
)
(setq jgb (vl-sort jgb '(lambda(a b)
(< (vlax-curve-getdistatpoint ent (car a))
(vlax-curve-getdistatpoint ent (car b))
)
)
)
)
(foreach pt jgb
(princ (strcat "\n" (cadr pt)))
)
)
)
)
)
(sssetfirst nilssb)
(princ)
)
还有一个选择的文字顺序,可不可以按从左至右选择,因为选择好的文字我需要提取出来,谢谢 好东西,Mark
页:
[1]