首页 > 解决方案 > VBA Solidworks 宏帮助 - 在多张图纸上替换工程图中的模型

问题描述

我真的希望有人可以帮助我:),我今天整天都在用头撞墙,试图让它发挥作用。

所以我发现有时需要为多个零件创建相同的图纸。

因此,我创建了一个宏,要求用户创建所需的图纸,然后当宏运行时,它将把所有其余部分替换到图纸中,同时将图纸另存为新图纸姓名。因此,当宏完成时,您将拥有与零件相同数量的图纸,并且每个相关的图纸都会有其相关的零件。可能会有需要重新附加的悬空尺寸,但是,这将比复制绘图、替换视图上的模型或在绘图启动时引用模型等更快。

这是问题所在。

我已经创建了宏,它运行完美。它基本上遵循以下步骤:

  1. 打开参考图

  2. 用新模型替换所有视图

  3. 用新名称保存绘图。

通过反复试验,我发现我需要关闭绘图并在每个循环上重新打开它。否则,由于某种原因,会打开多个(不可见)solidworks 应用程序,并且会损坏参考工程图文件。

打开和关闭文档往往需要时间。因此,我发现您可以使用:

swApp.DocumentVisible False, swDocDRAWING

然后它每次都不会打开图纸。这允许宏通过并准确地创建我需要的东西......对于单张图纸......

当我尝试使用双张图纸(图纸 1 和图纸 2)时,我发现它会一样快,但是,只有每张图纸的图纸 2 上的视图会使用新模型进行更新。

我发现,如果绘图文档不可见,那么移动指针的命令如下:

swModel.ActivateSheet vSheets(0)

不工作。指针卡在最后一张纸上(第 2 页)。这导致每张图纸只修改图纸 2。

现在,如果我把它拿走,并保持文档可见,它工作得很好。但是,它很慢,因为它正在打开和关闭文档。

有谁知道我如何在不可见的情况下修改绘图?或者如何在不可见的情况下在工作表之间移动指针?

任何帮助,将不胜感激

斯科特

标签: vbasolidworkssolidworksapi

解决方案


一种更好的方法和最快的方法:

  • 复制图形文件并为其命名
  • 关闭新图纸:使用ReplaceReference(来自 SolidWorks Document Manager 库)或ReplaceReferencedDocument将旧零件的路径替换为新零件的路径
  • 打开图纸。

推荐阅读