public static void Export() { try { if (!Directory.Exists(Variables.doc_options.output_dirpath)) { Directory.CreateDirectory(Variables.doc_options.output_dirpath); } if (!FCExporter.SaveNCCode(FCToVericut.Application, Variables.doc, Variables.fname_no_ext, ".mcd", Variables.doc_options.output_dirpath, Variables.setups_info, Variables.GetSaveNCForAllSetups(), Variables.is_single_program, Variables.doc_options.combine_setups)) { LogFile.Write("Failed to save nc code"); MessageDisplay.ShowError( LanguageSupport.Translate("Abort export: Failed to save NC code. Check for errors in the Op List.")); return; } Variables.doc.InvalidateToolpaths(); ExportTools(FCToVericut.Application, Variables.doc); FCExporter.ExportStock((FMStock)Variables.doc.Stock, Variables.setups_info, Variables.doc_options.output_dirpath); /* Each setup has it's own clamps and possibly part solid. So we save them per setup. */ FCExporter.ExportClamps((FMSolids)Variables.doc.Solids, Variables.setups_info, Variables.doc_options.output_dirpath); FCExporter.ExportDesign((FMSolids)Variables.doc.Solids, Variables.setups_info, Variables.doc_options.output_dirpath); /* If we need to update projects file, do it now */ if (Variables.doc_options.is_export_project) { VcProject_Manager.ConstructNewVCProjectFile( Variables.setups_info.Count); } MessageDisplay.ShowMessage(LanguageSupport.Translate("Export completed.")); } catch (Exception Ex) { LogFile.WriteException(Ex, "Export"); } finally { } }
private static void ExportTools(FeatureCAM.Application app, FMDocument doc) { StringBuilder tool_info = new StringBuilder(), tls_fcontent = new StringBuilder(), tool_list = new StringBuilder(); int nc_prog = 1, init_num = 1; string crib_pos = "", nc_prog_fpath = ""; try { /* At the moment we construct full tool list, which can be time consuming. * So if we have a lot of setups that don't get exported, we do have a pointless delay */ FCExporter.ToolsToList(app, doc, Variables.setups_info, Variables.GetSaveToolsForAllSetups(), (Variables.doc_options.combine_setups == 1), Variables.doc_options.output_dirpath, Variables.doc.Metric); if (Variables.doc_options.combine_setups == 0) { for (int si = 0; si < Variables.setups_info.Count; si++) { if (Variables.setups_info[si].options.is_export_tools) { Variables.setups_info[si].tool_fpath = Path.Combine(Variables.doc_options.output_dirpath, Variables.fname_no_ext + "_" + (string)Variables.setups_info[si].name + ".tls"); tool_info = new StringBuilder(); tls_fcontent = new StringBuilder(); tool_list = new StringBuilder(); for (int i = 0; i < Variables.setups_info[si].tools.Count; i++) { if (Variables.setups_info[si].tools[i].cutter_geom.Count == 0) { continue; } if (tool_info.Length > 0) { tool_info.AppendLine(""); } tool_info.Append( VericutTool.ToXML(Variables.setups_info[si].tools[i], doc.Metric)); nc_prog = Convert.ToInt32(Convert.ToString(Variables.setups_info[si].tools[i].turr_type).Replace("eTT_TURRET", "")); nc_prog_fpath = Variables.setups_info[si].nc_fpaths[nc_prog - 1]; crib_pos = String.Format("{0}:{1}", Convert.ToString(Variables.setups_info[si].tools[i].turr_type).Replace("eTT_TURRET", ""), Convert.ToInt32(Variables.setups_info[si].tools[i].id)); AppendToToolList(tool_list, nc_prog, init_num, crib_pos, nc_prog_fpath, Variables.setups_info[si].tools[i].optional_id); } Variables.setups_info[si].tool_list = "<ToolChange>" + Environment.NewLine + Utilities.Indent(tool_list.ToString(), 1) + "</ToolChange>"; tls_fcontent.AppendLine("<?xml version=\"1.0\"?>"); tls_fcontent.AppendLine("<CGTechToolLibrary>"); tls_fcontent.AppendLine(Utilities.Indent("<Tools>", 1)); tls_fcontent.AppendLine(Utilities.Indent(tool_info.ToString(), 2)); tls_fcontent.AppendLine(Utilities.Indent("</Tools>", 1)); tls_fcontent.Append("</CGTechToolLibrary>"); File.WriteAllText(Variables.setups_info[si].tool_fpath, tls_fcontent.ToString()); LogFile.Write(String.Format("Tool info was written to {0}", Variables.setups_info[si].tool_fpath)); } } } else { if (Variables.setups_info[0].options.is_export_tools) { for (int si = 0; si < Variables.setups_info.Count; si++) { if (Variables.setups_info[si].options.is_export_tools) { Variables.setups_info[si].tool_fpath = Path.Combine(Variables.doc_options.output_dirpath, Variables.fname_no_ext + ".tls"); } } for (int i = 0; i < Variables.setups_info[0].tools.Count; i++) { if (Variables.setups_info[0].tools[i].cutter_geom.Count == 0) { continue; } tool_info.Append(tool_info.Length > 0 ? "\n" : ""); tool_info.Append( VericutTool.ToXML(Variables.setups_info[0].tools[i], Variables.doc.Metric)); nc_prog = Convert.ToInt32(Convert.ToString(Variables.setups_info[0].tools[i].turr_type).Replace("eTT_TURRET", "")); nc_prog_fpath = Variables.setups_info[0].nc_fpaths[nc_prog - 1]; crib_pos = String.Format("{0}:{1}", Convert.ToString(Variables.setups_info[0].tools[i].turr_type).Replace("eTT_TURRET", ""), Convert.ToInt32(Variables.setups_info[0].tools[i].id)); AppendToToolList(tool_list, nc_prog, init_num, crib_pos, nc_prog_fpath, Variables.setups_info[0].tools[i].optional_id); } Variables.setups_info[0].tool_list = "<ToolChange>" + Environment.NewLine + Utilities.Indent(tool_list.ToString(), 1) + "</ToolChange>"; tls_fcontent.AppendLine("<?xml version=\"1.0\"?>"); tls_fcontent.AppendLine("<CGTechToolLibrary>"); tls_fcontent.AppendLine(Utilities.Indent("<Tools>", 1)); tls_fcontent.AppendLine(Utilities.Indent(tool_info.ToString(), 2)); tls_fcontent.AppendLine(Utilities.Indent("</Tools>", 1)); tls_fcontent.Append("</CGTechToolLibrary>"); File.WriteAllText(Variables.setups_info[0].tool_fpath, tls_fcontent.ToString()); LogFile.Write(String.Format("Tool info was written to {0}", Variables.setups_info[0].tool_fpath)); } } } catch (Exception Ex) { LogFile.Write(String.Format("Exception occured during tool export. Exception details: {0}\n", Ex.Message)); MessageDisplay.ShowError( LanguageSupport.Translate("Failed to export tools")); } }
public static void InitializeVariables() { FMStock stock; try { LogFile.Write("Initialize variables"); if (FCToVericut.Application != null) { Variables.doc = (FMDocument)FCToVericut.Application.ActiveDocument; } if (Variables.doc == null) { Variables.fname_no_ext = ""; Variables.doc_options.output_dirpath = ""; Variables.prev_doc_name = ""; return; } stock = (FMStock)Variables.doc.Stock; Variables.is_single_program = ((stock.IndexType == tagFMIndexType.eIT_None && stock.SingleProgramWithProgramStop) || (stock.IndexType != tagFMIndexType.eIT_None && stock.ToolDominant && stock.SingleProgram) || (stock.IndexType != tagFMIndexType.eIT_None && stock.ToolDominant) || (stock.IndexType == tagFMIndexType.eIT_4thAxisZ && stock.SingleProgram)); Variables.doc_options.combine_setups = (Variables.is_single_program || (Variables.doc_options.combine_setups != -1 ? (Variables.doc_options.combine_setups == 1) : false) ? 1 : 0); LogFile.Write(String.Format("Single program: {0}", Variables.is_single_program)); Variables.fname_no_ext = Variables.doc.PartName; //if (Variables.output_dirpath == "") if (!Variables.doc_options.read_from_file) { Variables.doc_options.output_dirpath = Variables.doc.path; } if (Variables.doc_options.combine_setups == -1) { Variables.doc_options.combine_setups = (Variables.is_single_program ? 1 : 0); } Variables.all_ucss = FCExporter.InitializeAllUCS(Variables.doc.UCSs); Variables.all_fixture_ids = FCExporter.InitializeAllFixtureIDs(Variables.doc.Setups); Variables.all_solids = FCExporter.InitializeAllSolids(Variables.doc.Solids); Variables.setups_info = FCExporter.InitializeAllSetups(Variables.doc.Setups, Variables.doc.Solids, Variables.doc.UCSs, Variables.all_ucss, Variables.doc_options.all_setup_options, Variables.doc_options.combine_setups, ref Variables.are_all_setups_milling); } catch (Exception Ex) { LogFile.WriteException(Ex, "InitializeVariables"); } finally { stock = null; } }