半听可乐 发表于 2013-12-7 21:14:53

求框选文字和圆,将字高和圆直径统一

图中有多种字高的文字(包括多行文字、单行文字),还有多种圆直径,现在希望能框选这些文字和圆,然后文字的字高统一为300,圆直径统一为150,其中包含编组,希望编组不会被分解,圆心位置不被移动,请明经的大侠出手相助!

edata 发表于 2013-12-7 21:14:54

(defun c:ty(/ ss en e txth dr)
(prompt "\n请选择需要统一直径与字高的圆、文字:")
(if (setq ss(ssget '((0 . "*text,circle"))))
    (progn
      (or (setq dr(getreal "\n输入统一圆的直径值<150>:"))(setq dr 150))
      (or (setq txth(getreal "\n输入统一的文字高度值<300>:"))(setq txth 300))
      (while (setq en(ssname ss 0))
        (setq e(entget en))
        (cond
          ((wcmatch (cdr(assoc 0 e)) "*TEXT" )(entmod (subst (cons 40 txth) (assoc 40 e) e)))
          ((wcmatch (cdr(assoc 0 e)) "CIRCLE" )(entmod (subst (cons 40 (* dr 0.5)) (assoc 40 e) e)))
          )
        (setq ss(ssdel en ss))
        )
      )
    (princ "\n Noting !!!")
    )
    (princ)
    )。。。。

1993063 发表于 2013-12-7 21:48:16

本帖最后由 1993063 于 2013-12-7 03:50 编辑

这个简单<img src="http://bbs.mjtd.com/static/image/smiley/qq/em34.gif" border="0" smilieid="116" alt="" style="line-height: 1.5;">

1993063 发表于 2013-12-7 21:49:22

;;;字高300,圆半径150 1993063 2013.12.07
(Defun C:tt ( / en i ss ty)
(setq i -1 ss (ssget '((0 . "*TEXT,CIRCLE"))))
(progn
    (repeat (setq i (sslength ss ))
   (setq en (ssname ss (setq i (1- i))) ty (cdr (Assoc 0 (Entget en))))
      (cond
       ((= ty "TEXT")   (Entmod (subst(cons 40 300)(Assoc 40(Entget en))(Entget en))))
       ((= ty "MTEXT")    (Entmod (subst(cons 40 300)(Assoc 40(Entget en))(Entget en))))
       ((= ty "CIRCLE")   (Entmod (subst(cons 40 75) (Assoc 40 (Entget en))(Entget en))))
      )
    )
)
)

革天明 发表于 2013-12-7 22:13:42

什么叫编组?

1993063 发表于 2013-12-7 22:31:25

;;这个更通用一点的
(Defun C:tt (/ en i ss ty)
(setq *th* (ureal 1 "" "文字高度" *th*))
(setq *cr* (ureal 1 "" "圆半径" *cr*))
(if (setq i-1 ss (ssget '((0 . "*TEXT,CIRCLE"))))
   (progn
       (repeat (setq i (sslength ss))
       (setq en (ssname ss (setq i (1- i)))
             ty (cdr (Assoc 0 (Entget en)))
       )(setq cr (/ *cr* 2))
       (cond
           ((= ty "TEXT") (Entmod (subst (cons 40 *th*) (Assoc 40 (Entget en)) (Entget en))))
           ((= ty "MTEXT") (Entmod (subst (cons 40 *th*) (Assoc 40 (Entget en)) (Entget en))))
           ((= ty "CIRCLE") (Entmod (subst (cons 40 cr) (Assoc 40 (Entget en)) (Entget en))))
       )
       )
   )
)(princ)
)
;;udist 函数地址:http://bbs.mjtd.com/thread-99928-1-1.html

半听可乐 发表于 2013-12-7 22:35:51

1993063 发表于 2013-12-7 21:49 static/image/common/back.gif


非常感谢,程序完全满足我的初衷,同时楼下的朋友那个程序似乎要更灵活一些,补充了我的需求,可惜最佳答案只能选一个,非常感谢你第一时间为我解答!

半听可乐 发表于 2013-12-7 22:38:01

edata 发表于 2013-12-7 21:14 static/image/common/back.gif
。。。。

万分感谢你和“1993063”这位朋友,你们的程序都完全满足我的需求,你的这个更灵活些,惊喜!

1993063 发表于 2013-12-7 22:39:09

没事儿堆堆码

1993063 发表于 2013-12-7 22:42:16

半听可乐 发表于 2013-12-7 04:38 static/image/common/back.gif
万分感谢你和“1993063”这位朋友,你们的程序都完全满足我的需求,你的这个更灵活些,惊喜!

楼主要自己学会简单的代码,其实像这样没技术含量
页: [1] 2 3
查看完整版本: 求框选文字和圆,将字高和圆直径统一