BUrBaKy 发表于 2022-7-6 22:46:46

如何获取块参考f

好的,我创建了一个动态块,带有名为“ID\u EL”的标记,并将其保存在名为“ID\u EL\u dwg.dwg”的dwg中。
我打开了一个新的图形,并在希望中使用vba:从“ID\u EL\u DWG.DWG”文件中导入“ID\u EL”参考,然后在模型空间中以不同的标记值插入块3次。
除了第一部分,我几乎什么都懂了。
如何将块参照从另一个dwg加载到当前dwg?
 
我不想将dwg作为块插入,因为这样我必须分解它,才能使用标记访问我的动态块来修改它。
 
希望不要问太多,但我在网上搜索了很多次,什么也没找到。(除了插入dwg作为块)
 
也欢迎其他解决方案。
提前感谢!

dbroada 发表于 2022-7-6 22:54:24

这是最近讨论过的,我认为最终的结果是你不能。你可以将你的块从它当前所在的图形中WBLOCK出来,使其可以插入,而不必分解它。或者,可以在块名称的前面添加一个*以插入已分解的块。

BlackBox 发表于 2022-7-6 22:57:32

::一旦您将动态块WBLOCK:
 
与其在块集合上调用Add方法来定义块引用,只需将所述块引用(读取并创建新块项)多次插入到ModelSpace对象中,为什么不简单地使用InsertBlock方法,并在一个步骤中同时执行这两个操作(在这种情况下重复x3次):
 

object.InsertBlock(InsertionPoint, Name, Xscale, Yscale, ZScale, Rotation [, Password])

 
... 然后相应地修改每个实例的标记。
 
希望这有帮助!

BUrBaKy 发表于 2022-7-6 23:03:30

我想我找到了办法。这不是很专业,但它完成了工作。

   Dim ipt(0 To 2) As Double
   Dim B As AcadBlockReference
   ipt(0) = 0: ipt(1) = 0: ipt(2) = 0
   Set B = ThisDrawing.ModelSpace.InsertBlock(ipt, "I:\ID_EL_DWG.dwg", 1#, 1#, 1#, 0)
   B.Delete
   Set B = ThisDrawing.ModelSpace.InsertBlock(ipt, "ID_EL", 1#, 1#, 1#, 0)
   ZoomAll

问题是,通过插入dwg,块参照也会单独出现在dwg中。
所以在第一次之后。InsertBlock i将有两个参考:ID\u EL\u DWG(我刚刚插入的)和ID\u EL(我刚刚插入的图形中的块参考)。
然后,我可以删除dwg并重新插入想要的块,将其指定给“B”对象,使其准备好进行标记编辑

BlackBox 发表于 2022-7-6 23:07:37

 
 
 
 
呵呵!?我想这是真的。。。你只能把马牵到水边。

dbroada 发表于 2022-7-6 23:12:00

我必须承认,我没有仔细阅读他的请求,否则我会指出,你不需要分解它来获得额外的块定义,但即使如此,我认为你很好地引导了他。
 
有人曾经有一个关于引导马下水和导航的标志,但我已经忘记了它是什么。

BlackBox 发表于 2022-7-6 23:14:35

 
别担心;谢谢你,你这么说真是太好了。
 
星期五快乐。

BUrBaKy 发表于 2022-7-6 23:18:24

我倾向于认为我比马强,尽管我的VBA水平很低,谢谢。
 
不过,我确实说过我想插入一个新文件,尽管我实际上需要将其插入一个已经打开的文件中。我这样做的原因是,我不知道这会有什么不同(不知道wblock方法)。
这就是为什么我不能使用“wblock”命令。
至于InsertBlock方法,这就是我使用的方法,或者可能我不知道如何在这个案例中充分利用它。生活就是学习。
至于马,在灯光下可能是正确的,但在阳光下并不总是正确的,但我必须说你有很好的外交技巧。

BlackBox 发表于 2022-7-6 23:25:23

 
 
我的陈述类似于这样一个事实,即你得到了一个解决方案(两次),然后完全无视所说的解决方案。。。我并没有把你(或任何人)比作马,伙计。
 
现在还不清楚,也不重要,你是否已经测试了提议的解决方案。我自愿做我的职位,并将继续这样做(上帝愿意)在未来许多年。你决定对我分享的信息做什么,嗯,正是这样——由你决定。我当然不总是正确的。
 
 
我们都从某个地方开始。
 
WBLOCK是一个命令,它可以消除从另一个图形(因此建议)复制/提取块参照的需要。只需打开“ID\u EL\u DWG.DWG”并输入WBLOCK命令。在结果对话框中,选择左上角的“block”,并从下拉列表中选择“ID\u EL”,指定文件路径和所需的单位,然后点击OK。
 
结果是一个块(“ID\u EL.dwg”也许?)可以在没有重复块参照的情况下插入(“ID\u EL\u DWG”和“ID\u EL”),而只提供单个块参照(“ID\u EL”)。
 
在这种情况下,对象。InsertBlock实现了您设定的目标;只需确保包含有条件地修改所需每个属性/属性的值所需的代码。
 
 
“有两种传播光线的方式:一种是蜡烛,另一种是反射光线的镜子”——伊迪丝·沃顿
 
此外,夜间操作期间,灯具/闪光灯/化学/香烟灯违反“光纪律”;白天或晚上,如果它呼吸,有一个范围可以看到它:
 
http://www.visualintel.net/Army/People/Army-Sniper/DA-SD-05-06515JPEG/495417276_kxytT-S.jpg
 
(^^带白天/夜间视野范围的步枪^^)
 
:机载:

SEANT 发表于 2022-7-6 23:28:06

一、 同样,由于易于自动化,更喜欢基于WBLOCK方法(即每个图形一个块)的块库设置。但是,如果需要保留“主文件”方法,该线程将显示一个关于将块定义传输到工作图形的附加编程选项。
 
插入实际引用可能需要进一步增强以考虑动态操作和/或属性。
http://www.cadtutor.net/forum/showthread.php?26666
页: [1] 2
查看完整版本: 如何获取块参考f