diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineType.cs new file mode 100644 index 0000000000000000000000000000000000000000..71770a0b238750f0bc6ac76c441bc06d050bc8db --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineType.cs @@ -0,0 +1,56 @@ +using System.Collections.Generic; +using System.Xml.Linq; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; + + +namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1.Components +{ + public class VIFElectricMachineType : VIFElectricMachineGENType + { + public VIFElectricMachineType(IVIFReportFactory vifFactory) : base(vifFactory) { } + + #region Implementation of IXmlTypeWriter + + public override XElement GetElement(IDeclarationInputDataProvider inputData) + { + var electricMachineEntries = inputData.JobInputData.Vehicle.Components.ElectricMachines.Entries; + if (electricMachineEntries == null || electricMachineEntries.Count == 0) + return null; + + foreach (var electricMachine in electricMachineEntries) { + if (electricMachine.Position != PowertrainPosition.GEN) + return GetElectricMachineType(electricMachine); + } + + return null; + } + + #endregion + + private XElement GetElectricMachineType(ElectricMachineEntry<IElectricMotorDeclarationInputData> electricMachineData) + { + return new XElement(_vif + XMLNames.ElectricMachineSystem, + new XElement(_vif + XMLNames.ElectricMachine_Count, electricMachineData.Count), + _vifFactory.GetElectricMachineSystemType().GetElement(electricMachineData.ElectricMachine), + Get25GearRatio(electricMachineData.RatioPerGear), + GetADC(electricMachineData.ADC), + new XElement(_vif + XMLNames.ElectricMachine_PowertrainPosition, electricMachineData.Position.ToXmlFormat())); + } + + private XElement Get25GearRatio(double[] gearRatios) + { + if (gearRatios == null) + return null; + + var results = new List<XElement>(); + for (int i = 0; i < gearRatios.Length; i++) { + results.Add(new XElement(_vif + XMLNames.Gear_Ratio, new XAttribute(XMLNames.ElectricMachine_P2_5GearRatios_Gear_Attr, i + 1), + gearRatios[i].ToXMLFormat(3))); + } + + return new XElement(_vif + XMLNames.ElectricMachine_P2_5GearRatios, results); + } + } +} diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs index 6d4879cf5f62289c6560b48ec92e1b106471fc76..628511996532dd20f80c8fb2b4e951b602c9de62 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs @@ -44,6 +44,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF IXmlElectricMachineSystemType GetElectricMachineSystemMeasuredType(); IXmlElectricMachineSystemType GetElectricMachineSystemIHPCMeasuredType(); IXmlElectricMachineSystemType GetElectricMachineSystemStandardValueType(); + IXmlTypeWriter GetElectricMachineType(); IXmlTypeWriter GetElectricMotorTorqueLimitsType(); IXmlTypeWriter GetEngineType(); IXmlTypeWriter GetTorqueConvertType(); diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs index a7ef0afa3b8e32e0f68f5416747cb806c5bef8e9..e936aaf398693fdc4498c9b8fc2f133c033753a2 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs @@ -105,6 +105,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF Bind<IXmlElectricMachineSystemType>().To<XmlElectricMachineSystemMeasuredType>().When(AccessedViaVIFFactory) .NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetElectricMachineSystemMeasuredType()); + Bind<IXmlTypeWriter>().To<VIFElectricMachineType>().When(AccessedViaVIFFactory) + .NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetElectricMachineType()); Bind<IXmlElectricMachineSystemType>().To<XmlElectricMachineSystemIHPCMeasuredType>().When(AccessedViaVIFFactory) .NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetElectricMachineSystemIHPCMeasuredType());