找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3157|回复: 7

[函数]更改块属性文字的特性

[复制链接]
发表于 2005-12-16 21:36:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
想更改属性块中文字的特性,比如:把原来图上的某属性值字体、字体高度、宽度比例、颜色等改为HZTXT、高度为4、宽度比例为0.7、颜色为白色等,如何编程序实现。

在各位的大力帮助下,我终于达到了自己的要求。现奉上所作程序,请大家指正,共同提高。
;;程序名称:修改属性块中各属性的特性
;;执行命令:TT
;;程序功能:将选定的属性块对象中的各属性的特性,如字体、颜色等改变。
;;
;;
(defun c:TT (/ selobjs)
  (setq selobjs (ssget))  ;修改用户选择集中属性块的属性
  ;;(setq selobjs (ssget "X" '((0 . "INSERT"))));自动修改所有属性块的属性
  (if (not selobjs)
    (princ "\n没有选择对象!")
    (change-att selobjs)
  )
  (princ)
)
(defun change-att (selobjs / ss_count ss_name ss_att)
  (vl-load-com)
  (setq ss_count 0)
  (repeat (sslength selobjs)
    (setq ss_name (ssname selobjs ss_count))
    (if        (and (setq ss_att (entget ss_name))
             (= (cdr (assoc 0 ss_att)) "INSERT")
        )
      (progn
        (if (= (cdr (assoc 66 ss_att)) 1)
          (progn                        ;下面是设置属性(针对增强属性编辑器中的文字选项和特性),可以使用变量,由用户输入
            (mapcar '(lambda (x)
                       (vla-put-layer x "text-en")  ;设置层为text-en
                       (vla-put-color x acbylayer)  ;设置颜色随层
                       (vla-put-stylename x "ENTXT");设置字体样式为自定义的ENTXT
                       (vla-put-height x 3)            ;设置字体高度为3,此处可以加一个图纸比例
                       (vla-put-scalefactor x 0.7)  ;设置宽度比例为0.7
                                                    ;......
                     )
                    (safearray-value
                      (variant-value
                        (vla-getattributes
                          (vlax-ename->vla-object ss_name)
                        )
                      )
                    )
            )
          )
        )
      )
    )
    (setq ss_count (1+ ss_count))
  )
)
(princ "\n程序已加载,输入TT命令执行。")


可以加一个对话框,由用户输入各属性值,比如增强属性编辑器,请高手指点。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-12-16 22:19:24 | 显示全部楼层
如果你会 Lisp 就用 entmod ,还可以用 Vla 函数修改特性
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-16 22:33:46 | 显示全部楼层
谢谢eachy,我刚接触LISP,想学习,希望能有详细的程序作为参考。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-17 10:18:55 | 显示全部楼层
(entmod)是可以实现,但我也有一个疑问:如果要改块属性文字中某个特定字符的特性,怎么实现?望高手指点,谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-17 12:18:37 | 显示全部楼层
最初由 wuzz 发布
[B](entmod)是可以实现,但我也有一个疑问:如果要改块属性文字中某个特定字符的特性,怎么实现?望高手指点,谢谢! [/B]

eachy斑竹的这个程序可以看看,让程序一步一步运行,可以学到不少东西,相信wuzz兄的问题也可以解决!
链接在此:http://www.xdcad.net/forum/showthread.php?s=&threadid=502381
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-17 17:59:36 | 显示全部楼层
用属性命令
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-12-19 14:15:44 | 显示全部楼层
附件中是两个自定义函数的源码,用于块属性的提取与写入,看看对你可能有用。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-19 21:50:31 | 显示全部楼层
谢谢大家的帮助。再问一下ATTRIB和ATTDEF的区别是什么?好像我得到的图元类型是ATTDEF
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-29 02:10 , Processed in 0.199764 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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