private String GetRev(ModelDocExtension swModExt) { swCustPropMgr = (CustomPropertyManager)swModExt.get_CustomPropertyManager(""); String[] propNames = (String[])swCustPropMgr.GetNames(); String ValOut = String.Empty; String ResolvedValOut = String.Empty; Boolean WasResolved = false; String result = String.Empty; foreach (String name in propNames) { swCustPropMgr.Get5(name, false, out ValOut, out ResolvedValOut, out WasResolved); if (name.Contains("REVISION") && !name.Contains(@"LEVEL") && ValOut != String.Empty) { result = "-" + ValOut; } } if (result.Length != 3) { MustHaveRevException e = new MustHaveRevException("Check to make sure drawing is at least revision AA or later."); //e.Data.Add("who", System.Environment.UserName); //e.Data.Add("when", DateTime.Now); //e.Data.Add("result", result); throw e; } //System.Diagnostics.Debug.Print(result); return(result); }
public void WriteCustomProp(DataRow dr) { string thisConfigName = (string)dr["configname"]; if (thisConfigName != "" && !configNames.Contains(thisConfigName)) { string strExcept = String.Format("Config name {0} is not in this model", thisConfigName); throw new Exception(strExcept); } CustomPropertyManager swCustPropMgr = (CustomPropertyManager)swModelDocExt.get_CustomPropertyManager(thisConfigName); // Get existing property names string[] nameArray = swCustPropMgr.GetNames(); List <string> propNames = new List <string>(); if (nameArray != null) { propNames.AddRange(swCustPropMgr.GetNames()); } // Check for a part number bool hasPartNum = dr["PartNum"].ToString() != ""; // So far, we always store custom properties as text (i.e. swCustomInfoType_e.swCustomInfoText) foreach (DataRow drField in propScaffold.FieldDefs.Select("sw_prop is not null")) { string propName = drField["sw_prop"].ToString(); string fieldName = drField["field"].ToString(); string typeName = drField["dt_type"].ToString(); if (CheckPropDefaultValue(dr[fieldName], typeName)) { // Remove the custom property swCustPropMgr.Delete2(propName); } else { // Add the custom property swCustPropMgr.Add3( propName, propScaffold.PropTypes[propName], dr[fieldName].ToString(), (int)swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd); } } swMainModel.SetSaveFlag(); }
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 }
private void InserirPropriedade(Coletor c) { string descricao = ""; descricao += "COL S "; descricao += c.DiametroTuboAcoColetor + "\" "; descricao += c.QuantidadeCompressor + "CP "; descricao += c.DiametroSuccaoCompressor + "\" X "; descricao += c.DiametroSuccaoRack + "\" "; swModel = swApp.ActiveDoc; ConfigurationManager configMgr; configMgr = swModel.ConfigurationManager; Configuration config = configMgr.ActiveConfiguration; string nomeConfig = config.Name; swExt = swModel.Extension; // Deleta prop da custom swCustomMgr = swExt.CustomPropertyManager[""]; string[] nomesProp = null; nomesProp = (string[])swCustomMgr.GetNames(); foreach (var nome in nomesProp) { swCustomMgr.Delete(nome); } // Deleta prop da personalizada swCustomMgr = swExt.CustomPropertyManager[nomeConfig]; nomesProp = null; nomesProp = (string[])swCustomMgr.GetNames(); foreach (var nome in nomesProp) { swCustomMgr.Delete(nome); } swCustomMgr.Add3("DESCRIÇÃO", (int)swCustomInfoType_e.swCustomInfoText, descricao, (int)swCustomPropertyAddOption_e.swCustomPropertyReplaceValue); swCustomMgr.Add3("PROJETISTA", (int)swCustomInfoType_e.swCustomInfoText, "RICARDO R.", (int)swCustomPropertyAddOption_e.swCustomPropertyReplaceValue); swCustomMgr.Add3("PROJETISTA2D", (int)swCustomInfoType_e.swCustomInfoText, "RICARDO R.", (int)swCustomPropertyAddOption_e.swCustomPropertyReplaceValue); swCustomMgr.Add3("GRUPO ITEM", (int)swCustomInfoType_e.swCustomInfoText, "494", (int)swCustomPropertyAddOption_e.swCustomPropertyReplaceValue); swCustomMgr.Add3("REVISÃO", (int)swCustomInfoType_e.swCustomInfoText, "01", (int)swCustomPropertyAddOption_e.swCustomPropertyReplaceValue); }
public void ClearProps() { ModelDoc2 md = (ModelDoc2)this._swApp.ActiveDoc; CustomPropertyManager glP = md.Extension.get_CustomPropertyManager(string.Empty); string[] ss = (string[])glP.GetNames(); if (ss != null) { foreach (string s in ss) { glP.Delete2(s); } } }
private bool InThere(CustomPropertyManager c, string name) { string[] ss = (string[])c.GetNames(); if (ss != null) { foreach (string p in ss) { if (p == name) { return(true); } } } return(false); }
public void ClearProps(ModelDoc2 md) { if (md.GetType() == (int)swDocumentTypes_e.swDocDRAWING) { CustomPropertyManager glP = md.Extension.get_CustomPropertyManager(string.Empty); string[] ss = (string[])glP.GetNames(); if (ss != null) { foreach (string s in ss) { glP.Delete2(s); } } } }
internal SwCustomPropertyEnumerator(CustomPropertyManager prpMgr, Func <CustomPropertyManager, string, bool, SwCustomProperty> prpFact) { m_PrpMgr = prpMgr; m_PrpFact = prpFact; m_PrpNames = m_PrpMgr.GetNames() as string[]; if (m_PrpNames == null) { m_PrpNames = new string[0]; } m_PrpNames = m_PrpNames.Except(new string[] { SwConfiguration.QTY_PROPERTY }).ToArray(); m_CurPrpIndex = -1; }
internal static HelperResult ImportProperties(SldWorks swApp, BindingSource bindingSource, string path, string configName = "") { Console.WriteLine("Import: path={0}, config={1}", path, configName); if (swApp == null) { return(HelperResult.SLDWORKS_NOT_RUNNING); } string ext = Path.GetExtension(path); swDocumentTypes_e type; if (ext.ToLower().Contains("sldprt")) { type = swDocumentTypes_e.swDocPART; } else if (ext.ToLower().Contains("sldasm")) { type = swDocumentTypes_e.swDocASSEMBLY; } else if (ext.ToLower().Contains("slddrw") && string.IsNullOrEmpty(configName)) { type = swDocumentTypes_e.swDocDRAWING; } else { return(HelperResult.WRONG_ARG); } int Error = 0; int Warning = 0; ModelDoc2 doc; // checking if the document is open if (((ModelDoc2)swApp.ActiveDoc) != null && ((ModelDoc2)swApp.ActiveDoc).GetPathName().ToLower() == path.ToLower()) { doc = (ModelDoc2)swApp.ActiveDoc; } else { doc = swApp.OpenDoc6(path, (int)type, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, configName, ref Error, ref Warning); } if (Error != 0) { return(HelperResult.OPEN_ERROR); } CustomPropertyManager manager = doc.Extension.CustomPropertyManager[configName]; if (manager == null) { return(HelperResult.OPEN_ERROR); } string[] names = manager.GetNames(); if (names == null || !names.Any()) { return(HelperResult.NOT_EXIST); } BindingList <PropertyObject> list = new BindingList <PropertyObject>(); foreach (string field in names) { PropertyObject obj = new PropertyObject(); obj.FieldName = field; int ret = manager.Get6(field, true, out string ValOut, out string ResolvedValOut, out bool WasResolved, out bool LinkToProperty); if (ret == (int)swCustomInfoGetResult_e.swCustomInfoGetResult_NotPresent) { continue; } obj.Value = ValOut; list.Add(obj); } if (!list.Any()) { return(HelperResult.NOT_EXIST); } bindingSource.Clear(); bindingSource.DataSource = list; return(HelperResult.SUCCESS); }
public DataRow GetCustomProp(string configName, bool withImage = false, bool merge = false) { DataRow dr = propScaffold.MainRow; // Return an empty DataRow if the config name doesn't exist in this model if (configName != "" && !configNames.Contains(configName)) { return(dr); } // Get property manager for this config CustomPropertyManager swCustPropMgr = (CustomPropertyManager)swModelDocExt.get_CustomPropertyManager(configName); CustomPropertyManager swAltCustPropMgr = (CustomPropertyManager)swModelDocExt.get_CustomPropertyManager(""); string[] nameArray = swCustPropMgr.GetNames(); List <string> propNames = new List <string>(); if (nameArray != null) { propNames.AddRange(swCustPropMgr.GetNames()); } dr["filename"] = pathName; dr["configname"] = configName; dr["PlaceHoldFlag"] = false; dr["ShowChildren"] = swMainConfig.ShowChildComponentsInBOM; // Get custom properties from specific configuration // Get the file level properties when the config name is an empty string (i.e. "") string strVal; string strResolved; foreach (DataRow drField in propScaffold.FieldDefs.Select("sw_prop is not null")) { string propName = drField["sw_prop"].ToString(); string fieldName = drField["field"].ToString(); string typeName = drField["dt_type"].ToString(); swCustPropMgr.Get4(propName, false, out strVal, out strResolved); strResolved = strResolved.Trim(); dr[fieldName] = GetPropDefaultValue(strResolved, typeName); // If merging config specific properties with the file level properties if (merge && configName != "" && !propNames.Contains(propName)) { swAltCustPropMgr.Get4(propName, false, out strVal, out strResolved); strResolved = strResolved.Trim(); dr[fieldName] = GetPropDefaultValue(strResolved, typeName); } } // Get model image // The default is swIsometricView = 7 // Only get an image if the part is measured in discreet (non-continuous) units propScaffold.UomMapping.TryGetValue(dr["Uom"].ToString(), out string matchedUom); if (withImage && matchedUom == "EA") { byte[] bytes = PropertyScaffold.ImageToByteArray(GetIsometricImage()); string imageString = Convert.ToBase64String(bytes); dr["Image"] = imageString; } // Get sheet metal properties if (swMainModel.GetType() == (int)swDocumentTypes_e.swDocPART && IsSheetMetal()) { Feature cutList = GetUpdatedCutList(); if (cutList != null) { // Get sheet metal properties //Feature cutList = swMainModel.SelectionManager.GetSelectedObject6(1, 0); CustomPropertyManager cutPropMgr = cutList.CustomPropertyManager; List <string> names = new List <string>(cutPropMgr.GetNames()); string valOut; string resolvedValOut; decimal decimalValOut; int intValOut; bool wasResolved; cutPropMgr.Get5("Sheet Metal Thickness", false, out valOut, out resolvedValOut, out wasResolved); Decimal.TryParse(resolvedValOut, out decimal sheetThickness); if (names.Contains("Sheet Metal Thickness") && sheetThickness != 0.0M) { cutPropMgr.Get5("Cutting Length-Outer", false, out valOut, out resolvedValOut, out wasResolved); Decimal.TryParse(resolvedValOut, out decimalValOut); dr["CuttingLengthOuter"] = Decimal.Round(decimalValOut, 2); cutPropMgr.Get5("Cutting Length-Inner", false, out valOut, out resolvedValOut, out wasResolved); Decimal.TryParse(resolvedValOut, out decimalValOut); dr["CuttingLengthInner"] = Decimal.Round(decimalValOut, 2); cutPropMgr.Get5("Cut Outs", false, out valOut, out resolvedValOut, out wasResolved); int.TryParse(resolvedValOut, out intValOut); dr["CutOutCount"] = intValOut; cutPropMgr.Get5("Bends", false, out valOut, out resolvedValOut, out wasResolved); int.TryParse(resolvedValOut, out intValOut); dr["BendCount"] = intValOut; Decimal mult = AZI_SWCustomProperties.Properties.AppSettings.Default.AreaFactor; cutPropMgr.Get5("Bounding Box Length", false, out valOut, out resolvedValOut, out wasResolved); Decimal.TryParse(resolvedValOut, out decimal boxLength); cutPropMgr.Get5("Bounding Box Width", false, out valOut, out resolvedValOut, out wasResolved); Decimal.TryParse(resolvedValOut, out decimal boxWidth); Decimal qty = Math.Ceiling((boxLength + mult * sheetThickness) * (boxWidth + mult * sheetThickness)); dr["ChildQty"] = Decimal.Round(qty, 2); } } } return(dr); }