使用SOLIDWORKS API對VBA宏和VSTA宏進行編程
宏是類似于腳本的應(yīng)用程序,可以直接在 SOLIDWORKS 環(huán)境中執(zhí)行和編輯。
宏利用 SOLIDWORKS API 和第三方組件 API(如 Excel 或文件系統(tǒng))來補充 SOLIDWORKS 功能。在大多數(shù)情況下,宏用作自動化腳本來增強重復性任務(wù)。
有數(shù)以千計的宏可以從各種資源下載,例如?SOLIDWORKS官方論壇(https://forum.solidworks.com/community/api)或 CodeStack 'Goodies'(https://www.codestack.net/solidworks-tools/)。
SOLIDWORKS 支持的宏主要有 2 類:VSTA 和 VBA 宏。

宏工具欄提供命令:
運行宏
錄制宏(以及停止錄制和暫停)
創(chuàng)建新的空白宏
編輯宏
將宏分配給按鈕
上述命令也可從菜單中獲得。

由于宏通常用于生產(chǎn)環(huán)境,因此能夠調(diào)試宏并對其進行故障排除以確保質(zhì)量至關(guān)重要。有關(guān)宏中最常見錯誤的解釋和解決方法,請參閱宏疑難解答(https://www.codestack.net/solidworks-api/troubleshooting/macros/)。
SOLIDWORKS宏類型 - VBA(swp)、SWBasic(swb)、VSTA(dll)

宏可以直接在內(nèi)置的 VBA 編輯器中進行編輯,也可以直接在 SOLIDWORKS 中執(zhí)行。不需要安裝任何其他軟件來運行宏(唯一的例外是VSTA 3.0宏,它需要獨立安裝Visual Studio)。
VBA Macros (*.swp)
這些可能是最受歡迎的宏。這些宏基于 VBA7(適用于 SOLIDWORKS 2015 及更高版本)和 VBA6(適用于舊版本)。VBA6 和 VBA7 是 Visual Basic 6 的派生語言。所以所有的語法都是相同的。有關(guān)此語言的更多文檔,請參閱 Visual Basic 教程(https://www.codestack.net/visual-basic/)。
宏以二進制格式保存,擴展名為 *.swp,只能由 SOLIDWORKS VBA 編輯器查看和編輯。
SWBasic Macros (*.swb)
與 *.swp 宏類似,這些類型的宏基于 VBA6 和 VBA7 語言。唯一的區(qū)別是這些宏以純文本格式保存,擴展名為 *.swb。
這使得它在 SOLIDWORKS 環(huán)境之外使用任何文本編輯器(如記事本)可讀和可編輯。當宏代碼在控制版本服務(wù)(如 SVN 或 GIT)中維護時,這尤其有用。
這些宏不能引用任何第三方類型庫(如 Excel、文件系統(tǒng)對象等),并且僅包含對 SOLIDWORKS 類型庫的引用。如果需要使用任何第三方類型庫,可以通過后期綁定來實現(xiàn)。(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框架的強大功能,將對各種庫,第三方組件和面向?qū)ο缶幊蹋∣OP)范式的訪問帶入宏中。
與 VBA 宏不同,VSTA 宏將項目與用于編輯的源代碼(*.csproj、.vbproj)和用于運行宏的二進制文件 (.dll)輸出分開。因此,可以在沒有可用源代碼的情況下使用二進制文件。
VSTA 宏是進程內(nèi)應(yīng)用程序,可以從內(nèi)存中自動釋放,也可以在主函數(shù)完成后繼續(xù)執(zhí)行。
此行為由以下選項控制:

如果未選中此選項,宏將保持加載到內(nèi)存中,直到單擊“停止”按鈕。當宏執(zhí)行任何異步操作(如處理事件或顯示屬性管理器頁)時,此選項很有用。
VSTA 宏基于 .NET Framework 2.0,可以使用內(nèi)置的 VSTA 編輯器進行編輯和調(diào)試。
在 SOLIDWORKS 2018 中,引入了新的 VSTA 版本 3.0,但仍支持較舊的 VSTA 版本。目標版本可以通過以下選項進行控制:

VSTA 3.0 需要獨立安裝 Visual Studio(專業(yè)版或社區(qū)版)。VSTA 3.0的主要優(yōu)點是能夠使用較新版本的.NET Framework。
在 SOLIDWORKS 中錄制和編輯宏
SOLIDWORKS 提供了強大的功能來記錄用戶操作并將其轉(zhuǎn)換為宏代碼。
對于學習 SOLIDWORKS API 和查找所需方法,這是一個非常方便的功能。
可以通過單擊宏工具欄上的“錄制”按鈕開始錄制:

在錄制模式下,將記錄大多數(shù)用戶操作。
注意:并非所有命令都可以通過宏錄制來記錄。如果記錄的命令未捕獲,則并不意味著此特定命令的 API 不可用。
為了增強宏錄制體驗,請嘗試盡量減少模型視圖方向更改和選擇的次數(shù),因為這些命令將被記錄,并且產(chǎn)生大量無效代碼行,會使宏幾乎不可讀(可讀性非常差)。
使用“暫?!卑粹o跳過不必要的操作的錄制。
錄制完成后,單擊“停止”按鈕并選擇文件以保存錄制的宏。

請注意,可以將宏另存為 VBA 和 VSTA。它們之間的區(qū)別請參考上一節(jié)。
如果錄制宏后只能保存為swp格式,那么請參考下面的視頻解決(視頻引用僅供參考,侵刪)。
注意:您無法通過修改或修復您的 SOLIDWORKS 安裝以添加 VSTA。您必須卸載并重新安裝 SOLIDWORKS,選擇在安裝過程中安裝 Visual Studio Tools for Applications (VSTA)。

如果您經(jīng)常錄制宏,建議啟用【錄制后自動編輯宏】選項。

這將在宏完成錄制后自動打開編輯器,因此不必顯式調(diào)用 Tools->Macro->Edit 菜單命令來編輯源代碼。
以下是以 VBA、C# 和 VB.NET 語言錄制宏的示例:



在 SOLIDWORKS 中創(chuàng)建并運行 VSTA 宏(C# 和 VB.NET)
本節(jié)介紹如何從現(xiàn)有代碼創(chuàng)建 VSTA 宏(C# 或 VB.NET)并運行它。
通過從 SOLIDWORKS 菜單中調(diào)用“工具->宏->新建”命令來創(chuàng)建新宏。
設(shè)置 VSTA 宏的篩選器(.vbproj 或 .csproj,具體取決于源代碼)。

復制或記住宏的命名空間,如下圖所示的 SolidWorksMacro.cs 文件中所示:

從SolidWorksMacro.cs 文件中刪除所有代碼,并將新的源代碼粘貼到其中。
將命名空間修改為原始命名空間。
如果未修改命名空間,則會出現(xiàn)以下問題:VSTA(C# 或 VB.NET)宏中的命名空間無效。
與 VBA 宏不同,VSTA 宏必須編譯為 dll。在代碼編輯器菜單中調(diào)用 Build->Compile 命令。您也可以通過單擊綠色箭頭按鈕直接運行宏。編譯后,將在宏的 bin或Release 文件夾中生成 dll,完整路徑將打印到“輸出”窗口,如下所示。

要運行 VSTA 宏,請從 SOLIDWORKS 菜單中打開工具->宏->運行命令,然后選擇 VSTA 宏 (dll) 的過濾器。

若要運行宏,只需要二進制文件。因此,可以將 bin或Release 文件夾的內(nèi)容復制到新位置或與其他用戶共享。需要復制 bin或Release 文件夾(不僅僅是宏 dll)的完整內(nèi)容以避免以下錯誤: 無法運行 VSTA(C# 或 VB.NET)宏。
保持 VSTA 宏運行
可以將選項設(shè)置為在執(zhí)行完成后保持運行VSTA?宏。如果宏需要監(jiān)控 SOLIDWORKS 事件并且不需要在執(zhí)行完成后立即卸載,這將非常有用。要啟用此行為,請取消選中 SOLIDWORKS 菜單中的工具->選項->系統(tǒng)選項對話框中的【宏退出時停止 VSTA 調(diào)試器】選項。

在 SOLIDWORKS 中編輯 VBA 和 VSTA 宏
VBA 宏(*.swb 和 .swp)以及 VSTA 宏(.csproj 和 *.vbproj)的源代碼可以直接在 SOLIDWORKS 中進行編輯。
導航到“工具”->“宏>編輯”菜單命令。

瀏覽指定的宏(如有必要,請更改文件篩選器)。
或者,從最近的文件中選擇宏(如果可用)。
此命令將打開新的 VBA 編輯器或 Visual Studio(VSTA 宏編輯器)。
根據(jù)需要修改代碼并保存更改。
在 SOLIDWORKS 工具欄中創(chuàng)建宏按鈕

可以將宏分配給自定義按鈕,并將其放置在現(xiàn)有工具欄或命令選項卡框上。這增強了用戶體驗,因為可以通過單擊按鈕而不是通過運行宏例程來訪問宏。
為了將宏與按鈕相關(guān)聯(lián),請調(diào)用自定義...上下文菜單中的命令。

或從“工具”菜單訪問該命令。

注意:如果未在 SOLIDWORKS 中打開任何文檔,則此命令處于禁用狀態(tài)。
導航到“命令”選項卡,然后選擇“宏”組。此組中的最后一個按鈕是“新建宏按鈕”模板。

將此按鈕拖放到命令管理器中的任何現(xiàn)有工具欄或命令選項卡框中。

放下后,將彈出以下對話框:

在表單中填寫相應(yīng)的數(shù)據(jù):
指定宏的完整路徑
選擇入口點(方法和函數(shù)名稱)。該列表將僅包含宏中的無參數(shù)函數(shù)。通常主函數(shù)main是一個入口點。
(可選)指定圖標。對于 SOLIDWORKS 2015 或更早版本,請使用 16 x 16 位圖,對于所有較新版本,請使用 20 x 20 位圖。使用白色作為透明鍵。
(可選)指定工具提示和提示文本。
工具欄中的按鈕位置將在 SOLIDWORKS 會話中保持。并且可以使用 SOLIDWORKS 復制設(shè)置向?qū)нM行導出-恢復。(https://help.solidworks.com/2023/english/SolidWorks/sldworks/r_welcome_sw_online_help.htm)
宏按鈕的執(zhí)行方式與任何其他標準按鈕相同。可以將鍵盤快捷鍵分配給宏按鈕。
在自定義...對話框并分配快捷方式。

為了編輯宏按鈕的屬性以及重新排序按鈕或刪除按鈕,需要激活自定義...菜單命令。
當自定義對話框處于活動狀態(tài)時,可以重新排序按鈕。
為了更改宏按鈕的屬性,請使用鼠標右鍵單擊宏按鈕頂部,這將打開“自定義宏按鈕”對話框。
為了刪除按鈕,將其拖離工具欄,直到鼠標指針上出現(xiàn)帶有十字的紅色按鈕并釋放拖放。
如果宏按鈕放置在命令選項卡框上,請使用以下上下文菜單更改屬性或刪除按鈕:

如果要將宏按鈕放置在自定義工具欄上,可以使用免費的“cadplus”加載項。(https://cadplus.xarial.com/toolbar/)
在 SOLIDWORKS 中運行 VBA 和 VSTA 宏
運行宏的最簡單方法是從“工具”->宏->“運行”菜單命令或工具欄調(diào)用宏。

選擇要運行的宏(對于 VBA 宏,為 .swb 或 .swp,對于 VSTA 宏,請選擇 .dll)。除非顯式編碼宏以保持活動狀態(tài),或者檢查 VSTA 宏的“設(shè)置”中的“在宏退出時停止 VSTA 調(diào)試器”選項,否則執(zhí)行完成后將從內(nèi)存中卸載宏。
當從菜單/工具欄或使用 F10 快捷方式打開進行編輯時,也可以直接從 VBA 編輯器運行宏。

或者,可以從宏按鈕或在?SOLIDWORKS?啟動時從命令行運行宏(下一節(jié))。
在應(yīng)用程序啟動時自動運行 SOLIDWORKS 宏
在某些情況下,可能需要在 SOLIDWORKS 啟動時自動運行宏。例如,需要完成一些日志記錄或應(yīng)用設(shè)置。
幸運的是,SOLIDWORKS 應(yīng)用程序接受命令行參數(shù) /m,該參數(shù)將自動運行指定的宏。
設(shè)置啟動 SOLIDWORKS 并運行宏的快捷方式
使用此功能的最常見選項是直接在 Windows 桌面上的 SOLIDWORKS 快捷方式中指定宏的路徑。在這種情況下,當您單擊 SOLIDWORKS 應(yīng)用程序快捷方式圖標(常規(guī)例程)時,宏將自動運行。請按照以下步驟操作說明:
Windows操作系統(tǒng)允許在快捷方式選項的目標字段中指定命令行參數(shù)。默認快捷方式已禁用此選項,并且無法更改。

刪除默認的 SOLIDWORKS 快捷方式。
導航到 SOLIDWORKS 安裝文件夾(通常為 C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS)。
找到 SLDWORKS.EXE 文件。
選擇文件并單擊鼠標右鍵。選擇發(fā)送到>桌面(創(chuàng)建快捷方式)。

快捷方式已添加到桌面。根據(jù)需要重命名(如果需要,固定到任務(wù)欄)。
選擇快捷方式圖標,單擊鼠標右鍵并選擇選項命令。
在目標字段中的 SLDWORKS 路徑之后.EXE添加以下文本:
如果宏路徑包含空格,請將路徑括在雙引號中。
例如:

使用此快捷方式啟動 SOLIDWORKS。指定的宏將自動運行。
文章翻譯自https://www.codestack.net/
僅供學習使用。??