示例#1
0
        public void AddAssemblyBrowserFolder()
        {
            AssemblyDocument oDoc = (AssemblyDocument)_InvApplication.ActiveDocument;

            AssemblyComponentDefinition oDef = oDoc.ComponentDefinition;

            BrowserPane oPane = default(BrowserPane);

            oPane = oDoc.BrowserPanes.ActivePane;

            // Create an object collection
            ObjectCollection oOccurrenceNodes = default(ObjectCollection);

            oOccurrenceNodes = _InvApplication.TransientObjects.CreateObjectCollection();

            foreach (ComponentOccurrence oOcc in oDef.Occurrences)
            {
                // Get the node associated with this occurrence.
                BrowserNode oNode = default(BrowserNode);
                oNode = oPane.GetBrowserNodeFromObject(oOcc);

                // Add the node to the collection.
                oOccurrenceNodes.Add(oNode);
            }

            // Add the folder to the browser and specify the nodes to be grouped within it.
            BrowserFolder oFolder = default(BrowserFolder);

            oFolder = oPane.AddBrowserFolder("My Occurrences Folder", oOccurrenceNodes);
        }
示例#2
0
        private BrowserFolder getFolderForFile(BrowserPane browserPane, string searchedFileName)
        {
            BrowserFolder folder = null;

            foreach (BrowserFolder curentFolder in browserPane.TopNode.BrowserFolders)
            {
                foreach (BrowserNode node in curentFolder.BrowserNode.BrowserNodes)
                {
                    if (node.NativeObject is ComponentOccurrence)
                    {
                        ComponentOccurrence occ = (ComponentOccurrence)node.NativeObject;
                        string currentFileName  = occ.ReferencedFileDescriptor.FullFileName;
                        if (!searchedFileName.Equals(currentFileName, StringComparison.InvariantCultureIgnoreCase))
                        {
                            continue;
                        }
                    }
                    else
                    {
                        continue;
                    }
                    folder = curentFolder;
                    break;
                }
            }

            if (folder == null)
            {
                ObjectCollection colNodes = inventor.TransientObjects.CreateObjectCollection();
                folder = browserPane.AddBrowserFolder("temp", colNodes);
            }

            return(folder);
        }
示例#3
0
        private void onClickBundle(NameValueMap Context)
        {
            Document oDoc = inventor.ActiveDocument;

            if (!(oDoc is AssemblyDocument))
            {
                return;
            }

            AssemblyDocument doc         = (AssemblyDocument)oDoc;
            BrowserPane      browserPane = doc.BrowserPanes[MODELBROWSERNAME];
            BrowserNode      topNode     = browserPane.TopNode;

            BrowserNode selectedNode = getSelectedNode(topNode);

            if (selectedNode == null)
            {
                return;
            }

            string fileToBundle = "";

            if (selectedNode.NativeObject is ComponentOccurrence)
            {
                ComponentOccurrence occ = (ComponentOccurrence)selectedNode.NativeObject;
                fileToBundle = occ.ReferencedFileDescriptor.FullFileName;

                BrowserFolder folder = getFolderForFile(browserPane, fileToBundle);

                List <BrowserNode> nodesWithFileName = getNodesWithFileName(fileToBundle, topNode);
                foreach (BrowserNode foundNode in nodesWithFileName)
                {
                    folder.Add(foundNode);
                }
                folder.Name = nodesWithFileName.Count + "x " + System.IO.Path.GetFileNameWithoutExtension(fileToBundle);
            }
            else if (selectedNode.NativeObject is BrowserFolder)
            {
                BrowserFolder folder = (BrowserFolder)selectedNode.NativeObject;

                if (folder.BrowserNode.BrowserNodes[1].NativeObject is ComponentOccurrence)
                {
                    ComponentOccurrence occ = (ComponentOccurrence)folder.BrowserNode.BrowserNodes[1].NativeObject;
                    fileToBundle = occ.ReferencedFileDescriptor.FullFileName;

                    folder.Delete();
                    folder = getFolderForFile(browserPane, fileToBundle);

                    List <BrowserNode> nodesWithFileName = getNodesWithFileName(fileToBundle, topNode);
                    foreach (BrowserNode foundNode in nodesWithFileName)
                    {
                        folder.Add(foundNode);
                    }
                    folder.Name = nodesWithFileName.Count + "x " + System.IO.Path.GetFileNameWithoutExtension(fileToBundle);
                }
            }
        }
示例#4
0
        private List <BrowserNode> getNodesWithFileName(string fileName, BrowserNode topNode)
        {
            List <BrowserNode> nodes = new List <BrowserNode>();

            foreach (BrowserNode node in topNode.BrowserNodes)
            {
                if (node.NativeObject is ComponentOccurrence)
                {
                    ComponentOccurrence occ = (ComponentOccurrence)node.NativeObject;
                    string foundOccfilename = occ.ReferencedFileDescriptor.FullFileName;
                    if (fileName.Equals(foundOccfilename))
                    {
                        nodes.Add(node);
                    }
                }
                if (node.NativeObject is BrowserFolder)
                {
                    BrowserFolder folder = (BrowserFolder)node.NativeObject;
                    nodes.AddRange(getNodesWithFileName(fileName, folder.BrowserNode));
                }
            }
            return(nodes);
        }