public void searchForMissingAssemblyFiles(out int numFound) { numFound = 0; List <SWFile> toRemove = new List <SWFile>(); List <SWFile> toAdd = new List <SWFile>(); foreach (SWFile f in files) { if (f.docType == SWFileType.PART && f.getStatus().Type == SWFileStatusType.FILE_MISSING) { string probableName = f.prefix + SWFile.fourDigit(f.number) + f.suffix + new SWAssy().extension; if (File.Exists(Path.Combine(workDir, probableName))) { SWPart f_old = f as SWPart; SWAssy f_new = (SWAssy)f_old; f_new.file = probableName; toRemove.Add(f); toAdd.Add(f_new); numFound += 1; } } } foreach (SWFile f in toRemove) { f.removeFromProject(); } foreach (SWFile f in toAdd) { f.addToProject(); } }
private void createPartButton_Click(object sender, EventArgs e) { if (propertyNameTextBox.Text == "") { MessageBox.Show("Enter property name", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (partTemplateTextBox.Text == "") { MessageBox.Show("Enter part template path", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (workDirTextBox.Text == "") { MessageBox.Show("Enter work dir path", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } NumberInputForm nif = new NumberInputForm(project, project.partPrefix, project.partSuffix); nif.ShowDialog(); if (!nif.OK) { return; } SWPart f = new SWPart() { project = project, number = nif.number, name = nif.name, prefix = nif.prefix, suffix = nif.suffix, template = partTemplateTextBox.Text, }; int ret = f.create(); if (ret == SWFile.RET_DUPLICATE_NUMBER) { DialogResult r = MessageBox.Show("Part or Assembly with number entered already exists in database. Create anyway?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (r == DialogResult.Yes) { ret = SWFile.RET_OK; } } if (ret == SWFile.RET_NAME_EXISTS) { MessageBox.Show("Part or Assembly with this name already exists!", "", MessageBoxButtons.OK, MessageBoxIcon.Error); } if (ret == SWFile.RET_FILE_EXISTS) { MessageBox.Show("File already exists!", "", MessageBoxButtons.OK, MessageBoxIcon.Error); } if (ret == SWFile.RET_OK) { f.save(); f.addToProject(); } dbForm.update(); }
private void fileImportButton_Click(object sender, EventArgs e) { if (propertyNameTextBox.Text == "") { MessageBox.Show("Enter property name", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } OpenFileDialog fd = new OpenFileDialog(); fd.Multiselect = true; fd.Filter = "SolidWorks Part|*.sldprt|Solidworks Assembly|*.sldasm"; DialogResult result = fd.ShowDialog(); if (result == DialogResult.OK) { foreach (String FileName in fd.FileNames) { if (!(FileName.ToLower().StartsWith(project.workDir.ToLower()))) { MessageBox.Show(String.Format("File {0} is not in the workdir! Not adding this file.", FileName), "", MessageBoxButtons.OK, MessageBoxIcon.Warning); continue; } string[] p = SWFile.getFileParams(Path.GetFileNameWithoutExtension(FileName)); if (p[1] == "") { MessageBox.Show(String.Format("File {0} name does not include a four-digit part number! Not adding this file.", FileName), "", MessageBoxButtons.OK, MessageBoxIcon.Warning); continue; } SWFile f = null; if (FileName.ToLower().EndsWith(".sldprt")) { f = new SWPart() { project = project, number = Convert.ToInt32(p[1]), name = "", prefix = p[0], suffix = p[2], template = null, }; } else if (FileName.ToLower().EndsWith(".sldasm")) { f = new SWAssy() { project = project, number = Convert.ToInt32(p[1]), name = "", prefix = p[0], suffix = p[2], template = null, }; } else { MessageBox.Show(String.Format("{0} is not SolidWorks Part or Assembly!", FileName), "", MessageBoxButtons.OK, MessageBoxIcon.Warning); continue; } int ret = f.create(); if (ret == SWFile.RET_DUPLICATE_NUMBER) { DialogResult r = MessageBox.Show(String.Format("{0}: Part or Assembly with this number already exists in database. Add anyway?", FileName), "", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (r == DialogResult.Yes) { ret = SWFile.RET_OK; } } if (ret == SWFile.RET_NAME_EXISTS) { MessageBox.Show(String.Format("{0}: Part or Assembly with this prefix number suffix combination already exists! Not adding this file.", FileName), "", MessageBoxButtons.OK, MessageBoxIcon.Error); continue; } if (ret == SWFile.RET_FILE_EXISTS) { // Yes, we are adding it right now:) ret = SWFile.RET_OK; } if (ret == SWFile.RET_OK) { f.getNameFromFile(); f.addToProject(); } } } dbForm.update(); }
public void open(string path) { numbers = new List <int>(); filenames = new List <string>(); files = new List <SWFile>(); file = path; if (!File.Exists(path)) { throw new ProjectReadException("Can\'t find file " + path); } XmlDocument d = new XmlDocument(); try { d.Load(file); } catch (XmlException exc) { throw new ProjectReadException(exc.Message); } XmlNode root = d.DocumentElement; if (root.Name != "swpiProject") { throw new ProjectReadException("Root node missing."); } workDir = readSingleNode(d, "descendant::workDir"); partPrefix = readSingleNode(d, "descendant::partPrefix"); partSuffix = readSingleNode(d, "descendant::partSuffix"); assyPrefix = readSingleNode(d, "descendant::assyPrefix"); assySuffix = readSingleNode(d, "descendant::assySuffix"); // Read elements... foreach (XmlNode fileNode in d.SelectNodes("descendant::files/file")) // no need to throw exceptions here, it is ok for "files" node not to exist { SWFile f = null; string t = readSingleNode(fileNode, "descendant::type"); SWFileType tp = getSWFileTypeFromString(t); if (tp == SWFileType.PART) { f = new SWPart() { project = this, name = readSingleNode(fileNode, "descendant::name"), prefix = readSingleNode(fileNode, "descendant::prefix"), suffix = readSingleNode(fileNode, "descendant::suffix"), file = readSingleNode(fileNode, "descendant::path"), }; } else if (tp == SWFileType.ASSEMBLY) { f = new SWAssy() { project = this, name = readSingleNode(fileNode, "descendant::name"), prefix = readSingleNode(fileNode, "descendant::prefix"), suffix = readSingleNode(fileNode, "descendant::suffix"), file = readSingleNode(fileNode, "descendant::path"), }; } else { throw new ProjectReadException("Wrong file type: " + t); } try { f.number = Convert.ToInt32(fileNode.SelectSingleNode("descendant::number").InnerText); } catch (FormatException) { throw new ProjectReadException(String.Format("\"{0}\" can't be a number.", fileNode.SelectSingleNode("descendant::number").InnerText)); } files.Add(f); numbers.Add(f.number); filenames.Add(f.prefix + SWFile.fourDigit(f.number) + f.suffix); } while (Settings.Default.RecentProjects.Contains(path)) { Settings.Default.RecentProjects.Remove(path); } Settings.Default.RecentProjects.Insert(0, path); while (Settings.Default.RecentProjects.Count >= 5) { Settings.Default.RecentProjects.RemoveAt(4); } _openedOK = true; }
private void newProjectButton_Click(object sender, EventArgs e) { project.createNew(); project.workDir = ""; foreach (DataGridViewRow row in dataGridView1.Rows) { SWPart f = new SWPart(); f.project = project; f.file = ""; int cellNo = 1; foreach (DataGridViewCell cell in row.Cells) { if (cell.Value == null) { continue; } importFieldValue cellMapping; if (mapping.TryGetValue(cellNo, out cellMapping)) { switch (cellMapping) { case importFieldValue.PREFIX_NUMBER_SUFFIX: string[] p = SWFile.getFileParams(cell.Value.ToString()); if (p[1] == "") { MessageBox.Show(String.Format("{0} is wrong format for PREFIX_NUMBER_SUFFIX", cell.Value.ToString()), "", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } f.prefix = p[0]; f.number = Convert.ToInt32(p[1]); f.suffix = p[2]; break; case importFieldValue.NAME: f.name = cell.Value.ToString(); break; case importFieldValue.PREFIX: f.prefix = cell.Value.ToString(); break; case importFieldValue.SUFFIX: f.suffix = cell.Value.ToString(); break; case importFieldValue.NUMBER: try { f.number = Convert.ToInt32(cell.Value.ToString()); } catch (FormatException) { MessageBox.Show(String.Format("Can\'t convert {0} to a number!", cell.Value.ToString()), "", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } break; case importFieldValue.PATH_RELATIVE: f.file = cell.Value.ToString(); break; } } cellNo += 1; } if (f.number > 0 && f.number <= 9999) { if (f.file == "") { // Guess file name f.file = f.prefix + SWFile.fourDigit(f.number) + f.suffix + f.extension; } if (f.file.ToLower().EndsWith(".sldasm")) { SWAssy fa = (SWAssy)f; fa.addToProject(); } else { f.addToProject(); } } } Form1 form = Form1.getForm(); form.activateUI(); if (!form.dbForm.Visible) { form.prep_DBForm(); } form.dbForm.update(); form.dbForm.Show(); MessageBox.Show(String.Format("Imported {0} files.", project.countFiles().ToString()), "", MessageBoxButtons.OK, MessageBoxIcon.Information); Close(); }