private void addFileToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); if (swApp != null) { dialog.InitialDirectory = swApp.GetCurrentWorkingDirectory(); } dialog.Filter = "Solidworks (*.sldprt;*.sldasm;*.slddrw)|*.sldprt;*.sldasm;*.slddrw|Parts (*.sldprt)|*.sldprt|Assemblies (*.sldasm)|*.sldasm|Drawings (*.slddrw)|*.slddrw|All files (*.*)|*.*"; dialog.Multiselect = true; DialogResult result = dialog.ShowDialog(); if (result == DialogResult.OK) { Helper.HelperResult err = Helper.HelperResult.UNKNOWN; string[] files = dialog.FileNames; if (files.Any()) { err = Helper.AddFiles(bindingSource_swFolder, files); } //if (!String.IsNullOrEmpty(file)) //err = Helper.AddFile(bindingSource_swFolder, file); switch (err) { case Helper.HelperResult.SUCCESS: break; case Helper.HelperResult.UNKNOWN: MessageBox.Show("Unknown error"); break; case Helper.HelperResult.NO_FILES: MessageBox.Show("No cad data"); break; default: MessageBox.Show("Unknown error"); break; } } }
public void Main() { swSuccess = false; errors = 0; warnings = 0; string swSourcePath = swApp.GetCurrentWorkingDirectory(); string swExportPath = Path.Combine(swSourcePath, "IGS"); string[] tmp = Directory.GetFiles(swSourcePath, "*.SLDPRT", SearchOption.TopDirectoryOnly); if (Directory.Exists(swExportPath)) { Directory.Delete(swExportPath, true); } Directory.CreateDirectory(swExportPath); ModelDoc2 swModel = swApp.ActiveDoc as ModelDoc2; AssemblyDoc swAssem = (AssemblyDoc)swModel; #region TopLevel string igsFileName = MakeFileName(swModel.Extension.Document.GetTitle()); swModel.Extension.SaveAs(Path.Combine(swExportPath, igsFileName), (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_Copy, null, ref errors, ref warnings); //PrintSaveResults(); #endregion TopLevel #region Subassemblies string swExportSubPath = Path.Combine(swExportPath, "Subassemblies"); Directory.CreateDirectory(swExportSubPath); object[] objComps = (object[])swAssem.GetComponents(true); ModelDoc2 igsModel; foreach (object obj in objComps) { swComponent = obj as Component2; Debug.WriteLine(String.Format("Working on {0}.. \n\t {1}", swComponent.Name2, swComponent.GetPathName())); igsModel = swApp.OpenDoc6(swComponent.GetPathName(), (int)swDocumentTypes_e.swDocASSEMBLY, (int)swOpenDocOptions_e.swOpenDocOptions_ReadOnly, null, ref errors, ref warnings); swApp.ActivateDoc2(igsModel.GetTitle(), true, ref errors); igsFileName = MakeFileName(igsModel.Extension.Document.GetTitle()); igsModel.Extension.SaveAs(Path.Combine(swExportSubPath, igsFileName), (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_Copy, null, ref errors, ref warnings); swApp.CloseDoc(igsModel.GetTitle()); } #endregion Subassemblies #region Parts string swExportPartPath = Path.Combine(swExportPath, "Parts"); Directory.CreateDirectory(swExportPartPath); string[] swPartFiles = Directory.GetFiles(swSourcePath, "*.SLDPRT", SearchOption.TopDirectoryOnly); foreach (string partFile in swPartFiles) { try { igsModel = swApp.OpenDoc6(partFile, (int)swDocumentTypes_e.swDocPART, (int)swOpenDocOptions_e.swOpenDocOptions_ReadOnly, null, ref errors, ref warnings); swApp.ActivateDoc2(igsModel.GetTitle(), true, ref errors); string[] swConfigs = (string[])igsModel.GetConfigurationNames(); int swConfigCount = igsModel.GetConfigurationCount(); string swConfigFilename; for (int i = 0; i < swConfigCount; i++) { igsModel.ShowConfiguration2(swConfigs[i]); swConfigFilename = igsModel.Extension.Document.GetTitle(); if (swConfigCount > 1) { swConfigFilename += String.Format("-CFG{0}", (i + 1).ToString()); } igsFileName = MakeFileName(swConfigFilename); igsModel.Extension.SaveAs(Path.Combine(swExportPartPath, igsFileName), (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_Copy, null, ref errors, ref warnings); } swApp.CloseDoc(igsModel.GetTitle()); } catch (NullReferenceException e) { Debug.WriteLine(e.Message); } } #endregion Parts string timeFilename = Path.Combine(swExportPath, "Timestamp.txt"); using (StreamWriter swTimeStamper = new StreamWriter(timeFilename)) { swTimeStamper.WriteLine("Exported on {0} at {1}", System.DateTime.Now.ToShortDateString(), System.DateTime.Now.ToShortTimeString()); swTimeStamper.Flush(); } }