xiaocainiao 发表于 2024-2-15 15:26:08

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

本帖最后由 xiaocainiao 于 2024-2-16 08:44 编辑

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

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

之前试过用vla-Update更新、但是这个函数貌似只能更新单个图元、如果图块是嵌套在其他块里、就不好处理了、
另外楼下有大神分享了程序可以更新同名块、但是将普通块和动态块分开处理了、我想统一处理不知道能否实现?
(defun c:tt (/ blk_col_change blk_name blks block_bh_col_new en obj ss)
;修改块内图元颜色
(defun blk_col_change (blk block_bh_col_new)
    (vlax-for x blk
      (vla-put-Color x block_bh_col_new)
      (if (= "INSERT" (cdr (assoc 0 (entget (vlax-vla-object->ename x)))))
      (blk_col_change (vla-Item blks (vla-get-EffectiveName x)) block_bh_col_new)
      )
    )
)
(setq blks (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object))))
(setq ss (ssget ":S"'((0 . "insert"))))
(if ss
    (progn
      (setq en (ssname ss 0))
      (setq obj (vlax-ename->vla-object en)
      blk_name (vla-get-EffectiveName obj)
      )
      (setq block_bh_col_new (getint "\n输入新的色号:<250>"))
      (if (null block_bh_col_new)(setq block_bh_col_new 250))
      (blk_col_change (vla-Item blks blk_name) block_bh_col_new)
      (command "-bedit" blk_name)
      (command "bsave")
      (command "bclose")
    )
)
)
测试文件上传到附件了、如果有会的朋友、感谢解答

ssyfeng 发表于 2024-2-15 15:26:09

本帖最后由 ssyfeng 于 2024-2-15 18:57 编辑

修改了一下:


paulpipi 发表于 2024-2-15 15:50:22

帮顶,期待高手帮忙解答

xiaocainiao 发表于 2024-2-15 17:16:26

ssyfeng 发表于 2024-2-15 17:13
应该是这个效果:

是这个意思、谢谢

xiaocainiao 发表于 2024-2-15 17:36:28

ssyfeng 发表于 2024-2-15 17:13
应该是这个效果:

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

ssyfeng 发表于 2024-2-15 18:06:36

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

已修改,请重新下载

xiaocainiao 发表于 2024-2-15 18:11:09

本帖最后由 xiaocainiao 于 2024-2-15 18:18 编辑

ssyfeng 发表于 2024-2-15 18:06
已修改,请重新下载
貌似还是有点问题、就是如果有两个动态块、修改其中一个动态块颜色、另一个也跟着变了

ssyfeng 发表于 2024-2-15 18:41:53

本帖最后由 ssyfeng 于 2024-2-15 19:08 编辑

xiaocainiao 发表于 2024-2-15 18:11
貌似还是有点问题、就是如果有两个动态块、修改其中一个动态块颜色、另一个也跟着变了
更新了文件,你重新下载试试

xiaocainiao 发表于 2024-2-15 20:47:11

ssyfeng 发表于 2024-2-15 18:41
更新了文件,你重新下载试试

这个可以了、谢谢

xiaocainiao 发表于 2024-2-16 20:34:19

ssyfeng 发表于 2024-2-15 18:41
更新了文件,你重新下载试试

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

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

目前我用的进块编辑器、再保存退出的方法更新的、这种倒是可行、就是会闪一下屏幕有点难受
页: [1] 2 3
查看完整版本: 求教!修改动态块内图元颜色后、屏幕上没有更新如何解决?