예제 #1
0
        private void pullParents(string parentFileName)
        {
            // Set parent assembly do to parentFileName
            try
            {
                invApp.Documents.Open(parentFileName, false);
            }
            catch (Exception e)
            {
                throw;
            }
            finally
            {
                assemblyDoc        = (AssemblyDocument)invApp.Documents.ItemByName[parentFileName];
                parentAssembly     = assemblyDoc.ComponentDefinition;
                assemblyParameters = parentAssembly.Parameters.UserParameters;
            }
            // Get User Parameters from parent file.
            ArrayList parentParameters = new ArrayList();

            foreach (Parameter p in assemblyParameters)
            {
                // Store parameter in list if key
                if (p.IsKey)
                {
                    parentParameters.Add(p);
                }
            }

            // Add all parameters from list to part file
            // Check if parameter already exists

            // Add all part parameters to list for comparision
            ArrayList      partParameters  = new ArrayList();
            UserParameters childParameters = currentPartDef.Parameters.UserParameters;

            foreach (Parameter p in childParameters)
            {
                partParameters.Add(p.Name);
            }

            // Add parent parameters to part parameters
            foreach (Parameter p in parentParameters)
            {
                //Check if parameter already exists
                if (partParameters.Contains(p.Name))
                {
                    // Try to replace value with parent value
                    try
                    {
                        childParameters[p.Name].Value = p._Value;
                    }
                    catch (Exception e)
                    {
                        MessageBox.Show("Error:\n" + e.Message);
                    }
                }
                else
                {
                    // Try to add the parameter by nominal value
                    try
                    {
                        childParameters.AddByValue(p.Name, p.Value, p.get_Units());
                    }
                    catch (Exception e)
                    {
                        MessageBox.Show("Error:\n" + e.Message);
                    }
                }
            }
        }
예제 #2
0
        public void pushChildren()
        {
            DocumentsEnumerator allRefDocs = assemblyDoc.AllReferencedDocuments;

            try
            {
                foreach (Document oDoc in allRefDocs)
                {
                    if (oDoc.DocumentType.Equals(DocumentTypeEnum.kPartDocumentObject))
                    {
                        // For Parts
                        PartDocument            partFile       = (PartDocument)oDoc;
                        PartComponentDefinition partFileDef    = partFile.ComponentDefinition;
                        UserParameters          partParameters = partFileDef.Parameters.UserParameters;
                        ArrayList paraList = new ArrayList();

                        foreach (Parameter parameter in partParameters)
                        {
                            paraList.Add(parameter.Name);
                        }

                        try
                        {
                            foreach (Parameter parameter in assemblyParameters)
                            {
                                if (parameter.IsKey && !paraList.Contains(parameter.Name))
                                {
                                    // Must use add by value to get parameters that are nonnumeric
                                    partParameters.AddByValue(parameter.Name, parameter.Value, parameter.get_Units());
                                    //   partParameters.AddByExpression(parameter.Name, parameter.Value, parameter.get_Units());
                                }
                            }
                        }
                        catch (Exception)
                        {
                            throw;
                        }
                    }

                    else if (oDoc.DocumentType.Equals(DocumentTypeEnum.kAssemblyDocumentObject))
                    {
                        // For Subassemblies
                        AssemblyDocument            partFile       = (AssemblyDocument)oDoc;
                        AssemblyComponentDefinition subAssemblyDef = partFile.ComponentDefinition;
                        UserParameters subAssemblyParameters       = subAssemblyDef.Parameters.UserParameters;

                        ArrayList paraList = new ArrayList();

                        try
                        {
                            foreach (Parameter parameter in subAssemblyParameters)
                            {
                                paraList.Add(parameter.Name);
                            }

                            foreach (Parameter parameter in assemblyParameters)
                            {
                                if (parameter.IsKey && !paraList.Contains(parameter.Name))
                                {
                                    subAssemblyParameters.AddByExpression(parameter.Name, "1", parameter.get_Units());
                                }
                            }
                        }
                        catch (Exception)
                        {
                            throw;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
            }
        }