wangshaoshan 发表于 2019-4-7 18:58:16

请高手帮忙修改“选择多段线附近文字”

找到这样一个代码,请高手帮帮忙修改:
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)
)

wangshaoshan 发表于 2019-4-7 19:16:32

还有一个选择的文字顺序,可不可以按从左至右选择,因为选择好的文字我需要提取出来,谢谢

cghdy 发表于 2019-4-22 15:06:12

好东西,Mark
页: [1]
查看完整版本: 请高手帮忙修改“选择多段线附近文字”