明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 679|回复: 2

大神们,能将旧的字text删除吗,弄了半天还是不行

[复制链接]
发表于 2020-11-6 08:55:10 | 显示全部楼层 |阅读模式

(defun c:taat(/ s1 t2 sstoes p b l);;用了自贡黄明儒的通用排序函数
  (defun SstoEs(ss / a en lst)
    (if ss(progn(setq a -1)
      (while(setq en(ssname ss(setq a(1+ a)))



)(setq lst (cons en lst)))))
    lst);defun end
  (defun ssPtsSort(ssPts KEY FUZZ / E EN FUN LST N SORTPTS SORTSS);;by自贡黄明儒 2013年9月9日
    (defun sortpts (PTS FUN xyz FUZZ)
      (vl-sort pts'(lambda (a b)(if(not(equal(xyz a)(xyz b)fuzz))(fun(xyz a)(xyz b)))))
      )
  (defun sortpts1 (PTS KEY FUZZ)
    (setq Key (vl-string->list Key))
     (foreach xyz (reverse Key)
       (cond ((< xyz 100)
              (setq fun >
                    xyz(nth(- xyz 88)(list car cadr caddr))))
             (T(setq fun <
                     xyz(nth(- xyz 120)(list car cadr caddr)))))
       (setq Pts(sortpts Pts fun xyz fuzz)

))
    )
    (cond((=(type ssPts)'PICKSET)
          (repeat(setq n(sslength ssPts))
            (if(and(setq e(ssname ssPts(setq n(1- n))))
                   (setq en(entget e))

)
              (setq lst (cons (append (cdr (assoc 10 en)) (list e)) lst))))
          (mapcar 'last (sortpts1 lst KEY FUZZ)))
         ((Listp ssPts)(cond ((vl-consp (car ssPts)) (sortpts1 ssPts KEY FUZZ))
                             ((= (type (car ssPts)) 'ENAME)
                              (foreach e ssPts(if(setq en(entget e))(setq lst(cons(append(cdr(assoc 10 en))(list e))lst))))
                              (mapcar'last(sortpts1 lst KEY FUZZ)))))
         )
    );defun end
  (prompt "请选择要合并为多行文本的单行文字对象")
  (setq s1(SstoEs(ssget'((0 . "TEXT"))))T2"")




  (if s1(progn
    (setq s1 (ssPtsSort s1 "Yx" 0.5)

          b(entget(car s1))
          t2(cdr(assoc 1 b))l 1)

    (foreach a(cdr s1)(setq c(cdr(assoc 1(entget a)))l(if(>(strlen c)l)(strlen c)l)t2(strcat t2"\\P"c)))
    (while(null(setq p(getpoint"指定多行文本左上角点"))))


    (entmake(list(cons 0 "MTEXT")(cons 100 "AcDbEntity")(cons 100  "AcDbMText")(cons 10 P)(assoc 40 b)
           (cons 41 (* l (cdr(assoc 40 b))))(cons 1 t2)(assoc 7 b)(cons 71 1)(cons 73 1))))


)


)

发表于 2020-11-6 13:35:16 | 显示全部楼层
在最后的 entmake 后面加上一行 (foreach a s1 (entdel a)) 应该就可以了吧。
发表于 2020-11-11 22:12:32 | 显示全部楼层
没细看,但感觉小伙有前途
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-27 04:51 , Processed in 0.163109 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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