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); }
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); }
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); } } }
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); }