// -----------------------------------------------------------------------------------------
//
// Copyright (c) 2021 CNC Software, LLC
//
//
// sdk@Mastercam.com
//
//
// Batch Import dxf files and save as native mastercam drawings.
// Select folder containing dxf files and select a folder to save drawings.
//
// -----------------------------------------------------------------------------------------
//Assemblies Import for External Editor
#region Assemblies Import
// NOTE: Update paths to reference your Mastercam 2023 path
// #r "C:\Program Files\Mastercam 2023\Mastercam\NETHook3_0.dll"
#endregion
// Using for External Editor
#region Namespace Import
/*
using System;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using Mastercam.IO;
*/
#endregion
// instantiate
var app = new App();
// Execute the script
app.Run();
#region Classes
///
/// Defines our top level App class
///
public class App
{
///
/// Main entry point to script
///
public void Run()
{
// call main method.
BatchImportFiles();
}
///
/// Batch import a folder of DXF files and save as Mastercam files.
///
private void BatchImportFiles()
{
// dialog strings
var title = "Batch Import Files";
var description = "Choose Files Folder";
var noFilesFound = "No files found";
var fileSaveFailed = "Failed to save file.";
var importComplete = "Import complete";
var importError = "Error importing files:";
var prompt = "Importing file {0} of {1}...\n{2}";
// edit to suit the file type to import
var searchPattern = "*.dxf";
var searchExtension = ".dxf";
// file type to save
var mastercamExtension = ".mcam";
try
{
FileManager.New();
// browse for folder
using (var browser = new FolderBrowserDialog())
{
browser.ShowNewFolderButton = false;
browser.Description = description;
if (browser.ShowDialog() == DialogResult.OK)
{
var folder = browser.SelectedPath;
var files = Directory.GetFiles(folder, searchPattern, SearchOption.AllDirectories);
if (!files.Any())
{
DialogManager.OK(noFilesFound, title);
return;
}
var count = files.Length;
int index = 0;
foreach (var file in files)
{
index++;
PromptManager.WriteString(string.Format(prompt, index, count, file));
var success = FileManager.Open(file);
if (success)
{
var mastercamFile = file.Replace(searchExtension, mastercamExtension);
if (!FileManager.SaveAs(mastercamFile))
{
DialogManager.OK(fileSaveFailed, title);
return;
}
}
}
FileManager.New();
DialogManager.OK(importComplete, title);
}
}
}
catch (Exception e)
{
DialogManager.OK($"{importError} {e.Message}", title);
return;
}
finally
{
//clean up
PromptManager.Clear();
}
}
}
#endregion