找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1766|回复: 7

[编程申请]:求改颜色LSP。

[复制链接]
发表于 2006-6-23 12:00:21 | 显示全部楼层 |阅读模式

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

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

×
目的:改变“增强属性块”内“文字”的“颜色”。

手段:只需要在运行命令后再选择块,然后被提示输入颜色值即可(这个块被多重嵌套,至少2层)。

要求:不能炸开块,即使因为运行需要而不得不炸开,命令执行后也必须使它成为一个块。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-6-25 20:49:36 | 显示全部楼层
用 VLISP 做了一个,请参考...

  1. (Defun C:test (/ *AcadDocument* blocks lstTxt en color)
  2.   (VL-LOAD-COM)
  3.   ;;        init the variables                .
  4.   (setq        *AcadDocument* (vla-Get-ActiveDocument (vlax-get-acad-object))
  5.         blocks               (vla-get-blocks *AcadDocument*)
  6.         lstTxt               '()
  7.   )
  8.   ;;        get the block                .
  9.   (setq en (vl-catch-all-apply 'EntSel (list "\nPlease select a block ojbect: ")))
  10.   (if (or (vl-catch-all-error-p en) (null en) (/= (cdr (assoc 0 (entget (car en)))) "INSERT"))
  11.     (vl-exit-with-value 0)
  12.   )
  13.   (setq vn (vlax-ename->vla-object (car en)))
  14.   ;;        get the color                .
  15.   (setq color (vl-catch-all-apply 'getInt (list "\nPlease input the text color (0 - 254)<1>:")))
  16.   (cond        ((vl-catch-all-error-p color) (vl-exit-with-value 0))
  17.         ((or (null color) (> color 254) (< color 0)) (setq color 1))
  18.   )
  19.   ;;        get the text object        .
  20.   (subFuc vn)
  21.   ;;        put the color to the text                .
  22.   (foreach txt lstTxt (princ "\n") (princ (vla-get-TextString txt)) (vla-put-color txt color))
  23.   (setvar "cmdecho" 0)
  24.   (command "_.regen")
  25.   (prin1)
  26. )
  27. ;;        递归函数求Text                .
  28. (Defun subFuc (blk)
  29.   (vlax-for en (vla-item blocks (vla-get-name blk))
  30.     (cond ((= (vla-get-objectName en) "AcDbBlockReference") (subFuc en))
  31.           ((= (vla-get-objectName en) "AcDbText") (setq lstTxt (cons en lstTxt)))
  32.     )
  33.   )
  34. )
  35. ;;       
                .
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2006-6-26 06:58:06 | 显示全部楼层
vl-catch-all-apply 用的多了,还可以用的更好些, 主程序写成函数,用 vl-catch-all-apply 执行,这样就不需要 *error* 处理
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2006-6-26 17:44:44 | 显示全部楼层
最初由 eachy 发布
[B]vl-catch-all-apply 用的多了,还可以用的更好些, 主程序写成函数,用 vl-catch-all-apply 执行,这样就不需要 *error* 处理 [/B]


真诚请 eachy 斑竹明示,谢谢------!!!!


请楼主将 AcDbText 改成你你想要的类型就可以的...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2006-6-26 19:46:30 | 显示全部楼层

  1. (defun c:tt (/ chgcolor oldos subFuc)
  2.   (Defun subFuc        (blk color)
  3.     (vlax-for en (vla-item blocks (vla-get-name blk))
  4.       (cond ((= (vla-get-objectName en) "AcDbBlockReference")
  5.              (subFuc en)
  6.             )
  7.             ((= (vla-get-objectName en) "AcDbText")
  8.              ;;(setq lstTxt (cons en lstTxt))
  9.              (vla-put-color en color)
  10.             )
  11.       )
  12.     )
  13.   )
  14.   (defun chgcolor (/ e col)
  15.     (if        (and (setq e (entsel "\nSelect Object: "))
  16.              (setq col (getint "\nInput Color: "))
  17.         )
  18.       (subFuc (vlax-ename->vla-object (car e)) col)
  19.     )
  20.   )
  21.   ;;Main
  22.   (setq oldos (getvar "osmode"))
  23.   (setvar "osmode" 0)
  24.   (vl-catch-all-apply 'chgcolor)
  25.   (setvar "osmode" oldos) ;_大家可以测试前面 CANCEL 后这句是否执行
  26.   (princ)
  27. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 20:01 , Processed in 0.211640 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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