Skip to main content

Passing the parameters to SOLIDWORKS Macro using the SWBasic macro

SWBasic (*.swb) macros is a legacy type of macros still supported in SOLIDWORKS applications.

One of the benefits of this type of macro is that it is saved in the plain text. This enables 3rd party application to create macros on the fly. In particular this technique can be employed to emulate the passing of parameters to the SOLIDWORKS macro.

For example, the following template macro can be created

template.swb

Dim swApp As SldWorks.SldWorks

Sub main()

Set swApp = Application.SldWorks

swApp.SendMsgToUser "Specified argument: {{Argument1}}"

End Sub

where {{Argument1}} is a placeholder to the argument value to be filled by external application or script:

static void Main(string[] args)
{
var macroPath = args[0];
var param = args[1];

var templateMacro = File.ReadAllText(macroPath);
var macro = templateMacro.Replace("{{Argument1}}", param);

var tempMacroPath = Path.Combine(Path.GetTempPath(), Path.GetFileName(macroPath));
File.WriteAllText(tempMacroPath, macro);

The resulting file can be run as a normal SOLIDWORKS macro