修改 Solidworks 全局变量值 - C#

本文关键字:变量值 全局 Solidworks 修改 | 更新日期: 2023-09-27 18:33:47

我正在尝试修改 C# 代码中的全局变量。

基于这两个示例:

回复:宏变化全局变量

2015 SOLIDWORKS API 帮助 - 添加和修改方程示例 (C#)

我想出了以下代码,但它不会更改全局变量。此外,当我在代码运行后进入方程式管理器时,它的方程式旁边有红色的 X,并说"这个方程式的语法不正确"。

string depth = "'"Depth'" = " + param["Part"].Substring(0, param["Part"].IndexOf("x"));
string flangeWidth = "'"FlangeWidth'" = " + param["Width"];
swEquationMgr = swModel.GetEquationMgr();
swEquationMgr.SetEquationAndConfigurationOption(0, depth, (int)swInConfigurationOpts_e.swAllConfiguration, null);
swEquationMgr.SetEquationAndConfigurationOption(0, flangeWidth, (int)swInConfigurationOpts_e.swAllConfiguration, null);

注意:深度变量的计算结果正确为 ("Depth" = 8),法兰宽度的计算结果为 ("FlangeWidth" = 3.5)。

谁能帮助我做错什么?

修改 Solidworks 全局变量值 - C#

您可以使用它根据其名称修改任何变量!这是独一无二的,因为大多数其他代码示例都向您展示了如何通过索引设置变量!

Sub SetVar(NAME As String, VALUE As Variant)
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swEqnMgr = swModel.GetEquationMgr
    For i = 0 To swEqnMgr.GetCount - 1
        vSplit = Split(swEqnMgr.Equation(i), " = ")
        vSplit(0) = Replace(vSplit(0), Chr(34), Empty)
        If vSplit(0) = NAME Then _
            swEqnMgr.Equation(i) = Replace(swEqnMgr.Equation(i), vSplit(1), VALUE)
    Next i
End Sub

SetEquationAndConfigurationOption() 只能用于使用 IEquationMgr::IAdd3. 方法添加的方程。 方程是用这种方法加的吗?

我使用过:

string depth = "'"Depth'" = 4";
string flangeWidth = "'"FlangeWidth'" = 7";

并且只有在使用 Add3 方法添加后才能更改全局变量(这需要多个配置)。 具有单一配置的 Add2 对我不起作用。

此外,SetEquationAndConfigurationOption 的第一个参数是索引,两者都为 0,需要修改它们以匹配它们在全局变量中的位置(从 0 开始)。 如:

swEquationMgr.SetEquationAndConfigurationOption(0, depth, (int)swInConfigurationOpts_e.swAllConfiguration, null);
swEquationMgr.SetEquationAndConfigurationOption(1, flangeWidth, (int)swInConfigurationOpts_e.swAllConfiguration, null);