明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3221|回复: 24

[提问] 求教!修改动态块内图元颜色后、屏幕上没有更新如何解决?

[复制链接]
发表于 2024-2-15 15:26:08 | 显示全部楼层 |阅读模式
5明经币
本帖最后由 xiaocainiao 于 2024-2-16 08:44 编辑

请教一下各位大神、下面是我弄的一个修改图块颜色的代码、现在有一个问题:

就是用blk_col_change修改后、需要用-bedit命令进入块编辑器并保存退出、
对应的同名块才能在屏幕上更新显示、
我想问一下有没有办法不用-bedit命令、直接更新修改后的同名块?

之前试过用vla-Update更新、但是这个函数貌似只能更新单个图元、如果图块是嵌套在其他块里、就不好处理了、
另外楼下有大神分享了程序可以更新同名块、但是将普通块和动态块分开处理了、我想统一处理不知道能否实现?
  1. (defun c:tt (/ blk_col_change blk_name blks block_bh_col_new en obj ss)
  2.   ;修改块内图元颜色
  3.   (defun blk_col_change (blk block_bh_col_new)
  4.     (vlax-for x blk
  5.       (vla-put-Color x block_bh_col_new)
  6.       (if (= "INSERT" (cdr (assoc 0 (entget (vlax-vla-object->ename x)))))
  7.         (blk_col_change (vla-Item blks (vla-get-EffectiveName x)) block_bh_col_new)
  8.       )
  9.     )
  10.   )
  11.   (setq blks (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object))))
  12.   (setq ss (ssget ":S"'((0 . "insert"))))
  13.   (if ss
  14.     (progn
  15.       (setq en (ssname ss 0))
  16.       (setq obj (vlax-ename->vla-object en)
  17.         blk_name (vla-get-EffectiveName obj)
  18.       )
  19.       (setq block_bh_col_new (getint "\n输入新的色号:<250>"))
  20.       (if (null block_bh_col_new)(setq block_bh_col_new 250))
  21.       (blk_col_change (vla-Item blks blk_name) block_bh_col_new)
  22.       (command "-bedit" blk_name)
  23.       (command "bsave")
  24.       (command "bclose")  
  25.     )
  26.   )
  27. )

测试文件上传到附件了、如果有会的朋友、感谢解答
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

修改了一下:
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-2-15 15:26:09 | 显示全部楼层
本帖最后由 ssyfeng 于 2024-2-15 18:57 编辑

修改了一下:


本帖子中包含更多资源

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

x

点评

真的挺好用,感谢分享  发表于 2024-2-16 11:46
回复

使用道具 举报

发表于 2024-2-15 15:50:22 | 显示全部楼层
帮顶,期待高手帮忙解答
回复

使用道具 举报

 楼主| 发表于 2024-2-15 17:16:26 | 显示全部楼层
ssyfeng 发表于 2024-2-15 17:13
应该是这个效果:

是这个意思、谢谢
回复

使用道具 举报

 楼主| 发表于 2024-2-15 17:36:28 | 显示全部楼层
ssyfeng 发表于 2024-2-15 17:13
应该是这个效果:

不好意思、刚刚发现一个问题、就是更新图块好像只是更新选择的图块、其他同名块无法更新、有没有办法把同名块一起更新啊
回复

使用道具 举报

发表于 2024-2-15 18:06:36 | 显示全部楼层
xiaocainiao 发表于 2024-2-15 17:36
不好意思、刚刚发现一个问题、就是更新图块好像只是更新选择的图块、其他同名块无法更新、有没有办法把同 ...

已修改,请重新下载
回复

使用道具 举报

 楼主| 发表于 2024-2-15 18:11:09 | 显示全部楼层
本帖最后由 xiaocainiao 于 2024-2-15 18:18 编辑
ssyfeng 发表于 2024-2-15 18:06
已修改,请重新下载

貌似还是有点问题、就是如果有两个动态块、修改其中一个动态块颜色、另一个也跟着变了
回复

使用道具 举报

发表于 2024-2-15 18:41:53 | 显示全部楼层
本帖最后由 ssyfeng 于 2024-2-15 19:08 编辑
xiaocainiao 发表于 2024-2-15 18:11
貌似还是有点问题、就是如果有两个动态块、修改其中一个动态块颜色、另一个也跟着变了

更新了文件,你重新下载试试
回复

使用道具 举报

 楼主| 发表于 2024-2-15 20:47:11 | 显示全部楼层
ssyfeng 发表于 2024-2-15 18:41
更新了文件,你重新下载试试

这个可以了、谢谢
回复

使用道具 举报

 楼主| 发表于 2024-2-16 20:34:19 | 显示全部楼层
ssyfeng 发表于 2024-2-15 18:41
更新了文件,你重新下载试试

大神您好、我还想请教一下、更新同名图块这个除了用vla-Update函数外、还有没有其他方法可以更新同名块、主要我发现vla-Update有个弊端、就是如果修改的图块嵌套到其他块里面好像更新不了;

另外我是想弄个通用的方式、就是不用区分这个图块是不是动态块、都是用一样的方式更新、不知道能不能实现?

目前我用的进块编辑器、再保存退出的方法更新的、这种倒是可行、就是会闪一下屏幕有点难受
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 11:36 , Processed in 0.197320 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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