修改 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)。
谁能帮助我做错什么?
您可以使用它根据其名称修改任何变量!这是独一无二的,因为大多数其他代码示例都向您展示了如何通过索引设置变量!
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);