找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 805|回复: 9

[日积月累]:修改图元至单色。。。。

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-6-26 04:41:33 | 显示全部楼层 |阅读模式

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

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

×

  1. (defun ea:Clearcset (/ cset)
  2.   (if (not (vl-catch-all-error-p
  3.              (setq cset
  4.                     (vl-catch-all-apply
  5.                       'vla-item
  6.                       (list
  7.                         (vlax-get-property
  8.                           (vlax-get-property
  9.                             (vlax-get-acad-object)
  10.                             'activedocument
  11.                           )
  12.                           'selectionsets
  13.                         )
  14.                         "CURRENT"
  15.                       )
  16.                     )
  17.              )
  18.            )
  19.       )
  20.     (vla-delete cset)
  21.   )
  22.   (princ)
  23. )
  24. (defun c:test (/ chgblkcolor)
  25.   (defun chgblkcolor (obj col)
  26.     (cond
  27.       ((= (vla-get-objectname obj) "AcDbBlockReference")
  28.        (vlax-for m (vla-item
  29.                      (vlax-get (vlax-get (vlax-get-acad-object)
  30.                                          'activedocument
  31.                                )
  32.                                'Blocks
  33.                      )
  34.                      (vla-get-name obj)
  35.                    )
  36.          (if (= (vla-get-objectname m) "AcDbBlockReference")
  37.            (chgblkcolor m col)
  38.            (vla-put-color m 8)
  39.          )
  40.        )
  41.       )
  42.       (t
  43.        (vla-put-color obj 8)
  44.       )
  45.     )
  46.   )
  47.   (ea:ClearCSet)
  48.   (if (ssget)
  49.     (vlax-map-collection
  50.       (vlax-get
  51.         (vlax-get (vlax-get-acad-object) 'activedocument)
  52.         'activeselectionset
  53.       )
  54.       '(lambda (i)
  55.          (chgblkcolor i 8)
  56.        )
  57.     )
  58.   )
  59.   (princ)
  60. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-6-27 08:46:29 | 显示全部楼层
在我的机子上,为何这个程序时灵时不灵的
还有改成其他颜色也有问题
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-27 11:30:22 | 显示全部楼层
用了ClearCSet还是不行?[php]

命令: test
选择对象: 指定对角点: 找到 7 个

选择对象:

错误: AutoCAD: 调用方法 Clear (接口 IAcadSelectionSet) 失败

命令: tst 未知命令“TST”。按 F1 查看帮助。

命令: test
选择对象: 指定对角点: 找到 7 个

选择对象:

错误: AutoCAD: 调用方法 Clear (接口 IAcadSelectionSet) 失败
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2004-6-27 11:43:29 | 显示全部楼层
我这测试没有问题,对 Insert 要进行一次 regen 才可以看到效果

再次试验的确有问题,Undo以后 ActiveSelectionset 会出现另外一种情况,就是有 conut 属性但不能 Clear ,所以 ssget 的没有进入ActiveSelectionset。这样的话 ea:clearcset 可以简化成以下代码就没有问题了。因为要使用新选择集,旧的不管有没有尽管清理一次。

  1. (defun ea:Clearcset (/ cset)
  2.   (if (not (vl-catch-all-error-p
  3.              (setq cset
  4.                     (vl-catch-all-apply
  5.                       'vla-item
  6.                       (list
  7.                         (vlax-get-property
  8.                           (vlax-get-property
  9.                             (vlax-get-acad-object)
  10.                             'activedocument
  11.                           )
  12.                           'selectionsets
  13.                         )
  14.                         "CURRENT"
  15.                       )
  16.                     )
  17.              )
  18.            )
  19.       )
  20.     (vla-delete cset)
  21.   )
  22.   (princ)
  23. )


再补充几句,上面的程序仅是为了满足当时改图的需要,能够运行且完成了工作就 OK ,远谈不上完善,比如对属性还要单独改、错误处理、标记开始与结束等等。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-28 04:33:09 | 显示全部楼层
修改图元至单色, 以前有讨论... 可能比此更简洁. 不知斑竹的还有什么特殊功能?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2004-6-28 07:54:26 | 显示全部楼层
最初由 lsjjm 发布
[B]修改图元至单色, 以前有讨论... 可能比此更简洁. 不知斑竹的还有什么特殊功能? [/B]

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

使用道具 举报

发表于 2004-6-29 09:07:06 | 显示全部楼层

  1. ;;轉貼(作者:......忘了)
  2. ;;To change all entities color you've seen the rest, to change block entities
  3. ;;color - use this quick and dirty code (A2k)...
  4. ;;對屬性還要單獨改.......最後要REGEN。
  5. (defun CHGBLKENTCOL (COL / BLKCOL)
  6.   (setq        BLKCOL (vla-get-blocks
  7.                  (vla-get-activedocument
  8.                    (vlax-get-acad-object)
  9.                  )
  10.                )
  11.   )
  12.   (vlax-for OBJ        BLKCOL
  13.     (if        (and
  14.           (= (vla-get-islayout OBJ) :vlax-false)
  15.           (= (vla-get-isxref OBJ) :vlax-false)
  16.         )
  17.       (CHGCOL OBJ BLKCOL COL)
  18.     )
  19.   )
  20.   (princ)
  21. )

  22. (defun CHGCOL (OBJ BCL COL)
  23.   (vlax-for ENT        OBJ
  24.     (if        (= (vla-get-objectname ENT) "AcDbBlockReference")
  25.       (CHGCOL (vla-item BCL (vla-get-name ENT)) BCL COL)
  26.       ;;(if (vlax-property-available-p ENT 'COLOR)
  27.       (vla-put-color ENT COL)                ;acbylayer)
  28.       ;;)
  29.     )
  30.   )
  31. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-6-30 01:44:01 | 显示全部楼层
最初由 eachy 发布
[B]我这测试没有问题,对 Insert 要进行一次 regen 才可以看到效果

再次试验的确有问题,Undo以后 ActiveSelectionset 会出现另外一种情况,就是有 conut 属性但不能 Clear ,所以 ssget 的没有进入ActiveSelections... [/B]


你这个方法是没办法去掉前一个选集的

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

使用道具 举报

发表于 2004-6-30 02:11:47 | 显示全部楼层
哦?能说说原理么?
哦~
不过,处理出错是针对当前选择集,前一个选集与程序结构本身没什么大的关系,消除与否并不影响程序运行的效果吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-30 08:12:11 | 显示全部楼层

  1. ;;(vlax-for obj (activeselectionset) (print obj)(princ))
  2. ;;activeselectionset相同於autocad中的"P"
  3. ;;如(ssget)為nil並不影嚮activeselectionset
  4. ;;BY 龍龍仔(LUCAS)
  5. (defun ACTIVESELECTIONSET (/ SSOBJ)
  6.   (vl-catch-all-apply
  7.     'vla-delete
  8.     (list
  9.       (vl-catch-all-apply
  10.         'vla-item
  11.         (list (vla-get-selectionsets
  12.                 (vla-get-activedocument (vlax-get-acad-object))
  13.               )
  14.               "CURRENT"
  15.         )
  16.       )
  17.     )
  18.   )
  19.   (setq        SSOBJ (vla-get-activeselectionset
  20.                 (vla-get-activedocument (vlax-get-acad-object))
  21.               )
  22.   )
  23.   (if (/= (vla-get-count SSOBJ) 0)
  24.     SSOBJ
  25.     NIL
  26.   )
  27. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 10:12 , Processed in 0.277746 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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