// -----------------------------------------------------------------------------------------
//
// Copyright (c) 2021 CNC Software, LLC
//
//
// sdk@Mastercam.com
//
//
// Demonstrates the DialogManager class methods.
//
// -----------------------------------------------------------------------------------------
// 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 Mastercam.App.Exceptions;
// using Mastercam.IO;
// using Mastercam.IO.Types;
#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()
{
ScriptRun();
}
#region Private Methods
///
/// Runs the script and displays various messages
///
private void ScriptRun()
{
var dialogs = new MastercamDialogs();
dialogs.ShowMessageBox("Hello World!");
dialogs.ShowErrorMessageBox("An error has occured!");
dialogs.ShowExceptionMessageBox();
dialogs.ShowYesNoMessageBox();
dialogs.ShowYesNoCancelMessageBox();
dialogs.ShowAskForColor();
dialogs.ShowAskForAngle();
dialogs.ShowAskForDoubleBetween1And100();
}
#endregion
}
///
/// Defines our MastercamDialogs class
///
public class MastercamDialogs
{
#region Private Fields
///
/// Backing field for the Title string
///
private const string Title = "Mastercam Dialogs";
#endregion
#region Public Methods
/// Shows the message box.
public void ShowMessageBox(string message) => DialogManager.OK(message, Title);
/// Shows the error message box.
public void ShowErrorMessageBox(string message) => DialogManager.Error(message, Title);
/// Shows the exception message box.
///
/// Thrown when a Mastercam error condition occurs.
/// Thrown when an exception error condition occurs.
///
/// (Optional) True to throw mastercam.
public void ShowExceptionMessageBox(bool throwMastercam = true)
{
try
{
if (throwMastercam)
{
throw new MastercamException("Mastercam Exception raised");
}
throw new Exception("System Exception raised");
}
catch (MastercamException e)
{
DialogManager.Exception(e);
}
catch (Exception e)
{
DialogManager.Error(e.Message, Title);
}
}
/// Shows the yes no message box.
public void ShowYesNoMessageBox()
{
var result = DialogManager.YesNo("Yes/No message", Title);
DialogManager.OK(result == DialogReturnType.Yes ?
"Yes clicked" :
"No clicked", Title);
}
/// Shows the yes no cancel message box.
public void ShowYesNoCancelMessageBox()
{
var result = DialogManager.YesNoCancel("Yes/No/Cancel message", Title);
switch (result)
{
case DialogReturnType.Yes:
DialogManager.OK("Yes clicked", Title);
break;
case DialogReturnType.No:
DialogManager.OK("No clicked", Title);
break;
case DialogReturnType.Cancel:
DialogManager.OK("Cancel clicked", Title);
break;
}
}
/// Shows the ask for color dialog.
public void ShowAskForColor()
{
var color = -1;
var result = DialogManager.AskForColor(ref color);
DialogManager.OK(result == DialogReturnType.Okay ?
$"Color at index {color}" :
"No color selected", Title);
}
/// Prompts user for an angle.
public void ShowAskForAngle()
{
var angle = 0.0;
var result = DialogManager.AskForAngle("Enter an angle", ref angle);
DialogManager.OK(result == DialogReturnType.Okay ?
$"Angle is {angle}" :
"No angle input", Title);
}
///
/// Prompts user for a number between 1 and 100
///
public void ShowAskForDoubleBetween1And100()
{
var number = 1.0;
var result = DialogManager.AskForNumber(Title, 1, 100, ref number);
DialogManager.OK(result == DialogReturnType.Okay ?
$"Number is {number}" :
"No valid number input", Title);
}
#endregion
}
#endregion