358 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			VB.net
		
	
	
	
	
	
			
		
		
	
	
			358 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			VB.net
		
	
	
	
	
	
| ''' <summary>
 | |
| ''' 전체존의 사용면적을 계산및 확인(냉,난,조,급,환)
 | |
| ''' </summary>
 | |
| ''' <remarks>전체존의 사용면적을 계산및 확인(냉,난,조,급,환)</remarks>
 | |
| Public Class C사용면적OD
 | |
| 
 | |
|     Dim T As String = "사용면적"
 | |
| 
 | |
| 
 | |
| 
 | |
|     ''' <summary>
 | |
|     ''' 난방
 | |
|     ''' </summary>
 | |
|     ''' <remarks>난방</remarks>
 | |
|     Property H() As Decimal
 | |
|         Get
 | |
|             If DSETR1.사용면적.Rows.Count = 0 Then
 | |
|                 Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
 | |
|                 Return 0
 | |
|             Else
 | |
|                 Return TOSG(T, DSETR1.사용면적(0)("H"))
 | |
|             End If
 | |
|         End Get
 | |
|         Set(ByVal value As Decimal)
 | |
|             If DSETR1.사용면적.Rows.Count = 0 Then
 | |
|                 Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
 | |
|             Else
 | |
|                 DSETR1.사용면적(0)("H") = value
 | |
|             End If
 | |
|         End Set
 | |
|     End Property
 | |
|     ''' <summary>
 | |
|     ''' 냉방
 | |
|     ''' </summary>
 | |
|     ''' <remarks>냉방</remarks>
 | |
|     Property C() As Decimal
 | |
|         Get
 | |
|             If DSETR1.사용면적.Rows.Count = 0 Then
 | |
|                 Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
 | |
|                 Return 0
 | |
|             Else
 | |
|                 Return TOSG(T, DSETR1.사용면적(0)("C"))
 | |
|             End If
 | |
|         End Get
 | |
|         Set(ByVal value As Decimal)
 | |
|             If DSETR1.사용면적.Rows.Count = 0 Then
 | |
|                 Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
 | |
|             Else
 | |
|                 DSETR1.사용면적(0)("C") = value
 | |
|             End If
 | |
|         End Set
 | |
|     End Property
 | |
|     ''' <summary>
 | |
|     ''' 조명
 | |
|     ''' </summary>
 | |
|     ''' <remarks>조명</remarks>
 | |
|     Property L() As Decimal
 | |
|         Get
 | |
|             If DSETR1.사용면적.Rows.Count = 0 Then
 | |
|                 Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
 | |
|                 Return 0
 | |
|             Else
 | |
|                 Return TOSG(T, DSETR1.사용면적(0)("L"))
 | |
|             End If
 | |
|         End Get
 | |
|         Set(ByVal value As Decimal)
 | |
|             If DSETR1.사용면적.Rows.Count = 0 Then
 | |
|                 Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
 | |
|             Else
 | |
|                 DSETR1.사용면적(0)("L") = value
 | |
|             End If
 | |
|         End Set
 | |
|     End Property
 | |
|     ''' <summary>
 | |
|     ''' 급탕
 | |
|     ''' </summary>
 | |
|     ''' <remarks>급탕</remarks>
 | |
|     Property W() As Decimal
 | |
|         Get
 | |
|             If DSETR1.사용면적.Rows.Count = 0 Then
 | |
|                 Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
 | |
|                 Return 0
 | |
|             Else
 | |
|                 Return TOSG(T, DSETR1.사용면적(0)("W"))
 | |
|             End If
 | |
|         End Get
 | |
|         Set(ByVal value As Decimal)
 | |
|             If DSETR1.사용면적.Rows.Count = 0 Then
 | |
|                 Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
 | |
|             Else
 | |
|                 DSETR1.사용면적(0)("W") = value
 | |
|             End If
 | |
|         End Set
 | |
|     End Property
 | |
|     ''' <summary>
 | |
|     ''' 환기
 | |
|     ''' </summary>
 | |
|     ''' <remarks>환기</remarks>
 | |
|     Property V() As Decimal
 | |
|         Get
 | |
|             If DSETR1.사용면적.Rows.Count = 0 Then
 | |
|                 Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
 | |
|                 Return 0
 | |
|             Else
 | |
|                 Return TOSG(T, DSETR1.사용면적(0)("V"))
 | |
|             End If
 | |
|         End Get
 | |
|         Set(ByVal value As Decimal)
 | |
|             If DSETR1.사용면적.Rows.Count = 0 Then
 | |
|                 Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
 | |
|             Else
 | |
|                 DSETR1.사용면적(0)("V") = value
 | |
|             End If
 | |
|         End Set
 | |
|     End Property
 | |
| 
 | |
| 
 | |
|     ''' <summary>
 | |
|     ''' 난방_WF
 | |
|     ''' </summary>
 | |
|     ''' <remarks>난방</remarks>
 | |
|     Property H_WF() As Decimal
 | |
|         Get
 | |
|             If DSETR1.사용면적.Rows.Count = 0 Then
 | |
|                 Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
 | |
|                 Return 0
 | |
|             Else
 | |
|                 Return TOSG(T, DSETR1.사용면적(0)("H_WF"))
 | |
|             End If
 | |
|         End Get
 | |
|         Set(ByVal value As Decimal)
 | |
|             If DSETR1.사용면적.Rows.Count = 0 Then
 | |
|                 Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
 | |
|             Else
 | |
|                 DSETR1.사용면적(0)("H_WF") = value
 | |
|             End If
 | |
|         End Set
 | |
|     End Property
 | |
|     ''' <summary>
 | |
|     ''' 냉방_WF
 | |
|     ''' </summary>
 | |
|     ''' <remarks>냉방</remarks>
 | |
|     Property C_WF() As Decimal
 | |
|         Get
 | |
|             If DSETR1.사용면적.Rows.Count = 0 Then
 | |
|                 Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
 | |
|                 Return 0
 | |
|             Else
 | |
|                 Return TOSG(T, DSETR1.사용면적(0)("C_WF"))
 | |
|             End If
 | |
|         End Get
 | |
|         Set(ByVal value As Decimal)
 | |
|             If DSETR1.사용면적.Rows.Count = 0 Then
 | |
|                 Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
 | |
|             Else
 | |
|                 DSETR1.사용면적(0)("C_WF") = value
 | |
|             End If
 | |
|         End Set
 | |
|     End Property
 | |
|     ''' <summary>
 | |
|     ''' 조명_WF
 | |
|     ''' </summary>
 | |
|     ''' <remarks>조명</remarks>
 | |
|     Property L_WF() As Decimal
 | |
|         Get
 | |
|             If DSETR1.사용면적.Rows.Count = 0 Then
 | |
|                 Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
 | |
|                 Return 0
 | |
|             Else
 | |
|                 Return TOSG(T, DSETR1.사용면적(0)("L_WF"))
 | |
|             End If
 | |
|         End Get
 | |
|         Set(ByVal value As Decimal)
 | |
|             If DSETR1.사용면적.Rows.Count = 0 Then
 | |
|                 Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
 | |
|             Else
 | |
|                 DSETR1.사용면적(0)("L_WF") = value
 | |
|             End If
 | |
|         End Set
 | |
|     End Property
 | |
|     ''' <summary>
 | |
|     ''' 급탕_WF
 | |
|     ''' </summary>
 | |
|     ''' <remarks>급탕</remarks>
 | |
|     Property W_WF() As Decimal
 | |
|         Get
 | |
|             If DSETR1.사용면적.Rows.Count = 0 Then
 | |
|                 Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
 | |
|                 Return 0
 | |
|             Else
 | |
|                 Return TOSG(T, DSETR1.사용면적(0)("W_WF"))
 | |
|             End If
 | |
|         End Get
 | |
|         Set(ByVal value As Decimal)
 | |
|             If DSETR1.사용면적.Rows.Count = 0 Then
 | |
|                 Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
 | |
|             Else
 | |
|                 DSETR1.사용면적(0)("W_WF") = value
 | |
|             End If
 | |
|         End Set
 | |
|     End Property
 | |
|     ''' <summary>
 | |
|     ''' 환기_WF
 | |
|     ''' </summary>
 | |
|     ''' <remarks>환기</remarks>
 | |
|     Property V_WF() As Decimal
 | |
|         Get
 | |
|             If DSETR1.사용면적.Rows.Count = 0 Then
 | |
|                 Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
 | |
|                 Return 0
 | |
|             Else
 | |
|                 Return TOSG(T, DSETR1.사용면적(0)("V_WF"))
 | |
|             End If
 | |
|         End Get
 | |
|         Set(ByVal value As Decimal)
 | |
|             If DSETR1.사용면적.Rows.Count = 0 Then
 | |
|                 Log.AppendLine("사용면적이 계산되지않았습니다" & vbCrLf & "값을 가져올 수 없습니다")
 | |
|             Else
 | |
|                 DSETR1.사용면적(0)("V_WF") = value
 | |
|             End If
 | |
|         End Set
 | |
|     End Property
 | |
| 
 | |
|     Public Overridable Sub Calc()
 | |
|         Dim A_H As Decimal = 0
 | |
|         Dim A_C As Decimal = 0
 | |
|         Dim A_L As Decimal = 0
 | |
|         Dim A_W As Decimal = 0
 | |
|         Dim A_V As Decimal = 0
 | |
|         '//용도별 면적가중치(wf) 추가 '2012.07.01
 | |
|         Dim A_H_wf As Decimal = 0
 | |
|         Dim A_C_wf As Decimal = 0
 | |
|         Dim A_L_wf As Decimal = 0
 | |
|         Dim A_W_wf As Decimal = 0
 | |
|         Dim A_V_wf As Decimal = 0
 | |
|         Dim day_year As Decimal
 | |
|         '//'2012.07.01
 | |
| 
 | |
|         If DSETR1.사용면적.Rows.Count = 0 Then   '//데결과가 없으면 신규줄을 기록한다.
 | |
|             Dim Dr As DSR.사용면적Row = DSETR1.사용면적.New사용면적Row
 | |
|             Dr.H = 0 : Dr.C = 0 : Dr.L = 0 : Dr.W = 0 : Dr.V = 0
 | |
|             DSETR1.사용면적.Add사용면적Row(Dr)
 | |
|             DSETR1.AcceptChanges()
 | |
|         End If
 | |
| 
 | |
|         '//A_H,C,W,L,V 의 누적값을 계산(사용면적)  '//모든존을 대상으로
 | |
| 
 | |
|         For Each Dr존 As DS.tbl_zoneRow In DSET1.tbl_zone.Select("code<>'0'", "code")
 | |
|             Dim Dr프로필 As DS.tbl_profile_odRow = CType(DSET1.tbl_profile_od.Select("code='0'")(0), DS.tbl_profile_odRow)
 | |
|             Dim 건물용도 As Integer = CInt(Dr존.code)
 | |
| 
 | |
|             Dim offset As Integer = 1
 | |
|             If Dr프로필.설명 = "판매시설" Then
 | |
|                 If Dr존.조명부하산출방법 = "입력치" Then
 | |
|                     If Dr존.조명에너지부하율입력치 > 10 Then
 | |
|                         offset = ((Dr존.조명에너지부하율입력치 - 10) * 0.4 + 10) / Dr존.조명에너지부하율입력치
 | |
|                     End If
 | |
|                 ElseIf Dr존.조명부하산출방법 = "계산치" Then
 | |
|                     If Dr존.조명에너지부하율계산치 > 10 Then
 | |
|                         offset = ((Dr존.조명에너지부하율계산치 - 10) * 0.4 + 10) / Dr존.조명에너지부하율계산치
 | |
|                     End If
 | |
|                 End If
 | |
|             End If
 | |
| 
 | |
|             '//냉난방(HC) 이거나 난방(H)일경우 난방면적 누적
 | |
|             If Dr존.냉난방방식.IndexOf("난") <> -1 OrElse Dr존.냉난방공조.IndexOf("난") <> -1 Then
 | |
|                 A_H += TOSG(T, Dr존.면적) * TOSG(T, Dr존.입력존의수)
 | |
|                 If 건물용도 < 10 Then '//주거일경우에
 | |
| 
 | |
|                     '//연
 | |
| 
 | |
|                     A_H_wf = A_H
 | |
| 
 | |
|                 Else
 | |
|                     day_year = TOSG(T, Dr프로필.day01) + TOSG(T, Dr프로필.day02) + TOSG(T, Dr프로필.day03) + TOSG(T, Dr프로필.day04) + TOSG(T, Dr프로필.day05) + TOSG(T, Dr프로필.day06) + TOSG(T, Dr프로필.day07) + TOSG(T, Dr프로필.day08) + TOSG(T, Dr프로필.day09) + TOSG(T, Dr프로필.day10) + TOSG(T, Dr프로필.day11) + TOSG(T, Dr프로필.day12)
 | |
|                     A_H_wf += TOSG(T, Dr존.면적) * TOSG(T, Dr존.입력존의수) * (TOSG(T, Dr프로필.일일운전시간) * Math.Round(day_year / (11 * 250), 3))
 | |
|                 End If
 | |
| 
 | |
|             End If
 | |
| 
 | |
|             '//냉난방(hC) 이거나 냉방(C)일경우 냉방면적 누적
 | |
|             If Dr존.냉난방방식.IndexOf("냉") <> -1 OrElse Dr존.냉난방공조.IndexOf("냉") <> -1 Then
 | |
|                 A_C += TOSG(T, Dr존.면적) * TOSG(T, Dr존.입력존의수)
 | |
| 
 | |
|                 If 건물용도 < 10 Then
 | |
|                     A_C_wf = A_C
 | |
|                 Else
 | |
|                     day_year = TOSG(T, Dr프로필.day01) + TOSG(T, Dr프로필.day02) + TOSG(T, Dr프로필.day03) + TOSG(T, Dr프로필.day04) + TOSG(T, Dr프로필.day05) + TOSG(T, Dr프로필.day06) + TOSG(T, Dr프로필.day07) + TOSG(T, Dr프로필.day08) + TOSG(T, Dr프로필.day09) + TOSG(T, Dr프로필.day10) + TOSG(T, Dr프로필.day11) + TOSG(T, Dr프로필.day12)
 | |
|                     A_C_wf += TOSG(T, Dr존.면적) * TOSG(T, Dr존.입력존의수) * (TOSG(T, Dr프로필.일일운전시간) * Math.Round(day_year / (11 * 250), 3))
 | |
|                 End If
 | |
| 
 | |
| 
 | |
|             End If
 | |
| 
 | |
|             '//급탕요구량이 있다면 급탕면적 누적
 | |
|             If TOSG(T, Dr프로필.일일급탕요구량) > 0 Then
 | |
| 
 | |
|                 A_W += TOSG(T, Dr존.면적) * TOSG(T, Dr존.입력존의수)
 | |
| 
 | |
| 
 | |
|                 If 건물용도 < 10 Then
 | |
|                     A_W_wf = A_W
 | |
|                 Else
 | |
|                     day_year = TOSG(T, Dr프로필.day01) + TOSG(T, Dr프로필.day02) + TOSG(T, Dr프로필.day03) + TOSG(T, Dr프로필.day04) + TOSG(T, Dr프로필.day05) + TOSG(T, Dr프로필.day06) + TOSG(T, Dr프로필.day07) + TOSG(T, Dr프로필.day08) + TOSG(T, Dr프로필.day09) + TOSG(T, Dr프로필.day10) + TOSG(T, Dr프로필.day11) + TOSG(T, Dr프로필.day12)
 | |
|                     A_W_wf += TOSG(T, Dr존.면적) * TOSG(T, Dr존.입력존의수) * (TOSG(T, Dr프로필.일일급탕요구량) * Math.Round(day_year / (30 * 250), 3))
 | |
|                 End If
 | |
| 
 | |
| 
 | |
| 
 | |
|             End If
 | |
| 
 | |
|             '//조명의 에너지부하율값이 있으면 조명면적 누적
 | |
|             If Dr존.조명에너지부하율계산치 <> "0" OrElse Dr존.조명에너지부하율입력치 <> "0" Then
 | |
|                 A_L += TOSG(T, Dr존.면적) * TOSG(T, Dr존.입력존의수)
 | |
| 
 | |
|                 If 건물용도 < 10 Then
 | |
|                     '//가스를쓰는 난방 급탕은 계가 발생
 | |
|                     A_L_wf = A_L
 | |
|                 Else
 | |
|                     day_year = TOSG(T, Dr프로필.day01) + TOSG(T, Dr프로필.day02) + TOSG(T, Dr프로필.day03) + TOSG(T, Dr프로필.day04) + TOSG(T, Dr프로필.day05) + TOSG(T, Dr프로필.day06) + TOSG(T, Dr프로필.day07) + TOSG(T, Dr프로필.day08) + TOSG(T, Dr프로필.day09) + TOSG(T, Dr프로필.day10) + TOSG(T, Dr프로필.day11) + TOSG(T, Dr프로필.day12)
 | |
|                     A_L_wf += TOSG(T, Dr존.면적) * TOSG(T, Dr존.입력존의수) * (TOSG(T, Dr프로필.일일사용시간) * Math.Round(day_year / (9 * 250), 3) * offset)
 | |
|                 End If
 | |
| 
 | |
| 
 | |
|             End If
 | |
| 
 | |
|             '//냉난방공조를 사용하고있다면 환기면적 누적(ZZ:기능없음)
 | |
|             If (Dr존.냉난방공조 <> "기능없음") Then
 | |
|                 A_V += TOSG(T, Dr존.면적) * TOSG(T, Dr존.입력존의수)
 | |
| 
 | |
|                 If 건물용도 < 10 Then
 | |
|                     A_V_wf = A_V
 | |
|                 Else
 | |
|                     day_year = TOSG(T, Dr프로필.day01) + TOSG(T, Dr프로필.day02) + TOSG(T, Dr프로필.day03) + TOSG(T, Dr프로필.day04) + TOSG(T, Dr프로필.day05) + TOSG(T, Dr프로필.day06) + TOSG(T, Dr프로필.day07) + TOSG(T, Dr프로필.day08) + TOSG(T, Dr프로필.day09) + TOSG(T, Dr프로필.day10) + TOSG(T, Dr프로필.day11) + TOSG(T, Dr프로필.day12)
 | |
|                     A_V_wf += TOSG(T, Dr존.면적) * TOSG(T, Dr존.입력존의수) * (TOSG(T, Dr프로필.일일운전시간) * Math.Round(day_year / (11 * 250), 3))
 | |
|                 End If
 | |
| 
 | |
| 
 | |
|             End If
 | |
| 
 | |
|         Next
 | |
| 
 | |
|         '//저장소에 보관한다.
 | |
|         Result1o.사용면적.H = A_H
 | |
|         Result1o.사용면적.C = A_C
 | |
|         Result1o.사용면적.L = A_L
 | |
|         Result1o.사용면적.W = A_W
 | |
|         Result1o.사용면적.V = A_V
 | |
| 
 | |
|         '// 가중치 있는 사용면적 '2013.07.01
 | |
|         Result1o.사용면적.H_WF = A_H_wf
 | |
|         Result1o.사용면적.C_WF = A_C_wf
 | |
|         Result1o.사용면적.L_WF = A_L_wf
 | |
|         Result1o.사용면적.W_WF = A_W_wf
 | |
|         Result1o.사용면적.V_WF = A_V_wf
 | |
|     End Sub
 | |
| 
 | |
| End Class | 
