664571221 发表于 2024-4-28 18:21:16

各位大神帮我看下,我这个同行合并文字,能不能加个容差,可以自己输入距离,默认...

各位大神帮我看下,我这个同行合并文字,能不能加个容差,可以自己输入距离,默认多少距离内位同行


;;
(defun c:THHB (/ ACTDOC L S)
(setq ActDoc (vla-get-ActiveDocument (vlax-get-Acad-Object)))
(vla-EndUndoMark ActDoc)
(vla-StartUndoMark ActDoc)
(if (and (setq l (ssget '((0 . "TEXT"))))
         (setq s (getstring T "\n Enter string to place in between text strings : ")))
   (progn
       (setq l
            (vl-sort
                (mapcar
                  (function (lambda (x) (list (cdr (assoc 10 (entget x))) (cdr (assoc 1 (entget x))) x))
                  ) ;_function
                  (vl-remove-if
                  (function listp)
                  (mapcar (function cadr) (ssnamex l))
                  ) ;_vl-remove-if
                ) ;_mapcar
                (function
                  (lambda (a b)
                  (or
                      (and
                        (equal (cadar a) (cadar b) 1e-3)
                        (< (caar a) (caar b))
                      ) ;_and
                      (< (cadar a) (cadar b))
                  ) ;_or
                  ) ;_lambda
                ) ;_function
            ) ;_vl-sort
       ) ;_setq
       (while l
         (if (equal (cadaar l) (cadr (caadr l)) 1e-3)
         (progn
             (entdel (last (cadr l)))
             (setq l (cons (list (caar l) (strcat (cadar l) s (cadadr l)) (caddar l)) (cddr l)))
         ) ;_progn
         (progn
             (entmod (subst (cons 1 (cadar l)) (assoc 1 (entget (caddar l))) (entget (caddar l))))
             (entupd (caddar l))
             (setq l (cdr l))
         ) ;_progn
         ) ;_if
       ) ;_while
   ) ;_progn
) ;_if
(vla-EndUndoMark ActDoc)
(princ)
)

start4444 发表于 2024-4-28 21:16:09

(if (equal (cadaar l) (cadr (caadr l)) 1e-3)1e-3应该就是容差,自己改数值试试

664571221 发表于 2024-4-29 11:48:18

start4444 发表于 2024-4-28 21:16
(if (equal (cadaar l) (cadr (caadr l)) 1e-3)1e-3应该就是容差,自己改数值试试

大哥这个顺序反一下怎么弄,合并的顺序和这个反一下

xyp1964 发表于 2024-4-29 12:51:57

本帖最后由 xyp1964 于 2024-4-29 12:53 编辑

664571221 发表于 2024-4-29 11:48
大哥这个顺序反一下怎么弄,合并的顺序和这个反一下
最好用一个dwg实例来说明测试


664571221 发表于 2024-4-30 11:09:57

xyp1964 发表于 2024-4-29 12:51
最好用一个dwg实例来说明测试

派大看一下,按x方向合并

lengxiaxi 发表于 2024-8-11 10:52:16

这个程序确实很强大,如果能用户指定容差,那就完美了;

有个类似的帖子,其效果,还没当前这个好;可以参考
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=190158&extra=&highlight=%CE%C4%D7%D6%2B%BA%CF%B2%A2&page=1
页: [1]
查看完整版本: 各位大神帮我看下,我这个同行合并文字,能不能加个容差,可以自己输入距离,默认...