明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: 45296876

[函数] 新问题 请教,还是属性块的问题。

[复制链接]
 楼主| 发表于 2013-4-11 12:06 | 显示全部楼层
Gu_xl 发表于 2013-4-11 10:46
(setq f (entnext (cdar (entget e))))
    (setq g (entget f))            
两句代码删掉!

entget f= entget (entnext f)= entget (entnext (ssname d (setq c (+ 1 c))))
原来是这意思,我发现了,你们的脑子咋那么好用呢,看来我的IQ是绝对有问题,版主不给出这个明灯的话,累死我也整不出来这条代码来。人比人,气死人啊。还需继续努力。谢谢版主了。
 楼主| 发表于 2013-4-11 12:33 | 显示全部楼层
  1. (defun c:zg(/ a b c d e f g )
  2.   
  3. (setq a (getdist "\n输入字高:"))
  4.   (setq b (getdist "\n请输入字宽比例:"))
  5. (setq c -1)
  6.   (setq d (ssget '((0 . "INSERT") (66 . 1))));获得包含'((0 . "INSERT") (66 . 1))两种信息的图块,也就是说获得有属性的图块
  7. (repeat (sslength d)
  8.    (setq e (ssname d (setq c (+ 1 c))))
  9.    (setq f e)
  10.   
  11.   (while (and
  12.            (setq f (entnext f))
  13.            (= "ATTRIB" (cdr (assoc 0 (setq g (entget f)))))
  14.            )   

  15.    (setq g (entmod (subst (cons 40 a) (assoc 40 g) g)))
  16.            (entmod (subst (cons 41 b) (assoc 41 g) g))
  17.   

  18.   (entupd e)
  19.     );while闭括号
  20.   );repeat闭括号
  21.   
  22.   (princ)
  23.   );defun闭括号
  24. 下面就是经超版指点所完成的批量修改属性块文字的字高与字宽程序

点评

代码里还有废话,还能继续优化!自己慢慢琢磨吧!  发表于 2013-4-11 13:49
 楼主| 发表于 2013-4-11 15:01 | 显示全部楼层
Gu_xl 发表于 2013-4-11 09:29
.
.
.

'((0 . "INSERT") (66 . 1))这句话去掉也可以吧。应该 对后面没什么影响吧,暂时对我选的属性块是没有影响。谢谢版主提醒。

点评

No!  发表于 2013-4-11 15:04
发表于 2013-4-11 16:32 | 显示全部楼层
45296876 发表于 2013-4-11 15:01
'((0 . "INSERT") (66 . 1))这句话去掉也可以吧。应该 对后面没什么影响吧,暂时对我选的属性块是没有影响 ...

从运行效率来说,第一个entmod不需要。
从结构化而言,连续赋值只要一个setq就行了,多了虽然效果一样,但显得不专业了。
另,输入宽度比例最好使用initget(bit=2+4=6)和getreal进行。
发表于 2020-8-14 23:22 | 显示全部楼层
谢谢分享学习了,解决了我很多问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 18:46 , Processed in 0.232258 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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