半听可乐 发表于 2013-12-7 22:43:16

1993063 发表于 2013-12-7 22:31 static/image/common/back.gif
;;这个更通用一点的
(Defun C:tt (/ en i ss ty)
(setq *th* (ureal 1 "" "文字高度" *th*))


命令: tt ; 错误: no function definition: UREAL

我目前的需求是有预先定义数值,然后还能输入,已经足够用了,非常感谢!

半听可乐 发表于 2013-12-7 22:45:20

1993063 发表于 2013-12-7 22:31 static/image/common/back.gif
;;这个更通用一点的
(Defun C:tt (/ en i ss ty)
(setq *th* (ureal 1 "" "文字高度" *th*))


有预定义的数值+可输入已经足够用了,谢谢你!

1993063 发表于 2013-12-7 22:46:00

本帖最后由 1993063 于 2013-12-7 04:47 编辑

半听可乐 发表于 2013-12-7 04:43 static/image/common/back.gif
命令: tt ; 错误: no function definition: UREAL

我目前的需求是有预先定义数值,然后还能输入,已经 ... UREAL 这个函数不是已经告诉你地址了么?
要预先定义的话,加一句 (or *th* (setq *th* 300)) ;300是字高       就搞定了

edata 发表于 2013-12-7 23:14:14

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

小改,调整为全局函数版(所谓的记忆功能)(defun c:ty(/ ss en e txth1 dr1)
(prompt "\n请选择需要统一直径与字高的圆、文字:")
(if (setq ss(ssget '((0 . "*text,circle"))))
    (progn
      (or dr (setq dr 150))
      (or txth (setq txth 300))
      (or (and (setq dr1(getreal(strcat "\n输入统一圆的直径值<"(if dr (rtos dr 2 2) "150")">:")))(setq dr dr1)))
      (or (and (setq txth1(getreal(strcat "\n输入统一的文字高度值<"(if txth (rtos txth 2 2) "300")">:")))(setq txth txth1)))
      (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)
    )

edata 发表于 2013-12-7 23:18:20

1993063 发表于 2013-12-7 22:39 static/image/common/back.gif
没事儿堆堆码

其实我在写去掉圆内圆的,刚巧看到这个帖子,先写的这个,都是没事练练思路。。。
如何清除园内圆
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=108624&fromuid=338795

312735894 发表于 2013-12-7 23:36:19

额,我写个就当练习练习,有什么错误还请莫怪!(defun c:tt( / en i lx name)
(setq en (ssget '((0 . "*text,circle"))))
(setq i 0)
(repeat (sslength en)
    (setq name (ssname en i))
    (setq lx (cdr (assoc 0 (entget name))))
    (cond
      ((= lx "TEXT") (entmod (subst (cons 40 300) (assoc 40 (entget name)) (entget name))));双引号中的英文一定要大写!!!?
      ((= lx "MTEXT") (entmod (subst (cons 40 300) (assoc 40 (entget name)) (entget name))));双引号中的英文一定要大写!!!?
      ((= lx "CIRCLE") (entmod (subst (cons 40 75) (assoc 40 (entget name)) (entget name))));双引号中的英文一定要大写!!!?
    )
    (setq i (1+ i))
)
)

半听可乐 发表于 2013-12-8 09:56:26

312735894 发表于 2013-12-7 23:36 static/image/common/back.gif
额,我写个就当练习练习,有什么错误还请莫怪!

很开心大家来各显神通

半听可乐 发表于 2013-12-8 09:59:02

edata 发表于 2013-12-7 23:14 static/image/common/back.gif
小改,调整为全局函数版(所谓的记忆功能)

朋友,如果我想增加个图层识别功能怎么改呢?即只希望修改指定图层中的文字和圆,指定的图层在程序中预先定义好,程序运行时预定义图层之外的图元不被选择,有劳了

ZZXXQQ 发表于 2013-12-8 10:02:10


代替cond
...
(entmod (subst (cons 40 (if (= lx "CIRCLE") 75 300) (assoc 40 (entget name)) (entget name))))
...

半听可乐 发表于 2013-12-8 10:32:20

ZZXXQQ 发表于 2013-12-8 10:02 static/image/common/back.gif
代替cond
...
(entmod (subst (cons 40 (if (= lx "CIRCLE") 75 300) (assoc 40 (entget name)) (entge ...

大侠们一下子奉献了这么多的好作品,小弟略晕,Z版主这点睛之笔是要画在哪里呢?
页: 1 [2] 3
查看完整版本: 求框选文字和圆,将字高和圆直径统一