永不言弃 发表于 2013-9-25 17:56:25

求高手编写LISP代码范围内文字合并问题


求高手编写LISP代码范围内文字合并问题,我想通过选择所有的文字,把A附近(一个小范围内)的2(洋红色的)合并成A2,谢谢!!



永不言弃 发表于 2013-9-25 18:00:43

或者方框里面的文字全部合并也行

004 发表于 2013-9-25 18:15:19

永不言弃 发表于 2013-9-25 18:00
或者方框里面的文字全部合并也行

解决问题用xyp1964工具箱,超快,超全,外加顶级高手群24小时挫折教育。

永不言弃 发表于 2013-9-25 18:18:31

哪儿有啊,论坛里面好像没有

newbuser 发表于 2013-9-25 18:57:36

(defun c:gg (/ ss i el e)
(setq nr nil)
(setq ss (ssget '((0 . "TEXT"))))
(setq i 0)
(repeat (sslength ss)
    (setq e (ssname ss i))
    (setq el (entget e))
    (setq nr (append nr (list (read (cdr (assoc 1 el))))))
    (setq i (1+ i)))
(princ)
)这个是text文字合并的,不知对您是否有所帮助

永不言弃 发表于 2013-9-25 20:38:30

用了没反应

newbuser 发表于 2013-9-25 23:13:26

在最后加上这一行试试 (print nr)

ZZXXQQ 发表于 2013-9-26 07:42:02

;合并框内文字 明经 ZZXXQQ 2013.9.26
(defun c:tt ()
(if (setq ss (ssget '((0 . "LWPOLYLINE") (90 . 4)))) (progn
(setq i -1)
(repeat (sslength ss)
   (setq plst (list))
   (setq ent (entget(ssname ss (setq i (1+ i)))))
   (foreach x ent (if (= (car x) 10) (setq plst (cons (cdr x) plst))))
   (if (= (sslength (setq ss1 (ssget "CP" plst '((0 . "TEXT"))))) 2) (progn
    (setq ent1 (entget(ssname ss1 0))
         en (ssname ss1 1)
         txt (cdr(assoc 1 ent1))
         txt2(cdr(assoc 1 (entget en))))
    (entmod (subst (cons 1 (strcat txt txt2)) (assoc 1 ent1) ent1))
    (entdel en)
   ))
)
))
(princ)
)

newbuser 发表于 2013-9-26 08:00:49

(defun c:gg (/ ss i el e lst p nr)
(setq nr "")
(setq ss (ssget '((0 . "TEXT"))))
(setq i 0)
(repeat (sslength ss)
    (setq e (ssname ss i))
    (setq el (entget e))
    (setq nr (strcat nr (cdr (assoc 1 el))))
    (setq i (1+ i)))
(setq lst (entget (ssname ss 0)))
(setq p (assoc 10 lst))
(entmake (list '(0 . "TEXT") (cons 1 nr) (cons 10 (cdr p)) (cons 40 5)))
(princ)
)我又重新修改了一下,希望能达到您的满意

永不言弃 发表于 2013-9-26 10:16:58

非常感谢,可以了
页: [1] 2
查看完整版本: 求高手编写LISP代码范围内文字合并问题