KO你 发表于 2019-6-17 05:15:29

文字合并

本帖最后由 KO你 于 2019-7-18 02:20 编辑

快捷键ttj文字直接合并
(defun c:ttj(/ ss i ename dl ell x text e1 e2)
    (setq ss (ssget '((0 . "TEXT")))
            i0
                  dl nil
                  minx nil
      );setq
      (if ss
            (progn
                        (repeat (sslength ss)
                              (setq ename (ssname ss i)
                                          ell    (entget ename)
                                          x      (cadr (assoc 10 ell))
                                          text   (cdr (assoc 1 ell))
                                          i      (1+ i)
                              );setq
                              (setq dl (append dl (list (list x text ename))))
                        );repeat
                        (setq dl    (vl-sort dl (function (lambda (e1 e2) (< (car e1) (car e2)))))
                        i   1
                              text(cadr (nth 0 dl))
                              ename (caddr (nth 0 dl))
                              ell   (entget ename)
                        );setq
                        (repeat (- (length dl) 1)
                              (setq text (strcat text (cadr (nth i dl))))
                              (entdel (caddr (nth i dl)))
                              (setq i (1+ i))
                        );repeat
                        (setq ell (subst (cons 1 text) (assoc 1 ell) ell))
                        (entmod ell)
                        (entupd ename)
                );progn
                (princ "\n未选中任何文字!")
      );if
      (princ)
)


同个水平从左到右合并文字,要求分行,求助高手帮忙完善。

叮咚 发表于 2019-6-17 05:15:30

本帖最后由 叮咚 于 2019-7-21 21:34 编辑


看图

static/image/hrline/5.gif
更新于2019年7月21日


1.按字高的0.1倍为处理容差,如果坐标Y值之差小于0.1倍字高,视作同一行
2.同一行中,字高不同,视作两行处理

KO你 发表于 2019-7-12 15:45:26

顶上顶上顶上顶上顶上

KO你 发表于 2019-7-18 02:23:09

KO你 发表于 2019-7-12 15:45
顶上顶上顶上顶上顶上

同水平或同行合并文字,求关注,顶上。

mikewolf2k 发表于 2019-7-18 09:40:59

vba的做过,批量合并,Y超过某个值算另一行。

KO你 发表于 2019-7-18 18:12:35

叮咚 发表于 2019-7-18 10:48
看图
试用了下,选得多,有时顺序会打乱。

KO你 发表于 2019-7-18 18:53:00

本帖最后由 KO你 于 2019-7-18 18:54 编辑

叮咚 发表于 2019-7-18 10:48
看图
感谢大师热情帮忙,其实我想要的效果是
http://bbs.mjtd.com/thread-100388-1-1.html

叮咚 发表于 2019-7-18 22:08:20

本帖最后由 叮咚 于 2019-7-18 22:10 编辑

KO你 发表于 2019-7-18 18:53
感谢大师热情帮忙,其实我想要的效果是
http://bbs.mjtd.com/thread-100388-1-1.html
你看一下程序中的第一个函数 vcoor,把最后一个数字改大一点比如500他是一个容差处理函数

KO你 发表于 2019-7-18 23:25:52

叮咚 发表于 2019-7-18 22:08
你看一下程序中的第一个函数 vcoor,把最后一个数字改大一点比如500他是一个容差处理函数

(defun vscoor(n)
    (fix (/ n (/ (getvar "viewsize") 500.0)))

是这样吗

叮咚 发表于 2019-7-19 07:26:55

KO你 发表于 2019-7-18 23:25
(defun vscoor(n)
    (fix (/ n (/ (getvar "viewsize") 500.0)))



是的。你可以测试一下。
这个函数是避免有一点偏差的坐标,保证看作是一行。
页: [1] 2 3
查看完整版本: 文字合并