121 lines
5.8 KiB
C#
121 lines
5.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.ComponentModel;
|
|
|
|
namespace DTS.Slice.PedestrianAndHeadReports
|
|
{
|
|
public class UprLegReport : ReportBase
|
|
{
|
|
public UprLegReport(PedestrianAndHeadTest parent) : base(parent) { }
|
|
|
|
protected override void _testParent_PropertyChanged(object sender, PropertyChangedEventArgs e)
|
|
{
|
|
base._testParent_PropertyChanged(sender, e);
|
|
switch (e.PropertyName)
|
|
{
|
|
case "Graph-x-UPRLEG_Force-x-ChannelUnit":
|
|
//make sure all channels are in the right unit
|
|
break;
|
|
}
|
|
}
|
|
public const string UPR_MOMENT_ID = "UPR_Moment";
|
|
public const string MID_MOMENT_ID = "MID_Moment";
|
|
public const string LWR_MOMENT_ID = "LWR_Moment";
|
|
public const string UPR_TOTALFORCE_ID = "UPR_ForceComined";
|
|
public const string UPR_FORCE_ID = "UPR_Force";
|
|
public const string LWR_FORCE_ID = "LWR_Force";
|
|
|
|
|
|
protected override void InitializeGraphs()
|
|
{
|
|
base.InitializeGraphs();
|
|
AddGraph(new ReportGraph(KnownGraphs.UPRLEG_Force.ToString(), "Force", new MeasurementUnit[] {
|
|
MeasurementUnitList.GetMeasurementUnit("N"), MeasurementUnitList.GetMeasurementUnit("kN")
|
|
}, new GraphChannel[] {
|
|
new VectorAddition(UPR_TOTALFORCE_ID, "Combined Force", "合成荷重"),
|
|
new GraphChannel(UPR_FORCE_ID, "UPR Force", "UPRF"),
|
|
new GraphChannel(LWR_FORCE_ID, "LWR Force", "LWRF")
|
|
},Properties.Settings.Default.PROTECTIONREPORT_UPRFORCEThreshold));
|
|
AddGraph(new ReportGraph(KnownGraphs.UPRLeg_Moment.ToString(), "Moment", new MeasurementUnit[]{
|
|
MeasurementUnitList.GetMeasurementUnit("Nm")
|
|
}, new GraphChannel[]{
|
|
new GraphChannel(UPR_MOMENT_ID, "UPR", "UPRM"),
|
|
new GraphChannel(MID_MOMENT_ID, "MID", "MIDM"),
|
|
new GraphChannel(LWR_MOMENT_ID, "LWR", "LWRM")
|
|
},Properties.Settings.Default.PROTECTIONREPORT_UPRMOMENTThreshold));
|
|
}
|
|
|
|
protected override void InitializeProperties()
|
|
{
|
|
base.InitializeProperties();
|
|
SetPossibleValues(PedestrianAndHeadTest.Fields.ImpactorType.ToString(), new string[] { "UPR LEG" });
|
|
SetValue(PedestrianAndHeadTest.Fields.FrequencyClass.ToString(), (new SensorDB.FilterClass(DTS.SensorDB.FilterClass.FilterClassType.CFC180)).ToString());
|
|
}
|
|
public override ReportTypes GetReportType()
|
|
{
|
|
return ReportTypes.UPRLeg;
|
|
}
|
|
|
|
private volatile bool _drawingGraph = false;
|
|
public override void DrawGraph(KnownGraphs graph, C1.Win.C1Chart.C1Chart chart)
|
|
{
|
|
switch (graph)
|
|
{
|
|
case KnownGraphs.UPRLEG_Force:
|
|
{
|
|
if (_drawingGraph) { return; }
|
|
try
|
|
{
|
|
_drawingGraph = true;
|
|
var channelX = GetChannel(KnownGraphs.UPRLEG_Force, UPR_FORCE_ID);
|
|
var channelY = GetChannel(KnownGraphs.UPRLEG_Force, LWR_FORCE_ID);
|
|
|
|
if (null == channelX || null == channelY || null == channelX.Channel || null == channelY.Channel) { return; }
|
|
try
|
|
{
|
|
string euX = (channelX.Channel as DTS.DAS.Concepts.DAS.Channel.IEngineeringUnitAware).EngineeringUnits;
|
|
string euY = (channelY.Channel as DTS.DAS.Concepts.DAS.Channel.IEngineeringUnitAware).EngineeringUnits;
|
|
|
|
var x = new DTS.Calculations.ChannelData(euX);
|
|
x.FilteredEU = channelX.Channel.DataEu.ToArray();
|
|
|
|
var y = new DTS.Calculations.ChannelData(euY);
|
|
y.FilteredEU = channelY.Channel.DataEu.ToArray();
|
|
|
|
|
|
|
|
List<double> yValues = new List<double>(y.FilteredEU.Length);
|
|
for (int i = 0; i < x.FilteredEU.Length && i < y.FilteredEU.Length; i++)
|
|
{
|
|
yValues.Add(x.FilteredEU[i] + y.FilteredEU[i]);
|
|
}
|
|
|
|
DTS.Slice.Control.Event.Module.Channel.AdditiveVectorCalculatedChannel cc = new DTS.Slice.Control.Event.Module.Channel.AdditiveVectorCalculatedChannel(
|
|
"TOTAL FORCE", DTS.Slice.Control.Event.Module.Channel.CalculatedChannel.XUnits.msec, euX, new double[0], yValues.ToArray(), DTS.Slice.Control.Event.Module.Channel.CalculatedChannel.Operation.Resultant,
|
|
0, channelX.Channel.ParentModule);
|
|
|
|
ReviewTestChannel rtc = new ReviewTestChannel(cc, channelX.ParentTest);
|
|
var g = GetGraph(ReportBase.KnownGraphs.UPRLEG_Force.ToString());
|
|
|
|
g.SetReviewTestChannel(UPR_TOTALFORCE_ID, rtc);
|
|
}
|
|
catch (System.Exception) { }
|
|
base.DrawGraph(graph, chart);
|
|
}
|
|
catch (System.Exception) { }
|
|
finally
|
|
{
|
|
_drawingGraph = false;
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
base.DrawGraph(graph, chart);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|