Files
2025-07-14 21:08:46 +08:00

76 lines
2.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VisionFrame.Base;
namespace LogicControl
{
public class AddNodeModel : NodeModelBase
{
public AddNodeModel()
{
this.Arguments.Add(new VisionFrame.Base.Models.NodeArgModel
{
ArgName = "加数",
ArgType = "Any",
Direction = "输入"
});
this.Arguments.Add(new VisionFrame.Base.Models.NodeArgModel
{
ArgName = "累加值",
ArgType = "Any",
Direction = "输入",
ValueMode = 1
});
this.Arguments.Add(new VisionFrame.Base.Models.NodeArgModel
{
ArgName = "结果",
ArgType = "Any",
Direction = "输出"
});
}
public override void Execute(IFlowContext flowContext)
{
if (this.Arguments[0].ArgValue == null)
throw new Exception("参数未配置");
if (this.Arguments[1].ArgValue == null)
throw new Exception("参数未配置");
if (this.Arguments[2].ArgValue == null)
throw new Exception("参数未配置");
// 手动输入/下拉选择的差别处理
string org_value = this.Arguments[0].ArgValue.ToString();
if (this.Arguments[0].ValueMode == 0)
{
var am = flowContext.ArgumentList
.FirstOrDefault(a => a.ArgName == this.Arguments[0].ArgValue.ToString());
if (am != null)
org_value = (am.Value ?? 0).ToString();
}
// 累加值
string add_value = this.Arguments[1].ArgValue.ToString();
if (this.Arguments[1].ValueMode == 0)
{
var am = flowContext.ArgumentList
.FirstOrDefault(a => a.ArgName == this.Arguments[1].ArgValue.ToString());
if (am != null)
add_value = (am.Value ?? 0).ToString();
}
// 加法结果
string compare = org_value + "+" + add_value;
object result = new DataTable().Compute(compare, "");
var rm = flowContext.ArgumentList
.FirstOrDefault(a => a.ArgName == this.Arguments[2].ArgValue.ToString());
if (rm != null)
rm.Value = result;
}
}
}