明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: Lampard

[提问] 【有偿求助 100 CNY】图块跨图更新

[复制链接]
 楼主| 发表于 2024-8-2 15:44:18 | 显示全部楼层
1028695446 发表于 2024-8-2 15:31
我知道这个功能,只支持有名块和动态块,不支持纯无名块

操作是 在A图中带基点复制需要更新的图块(可以 ...

通过插件吗?怎样更新到B图?
发表于 2024-8-2 15:55:42 | 显示全部楼层
Lampard 发表于 2024-8-2 15:28
简单的会自己写,您说的这个不会啊

可以把要更新的块全部一起WBLOCK写出去,然后打开这个DWG,删除图块,再原地插入B图,另存为B图,收工。不用一句代码。
 楼主| 发表于 2024-8-2 16:06:16 | 显示全部楼层
kozmosovia 发表于 2024-8-2 15:55
可以把要更新的块全部一起WBLOCK写出去,然后打开这个DWG,删除图块,再原地插入B图,另存为B图,收工。 ...

原图里图块都有各自的位置、角度甚至缩放比例,删掉再插不太行的
发表于 2024-8-2 16:20:08 | 显示全部楼层
本帖最后由 kozmosovia 于 2024-8-2 16:22 编辑
Lampard 发表于 2024-8-2 16:06
原图里图块都有各自的位置、角度甚至缩放比例,删掉再插不太行的

你都没搞明白操作逻辑,是打开WBLOCK出来的临时DWG,那里面的图块删除,会保留块定义,然后再插入整个B图并分解,快名相同的会用DWG里面新的定义而不用B里面的定义,从而实现更新B图,最后另存为B图。
你要愿意写代码,就是一堆command就行
发表于 2024-8-2 16:34:48 | 显示全部楼层
就是加强设计中心的意思了
发表于 2024-8-2 16:54:56 | 显示全部楼层
Lampard 发表于 2024-8-2 15:44
通过插件吗?怎样更新到B图?

通过lisp插件处理的
发表于 2024-8-2 17:21:54 | 显示全部楼层
  1. (setq ss (ssget ":E:S" '((0 . "INSERT"))))          ;;;选择图块
  2. (setq ent (vlax-ename->vla-object (ssname ss 0)))   ;;;转换成VLA对象
  3. (setq blkname (vla-get-name ent))                   ;;;获取图块名
  4. (setq doc1 (vla-get-ActiveDocument (vlax-get-acad-object)))    ;;;获取当前文档
  5. (setq blk1 (vla-item (vla-get-blocks doc1) blkname))           ;;;获取当前图块定义blk1

  6. (setq doc2 (vla-item (vla-get-Documents (vlax-get-acad-object)) "Drawing2.dwg"))    ;;;获取需要更新的文档
  7. (setq blk2 (vla-item (vla-get-blocks doc2) blkname))           ;;;获取需要更新的图块定义blk2
  8. (vlax-for item blk2 (vla-delete item))                         ;;;删除图块定义blk2中的图元
  9. (setq listblk '())
  10. (vlax-for item blk1 (setq listblk (cons item listblk)))        ;;;把blk1中的图元列表
  11. (setq saf (vlax-make-safearray vlax-vbObject  (cons 0 (1- (length listblk)))))
  12. (vlax-safearray-fill saf listblk)                              ;;;把列表转成数组
  13. (vla-CopyObjects doc1 saf blk2)                                ;;;把数字复制到blk2中

  14. (vla-Regen doc2 acActiveViewport)                              ;;;刷新doc2
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2024-8-2 19:35:54 | 显示全部楼层
本帖最后由 Lampard 于 2024-8-2 19:41 编辑

您好,感谢回复。
能否从当前文档里点选多个块(块A、块B、块C),仅将这些块从Drawing2里更新过来?

我们需要的模式是,甲修改了块ABC,告知乙;乙通过操作,把自己图纸里的块ABC重新定义

发表于 2024-8-2 20:19:19 | 显示全部楼层
本帖最后由 kozmosovia 于 2024-8-2 21:06 编辑

这根一早说的需求完全不一样。你这种需求,还是手动比较保险些。
发表于 2024-8-3 06:26:29 来自手机 | 显示全部楼层
最核心的原理已经给你了,你可以根据自己的实际情况进行编排,应该不难的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 10:06 , Processed in 0.170169 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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