[英]Is there a way to use python to automate the creation of VBA macro files?
作為一些工作流程優化的一部分,我想將 map 的大量Solidworks功能添加到熱鍵中。 該程序本身具有為熱鍵分配功能的能力,但它只是整個命令集的一小部分。 rest 可以通過一種解決方法分配給熱鍵,其中創建一個運行 function 的宏並將該宏分配給熱鍵。
在 Solidworks 中創建宏的方法有兩種:
在 Solidworks 中可以記錄一系列命令,然后將它們保存為 .swb 文件。 運行該宏會重復記錄的命令。 (這種方法有問題,真的是命中注定)
可以使用 Microsoft Visual Basic for Applications 直接創建宏,Solidworks 將其用作宏編輯器。 生成的文件又是一個 .swb 文件,運行它會執行它調用的 Solidworks 函數。 這種方法是創建多個熱鍵的最簡單方法,因為我需要做的就是編輯一行代碼,我可以執行任何我想要的 function。
看起來是這樣的:
Dim swApp As Object
Dim Part As Object
Sub main()
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
swApp.RunCommand swCommands_Leader_Add_Bent, ""
End Sub
上面的示例宏,在 VB 中,將一個轉折點添加到選定的引導線。 下面的行是負責執行 Solidworks function 的行。
swApp.RunCommand swCommands_Leader_Add_Bent, ""
例如,將swCommands_Leader_Add_Bent
更改為swCommands_Select_Midpoint
現在會使代碼 select 成為直線或邊的中點。
使用該方法,我可以創建可以運行 Solidworks 的三千左右命令中的任何一個的宏。 問題是,這個過程有點乏味,為幾十或幾百個命令做這件事會很耗時。 我擁有所有 SolidWorks 功能的列表,非常理想,我想將該列表提供給一些 python 代碼,代碼使用列表中的 function 編輯swApp.RunCommand
行,代碼 Z78E6221F6393D135668.准備好分配給熱鍵。
其他一些評論:
如果我的術語不正確,我不確定 a.swb 文件是什么類型的文件,請原諒我。 我知道它們不是文本文件,因為在文本編輯器中打開它會導致胡說八道。 它們使用 Microsoft Visual Basic for Applications 7.1 進行編輯。 Solidworks 將它們稱為 SW VBA 宏。
我不想從 python 運行宏或 VBA 代碼本身。 我已經完成了這項工作,但它對我的需求來說太慢了。 我想使用 python 來生成 VBA 文件。
我四處搜索,但未能找到讓 python 編輯、寫入或生成 VBA 文件的方法。
解決方案不必在 python 中,但這是我最熟悉的語言。 我對其他語言或方法持開放態度。
總之,我希望自動創建大量的 SW VBA 宏 (*.swb),你們可以提供任何指導或建議嗎?
如果我正確理解了您的問題,則以下內容應該有效(未經測試;!);
您可以創建一個 function 以將任何命令名稱替換為您提供的代碼,如下所示;
def macro_code_text(command_name):
return f"""
Dim swApp As Object
Dim Part As Object
Sub main()
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
swApp.RunCommand {command_name}, ""
End Sub
"""
..然后您可以創建一個包含所有命令名稱的列表;
command_names = ['swCommands_Leader_Add_Bent', 'swCommands_Select_Midpoint']
..然后遍歷列表,將生成的文本保存到擴展名為“.swb”的文件中;
generic_file_name = 'my_solidworks_macro_'
for i, command_name in enumerate(command_names):
with open(generic_file_name + str(i) + '.swb', 'w+') as file:
file.write(macro_code_text(command_name))
..這應該會生成許多名為“my_solidworks_macro_0”、“my_solidworks_macro_1”等的文件,每個文件的命令名稱與您提供的列表不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.