vba - VBA Solidworks 宏帮助 - 在多张图纸上替换工程图中的模型
问题描述
我真的希望有人可以帮助我:),我今天整天都在用头撞墙,试图让它发挥作用。
所以我发现有时需要为多个零件创建相同的图纸。
因此,我创建了一个宏,要求用户创建所需的图纸,然后当宏运行时,它将把所有其余部分替换到图纸中,同时将图纸另存为新图纸姓名。因此,当宏完成时,您将拥有与零件相同数量的图纸,并且每个相关的图纸都会有其相关的零件。可能会有需要重新附加的悬空尺寸,但是,这将比复制绘图、替换视图上的模型或在绘图启动时引用模型等更快。
这是问题所在。
我已经创建了宏,它运行完美。它基本上遵循以下步骤:
打开参考图
用新模型替换所有视图
用新名称保存绘图。
通过反复试验,我发现我需要关闭绘图并在每个循环上重新打开它。否则,由于某种原因,会打开多个(不可见)solidworks 应用程序,并且会损坏参考工程图文件。
打开和关闭文档往往需要时间。因此,我发现您可以使用:
swApp.DocumentVisible False, swDocDRAWING
然后它每次都不会打开图纸。这允许宏通过并准确地创建我需要的东西......对于单张图纸......
当我尝试使用双张图纸(图纸 1 和图纸 2)时,我发现它会一样快,但是,只有每张图纸的图纸 2 上的视图会使用新模型进行更新。
我发现,如果绘图文档不可见,那么移动指针的命令如下:
swModel.ActivateSheet vSheets(0)
不工作。指针卡在最后一张纸上(第 2 页)。这导致每张图纸只修改图纸 2。
现在,如果我把它拿走,并保持文档可见,它工作得很好。但是,它很慢,因为它正在打开和关闭文档。
有谁知道我如何在不可见的情况下修改绘图?或者如何在不可见的情况下在工作表之间移动指针?
任何帮助,将不胜感激
斯科特
解决方案
一种更好的方法和最快的方法:
- 复制图形文件并为其命名
- 关闭新图纸:使用ReplaceReference(来自 SolidWorks Document Manager 库)或ReplaceReferencedDocument将旧零件的路径替换为新零件的路径
- 打开图纸。
推荐阅读
- xamarin - 尚未依赖 nuget 时的包依赖
- javascript - 在 Chrome 扩展脚本之间共享功能的最佳方式是什么?
- javascript - 页面加载AngularJS时文本框绑定不起作用
- amqp - AMQP 的 DistributionMode 是否类似于 Tibco 中的自动确认?
- git - Git将本地仓库指向远程
- java - 如何在java中实现决策矩阵?
- android - 如何在 MaterialAlertDialogBuilder 中的视图周围添加边距?
- python - PyGitHub 问题 get_comments()
- java - 在 Camel-Spring-Boot 设置中从外部 JAR 配置 Camel 路由
- spring-boot - 读取 DataSerializable 时出现问题,命名空间:0,ID:0 同时反序列化 hazelcast 地图对象