refactor(Sample): adapt demos to XFactory IProgress<object> signature
Made-with: Cursor
This commit is contained in:
+67
-68
@@ -4,79 +4,78 @@ using Hi.Disp;
|
||||
using Hi.Geom;
|
||||
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>
|
||||
/// 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>
|
||||
/// Creates a demonstration assembly with kinematic linkages.
|
||||
/// Builds a mechanical assembly with multiple anchors and branches, including both static and dynamic transformations.
|
||||
/// </summary>
|
||||
/// <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");
|
||||
/// <summary>
|
||||
/// Creates a demonstration assembly with kinematic linkages.
|
||||
/// Builds a mechanical assembly with multiple anchors and branches, including both static and dynamic transformations.
|
||||
/// </summary>
|
||||
/// <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
|
||||
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 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)));
|
||||
//build kinematic link
|
||||
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 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)));
|
||||
|
||||
//drive the dynamic transformation by single value for each branch.
|
||||
brnX.Step = 200;
|
||||
brnZ.Step = 100;
|
||||
brnB.Step = MathUtil.ToRad(-60);
|
||||
//drive the dynamic transformation by single value for each branch.
|
||||
brnX.Step = 200;
|
||||
brnZ.Step = 100;
|
||||
brnB.Step = MathUtil.ToRad(-60);
|
||||
|
||||
//Get and show the transform matrices relative to O.
|
||||
Dictionary<Anchor, Mat4d> matMap = asmb.GetMat4dMap(O);
|
||||
Console.WriteLine("Transform Matrix relative to O:");
|
||||
foreach (KeyValuePair<Anchor, Mat4d> keyValue in matMap)
|
||||
Console.WriteLine($"{keyValue.Key.Name} : {keyValue.Value}");
|
||||
#endregion
|
||||
//Get and show the transform matrices relative to O.
|
||||
Dictionary<Anchor, Mat4d> matMap = asmb.GetMat4dMap(O);
|
||||
Console.WriteLine("Transform Matrix relative to O:");
|
||||
foreach (KeyValuePair<Anchor, Mat4d> keyValue in matMap)
|
||||
Console.WriteLine($"{keyValue.Key.Name} : {keyValue.Value}");
|
||||
#endregion
|
||||
|
||||
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;
|
||||
return (asmb, O);
|
||||
}
|
||||
|
||||
using (DispEngine dispEngine = new DispEngine(
|
||||
src.asmb.GetAsmbDraw(src.root)))
|
||||
{
|
||||
dispEngine.SetViewToIsometricView();
|
||||
dispEngine.Snapshot("DemoTopo1.bmp", 680, 480);
|
||||
}
|
||||
Console.WriteLine("Snapshot file output.");
|
||||
/// <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;
|
||||
|
||||
DispEngine.FinishDisp();
|
||||
}
|
||||
static void Main()
|
||||
{
|
||||
SnapshotToFile(GetDemoAsmb());
|
||||
}
|
||||
}
|
||||
using (DispEngine dispEngine = new DispEngine(
|
||||
src.asmb.GetAsmbDraw(src.root)))
|
||||
{
|
||||
dispEngine.SetViewToIsometricView();
|
||||
dispEngine.Snapshot("DemoTopo1.bmp", 680, 480);
|
||||
}
|
||||
Console.WriteLine("Snapshot file output.");
|
||||
|
||||
DispEngine.FinishDisp();
|
||||
}
|
||||
static void Main()
|
||||
{
|
||||
SnapshotToFile(GetDemoAsmb());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user