明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6555|回复: 31

求程序改编:合并文字,让零散的文字按左右顺序连接,框选

  [复制链接]
发表于 2012-8-14 15:18 | 显示全部楼层 |阅读模式
(defun c:textjoin ()
(setq a (ssget))
(setq b (sslength a ))
(setq d 1)
(setq a1 (ssname a 0))
(setq a2 (entget a1))
(setq a3 (cdr (assoc 1 a2)))
(setq x4 a3)
(repeat (- b 1)
(setq x1 (ssname a d))
(setq x2 (entget x1))
(entdel x1)
(setq x3 (cdr (assoc 1 x2)))
(setq k (cdr (assoc 0 x2)))
(if (= k "TEXT")
(setq x4 (strcat x4 x3))
)
(setq d (+ d 1))
)
(setq f (subst (cons 1 x4 ) (cons 1 a3) a2 ))
(entmod f)
(princ)
)
发表于 2019-6-20 18:55 | 显示全部楼层
wowan1314 发表于 2012-8-14 16:31
这个简单,本想练习下,结果发现论坛上已经有这种程序了。借花献佛。
;;vormittag
(defun c:wzhb(/ ss  ...

这个程序合并后,怎样做到同行的文字分行呢
发表于 2018-4-19 09:01 | 显示全部楼层
wowan1314 发表于 2012-8-14 16:31
这个简单,本想练习下,结果发现论坛上已经有这种程序了。借花献佛。
;;vormittag
(defun c:wzhb(/ ss  ...

如果,从左到右,从上到下,都考虑,如何办?
发表于 2019-7-2 21:16 | 显示全部楼层
wowan1314 发表于 2012-8-14 16:31
这个简单,本想练习下,结果发现论坛上已经有这种程序了。借花献佛。
;;vormittag
(defun c:wzhb(/ ss  ...

容差怎么搞大神看看呀
发表于 2012-8-14 16:31 | 显示全部楼层
这个简单,本想练习下,结果发现论坛上已经有这种程序了。借花献佛。
;;vormittag
(defun c:wzhb(/ 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明经币 +1 收起 理由
flytoday + 1 很给力!

查看全部评分

 楼主| 发表于 2012-8-14 16:42 | 显示全部楼层
wowan1314 发表于 2012-8-14 16:31
这个简单,本想练习下,结果发现论坛上已经有这种程序了。借花献佛。
;;vormittag
(defun c:wzhb(/ ss  ...

呵呵,非常感谢!很好用,不过框选几行文字时连接顺序是下面的文字排前面,这个顺序能不能颠倒过来?

点评

你不是要左到右吗? 排序问题你研究下(vl-sort dl (function (lambda (e1 e2) (< (car e1) (car e2))))怎么排都可以  发表于 2012-8-14 16:46
 楼主| 发表于 2012-8-14 16:56 | 显示全部楼层
半听可乐 发表于 2012-8-14 16:42
呵呵,非常感谢!很好用,不过框选几行文字时连接顺序是下面的文字排前面,这个顺序能不能颠倒过来?

这个真不懂,能不能改个现成的过来呢?
发表于 2012-8-14 17:10 | 显示全部楼层
(< (car e1) (car e2))这个是按X轴左到右。改成(> (cadr e1) (cadr e2))这个是Y轴上到下.

评分

参与人数 1明经币 +1 收起 理由
flytoday + 1 很给力!

查看全部评分

 楼主| 发表于 2012-8-14 17:14 | 显示全部楼层
wowan1314 发表于 2012-8-14 17:10
(< (car e1) (car e2))这个是按X轴左到右。改成(> (cadr e1) (cadr e2))这个是Y轴上到下.

哈哈,非常感谢!
发表于 2012-8-14 21:11 | 显示全部楼层
很不错的程序,学习下先
发表于 2012-8-14 21:32 | 显示全部楼层
good   !
发表于 2012-8-15 18:30 | 显示全部楼层
wowan1314 发表于 2012-8-14 16:31
这个简单,本想练习下,结果发现论坛上已经有这种程序了。借花献佛。
;;vormittag
(defun c:wzhb(/ ss  ...

学习~
发表于 2012-8-15 20:15 | 显示全部楼层
很不错的程序,学习下先
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-24 23:40 , Processed in 0.803817 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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