diff --git a/VECTOAux/VectoAuxiliaries/Hvac/SSMCalculate.vb b/VECTOAux/VectoAuxiliaries/Hvac/SSMCalculate.vb index 2322f7a9ceb95692b6db1899191174aed42f64ec..904add607f7b1be1e8faded6f11b6fccf36901f7 100644 --- a/VECTOAux/VectoAuxiliaries/Hvac/SSMCalculate.vb +++ b/VECTOAux/VectoAuxiliaries/Hvac/SSMCalculate.vb @@ -239,7 +239,7 @@ Namespace Hvac 'Dim M89 = Run1.TotalW 'Dim M90 = Run2.TotalW - Return If(gen.EC_EnviromentalTemperature < gen.BC_TemperatureCoolingTurnsOff, 0, If(gen.AC_CompressorTypeDerived = "electrical", 0, If(Run1.TotalW > 0 AndAlso Run2.TotalW > 0, Math.Min(Run1.TotalW, Run2.TotalW), 0))) + Return If(gen.EC_EnviromentalTemperature < gen.BC_TemperatureCoolingTurnsOff, 0, If(gen.AC_CompressorTypeDerived.ToLower() = "electrical", 0, If(Run1.TotalW > 0 AndAlso Run2.TotalW > 0, Math.Min(Run1.TotalW, Run2.TotalW), 0))) End Get End Property @@ -255,7 +255,7 @@ Namespace Hvac 'Dim M89 = Run1.TotalW 'Dim M90 = Run2.TotalW - Return If(gen.EC_EnviromentalTemperature < gen.BC_TemperatureCoolingTurnsOff, 0, If(gen.AC_CompressorTypeDerived = "electrical", If(Run1.TotalW > 0 AndAlso Run2.TotalW > 0, Math.Min(Run1.TotalW, Run2.TotalW), 0), 0)) + Return If(gen.EC_EnviromentalTemperature < gen.BC_TemperatureCoolingTurnsOff, 0, If(gen.AC_CompressorTypeDerived.ToLower() = "electrical", If(Run1.TotalW > 0 AndAlso Run2.TotalW > 0, Math.Min(Run1.TotalW, Run2.TotalW), 0), 0)) End Get End Property @@ -381,9 +381,9 @@ Namespace Hvac 'Dim C40 As Double = gen.BC_MaxPossibleBenefitFromTechnologyList 'Dim C48 As string = gen.AC_CompressorType - result = If(If(gen.AC_CompressorType.ToLower = "mechanical", tl.CValueVariation, 0) > 0, _ - Math.Min(If(gen.AC_CompressorType = "mechanical", tl.CValueVariation, 0), gen.BC_MaxPossibleBenefitFromTechnologyList), _ - Math.Max(If(gen.AC_CompressorType = "mechanical", tl.CValueVariation, 0), -gen.BC_MaxPossibleBenefitFromTechnologyList)) + result = If(If(gen.AC_CompressorType.ToLower() = "mechanical", tl.CValueVariation, 0) > 0, _ + Math.Min(If(gen.AC_CompressorType.ToLower() = "mechanical", tl.CValueVariation, 0), gen.BC_MaxPossibleBenefitFromTechnologyList), _ + Math.Max(If(gen.AC_CompressorType.ToLower() = "mechanical", tl.CValueVariation, 0), -gen.BC_MaxPossibleBenefitFromTechnologyList)) Return result @@ -402,9 +402,9 @@ Namespace Hvac 'Dim C40 As Double = gen.BC_MaxPossibleBenefitFromTechnologyList 'Dim C48 As string = gen.AC_CompressorType - result = If(If(gen.AC_CompressorType.ToLower = "mechanical", 0, tl.CValueVariation) > 0, _ - Math.Min(If(gen.AC_CompressorType.ToLower = "mechanical", 0, tl.CValueVariation), gen.BC_MaxPossibleBenefitFromTechnologyList), _ - Math.Max(If(gen.AC_CompressorType.ToLower = "mechanical", 0, tl.CValueVariation), -gen.BC_MaxPossibleBenefitFromTechnologyList)) + result = If(If(gen.AC_CompressorType.ToLower() = "mechanical", 0, tl.CValueVariation) > 0, _ + Math.Min(If(gen.AC_CompressorType.ToLower() = "mechanical", 0, tl.CValueVariation), gen.BC_MaxPossibleBenefitFromTechnologyList), _ + Math.Max(If(gen.AC_CompressorType.ToLower() = "mechanical", 0, tl.CValueVariation), -gen.BC_MaxPossibleBenefitFromTechnologyList)) Return result diff --git a/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb b/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb index 6491996754d20fcd54c599b078fa70129ddc3056..034d498c72ed3222c8f6639388b7565abc8a9a4a 100644 --- a/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb +++ b/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb @@ -77,7 +77,7 @@ Namespace Hvac Me.HVACConstants = hvacConstants GenInputs = New SSMGenInputs(useTestValues) - TechList = New SSMTechList(filePath, GenInputs) + TechList = New SSMTechList(filePath, GenInputs, useTestValues) Calculate = New SSMCalculate(Me) diff --git a/VECTOAux/VectoAuxiliaries/Hvac/SSMTechList.vb b/VECTOAux/VectoAuxiliaries/Hvac/SSMTechList.vb index 2ff634cd1018282715d2c503b91a7fe007d4da25..fc1d712ad1544f733c8e6d39b8103f98e0646f6f 100644 --- a/VECTOAux/VectoAuxiliaries/Hvac/SSMTechList.vb +++ b/VECTOAux/VectoAuxiliaries/Hvac/SSMTechList.vb @@ -4,57 +4,57 @@ Namespace Hvac 'Used By SSMTOOL Class. Public Class SSMTechList - Implements ISSMTechList + Implements ISSMTechList - 'Private Fields - Private filePath As String - Private _ssmInputs As ISSMGenInputs - Private _dirty As Boolean + 'Private Fields + Private filePath As String + Private _ssmInputs As ISSMGenInputs + Private _dirty As Boolean - public property TechLines As List(Of ITechListBenefitLine) Implements ISSMTechList.TechLines - - 'Constructors - Public Sub New(filepath As String, genInputs As ISSMGenInputs) - - Me.TechLines = New List(Of ITechListBenefitLine) + Public Property TechLines As List(Of ITechListBenefitLine) Implements ISSMTechList.TechLines - Me.filePath= Filepath - - Me._ssmInputs = genInputs + 'Constructors + Public Sub New(filepath As String, genInputs As ISSMGenInputs, Optional initialiseDefaults As Boolean = False) + Me.TechLines = New List(Of ITechListBenefitLine) - - End Sub + Me.filePath = filepath + Me._ssmInputs = genInputs - Public Sub SetSSMGeneralInputs( genInputs As ISSMGenInputs) Implements ISSMTechList.SetSSMGeneralInputs + If initialiseDefaults Then SetDefaults() - _ssmInputs = genInputs + End Sub - End Sub - 'Initialisation Methods - Public Function Initialise( filePath As String ) As Boolean Implements ISSMTechList.Initialise + Public Sub SetSSMGeneralInputs(genInputs As ISSMGenInputs) Implements ISSMTechList.SetSSMGeneralInputs - Me.filePath=filePath + _ssmInputs = genInputs - Return Initialise() + End Sub - End Function - Public Function Initialise( ) As Boolean Implements ISSMTechList.Initialise + 'Initialisation Methods + Public Function Initialise(filePath As String) As Boolean Implements ISSMTechList.Initialise + + Me.filePath = filePath + + Return Initialise() + + End Function + Public Function Initialise() As Boolean Implements ISSMTechList.Initialise Dim returnStatus As Boolean = True - If File.Exists(filePath) Then + If File.Exists(filePath) Then Using sr As StreamReader = New StreamReader(filePath) 'get array og lines fron csv Dim lines() As String = sr.ReadToEnd().Split(CType(Environment.NewLine, Char()), StringSplitOptions.RemoveEmptyEntries) 'Must have at least 2 entries in map to make it usable [dont forget the header row] If (lines.Count() < 1) Then - Return False + Return False End If Dim firstline As Boolean = True @@ -94,31 +94,31 @@ Public Class SSMTechList - Dim tbline As New TechListBenefitLine(_ssmInputs, - elements(2), - elements(0), - elements(1), - elements(3), - elements(4), - elements(5), - elements(6), - elements(7), - elements(8), - elements(9), - elements(10), - elements(11), - elements(12), - elements(13), - elements(14), - elements(15), - elements(16)) + Dim tbline As New TechListBenefitLine(_ssmInputs, + elements(2), + elements(0), + elements(1), + elements(3), + elements(4), + elements(5), + elements(6), + elements(7), + elements(8), + elements(9), + elements(10), + elements(11), + elements(12), + elements(13), + elements(14), + elements(15), + elements(16)) TechLines.Add(tbline) Catch ex As Exception - 'Indicate problems - returnStatus = False + 'Indicate problems + returnStatus = False End Try @@ -133,228 +133,400 @@ Public Class SSMTechList End Using Else - returnStatus = False + returnStatus = False End If - Return returnStatus + Return returnStatus -End Function + End Function - 'Public Properties - Outputs Of Class - Public ReadOnly Property CValueVariation As Double Implements ISSMTechList.CValueVariation + 'Public Properties - Outputs Of Class + Public ReadOnly Property CValueVariation As Double Implements ISSMTechList.CValueVariation Get - Dim a,b As double + Dim a As Double + + a = TechLines.Where(Function(x) x.Units.ToLower = "fraction").Sum(Function(s) s.C) + + Return a - a= TechLines.Where( Function(x) x.Units.ToLower="fraction").Sum( Function(s) s.C) - b= TechLines.Where( Function(x) x.Units.ToLower="kw").Sum( Function(s) s.C) - - Return a - End Get End Property - Public ReadOnly Property CValueVariationKW As Double Implements ISSMTechList.CValueVariationKW + Public ReadOnly Property CValueVariationKW As Double Implements ISSMTechList.CValueVariationKW Get - Dim a As double + Dim a As Double - a= TechLines.Where( Function(x) x.Units.ToLower="kw").Sum( Function(s) s.C) + a = TechLines.Where(Function(x) x.Units.ToLower = "kw").Sum(Function(s) s.C) - Return a + Return a End Get End Property - Public ReadOnly Property HValueVariation As Double Implements ISSMTechList.HValueVariation + Public ReadOnly Property HValueVariation As Double Implements ISSMTechList.HValueVariation Get - 'Dim a,b As double - Return TechLines.Where( Function(x) x.Units="fraction").Sum( Function(s) s.H) - ' a = - ' b = HValueVariationKW - ' Return a-b + 'Dim a,b As double + Return TechLines.Where(Function(x) x.Units = "fraction").Sum(Function(s) s.H) + ' a = + ' b = HValueVariationKW + ' Return a-b End Get End Property - Public ReadOnly Property HValueVariationKW As Double Implements ISSMTechList.HValueVariationKW + Public ReadOnly Property HValueVariationKW As Double Implements ISSMTechList.HValueVariationKW Get - Return TechLines.Where( Function(x) x.Units.ToLower="kw").Sum( Function(s) s.H) + Return TechLines.Where(Function(x) x.Units.ToLower = "kw").Sum(Function(s) s.H) End Get End Property - Public ReadOnly Property VCValueVariation As Double Implements ISSMTechList.VCValueVariation + Public ReadOnly Property VCValueVariation As Double Implements ISSMTechList.VCValueVariation Get - Return TechLines.Where( Function(x) x.Units.ToLower="fraction").Sum( Function(s) s.VC) '- VCValueVariationKW + Return TechLines.Where(Function(x) x.Units.ToLower = "fraction").Sum(Function(s) s.VC) '- VCValueVariationKW End Get End Property - Public ReadOnly Property VCValueVariationKW As Double Implements ISSMTechList.VCValueVariationKW + Public ReadOnly Property VCValueVariationKW As Double Implements ISSMTechList.VCValueVariationKW Get - Return TechLines.Where( Function(x) x.Units.ToLower="kw").Sum( Function(s) s.VC) + Return TechLines.Where(Function(x) x.Units.ToLower = "kw").Sum(Function(s) s.VC) End Get End Property - Public ReadOnly Property VHValueVariation As Double Implements ISSMTechList.VHValueVariation + Public ReadOnly Property VHValueVariation As Double Implements ISSMTechList.VHValueVariation Get - 'Dim a,b As double + 'Dim a,b As double - Return TechLines.Where( Function(x) x.Units.ToLower="fraction").Sum( Function(s) s.VH) - 'a=TechLines.Where( Function(x) x.Units="fraction").Sum( Function(s) s.VH) - 'b=VHValueVariationKW - ' Return a-b + Return TechLines.Where(Function(x) x.Units.ToLower = "fraction").Sum(Function(s) s.VH) + 'a=TechLines.Where( Function(x) x.Units="fraction").Sum( Function(s) s.VH) + 'b=VHValueVariationKW + ' Return a-b End Get End Property - Public ReadOnly Property VHValueVariationKW As Double Implements ISSMTechList.VHValueVariationKW + Public ReadOnly Property VHValueVariationKW As Double Implements ISSMTechList.VHValueVariationKW Get - Return TechLines.Where( Function(x) x.Units.ToLower="kw").Sum( Function(s) s.VH) + Return TechLines.Where(Function(x) x.Units.ToLower = "kw").Sum(Function(s) s.VH) End Get End Property - Public ReadOnly Property VVValueVariation As Double Implements ISSMTechList.VVValueVariation + Public ReadOnly Property VVValueVariation As Double Implements ISSMTechList.VVValueVariation Get - Return TechLines.Where( Function(x) x.Units.ToLower="fraction").Sum( Function(s) s.VV) + Return TechLines.Where(Function(x) x.Units.ToLower = "fraction").Sum(Function(s) s.VV) End Get End Property - Public ReadOnly Property VVValueVariationKW As Double Implements ISSMTechList.VVValueVariationKW + Public ReadOnly Property VVValueVariationKW As Double Implements ISSMTechList.VVValueVariationKW Get - Return TechLines.Where( Function(x) x.Units.ToLower="kw").Sum( Function(s) s.VV)' - VVValueVariationKW + Return TechLines.Where(Function(x) x.Units.ToLower = "kw").Sum(Function(s) s.VV) ' - VVValueVariationKW End Get End Property + 'Member Management + Public Function Add(item As ITechListBenefitLine, ByRef feedback As String) As Boolean Implements ISSMTechList.Add - 'Member Management - Public Function Add(item As ITechListBenefitLine, ByRef feedback As String) As Boolean Implements ISSMTechList.Add + Dim initialCount As Integer = TechLines.Count - Dim initialCount As Integer = TechLines.Count + If TechLines.Where(Function(w) w.Category = item.Category AndAlso w.BenefitName = item.BenefitName).count() > 0 Then + 'Failure + feedback = "Item already exists." + Return False + End If - If TechLines.Where( Function(w) w.Category=item.Category AndAlso w.BenefitName= item.BenefitName).count()>0 then - 'Failure - feedback="Item already exists." - Return false - End If - - Try + Try - TechLines.Add( item ) + TechLines.Add(item) - If TechLines.Count = initialCount + 1 then + If TechLines.Count = initialCount + 1 Then - 'Success - feedback="OK" - _dirty=true - Return true + 'Success + feedback = "OK" + _dirty = True + Return True - Else - - 'Failure - feedback="The system was unable to add the new tech benefit list item." - Return false + Else + + 'Failure + feedback = "The system was unable to add the new tech benefit list item." + Return False - End If + End If - Catch ex As Exception + Catch ex As Exception - feedback="The system threw an exception and was unable to add the new tech benefit list item." - Return false + feedback = "The system threw an exception and was unable to add the new tech benefit list item." + Return False - End Try + End Try End Function - Public Sub Clear() Implements ISSMTechList.Clear - - If TechLines.Count>0 then _dirty=true + Public Sub Clear() Implements ISSMTechList.Clear + + If TechLines.Count > 0 Then _dirty = True + + TechLines.Clear() + - TechLines.Clear() + End Sub + Public Function Delete(item As ITechListBenefitLine, ByRef feedback As String) As Boolean Implements ISSMTechList.Delete + Dim currentCount As Integer = TechLines.Count - End Sub - Public Function Delete(item As ITechListBenefitLine, ByRef feedback As String) As Boolean Implements ISSMTechList.Delete + If (TechLines.Where(Function(c) c.Category = item.Category AndAlso c.BenefitName = item.BenefitName).Count = 1) Then - Dim currentCount As Integer = TechLines.Count + Try + TechLines.RemoveAt(TechLines.FindIndex(Function(c) c.Category = item.Category AndAlso c.BenefitName = item.BenefitName)) - If( TechLines.Where( Function(c) c.Category= item.Category AndAlso c.BenefitName= item.BenefitName).Count=1) then + If TechLines.Count = currentCount - 1 Then + 'This succeeded + _dirty = True + Return True + Else + 'No Exception, but this failed for some reason. + feedback = "The system was unable to remove the item from the list." + Return False - try - TechLines.RemoveAt( TechLines.FindIndex( Function(c) c.Category= item.Category AndAlso c.BenefitName= item.BenefitName)) - - If TechLines.Count = currentCount-1 then - 'This succeeded - _dirty=true - return True - Else - 'No Exception, but this failed for some reason. - feedback="The system was unable to remove the item from the list." - Return false + End If + + Catch ex As Exception - End If + feedback = "An exception occured, the removal failed." + Return False - Catch ex As Exception - - feedback="An exception occured, the removal failed." - Return false + End Try - end try + Else - else - - feedback="the item was not found in the list." - Return false + feedback = "the item was not found in the list." + Return False - End If + End If End Function - Public Function Modify( originalItem As ITechListBenefitLine, newItem As ITechListBenefitLine, ByRef feedback As String) As Boolean Implements ISSMTechList.Modify + Public Function Modify(originalItem As ITechListBenefitLine, newItem As ITechListBenefitLine, ByRef feedback As String) As Boolean Implements ISSMTechList.Modify - Dim fi As TechListBenefitLine = TechLines.Find( Function(f) (f.Category= originalitem.Category) AndAlso f.BenefitName= originalitem.BenefitName ) - Dim originalUnits As String =fi.Units + Dim fi As TechListBenefitLine = TechLines.Find(Function(f) (f.Category = originalitem.Category) AndAlso f.BenefitName = originalitem.BenefitName) + Dim originalUnits As String = fi.Units - If( Not fi is Nothing ) then + If (Not fi Is Nothing) Then - try + Try - fi.CloneFrom( newItem ) + fi.CloneFrom(newItem) - 'The lines below are to assist in testing. The KW units are being excluded, but for benchmarking against the spreadsheet model - 'Two KW entries are left in. There is no provision for adding KW units in so we check if the original entry was KW and - 'force it back to KW if it was already so. There shoud be no need to remove this as newly created lists will not match this - 'Phenomenon. - If( originalUnits.ToLower= "kw") then - fi.Units=originalUnits - newItem.Units=originalUnits - End If - - If newItem = fi then - 'This succeeded - _dirty=true - return True - Else - 'No Exception, but this failed for some reason. - feedback="The system was unable to remove the item from the list." - Return false + 'The lines below are to assist in testing. The KW units are being excluded, but for benchmarking against the spreadsheet model + 'Two KW entries are left in. There is no provision for adding KW units in so we check if the original entry was KW and + 'force it back to KW if it was already so. There shoud be no need to remove this as newly created lists will not match this + 'Phenomenon. + If (originalUnits.ToLower = "kw") Then + fi.Units = originalUnits + newItem.Units = originalUnits + End If - End If + If newItem = fi Then + 'This succeeded + _dirty = True + Return True + Else + 'No Exception, but this failed for some reason. + feedback = "The system was unable to remove the item from the list." + Return False - Catch ex As Exception - - feedback="An exception occured, the update failed." - Return false + End If - end try + Catch ex As Exception + feedback = "An exception occured, the update failed." + Return False - else - - feedback="the item was not found so cannot be modified." - Return false + End Try - End If + Else - End Function + feedback = "the item was not found so cannot be modified." + Return False + End If -End Class + End Function +#Region "Default Values" + + Private Sub SetDefaults() + + Dim techLine1 As ITechListBenefitLine = New TechListBenefitLine() + With techLine1 + .Category = "Cooling" + .BenefitName = "Separate air distribution ducts" + .LowFloorH = 0 + .LowFloorC = 0.04 + .LowFloorV = 0 + .SemiLowFloorH = 0 + .SemiLowFloorC = 0.04 + .SemiLowFloorV = 0 + .RaisedFloorH = 0 + .RaisedFloorC = 0.04 + .RaisedFloorV = 0 + .ActiveVH = 0 + .ActiveVV = 0 + .ActiveVC = 0 + .OnVehicle = False + .Units = "fraction" + End With + + Dim techLine2 As ITechListBenefitLine = New TechListBenefitLine() + With techLine2 + .Category = "Heating" + .BenefitName = "Adjustable auxiliary heater" + .LowFloorH = 0.02 + .LowFloorC = 0 + .LowFloorV = 0 + .SemiLowFloorH = 0.02 + .SemiLowFloorC = 0 + .SemiLowFloorV = 0 + .RaisedFloorH = 0.02 + .RaisedFloorC = 0 + .RaisedFloorV = 0 + .ActiveVH = 0 + .ActiveVV = 0 + .ActiveVC = 0 + .OnVehicle = False + .Units = "fraction" + End With + + Dim techLine3 As ITechListBenefitLine = New TechListBenefitLine() + With techLine3 + .Category = "Heating" + .BenefitName = "Adjustable coolant thermostat" + .LowFloorH = 0.02 + .LowFloorC = 0 + .LowFloorV = 0 + .SemiLowFloorH = 0.02 + .SemiLowFloorC = 0 + .SemiLowFloorV = 0 + .RaisedFloorH = 0.02 + .RaisedFloorC = 0 + .RaisedFloorV = 0 + .ActiveVH = 0 + .ActiveVV = 0 + .ActiveVC = 0 + .OnVehicle = False + .Units = "fraction" + End With + + Dim techLine4 As ITechListBenefitLine = New TechListBenefitLine() + With techLine4 + .Category = "Heating" + .BenefitName = "Engine waste gas heat exchanger" + .LowFloorH = 0.04 + .LowFloorC = 0 + .LowFloorV = 0 + .SemiLowFloorH = 0 + .SemiLowFloorC = 0 + .SemiLowFloorV = 0 + .RaisedFloorH = 0 + .RaisedFloorC = 0 + .RaisedFloorV = 0 + .ActiveVH = 0 + .ActiveVV = 0 + .ActiveVC = 0 + .OnVehicle = False + .Units = "fraction" + End With + + Dim techLine5 As ITechListBenefitLine = New TechListBenefitLine() + With techLine5 + .Category = "Heating" + .BenefitName = "Heat pump systems" + .LowFloorH = 0.06 + .LowFloorC = 0 + .LowFloorV = 0 + .SemiLowFloorH = 0.04 + .SemiLowFloorC = 0 + .SemiLowFloorV = 0 + .RaisedFloorH = 0.04 + .RaisedFloorC = 0 + .RaisedFloorV = 0 + .ActiveVH = 0 + .ActiveVV = 0 + .ActiveVC = 0 + .OnVehicle = False + .Units = "fraction" + End With + + Dim techLine6 As ITechListBenefitLine = New TechListBenefitLine() + With techLine6 + .Category = "Insulation" + .BenefitName = "Double-glazing" + .LowFloorH = 0.04 + .LowFloorC = 0.04 + .LowFloorV = 0 + .SemiLowFloorH = 0.04 + .SemiLowFloorC = 0.04 + .SemiLowFloorV = 0 + .RaisedFloorH = 0.04 + .RaisedFloorC = 0.04 + .RaisedFloorV = 0 + .ActiveVH = 0 + .ActiveVV = 0 + .ActiveVC = 0 + .OnVehicle = False + .Units = "fraction" + End With + + Dim techLine7 As ITechListBenefitLine = New TechListBenefitLine() + With techLine7 + .Category = "Insulation" + .BenefitName = "Tinted windows" + .LowFloorH = 0 + .LowFloorC = 0 + .LowFloorV = 0 + .SemiLowFloorH = 0 + .SemiLowFloorC = 0 + .SemiLowFloorV = 0 + .RaisedFloorH = 0 + .RaisedFloorC = 0 + .RaisedFloorV = 0 + .ActiveVH = 0 + .ActiveVV = 0 + .ActiveVC = 0 + .OnVehicle = False + .Units = "fraction" + End With + + Dim techLine8 As ITechListBenefitLine = New TechListBenefitLine() + With techLine8 + .Category = "Ventilation" + .BenefitName = "Fan control strategy (serial/parallel)" + .LowFloorH = 0 + .LowFloorC = 0 + .LowFloorV = 0 + .SemiLowFloorH = 0 + .SemiLowFloorC = 0 + .SemiLowFloorV = 0 + .RaisedFloorH = 0 + .RaisedFloorC = 0 + .RaisedFloorV = 0 + .ActiveVH = 0.02 + .ActiveVV = 0.02 + .ActiveVC = 0.02 + .OnVehicle = False + .Units = "fraction" + End With + + Dim feedback As String = String.Empty + Add(techLine1, feedback) + Add(techLine2, feedback) + Add(techLine3, feedback) + Add(techLine4, feedback) + Add(techLine5, feedback) + Add(techLine6, feedback) + Add(techLine7, feedback) + Add(techLine8, feedback) + + End Sub + +#End Region +End Class End Namespace