using HalconDotNet;
|
using LB_SmartVisionCommon;
|
using LB_VisionProcesses.Processes;
|
using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using System.Xml.Linq;
|
|
namespace LB_VisionProcesses.Alogrithms
|
{
|
public class CreateFixtureTool : TAlgorithm
|
{
|
public CreateFixtureTool()
|
{
|
strProcessClass = "LB_VisionProcesses.Alogrithms.CreateFixtureTool";
|
strProcessName = "创建固定跟随";
|
|
Params.Inputs.Add("X", 0.0);
|
Params.Inputs.Add("Y", 0.0);
|
Params.Inputs.Add("Phi", 0.0);
|
Params.Inputs.Add("Name", "Fixture1");
|
}
|
|
public override bool Run()
|
{
|
try
|
{
|
InitRunParams();
|
|
Record = new MsgRecord();
|
|
double X = 0, Y = 0, Phi = 0;
|
string Name = string.Empty;
|
|
if (Params.Inputs["X"] is List<double> && (Params.Inputs["X"] as List<double>).Count > 0)
|
{
|
X = (Params.Inputs["X"] as List<double>)[0];
|
Y = (Params.Inputs["Y"] as List<double>)[0];
|
Phi = (Params.Inputs["Phi"] as List<double>)[0];
|
Name = (string)Params.Inputs["Name"];
|
}
|
else if (Params.Inputs.ContainsKey("X") && Params.Inputs["X"] is double)
|
{
|
X = (double)Params.Inputs["X"];
|
Y = (double)Params.Inputs["Y"];
|
Phi = (double)Params.Inputs["Phi"];
|
Name = (string)Params.Inputs["Name"];
|
}
|
|
Params.Fixture = new Fixture(X, Y, Phi, Name);
|
if (!dicFixtures.ContainsKey(Name))
|
{
|
dicFixtures.TryAdd(Name, Params.Fixture);
|
}
|
else if (dicFixtures.ContainsKey(Name))
|
{
|
dicFixtures[Name] = Params.Fixture;
|
}
|
|
if (Params.Fixture == null)
|
{
|
Result = false;
|
|
Msg = $"生成[{Name}]错误({X},{Y},{Phi})";
|
AsyncLogHelper.Error(Msg);
|
}
|
else
|
{
|
Result = true;
|
((MsgRecord)Record).AddRecord("·", Y, X);
|
}
|
|
return Result;
|
}
|
catch
|
{
|
OutputImage = null;
|
Result = false;
|
Msg = string.Format("运行出现异常");
|
AsyncLogHelper.Error(Msg);
|
return false;
|
}
|
finally
|
{
|
if (!Result)
|
{
|
OutputImage = null;
|
}
|
bCompleted = true;
|
}
|
}
|
|
public override bool Save(string filePath = "")
|
{
|
return base.Save(filePath);
|
}
|
|
public override bool Load(string fullPath = "")
|
{
|
if (base.Load(fullPath))
|
{
|
double X = 0, Y = 0, Phi = 0;
|
string Name = string.Empty;
|
|
if (Params.Inputs["X"] is List<double> && (Params.Inputs["X"] as List<double>).Count > 0)
|
{
|
X = (Params.Inputs["X"] as List<double>)[0];
|
Y = (Params.Inputs["Y"] as List<double>)[0];
|
Phi = (Params.Inputs["Phi"] as List<double>)[0];
|
Name = (string)Params.Inputs["Name"];
|
}
|
else if (Params.Inputs.ContainsKey("X") && Params.Inputs["X"] is double)
|
{
|
X = (double)Params.Inputs["X"];
|
Y = (double)Params.Inputs["Y"];
|
Phi = (double)Params.Inputs["Phi"];
|
Name = (string)Params.Inputs["Name"];
|
}
|
|
Params.Fixture = new Fixture(X, Y, Phi, Name);
|
if (!dicFixtures.ContainsKey(Name))
|
{
|
dicFixtures.TryAdd(Name, Params.Fixture);
|
}
|
else if (dicFixtures.ContainsKey(Name))
|
{
|
dicFixtures[Name] = Params.Fixture;
|
}
|
|
return true;
|
}
|
else
|
{
|
return false;
|
}
|
}
|
}
|
}
|