Compare commits
No commits in common. "dd4c3ef28fc91611faf4baaa851f8025a431d6c5" and "96eb6ad0509a61b82f8478b30e6ad712548cabff" have entirely different histories.
dd4c3ef28f
...
96eb6ad050
57
Common/DemoMessageAndExceptionHandling.cs
Normal file
57
Common/DemoMessageAndExceptionHandling.cs
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Hi.Common;
|
||||||
|
using Hi.Common.Messages;
|
||||||
|
|
||||||
|
namespace Sample.Common;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Demonstrates common message and exception handling patterns in HiAPI applications
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// ### Source Code
|
||||||
|
/// [!code-csharp[SampleCode](~/../Hi.Sample/Common/DemoMessageAndExceptionHandling.cs)]
|
||||||
|
/// </remarks>
|
||||||
|
public static class DemoMessageAndExceptionHandling
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Demonstrates normal message handling
|
||||||
|
/// </summary>
|
||||||
|
internal static void DemoNormalMessages()
|
||||||
|
{
|
||||||
|
#region Normal_Messages
|
||||||
|
MessageUtil.ReportMessage("Operation completed successfully.");
|
||||||
|
MessageUtil.ReportWarning("Please check your input.");
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Demonstrates exception handling in synchronous code
|
||||||
|
/// </summary>
|
||||||
|
internal static void DemoSynchronousExceptionHandling()
|
||||||
|
{
|
||||||
|
#region Sync_Exception
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Your code here
|
||||||
|
throw new NotImplementedException("Demo exception");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
ExceptionUtil.ShowException(ex, null);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Demonstrates exception handling in asynchronous code
|
||||||
|
/// </summary>
|
||||||
|
internal static async Task DemoAsynchronousExceptionHandling()
|
||||||
|
{
|
||||||
|
#region Async_Exception
|
||||||
|
await Task.Run(() =>
|
||||||
|
{
|
||||||
|
// Your async operation here
|
||||||
|
throw new NotImplementedException("Demo async exception");
|
||||||
|
}).ShowIfCatched(null);
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -18,8 +18,7 @@ namespace Sample
|
|||||||
static int Main(string[] args)
|
static int Main(string[] args)
|
||||||
{
|
{
|
||||||
Console.WriteLine("HiAPI starting.");
|
Console.WriteLine("HiAPI starting.");
|
||||||
using var loggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(b => b.AddConsole());
|
LocalApp.AppBegin();
|
||||||
LocalApp.AppBegin(loggerFactory.CreateLogger("Hi.Sample"));
|
|
||||||
|
|
||||||
Console.WriteLine("Hello World! HiAPI.");
|
Console.WriteLine("Hello World! HiAPI.");
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
using Hi.Common.XmlUtils;
|
using Hi.Common.XmlUtils;
|
||||||
using Hi.Geom;
|
using Hi.Geom;
|
||||||
using Hi.Mech;
|
using Hi.Mech;
|
||||||
using Hi.Mech.Topo;
|
using Hi.Mech.Topo;
|
||||||
@ -25,7 +25,7 @@ namespace Sample.MachineTool
|
|||||||
{
|
{
|
||||||
static DemoBuildMachineTool()
|
static DemoBuildMachineTool()
|
||||||
{
|
{
|
||||||
XFactory.Regs.Add(XName, (xml, baseDirectory, relFile, progress, res) => new DemoBuildMachineTool());
|
XFactory.Regs.Add(XName, (xml, baseDirectory, relFile, res) => new DemoBuildMachineTool());
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Generates an XYZ-ABC machine tool instance from embedded resources.
|
/// Generates an XYZ-ABC machine tool instance from embedded resources.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
using Hi.Common.XmlUtils;
|
using Hi.Common.XmlUtils;
|
||||||
using Hi.Geom;
|
using Hi.Geom;
|
||||||
using Hi.MachiningProcs;
|
using Hi.MachiningProcs;
|
||||||
using Hi.Mech.Topo;
|
using Hi.Mech.Topo;
|
||||||
@ -42,8 +42,7 @@ public static class DemoBuildGeomOnlyMachiningProject
|
|||||||
|
|
||||||
static void Main()
|
static void Main()
|
||||||
{
|
{
|
||||||
using var loggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(b => b.AddConsole());
|
LocalApp.AppBegin();
|
||||||
LocalApp.AppBegin(loggerFactory.CreateLogger("Hi.Sample"));
|
|
||||||
LocalProjectService localProjectService = new LocalProjectService();
|
LocalProjectService localProjectService = new LocalProjectService();
|
||||||
|
|
||||||
var projectPath = "C:/HiNC-Projects/NewProject/Main.hincproj";
|
var projectPath = "C:/HiNC-Projects/NewProject/Main.hincproj";
|
||||||
@ -83,10 +82,9 @@ public static class DemoBuildGeomOnlyMachiningProject
|
|||||||
WorkpieceGeomToFixtureBuckleTransformer = new StaticTranslation(new Vec3d(0, 0, 0)),
|
WorkpieceGeomToFixtureBuckleTransformer = new StaticTranslation(new Vec3d(0, 0, 0)),
|
||||||
};
|
};
|
||||||
|
|
||||||
IProgress<object> progress = null;
|
|
||||||
localProjectService.MachiningChain
|
localProjectService.MachiningChain
|
||||||
= XFactory.GenByFile<CodeXyzabcMachineTool>(
|
= XFactory.GenByFile<CodeXyzabcMachineTool>(
|
||||||
"Resource", "MachineTool/PMC-B1/PMC-B1.mt", progress);
|
"Resource", "MachineTool/PMC-B1/PMC-B1.mt", GenMode.Default);
|
||||||
localProjectService.MachiningChainFile = "PMC-B1/PMC-B1.mt";
|
localProjectService.MachiningChainFile = "PMC-B1/PMC-B1.mt";
|
||||||
|
|
||||||
localProjectService.SaveProject();
|
localProjectService.SaveProject();
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using Hi.Milling.Apts;
|
using Hi.Milling.Apts;
|
||||||
using Hi.Common.XmlUtils;
|
using Hi.Common.XmlUtils;
|
||||||
using Hi.Geom;
|
using Hi.Geom;
|
||||||
@ -142,8 +142,7 @@ public static class DemoBuildMachiningProject
|
|||||||
[STAThread]
|
[STAThread]
|
||||||
static void Main()
|
static void Main()
|
||||||
{
|
{
|
||||||
using var loggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(b => b.AddConsole());
|
LocalApp.AppBegin();
|
||||||
LocalApp.AppBegin(loggerFactory.CreateLogger("Hi.Sample"));
|
|
||||||
LocalProjectService localProjectService = new LocalProjectService();
|
LocalProjectService localProjectService = new LocalProjectService();
|
||||||
|
|
||||||
var projectPath = "C:/HiNC-Projects/NewProject/Main.hincproj";
|
var projectPath = "C:/HiNC-Projects/NewProject/Main.hincproj";
|
||||||
@ -152,8 +151,6 @@ public static class DemoBuildMachiningProject
|
|||||||
localProjectService.LoadProject(projectPath);
|
localProjectService.LoadProject(projectPath);
|
||||||
MachiningProject machiningProject = localProjectService.MachiningProject;
|
MachiningProject machiningProject = localProjectService.MachiningProject;
|
||||||
|
|
||||||
IProgress<object> progress = null;
|
|
||||||
|
|
||||||
#region ConfigureMachiningToolHouse
|
#region ConfigureMachiningToolHouse
|
||||||
localProjectService.MachiningToolHouse = new MachiningToolHouse()
|
localProjectService.MachiningToolHouse = new MachiningToolHouse()
|
||||||
{
|
{
|
||||||
@ -197,16 +194,16 @@ public static class DemoBuildMachiningProject
|
|||||||
IdealGeom = null,
|
IdealGeom = null,
|
||||||
WorkpieceGeomToFixtureBuckleTransformer = new StaticTranslation(new Vec3d(0, 0, 0)),
|
WorkpieceGeomToFixtureBuckleTransformer = new StaticTranslation(new Vec3d(0, 0, 0)),
|
||||||
CuttingPara = XFactory.GenByFile<ICuttingPara>(
|
CuttingPara = XFactory.GenByFile<ICuttingPara>(
|
||||||
"Resource/CuttingParameter", "Al6061T6.mp", progress),
|
"Resource/CuttingParameter", "Al6061T6.mp", GenMode.Default),
|
||||||
WorkpieceMaterial = XFactory.GenByFile<WorkpieceMaterial>(
|
WorkpieceMaterial = XFactory.GenByFile<WorkpieceMaterial>(
|
||||||
"Resource/WorkpieceMaterial", "Al6061T6.WorkpieceMaterial", progress),
|
"Resource/WorkpieceMaterial", "Al6061T6.WorkpieceMaterial", GenMode.Default),
|
||||||
};
|
};
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region ConfigureMachineChain
|
#region ConfigureMachineChain
|
||||||
localProjectService.MachiningChain
|
localProjectService.MachiningChain
|
||||||
= XFactory.GenByFile<CodeXyzabcMachineTool>(
|
= XFactory.GenByFile<CodeXyzabcMachineTool>(
|
||||||
"Resource", "MachineTool/PMC-B1/PMC-B1.mt", progress);
|
"Resource", "MachineTool/PMC-B1/PMC-B1.mt", GenMode.Default);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
machiningProject.MakeXmlSourceToFile(projectPath);
|
machiningProject.MakeXmlSourceToFile(projectPath);
|
||||||
|
|||||||
@ -21,8 +21,7 @@ public static class DemoUseMachiningProject
|
|||||||
{
|
{
|
||||||
static void Main()
|
static void Main()
|
||||||
{
|
{
|
||||||
using var loggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(b => b.AddConsole());
|
LocalApp.AppBegin();
|
||||||
LocalApp.AppBegin(loggerFactory.CreateLogger("Hi.Sample"));
|
|
||||||
LocalProjectService localProjectService = new LocalProjectService();
|
LocalProjectService localProjectService = new LocalProjectService();
|
||||||
|
|
||||||
#region ProjectLoading
|
#region ProjectLoading
|
||||||
|
|||||||
@ -4,78 +4,79 @@ using Hi.Disp;
|
|||||||
using Hi.Geom;
|
using Hi.Geom;
|
||||||
using Hi.Mech.Topo;
|
using Hi.Mech.Topo;
|
||||||
|
|
||||||
namespace Sample.Mech;
|
namespace Sample.Mech
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Demonstrates the creation and visualization of mechanical assemblies with kinematic linkages.
|
|
||||||
/// Shows how to build coordinate systems, establish kinematic relationships, and capture visual output.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// ### Source Code
|
|
||||||
/// [!code-csharp[SampleCode](~/../Hi.Sample/Mech/DemoTopo1.cs)]
|
|
||||||
/// </remarks>
|
|
||||||
public static class DemoTopo1
|
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a demonstration assembly with kinematic linkages.
|
/// Demonstrates the creation and visualization of mechanical assemblies with kinematic linkages.
|
||||||
/// Builds a mechanical assembly with multiple anchors and branches, including both static and dynamic transformations.
|
/// Shows how to build coordinate systems, establish kinematic relationships, and capture visual output.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>A tuple containing the assembly and root anchor</returns>
|
/// <remarks>
|
||||||
static (Asmb asmb, Anchor root) GetDemoAsmb()
|
/// ### Source Code
|
||||||
{
|
/// [!code-csharp[SampleCode](~/../Hi.Sample/Mech/DemoTopo1.cs)]
|
||||||
#region DocSite.DemoTopo1
|
/// </remarks>
|
||||||
//build coordinate systems and the assembly.
|
public static class DemoTopo1
|
||||||
Asmb asmb = new Asmb { Name = "Mech" };
|
{
|
||||||
Anchor O = new Anchor(asmb, "O");
|
/// <summary>
|
||||||
Anchor O1 = new Anchor(asmb, "O1");
|
/// Creates a demonstration assembly with kinematic linkages.
|
||||||
Anchor X = new Anchor(asmb, "X");
|
/// Builds a mechanical assembly with multiple anchors and branches, including both static and dynamic transformations.
|
||||||
Anchor Z = new Anchor(asmb, "Z");
|
/// </summary>
|
||||||
Anchor B = new Anchor(asmb, "B");
|
/// <returns>A tuple containing the assembly and root anchor</returns>
|
||||||
|
static (Asmb asmb,Anchor root) GetDemoAsmb()
|
||||||
|
{
|
||||||
|
#region DocSite.DemoTopo1
|
||||||
|
//build coordinate systems and the assembly.
|
||||||
|
Asmb asmb = new Asmb { Name = "Mech" };
|
||||||
|
Anchor O = new Anchor(asmb, "O");
|
||||||
|
Anchor O1 = new Anchor(asmb, "O1");
|
||||||
|
Anchor X = new Anchor(asmb, "X");
|
||||||
|
Anchor Z = new Anchor(asmb, "Z");
|
||||||
|
Anchor B = new Anchor(asmb, "B");
|
||||||
|
|
||||||
//build kinematic link
|
//build kinematic link
|
||||||
Branch.Attach(O, O1, new StaticTranslation(new Vec3d(0, 0, 80)));
|
Branch.Attach(O, O1, new StaticTranslation(new Vec3d(0, 0, 80)));
|
||||||
Branch brnX = Branch.Attach(O1, X, new DynamicTranslation(new Vec3d(1, 0, 0)));
|
Branch brnX = Branch.Attach(O1, X, new DynamicTranslation(new Vec3d(1, 0, 0)));
|
||||||
Branch brnZ = Branch.Attach(X, Z, new DynamicTranslation(new Vec3d(0, 0, 1)));
|
Branch brnZ = Branch.Attach(X, Z, new DynamicTranslation(new Vec3d(0, 0, 1)));
|
||||||
Branch brnB = Branch.Attach(Z, B, new DynamicRotation(new Vec3d(0, 1, 0), 0, new Vec3d(-100, 0, 0)));
|
Branch brnB = Branch.Attach(Z, B, new DynamicRotation(new Vec3d(0, 1, 0), 0, new Vec3d(-100, 0, 0)));
|
||||||
|
|
||||||
//drive the dynamic transformation by single value for each branch.
|
//drive the dynamic transformation by single value for each branch.
|
||||||
brnX.Step = 200;
|
brnX.Step = 200;
|
||||||
brnZ.Step = 100;
|
brnZ.Step = 100;
|
||||||
brnB.Step = MathUtil.ToRad(-60);
|
brnB.Step = MathUtil.ToRad(-60);
|
||||||
|
|
||||||
//Get and show the transform matrices relative to O.
|
//Get and show the transform matrices relative to O.
|
||||||
Dictionary<Anchor, Mat4d> matMap = asmb.GetMat4dMap(O);
|
Dictionary<Anchor, Mat4d> matMap = asmb.GetMat4dMap(O);
|
||||||
Console.WriteLine("Transform Matrix relative to O:");
|
Console.WriteLine("Transform Matrix relative to O:");
|
||||||
foreach (KeyValuePair<Anchor, Mat4d> keyValue in matMap)
|
foreach (KeyValuePair<Anchor, Mat4d> keyValue in matMap)
|
||||||
Console.WriteLine($"{keyValue.Key.Name} : {keyValue.Value}");
|
Console.WriteLine($"{keyValue.Key.Name} : {keyValue.Value}");
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
return (asmb, O);
|
return (asmb,O);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Captures the assembly visualization and saves it to a file.
|
||||||
|
/// Initializes the display engine, sets up the assembly visualization with an isometric view, and saves a snapshot to a bitmap file.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="src">A tuple containing the assembly and root anchor for visualization</param>
|
||||||
|
static void SnapshotToFile((Asmb asmb, Anchor root) src)
|
||||||
|
{
|
||||||
|
//all the drawing function has to call DispEngine.Init() before using.
|
||||||
|
DispEngine.Init();
|
||||||
|
DispEngine.EnableSuppressDefaultLogo = true;
|
||||||
|
|
||||||
/// <summary>
|
using (DispEngine dispEngine = new DispEngine(
|
||||||
/// Captures the assembly visualization and saves it to a file.
|
src.asmb.GetAsmbDraw(src.root)))
|
||||||
/// Initializes the display engine, sets up the assembly visualization with an isometric view, and saves a snapshot to a bitmap file.
|
{
|
||||||
/// </summary>
|
dispEngine.SetViewToIsometricView();
|
||||||
/// <param name="src">A tuple containing the assembly and root anchor for visualization</param>
|
dispEngine.Snapshot("DemoTopo1.bmp", 680, 480);
|
||||||
static void SnapshotToFile((Asmb asmb, Anchor root) src)
|
}
|
||||||
{
|
Console.WriteLine("Snapshot file output.");
|
||||||
//all the drawing function has to call DispEngine.Init() before using.
|
|
||||||
DispEngine.Init();
|
|
||||||
DispEngine.EnableSuppressDefaultLogo = true;
|
|
||||||
|
|
||||||
using (DispEngine dispEngine = new DispEngine(
|
DispEngine.FinishDisp();
|
||||||
src.asmb.GetAsmbDraw(src.root)))
|
}
|
||||||
{
|
static void Main()
|
||||||
dispEngine.SetViewToIsometricView();
|
{
|
||||||
dispEngine.Snapshot("DemoTopo1.bmp", 680, 480);
|
SnapshotToFile(GetDemoAsmb());
|
||||||
}
|
}
|
||||||
Console.WriteLine("Snapshot file output.");
|
}
|
||||||
|
|
||||||
DispEngine.FinishDisp();
|
|
||||||
}
|
|
||||||
static void Main()
|
|
||||||
{
|
|
||||||
SnapshotToFile(GetDemoAsmb());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user