From 8174108238b6969753a9867d95d1665043bf2898 Mon Sep 17 00:00:00 2001 From: Chikyun Date: Thu, 17 Oct 2019 20:59:10 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=EB=A6=AC=EB=B9=84=EC=A0=BC=20=EB=B2=88?= =?UTF-8?q?=ED=98=B8=203=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ArinWarev1/My Project/AssemblyInfo.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ArinWarev1/My Project/AssemblyInfo.vb b/ArinWarev1/My Project/AssemblyInfo.vb index 84ff0fa..c9a2aa7 100644 --- a/ArinWarev1/My Project/AssemblyInfo.vb +++ b/ArinWarev1/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' 지정되도록 할 수 있습니다. ' - - + + From 5cc843777ce0fccb0dd7f5c05bc572fd5fb0a27a Mon Sep 17 00:00:00 2001 From: chi Date: Mon, 25 Nov 2019 21:06:59 +0900 Subject: [PATCH 2/2] =?UTF-8?q?JAVA=20=EC=9B=B9=20=EA=B3=BC=20=EB=B9=84?= =?UTF-8?q?=EA=B5=90=EB=A5=BC=20=ED=95=98=EA=B8=B0=EC=9C=84=ED=95=9C=20?= =?UTF-8?q?=EA=B8=B0=ED=83=80=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Calculator-OD/AirHandling/CAirHandling.vb | 10 + ArinWarev1/Calculator-OD/Cooling/CCooling.vb | 11 +- ArinWarev1/Calculator-OD/Heating/CHeating.vb | 7 +- .../Calculator-OD/Result/C에너지분석.vb | 1 + .../Calculator-OD/Result/C에너지소요량.vb | 13 +- ArinWarev1/Calculator-OD/Zone/CZone.vb | 9 +- ArinWarev1/ECO2OD.vbproj | 9 + .../Frm_RepResult_Admin.Designer.vb | 224 +++++++++--------- .../FORM-BASIC/Frm_RepResult_Admin.resx | 51 ++++ ArinWarev1/FORM-BASIC/Frm_RepResult_Admin.vb | 41 ++++ ArinWarev1/MdiMain.Designer.vb | 2 +- ArinWarev1/MdiMain.vb | 96 ++++---- ArinWarev1/REPORT-OD/Report_result.rdlc | 7 +- ArinWarev1/UserControls/ArinDv.vb | 8 +- 14 files changed, 318 insertions(+), 171 deletions(-) diff --git a/ArinWarev1/Calculator-OD/AirHandling/CAirHandling.vb b/ArinWarev1/Calculator-OD/AirHandling/CAirHandling.vb index 1d71267..774de15 100644 --- a/ArinWarev1/Calculator-OD/AirHandling/CAirHandling.vb +++ b/ArinWarev1/Calculator-OD/AirHandling/CAirHandling.vb @@ -261,6 +261,11 @@ 'If Dr존.냉난방공조처리시스템 <> "" Then ' Worksheets("입력존").Range("입력난방공급기기1").Offset(2, i_count_zone - 1) <> "" Then 'If Worksheets("입력존").Range("입력난방공급기기1").Offset(2, i_count_zone - 1) = Worksheets("공조처리시스템").Range("공조기기1").Offset(0, i_count_AHU - 1) Then 'If Dr존.냉난방공조처리시스템 = Dr공조.code Then ' Worksheets("공조처리시스템").Range("공조기기1").Offset(0, i_count_AHU - 1) Then + + 'If i_count_month > 4 Then + ' Console.WriteLine(String.Format("공조 {0}월 존이름={1},급기풍량={2},배기풍량={3}", i_count_month, Dr공조.code, Dr공조.급기풍량, Dr공조.배기풍량)) + 'End If + If sum_kongjo = 0 Then ea_kongjo = 0 Else @@ -740,6 +745,10 @@ End If Drow분석(0).공조요구량가습 = Q_vm_b ' Sheets("" & i_count_month & "").Cells(23, 7 + i_count_zone) = Q_vm_b Drow분석(0).환기요구량 = Q_V_E_ZUL_m + Q_V_E_ABL_m ' Sheets("" & i_count_month & "").Cells(25, 7 + i_count_zone) = Q_V_E_ZUL_m + Q_V_E_ABL_m + 'Console.WriteLine(String.Format("환기요구량={0}", Q_V_E_ZUL_m + Q_V_E_ABL_m)) + 'If i_count_month > 4 Then + ' Console.WriteLine(String.Format("문제의 {0}월", i_count_month)) + 'End If '========================================================================================================================================== 'End If 'End If @@ -837,6 +846,7 @@ Result1o.E분석(i_count_month).환기에너지요구량(Dr존.code) = Q_V_E_ZUL_m + Q_V_E_ABL_m + 'Console.WriteLine(String.Format("환기요구량2={0}", Q_V_E_ZUL_m + Q_V_E_ABL_m)) 'Sheets("" & i_count_month & "").Cells(25, 7 + i_count_zone) = Q_V_E_ZUL_m + Q_V_E_ABL_m End If Else diff --git a/ArinWarev1/Calculator-OD/Cooling/CCooling.vb b/ArinWarev1/Calculator-OD/Cooling/CCooling.vb index a5febcb..0416a5a 100644 --- a/ArinWarev1/Calculator-OD/Cooling/CCooling.vb +++ b/ArinWarev1/Calculator-OD/Cooling/CCooling.vb @@ -84,6 +84,9 @@ Dim Mon As String = "M" & Format(i_count_month, "00") For Each dr냉방 As DS.tbl_nangbangkikiRow In DSET1.tbl_nangbangkiki.Select("code<>'0'", "code") + 'log.debug(String.format("cool title=%s", drCooling.getCode())); + ' Console.WriteLine(String.Format("cool title={0}", dr냉방.code)) + '//이 냉방기가가 존에서 사용되었는지확인한다. Dim Drow존() As DS.tbl_zoneRow = CType(DSET1.tbl_zone.Select("code <> '0'"), DS.tbl_zoneRow()) If Drow존.GetUpperBound(0) <> -1 Then ' Worksheets("냉방기기").Range("냉방생산기기1").Offset(2, i_count_chiller - 1) = "0001" Then '2 @@ -97,6 +100,8 @@ For Each Dr존 As DS.tbl_zoneRow In DSET1.tbl_zone.Select("code <> '0'", "code") + 'Console.WriteLine(String.Format("냉방기기={0},존={1},mon={2}", dr냉방.설명, Dr존.code, i_count_month)) + Dim Drow분석() As DSR.월별에너지분석Row = CType(DSETR1.월별에너지분석.Select("월='" & Mon & "' and 존='" & Dr존.code & "'"), DSR.월별에너지분석Row()) ' 존데이터를가져올떄 해당 냉방기기에서 사용한 존만 가져왔따. ' If Dr존.열생산냉방생산기기 <> "" Then ' Worksheets("입력존").Range("입력냉방생산기기1").Offset(0, i_count_zone - 1) <> "" Then @@ -420,7 +425,8 @@ Q_c_f = Q_c_f + Q_c_f_elektr + Q_c_f_R_elektr + Q_c_outg_therm + Q_c_g use_Elec = use_Elec + Q_c_f_elektr + Q_c_f_R_elektr - + 'Console.WriteLine(String.Format("=>coolin mon={0}, gcf={1}, elect={2}", i_count_month, Q_c_f, use_Elec)) + 'log.debug(String.format("=>coolin mon=%s, gcf=%s, elect=%s", i_count_month, Q_c_f,use_Elec)); '// 냉수, 냉각수 분배 Q_dot_z = Q_dot_c_outg * (1 + 1 / EER) '(3.2.8-30) @@ -461,9 +467,10 @@ + 'Console.WriteLine("loop 2") End If '2 - + 'Console.WriteLine("loop 1") Next '1 diff --git a/ArinWarev1/Calculator-OD/Heating/CHeating.vb b/ArinWarev1/Calculator-OD/Heating/CHeating.vb index 1214464..eff141b 100644 --- a/ArinWarev1/Calculator-OD/Heating/CHeating.vb +++ b/ArinWarev1/Calculator-OD/Heating/CHeating.vb @@ -467,6 +467,9 @@ Result1o.일차E소요량(i_count_month).급탕LPG = use_LPG Result1o.일차E소요량(i_count_month).급탕지역 = use_DH Result1o.일차E소요량(i_count_month).급탕전력 = use_Elec + + 'log.debug(String.format("####### => (i_count_month=%s,Q_w_f=%s,Q_w_aux=%s,use_Oil=%s,use_LNG=%s,use_LPG=%s,use_DH=%s,use_Elec=%s)",i_count_month,Q_w_f,Q_w_aux,use_Oil,use_LNG,use_LPG,use_DH,use_Elec)); + ' Console.WriteLine(String.Format("####### => (i_count_month={0},Q_w_f={1},Q_w_aux={2},use_Oil={3},use_LNG={4},use_LPG={5},use_DH={6},use_Elec={7})", i_count_month, Q_w_f, Q_w_aux, use_Oil, use_LNG, use_LPG, use_DH, use_Elec)) End Sub @@ -815,7 +818,7 @@ Result1o.일차E소요량(i_count_month).난방전력 = use_Elec 'pLog.Add(String.Format("q_h_aux={0},난방등유={1},LNG={2},LPG={3},지역={4},전력={5}", Q_h_aux, use_Oil, use_LNG, use_LPG, use_DH, use_Elec)) - + 'Console.WriteLine(String.Format("####### => (i_count_month={0},Q_h_aux={1},use_Elec={2},use_Oil={3},use_LNG={4},use_LPG={5},use_DH={6},use_Elec={7})", i_count_month, Q_h_aux, use_Elec, use_Oil, use_LNG, use_LPG, use_DH, use_Elec)) End Sub Private Sub Calc_난방_개별기기미적용시(dr난방 As DS.tbl_nanbangkikiRow, mon As String, 비율 As Decimal, i_count_month As Integer, theta_e As Decimal) @@ -1812,7 +1815,7 @@ H_DS = TOSG(B_DS * Psi_DS ^ (1 / 3)) Q_h_g = Q_h_g + (H_DS * (theta_DS - theta_i)) * system_count '=====2013.08.13 수정 use_DH = use_DH + (H_DS * (theta_DS - theta_i)) * system_count '========2013.08.18 수정 - Console.WriteLine("used=" + use_DH.ToString()) + 'Console.WriteLine("used=" + use_DH.ToString()) End If diff --git a/ArinWarev1/Calculator-OD/Result/C에너지분석.vb b/ArinWarev1/Calculator-OD/Result/C에너지분석.vb index 319adf2..aee3751 100644 --- a/ArinWarev1/Calculator-OD/Result/C에너지분석.vb +++ b/ArinWarev1/Calculator-OD/Result/C에너지분석.vb @@ -334,6 +334,7 @@ a10 = a10 + Dr.공조요구량냉방 a11 = a11 + Dr.공조요구량가습 a12 = a12 + Dr.환기요구량 + ' Console.WriteLine(String.Format(">>>>>>>>> a2={0},a3={1},a4={2},a5={3},a6={4},a7={5},a8={6},a9={7},a10={8},a11={9},a12={10}", a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)) Next 'Me.에너지요구량 = a2 + a3 + a4 + a5 + a6 + a7 ㅇ건 Readonlye 로 계산한다. diff --git a/ArinWarev1/Calculator-OD/Result/C에너지소요량.vb b/ArinWarev1/Calculator-OD/Result/C에너지소요량.vb index 319e50b..e46f011 100644 --- a/ArinWarev1/Calculator-OD/Result/C에너지소요량.vb +++ b/ArinWarev1/Calculator-OD/Result/C에너지소요량.vb @@ -53,6 +53,8 @@ I6 += Result1o.일차E소요량(i).조명전력 I7 += Result1o.일차E소요량(i).급탕전력 I8 += Result1o.일차E소요량(i).환기전력 + + 'Console.WriteLine(String.Format(">>C에너지소요량 IV={0},i={1}", IV, i)) Next Me.난방 = I10 @@ -64,11 +66,12 @@ If (I4 + I5 + I6 + I7 + I8 <> 0) Then - Me.난방S = IH - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / (I4 + I5 + I6 + I7 + I8) * I4 - Me.냉방S = IC - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / (I4 + I5 + I6 + I7 + I8) * I5 - Me.조명S = IL - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / (I4 + I5 + I6 + I7 + I8) * I6 - Me.급탕S = IW - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / (I4 + I5 + I6 + I7 + I8) * I7 - Me.환기S = IV - (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) / (I4 + I5 + I6 + I7 + I8) * I8 + Dim baseValue As Double = (Result1o.생산E(0).태양광전력생산량 + Result1o.생산E(0).열병합전력생산량) + Me.난방S = IH - baseValue / (I4 + I5 + I6 + I7 + I8) * I4 + Me.냉방S = IC - baseValue / (I4 + I5 + I6 + I7 + I8) * I5 + Me.조명S = IL - baseValue / (I4 + I5 + I6 + I7 + I8) * I6 + Me.급탕S = IW - baseValue / (I4 + I5 + I6 + I7 + I8) * I7 + Me.환기S = IV - baseValue / (I4 + I5 + I6 + I7 + I8) * I8 Else Me.난방S = IH Me.냉방S = IC diff --git a/ArinWarev1/Calculator-OD/Zone/CZone.vb b/ArinWarev1/Calculator-OD/Zone/CZone.vb index 7a32294..725b6a3 100644 --- a/ArinWarev1/Calculator-OD/Zone/CZone.vb +++ b/ArinWarev1/Calculator-OD/Zone/CZone.vb @@ -107,9 +107,9 @@ For i_count_month As Short = 0 To 12 '(2) --월전체의 루프? - If i_count_HeatCool = 1 AndAlso i_count_month = 1 Then - Console.WriteLine("col") - End If + 'If i_count_HeatCool = 1 AndAlso i_count_month = 1 Then + ' Console.WriteLine("col") + 'End If Work_msg("요구량계산중..." & CStr(IIf(i_count_HeatCool = 1, "난방", "냉방")) & "(" & i_count_month & "/12)") : Work_plus() Dim Mon As String = "M" & Format(i_count_month, "00") '//저장소의 필드명이 M00 식으로되어있다. @@ -733,6 +733,9 @@ Q_w_b = TOSG(T, DRProf.일일급탕요구량) * A_B * d_op_mth '===============d_op(i_count_month) 2010.2.21 수정 End If + Console.WriteLine(String.Format("mon={0},Q_l_b ={1},Q_w_b ={2}", i_count_month, Q_l_b, Q_w_b)) '//191120 + + Dim Dr최대부하 As New C최대냉난방부하OD.Citem(DR존.code) ' DSR.최대냉난방부하Row = CType(DSETR1.최대냉난방부하.Select("zone='" & DR존.code & "'")(0), DSR.최대냉난방부하Row) If i_count_HeatCool = 1 Then diff --git a/ArinWarev1/ECO2OD.vbproj b/ArinWarev1/ECO2OD.vbproj index f91b48b..654e5f9 100644 --- a/ArinWarev1/ECO2OD.vbproj +++ b/ArinWarev1/ECO2OD.vbproj @@ -152,6 +152,12 @@ DS.xsd + + Frm_Buha.vb + + + Form + Frm_ExtReport.vb @@ -393,6 +399,9 @@ + + Frm_Buha.vb + Frm_DisplayGubun.vb diff --git a/ArinWarev1/FORM-BASIC/Frm_RepResult_Admin.Designer.vb b/ArinWarev1/FORM-BASIC/Frm_RepResult_Admin.Designer.vb index c52854e..177883d 100644 --- a/ArinWarev1/FORM-BASIC/Frm_RepResult_Admin.Designer.vb +++ b/ArinWarev1/FORM-BASIC/Frm_RepResult_Admin.Designer.vb @@ -90,6 +90,18 @@ Partial Class Frm_RepResult_Admin Me.bs_면적 = New System.Windows.Forms.BindingSource(Me.components) Me.TabPage5 = New System.Windows.Forms.TabPage() Me.DataGridView5 = New Eco2OD.ArinDv() + Me.MonDataGridViewTextBoxColumn1 = New System.Windows.Forms.DataGridViewTextBoxColumn() + Me.난방에너지소요량DataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn() + Me.난방보조에너지소요량DataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn() + Me.냉방에너지소요량DataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn() + Me.냉방보조에너지소요량DataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn() + Me.급탕에너지소요량DataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn() + Me.급탕보조에너지소요량DataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn() + Me.난방 = New System.Windows.Forms.DataGridViewTextBoxColumn() + Me.냉방 = New System.Windows.Forms.DataGridViewTextBoxColumn() + Me.조명 = New System.Windows.Forms.DataGridViewTextBoxColumn() + Me.급탕 = New System.Windows.Forms.DataGridViewTextBoxColumn() + Me.환기 = New System.Windows.Forms.DataGridViewTextBoxColumn() Me.bs_소요량 = New System.Windows.Forms.BindingSource(Me.components) Me.TabPage6 = New System.Windows.Forms.TabPage() Me.DataGridView6 = New Eco2OD.ArinDv() @@ -147,18 +159,7 @@ Partial Class Frm_RepResult_Admin Me.면적당생산량태양열DataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn() Me.면적당생산량지열DataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn() Me.bs_생산E = New System.Windows.Forms.BindingSource(Me.components) - Me.MonDataGridViewTextBoxColumn1 = New System.Windows.Forms.DataGridViewTextBoxColumn() - Me.난방에너지소요량DataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn() - Me.난방보조에너지소요량DataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn() - Me.냉방에너지소요량DataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn() - Me.냉방보조에너지소요량DataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn() - Me.급탕에너지소요량DataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn() - Me.급탕보조에너지소요량DataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn() - Me.난방 = New System.Windows.Forms.DataGridViewTextBoxColumn() - Me.냉방 = New System.Windows.Forms.DataGridViewTextBoxColumn() - Me.조명 = New System.Windows.Forms.DataGridViewTextBoxColumn() - Me.급탕 = New System.Windows.Forms.DataGridViewTextBoxColumn() - Me.환기 = New System.Windows.Forms.DataGridViewTextBoxColumn() + Me.ToolStripButton1 = New System.Windows.Forms.ToolStripButton() CType(Me.DSR, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.bn_all, System.ComponentModel.ISupportInitialize).BeginInit() Me.bn_all.SuspendLayout() @@ -300,7 +301,7 @@ Partial Class Frm_RepResult_Admin Me.bn_all.DeleteItem = Nothing Me.bn_all.Dock = System.Windows.Forms.DockStyle.Bottom Me.bn_all.Font = New System.Drawing.Font("돋움", 8.999999!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) - Me.bn_all.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripButton44, Me.ToolStripButton45, Me.ToolStripSeparator25, Me.ToolStripTextBox6, Me.ToolStripLabel6, Me.ToolStripSeparator26, Me.ToolStripButton46, Me.ToolStripButton47, Me.ToolStripSeparator27, Me.ToolStripButton48, Me.ToolStripButton49, Me.ToolStripSeparator28, Me.ToolStripButton50, Me.ToolStripButton51}) + Me.bn_all.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripButton44, Me.ToolStripButton45, Me.ToolStripSeparator25, Me.ToolStripTextBox6, Me.ToolStripLabel6, Me.ToolStripSeparator26, Me.ToolStripButton46, Me.ToolStripButton47, Me.ToolStripSeparator27, Me.ToolStripButton48, Me.ToolStripButton49, Me.ToolStripSeparator28, Me.ToolStripButton50, Me.ToolStripButton51, Me.ToolStripButton1}) Me.bn_all.Location = New System.Drawing.Point(0, 446) Me.bn_all.MoveFirstItem = Me.ToolStripButton44 Me.bn_all.MoveLastItem = Me.ToolStripButton47 @@ -795,6 +796,102 @@ Partial Class Frm_RepResult_Admin Me.DataGridView5.Size = New System.Drawing.Size(819, 420) Me.DataGridView5.TabIndex = 16 ' + 'MonDataGridViewTextBoxColumn1 + ' + Me.MonDataGridViewTextBoxColumn1.DataPropertyName = "mon" + Me.MonDataGridViewTextBoxColumn1.HeaderText = "mon" + Me.MonDataGridViewTextBoxColumn1.Name = "MonDataGridViewTextBoxColumn1" + Me.MonDataGridViewTextBoxColumn1.ReadOnly = True + Me.MonDataGridViewTextBoxColumn1.Width = 56 + ' + '난방에너지소요량DataGridViewTextBoxColumn + ' + Me.난방에너지소요량DataGridViewTextBoxColumn.DataPropertyName = "난방에너지소요량" + Me.난방에너지소요량DataGridViewTextBoxColumn.HeaderText = "난방에너지소요량" + Me.난방에너지소요량DataGridViewTextBoxColumn.Name = "난방에너지소요량DataGridViewTextBoxColumn" + Me.난방에너지소요량DataGridViewTextBoxColumn.ReadOnly = True + Me.난방에너지소요량DataGridViewTextBoxColumn.Width = 87 + ' + '난방보조에너지소요량DataGridViewTextBoxColumn + ' + Me.난방보조에너지소요량DataGridViewTextBoxColumn.DataPropertyName = "난방보조에너지소요량" + Me.난방보조에너지소요량DataGridViewTextBoxColumn.HeaderText = "난방보조에너지소요량" + Me.난방보조에너지소요량DataGridViewTextBoxColumn.Name = "난방보조에너지소요량DataGridViewTextBoxColumn" + Me.난방보조에너지소요량DataGridViewTextBoxColumn.ReadOnly = True + Me.난방보조에너지소요량DataGridViewTextBoxColumn.Width = 99 + ' + '냉방에너지소요량DataGridViewTextBoxColumn + ' + Me.냉방에너지소요량DataGridViewTextBoxColumn.DataPropertyName = "냉방에너지소요량" + Me.냉방에너지소요량DataGridViewTextBoxColumn.HeaderText = "냉방에너지소요량" + Me.냉방에너지소요량DataGridViewTextBoxColumn.Name = "냉방에너지소요량DataGridViewTextBoxColumn" + Me.냉방에너지소요량DataGridViewTextBoxColumn.ReadOnly = True + Me.냉방에너지소요량DataGridViewTextBoxColumn.Width = 87 + ' + '냉방보조에너지소요량DataGridViewTextBoxColumn + ' + Me.냉방보조에너지소요량DataGridViewTextBoxColumn.DataPropertyName = "냉방보조에너지소요량" + Me.냉방보조에너지소요량DataGridViewTextBoxColumn.HeaderText = "냉방보조에너지소요량" + Me.냉방보조에너지소요량DataGridViewTextBoxColumn.Name = "냉방보조에너지소요량DataGridViewTextBoxColumn" + Me.냉방보조에너지소요량DataGridViewTextBoxColumn.ReadOnly = True + Me.냉방보조에너지소요량DataGridViewTextBoxColumn.Width = 99 + ' + '급탕에너지소요량DataGridViewTextBoxColumn + ' + Me.급탕에너지소요량DataGridViewTextBoxColumn.DataPropertyName = "급탕에너지소요량" + Me.급탕에너지소요량DataGridViewTextBoxColumn.HeaderText = "급탕에너지소요량" + Me.급탕에너지소요량DataGridViewTextBoxColumn.Name = "급탕에너지소요량DataGridViewTextBoxColumn" + Me.급탕에너지소요량DataGridViewTextBoxColumn.ReadOnly = True + Me.급탕에너지소요량DataGridViewTextBoxColumn.Width = 87 + ' + '급탕보조에너지소요량DataGridViewTextBoxColumn + ' + Me.급탕보조에너지소요량DataGridViewTextBoxColumn.DataPropertyName = "급탕보조에너지소요량" + Me.급탕보조에너지소요량DataGridViewTextBoxColumn.HeaderText = "급탕보조에너지소요량" + Me.급탕보조에너지소요량DataGridViewTextBoxColumn.Name = "급탕보조에너지소요량DataGridViewTextBoxColumn" + Me.급탕보조에너지소요량DataGridViewTextBoxColumn.ReadOnly = True + Me.급탕보조에너지소요량DataGridViewTextBoxColumn.Width = 99 + ' + '난방 + ' + Me.난방.DataPropertyName = "난방" + Me.난방.HeaderText = "난방" + Me.난방.Name = "난방" + Me.난방.ReadOnly = True + Me.난방.Width = 52 + ' + '냉방 + ' + Me.냉방.DataPropertyName = "냉방" + Me.냉방.HeaderText = "냉방" + Me.냉방.Name = "냉방" + Me.냉방.ReadOnly = True + Me.냉방.Width = 52 + ' + '조명 + ' + Me.조명.DataPropertyName = "조명" + Me.조명.HeaderText = "조명" + Me.조명.Name = "조명" + Me.조명.ReadOnly = True + Me.조명.Width = 52 + ' + '급탕 + ' + Me.급탕.DataPropertyName = "급탕" + Me.급탕.HeaderText = "급탕" + Me.급탕.Name = "급탕" + Me.급탕.ReadOnly = True + Me.급탕.Width = 52 + ' + '환기 + ' + Me.환기.DataPropertyName = "환기" + Me.환기.HeaderText = "환기" + Me.환기.Name = "환기" + Me.환기.ReadOnly = True + Me.환기.Width = 52 + ' 'bs_소요량 ' Me.bs_소요량.DataMember = "에너지소요량" @@ -1336,101 +1433,13 @@ Partial Class Frm_RepResult_Admin Me.bs_생산E.DataMember = "생산에너지" Me.bs_생산E.DataSource = Me.DSR ' - 'MonDataGridViewTextBoxColumn1 + 'ToolStripButton1 ' - Me.MonDataGridViewTextBoxColumn1.DataPropertyName = "mon" - Me.MonDataGridViewTextBoxColumn1.HeaderText = "mon" - Me.MonDataGridViewTextBoxColumn1.Name = "MonDataGridViewTextBoxColumn1" - Me.MonDataGridViewTextBoxColumn1.ReadOnly = True - Me.MonDataGridViewTextBoxColumn1.Width = 56 - ' - '난방에너지소요량DataGridViewTextBoxColumn - ' - Me.난방에너지소요량DataGridViewTextBoxColumn.DataPropertyName = "난방에너지소요량" - Me.난방에너지소요량DataGridViewTextBoxColumn.HeaderText = "난방에너지소요량" - Me.난방에너지소요량DataGridViewTextBoxColumn.Name = "난방에너지소요량DataGridViewTextBoxColumn" - Me.난방에너지소요량DataGridViewTextBoxColumn.ReadOnly = True - Me.난방에너지소요량DataGridViewTextBoxColumn.Width = 87 - ' - '난방보조에너지소요량DataGridViewTextBoxColumn - ' - Me.난방보조에너지소요량DataGridViewTextBoxColumn.DataPropertyName = "난방보조에너지소요량" - Me.난방보조에너지소요량DataGridViewTextBoxColumn.HeaderText = "난방보조에너지소요량" - Me.난방보조에너지소요량DataGridViewTextBoxColumn.Name = "난방보조에너지소요량DataGridViewTextBoxColumn" - Me.난방보조에너지소요량DataGridViewTextBoxColumn.ReadOnly = True - Me.난방보조에너지소요량DataGridViewTextBoxColumn.Width = 99 - ' - '냉방에너지소요량DataGridViewTextBoxColumn - ' - Me.냉방에너지소요량DataGridViewTextBoxColumn.DataPropertyName = "냉방에너지소요량" - Me.냉방에너지소요량DataGridViewTextBoxColumn.HeaderText = "냉방에너지소요량" - Me.냉방에너지소요량DataGridViewTextBoxColumn.Name = "냉방에너지소요량DataGridViewTextBoxColumn" - Me.냉방에너지소요량DataGridViewTextBoxColumn.ReadOnly = True - Me.냉방에너지소요량DataGridViewTextBoxColumn.Width = 87 - ' - '냉방보조에너지소요량DataGridViewTextBoxColumn - ' - Me.냉방보조에너지소요량DataGridViewTextBoxColumn.DataPropertyName = "냉방보조에너지소요량" - Me.냉방보조에너지소요량DataGridViewTextBoxColumn.HeaderText = "냉방보조에너지소요량" - Me.냉방보조에너지소요량DataGridViewTextBoxColumn.Name = "냉방보조에너지소요량DataGridViewTextBoxColumn" - Me.냉방보조에너지소요량DataGridViewTextBoxColumn.ReadOnly = True - Me.냉방보조에너지소요량DataGridViewTextBoxColumn.Width = 99 - ' - '급탕에너지소요량DataGridViewTextBoxColumn - ' - Me.급탕에너지소요량DataGridViewTextBoxColumn.DataPropertyName = "급탕에너지소요량" - Me.급탕에너지소요량DataGridViewTextBoxColumn.HeaderText = "급탕에너지소요량" - Me.급탕에너지소요량DataGridViewTextBoxColumn.Name = "급탕에너지소요량DataGridViewTextBoxColumn" - Me.급탕에너지소요량DataGridViewTextBoxColumn.ReadOnly = True - Me.급탕에너지소요량DataGridViewTextBoxColumn.Width = 87 - ' - '급탕보조에너지소요량DataGridViewTextBoxColumn - ' - Me.급탕보조에너지소요량DataGridViewTextBoxColumn.DataPropertyName = "급탕보조에너지소요량" - Me.급탕보조에너지소요량DataGridViewTextBoxColumn.HeaderText = "급탕보조에너지소요량" - Me.급탕보조에너지소요량DataGridViewTextBoxColumn.Name = "급탕보조에너지소요량DataGridViewTextBoxColumn" - Me.급탕보조에너지소요량DataGridViewTextBoxColumn.ReadOnly = True - Me.급탕보조에너지소요량DataGridViewTextBoxColumn.Width = 99 - ' - '난방 - ' - Me.난방.DataPropertyName = "난방" - Me.난방.HeaderText = "난방" - Me.난방.Name = "난방" - Me.난방.ReadOnly = True - Me.난방.Width = 52 - ' - '냉방 - ' - Me.냉방.DataPropertyName = "냉방" - Me.냉방.HeaderText = "냉방" - Me.냉방.Name = "냉방" - Me.냉방.ReadOnly = True - Me.냉방.Width = 52 - ' - '조명 - ' - Me.조명.DataPropertyName = "조명" - Me.조명.HeaderText = "조명" - Me.조명.Name = "조명" - Me.조명.ReadOnly = True - Me.조명.Width = 52 - ' - '급탕 - ' - Me.급탕.DataPropertyName = "급탕" - Me.급탕.HeaderText = "급탕" - Me.급탕.Name = "급탕" - Me.급탕.ReadOnly = True - Me.급탕.Width = 52 - ' - '환기 - ' - Me.환기.DataPropertyName = "환기" - Me.환기.HeaderText = "환기" - Me.환기.Name = "환기" - Me.환기.ReadOnly = True - Me.환기.Width = 52 + Me.ToolStripButton1.Image = CType(resources.GetObject("ToolStripButton1.Image"), System.Drawing.Image) + Me.ToolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta + Me.ToolStripButton1.Name = "ToolStripButton1" + Me.ToolStripButton1.Size = New System.Drawing.Size(89, 22) + Me.ToolStripButton1.Text = "Export CSV" ' 'Frm_RepResult_Admin ' @@ -1654,4 +1663,5 @@ Partial Class Frm_RepResult_Admin Friend WithEvents 조명 As System.Windows.Forms.DataGridViewTextBoxColumn Friend WithEvents 급탕 As System.Windows.Forms.DataGridViewTextBoxColumn Friend WithEvents 환기 As System.Windows.Forms.DataGridViewTextBoxColumn + Friend WithEvents ToolStripButton1 As System.Windows.Forms.ToolStripButton End Class diff --git a/ArinWarev1/FORM-BASIC/Frm_RepResult_Admin.resx b/ArinWarev1/FORM-BASIC/Frm_RepResult_Admin.resx index 7a51ee5..46f1134 100644 --- a/ArinWarev1/FORM-BASIC/Frm_RepResult_Admin.resx +++ b/ArinWarev1/FORM-BASIC/Frm_RepResult_Admin.resx @@ -224,6 +224,21 @@ iFabELLuV+NxZzW27EzywNY1iMgm4Uoj65nPSOOlGMpfi+g5TUSCvug3onN5Npp0C/B0yWIM71yHyNm9 qk7s7EWiyQd1lVkIn8mA/uVhi16RiSVHo2eMCapyNHb7VrododNFyhkzxxox88h/mvZO/vN3FuI3yXDJ RlfZIFMAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== @@ -238,9 +253,21 @@ True + + True + + + True + 17, 56 + + 17, 56 + + + 17, 17 + 17, 17 @@ -262,10 +289,34 @@ 111, 17 + + True + + + True + + + True + + + True + + + True + + + 111, 17 + + + 218, 17 + 218, 17 344, 17 + + 344, 17 + \ No newline at end of file diff --git a/ArinWarev1/FORM-BASIC/Frm_RepResult_Admin.vb b/ArinWarev1/FORM-BASIC/Frm_RepResult_Admin.vb index f880372..cd3e4a6 100644 --- a/ArinWarev1/FORM-BASIC/Frm_RepResult_Admin.vb +++ b/ArinWarev1/FORM-BASIC/Frm_RepResult_Admin.vb @@ -54,5 +54,46 @@ ' Me.bs.DataSource = DSETR End Sub + Private Sub ToolStripButton1_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripButton1.Click + Dim sd As New SaveFileDialog() + sd.Filter = "csv|*.csv" + sd.FilterIndex = 0 + If (sd.ShowDialog() <> Windows.Forms.DialogResult.OK) Then Return + + + Dim Fs As New System.IO.FileStream(sd.FileName, IO.FileMode.Create) + Dim SW As New System.IO.StreamWriter(Fs, System.Text.Encoding.Default) + Dim Strbuf As String = "" + + Dim colList As New List(Of Integer) + + SW.WriteLine(",Code,Total,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12") + Strbuf = "" + For Each DR As Windows.Forms.DataGridViewRow In DataGridView1.Rows + + Strbuf = Strbuf & "," & DR.Cells(0).Value.ToString + Strbuf = Strbuf & "," & DR.Cells(7 + 0).Value.ToString + Strbuf = Strbuf & "," & DR.Cells(7 + 1).Value.ToString + Strbuf = Strbuf & "," & DR.Cells(7 + 2).Value.ToString + Strbuf = Strbuf & "," & DR.Cells(7 + 3).Value.ToString + Strbuf = Strbuf & "," & DR.Cells(7 + 4).Value.ToString + Strbuf = Strbuf & "," & DR.Cells(7 + 5).Value.ToString + Strbuf = Strbuf & "," & DR.Cells(7 + 6).Value.ToString + Strbuf = Strbuf & "," & DR.Cells(7 + 7).Value.ToString + Strbuf = Strbuf & "," & DR.Cells(7 + 8).Value.ToString + Strbuf = Strbuf & "," & DR.Cells(7 + 9).Value.ToString + Strbuf = Strbuf & "," & DR.Cells(7 + 10).Value.ToString + Strbuf = Strbuf & "," & DR.Cells(7 + 11).Value.ToString + Strbuf = Strbuf & "," & DR.Cells(7 + 12).Value.ToString + SW.WriteLine(Strbuf) + Strbuf = "" + Next + SW.Dispose() + Fs.Dispose() + MsgBox("저장완료" & vbCrLf & sd.FileName, MsgBoxStyle.Information, "확인") + Shell("notepad " & sd.FileName, AppWinStyle.NormalFocus) + + + End Sub End Class diff --git a/ArinWarev1/MdiMain.Designer.vb b/ArinWarev1/MdiMain.Designer.vb index 911ce8a..0b4ff74 100644 --- a/ArinWarev1/MdiMain.Designer.vb +++ b/ArinWarev1/MdiMain.Designer.vb @@ -591,7 +591,7 @@ Partial Class MdiMain ' Me.RibbonButton23.Name = "RibbonButton23" Me.RibbonButton23.SmallImage = CType(resources.GetObject("RibbonButton23.SmallImage"), System.Drawing.Image) - Me.RibbonButton23.Text = "--" + Me.RibbonButton23.Text = "부분부하" ' 'RibbonButton22 ' diff --git a/ArinWarev1/MdiMain.vb b/ArinWarev1/MdiMain.vb index 4727032..24c1663 100644 --- a/ArinWarev1/MdiMain.vb +++ b/ArinWarev1/MdiMain.vb @@ -436,8 +436,6 @@ Public Class MdiMain Dim fn1 As String = AppDomain.CurrentDomain.BaseDirectory + "\profile.dat" Dim fn2 As String = AppDomain.CurrentDomain.BaseDirectory + "\weather{0}.dat" - - If System.IO.File.Exists(fn0) Then Dim buffer() As Byte = System.IO.File.ReadAllBytes(String.Format(fn0, "")) If (buffer(0) = &H90) Then '//ȣȭ @@ -2404,8 +2402,10 @@ ENDSTAT: '// '// _ҿ䷮ P(92) = (-1 * (Result1o.E(0).귮¾翭 + Result1o.E(0).귮) - 1).ToString() + Console.WriteLine("exp report ==========") For i As Integer = 1 To 99 NewDR("c" + i.ToString("000")) = P(i - 1) + Console.WriteLine("P[{0}]={1}", i, P(i - 1)) Next DSETR1.ExtReport.AddExtReportRow(NewDR) @@ -3073,61 +3073,64 @@ ENDSTAT: '// End Sub Private Sub RibbonButton24_Click_1(sender As Object, e As EventArgs) Handles RibbonButton24.Click + '//save file (weather, profile) Dim fn0 As String = AppDomain.CurrentDomain.BaseDirectory + "\common.dat" Dim fn1 As String = AppDomain.CurrentDomain.BaseDirectory + "\profile.dat" Dim fn2 As String = AppDomain.CurrentDomain.BaseDirectory + "\weather{0}.dat" - 'DSET1.tbl_common_od.WriteXml(String.Format(fn0, ""), True) - 'DSET1.tbl_profile_od.WriteXml(String.Format(fn1, ""), True) - 'DSET1.tbl_weather_od.WriteXml(String.Format(fn2, ""), True) - 'DSET1.weather_cha_od.WriteXml(String.Format(fn2, "_ch"), True) - 'DSET1.weather_group.WriteXml(String.Format(fn2, "_gr"), True) - 'DSET1.weather_ilsa_od.WriteXml(String.Format(fn2, "_is"), True) - 'DSET1.weather_supdo_od.WriteXml(String.Format(fn2, "_sd"), True) - 'DSET1.weather_temp_od.WriteXml(String.Format(fn2, "_tp"), True) + If MsgBox("ȣȭ Ͻðڽϱ?", MsgBoxStyle.YesNo, "Ȯ") = MsgBoxResult.Yes Then + Dim ms0 As New System.IO.MemoryStream() + Dim ms1 As New System.IO.MemoryStream() + Dim ms2 As New System.IO.MemoryStream() - Dim ms0 As New System.IO.MemoryStream() - Dim ms1 As New System.IO.MemoryStream() - Dim ms2 As New System.IO.MemoryStream() + Dim ms21 As New System.IO.MemoryStream() + Dim ms22 As New System.IO.MemoryStream() + Dim ms23 As New System.IO.MemoryStream() + Dim ms24 As New System.IO.MemoryStream() + Dim ms25 As New System.IO.MemoryStream() - Dim ms21 As New System.IO.MemoryStream() - Dim ms22 As New System.IO.MemoryStream() - Dim ms23 As New System.IO.MemoryStream() - Dim ms24 As New System.IO.MemoryStream() - Dim ms25 As New System.IO.MemoryStream() + DSET1.tbl_common_od.WriteXml(ms0) + Dim buffer0() As Byte = EnctryArea(ms0.GetBuffer()) + System.IO.File.WriteAllBytes(String.Format(fn0, ""), buffer0) - DSET1.tbl_common_od.WriteXml(ms0) - Dim buffer0() As Byte = EnctryArea(ms0.GetBuffer()) - System.IO.File.WriteAllBytes(String.Format(fn0, ""), buffer0) + DSET1.tbl_profile_od.WriteXml(ms1) + buffer0 = EnctryArea(ms1.GetBuffer()) + System.IO.File.WriteAllBytes(String.Format(fn1, ""), buffer0) - DSET1.tbl_profile_od.WriteXml(ms1) - buffer0 = EnctryArea(ms1.GetBuffer()) - System.IO.File.WriteAllBytes(String.Format(fn1, ""), buffer0) + DSET1.tbl_weather_od.WriteXml(ms2) + buffer0 = EnctryArea(ms2.GetBuffer()) + System.IO.File.WriteAllBytes(String.Format(fn2, ""), buffer0) - DSET1.tbl_weather_od.WriteXml(ms2) - buffer0 = EnctryArea(ms2.GetBuffer()) - System.IO.File.WriteAllBytes(String.Format(fn2, ""), buffer0) + DSET1.weather_cha_od.WriteXml(ms21) + buffer0 = EnctryArea(ms21.GetBuffer()) + System.IO.File.WriteAllBytes(String.Format(fn2, "_ch"), buffer0) - DSET1.weather_cha_od.WriteXml(ms21) - buffer0 = EnctryArea(ms21.GetBuffer()) - System.IO.File.WriteAllBytes(String.Format(fn2, "_ch"), buffer0) + DSET1.weather_group.WriteXml(ms22) + buffer0 = EnctryArea(ms22.GetBuffer()) + System.IO.File.WriteAllBytes(String.Format(fn2, "_gr"), buffer0) - DSET1.weather_group.WriteXml(ms22) - buffer0 = EnctryArea(ms22.GetBuffer()) - System.IO.File.WriteAllBytes(String.Format(fn2, "_gr"), buffer0) + DSET1.weather_ilsa_od.WriteXml(ms23) + buffer0 = EnctryArea(ms23.GetBuffer()) + System.IO.File.WriteAllBytes(String.Format(fn2, "_is"), buffer0) - DSET1.weather_ilsa_od.WriteXml(ms23) - buffer0 = EnctryArea(ms23.GetBuffer()) - System.IO.File.WriteAllBytes(String.Format(fn2, "_is"), buffer0) + DSET1.weather_supdo_od.WriteXml(ms24) + buffer0 = EnctryArea(ms24.GetBuffer()) + System.IO.File.WriteAllBytes(String.Format(fn2, "_sd"), buffer0) - DSET1.weather_supdo_od.WriteXml(ms24) - buffer0 = EnctryArea(ms24.GetBuffer()) - System.IO.File.WriteAllBytes(String.Format(fn2, "_sd"), buffer0) - - DSET1.weather_temp_od.WriteXml(ms25) - buffer0 = EnctryArea(ms25.GetBuffer()) - System.IO.File.WriteAllBytes(String.Format(fn2, "_tp"), buffer0) + DSET1.weather_temp_od.WriteXml(ms25) + buffer0 = EnctryArea(ms25.GetBuffer()) + System.IO.File.WriteAllBytes(String.Format(fn2, "_tp"), buffer0) + Else + DSET1.tbl_common_od.WriteXml(String.Format(fn0, "") + ".xml", True) + DSET1.tbl_profile_od.WriteXml(String.Format(fn1, "") + ".xml", True) + DSET1.tbl_weather_od.WriteXml(String.Format(fn2, "") + ".xml", True) + DSET1.weather_cha_od.WriteXml(String.Format(fn2, "_ch") + ".xml", True) + DSET1.weather_group.WriteXml(String.Format(fn2, "_gr") + ".xml", True) + DSET1.weather_ilsa_od.WriteXml(String.Format(fn2, "_is") + ".xml", True) + DSET1.weather_supdo_od.WriteXml(String.Format(fn2, "_sd") + ".xml", True) + DSET1.weather_temp_od.WriteXml(String.Format(fn2, "_tp") + ".xml", True) + End If End Sub @@ -4252,7 +4255,12 @@ ENDSTAT: '// End Sub Private Sub RibbonButton23_Click_1(sender As System.Object, e As System.EventArgs) Handles RibbonButton23.Click - + If Not Prj.Opened Then + Work_msg_timer(CLang.Ͼ) + Return + End If + Frm_Buha.ControlBox = True + Frm_Buha.Show() End Sub Private Sub ExportCSV() diff --git a/ArinWarev1/REPORT-OD/Report_result.rdlc b/ArinWarev1/REPORT-OD/Report_result.rdlc index 1f4d63e..1aabc73 100644 --- a/ArinWarev1/REPORT-OD/Report_result.rdlc +++ b/ArinWarev1/REPORT-OD/Report_result.rdlc @@ -798,6 +798,7 @@ iif(Fields!type.Value="조명에너지","#765e00","#475e76"))))) 2pt + true Output @@ -911,8 +912,8 @@ iif(Fields!type.Value="조명에너지","#765e00","#475e76"))))) DSR_Graph_ReqUse 19cm 0.5cm - 1.26984cm - 4.73968cm + 1.26985cm + 4.73967cm 2 - 20.26984cm + 20.26985cm