明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5129|回复: 24

文字合并

[复制链接]
发表于 2019-6-17 05:15:29 | 显示全部楼层 |阅读模式
15明经币
本帖最后由 KO你 于 2019-7-18 02:20 编辑

快捷键  ttj  文字直接合并
(defun c:ttj(/ ss i ename dl ell x text e1 e2)
    (setq ss (ssget '((0 . "TEXT")))
              i  0
                  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年7月21日 1.按字高的0.1倍为处理容差,如果坐标Y值之差小于0.1倍字高,视作同一行 2.同一行中,字高不同,视作两行处理
发表于 2019-6-17 05:15:30 | 显示全部楼层
本帖最后由 叮咚 于 2019-7-21 21:34 编辑


看图


更新于2019年7月21日


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

 楼主| 发表于 2019-7-12 15:45:26 | 显示全部楼层
顶上顶上顶上顶上顶上
回复

使用道具 举报

 楼主| 发表于 2019-7-18 02:23:09 | 显示全部楼层
KO你 发表于 2019-7-12 15:45
顶上顶上顶上顶上顶上

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

使用道具 举报

发表于 2019-7-18 09:40:59 | 显示全部楼层
vba的做过,批量合并,Y超过某个值算另一行。
回复

使用道具 举报

 楼主| 发表于 2019-7-18 18:12:35 | 显示全部楼层

试用了下,选得多,有时顺序会打乱。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

 楼主| 发表于 2019-7-18 18:53:00 | 显示全部楼层
本帖最后由 KO你 于 2019-7-18 18:54 编辑

感谢大师热情帮忙,其实我想要的效果是
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他是一个容差处理函数
回复

使用道具 举报

 楼主| 发表于 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)))

是的。你可以测试一下。
这个函数是避免有一点偏差的坐标,保证看作是一行。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-23 14:13 , Processed in 0.237010 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表