public static void GetEquationValueByName(ModelDoc2 Part, string VariableName, ref object Value) { /// <summary> /// 获取方程式中全局变量的值,Golbal Variables /// </summary> /// <param name="VariableName">全局变量的名称</param> /// <param name="Part">模型</param> /// <returns>如果没有找到这个全局变量,返回-1</returns> EquationMgr emgr = (EquationMgr)Part.GetEquationMgr(); int ic = emgr.GetCount(); for (int i = 0; i < ic; i++) { string s = emgr.get_Equation(i); s = s.Replace("\"", ""); s = s.Remove(s.IndexOf('=')); s = s.Trim(); if (s.ToLower() == VariableName.ToLower()) { Value = emgr.get_Value(i); return; } } Value = -1; }
//by hying 2012/1/14 判断是否有失效的方程式,并将其禁用掉 public void disableEqu(ModelDoc2 swModel) { // WriteLog("整理方程式", 1); try { EquationMgr swEquationMgr = null; swEquationMgr = ((EquationMgr)(swModel.GetEquationMgr())); int EQUnum = swEquationMgr.GetCount(); for (int i = 0; i < EQUnum; i++) { double dval = swEquationMgr.get_Value(i); if (swEquationMgr.Status == -1) { swEquationMgr.set_Suppression(i, true); //WriteLog("整理方程式成功", 1); } } } catch (Exception ex) { //swEquationMgr.set_Suppression(i, true); //Exception ex = new Exception("整理方程式失败!"); throw ex; } }
public void Load() { this.swDoc = OpenSWDoc(this.FilePath); #region 00. 获取方程式的值 Sizes.Clear(); EquationMgr emgr = (EquationMgr)swDoc.GetEquationMgr(); int ic = emgr.GetCount(); for (int i = 0; i < ic; i++) { //在这里想办法只获取全局变量 string s = emgr.get_Equation(i); if (s.Contains("@")) { continue; } s = s.Replace("\"", ""); s = s.Remove(s.IndexOf('=')); s = s.Trim(); s = s.ToUpper(); object v = emgr.get_Value(i); if (Sizes.ContainsKey(s)) { Sizes[s] = v; } else { Sizes.Add(s, v); } } _Sizes = new Dictionary <string, object>(Sizes); #endregion #region 10. 获取零部件属性的值 Attrs.Clear(); object[] PropNames; string cfgname2 = swDoc.ConfigurationManager.ActiveConfiguration.Name; CustomPropertyManager cpmMdl = swDoc.Extension.get_CustomPropertyManager(cfgname2); if (cpmMdl.Count > 0) { PropNames = (object[])cpmMdl.GetNames(); string outval = ""; string sovVal = ""; foreach (object AtrName in PropNames) { string s = AtrName.ToString(); cpmMdl.Get2(AtrName.ToString(), out outval, out sovVal); if (Attrs.ContainsKey(s)) { Attrs[s] = sovVal; } else { Attrs.Add(s, sovVal); } } } _Attrs = new Dictionary <string, string>(Attrs); #endregion }
/// <summary> /// 获取方程式中全局变量的值,Golbal Variables /// </summary> /// <param name="VariableName">全局变量的名称</param> /// <param name="Part">模型</param> /// <returns>如果没有找到这个全局变量,返回-1</returns> public double getGolbalVariablesValue(string VariableName, ModelDoc2 Part) { EquationMgr emgr = (EquationMgr)Part.GetEquationMgr(); int ic = emgr.GetCount(); for (int i = 0; i < ic; i++) { string s = emgr.get_Equation(i); s = s.Replace("\"", ""); s = s.Remove(s.IndexOf('=')); s = s.Trim(); if (s.ToLower() == VariableName.ToLower()) { return(emgr.get_Value(i)); } } return(-1); }
private void OpenDoc(string _FilePath) { this.FilePath = _FilePath; swDoc = OpenSWDoc(_FilePath); #region 00. 获取方程式的值 Sizes.Clear(); EquationMgr emgr = (EquationMgr)swDoc.GetEquationMgr(); int ic = emgr.GetCount(); for (int i = 0; i < ic; i++) { //在这里想办法只获取全局变量 string s = emgr.get_Equation(i); if (s.Contains("@")) { continue; } s = s.Replace("\"", ""); s = s.Remove(s.IndexOf('=')); s = s.Trim(); s = s.ToUpper(); object v = emgr.get_Value(i); if (Sizes.ContainsKey(s)) { Sizes[s] = v; } else { Sizes.Add(s, v); } } _Sizes = new Dictionary <string, object>(Sizes); #endregion #region 10. 获取零部件属性的值 Attrs.Clear(); _Attrs = new Dictionary <string, string>(Attrs); #endregion //CloseDoc(); }