public BomItem[] GetBomItems() { // Dictionary to hold BomItem(s). Key is the full path to the SolidEdgeDocument. Dictionary <string, BomItem> bomItems = new Dictionary <string, BomItem>(); SolidEdgeFramework.Application application = null; SolidEdgeFramework.Documents documents = null; SolidEdgeAssembly.AssemblyDocument assemblyDocument = null; OleMessageFilter.Register(); try { // Attempt to connect to a running instance of Solid Edge. application = SolidEdgeUtils.Connect(); // Get a reference to the Documents collection. documents = application.Documents; // Make sure a document is open and that it's an AssemblyDocument. if ((documents.Count > 0) && (application.ActiveDocumentType == SolidEdgeFramework.DocumentTypeConstants.igAssemblyDocument)) { // Get a reference to the AssemblyDocument. assemblyDocument = (SolidEdgeAssembly.AssemblyDocument)application.ActiveDocument; // Start walking the assembly tree. ProcessAssembly(0, assemblyDocument, bomItems); } else { throw new System.Exception("No assembly open."); } } catch (System.Runtime.InteropServices.COMException ex) { if (ex.ErrorCode == -2147221021 /* MK_E_UNAVAILABLE */) { throw new System.Exception("Solid Edge is not running."); } else { throw; } } catch { throw; } finally { } return(bomItems.Values.ToArray()); }
private void MainForm_Load(object sender, EventArgs e) { // Register with OLE to handle concurrency issues on the current thread. OleMessageFilter.Register(); }