SOLIDWORKS API编程:VBA宏与VSTA宏实战应用

宏是类似于脚本的应用程序,可以直接在 SOLIDWORKS 环境中执行和编辑。

宏利用 SOLIDWORKS API 和第三方组件 API(如 Excel 或文件系统)来补充 SOLIDWORKS 功能。在大多数情况下,宏用作自动化脚本来增强重复性任务。

有数以千计的宏可以从各种资源下载,例如 SOLIDWORKS官方论坛(https://forum.solidworks.com/community/api)或 CodeStack 'Goodies'(https://www.codestack.net/solidworks-tools/)。

SOLIDWORKS 支持的宏主要有 2 类:VSTA 和 VBA 宏。

宏工具栏

宏工具栏提供命令:

  • 运行宏
  • 录制宏(以及停止录制和暂停)
  • 创建新的空白宏
  • 编辑宏
  • 将宏分配给按钮

上述命令也可从菜单中获得。

宏菜单

由于宏通常用于生产环境,因此能够调试宏并对其进行故障排除以确保质量至关重要。有关宏中最常见错误的解释和解决方法,请参阅宏疑难解答(https://www.codestack.net/solidworks-api/troubleshooting/macros/)。

SOLIDWORKS宏类型 - VBA(swp)、SWBasic(swb)、VSTA(dll)

宏可以直接在内置的 VBA 编辑器中进行编辑,也可以直接在 SOLIDWORKS 中执行。不需要安装任何其他软件来运行宏(唯一的例外是VSTA 3.0宏,它需要独立安装Visual Studio)。

VBA Macros (*.swp)

这些可能是最受欢迎的宏。这些宏基于 VBA7(适用于 SOLIDWORKS 2015 及更高版本)和 VBA6(适用于旧版本)。VBA6 和 VBA7 是 Visual Basic 6 的派生语言。所以所有的语法都是相同的。有关此语言的更多文档,请参阅 Visual Basic 教程(https://www.codestack.net/visual-basic/)。

宏以二进制格式保存,扩展名为 *.swp,只能由 SOLIDWORKS VBA 编辑器查看和编辑。

SWBasic Macros (*.swb)

与 *.swp 宏类似,这些类型的宏基于 VBA6 和 VBA7 语言。唯一的区别是这些宏以纯文本格式保存,扩展名为 *.swb。

这使得它在 SOLIDWORKS 环境之外使用任何文本编辑器(如记事本)可读和可编辑。当宏代码在控制版本服务(如 SVN 或 GIT)中维护时,这尤其有用。

这些宏不能引用任何第三方类型库(如 Excel、文件系统对象等),并且仅包含对 SOLIDWORKS 类型库的引用。如果需要使用任何第三方类型库,可以通过后期绑定来实现。(https://www.codestack.net/visual-basic/variables/declaration/#early-binding-and-late-binding)

这些宏将只有一个模块,并且不能使用类或用户窗体。

C# and VB.NET VSTA Macros

基于.NET语言(C#或 VB.NET)的Visual STudio for Application (VSTA)宏提供了更多的灵活性,并利用了.NET框架的强大功能,将对各种库,第三方组件和面向对象编程(OOP)范式的访问带入宏中。

与 VBA 宏不同,VSTA 宏将项目与用于编辑的源代码(*.csproj、.vbproj)和用于运行宏的二进制文件 (.dll)输出分开。因此,可以在没有可用源代码的情况下使用二进制文件。

VSTA 宏是进程内应用程序,可以从内存中自动释放,也可以在主函数完成后继续执行。

此行为由以下选项控制:

在宏退出时停止VSTA 调试器选项

如果未选中此选项,宏将保持加载到内存中,直到单击“停止”按钮。当宏执行任何异步操作(如处理事件或显示属性管理器页)时,此选项很有用。

VSTA 宏基于 .NET Framework 2.0,可以使用内置的 VSTA 编辑器进行编辑和调试。

在 SOLIDWORKS 2018 中,引入了新的 VSTA 版本 3.0,但仍支持较旧的 VSTA 版本。目标版本可以通过以下选项进行控制:

启用 VSTA 3.0版本选项

VSTA 3.0 需要独立安装 Visual Studio(专业版或社区版)。VSTA 3.0的主要优点是能够使用较新版本的.NET Framework。

在 SOLIDWORKS 中录制和编辑宏

SOLIDWORKS 提供了强大的功能来记录用户操作并将其转换为宏代码。

对于学习 SOLIDWORKS API 和查找所需方法,这是一个非常方便的功能。

可以通过单击宏工具栏上的“录制”按钮开始录制:

在工具栏中的录制宏命令

在录制模式下,将记录大多数用户操作。

注意:并非所有命令都可以通过宏录制来记录。如果记录的命令未捕获,则并不意味着此特定命令的 API 不可用。

为了增强宏录制体验,请尝试尽量减少模型视图方向更改和选择的次数,因为这些命令将被记录,并且产生大量无效代码行,会使宏几乎不可读(可读性非常差)。

使用“暂停”按钮跳过不必要的操作的录制。

录制完成后,单击“停止”按钮并选择文件以保存录制的宏。

保存录制宏

请注意,可以将宏另存为 VBA 和 VSTA。它们之间的区别请参考上一节。

如果录制宏后只能保存为swp格式,那么请参考下面的视频解决(视频引用仅供参考,侵删)。 注意:您无法通过修改或修复您的 SOLIDWORKS 安装以添加 VSTA。您必须卸载并重新安装 SOLIDWORKS,选择在安装过程中安装 Visual Studio Tools for Applications (VSTA)。

如果您经常录制宏,建议启用【录制后自动编辑宏】选项。

启用录制后自动编辑宏选项

这将在宏完成录制后自动打开编辑器,因此不必显式调用 Tools->Macro->Edit 菜单命令来编辑源代码。

以下是以 VBA、C# 和 VB.NET 语言录制宏的示例:

使用VBA录制宏示例

使用C# VSTA录制宏示例

使用VB.NET VSTA录制宏示例

在 SOLIDWORKS 中创建并运行 VSTA 宏(C# 和 VB.NET)

本节介绍如何从现有代码创建 VSTA 宏(C# 或 VB.NET)并运行它。

  • 通过从 SOLIDWORKS 菜单中调用“工具->宏->新建”命令来创建新宏。
  • 设置 VSTA 宏的筛选器(.vbproj 或 .csproj,具体取决于源代码)。

设置VSTA宏筛选器

  • 复制或记住宏的命名空间,如下图所示的 SolidWorksMacro.cs 文件中所示:

VSTA宏的命名空间

  • 从SolidWorksMacro.cs 文件中删除所有代码,并将新的源代码粘贴到其中。
  • 将命名空间修改为原始命名空间。
如果未修改命名空间,则会出现以下问题:VSTA(C# 或 VB.NET)宏中的命名空间无效。

与 VBA 宏不同,VSTA 宏必须编译为 dll。在代码编辑器菜单中调用 Build->Compile 命令。您也可以通过单击绿色箭头按钮直接运行宏。编译后,将在宏的 bin或Release 文件夹中生成 dll,完整路径将打印到“输出”窗口,如下所示。

编译VSTA宏

  • 要运行 VSTA 宏,请从 SOLIDWORKS 菜单中打开工具->宏->运行命令,然后选择 VSTA 宏 (dll) 的过滤器。
若要运行宏,只需要二进制文件。因此,可以将 bin或Release 文件夹的内容复制到新位置或与其他用户共享。需要复制 bin或Release 文件夹(不仅仅是宏 dll)的完整内容以避免以下错误: 无法运行 VSTA(C# 或 VB.NET)宏。

保持 VSTA 宏运行

可以将选项设置为在执行完成后保持运行VSTA 宏。如果宏需要监控 SOLIDWORKS 事件并且不需要在执行完成后立即卸载,这将非常有用。要启用此行为,请取消选中 SOLIDWORKS 菜单中的工具->选项->系统选项对话框中的【宏退出时停止 VSTA 调试器】选项。

保持VSTA宏运行的选项

在 SOLIDWORKS 中编辑 VBA 和 VSTA 宏

VBA 宏(*.swb 和 .swp)以及 VSTA 宏(.csproj 和 *.vbproj)的源代码可以直接在 SOLIDWORKS 中进行编辑。

  • 导航到“工具”->“宏>编辑”菜单命令。

编辑宏菜单命令

  • 浏览指定的宏(如有必要,请更改文件筛选器)。
  • 或者,从最近的文件中选择宏(如果可用)。

此命令将打开新的 VBA 编辑器或 Visual Studio(VSTA 宏编辑器)。

根据需要修改代码并保存更改。

在 SOLIDWORKS 工具栏中创建宏按钮

可以将宏分配给自定义按钮,并将其放置在现有工具栏或命令选项卡框上。这增强了用户体验,因为可以通过单击按钮而不是通过运行宏例程来访问宏。

为了将宏与按钮相关联,请调用自定义...上下文菜单中的命令。

自定义...上下文菜单命令

或从“工具”菜单访问该命令。

自定义...工具->菜单

注意:如果未在 SOLIDWORKS 中打开任何文档,则此命令处于禁用状态。

导航到“命令”选项卡,然后选择“宏”组。此组中的最后一个按钮是“新建宏按钮”模板。

自定义->宏命令工具栏

将此按钮拖放到命令管理器中的任何现有工具栏或命令选项卡框中。

将宏按钮拖放到现有工具栏上

放下后,将弹出以下对话框:

自定义宏按钮的选项

在表单中填写相应的数据:

  • 指定宏的完整路径
  • 选择入口点(方法和函数名称)。该列表将仅包含宏中的无参数函数。通常主函数main是一个入口点。
  • (可选)指定图标。对于 SOLIDWORKS 2015 或更早版本,请使用 16 x 16 位图,对于所有较新版本,请使用 20 x 20 位图。使用白色作为透明键。
  • (可选)指定工具提示和提示文本。

工具栏中的按钮位置将在 SOLIDWORKS 会话中保持。并且可以使用 SOLIDWORKS 复制设置向导进行导出-恢复。(https://help.solidworks.com/2023/english/SolidWorks/sldworks/r_welcome_sw_online_help.htm)

宏按钮的执行方式与任何其他标准按钮相同。可以将键盘快捷键分配给宏按钮。

在自定义...对话框并分配快捷方式。

将键盘快捷键添加到宏按钮

为了编辑宏按钮的属性以及重新排序按钮或删除按钮,需要激活自定义...菜单命令。

当自定义对话框处于活动状态时,可以重新排序按钮。

为了更改宏按钮的属性,请使用鼠标右键单击宏按钮顶部,这将打开“自定义宏按钮”对话框。

为了删除按钮,将其拖离工具栏,直到鼠标指针上出现带有十字的红色按钮并释放拖放。

如果宏按钮放置在命令选项卡框上,请使用以下上下文菜单更改属性或删除按钮:

命令选项卡框中宏按钮的属性

如果要将宏按钮放置在自定义工具栏上,可以使用免费的“cadplus”加载项。(https://cadplus.xarial.com/toolbar/)

在 SOLIDWORKS 中运行 VBA 和 VSTA 宏

运行宏的最简单方法是从“工具”->宏->“运行”菜单命令或工具栏调用宏。

从工具栏运行宏

选择要运行的宏(对于 VBA 宏,为 .swb 或 .swp,对于 VSTA 宏,请选择 .dll)。除非显式编码宏以保持活动状态,或者检查 VSTA 宏的“设置”中的“在宏退出时停止 VSTA 调试器”选项,否则执行完成后将从内存中卸载宏。

当从菜单/工具栏或使用 F10 快捷方式打开进行编辑时,也可以直接从 VBA 编辑器运行宏。

从VBA编辑器运行宏

或者,可以从宏按钮或在 SOLIDWORKS 启动时从命令行运行宏(下一节)。

在应用程序启动时自动运行 SOLIDWORKS 宏

在某些情况下,可能需要在 SOLIDWORKS 启动时自动运行宏。例如,需要完成一些日志记录或应用设置。

幸运的是,SOLIDWORKS 应用程序接受命令行参数 /m,该参数将自动运行指定的宏。

"Path to SLDWORKS.exe" /m "Path to a macro"

设置启动 SOLIDWORKS 并运行宏的快捷方式

使用此功能的最常见选项是直接在 Windows 桌面上的 SOLIDWORKS 快捷方式中指定宏的路径。在这种情况下,当您单击 SOLIDWORKS 应用程序快捷方式图标(常规例程)时,宏将自动运行。请按照以下步骤操作说明:

  • Windows操作系统允许在快捷方式选项的目标字段中指定命令行参数。默认快捷方式已禁用此选项,并且无法更改。

SOLIDWORKS 快捷方式的默认选项

  • 删除默认的 SOLIDWORKS 快捷方式。
  • 导航到 SOLIDWORKS 安装文件夹(通常为 C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS)。
  • 找到 SLDWORKS.EXE 文件。
  • 选择文件并单击鼠标右键。选择发送到>桌面(创建快捷方式)。

SOLIDWORKS.exe文件位置

  • 快捷方式已添加到桌面。根据需要重命名(如果需要,固定到任务栏)。
  • 选择快捷方式图标,单击鼠标右键并选择选项命令。
  • 在目标字段中的 SLDWORKS 路径之后.EXE添加以下文本:
/m "Full Path To Macro"

如果宏路径包含空格,请将路径括在双引号中。

例如:

"C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\SLDWORKS.EXE" /m "C:\My Macros\Macro1.swb"

带有宏路径的快捷方式

使用此快捷方式启动 SOLIDWORKS。指定的宏将自动运行。

文章翻译自https://www.codestack.net/

仅供学习使用。  

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空