lgttblue 发表于 2012-11-7 22:38:55

有哪位高手有实现两列文字合并的程序啊,不胜感激啊

有哪位高手有实现两列文字合并的程序啊,不胜感激啊

zhd81617 发表于 2012-11-8 07:09:56

来源于网上

s678z 发表于 2012-11-8 08:48:12

cad菜单expreee-text -convert text to mtext,打这个命令就可

lgttblue 发表于 2012-11-8 22:16:56

先感谢下,不过都不是我想要的,可能是我描述的不清楚吧:是两列文字合并,文字在表格内,每一列有多个文字,合并为新的一列,这一列的text数目和之前的一样,详见附件

langjs 发表于 2012-11-8 23:36:29

本帖最后由 langjs 于 2012-11-8 23:37 编辑

;;文字合并 by:langjs
(defun c:aa (/ e1 e2 ent i j lst1 lst2 p pt ss)
(setq lst1 '()lst2 '()
)
(setvar "nomutt" 1)
(princ "\n选择第一列文本:")
(if (setq ss (ssget '((0 . "*TEXT"))))
    (repeat (setq i (sslength ss))
      (setq ent (entget (ssname ss (setq i (1- i))))
   lst1 (cons (list (cdr (assoc 10 ent)) (cdr (assoc 1 ent))) lst1))
    ))
(princ "\n选择第二列文本:")
(if (setq ss (ssget '((0 . "*TEXT"))))
    (repeat (setq i (sslength ss))
      (setq ent (entget (ssname ss (setq i (1- i))))
   lst2 (cons (list (cdr (assoc 10 ent)) (cdr (assoc 1 ent))) lst2))
    ))
(setvar "nomutt" 0)
(setq ent (cdr ent)
lst1 (vl-sort lst1 (function (lambda (e1 e2)(> (cadr (car e1)) (cadr (car e2))))))
lst2 (vl-sort lst2 (function (lambda (e1 e2)(> (cadr (car e1)) (cadr (car e2))))))
pt (getpoint "\n指定合并文字插入点:")
)
(if (< (length lst1) (setq j (length lst2)))(setq j (length lst1)))
(setq i -1)
(repeat j
    (setq p (list (car pt) (cadr (car (nth (setq i (1+ i)) lst1 ))))
   ent (subst(cons 10 p)(assoc 10 ent)ent))
    (entmake (subst (cons 1 (strcat (cadr (nth i lst1)) (cadr (nth i lst2))))(assoc 1 ent) ent))
)
(princ)
)

lgttblue 发表于 2012-11-9 20:45:28

非常感谢楼主langjs,这正是我需要的

lgttblue 发表于 2012-11-9 21:40:32

langjs大师,还有个问题,程序运行后,不管选择点在那,合并的文字都在一个位置上,还请帮忙修改下啊

lgttblue 发表于 2012-11-10 11:30:48

知道了,主要是我这文字是居中对齐的,改成左对齐就可以了,再次感谢langjs

zwf100 发表于 2021-11-22 11:48:35


非常感谢楼主langjs,找了好久终于找到。如果要把结果替换到第三列如何修改
页: [1]
查看完整版本: 有哪位高手有实现两列文字合并的程序啊,不胜感激啊