This commit is contained in:
ykh
2023-10-27 23:05:50 +09:00
parent 0b976ad2ab
commit ec0e3013c6
50 changed files with 4751 additions and 1383 deletions

View File

@@ -111,6 +111,7 @@ Public Class MdiMain
'bt_계산결과그래프q.Visible = True
bt_인증평가서.Visible = True
btImport.Visible = True
btMacro.Visible = True
Case "BOTH0" '//일반사용자
bt_데이터관리.Visible = False
bt_계산결과그래프.Visible = True
@@ -2102,7 +2103,7 @@ ENDSTAT: '//오류발생시 강제종료를 위한 분기문
#Region "Show_Menu"
Private Sub Menu_건물개요()
Public Sub Menu_건물개요()
If Not Prj.Opened Then
Work_msg_timer(CLang.열린파일없음)
Return
@@ -3222,7 +3223,7 @@ ENDSTAT: '//오류발생시 강제종료를 위한 분기문
sd.FilterIndex = 0
If sd.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim f As New Frm_Upload(sd.FileName)
Dim f As New Frm_Upload(sd.FileName, 10, "")
f.ShowDialog()
If lbl_user.Text.ToLower = "[arin]" Then '//160327
@@ -3534,136 +3535,39 @@ ENDSTAT: '//오류발생시 강제종료를 위한 분기문
End Function
Private Sub 일괄계산ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles 일괄계산ToolStripMenuItem.Click
Dim f As New frm_Macro()
Dim f As New frm_batch()
If f.ShowDialog() = Windows.Forms.DialogResult.OK Then
If MsgBox("run?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return '//ok 안하면 빠져나가기
Dim path As String = f.tbPath.Text
Dim di As New System.IO.DirectoryInfo(path)
Dim files() As System.IO.FileInfo
files = di.GetFiles("*.tpl", IO.SearchOption.TopDirectoryOnly)
files = di.GetFiles("*.tpl", IO.SearchOption.TopDirectoryOnly)
Dim savefile As String = System.IO.Path.Combine(path, "report.tab")
Dim files2 As New SortedDictionary(Of String, System.IO.FileInfo)
For Each fi As System.IO.FileInfo In files
files2.Add(fi.Name, fi)
Next
prb1.Value = 0
prb1.Maximum = files.Length
Dim ermsg As New System.Text.StringBuilder
Dim first As Boolean = True
Dim report As New List(Of String())
Dim title1item As New List(Of String)
title1item.AddRange(New String() {"파일명", "계산"})
For i As Integer = 1 To 21
title1item.Add("건축부문 평가항목")
Next
'//리포트파일 생성
Dim reportorg As String = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "batchreport.xls")
Dim reportfile As String = System.IO.Path.Combine(path, "batchreport.xls")
System.IO.File.Copy(reportorg, reportfile, True)
For i As Integer = 1 To 16
title1item.Add("기계부문 평가항목")
Next
Dim 입력면추출 As Boolean = f.chkMyoun.Checked
Dim writecol As Integer = 10
For Each fitem As KeyValuePair(Of String, System.IO.FileInfo) In files2
For i As Integer = 1 To 7
title1item.Add("신재생 및 열병합 부문 평가항목")
Next
For i As Integer = 1 To 10
title1item.Add("평가결과")
Next
report.Add(title1item.ToArray())
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim title2item As New List(Of String)
title2item.AddRange(New String() {"--", "--", "벽체면적", "창및문면적", "창및문면적비"})
For i As Integer = 1 To 9
title2item.Add("창 열관류율")
Next
For i As Integer = 1 To 9
title2item.Add("일사에너지투과율")
Next
For i As Integer = 1 To 7
title2item.Add("온열원설비")
Next
For i As Integer = 1 To 6
title2item.Add("냉열원설비")
Next
For i As Integer = 1 To 3
title2item.Add("급탕설비")
Next
For i As Integer = 1 To 7
title2item.Add("태양광")
Next
For i As Integer = 1 To 5
title2item.Add("에너지생산량")
Next
For i As Integer = 1 To 5
title2item.Add("1차에너지생산량")
Next
report.Add(title2item.ToArray())
Dim title3item As New List(Of String)
title3item.AddRange(New String() {"--", "--", "--", "--", "--"})
title3item.Add("평균")
title3item.Add("")
title3item.Add("남동")
title3item.Add("")
title3item.Add("북동")
title3item.Add("")
title3item.Add("북서")
title3item.Add("")
title3item.Add("남서")
title3item.Add("평균")
title3item.Add("")
title3item.Add("남동")
title3item.Add("")
title3item.Add("북동")
title3item.Add("")
title3item.Add("북서")
title3item.Add("")
title3item.Add("남서")
title3item.Add("보일러방식")
title3item.Add("지역난방방식")
title3item.Add("난방용량")
title3item.Add("히트펌프난방COP(7도)")
title3item.Add("히트펌프난방COP(-15도)")
title3item.Add("실내외기의 최대배관길이")
title3item.Add("시스템 종류")
title3item.Add("압축식 냉동기 종류")
title3item.Add("냉동기 압축방식")
title3item.Add("왕복동/스크롤압축기 제어방식")
title3item.Add("열생산연결방식")
title3item.Add("냉동기 설비시스템")
title3item.Add("제어방식")
title3item.Add("축열탱크방식")
title3item.Add("축열탱크 용량")
title3item.Add("펌프 정격동력")
title3item.Add("용량")
title3item.Add("효율")
title3item.Add("모듈면적")
title3item.Add("모듈기울기")
title3item.Add("모듈방위")
title3item.Add("모듈종류")
title3item.Add("모듈적용타입")
title3item.Add("난방")
title3item.Add("냉방")
title3item.Add("급탕")
title3item.Add("조명")
title3item.Add("환기")
title3item.Add("난방")
title3item.Add("냉방")
title3item.Add("급탕")
title3item.Add("조명")
title3item.Add("환기")
report.Add(title3item.ToArray())
For Each fi As System.IO.FileInfo In files
Dim fi As System.IO.FileInfo = fitem.Value
writecol += 1
If prb1.Value < prb1.Maximum Then prb1.Value += 1
Dim dataitem As New List(Of String)
@@ -3676,14 +3580,14 @@ ENDSTAT: '//오류발생시 강제종료를 위한 분기문
'//calc
Dim ret As Boolean = False
Dim msg As String = String.Format("계산중({0}/{1})" + vbCrLf + "{2}" + vbCrLf, prb1.Value, prb1.Maximum, fi.Name)
Dim msg As String = String.Format("계산중({0}/{1}) 열번호={3}" + vbCrLf + "{2}" + vbCrLf, prb1.Value, prb1.Maximum, fi.Name, writecol)
If String.IsNullOrWhiteSpace(retopen) = False Then ret = func_calc(msg, True)
'//get message
Dim xlsfile As String = fi.FullName.Replace(".tplx", ".xls").Replace(".tpl", ".xls")
Dim fxls As New Frm_Upload(xlsfile, True)
'//업로드 양식 데이터 생성
Dim fxls As New Frm_Upload(reportfile, writecol, fi.Name, True)
Dim drlt = fxls.ShowDialog()
If drlt = DialogResult.OK Then
ermsg.AppendLine("OK" + vbTab + fi.FullName)
@@ -3693,254 +3597,77 @@ ENDSTAT: '//오류발생시 강제종료를 위한 분기문
dataitem.Add("NG")
End If
'If lbl_user.Text.ToLower = "[arin]" Then '//160327
' Shell("explorer " + Chr(&H22) + sd.FileName + Chr(&H22), AppWinStyle.NormalFocus)
'End If
'//입력면 추출
If 입력면추출 Then
'//벽체면적
'//엑셀내보내기기능 추가
Dim content As New System.Text.StringBuilder()
Dim newfile As String = fi.Directory.FullName + "\" + System.IO.Path.GetFileNameWithoutExtension(fi.FullName) + "_입력면.tab"
For Each drz As DS.tbl_zoneRow In DSET1.tbl_zone.Rows
If drz.code = "0" Then Continue For
content.Append(drz.설명)
For Each drm As DS.tbl_myounRow In DSET1.tbl_myoun.Select("존분류='" + drz.code + "'")
If drm.code = "0" Then Continue For
'입력존1, 입력면1_1, 건축부위방식1_1, 면적1_1,
'열관류율1_1, 방위1_1, 입력면1_2, 건축부위방식1_2, 면적1_2, 열관류율1_2, 방위1_2, 입력면1_3, 건축부위방식1_3, 면적1_3, 열관류율1_3, 방위1_3
Dim WallArea As Decimal = 0
Dim WindowArea As Decimal = 0
Dim 열관류율합 As Double
Dim 존수 As Integer = 0
Dim 비연결 As Integer = 0
Dim 비연결존 As String = ""
Dim 방위목록() As String = New String() {"수평", "", "남동", "", "북동", "", "북서", "", "남서"}
For Each 방위 As String In 방위목록
Dim filter As String = "code <> '0' and (건축부위방식='외벽' or 건축부위방식 ='외부창' or 건축부위방식='내벽' or 건축부위방식 ='내부창')"
If 방위 <> "" Then filter += " and 방위='" + 방위 + "'"
Dim 면데이터() As DS.tbl_myounRow = DSET1.tbl_myoun.Select(filter)
Dim 열관없는갯수 As Integer = 0
Try
For Each Dr입력면 As DS.tbl_myounRow In 면데이터
Dim 열관 As Single = 0
If Dr입력면.열관류율2 = "0" OrElse Dr입력면.열관류율2 = "" Then
열관없는갯수 += 1
End If
Dim Dryk1 As DS.tbl_ykRow = Nothing
If Dr입력면.열관류율2 <> "0" Then '
Dryk1 = DSET1.tbl_yk.Select("code='" & Dr입력면.열관류율2 & "'")(0)
열관 = TOSG(Dryk1("열관류율").ToString)
Else '//선택안된경우
열관 = TOSG(Dr입력면.열관류율)
End If
Dim 존코드 As String = Dr입력면.존분류
Dim dr존() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("code='" + 존코드 + "'")
If dr존.GetUpperBound(0) = -1 Then
존수 = 1
Else
If IsNumeric(dr존(0).입력존의수) Then
존수 = CInt(dr존(0).입력존의수)
Else
존수 = 1
Dim 열관류율 As String = drm.열관류율
If drm.열관류율2 <> "" AndAlso drm.열관류율2 <> "0" Then
Dim ykrows() As DS.tbl_ykRow = DSET1.tbl_yk.Select("code='" + drm.열관류율2 + "'")
If ykrows.Length = 1 Then
열관류율 = ykrows(0).열관류율
End If
End If
Select Case Dr입력면.건축부위방식
Case "외벽"
열관류율합 += 열관 * 1 * TOSG(Dr입력면.건축부위면적) * 존수
Case "내벽"
열관류율합 += 열관 * 0.7 * TOSG(Dr입력면.건축부위면적) * 존수
Case "외부창"
열관류율합 += 열관 * 1 * TOSG(Dr입력면.건축부위면적) * 존수
Case "내부창"
열관류율합 += 열관 * 0.8 * TOSG(Dr입력면.건축부위면적) * 존수
End Select
'// Debug.WriteLine(Dr입력면.열관류율2 + "/" + Dr입력면.code + "/" + 열관.ToString() + "/" + Dr입력면.설명 + "/" + Dr입력면.건축부위면적.ToCharArray() + "/" + 존수.ToString() + "/" + 열관류율합.ToString(), True)
If Dryk1 Is Nothing Then
비연결 += 1
'//사용한 존
If dr존 Is Nothing Then
Else
비연결존 = dr존(0).설명 + "" + Dr입력면.설명
End If
'//열관류 선택안된경우
Select Case Dr입력면.건축부위방식
Case "외벽"
If Dr입력면.방위 <> "수평" AndAlso Dr입력면.방위 <> "일사없음" AndAlso Dr입력면.방위 <> "(없음)" Then
WallArea = WallArea + TOSG(Dr입력면.건축부위면적) * 존수
End If
Case "내벽" '
WallArea = WallArea + TOSG(Dr입력면.건축부위면적) * 존수
Case "외부창"
If Dr입력면.방위 <> "수평" AndAlso Dr입력면.방위 <> "일사없음" AndAlso Dr입력면.방위 <> "(없음)" Then
WindowArea = WindowArea + TOSG(Dr입력면.건축부위면적) * 존수
End If
Case "내부창"
WindowArea = WindowArea + TOSG(Dr입력면.건축부위면적) * 존수
End Select
Else
Dim 면형태이름 As String = Get_CName("1088", Dryk1.면형태)
Select Case 면형태이름
Case "외벽(벽체)"
WallArea = WallArea + TOSG(Dr입력면.건축부위면적) * 존수
Case "내벽(벽체)"
WallArea = WallArea + TOSG(Dr입력면.건축부위면적) * 존수
Case "외부창"
If Dr입력면.방위 <> "수평" AndAlso Dr입력면.방위 <> "일사없음" AndAlso Dr입력면.방위 <> "(없음)" Then
WindowArea = WindowArea + TOSG(Dr입력면.건축부위면적) * 존수
End If
Case "내부창"
WindowArea = WindowArea + TOSG(Dr입력면.건축부위면적) * 존수
End Select
End If
'Debug.WriteLine(Dr입력면.code + ":wall=" + WallArea.ToString() + ",win=" + WindowArea.ToString())
content.Append(vbTab + drm.설명 + vbTab + drm.건축부위방식 + vbTab + _
drm.건축부위면적 + vbTab + _
열관류율 + vbTab + drm.방위)
Next
'For Each Dr입력면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("건축부위방식='외부창'")
' WindowArea = WindowArea + TOSG(Dr입력면.건축부위면적) * 존수
'Next
Catch ex As Exception
content.AppendLine()
Next
End Try
Next
System.IO.File.WriteAllText(newfile, content.ToString(), System.Text.Encoding.Default)
dataitem.Add(WallArea.ToString())
dataitem.Add(WindowArea.ToString())
Dim 창및문면적비 As Decimal
Try
창및문면적비 = WindowArea / (WallArea + WindowArea) * 100
Catch ex As Exception
창및문면적비 = 0 '//게삭과정에 오류가낫다면 0처리합니다.
End Try
If WallArea + WindowArea = 0 Then
dataitem.Add("0 %")
Else
dataitem.Add(창및문면적비.ToString("N1") & " %") '//N1은 소수점 1자리 N0ㄴ소수점 없음 N다음에 숫자가 소수점 자릿수에요
End If
'//창 열관류율 평균 W/㎡•K 면적가중평균
Dim 외벽열관류율_평균 As Decimal
Dim 외벽열관류율_남 As Decimal
Dim 외벽열관류율_남동 As Decimal
Dim 외벽열관류율_동 As Decimal
Dim 외벽열관류율_북동 As Decimal
Dim 외벽열관류율_북 As Decimal
Dim 외벽열관류율_북서 As Decimal
Dim 외벽열관류율_서 As Decimal
Dim 외벽열관류율_남서 As Decimal
Dim 창열관류율_평균 As Decimal
Dim 창열관류율_남 As Decimal
Dim 창열관류율_남동 As Decimal
Dim 창열관류율_동 As Decimal
Dim 창열관류율_북동 As Decimal
Dim 창열관류율_북 As Decimal
Dim 창열관류율_북서 As Decimal
Dim 창열관류율_서 As Decimal
Dim 창열관류율_남서 As Decimal
Dim 일사에너지투과율_평균 As Decimal
Dim 일사에너지투과율_남 As Decimal
Dim 일사에너지투과율_남동 As Decimal
Dim 일사에너지투과율_동 As Decimal
Dim 일사에너지투과율_북동 As Decimal
Dim 일사에너지투과율_북 As Decimal
Dim 일사에너지투과율_북서 As Decimal
Dim 일사에너지투과율_서 As Decimal
Dim 일사에너지투과율_남서 As Decimal
Dim DsReport As New DSR
Pub.항목별평가결과(DsReport)
Dim drYK As DSR.Pyonga_YKRow = DsReport.Pyonga_YK.Rows(0)
calc_창및문면적비(창및문면적비, 외벽열관류율_평균, 창열관류율_평균, 일사에너지투과율_평균)
calc_창및문면적비(창및문면적비, 외벽열관류율_남, 창열관류율_남, 일사에너지투과율_남, "")
calc_창및문면적비(창및문면적비, 외벽열관류율_남동, 창열관류율_남동, 일사에너지투과율_남동, "남동")
calc_창및문면적비(창및문면적비, 외벽열관류율_동, 창열관류율_동, 일사에너지투과율_동, "")
calc_창및문면적비(창및문면적비, 외벽열관류율_북동, 창열관류율_북동, 일사에너지투과율_북동, "북동")
calc_창및문면적비(창및문면적비, 외벽열관류율_북, 창열관류율_북, 일사에너지투과율_북, "")
calc_창및문면적비(창및문면적비, 외벽열관류율_북서, 창열관류율_북서, 일사에너지투과율_북서, "북서")
calc_창및문면적비(창및문면적비, 외벽열관류율_서, 창열관류율_서, 일사에너지투과율_서, "")
calc_창및문면적비(창및문면적비, 외벽열관류율_남서, 창열관류율_남서, 일사에너지투과율_남서, "남서")
dataitem.Add(창열관류율_평균.ToString("N3"))
dataitem.Add(창열관류율_남.ToString("N3"))
dataitem.Add(창열관류율_남동.ToString("N3"))
dataitem.Add(창열관류율_동.ToString("N3"))
dataitem.Add(창열관류율_북동.ToString("N3"))
dataitem.Add(창열관류율_북.ToString("N3"))
dataitem.Add(창열관류율_북서.ToString("N3"))
dataitem.Add(창열관류율_서.ToString("N3"))
dataitem.Add(창열관류율_남서.ToString("N3"))
dataitem.Add(일사에너지투과율_평균.ToString("N3"))
dataitem.Add(일사에너지투과율_남.ToString("N3"))
dataitem.Add(일사에너지투과율_남동.ToString("N3"))
dataitem.Add(일사에너지투과율_동.ToString("N3"))
dataitem.Add(일사에너지투과율_북동.ToString("N3"))
dataitem.Add(일사에너지투과율_북.ToString("N3"))
dataitem.Add(일사에너지투과율_북서.ToString("N3"))
dataitem.Add(일사에너지투과율_서.ToString("N3"))
dataitem.Add(일사에너지투과율_남서.ToString("N3"))
report.Add(dataitem.ToArray())
'report.Add(dataitem.ToArray())
'//save to csv
'//엑셀내보내기기능 추가
'Dim content As String = fi.Name
'If String.IsNullOrWhiteSpace(retopen) = True Then
' content += vbTab + "open fail"
'ElseIf ret = False Then
' content += vbTab + "fail"
'Else
' content += vbTab + Makemacrostring()
'End If
'content += vbCrLf
'If first = False Then
' System.IO.File.AppendAllText(savefile, content, System.Text.Encoding.Default)
'Else
' System.IO.File.WriteAllText(savefile, "파일" + vbTab + "오류" + vbTab + "구분" + vbTab + "신재생" + vbTab + "난방" + vbTab + "냉방" + vbTab + "급탕" + vbTab + "조명" + vbTab + "환기" + vbTab + "합계" + vbCrLf, System.Text.Encoding.Default)
' System.IO.File.AppendAllText(savefile, content, System.Text.Encoding.Default)
' first = False
'End If
Application.DoEvents()
'Application.DoEvents()
Next
closemessagewindow()
Dim reportbuffer As New System.Text.StringBuilder
'Dim reportbuffer As New System.Text.StringBuilder
Dim maxlin As Integer = 0
For Each item() As String In report
'reportbuffer.Append(vbTab)
'reportbuffer.Append(item(0)) '//filename
If item.Length > maxlin Then
maxlin = item.Length
End If
Next
'Dim maxlin As Integer = 0
'For Each item() As String In report
' 'reportbuffer.Append(vbTab)
' 'reportbuffer.Append(item(0)) '//filename
' If item.Length > maxlin Then
' maxlin = item.Length
' End If
'Next
For r As Integer = 0 To maxlin - 1
For Each item() As String In report
reportbuffer.Append(vbTab)
'For r As Integer = 0 To maxlin - 1
' For Each item() As String In report
' reportbuffer.Append(vbTab)
If r < item.Length Then
reportbuffer.Append(item(r)) '//filename
Else
reportbuffer.Append("")
' If r < item.Length Then
' reportbuffer.Append(item(r)) '//filename
' Else
' reportbuffer.Append("")
End If
' End If
Next
reportbuffer.AppendLine()
Next
' Next
' reportbuffer.AppendLine()
'Next
'//save to csv
'//엑셀내보내기기능 추가
@@ -3964,8 +3691,8 @@ ENDSTAT: '//오류발생시 강제종료를 위한 분기문
Dim rptfile As String = System.IO.Path.Combine(path, "report.tab")
System.IO.File.WriteAllText(rptfile, reportbuffer.ToString(), System.Text.Encoding.Default)
'Dim rptfile As String = System.IO.Path.Combine(path, "report.tab")
'System.IO.File.WriteAllText(rptfile, reportbuffer.ToString(), System.Text.Encoding.Default)
Dim logfile As String = System.IO.Path.Combine(path, "log.txt")
@@ -3975,4 +3702,10 @@ ENDSTAT: '//오류발생시 강제종료를 위한 분기문
End If
End Sub
Private Sub btMacro_Click(sender As System.Object, e As System.EventArgs) Handles btMacro.Click
Menu_건물개요()
Dim f As New Frm_Macro
f.Show()
End Sub
End Class