示例#1
0
        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();
        }
示例#3
0
        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
        }
示例#4
0
        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);
        }
示例#5
0
        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);
                }
            }
        }
示例#6
0
 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);
 }
示例#7
0
        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;
        }
示例#9
0
        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);
        }