95 lines
3.5 KiB
C#
95 lines
3.5 KiB
C#
using System;
|
|
using Hi.Licenses;
|
|
using Hi.Common.Messages;
|
|
using Hi.MachiningProcs;
|
|
using Hi.Common.FileLines;
|
|
using Hi.MongoUtils;
|
|
|
|
namespace Sample.Machining
|
|
{
|
|
public static class DemoUseMachiningProject
|
|
{
|
|
#region LoadProjectFileAndRunNcFiles
|
|
static void LoadProjectFileAndRunNcFiles()
|
|
{
|
|
#region LicenseAndDatabaseSetup
|
|
Console.WriteLine($"License Login.");
|
|
License.LogInAll();
|
|
|
|
Console.WriteLine($"Start Database.");
|
|
MongoServer.Default = MongoServer.Run(new MongoRunnerOptions()
|
|
{
|
|
MongoPort = 28100
|
|
});
|
|
#endregion
|
|
|
|
#region ProjectLoading
|
|
var projectPath = "C:/HiNC-Projects/DemoStandardPath/Main.hincproj";
|
|
Console.WriteLine($"Load Project: {projectPath}");
|
|
MachiningProject machiningProject = MachiningProject.LoadFile(projectPath);
|
|
#endregion
|
|
|
|
#region EventHandling
|
|
Console.WriteLine($"Set message event.");
|
|
//show message if something abnormal.
|
|
machiningProject.SessionMessageHost.CollectionItemAdded += pack =>
|
|
{
|
|
if (pack.Tags.Contains(MessageFlag.Warning.ToString()) ||
|
|
pack.Tags.Contains(MessageFlag.Error.ToString()) ||
|
|
pack.Tags.Contains(MessageFlag.SysErr.ToString()))
|
|
{
|
|
var sourceCommand = pack.SourceCommand;
|
|
Console.WriteLine($"{pack.Message} At \"{sourceCommand?.FilePath}\" (Line {sourceCommand?.GetLineNo()}) \"{sourceCommand?.Line}\"");
|
|
}
|
|
};
|
|
Console.WriteLine($"Set machining step event.");
|
|
//show MRR.
|
|
machiningProject.ShellApi.MachiningStepBuilt += (preStep, curStep) =>
|
|
{
|
|
var sourceCommand = curStep.SourceCommand;
|
|
if (curStep.Mrr_mm3ds > 500) //show only the step that contains large MRR.
|
|
Console.WriteLine($"MRR = {curStep.Mrr_mm3ds} At \"{sourceCommand?.FilePath}\" (Line {sourceCommand?.GetLineNo()}) \"{sourceCommand?.Line}\"");
|
|
};
|
|
#endregion
|
|
|
|
#region MachiningExecution
|
|
Console.WriteLine($"Reset runtime status.");
|
|
machiningProject.ResetRuntime();
|
|
|
|
Console.WriteLine($"Session begin.");
|
|
machiningProject.BeginSession();
|
|
machiningProject.ShellApi.MachiningResolution_mm = 1;
|
|
machiningProject.ShellApi.EnableCollisionDetection = true;
|
|
machiningProject.ShellApi.EnablePauseOnCollision = false;
|
|
machiningProject.ShellApi.EnableMillingForceEvaluation = false;
|
|
//the path from Shell-API is relative by project directory.
|
|
machiningProject.ShellApi.PlayNcFile("NC/side.ptp");
|
|
machiningProject.ShellApi.PlayNcFile("NC/circle.ptp");
|
|
machiningProject.EndSession();
|
|
Console.WriteLine($"Session end.");
|
|
#endregion
|
|
|
|
#region CleanupResources
|
|
Console.WriteLine($"Close Project: {projectPath}");
|
|
machiningProject.Dispose();
|
|
|
|
Console.WriteLine($"Close Database.");
|
|
MongoServer.Default.Dispose();
|
|
|
|
Console.WriteLine($"License Logout.");
|
|
License.LogOutAll();
|
|
|
|
Console.WriteLine($"Program end.");
|
|
#endregion
|
|
}
|
|
#endregion
|
|
|
|
#region Main
|
|
public static void Main(string[] args)
|
|
{
|
|
LoadProjectFileAndRunNcFiles();
|
|
}
|
|
#endregion
|
|
}
|
|
}
|