找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 731|回复: 7

[研讨] 求完善 水平/同行文字合并

[复制链接]
发表于 2019-7-18 07:16:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
快捷键  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)
)

同个水平从左到右合并文字,要求分行,求助高手帮忙完善。
求完善   水平/同行文字合并-1.jpg
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 293个

财富等级: 日进斗金

发表于 2019-7-18 08:14:24 | 显示全部楼层
不同的Y坐标,分开处理,给个误差。只有想法,不会弄。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 511个

财富等级: 财运亨通

发表于 2019-7-18 12:53:46 | 显示全部楼层
(setq ss (ssget '((0 . "TEXT"))) i 0 dl nil)
(if ss
        (progn
            (repeat (sslength ss)
                (setq ename (ssname ss i) ell (entget ename) zg (cdr (assoc 40 ell))
                      x (cadr (assoc 10 ell)) Y (caddr (assoc 10 ell)) text (cdr (assoc 1 ell)) i (1+ i))
                (setq dl (append dl (list (list x y text ename)))))
                    (setq dl (vl-sort dl '(lambda (e1 e2) (< (car e1) (car e2)))))
            (while dl
                (setq textlist (vl-remove nil (mapcar '(lambda (x) (if (< (abs (- (cadr (nth 0 dl)) (cadr x))) zg) (caddr x))) dl)))
                (setq dl0 (vl-remove nil (mapcar '(lambda (x) (if (member (caddr x) textlist) x nil)) dl)))
                (setq textlist (mapcar '(lambda (x) (caddr x)) dl0))
                (setq text "" i 0)
                 (while (nth i textlist)(setq text (strcat text (nth i textlist)) i (1+ i)))
                (setq st (entget (car (reverse(nth 0 dl0)))))
                (entmod (subst (cons 1 text) (assoc 1 st) st))
                (repeat (1- i)
                    (entdel (car (reverse(nth (- i 1) dl0))))
                    (setq i (1- i)))
                (setq dl (vl-remove nil (mapcar '(lambda (x) (if (member (caddr x) textlist) nil x)) dl)))
                );while
            );progn
    (princ "\n未选中任何文字!")
    );if
(princ)

点评

请问这个程序的执行命令是什么呀  详情 回复 发表于 2020-4-2 20:29
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 137个

财富等级: 日进斗金

发表于 2020-4-2 20:29:18 | 显示全部楼层
pxr201419 发表于 2019-7-18 12:53
(setq ss (ssget '((0 . "TEXT"))) i 0 dl nil)
(if ss
        (progn

请问这个程序的执行命令是什么呀
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 137个

财富等级: 日进斗金

发表于 2020-4-2 20:37:54 | 显示全部楼层
(defun c:ttj(/ ss i ename dl ell x text e1 e2)
   
(setq ss (ssget '((0 . "TEXT"))) i 0 dl nil)
(if ss
        (progn
            (repeat (sslength ss)
                (setq ename (ssname ss i) ell (entget ename) zg (cdr (assoc 40 ell))
                      x (cadr (assoc 10 ell)) Y (caddr (assoc 10 ell)) text (cdr (assoc 1 ell)) i

(1+ i))
                (setq dl (append dl (list (list x y text ename)))))
                    (setq dl (vl-sort dl '(lambda (e1 e2) (< (car e1) (car e2)))))
            (while dl
                (setq textlist (vl-remove nil (mapcar '(lambda (x) (if (< (abs (- (cadr (nth 0 dl))

(cadr x))) zg) (caddr x))) dl)))
                (setq dl0 (vl-remove nil (mapcar '(lambda (x) (if (member (caddr x) textlist) x

nil)) dl)))
                (setq textlist (mapcar '(lambda (x) (caddr x)) dl0))
                (setq text "" i 0)
                 (while (nth i textlist)(setq text (strcat text (nth i textlist)) i (1+ i)))
                (setq st (entget (car (reverse(nth 0 dl0)))))
                (entmod (subst (cons 1 text) (assoc 1 st) st))
                (repeat (1- i)
                    (entdel (car (reverse(nth (- i 1) dl0))))
                    (setq i (1- i)))
                (setq dl (vl-remove nil (mapcar '(lambda (x) (if (member (caddr x) textlist) nil

x)) dl)))
                );while
            );progn
    (princ "\n未选中任何文字!")
    );if
(princ)
不能运行

点评

在最后的加个右括号  详情 回复 发表于 2020-4-3 10:32
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 511个

财富等级: 财运亨通

发表于 2020-4-3 10:32:46 | 显示全部楼层
本帖最后由 pxr201419 于 2020-4-3 11:15 编辑
xdcad9819 发表于 2020-4-2 20:37
(defun c:ttj(/ ss i ename dl ell x text e1 e2)
   
(setq ss (ssget '((0 . "TEXT"))) i 0 dl nil)

在最后加个右括号

点评

好的 我待会去学习  详情 回复 发表于 2020-4-3 11:13
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 137个

财富等级: 日进斗金

发表于 2020-4-3 11:13:46 | 显示全部楼层
pxr201419 发表于 2020-4-3 10:32
在最后的加个右括号

好的 我待会去学习
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 18个

财富等级: 恭喜发财

发表于 2021-5-2 01:00:26 | 显示全部楼层
这个值得学习一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-25 10:11 , Processed in 0.192100 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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