Compare commits
	
		
			8 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 1d6c51df3b | |||
| 40842778e0 | |||
| 6cd2abe560 | |||
| 0eaeeb0aac | |||
|   | 370a838f42 | ||
|   | 52a7c0f1f7 | ||
|   | c6bc4676d3 | ||
|   | cf277012bc | 
							
								
								
									
										8
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -8,3 +8,11 @@ obj | |||||||
| /Setup1/Debug | /Setup1/Debug | ||||||
| /Dotfuscated | /Dotfuscated | ||||||
| UpgradeLog.htm | UpgradeLog.htm | ||||||
|  | Packages | ||||||
|  | .vs | ||||||
|  | /NUL | ||||||
|  |  | ||||||
|  | # WebView2 Runtime (Fixed Version - 약 100-150MB, 설치 프로그램에 포함) | ||||||
|  | WebView2Runtime/ | ||||||
|  | # WebView2 User Data (캐시, 쿠키 등 - 런타임 시 자동 생성) | ||||||
|  | WebView2Data/ | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ | |||||||
|     <AssemblyName>ArinLog.Net4</AssemblyName> |     <AssemblyName>ArinLog.Net4</AssemblyName> | ||||||
|     <FileAlignment>512</FileAlignment> |     <FileAlignment>512</FileAlignment> | ||||||
|     <MyType>Windows</MyType> |     <MyType>Windows</MyType> | ||||||
|     <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> |     <TargetFrameworkVersion>v4.8</TargetFrameworkVersion> | ||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||||||
|     <DebugSymbols>true</DebugSymbols> |     <DebugSymbols>true</DebugSymbols> | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ | |||||||
|     <UpgradeBackupLocation> |     <UpgradeBackupLocation> | ||||||
|     </UpgradeBackupLocation> |     </UpgradeBackupLocation> | ||||||
|     <OldToolsVersion>3.5</OldToolsVersion> |     <OldToolsVersion>3.5</OldToolsVersion> | ||||||
|     <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> |     <TargetFrameworkVersion>v4.8</TargetFrameworkVersion> | ||||||
|     <TargetFrameworkProfile /> |     <TargetFrameworkProfile /> | ||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ | |||||||
|     <UpgradeBackupLocation> |     <UpgradeBackupLocation> | ||||||
|     </UpgradeBackupLocation> |     </UpgradeBackupLocation> | ||||||
|     <OldToolsVersion>3.5</OldToolsVersion> |     <OldToolsVersion>3.5</OldToolsVersion> | ||||||
|     <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> |     <TargetFrameworkVersion>v4.8</TargetFrameworkVersion> | ||||||
|     <TargetFrameworkProfile /> |     <TargetFrameworkProfile /> | ||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||||||
|   | |||||||
| @@ -17,6 +17,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Utility", "Utility\Utility. | |||||||
| EndProject | EndProject | ||||||
| Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Setup1", "Setup1\Setup1.vdproj", "{0E52FBAC-1A86-4722-93D0-CA7B8570B617}" | Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Setup1", "Setup1\Setup1.vdproj", "{0E52FBAC-1A86-4722-93D0-CA7B8570B617}" | ||||||
| EndProject | EndProject | ||||||
|  | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{A01A7396-C1BE-4D13-8B51-C9C1830DA088}" | ||||||
|  | 	ProjectSection(SolutionItems) = preProject | ||||||
|  | 		CLAUDE.md = CLAUDE.md | ||||||
|  | 	EndProjectSection | ||||||
|  | EndProject | ||||||
| Global | Global | ||||||
| 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||||
| 		CD_ROM|Any CPU = CD_ROM|Any CPU | 		CD_ROM|Any CPU = CD_ROM|Any CPU | ||||||
|   | |||||||
| @@ -2581,6 +2581,11 @@ | |||||||
|                     t_w_100 = Q_w_outg_i / (Q_dot_N * d_Nutz_mth) '(3.2.9-61) |                     t_w_100 = Q_w_outg_i / (Q_dot_N * d_Nutz_mth) '(3.2.9-61) | ||||||
|                     Q_dot_d_in = Q_h_outg_i / (d_h_rB * (t_h_rL_T - t_w_100)) '(3.2.7-69) 난방 또는 난방 및 급탕 |                     Q_dot_d_in = Q_h_outg_i / (d_h_rB * (t_h_rL_T - t_w_100)) '(3.2.7-69) 난방 또는 난방 및 급탕 | ||||||
|                     ' 우선 미적용 Q_dot_d_in = sigma_Q_h_outg / (t_Betrieb_K - t_W_100) * d_Nutz_mth '(3.2.7-70) 난방, 급탕 및 공조 |                     ' 우선 미적용 Q_dot_d_in = sigma_Q_h_outg / (t_Betrieb_K - t_W_100) * d_Nutz_mth '(3.2.7-70) 난방, 급탕 및 공조 | ||||||
|  |                     If Q_dot_d_in <= 0 Then '2025.08.22 추가 | ||||||
|  |                         t_w_100 = 0 | ||||||
|  |                         Q_dot_d_in = 0 | ||||||
|  |                     End If | ||||||
|  |  | ||||||
|                 End If |                 End If | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -2701,6 +2706,14 @@ | |||||||
|                 Q_h_g = Q_h_g + (Q_h_g_v_i * d_h_rB) * system_count '=====2013.08.13 수정 '(3.2.7-66) |                 Q_h_g = Q_h_g + (Q_h_g_v_i * d_h_rB) * system_count '=====2013.08.13 수정 '(3.2.7-66) | ||||||
|                 Q_h_g_i = Q_h_g_v_i * d_h_rB |                 Q_h_g_i = Q_h_g_v_i * d_h_rB | ||||||
|  |  | ||||||
|  |                 'If Q_h_g_i < 0 Then | ||||||
|  |                 '    Console.WriteLine("minus") | ||||||
|  |                 'End If | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|             Else |             Else | ||||||
|  |  | ||||||
|                 If dr난방.열생산기기방식 = "지역난방" Then ' Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_boiler - 1) = "지역난방" Then |                 If dr난방.열생산기기방식 = "지역난방" Then ' Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_boiler - 1) = "지역난방" Then | ||||||
| @@ -2846,11 +2859,13 @@ | |||||||
|                 If d_Nutz_mth = 0 Then '//201.11.20 추가(학교프로파일 적용시 문제점 해결) |                 If d_Nutz_mth = 0 Then '//201.11.20 추가(학교프로파일 적용시 문제점 해결) | ||||||
|                     t_w_100 = 0 |                     t_w_100 = 0 | ||||||
|                 Else |                 Else | ||||||
|                     t_w_100 = Q_w_outg / (Q_dot_N * d_Nutz_mth) |                     t_w_100 = Q_w_outg_i / (Q_dot_N * d_Nutz_mth)   '2025.08.19 Q_w_outg 를 Q_w_outg_i 로 수정 | ||||||
|                 End If |                 End If | ||||||
|  |  | ||||||
|                 Q_h_g_aux = Q_h_g_aux + (P_h_g_aux * (t_h_rL - t_w_100 * d_op_max_mth * d_Nutz_a / 365) + P_aux_SB * (24 * d_op_max_mth - t_h_rL)) * system_count '=====2013.08.18 수정 '(3.2.7-80) |                 Q_h_g_aux = Q_h_g_aux + (P_h_g_aux * (t_h_rL - t_w_100 * d_op_max_mth * d_Nutz_a / 365) + P_aux_SB * (24 * d_op_max_mth - t_h_rL)) * system_count '=====2013.08.18 수정 '(3.2.7-80) | ||||||
|  |                 'If Q_h_g_aux < 0 Then | ||||||
|  |                 '    Console.WriteLine("minus") | ||||||
|  |                 'End If | ||||||
|  |  | ||||||
|             End If |             End If | ||||||
|  |  | ||||||
| @@ -3716,6 +3731,11 @@ | |||||||
|                     t_w_100 = Q_w_outg_i / (Q_dot_N * d_Nutz_mth) '(3.2.9-61) |                     t_w_100 = Q_w_outg_i / (Q_dot_N * d_Nutz_mth) '(3.2.9-61) | ||||||
|                     Q_dot_d_in = Q_h_outg_i / (d_h_rB * (t_h_rL_T - t_w_100)) '(3.2.7-69) 난방 또는 난방 및 급탕 |                     Q_dot_d_in = Q_h_outg_i / (d_h_rB * (t_h_rL_T - t_w_100)) '(3.2.7-69) 난방 또는 난방 및 급탕 | ||||||
|                     ' 우선 미적용 Q_dot_d_in = sigma_Q_h_outg / (t_Betrieb_K - t_W_100) * d_Nutz_mth '(3.2.7-70) 난방, 급탕 및 공조 |                     ' 우선 미적용 Q_dot_d_in = sigma_Q_h_outg / (t_Betrieb_K - t_W_100) * d_Nutz_mth '(3.2.7-70) 난방, 급탕 및 공조 | ||||||
|  |                     If Q_dot_d_in <= 0 Then  '2025.08.22 수정 | ||||||
|  |                         t_w_100 = 0 | ||||||
|  |                         Q_dot_d_in = 0 | ||||||
|  |                     End If | ||||||
|  |  | ||||||
|                 End If |                 End If | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -3836,6 +3856,14 @@ | |||||||
|                 Q_h_g = Q_h_g + (Q_h_g_v_i * d_h_rB) * system_count '=====2013.08.13 수정 '(3.2.7-66) |                 Q_h_g = Q_h_g + (Q_h_g_v_i * d_h_rB) * system_count '=====2013.08.13 수정 '(3.2.7-66) | ||||||
|                 Q_h_g_i = Q_h_g_v_i * d_h_rB |                 Q_h_g_i = Q_h_g_v_i * d_h_rB | ||||||
|  |  | ||||||
|  |                 'If Q_h_g_i < 0 Then | ||||||
|  |                 '    Console.WriteLine("minus") | ||||||
|  |                 'End If | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|             Else |             Else | ||||||
|  |  | ||||||
|                 If dr난방.열생산기기방식 = "지역난방" Then ' Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_boiler - 1) = "지역난방" Then |                 If dr난방.열생산기기방식 = "지역난방" Then ' Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_boiler - 1) = "지역난방" Then | ||||||
| @@ -3981,15 +4009,18 @@ | |||||||
|                 If d_Nutz_mth = 0 Then '//201.11.20 추가(학교프로파일 적용시 문제점 해결) |                 If d_Nutz_mth = 0 Then '//201.11.20 추가(학교프로파일 적용시 문제점 해결) | ||||||
|                     t_w_100 = 0 |                     t_w_100 = 0 | ||||||
|                 Else |                 Else | ||||||
|                     If system_count = 0 Then |                     'If system_count = 0 Then | ||||||
|                         t_w_100 = Q_w_outg_i / (Q_dot_N * d_Nutz_mth) |                     '    t_w_100 = Q_w_outg_i / (Q_dot_N * d_Nutz_mth) | ||||||
|                     Else |                     'Else | ||||||
|                         t_w_100 = (Q_w_outg_i) / (Q_dot_N * d_Nutz_mth)   '//2011.12.04 수정 |                     t_w_100 = (Q_w_outg_i) / (Q_dot_N * d_Nutz_mth)   '//2011.12.04 수정 | ||||||
|                     End If |                     'End If | ||||||
|  |  | ||||||
|                 End If |                 End If | ||||||
|  |  | ||||||
|                 Q_h_g_aux = Q_h_g_aux + (P_h_g_aux * (t_h_rL - t_w_100 * d_op_max_mth * d_Nutz_a / 365) + P_aux_SB * (24 * d_op_max_mth - t_h_rL)) * system_count '=====2013.08.18 수정 '(3.2.7-80) |                 Q_h_g_aux = Q_h_g_aux + (P_h_g_aux * (t_h_rL - t_w_100 * d_op_max_mth * d_Nutz_a / 365) + P_aux_SB * (24 * d_op_max_mth - t_h_rL)) * system_count '=====2013.08.18 수정 '(3.2.7-80) | ||||||
|  |                 'If Q_h_g_aux < 0 Then | ||||||
|  |                 '    Console.WriteLine("minus") | ||||||
|  |                 'End If | ||||||
|  |  | ||||||
|  |  | ||||||
|             End If |             End If | ||||||
|   | |||||||
| @@ -498,11 +498,8 @@ | |||||||
|                 P_pk = K_pk * a |                 P_pk = K_pk * a | ||||||
|  |  | ||||||
|                 If Dr신재생.대지외설치여부 Then |                 If Dr신재생.대지외설치여부 Then | ||||||
|                     E_el_pv_out_offsite = E_el_pv_out_offsite + E_sol * P_pk * f_perf |                     E_el_pv_out_offsite += E_sol * P_pk * f_perf | ||||||
|                 Else |                 Else | ||||||
|  |  | ||||||
|               |  | ||||||
|  |  | ||||||
|                     E_el_pv_out += E_sol * P_pk * f_perf |                     E_el_pv_out += E_sol * P_pk * f_perf | ||||||
|                 End If |                 End If | ||||||
|  |  | ||||||
| @@ -908,7 +905,7 @@ | |||||||
|         E_chp_gen_in = Q_chp_gen_out / (eta_T_chp_an / 100) |         E_chp_gen_in = Q_chp_gen_out / (eta_T_chp_an / 100) | ||||||
|         E_el_chp_out = E_chp_gen_in * eta_el_chp_an / 100 |         E_el_chp_out = E_chp_gen_in * eta_el_chp_an / 100 | ||||||
|  |  | ||||||
|  |         Result.생산E(i_chp_month).열병합전력생산량 += E_el_chp_out | ||||||
|  |  | ||||||
|         '//전기생산량 열병합 |         '//전기생산량 열병합 | ||||||
|         If Dr신재생.열병합신재생여부 Then |         If Dr신재생.열병합신재생여부 Then | ||||||
| @@ -981,11 +978,11 @@ | |||||||
|  |  | ||||||
|             pLog.Add(String.Format("Calc_CogenerationSystemEN 결과3 신재생면적당열생산량={0}", Result.생산E(i_chp_month).신재생면적당열생산량)) |             pLog.Add(String.Format("Calc_CogenerationSystemEN 결과3 신재생면적당열생산량={0}", Result.생산E(i_chp_month).신재생면적당열생산량)) | ||||||
|  |  | ||||||
|         Else |             'Else | ||||||
|             Result.생산E(i_chp_month).열병합전력생산량 += E_el_chp_out '// 20241229 추가 |             '    Result.생산E(i_chp_month).열병합전력생산량 += E_el_chp_out '// 20241229 추가 | ||||||
|  |  | ||||||
|             pLog.Add(String.Format("Calc_CogenerationSystemEN 결과0 E_chp_gen_in={0},E_el_chp_out={1}", E_chp_gen_in, E_el_chp_out)) |             '    pLog.Add(String.Format("Calc_CogenerationSystemEN 결과0 E_chp_gen_in={0},E_el_chp_out={1}", E_chp_gen_in, E_el_chp_out)) | ||||||
|             pLog.Add(String.Format("Calc_CogenerationSystemEN 결과1 열병합전력생산량={0}", Result.생산E(i_chp_month).열병합전력생산량)) |             '    pLog.Add(String.Format("Calc_CogenerationSystemEN 결과1 열병합전력생산량={0}", Result.생산E(i_chp_month).열병합전력생산량)) | ||||||
|  |  | ||||||
|         End If |         End If | ||||||
|         'DSETR.TReqUse.Rows(77)("M" & Format(i_chp_month, "00")) = CSng(DSETR.TReqUse.Rows(77)("M" & Format(i_chp_month, "00"))) + E_el_chp_out ' Sheets("계산결과").Cells(96, 7 + i_chp_month) = E_el_chp_out |         'DSETR.TReqUse.Rows(77)("M" & Format(i_chp_month, "00")) = CSng(DSETR.TReqUse.Rows(77)("M" & Format(i_chp_month, "00"))) + E_el_chp_out ' Sheets("계산결과").Cells(96, 7 + i_chp_month) = E_el_chp_out | ||||||
|   | |||||||
| @@ -1,4 +1,12 @@ | |||||||
| Partial Class DS | Partial Class DS | ||||||
|  |     Partial Class tbl_ykDataTable | ||||||
|  |  | ||||||
|  |         Private Sub tbl_ykDataTable_tbl_ykRowChanging(sender As System.Object, e As tbl_ykRowChangeEvent) Handles Me.tbl_ykRowChanging | ||||||
|  |  | ||||||
|  |         End Sub | ||||||
|  |  | ||||||
|  |     End Class | ||||||
|  |  | ||||||
|     Partial Class tbl_profileDataTable |     Partial Class tbl_profileDataTable | ||||||
|  |  | ||||||
|     End Class |     End Class | ||||||
|   | |||||||
| @@ -29,7 +29,7 @@ | |||||||
|     <OldToolsVersion>3.5</OldToolsVersion> |     <OldToolsVersion>3.5</OldToolsVersion> | ||||||
|     <ApplicationManifest>My Project\app.manifest</ApplicationManifest> |     <ApplicationManifest>My Project\app.manifest</ApplicationManifest> | ||||||
|     <ApplicationIcon>002.ico</ApplicationIcon> |     <ApplicationIcon>002.ico</ApplicationIcon> | ||||||
|     <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> |     <TargetFrameworkVersion>v4.8</TargetFrameworkVersion> | ||||||
|     <TargetFrameworkProfile /> |     <TargetFrameworkProfile /> | ||||||
|     <PublishUrl>ftp://tindevil.com/www/mynetapp/t4/</PublishUrl> |     <PublishUrl>ftp://tindevil.com/www/mynetapp/t4/</PublishUrl> | ||||||
|     <Install>true</Install> |     <Install>true</Install> | ||||||
| @@ -51,6 +51,8 @@ | |||||||
|     <ApplicationVersion>1.0.0.%2a</ApplicationVersion> |     <ApplicationVersion>1.0.0.%2a</ApplicationVersion> | ||||||
|     <UseApplicationTrust>false</UseApplicationTrust> |     <UseApplicationTrust>false</UseApplicationTrust> | ||||||
|     <BootstrapperEnabled>true</BootstrapperEnabled> |     <BootstrapperEnabled>true</BootstrapperEnabled> | ||||||
|  |     <NuGetPackageImportStamp> | ||||||
|  |     </NuGetPackageImportStamp> | ||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||||||
|     <DebugSymbols>true</DebugSymbols> |     <DebugSymbols>true</DebugSymbols> | ||||||
| @@ -111,8 +113,41 @@ | |||||||
|       <SpecificVersion>False</SpecificVersion> |       <SpecificVersion>False</SpecificVersion> | ||||||
|       <HintPath>..\Interop.VBIDE.dll</HintPath> |       <HintPath>..\Interop.VBIDE.dll</HintPath> | ||||||
|     </Reference> |     </Reference> | ||||||
|  |     <Reference Include="Microsoft.Owin, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | ||||||
|  |       <SpecificVersion>False</SpecificVersion> | ||||||
|  |       <HintPath>..\lib\Microsoft.Owin.dll</HintPath> | ||||||
|  |     </Reference> | ||||||
|  |     <Reference Include="Microsoft.Owin.FileSystems, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | ||||||
|  |       <SpecificVersion>False</SpecificVersion> | ||||||
|  |       <HintPath>..\lib\Microsoft.Owin.FileSystems.dll</HintPath> | ||||||
|  |     </Reference> | ||||||
|  |     <Reference Include="Microsoft.Owin.Host.HttpListener, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | ||||||
|  |       <SpecificVersion>False</SpecificVersion> | ||||||
|  |       <HintPath>..\lib\Microsoft.Owin.Host.HttpListener.dll</HintPath> | ||||||
|  |     </Reference> | ||||||
|  |     <Reference Include="Microsoft.Owin.Hosting, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | ||||||
|  |       <SpecificVersion>False</SpecificVersion> | ||||||
|  |       <HintPath>..\lib\Microsoft.Owin.Hosting.dll</HintPath> | ||||||
|  |     </Reference> | ||||||
|  |     <Reference Include="Microsoft.Owin.StaticFiles, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | ||||||
|  |       <SpecificVersion>False</SpecificVersion> | ||||||
|  |       <HintPath>..\lib\Microsoft.Owin.StaticFiles.dll</HintPath> | ||||||
|  |     </Reference> | ||||||
|     <Reference Include="Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> |     <Reference Include="Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> | ||||||
|     <Reference Include="Microsoft.ReportViewer.WinForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" /> |     <Reference Include="Microsoft.ReportViewer.WinForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" /> | ||||||
|  |     <Reference Include="Microsoft.Web.WebView2.Core, Version=1.0.3537.50, Culture=neutral, PublicKeyToken=2a8ab48044d2601e, processorArchitecture=MSIL"> | ||||||
|  |       <HintPath>..\packages\Microsoft.Web.WebView2.1.0.3537.50\lib\net462\Microsoft.Web.WebView2.Core.dll</HintPath> | ||||||
|  |     </Reference> | ||||||
|  |     <Reference Include="Microsoft.Web.WebView2.WinForms, Version=1.0.3537.50, Culture=neutral, PublicKeyToken=2a8ab48044d2601e, processorArchitecture=MSIL"> | ||||||
|  |       <HintPath>..\packages\Microsoft.Web.WebView2.1.0.3537.50\lib\net462\Microsoft.Web.WebView2.WinForms.dll</HintPath> | ||||||
|  |     </Reference> | ||||||
|  |     <Reference Include="Microsoft.Web.WebView2.Wpf, Version=1.0.3537.50, Culture=neutral, PublicKeyToken=2a8ab48044d2601e, processorArchitecture=MSIL"> | ||||||
|  |       <HintPath>..\packages\Microsoft.Web.WebView2.1.0.3537.50\lib\net462\Microsoft.Web.WebView2.Wpf.dll</HintPath> | ||||||
|  |     </Reference> | ||||||
|  |     <Reference Include="Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0ebd12fd5e55cc5, processorArchitecture=MSIL"> | ||||||
|  |       <SpecificVersion>False</SpecificVersion> | ||||||
|  |       <HintPath>..\lib\Owin.dll</HintPath> | ||||||
|  |     </Reference> | ||||||
|     <Reference Include="System" /> |     <Reference Include="System" /> | ||||||
|     <Reference Include="System.Data" /> |     <Reference Include="System.Data" /> | ||||||
|     <Reference Include="System.Data.DataSetExtensions" /> |     <Reference Include="System.Data.DataSetExtensions" /> | ||||||
| @@ -173,6 +208,12 @@ | |||||||
|     <Compile Include="Forms_Basic\frm_batch.vb"> |     <Compile Include="Forms_Basic\frm_batch.vb"> | ||||||
|       <SubType>Form</SubType> |       <SubType>Form</SubType> | ||||||
|     </Compile> |     </Compile> | ||||||
|  |     <Compile Include="Forms_Basic\Frm_WebManual.Designer.vb"> | ||||||
|  |       <DependentUpon>Frm_WebManual.vb</DependentUpon> | ||||||
|  |     </Compile> | ||||||
|  |     <Compile Include="Forms_Basic\Frm_WebManual.vb"> | ||||||
|  |       <SubType>Form</SubType> | ||||||
|  |     </Compile> | ||||||
|     <Compile Include="Forms_Basic\fSelectWeatherGroup.Designer.vb"> |     <Compile Include="Forms_Basic\fSelectWeatherGroup.Designer.vb"> | ||||||
|       <DependentUpon>fSelectWeatherGroup.vb</DependentUpon> |       <DependentUpon>fSelectWeatherGroup.vb</DependentUpon> | ||||||
|     </Compile> |     </Compile> | ||||||
| @@ -209,6 +250,12 @@ | |||||||
|     <Compile Include="Forms_Report\Frm_Macro.vb"> |     <Compile Include="Forms_Report\Frm_Macro.vb"> | ||||||
|       <SubType>Form</SubType> |       <SubType>Form</SubType> | ||||||
|     </Compile> |     </Compile> | ||||||
|  |     <Compile Include="Forms_Report\Frm_Macro2.Designer.vb"> | ||||||
|  |       <DependentUpon>Frm_Macro2.vb</DependentUpon> | ||||||
|  |     </Compile> | ||||||
|  |     <Compile Include="Forms_Report\Frm_Macro2.vb"> | ||||||
|  |       <SubType>Form</SubType> | ||||||
|  |     </Compile> | ||||||
|     <Compile Include="Forms_Report\Frm_Upload.Designer.vb"> |     <Compile Include="Forms_Report\Frm_Upload.Designer.vb"> | ||||||
|       <DependentUpon>Frm_Upload.vb</DependentUpon> |       <DependentUpon>Frm_Upload.vb</DependentUpon> | ||||||
|     </Compile> |     </Compile> | ||||||
| @@ -477,6 +524,9 @@ | |||||||
|     <Compile Include="Forms_Basic\Frm_FileInfo.vb"> |     <Compile Include="Forms_Basic\Frm_FileInfo.vb"> | ||||||
|       <SubType>Form</SubType> |       <SubType>Form</SubType> | ||||||
|     </Compile> |     </Compile> | ||||||
|  |     <Compile Include="WebServer\Example_WebServer_Usage.vb" /> | ||||||
|  |     <Compile Include="WebServer\Startup.vb" /> | ||||||
|  |     <Compile Include="WebServer\StaticFileServer.vb" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <EmbeddedResource Include="Forms_Basic\Frm_DisplayGubun.resx"> |     <EmbeddedResource Include="Forms_Basic\Frm_DisplayGubun.resx"> | ||||||
| @@ -491,6 +541,9 @@ | |||||||
|     <EmbeddedResource Include="Forms_Basic\frm_batch.resx"> |     <EmbeddedResource Include="Forms_Basic\frm_batch.resx"> | ||||||
|       <DependentUpon>frm_batch.vb</DependentUpon> |       <DependentUpon>frm_batch.vb</DependentUpon> | ||||||
|     </EmbeddedResource> |     </EmbeddedResource> | ||||||
|  |     <EmbeddedResource Include="Forms_Basic\Frm_WebManual.resx"> | ||||||
|  |       <DependentUpon>Frm_WebManual.vb</DependentUpon> | ||||||
|  |     </EmbeddedResource> | ||||||
|     <EmbeddedResource Include="Forms_Basic\Frm_Work.resx"> |     <EmbeddedResource Include="Forms_Basic\Frm_Work.resx"> | ||||||
|       <DependentUpon>Frm_Work.vb</DependentUpon> |       <DependentUpon>Frm_Work.vb</DependentUpon> | ||||||
|       <SubType>Designer</SubType> |       <SubType>Designer</SubType> | ||||||
| @@ -515,6 +568,9 @@ | |||||||
|     <EmbeddedResource Include="Forms_Report\Frm_Macro.resx"> |     <EmbeddedResource Include="Forms_Report\Frm_Macro.resx"> | ||||||
|       <DependentUpon>Frm_Macro.vb</DependentUpon> |       <DependentUpon>Frm_Macro.vb</DependentUpon> | ||||||
|     </EmbeddedResource> |     </EmbeddedResource> | ||||||
|  |     <EmbeddedResource Include="Forms_Report\Frm_Macro2.resx"> | ||||||
|  |       <DependentUpon>Frm_Macro2.vb</DependentUpon> | ||||||
|  |     </EmbeddedResource> | ||||||
|     <EmbeddedResource Include="Forms_Report\Frm_Upload.resx"> |     <EmbeddedResource Include="Forms_Report\Frm_Upload.resx"> | ||||||
|       <DependentUpon>Frm_Upload.vb</DependentUpon> |       <DependentUpon>Frm_Upload.vb</DependentUpon> | ||||||
|     </EmbeddedResource> |     </EmbeddedResource> | ||||||
| @@ -693,6 +749,7 @@ | |||||||
|     </None> |     </None> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|  |     <None Include="packages.config" /> | ||||||
|     <None Include="Resources\user_24.png" /> |     <None Include="Resources\user_24.png" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
| @@ -780,6 +837,7 @@ | |||||||
|     <Content Include="icon5.ico" /> |     <Content Include="icon5.ico" /> | ||||||
|     <None Include="Resources\select_by_difference.png" /> |     <None Include="Resources\select_by_difference.png" /> | ||||||
|     <None Include="Resources\page_copy.png" /> |     <None Include="Resources\page_copy.png" /> | ||||||
|  |     <Content Include="WebServer\INSTALL.txt" /> | ||||||
|     <Content Include="단축키.txt"> |     <Content Include="단축키.txt"> | ||||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||||
|     </Content> |     </Content> | ||||||
| @@ -798,6 +856,7 @@ | |||||||
|     <Content Include="Forms_Input\ReadMe.txt"> |     <Content Include="Forms_Input\ReadMe.txt"> | ||||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> |       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||||
|     </Content> |     </Content> | ||||||
|  |     <None Include="WebServer\README.md" /> | ||||||
|     <None Include="방위2.png" /> |     <None Include="방위2.png" /> | ||||||
|     <None Include="방위.png" /> |     <None Include="방위.png" /> | ||||||
|     <None Include="방위.jpg" /> |     <None Include="방위.jpg" /> | ||||||
| @@ -848,6 +907,13 @@ | |||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup /> |   <ItemGroup /> | ||||||
|   <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" /> |   <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" /> | ||||||
|  |   <Import Project="..\packages\Microsoft.Web.WebView2.1.0.3537.50\build\Microsoft.Web.WebView2.targets" Condition="Exists('..\packages\Microsoft.Web.WebView2.1.0.3537.50\build\Microsoft.Web.WebView2.targets')" /> | ||||||
|  |   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> | ||||||
|  |     <PropertyGroup> | ||||||
|  |       <ErrorText>이 프로젝트는 이 컴퓨터에 없는 NuGet 패키지를 참조합니다. 해당 패키지를 다운로드하려면 NuGet 패키지 복원을 사용하십시오. 자세한 내용은 http://go.microsoft.com/fwlink/?LinkID=322105를 참조하십시오. 누락된 파일은 {0}입니다.</ErrorText> | ||||||
|  |     </PropertyGroup> | ||||||
|  |     <Error Condition="!Exists('..\packages\Microsoft.Web.WebView2.1.0.3537.50\build\Microsoft.Web.WebView2.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Web.WebView2.1.0.3537.50\build\Microsoft.Web.WebView2.targets'))" /> | ||||||
|  |   </Target> | ||||||
|   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.  |   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.  | ||||||
|        Other similar extension points exist, see Microsoft.Common.targets. |        Other similar extension points exist, see Microsoft.Common.targets. | ||||||
|   <Target Name="BeforeBuild"> |   <Target Name="BeforeBuild"> | ||||||
|   | |||||||
							
								
								
									
										56
									
								
								ArinWarev1/Forms_Basic/Frm_WebManual.Designer.vb
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								ArinWarev1/Forms_Basic/Frm_WebManual.Designer.vb
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,56 @@ | |||||||
|  | <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ | ||||||
|  | Partial Class Frm_WebManual | ||||||
|  |     Inherits System.Windows.Forms.Form | ||||||
|  |  | ||||||
|  |     'Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다. | ||||||
|  |     <System.Diagnostics.DebuggerNonUserCode()> _ | ||||||
|  |     Protected Overrides Sub Dispose(ByVal disposing As Boolean) | ||||||
|  |         Try | ||||||
|  |             If disposing AndAlso components IsNot Nothing Then | ||||||
|  |                 components.Dispose() | ||||||
|  |             End If | ||||||
|  |         Finally | ||||||
|  |             MyBase.Dispose(disposing) | ||||||
|  |         End Try | ||||||
|  |     End Sub | ||||||
|  |  | ||||||
|  |     'Windows Form 디자이너에 필요합니다. | ||||||
|  |     Private components As System.ComponentModel.IContainer | ||||||
|  |  | ||||||
|  |     '참고: 다음 프로시저는 Windows Form 디자이너에 필요합니다. | ||||||
|  |     '수정하려면 Windows Form 디자이너를 사용하십시오. | ||||||
|  |     '코드 편집기에서는 수정하지 마세요. | ||||||
|  |     <System.Diagnostics.DebuggerStepThrough()> _ | ||||||
|  |     Private Sub InitializeComponent() | ||||||
|  |         Me.WebView21 = New Microsoft.Web.WebView2.WinForms.WebView2() | ||||||
|  |         CType(Me.WebView21, System.ComponentModel.ISupportInitialize).BeginInit() | ||||||
|  |         Me.SuspendLayout() | ||||||
|  |         ' | ||||||
|  |         'WebView21 | ||||||
|  |         ' | ||||||
|  |         Me.WebView21.AllowExternalDrop = True | ||||||
|  |         Me.WebView21.CreationProperties = Nothing | ||||||
|  |         Me.WebView21.DefaultBackgroundColor = System.Drawing.Color.White | ||||||
|  |         Me.WebView21.Dock = System.Windows.Forms.DockStyle.Fill | ||||||
|  |         Me.WebView21.Location = New System.Drawing.Point(0, 0) | ||||||
|  |         Me.WebView21.Name = "WebView21" | ||||||
|  |         Me.WebView21.Size = New System.Drawing.Size(1350, 700) | ||||||
|  |         Me.WebView21.TabIndex = 0 | ||||||
|  |         Me.WebView21.ZoomFactor = 1.0R | ||||||
|  |         ' | ||||||
|  |         'Frm_WebManual | ||||||
|  |         ' | ||||||
|  |         Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 12.0!) | ||||||
|  |         Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font | ||||||
|  |         Me.ClientSize = New System.Drawing.Size(1350, 700) | ||||||
|  |         Me.Controls.Add(Me.WebView21) | ||||||
|  |         Me.Name = "Frm_WebManual" | ||||||
|  |         Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen | ||||||
|  |         Me.Text = "사용자 매뉴얼" | ||||||
|  |         CType(Me.WebView21, System.ComponentModel.ISupportInitialize).EndInit() | ||||||
|  |         Me.ResumeLayout(False) | ||||||
|  |  | ||||||
|  |     End Sub | ||||||
|  |  | ||||||
|  |     Friend WithEvents WebView21 As Microsoft.Web.WebView2.WinForms.WebView2 | ||||||
|  | End Class | ||||||
							
								
								
									
										120
									
								
								ArinWarev1/Forms_Basic/Frm_WebManual.resx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										120
									
								
								ArinWarev1/Forms_Basic/Frm_WebManual.resx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,120 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <root> | ||||||
|  |   <!--  | ||||||
|  |     Microsoft ResX Schema  | ||||||
|  |      | ||||||
|  |     Version 2.0 | ||||||
|  |      | ||||||
|  |     The primary goals of this format is to allow a simple XML format  | ||||||
|  |     that is mostly human readable. The generation and parsing of the  | ||||||
|  |     various data types are done through the TypeConverter classes  | ||||||
|  |     associated with the data types. | ||||||
|  |      | ||||||
|  |     Example: | ||||||
|  |      | ||||||
|  |     ... ado.net/XML headers & schema ... | ||||||
|  |     <resheader name="resmimetype">text/microsoft-resx</resheader> | ||||||
|  |     <resheader name="version">2.0</resheader> | ||||||
|  |     <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | ||||||
|  |     <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | ||||||
|  |     <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | ||||||
|  |     <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | ||||||
|  |     <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | ||||||
|  |         <value>[base64 mime encoded serialized .NET Framework object]</value> | ||||||
|  |     </data> | ||||||
|  |     <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | ||||||
|  |         <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | ||||||
|  |         <comment>This is a comment</comment> | ||||||
|  |     </data> | ||||||
|  |                  | ||||||
|  |     There are any number of "resheader" rows that contain simple  | ||||||
|  |     name/value pairs. | ||||||
|  |      | ||||||
|  |     Each data row contains a name, and value. The row also contains a  | ||||||
|  |     type or mimetype. Type corresponds to a .NET class that support  | ||||||
|  |     text/value conversion through the TypeConverter architecture.  | ||||||
|  |     Classes that don't support this are serialized and stored with the  | ||||||
|  |     mimetype set. | ||||||
|  |      | ||||||
|  |     The mimetype is used for serialized objects, and tells the  | ||||||
|  |     ResXResourceReader how to depersist the object. This is currently not  | ||||||
|  |     extensible. For a given mimetype the value must be set accordingly: | ||||||
|  |      | ||||||
|  |     Note - application/x-microsoft.net.object.binary.base64 is the format  | ||||||
|  |     that the ResXResourceWriter will generate, however the reader can  | ||||||
|  |     read any of the formats listed below. | ||||||
|  |      | ||||||
|  |     mimetype: application/x-microsoft.net.object.binary.base64 | ||||||
|  |     value   : The object must be serialized with  | ||||||
|  |             : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | ||||||
|  |             : and then encoded with base64 encoding. | ||||||
|  |      | ||||||
|  |     mimetype: application/x-microsoft.net.object.soap.base64 | ||||||
|  |     value   : The object must be serialized with  | ||||||
|  |             : System.Runtime.Serialization.Formatters.Soap.SoapFormatter | ||||||
|  |             : and then encoded with base64 encoding. | ||||||
|  |  | ||||||
|  |     mimetype: application/x-microsoft.net.object.bytearray.base64 | ||||||
|  |     value   : The object must be serialized into a byte array  | ||||||
|  |             : using a System.ComponentModel.TypeConverter | ||||||
|  |             : and then encoded with base64 encoding. | ||||||
|  |     --> | ||||||
|  |   <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | ||||||
|  |     <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | ||||||
|  |     <xsd:element name="root" msdata:IsDataSet="true"> | ||||||
|  |       <xsd:complexType> | ||||||
|  |         <xsd:choice maxOccurs="unbounded"> | ||||||
|  |           <xsd:element name="metadata"> | ||||||
|  |             <xsd:complexType> | ||||||
|  |               <xsd:sequence> | ||||||
|  |                 <xsd:element name="value" type="xsd:string" minOccurs="0" /> | ||||||
|  |               </xsd:sequence> | ||||||
|  |               <xsd:attribute name="name" use="required" type="xsd:string" /> | ||||||
|  |               <xsd:attribute name="type" type="xsd:string" /> | ||||||
|  |               <xsd:attribute name="mimetype" type="xsd:string" /> | ||||||
|  |               <xsd:attribute ref="xml:space" /> | ||||||
|  |             </xsd:complexType> | ||||||
|  |           </xsd:element> | ||||||
|  |           <xsd:element name="assembly"> | ||||||
|  |             <xsd:complexType> | ||||||
|  |               <xsd:attribute name="alias" type="xsd:string" /> | ||||||
|  |               <xsd:attribute name="name" type="xsd:string" /> | ||||||
|  |             </xsd:complexType> | ||||||
|  |           </xsd:element> | ||||||
|  |           <xsd:element name="data"> | ||||||
|  |             <xsd:complexType> | ||||||
|  |               <xsd:sequence> | ||||||
|  |                 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | ||||||
|  |                 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | ||||||
|  |               </xsd:sequence> | ||||||
|  |               <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | ||||||
|  |               <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | ||||||
|  |               <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | ||||||
|  |               <xsd:attribute ref="xml:space" /> | ||||||
|  |             </xsd:complexType> | ||||||
|  |           </xsd:element> | ||||||
|  |           <xsd:element name="resheader"> | ||||||
|  |             <xsd:complexType> | ||||||
|  |               <xsd:sequence> | ||||||
|  |                 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | ||||||
|  |               </xsd:sequence> | ||||||
|  |               <xsd:attribute name="name" type="xsd:string" use="required" /> | ||||||
|  |             </xsd:complexType> | ||||||
|  |           </xsd:element> | ||||||
|  |         </xsd:choice> | ||||||
|  |       </xsd:complexType> | ||||||
|  |     </xsd:element> | ||||||
|  |   </xsd:schema> | ||||||
|  |   <resheader name="resmimetype"> | ||||||
|  |     <value>text/microsoft-resx</value> | ||||||
|  |   </resheader> | ||||||
|  |   <resheader name="version"> | ||||||
|  |     <value>2.0</value> | ||||||
|  |   </resheader> | ||||||
|  |   <resheader name="reader"> | ||||||
|  |     <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | ||||||
|  |   </resheader> | ||||||
|  |   <resheader name="writer"> | ||||||
|  |     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | ||||||
|  |   </resheader> | ||||||
|  | </root> | ||||||
							
								
								
									
										65
									
								
								ArinWarev1/Forms_Basic/Frm_WebManual.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								ArinWarev1/Forms_Basic/Frm_WebManual.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | |||||||
|  | Imports System.IO | ||||||
|  | Imports System.Threading.Tasks | ||||||
|  | Imports Microsoft.Web.WebView2.Core | ||||||
|  |  | ||||||
|  | Public Class Frm_WebManual | ||||||
|  |  | ||||||
|  |     Public Sub Navigate(url As String) | ||||||
|  |         Try | ||||||
|  |             If WebView21 IsNot Nothing AndAlso WebView21.CoreWebView2 IsNot Nothing Then | ||||||
|  |                 WebView21.CoreWebView2.Navigate(url) | ||||||
|  |             End If | ||||||
|  |         Catch ex As Exception | ||||||
|  |             MessageBox.Show("웹페이지 이동 중 오류가 발생했습니다: " & ex.Message, | ||||||
|  |                           "오류", MessageBoxButtons.OK, MessageBoxIcon.Error) | ||||||
|  |         End Try | ||||||
|  |     End Sub | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     Private Async Sub Frm_WebManual_Load(sender As Object, e As EventArgs) Handles MyBase.Load | ||||||
|  |         Try | ||||||
|  |             ' WebView2 초기화 (Runtime이 없으면 자동 다운로드) | ||||||
|  |             Await InitializeWebView2Async() | ||||||
|  |  | ||||||
|  |             ' 로컬 웹서버 페이지 로드 | ||||||
|  |             If WebView21.CoreWebView2 IsNot Nothing Then | ||||||
|  |                 WebView21.CoreWebView2.Navigate("http://localhost:58123/") | ||||||
|  |             End If | ||||||
|  |  | ||||||
|  |         Catch ex As Exception | ||||||
|  |             MessageBox.Show("웹페이지 로드 중 오류가 발생했습니다: " & ex.Message, | ||||||
|  |                           "오류", MessageBoxButtons.OK, MessageBoxIcon.Error) | ||||||
|  |         End Try | ||||||
|  |     End Sub | ||||||
|  |  | ||||||
|  |     Private Async Function InitializeWebView2Async() As Task | ||||||
|  |         Try | ||||||
|  |             ' Fixed Version 경로 설정 | ||||||
|  |             Dim fixedVersionPath = Path.Combine(Application.StartupPath, "WebView2Runtime") | ||||||
|  |             Dim userDataFolder = Path.Combine(Application.StartupPath, "WebView2Data") | ||||||
|  |  | ||||||
|  |             ' Fixed Version이 있는지 확인 | ||||||
|  |             If Directory.Exists(fixedVersionPath) Then | ||||||
|  |                 ' Fixed Version 사용 | ||||||
|  |                 Dim env = Await CoreWebView2Environment.CreateAsync(fixedVersionPath, userDataFolder) | ||||||
|  |                 Await WebView21.EnsureCoreWebView2Async(env) | ||||||
|  |             Else | ||||||
|  |                 ' 시스템에 설치된 Runtime 사용 (폴백) | ||||||
|  |                 Await WebView21.EnsureCoreWebView2Async(Nothing) | ||||||
|  |             End If | ||||||
|  |  | ||||||
|  |         Catch ex As Exception | ||||||
|  |             ' WebView2 Runtime을 찾을 수 없는 경우 | ||||||
|  |             MessageBox.Show( | ||||||
|  |                 "WebView2 구성 요소를 찾을 수 없습니다." & vbCrLf & vbCrLf & | ||||||
|  |                 "프로그램 설치가 올바르지 않을 수 있습니다." & vbCrLf & | ||||||
|  |                 "관리자에게 문의하시기 바랍니다.", | ||||||
|  |                 "오류", | ||||||
|  |                 MessageBoxButtons.OK, | ||||||
|  |                 MessageBoxIcon.Error) | ||||||
|  |  | ||||||
|  |             Me.Close() | ||||||
|  |         End Try | ||||||
|  |     End Function | ||||||
|  |  | ||||||
|  | End Class | ||||||
							
								
								
									
										202
									
								
								ArinWarev1/Forms_Input/Frm_YK.Designer.vb
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										202
									
								
								ArinWarev1/Forms_Input/Frm_YK.Designer.vb
									
									
									
										generated
									
									
									
								
							| @@ -70,16 +70,6 @@ Partial Class Frm_YK | |||||||
|         Me.cmb_재료 = New System.Windows.Forms.ComboBox() |         Me.cmb_재료 = New System.Windows.Forms.ComboBox() | ||||||
|         Me.Panel1 = New System.Windows.Forms.Panel() |         Me.Panel1 = New System.Windows.Forms.Panel() | ||||||
|         Me.arindv1 = New System.Windows.Forms.DataGridView() |         Me.arindv1 = New System.Windows.Forms.DataGridView() | ||||||
|         Me.bn_detail = New System.Windows.Forms.BindingNavigator(Me.components) |  | ||||||
|         Me.ToolStripLabel1 = New System.Windows.Forms.ToolStripLabel() |  | ||||||
|         Me.btj_add = New System.Windows.Forms.ToolStripButton() |  | ||||||
|         Me.btj_del = New System.Windows.Forms.ToolStripButton() |  | ||||||
|         Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator() |  | ||||||
|         Me.ToolStripLabel2 = New System.Windows.Forms.ToolStripLabel() |  | ||||||
|         Me.btj_showimg = New System.Windows.Forms.ToolStripButton() |  | ||||||
|         Me.cmb_형태 = New Eco2Ar.MyCmb() |  | ||||||
|         Me.bs_gubun = New System.Windows.Forms.BindingSource(Me.components) |  | ||||||
|         Me.bS_재료 = New System.Windows.Forms.BindingSource(Me.components) |  | ||||||
|         Me.커스텀 = New System.Windows.Forms.DataGridViewTextBoxColumn() |         Me.커스텀 = New System.Windows.Forms.DataGridViewTextBoxColumn() | ||||||
|         Me.code = New System.Windows.Forms.DataGridViewTextBoxColumn() |         Me.code = New System.Windows.Forms.DataGridViewTextBoxColumn() | ||||||
|         Me.재료명 = New System.Windows.Forms.DataGridViewTextBoxColumn() |         Me.재료명 = New System.Windows.Forms.DataGridViewTextBoxColumn() | ||||||
| @@ -91,6 +81,16 @@ Partial Class Frm_YK | |||||||
|         Me.열저항 = New System.Windows.Forms.DataGridViewTextBoxColumn() |         Me.열저항 = New System.Windows.Forms.DataGridViewTextBoxColumn() | ||||||
|         Me.전경 = New System.Windows.Forms.DataGridViewButtonColumn() |         Me.전경 = New System.Windows.Forms.DataGridViewButtonColumn() | ||||||
|         Me.Column1 = New System.Windows.Forms.DataGridViewButtonColumn() |         Me.Column1 = New System.Windows.Forms.DataGridViewButtonColumn() | ||||||
|  |         Me.bn_detail = New System.Windows.Forms.BindingNavigator(Me.components) | ||||||
|  |         Me.ToolStripLabel1 = New System.Windows.Forms.ToolStripLabel() | ||||||
|  |         Me.btj_add = New System.Windows.Forms.ToolStripButton() | ||||||
|  |         Me.btj_del = New System.Windows.Forms.ToolStripButton() | ||||||
|  |         Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator() | ||||||
|  |         Me.ToolStripLabel2 = New System.Windows.Forms.ToolStripLabel() | ||||||
|  |         Me.btj_showimg = New System.Windows.Forms.ToolStripButton() | ||||||
|  |         Me.cmb_형태 = New Eco2Ar.MyCmb() | ||||||
|  |         Me.bs_gubun = New System.Windows.Forms.BindingSource(Me.components) | ||||||
|  |         Me.bS_재료 = New System.Windows.Forms.BindingSource(Me.components) | ||||||
|         CType(Me.SplitContainer1, System.ComponentModel.ISupportInitialize).BeginInit() |         CType(Me.SplitContainer1, System.ComponentModel.ISupportInitialize).BeginInit() | ||||||
|         Me.SplitContainer1.Panel1.SuspendLayout() |         Me.SplitContainer1.Panel1.SuspendLayout() | ||||||
|         Me.SplitContainer1.Panel2.SuspendLayout() |         Me.SplitContainer1.Panel2.SuspendLayout() | ||||||
| @@ -591,97 +591,6 @@ Partial Class Frm_YK | |||||||
|         Me.arindv1.Size = New System.Drawing.Size(427, 326) |         Me.arindv1.Size = New System.Drawing.Size(427, 326) | ||||||
|         Me.arindv1.TabIndex = 157 |         Me.arindv1.TabIndex = 157 | ||||||
|         ' |         ' | ||||||
|         'bn_detail |  | ||||||
|         ' |  | ||||||
|         Me.bn_detail.AddNewItem = Nothing |  | ||||||
|         Me.bn_detail.AutoSize = False |  | ||||||
|         Me.bn_detail.BindingSource = Me.bs_detail |  | ||||||
|         Me.bn_detail.CountItem = Me.ToolStripLabel1 |  | ||||||
|         Me.bn_detail.DeleteItem = Nothing |  | ||||||
|         Me.bn_detail.Dock = System.Windows.Forms.DockStyle.Bottom |  | ||||||
|         Me.bn_detail.Font = New System.Drawing.Font("돋움", 8.999999!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) |  | ||||||
|         Me.bn_detail.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden |  | ||||||
|         Me.bn_detail.ImageScalingSize = New System.Drawing.Size(20, 20) |  | ||||||
|         Me.bn_detail.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.btj_add, Me.btj_del, Me.ToolStripSeparator2, Me.ToolStripLabel2, Me.ToolStripLabel1, Me.btj_showimg}) |  | ||||||
|         Me.bn_detail.Location = New System.Drawing.Point(0, 326) |  | ||||||
|         Me.bn_detail.MoveFirstItem = Nothing |  | ||||||
|         Me.bn_detail.MoveLastItem = Nothing |  | ||||||
|         Me.bn_detail.MoveNextItem = Nothing |  | ||||||
|         Me.bn_detail.MovePreviousItem = Nothing |  | ||||||
|         Me.bn_detail.Name = "bn_detail" |  | ||||||
|         Me.bn_detail.PositionItem = Me.ToolStripLabel2 |  | ||||||
|         Me.bn_detail.Size = New System.Drawing.Size(427, 40) |  | ||||||
|         Me.bn_detail.TabIndex = 2 |  | ||||||
|         Me.bn_detail.Text = "BindingNavigator1" |  | ||||||
|         ' |  | ||||||
|         'ToolStripLabel1 |  | ||||||
|         ' |  | ||||||
|         Me.ToolStripLabel1.Name = "ToolStripLabel1" |  | ||||||
|         Me.ToolStripLabel1.Size = New System.Drawing.Size(33, 37) |  | ||||||
|         Me.ToolStripLabel1.Text = "/{0}" |  | ||||||
|         ' |  | ||||||
|         'btj_add |  | ||||||
|         ' |  | ||||||
|         Me.btj_add.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image |  | ||||||
|         Me.btj_add.Image = Global.Eco2Ar.My.Resources.Resources.new_32 |  | ||||||
|         Me.btj_add.Name = "btj_add" |  | ||||||
|         Me.btj_add.RightToLeftAutoMirrorImage = True |  | ||||||
|         Me.btj_add.Size = New System.Drawing.Size(24, 37) |  | ||||||
|         Me.btj_add.Text = "신규추가(&A)" |  | ||||||
|         Me.btj_add.ToolTipText = "새로운 프로필을 추가합니다" |  | ||||||
|         ' |  | ||||||
|         'btj_del |  | ||||||
|         ' |  | ||||||
|         Me.btj_del.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image |  | ||||||
|         Me.btj_del.Image = Global.Eco2Ar.My.Resources.Resources.remov_32 |  | ||||||
|         Me.btj_del.Name = "btj_del" |  | ||||||
|         Me.btj_del.RightToLeftAutoMirrorImage = True |  | ||||||
|         Me.btj_del.Size = New System.Drawing.Size(24, 37) |  | ||||||
|         Me.btj_del.Text = "선택삭제(&D)" |  | ||||||
|         Me.btj_del.ToolTipText = "선택된 프로필을 삭제합니다" |  | ||||||
|         ' |  | ||||||
|         'ToolStripSeparator2 |  | ||||||
|         ' |  | ||||||
|         Me.ToolStripSeparator2.Name = "ToolStripSeparator2" |  | ||||||
|         Me.ToolStripSeparator2.Size = New System.Drawing.Size(6, 40) |  | ||||||
|         ' |  | ||||||
|         'ToolStripLabel2 |  | ||||||
|         ' |  | ||||||
|         Me.ToolStripLabel2.Name = "ToolStripLabel2" |  | ||||||
|         Me.ToolStripLabel2.Size = New System.Drawing.Size(12, 37) |  | ||||||
|         Me.ToolStripLabel2.Text = "0" |  | ||||||
|         ' |  | ||||||
|         'btj_showimg |  | ||||||
|         ' |  | ||||||
|         Me.btj_showimg.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right |  | ||||||
|         Me.btj_showimg.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text |  | ||||||
|         Me.btj_showimg.Image = CType(resources.GetObject("btj_showimg.Image"), System.Drawing.Image) |  | ||||||
|         Me.btj_showimg.ImageTransparentColor = System.Drawing.Color.Magenta |  | ||||||
|         Me.btj_showimg.Name = "btj_showimg" |  | ||||||
|         Me.btj_showimg.Size = New System.Drawing.Size(87, 37) |  | ||||||
|         Me.btj_showimg.Text = "구분그림보기" |  | ||||||
|         Me.btj_showimg.Visible = False |  | ||||||
|         ' |  | ||||||
|         'cmb_형태 |  | ||||||
|         ' |  | ||||||
|         Me.cmb_형태.DropDownStyle = System.Windows.Forms.ComboBoxStyle.Simple |  | ||||||
|         Me.cmb_형태.FormattingEnabled = True |  | ||||||
|         Me.cmb_형태.Location = New System.Drawing.Point(22, 225) |  | ||||||
|         Me.cmb_형태.Name = "cmb_형태" |  | ||||||
|         Me.cmb_형태.NectControl = Nothing |  | ||||||
|         Me.cmb_형태.Size = New System.Drawing.Size(152, 204) |  | ||||||
|         Me.cmb_형태.TabIndex = 131 |  | ||||||
|         ' |  | ||||||
|         'bs_gubun |  | ||||||
|         ' |  | ||||||
|         Me.bs_gubun.DataMember = "tbl_common" |  | ||||||
|         Me.bs_gubun.DataSource = Me.DS |  | ||||||
|         ' |  | ||||||
|         'bS_재료 |  | ||||||
|         ' |  | ||||||
|         Me.bS_재료.DataMember = "tbl_common" |  | ||||||
|         Me.bS_재료.DataSource = Me.DS |  | ||||||
|         ' |  | ||||||
|         '커스텀 |         '커스텀 | ||||||
|         ' |         ' | ||||||
|         Me.커스텀.DataPropertyName = "커스텀" |         Me.커스텀.DataPropertyName = "커스텀" | ||||||
| @@ -791,6 +700,97 @@ Partial Class Frm_YK | |||||||
|         Me.Column1.Visible = False |         Me.Column1.Visible = False | ||||||
|         Me.Column1.Width = 35 |         Me.Column1.Width = 35 | ||||||
|         ' |         ' | ||||||
|  |         'bn_detail | ||||||
|  |         ' | ||||||
|  |         Me.bn_detail.AddNewItem = Nothing | ||||||
|  |         Me.bn_detail.AutoSize = False | ||||||
|  |         Me.bn_detail.BindingSource = Me.bs_detail | ||||||
|  |         Me.bn_detail.CountItem = Me.ToolStripLabel1 | ||||||
|  |         Me.bn_detail.DeleteItem = Nothing | ||||||
|  |         Me.bn_detail.Dock = System.Windows.Forms.DockStyle.Bottom | ||||||
|  |         Me.bn_detail.Font = New System.Drawing.Font("돋움", 8.999999!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) | ||||||
|  |         Me.bn_detail.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden | ||||||
|  |         Me.bn_detail.ImageScalingSize = New System.Drawing.Size(20, 20) | ||||||
|  |         Me.bn_detail.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.btj_add, Me.btj_del, Me.ToolStripSeparator2, Me.ToolStripLabel2, Me.ToolStripLabel1, Me.btj_showimg}) | ||||||
|  |         Me.bn_detail.Location = New System.Drawing.Point(0, 326) | ||||||
|  |         Me.bn_detail.MoveFirstItem = Nothing | ||||||
|  |         Me.bn_detail.MoveLastItem = Nothing | ||||||
|  |         Me.bn_detail.MoveNextItem = Nothing | ||||||
|  |         Me.bn_detail.MovePreviousItem = Nothing | ||||||
|  |         Me.bn_detail.Name = "bn_detail" | ||||||
|  |         Me.bn_detail.PositionItem = Me.ToolStripLabel2 | ||||||
|  |         Me.bn_detail.Size = New System.Drawing.Size(427, 40) | ||||||
|  |         Me.bn_detail.TabIndex = 2 | ||||||
|  |         Me.bn_detail.Text = "BindingNavigator1" | ||||||
|  |         ' | ||||||
|  |         'ToolStripLabel1 | ||||||
|  |         ' | ||||||
|  |         Me.ToolStripLabel1.Name = "ToolStripLabel1" | ||||||
|  |         Me.ToolStripLabel1.Size = New System.Drawing.Size(33, 37) | ||||||
|  |         Me.ToolStripLabel1.Text = "/{0}" | ||||||
|  |         ' | ||||||
|  |         'btj_add | ||||||
|  |         ' | ||||||
|  |         Me.btj_add.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image | ||||||
|  |         Me.btj_add.Image = Global.Eco2Ar.My.Resources.Resources.new_32 | ||||||
|  |         Me.btj_add.Name = "btj_add" | ||||||
|  |         Me.btj_add.RightToLeftAutoMirrorImage = True | ||||||
|  |         Me.btj_add.Size = New System.Drawing.Size(24, 37) | ||||||
|  |         Me.btj_add.Text = "신규추가(&A)" | ||||||
|  |         Me.btj_add.ToolTipText = "새로운 프로필을 추가합니다" | ||||||
|  |         ' | ||||||
|  |         'btj_del | ||||||
|  |         ' | ||||||
|  |         Me.btj_del.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image | ||||||
|  |         Me.btj_del.Image = Global.Eco2Ar.My.Resources.Resources.remov_32 | ||||||
|  |         Me.btj_del.Name = "btj_del" | ||||||
|  |         Me.btj_del.RightToLeftAutoMirrorImage = True | ||||||
|  |         Me.btj_del.Size = New System.Drawing.Size(24, 37) | ||||||
|  |         Me.btj_del.Text = "선택삭제(&D)" | ||||||
|  |         Me.btj_del.ToolTipText = "선택된 프로필을 삭제합니다" | ||||||
|  |         ' | ||||||
|  |         'ToolStripSeparator2 | ||||||
|  |         ' | ||||||
|  |         Me.ToolStripSeparator2.Name = "ToolStripSeparator2" | ||||||
|  |         Me.ToolStripSeparator2.Size = New System.Drawing.Size(6, 40) | ||||||
|  |         ' | ||||||
|  |         'ToolStripLabel2 | ||||||
|  |         ' | ||||||
|  |         Me.ToolStripLabel2.Name = "ToolStripLabel2" | ||||||
|  |         Me.ToolStripLabel2.Size = New System.Drawing.Size(12, 37) | ||||||
|  |         Me.ToolStripLabel2.Text = "0" | ||||||
|  |         ' | ||||||
|  |         'btj_showimg | ||||||
|  |         ' | ||||||
|  |         Me.btj_showimg.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right | ||||||
|  |         Me.btj_showimg.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text | ||||||
|  |         Me.btj_showimg.Image = CType(resources.GetObject("btj_showimg.Image"), System.Drawing.Image) | ||||||
|  |         Me.btj_showimg.ImageTransparentColor = System.Drawing.Color.Magenta | ||||||
|  |         Me.btj_showimg.Name = "btj_showimg" | ||||||
|  |         Me.btj_showimg.Size = New System.Drawing.Size(87, 37) | ||||||
|  |         Me.btj_showimg.Text = "구분그림보기" | ||||||
|  |         Me.btj_showimg.Visible = False | ||||||
|  |         ' | ||||||
|  |         'cmb_형태 | ||||||
|  |         ' | ||||||
|  |         Me.cmb_형태.DropDownStyle = System.Windows.Forms.ComboBoxStyle.Simple | ||||||
|  |         Me.cmb_형태.FormattingEnabled = True | ||||||
|  |         Me.cmb_형태.Location = New System.Drawing.Point(22, 225) | ||||||
|  |         Me.cmb_형태.Name = "cmb_형태" | ||||||
|  |         Me.cmb_형태.NectControl = Nothing | ||||||
|  |         Me.cmb_형태.Size = New System.Drawing.Size(152, 204) | ||||||
|  |         Me.cmb_형태.TabIndex = 131 | ||||||
|  |         ' | ||||||
|  |         'bs_gubun | ||||||
|  |         ' | ||||||
|  |         Me.bs_gubun.DataMember = "tbl_common" | ||||||
|  |         Me.bs_gubun.DataSource = Me.DS | ||||||
|  |         ' | ||||||
|  |         'bS_재료 | ||||||
|  |         ' | ||||||
|  |         Me.bS_재료.DataMember = "tbl_common" | ||||||
|  |         Me.bS_재료.DataSource = Me.DS | ||||||
|  |         ' | ||||||
|         'Frm_YK |         'Frm_YK | ||||||
|         ' |         ' | ||||||
|         Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None |         Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None | ||||||
|   | |||||||
| @@ -27,14 +27,16 @@ | |||||||
|  |  | ||||||
|         '// 입력면데이터중에 열관류율을 사용한 데이터 업데이트(131009) |         '// 입력면데이터중에 열관류율을 사용한 데이터 업데이트(131009) | ||||||
|         For Each dr As DS.tbl_myounRow In DSET1.tbl_myoun.Select("열관류율2 <> '0'") |         For Each dr As DS.tbl_myounRow In DSET1.tbl_myoun.Select("열관류율2 <> '0'") | ||||||
|  |             If dr.RowState = DataRowState.Deleted Then Continue For | ||||||
|             Dim ykcode As String = dr.열관류율2 |             Dim ykcode As String = dr.열관류율2 | ||||||
|             Dim ykrow() As DS.tbl_ykRow = DSET1.tbl_yk.Select("code='" + ykcode + "'") |             Dim ykrow() As DS.tbl_ykRow = DSET1.tbl_yk.Select("code='" + ykcode + "'") | ||||||
|             If ykrow.Length = 1 Then |             If ykrow.Length = 1 Then | ||||||
|                 dr.투과율 = ykrow(0).투과율 |                 dr.투과율 = ykrow(0).투과율 | ||||||
|             End If |             End If | ||||||
|             dr.AcceptChanges() |             dr.EndEdit() | ||||||
|         Next |         Next | ||||||
|  |         BaseDT.AcceptChanges() | ||||||
|  |         BaseDS.AcceptChanges() | ||||||
|         Update_열관류율_140409() |         Update_열관류율_140409() | ||||||
|  |  | ||||||
|         Return True |         Return True | ||||||
| @@ -89,58 +91,9 @@ | |||||||
|         Me.arindv1.EndEdit() |         Me.arindv1.EndEdit() | ||||||
|         Me.bs.EndEdit() |         Me.bs.EndEdit() | ||||||
|  |  | ||||||
|         '//열관류율이 링크된 모든면의 건축부위 데이터를 열관류율 화면의 건축부위 데이터로 갱신 |         Pub.Update_열관류율_140409() | ||||||
|         For Each Drow As DS.tbl_myounRow In DSET1.tbl_myoun |  | ||||||
|  |  | ||||||
|             If Drow.RowState = DataRowState.Deleted OrElse Drow.RowState = DataRowState.Detached Then Continue For |  | ||||||
|          |          | ||||||
| #If DEBUG Then |  | ||||||
|             If Drow.code = "0009" Then |  | ||||||
|                 MsgBox("test") |  | ||||||
|             End If |  | ||||||
| #End If |  | ||||||
|  |  | ||||||
|             If Drow.열관류율2 <> "0" Then |  | ||||||
|                 Try   '==========================================2014.04.17 열관류율 삭제시 코드번호가 남아 오류 발생하는 현상을 try 안으로 넣음 |  | ||||||
|                     Dim Dr As DS.tbl_ykRow = DSET1.tbl_yk.Select("code='" & Drow.열관류율2.ToString & "'")(0) |  | ||||||
|                     Drow.건축부위방식 = Dr.면형태    '// 링크된 열관류율에서 면형태를 가져옴.. |  | ||||||
|                     Select Case Dr.면형태 |  | ||||||
|                         Case "외벽(벽체)", "0" |  | ||||||
|                             Drow.건축부위방식 = "외벽" |  | ||||||
|                         Case "외벽(지붕)", "0001" |  | ||||||
|                             Drow.건축부위방식 = "외벽" |  | ||||||
|                             'Drow.방위 = "수평" |  | ||||||
|                         Case "외벽(바닥)", "0002" |  | ||||||
|                             Drow.건축부위방식 = "외벽" |  | ||||||
|                             'Drow.방위 = "일사없음" |  | ||||||
|                         Case "내벽(벽체)", "0003", "지중벽", "0009" |  | ||||||
|                             Drow.건축부위방식 = "내벽" |  | ||||||
|                             Drow.방위 = "일사없음" |  | ||||||
|                         Case "내벽(지붕)", "0004" |  | ||||||
|                             Drow.건축부위방식 = "내벽" |  | ||||||
|                             Drow.방위 = "일사없음" |  | ||||||
|                         Case "내벽(바닥)", "0005" |  | ||||||
|                             Drow.건축부위방식 = "내벽" |  | ||||||
|                             Drow.방위 = "일사없음" |  | ||||||
|                         Case "간벽", "0006" |  | ||||||
|                             Drow.건축부위방식 = "간벽" |  | ||||||
|                             Drow.방위 = "일사없음" |  | ||||||
|                         Case "외부창", "0007" |  | ||||||
|                             Drow.건축부위방식 = "외부창" |  | ||||||
|                             'Drow.투과율 = Dr.일사에너지투과율 |  | ||||||
|                         Case "내부창", "0008" |  | ||||||
|                             Drow.건축부위방식 = "내부창" |  | ||||||
|                             'Drow.투과율 = Dr.일사에너지투과율 |  | ||||||
|                         Case Else |  | ||||||
|                             MsgBox("모르는값 " & Dr("면형태").ToString & "/" & Dr.면형태) |  | ||||||
|                     End Select |  | ||||||
|  |  | ||||||
|                 Catch ex As Exception |  | ||||||
|  |  | ||||||
|                 End Try |  | ||||||
|             End If |  | ||||||
|  |  | ||||||
|         Next |  | ||||||
|  |  | ||||||
|     End Sub |     End Sub | ||||||
|  |  | ||||||
| @@ -952,6 +905,7 @@ | |||||||
|             Next |             Next | ||||||
|         End If |         End If | ||||||
|         Me.bs.RemoveCurrent() |         Me.bs.RemoveCurrent() | ||||||
|  |         Me.bs.EndEdit() | ||||||
|  |  | ||||||
|     End Sub |     End Sub | ||||||
|  |  | ||||||
|   | |||||||
| @@ -180,190 +180,190 @@ | |||||||
|   <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> |   <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> | ||||||
|   <data name="PictureBox1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> |   <data name="PictureBox1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | ||||||
|     <value> |     <value> | ||||||
|         /9j/4AAQSkZJRgABAgEASABIAAD/7gAOQWRvYmUAZAAAAAAB/+ED5kV4aWYAAE1NACoAAAAIAAcBEgAD |         /9j/4AAQSkZJRgABAgEASABIAAD/4QPmRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAAB | ||||||
|         AAAAAQABAAABGgAFAAAAAQAAAGIBGwAFAAAAAQAAAGoBKAADAAAAAQACAAABMQACAAAAHAAAAHIBMgAC |         AAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAcAAAAcgEyAAIAAAAUAAAAjodpAAQAAAAB | ||||||
|         AAAAFAAAAI6HaQAEAAAAAQAAAKIAAADCAEgAAAABAAAASAAAAAEAAEFkb2JlIFBob3Rvc2hvcCBDUzMg |         AAAAogAAAMIASAAAAAEAAABIAAAAAQAAQWRvYmUgUGhvdG9zaG9wIENTMyBXaW5kb3dzADIwMTA6MDQ6 | ||||||
|         V2luZG93cwAyMDEwOjA0OjE1IDIwOjMyOjA0AAACoAIABAAAAAEAAAA8oAMABAAAAAEAAAAMAAAAAAAA |         MTUgMjA6MzI6MDQAAAKgAgAEAAAAAQAAADygAwAEAAAAAQAAAAwAAAAAAAAABgEDAAMAAAABAAYAAAEa | ||||||
|         AAYBAwADAAAAAQAGAAABGgAFAAAAAQAAARABGwAFAAAAAQAAARgBKAADAAAAAQACAAACAQAEAAAAAQAA |         AAUAAAABAAABEAEbAAUAAAABAAABGAEoAAMAAAABAAIAAAIBAAQAAAABAAABIAICAAQAAAABAAACvgAA | ||||||
|         ASACAgAEAAAAAQAAAr4AAAAAAAAASAAAAAEAAABIAAAAAf/Y/+AAEEpGSUYAAQIAAEgASAAA/+0ADEFk |         AAAAAABIAAAAAQAAAEgAAAAB/9j/4AAQSkZJRgABAgAASABIAAD/7QAMQWRvYmVfQ00AAf/uAA5BZG9i | ||||||
|         b2JlX0NNAAH/7gAOQWRvYmUAZIAAAAAB/9sAhAAMCAgICQgMCQkMEQsKCxEVDwwMDxUYExMVExMYEQwM |         ZQBkgAAAAAH/2wCEAAwICAgJCAwJCQwRCwoLERUPDAwPFRgTExUTExgRDAwMDAwMEQwMDAwMDAwMDAwM | ||||||
|         DAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQ0LCw0ODRAODhAUDg4OFBQODg4OFBEMDAwM |         DAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4NEA4OEBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwM | ||||||
|         DBERDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAMADwDASIAAhEBAxEB/90A |         DAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIAAwAPAMBIgACEQEDEQH/3QAEAAT/xAE/AAABBQEBAQEB | ||||||
|         BAAE/8QBPwAAAQUBAQEBAQEAAAAAAAAAAwABAgQFBgcICQoLAQABBQEBAQEBAQAAAAAAAAABAAIDBAUG |         AQAAAAAAAAADAAECBAUGBwgJCgsBAAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUH | ||||||
|         BwgJCgsQAAEEAQMCBAIFBwYIBQMMMwEAAhEDBCESMQVBUWETInGBMgYUkaGxQiMkFVLBYjM0coLRQwcl |         BggFAwwzAQACEQMEIRIxBUFRYRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMmRJNU | ||||||
|         klPw4fFjczUWorKDJkSTVGRFwqN0NhfSVeJl8rOEw9N14/NGJ5SkhbSVxNTk9KW1xdXl9VZmdoaWprbG |         ZEXCo3Q2F9JV4mXys4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3 | ||||||
|         1ub2N0dXZ3eHl6e3x9fn9xEAAgIBAgQEAwQFBgcHBgU1AQACEQMhMRIEQVFhcSITBTKBkRShsUIjwVLR |         EQACAgECBAQDBAUGBwcGBTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKCkkNTFWNzNPEl | ||||||
|         8DMkYuFygpJDUxVjczTxJQYWorKDByY1wtJEk1SjF2RFVTZ0ZeLys4TD03Xj80aUpIW0lcTU5PSltcXV |         BhaisoMHJjXC0kSTVKMXZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2JzdH | ||||||
|         5fVWZnaGlqa2xtbm9ic3R1dnd4eXp7fH/9oADAMBAAIRAxEAPwDd/amR/pH/AOcf70v2pkf6R/8AnH+9 |         V2d3h5ent8f/2gAMAwEAAhEDEQA/AN39qZH+kf8A5x/vS/amR/pH/wCcf71RSWh+r8Gl6/FvftTI/wBI | ||||||
|         UUlofq/Bpevxb37UyP8ASP8A84/3pftTI/0j/wDOP96opJfq/BXr8W9+1Mj/AEj/APOP96X7UyP9I/8A |         /wDzj/el+1Mj/SP/AM4/3qikl+r8Fevxb37UyP8ASP8A84/3pftTI/0j/wDOP96opJfq/BXr8Xe6N1u4 | ||||||
|         zj/eqKSX6vwV6/F3ujdbuGS2i5xfU8HVxktIG76XyW99vo27p0XGdO2/ba930dZj+q5dX+qfZPL8VAeD |         ZLaLnF9TwdXGS0gbvpfJb32+jbunRcZ07b9tr3fR1mP6rl1f6p9k8vxUB4PfjVVWv95mHH7Ru7vTyf/Z | ||||||
|         341VVr/eZhx+0bu708n/2f/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfO |         /+IMWElDQ19QUk9GSUxFAAEBAAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNzcE1T | ||||||
|         AAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAA |         RlQAAAAASUVDIHNSR0IAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1IUCAgAAAAAAAAAAAAAAAAAAAAAAAA | ||||||
|         AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rl |         AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3BydAAAAVAAAAAzZGVzYwAAAYQAAABsd3RwdAAA | ||||||
|         c2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJY |         AfAAAAAUYmtwdAAAAgQAAAAUclhZWgAAAhgAAAAUZ1hZWgAAAiwAAAAUYlhZWgAAAkAAAAAUZG1uZAAA | ||||||
|         WVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1 |         AlQAAABwZG1kZAAAAsQAAACIdnVlZAAAA0wAAACGdmlldwAAA9QAAAAkbHVtaQAAA/gAAAAUbWVhcwAA | ||||||
|         bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJU |         BAwAAAAkdGVjaAAABDAAAAAMclRSQwAABDwAAAgMZ1RSQwAABDwAAAgMYlRSQwAABDwAAAgMdGV4dAAA | ||||||
|         UkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55 |         AABDb3B5cmlnaHQgKGMpIDE5OTggSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkAAGRlc2MAAAAAAAAAEnNS | ||||||
|         AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4x |         R0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAA | ||||||
|         AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA |         AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAADzUQABAAAAARbMWFlaIAAA | ||||||
|         81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAA |         AAAAAAAAAAAAAAAAAABYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAA | ||||||
|         YpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVj |         AAAAACSgAAAPhAAAts9kZXNjAAAAAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAABZJ | ||||||
|         LmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |         RUMgaHR0cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | ||||||
|         AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0Ig |         AAAAAAAAZGVzYwAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBz | ||||||
|         Y29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29s |         UkdCAAAAAAAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBzUkdC | ||||||
|         b3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVuY2Ug |         AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlv | ||||||
|         Vmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdp |         biBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4g | ||||||
|         bmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAA |         SUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDPFAAD | ||||||
|         AAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAA |         7cwABBMLAANcngAAAAFYWVogAAAAAABMCVYAUAAAAFcf521lYXMAAAAAAAAAAQAAAAAAAAAAAAAAAAAA | ||||||
|         AAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAU |         AAAAAAKPAAAAAnNpZyAAAAAAQ1JUIGN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMAKAAtADIANwA7 | ||||||
|         ABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACp |         AEAARQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCkAKkArgCyALcAvADBAMYAywDQ | ||||||
|         AK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFS |         ANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIBWQFgAWcBbgF1AXwBgwGL | ||||||
|         AVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJB |         AZIBmgGhAakBsQG5AcEByQHRAdkB4QHpAfIB+gIDAgwCFAIdAiYCLwI4AkECSwJUAl0CZwJxAnoChAKO | ||||||
|         AksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+ |         ApgCogKsArYCwQLLAtUC4ALrAvUDAAMLAxYDIQMtAzgDQwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPg | ||||||
|         A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUN |         A+wD+QQGBBMEIAQtBDsESARVBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWG | ||||||
|         BRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1 |         BZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZBysHPQdPB2EHdAeG | ||||||
|         BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6 |         B5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJEAklCToJTwlkCXkJjwmkCboJzwnl | ||||||
|         CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvh |         CfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5C1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgyn | ||||||
|         C/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7u |         DMAM2QzzDQ0NJg1ADVoNdA2ODakNww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/P | ||||||
|         DwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJk |         D+wQCRAmEEMQYRB+EJsQuRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNj | ||||||
|         EoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJ |         E4MTpBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6Fx0XQRdl | ||||||
|         FmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqe |         F4kXrhfSF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4axRrsGxQbOxtjG4obshva | ||||||
|         GsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9p |         HAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+HukfEx8+H2kflB+/H+ogFSBBIGwgmCDE | ||||||
|         H5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSr |         IPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwojOCNmI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl9yYn | ||||||
|         JNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpo |         Jlcmhya3JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkGKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwF | ||||||
|         KpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCk |         LDksbiyiLNctDC1BLXYtqy3hLhYuTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJj | ||||||
|         MNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdg |         Mpsy1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5BTlC | ||||||
|         N5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6g |         OX85vDn5OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/iQCNAZECm | ||||||
|         PuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZn |         QOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5FEkVVRZpF3kYiRmdGq0bwRzVHe0fASAVIS0iR | ||||||
|         RqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63 |         SNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkviTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EG | ||||||
|         TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeS |         UVBRm1HmUjFSfFLHUxNTX1OqU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoH | ||||||
|         V+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8 |         WlZaplr1W0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBjQ2OX | ||||||
|         YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3 |         Y+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdrT2una/9sV2yvbQhtYG25 | ||||||
|         a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWF |         bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0zHUodYV14XY+dpt2+HdWd7N4EXhu | ||||||
|         deF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4Co |         eMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4BfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6 | ||||||
|         gQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/Ixj |         hB2EgITjhUeFq4YOhnKG14c7h5+IBIhpiM6JM4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+e | ||||||
|         jMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4 |         kAaQbpDWkT+RqJIRknqS45NNk7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wc | ||||||
|         mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWp |         nImc951kndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfgqFKoxKk3 | ||||||
|         phqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4 |         qamqHKqPqwKrdavprFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1E7WKtgG2ebbw | ||||||
|         s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFn |         t2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796v/XAcMDswWfB48JfwtvDWMPUxFHEzsVL | ||||||
|         wePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA5 |         xcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ | ||||||
|         0LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v |         1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp22vvbgNwF3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr | ||||||
|         4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M |         5HPk/OWE5g3mlucf56noMui86Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q0 | ||||||
|         8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23////b |         9ML1UPXe9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf///9sAQwABAQEBAQEBAQEBAQEB | ||||||
|         AEMAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAwMD |         AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgIDAwMDAwMDAwMD/9sAQwEBAQEB | ||||||
|         AwMDAwMDA//bAEMBAQEBAQEBAQEBAQICAQICAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD |         AQEBAQEBAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD | ||||||
|         AwMDAwMDAwMDAwMDAwMDA//AABEIAAwAPAMBEQACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQID |         /8AAEQgADAA8AwERAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIB | ||||||
|         BAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR |         AwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYn | ||||||
|         8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOE |         KCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqi | ||||||
|         hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp |         o6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8B | ||||||
|         6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUE |         AAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYS | ||||||
|         BAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3 |         QVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZX | ||||||
|         ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeo |         WFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG | ||||||
|         qaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/ |         x8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A/VkftQ/EQAD/AITDxueP | ||||||
|         AP1ZH7UPxEAA/wCEw8bnj/ob9f8A/k+v7U/1Nyj/AKF+G/8ABUP/AJE/llcSZlZf7dX/APBk/wDMX/hq |         +hv1/wD+T6/tT/U3KP8AoX4b/wAFQ/8AkT+WVxJmVl/t1f8A8GT/AMxf+GofiJ/0N/jf/wAK/X//AJPo | ||||||
|         H4if9Df43/8ACv1//wCT6P8AU3Kf+hfhv/BUP/kQ/wBZcy/6Dq//AIMn/mH/AA1D8RP+hv8AG/8A4V+v |         /wBTcp/6F+G/8FQ/+RD/AFlzL/oOr/8Agyf+Yf8ADUPxE/6G/wAb/wDhX6//APJ9H+puU/8AQvw3/gqH | ||||||
|         /wDyfR/qblP/AEL8N/4Kh/8AIh/rLmX/AEHV/wDwZP8AzD/hqH4if9Df43/8K/X/AP5Po/1Nyn/oX4b/ |         /wAiH+suZf8AQdX/APBk/wDMP+GofiJ/0N/jf/wr9f8A/k+j/U3Kf+hfhv8AwVD/AORD/WXMv+g6v/4M | ||||||
|         AMFQ/wDkQ/1lzL/oOr/+DJ/5h/w1D8RP+hv8b/8AhX6//wDJ9H+puU/9C/Df+Cof/Ih/rLmX/QdX/wDB |         n/mH/DUPxE/6G/xv/wCFfr//AMn0f6m5T/0L8N/4Kh/8iH+suZf9B1f/AMGT/wAxP+GofiJ/0N/jf/wr | ||||||
|         k/8AMT/hqH4if9Df43/8K/X/AP5Po/1Nyn/oX4b/AMFQ/wDkQ/1kzL/oOr/+DJ/5n2R+xz+234zt/iRp |         9f8A/k+j/U3Kf+hfhv8AwVD/AORD/WTMv+g6v/4Mn/mfZH7HP7bfjO3+JGmfD7xrq+peIPBniCz1to5t | ||||||
|         nw+8a6vqXiDwZ4gs9baObXr+bUr/AMPajpmkX2tQ3FlqV2Zb57K7XT2t3tXkaJWkV4whVxJ+beJfAuU4 |         ev5tSv8Aw9qOmaRfa1DcWWpXZlvnsrtdPa3e1eRolaRXjCFXEn5t4l8C5ThOH8Vn+EoQo4zDyp35IqMZ | ||||||
|         Th/FZ/hKEKOMw8qd+SKjGcZzjTs4q0bpyUlJK7s073VvuuBOLMxxGcYfJ8TWlVw1ZTtzu7hKMJTupPWz |         xnONOzirRunJSUkruzTvdW+64E4szHEZxh8nxNaVXDVlO3O7uEowlO6k9bNRacW7apq2t/1o/wCF9eC/ | ||||||
|         UWnFu2qatrf9aP8AhfXgv+zv7U89/sfm+V5207N+M43fSv50P2w/kwr/AEFP42CgAoAKACgAoA9s/Z0/ |         7O/tTz3+x+b5XnbTs34zjd9K/nQ/bD+TCv8AQU/jYKACgAoAKACgD2z9nT+zv+FyeDf7W8/+zs6/9q+z | ||||||
|         s7/hcng3+1vP/s7Ov/avs2PP2f8ACL63t2buP9ZjP+zmvz7xU/5IPPf+4H/qRRPsvD//AJK7KP8AuL/6 |         Y8/Z/wAIvre3Zu4/1mM/7Oa/PvFT/kg89/7gf+pFE+y8P/8Akrso/wC4v/pmofv/AP8AFpP+FR9vse3/ | ||||||
|         ZqH7/wD/ABaT/hUfb7Ht/wBj7V9p8v8A9Cr+Oz+lz//Z |         AGPtX2ny/wD0Kv47P6XP/9k= | ||||||
| </value> | </value> | ||||||
|   </data> |   </data> | ||||||
|   <data name="PictureBox4.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> |   <data name="PictureBox4.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | ||||||
|     <value> |     <value> | ||||||
|         /9j/4AAQSkZJRgABAgEASABIAAD/7gAOQWRvYmUAZAAAAAAB/+ED5kV4aWYAAE1NACoAAAAIAAcBEgAD |         /9j/4AAQSkZJRgABAgEASABIAAD/4QPmRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAAB | ||||||
|         AAAAAQABAAABGgAFAAAAAQAAAGIBGwAFAAAAAQAAAGoBKAADAAAAAQACAAABMQACAAAAHAAAAHIBMgAC |         AAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAcAAAAcgEyAAIAAAAUAAAAjodpAAQAAAAB | ||||||
|         AAAAFAAAAI6HaQAEAAAAAQAAAKIAAADCAEgAAAABAAAASAAAAAEAAEFkb2JlIFBob3Rvc2hvcCBDUzMg |         AAAAogAAAMIASAAAAAEAAABIAAAAAQAAQWRvYmUgUGhvdG9zaG9wIENTMyBXaW5kb3dzADIwMTA6MDQ6 | ||||||
|         V2luZG93cwAyMDEwOjA0OjE1IDIwOjMyOjA0AAACoAIABAAAAAEAAAA8oAMABAAAAAEAAAAMAAAAAAAA |         MTUgMjA6MzI6MDQAAAKgAgAEAAAAAQAAADygAwAEAAAAAQAAAAwAAAAAAAAABgEDAAMAAAABAAYAAAEa | ||||||
|         AAYBAwADAAAAAQAGAAABGgAFAAAAAQAAARABGwAFAAAAAQAAARgBKAADAAAAAQACAAACAQAEAAAAAQAA |         AAUAAAABAAABEAEbAAUAAAABAAABGAEoAAMAAAABAAIAAAIBAAQAAAABAAABIAICAAQAAAABAAACvgAA | ||||||
|         ASACAgAEAAAAAQAAAr4AAAAAAAAASAAAAAEAAABIAAAAAf/Y/+AAEEpGSUYAAQIAAEgASAAA/+0ADEFk |         AAAAAABIAAAAAQAAAEgAAAAB/9j/4AAQSkZJRgABAgAASABIAAD/7QAMQWRvYmVfQ00AAf/uAA5BZG9i | ||||||
|         b2JlX0NNAAH/7gAOQWRvYmUAZIAAAAAB/9sAhAAMCAgICQgMCQkMEQsKCxEVDwwMDxUYExMVExMYEQwM |         ZQBkgAAAAAH/2wCEAAwICAgJCAwJCQwRCwoLERUPDAwPFRgTExUTExgRDAwMDAwMEQwMDAwMDAwMDAwM | ||||||
|         DAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQ0LCw0ODRAODhAUDg4OFBQODg4OFBEMDAwM |         DAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4NEA4OEBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwM | ||||||
|         DBERDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAMADwDASIAAhEBAxEB/90A |         DAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIAAwAPAMBIgACEQEDEQH/3QAEAAT/xAE/AAABBQEBAQEB | ||||||
|         BAAE/8QBPwAAAQUBAQEBAQEAAAAAAAAAAwABAgQFBgcICQoLAQABBQEBAQEBAQAAAAAAAAABAAIDBAUG |         AQAAAAAAAAADAAECBAUGBwgJCgsBAAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUH | ||||||
|         BwgJCgsQAAEEAQMCBAIFBwYIBQMMMwEAAhEDBCESMQVBUWETInGBMgYUkaGxQiMkFVLBYjM0coLRQwcl |         BggFAwwzAQACEQMEIRIxBUFRYRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMmRJNU | ||||||
|         klPw4fFjczUWorKDJkSTVGRFwqN0NhfSVeJl8rOEw9N14/NGJ5SkhbSVxNTk9KW1xdXl9VZmdoaWprbG |         ZEXCo3Q2F9JV4mXys4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3 | ||||||
|         1ub2N0dXZ3eHl6e3x9fn9xEAAgIBAgQEAwQFBgcHBgU1AQACEQMhMRIEQVFhcSITBTKBkRShsUIjwVLR |         EQACAgECBAQDBAUGBwcGBTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKCkkNTFWNzNPEl | ||||||
|         8DMkYuFygpJDUxVjczTxJQYWorKDByY1wtJEk1SjF2RFVTZ0ZeLys4TD03Xj80aUpIW0lcTU5PSltcXV |         BhaisoMHJjXC0kSTVKMXZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2JzdH | ||||||
|         5fVWZnaGlqa2xtbm9ic3R1dnd4eXp7fH/9oADAMBAAIRAxEAPwDd/amR/pH/AOcf70v2pkf6R/8AnH+9 |         V2d3h5ent8f/2gAMAwEAAhEDEQA/AN39qZH+kf8A5x/vS/amR/pH/wCcf71RSWh+r8Gl6/FvftTI/wBI | ||||||
|         UUlofq/Bpevxb37UyP8ASP8A84/3pftTI/0j/wDOP96opJfq/BXr8W9+1Mj/AEj/APOP96X7UyP9I/8A |         /wDzj/el+1Mj/SP/AM4/3qikl+r8Fevxb37UyP8ASP8A84/3pftTI/0j/wDOP96opJfq/BXr8Xe6N1u4 | ||||||
|         zj/eqKSX6vwV6/F3ujdbuGS2i5xfU8HVxktIG76XyW99vo27p0XGdO2/ba930dZj+q5dX+qfZPL8VAeD |         ZLaLnF9TwdXGS0gbvpfJb32+jbunRcZ07b9tr3fR1mP6rl1f6p9k8vxUB4PfjVVWv95mHH7Ru7vTyf/Z | ||||||
|         341VVr/eZhx+0bu708n/2f/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfO |         /+IMWElDQ19QUk9GSUxFAAEBAAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNzcE1T | ||||||
|         AAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAA |         RlQAAAAASUVDIHNSR0IAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1IUCAgAAAAAAAAAAAAAAAAAAAAAAAA | ||||||
|         AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rl |         AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3BydAAAAVAAAAAzZGVzYwAAAYQAAABsd3RwdAAA | ||||||
|         c2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJY |         AfAAAAAUYmtwdAAAAgQAAAAUclhZWgAAAhgAAAAUZ1hZWgAAAiwAAAAUYlhZWgAAAkAAAAAUZG1uZAAA | ||||||
|         WVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1 |         AlQAAABwZG1kZAAAAsQAAACIdnVlZAAAA0wAAACGdmlldwAAA9QAAAAkbHVtaQAAA/gAAAAUbWVhcwAA | ||||||
|         bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJU |         BAwAAAAkdGVjaAAABDAAAAAMclRSQwAABDwAAAgMZ1RSQwAABDwAAAgMYlRSQwAABDwAAAgMdGV4dAAA | ||||||
|         UkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55 |         AABDb3B5cmlnaHQgKGMpIDE5OTggSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkAAGRlc2MAAAAAAAAAEnNS | ||||||
|         AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4x |         R0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAA | ||||||
|         AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA |         AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAADzUQABAAAAARbMWFlaIAAA | ||||||
|         81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAA |         AAAAAAAAAAAAAAAAAABYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAA | ||||||
|         YpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVj |         AAAAACSgAAAPhAAAts9kZXNjAAAAAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAABZJ | ||||||
|         LmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |         RUMgaHR0cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | ||||||
|         AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0Ig |         AAAAAAAAZGVzYwAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBz | ||||||
|         Y29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29s |         UkdCAAAAAAAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBzUkdC | ||||||
|         b3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVuY2Ug |         AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlv | ||||||
|         Vmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdp |         biBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4g | ||||||
|         bmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAA |         SUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDPFAAD | ||||||
|         AAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAA |         7cwABBMLAANcngAAAAFYWVogAAAAAABMCVYAUAAAAFcf521lYXMAAAAAAAAAAQAAAAAAAAAAAAAAAAAA | ||||||
|         AAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAU |         AAAAAAKPAAAAAnNpZyAAAAAAQ1JUIGN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMAKAAtADIANwA7 | ||||||
|         ABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACp |         AEAARQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCkAKkArgCyALcAvADBAMYAywDQ | ||||||
|         AK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFS |         ANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIBWQFgAWcBbgF1AXwBgwGL | ||||||
|         AVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJB |         AZIBmgGhAakBsQG5AcEByQHRAdkB4QHpAfIB+gIDAgwCFAIdAiYCLwI4AkECSwJUAl0CZwJxAnoChAKO | ||||||
|         AksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+ |         ApgCogKsArYCwQLLAtUC4ALrAvUDAAMLAxYDIQMtAzgDQwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPg | ||||||
|         A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUN |         A+wD+QQGBBMEIAQtBDsESARVBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWG | ||||||
|         BRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1 |         BZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZBysHPQdPB2EHdAeG | ||||||
|         BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6 |         B5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJEAklCToJTwlkCXkJjwmkCboJzwnl | ||||||
|         CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvh |         CfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5C1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgyn | ||||||
|         C/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7u |         DMAM2QzzDQ0NJg1ADVoNdA2ODakNww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/P | ||||||
|         DwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJk |         D+wQCRAmEEMQYRB+EJsQuRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNj | ||||||
|         EoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJ |         E4MTpBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6Fx0XQRdl | ||||||
|         FmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqe |         F4kXrhfSF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4axRrsGxQbOxtjG4obshva | ||||||
|         GsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9p |         HAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+HukfEx8+H2kflB+/H+ogFSBBIGwgmCDE | ||||||
|         H5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSr |         IPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwojOCNmI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl9yYn | ||||||
|         JNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpo |         Jlcmhya3JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkGKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwF | ||||||
|         KpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCk |         LDksbiyiLNctDC1BLXYtqy3hLhYuTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJj | ||||||
|         MNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdg |         Mpsy1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5BTlC | ||||||
|         N5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6g |         OX85vDn5OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/iQCNAZECm | ||||||
|         PuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZn |         QOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5FEkVVRZpF3kYiRmdGq0bwRzVHe0fASAVIS0iR | ||||||
|         RqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63 |         SNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkviTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EG | ||||||
|         TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeS |         UVBRm1HmUjFSfFLHUxNTX1OqU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoH | ||||||
|         V+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8 |         WlZaplr1W0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBjQ2OX | ||||||
|         YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3 |         Y+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdrT2una/9sV2yvbQhtYG25 | ||||||
|         a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWF |         bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0zHUodYV14XY+dpt2+HdWd7N4EXhu | ||||||
|         deF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4Co |         eMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4BfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6 | ||||||
|         gQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/Ixj |         hB2EgITjhUeFq4YOhnKG14c7h5+IBIhpiM6JM4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+e | ||||||
|         jMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4 |         kAaQbpDWkT+RqJIRknqS45NNk7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wc | ||||||
|         mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWp |         nImc951kndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfgqFKoxKk3 | ||||||
|         phqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4 |         qamqHKqPqwKrdavprFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1E7WKtgG2ebbw | ||||||
|         s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFn |         t2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796v/XAcMDswWfB48JfwtvDWMPUxFHEzsVL | ||||||
|         wePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA5 |         xcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ | ||||||
|         0LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v |         1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp22vvbgNwF3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr | ||||||
|         4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M |         5HPk/OWE5g3mlucf56noMui86Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q0 | ||||||
|         8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23////b |         9ML1UPXe9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf///9sAQwABAQEBAQEBAQEBAQEB | ||||||
|         AEMAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAwMD |         AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgIDAwMDAwMDAwMD/9sAQwEBAQEB | ||||||
|         AwMDAwMDA//bAEMBAQEBAQEBAQEBAQICAQICAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD |         AQEBAQEBAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD | ||||||
|         AwMDAwMDAwMDAwMDAwMDA//AABEIAAwAPAMBEQACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQID |         /8AAEQgADAA8AwERAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIB | ||||||
|         BAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR |         AwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYn | ||||||
|         8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOE |         KCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqi | ||||||
|         hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp |         o6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8B | ||||||
|         6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUE |         AAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYS | ||||||
|         BAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3 |         QVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZX | ||||||
|         ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeo |         WFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG | ||||||
|         qaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/ |         x8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A/VkftQ/EQAD/AITDxueP | ||||||
|         AP1ZH7UPxEAA/wCEw8bnj/ob9f8A/k+v7U/1Nyj/AKF+G/8ABUP/AJE/llcSZlZf7dX/APBk/wDMX/hq |         +hv1/wD+T6/tT/U3KP8AoX4b/wAFQ/8AkT+WVxJmVl/t1f8A8GT/AMxf+GofiJ/0N/jf/wAK/X//AJPo | ||||||
|         H4if9Df43/8ACv1//wCT6P8AU3Kf+hfhv/BUP/kQ/wBZcy/6Dq//AIMn/mH/AA1D8RP+hv8AG/8A4V+v |         /wBTcp/6F+G/8FQ/+RD/AFlzL/oOr/8Agyf+Yf8ADUPxE/6G/wAb/wDhX6//APJ9H+puU/8AQvw3/gqH | ||||||
|         /wDyfR/qblP/AEL8N/4Kh/8AIh/rLmX/AEHV/wDwZP8AzD/hqH4if9Df43/8K/X/AP5Po/1Nyn/oX4b/ |         /wAiH+suZf8AQdX/APBk/wDMP+GofiJ/0N/jf/wr9f8A/k+j/U3Kf+hfhv8AwVD/AORD/WXMv+g6v/4M | ||||||
|         AMFQ/wDkQ/1lzL/oOr/+DJ/5h/w1D8RP+hv8b/8AhX6//wDJ9H+puU/9C/Df+Cof/Ih/rLmX/QdX/wDB |         n/mH/DUPxE/6G/xv/wCFfr//AMn0f6m5T/0L8N/4Kh/8iH+suZf9B1f/AMGT/wAxP+GofiJ/0N/jf/wr | ||||||
|         k/8AMT/hqH4if9Df43/8K/X/AP5Po/1Nyn/oX4b/AMFQ/wDkQ/1kzL/oOr/+DJ/5n2R+xz+234zt/iRp |         9f8A/k+j/U3Kf+hfhv8AwVD/AORD/WTMv+g6v/4Mn/mfZH7HP7bfjO3+JGmfD7xrq+peIPBniCz1to5t | ||||||
|         nw+8a6vqXiDwZ4gs9baObXr+bUr/AMPajpmkX2tQ3FlqV2Zb57K7XT2t3tXkaJWkV4whVxJ+beJfAuU4 |         ev5tSv8Aw9qOmaRfa1DcWWpXZlvnsrtdPa3e1eRolaRXjCFXEn5t4l8C5ThOH8Vn+EoQo4zDyp35IqMZ | ||||||
|         Th/FZ/hKEKOMw8qd+SKjGcZzjTs4q0bpyUlJK7s073VvuuBOLMxxGcYfJ8TWlVw1ZTtzu7hKMJTupPWz |         xnONOzirRunJSUkruzTvdW+64E4szHEZxh8nxNaVXDVlO3O7uEowlO6k9bNRacW7apq2t/1o/wCF9eC/ | ||||||
|         UWnFu2qatrf9aP8AhfXgv+zv7U89/sfm+V5207N+M43fSv50P2w/kwr/AEFP42CgAoAKACgAoA9s/Z0/ |         7O/tTz3+x+b5XnbTs34zjd9K/nQ/bD+TCv8AQU/jYKACgAoAKACgD2z9nT+zv+FyeDf7W8/+zs6/9q+z | ||||||
|         s7/hcng3+1vP/s7Ov/avs2PP2f8ACL63t2buP9ZjP+zmvz7xU/5IPPf+4H/qRRPsvD//AJK7KP8AuL/6 |         Y8/Z/wAIvre3Zu4/1mM/7Oa/PvFT/kg89/7gf+pFE+y8P/8Akrso/wC4v/pmofv/AP8AFpP+FR9vse3/ | ||||||
|         ZqH7/wD/ABaT/hUfb7Ht/wBj7V9p8v8A9Cr+Oz+lz//Z |         AGPtX2ny/wD0Kv47P6XP/9k= | ||||||
| </value> | </value> | ||||||
|   </data> |   </data> | ||||||
|   <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> |   <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> | ||||||
|   | |||||||
| @@ -1115,6 +1115,10 @@ | |||||||
|             Me.cmb_건축부위방식.Enabled = False |             Me.cmb_건축부위방식.Enabled = False | ||||||
|             ' MsgBox(Me.cmb_열관류율.SelectedValue) |             ' MsgBox(Me.cmb_열관류율.SelectedValue) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |             '//아래와동일한 코드 pub Update_열관류율_140409() 에 있음 | ||||||
|  |             '//변경시 같이 변경해야함 250710-2320 | ||||||
|  |  | ||||||
|             Try |             Try | ||||||
|                 Dim Dr As DS.tbl_ykRow = DSET1.tbl_yk.Select("code='" & Me.cmb_열관류율.SelectedValue & "'")(0) |                 Dim Dr As DS.tbl_ykRow = DSET1.tbl_yk.Select("code='" & Me.cmb_열관류율.SelectedValue & "'")(0) | ||||||
|                 Dim dr2() As DS.tbl_commonRow = DSET1.tbl_common.Select("gubun='1088' and code='" & Dr("면형태").ToString & "'") |                 Dim dr2() As DS.tbl_commonRow = DSET1.tbl_common.Select("gubun='1088' and code='" & Dr("면형태").ToString & "'") | ||||||
|   | |||||||
							
								
								
									
										5561
									
								
								ArinWarev1/Forms_Input/Frm_v20091231_Weather.Designer.vb
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										5561
									
								
								ArinWarev1/Forms_Input/Frm_v20091231_Weather.Designer.vb
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										220
									
								
								ArinWarev1/Forms_Report/Frm_Macro2.Designer.vb
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										220
									
								
								ArinWarev1/Forms_Report/Frm_Macro2.Designer.vb
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,220 @@ | |||||||
|  | <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ | ||||||
|  | Partial Class Frm_Macro2 | ||||||
|  |     Inherits System.Windows.Forms.Form | ||||||
|  |  | ||||||
|  |     'Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다. | ||||||
|  |     <System.Diagnostics.DebuggerNonUserCode()> _ | ||||||
|  |     Protected Overrides Sub Dispose(ByVal disposing As Boolean) | ||||||
|  |         Try | ||||||
|  |             If disposing AndAlso components IsNot Nothing Then | ||||||
|  |                 components.Dispose() | ||||||
|  |             End If | ||||||
|  |         Finally | ||||||
|  |             MyBase.Dispose(disposing) | ||||||
|  |         End Try | ||||||
|  |     End Sub | ||||||
|  |  | ||||||
|  |     'Windows Form 디자이너에 필요합니다. | ||||||
|  |     Private components As System.ComponentModel.IContainer | ||||||
|  |  | ||||||
|  |     '참고: 다음 프로시저는 Windows Form 디자이너에 필요합니다. | ||||||
|  |     '수정하려면 Windows Form 디자이너를 사용하십시오.   | ||||||
|  |     '코드 편집기를 사용하여 수정하지 마십시오. | ||||||
|  |     <System.Diagnostics.DebuggerStepThrough()> _ | ||||||
|  |     Private Sub InitializeComponent() | ||||||
|  |         Dim DefaultFocusIndicatorRenderer1 As FarPoint.Win.Spread.DefaultFocusIndicatorRenderer = New FarPoint.Win.Spread.DefaultFocusIndicatorRenderer() | ||||||
|  |         Dim DefaultScrollBarRenderer1 As FarPoint.Win.Spread.DefaultScrollBarRenderer = New FarPoint.Win.Spread.DefaultScrollBarRenderer() | ||||||
|  |         Dim DefaultScrollBarRenderer2 As FarPoint.Win.Spread.DefaultScrollBarRenderer = New FarPoint.Win.Spread.DefaultScrollBarRenderer() | ||||||
|  |         Me.FpSpread1 = New FarPoint.Win.Spread.FpSpread() | ||||||
|  |         Me.FpSpread1_Sheet1 = New FarPoint.Win.Spread.SheetView() | ||||||
|  |         Me.Button2 = New System.Windows.Forms.Button() | ||||||
|  |         Me.Button1 = New System.Windows.Forms.Button() | ||||||
|  |         Me.tbStart = New System.Windows.Forms.TextBox() | ||||||
|  |         Me.Button3 = New System.Windows.Forms.Button() | ||||||
|  |         Me.ProgressBar1 = New System.Windows.Forms.ProgressBar() | ||||||
|  |         Me.Label1 = New System.Windows.Forms.Label() | ||||||
|  |         Me.tbEnd = New System.Windows.Forms.TextBox() | ||||||
|  |         Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel() | ||||||
|  |         Me.Label2 = New System.Windows.Forms.Label() | ||||||
|  |         CType(Me.FpSpread1, System.ComponentModel.ISupportInitialize).BeginInit() | ||||||
|  |         CType(Me.FpSpread1_Sheet1, System.ComponentModel.ISupportInitialize).BeginInit() | ||||||
|  |         Me.TableLayoutPanel1.SuspendLayout() | ||||||
|  |         Me.SuspendLayout() | ||||||
|  |         ' | ||||||
|  |         'FpSpread1 | ||||||
|  |         ' | ||||||
|  |         Me.FpSpread1.AccessibleDescription = "" | ||||||
|  |         Me.FpSpread1.Dock = System.Windows.Forms.DockStyle.Fill | ||||||
|  |         Me.FpSpread1.FocusRenderer = DefaultFocusIndicatorRenderer1 | ||||||
|  |         Me.FpSpread1.HorizontalScrollBar.Buttons = New FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton") | ||||||
|  |         Me.FpSpread1.HorizontalScrollBar.Name = "" | ||||||
|  |         Me.FpSpread1.HorizontalScrollBar.Renderer = DefaultScrollBarRenderer1 | ||||||
|  |         Me.FpSpread1.HorizontalScrollBar.TabIndex = 2 | ||||||
|  |         Me.FpSpread1.Location = New System.Drawing.Point(0, 38) | ||||||
|  |         Me.FpSpread1.Name = "FpSpread1" | ||||||
|  |         Me.FpSpread1.Sheets.AddRange(New FarPoint.Win.Spread.SheetView() {Me.FpSpread1_Sheet1}) | ||||||
|  |         Me.FpSpread1.Size = New System.Drawing.Size(1019, 453) | ||||||
|  |         Me.FpSpread1.Skin = FarPoint.Win.Spread.DefaultSpreadSkins.Classic | ||||||
|  |         Me.FpSpread1.TabIndex = 0 | ||||||
|  |         Me.FpSpread1.VerticalScrollBar.Buttons = New FarPoint.Win.Spread.FpScrollBarButtonCollection("BackwardLineButton,ThumbTrack,ForwardLineButton") | ||||||
|  |         Me.FpSpread1.VerticalScrollBar.Name = "" | ||||||
|  |         Me.FpSpread1.VerticalScrollBar.Renderer = DefaultScrollBarRenderer2 | ||||||
|  |         Me.FpSpread1.VerticalScrollBar.TabIndex = 3 | ||||||
|  |         Me.FpSpread1.VisualStyles = FarPoint.Win.VisualStyles.Off | ||||||
|  |         ' | ||||||
|  |         'FpSpread1_Sheet1 | ||||||
|  |         ' | ||||||
|  |         Me.FpSpread1_Sheet1.Reset() | ||||||
|  |         Me.FpSpread1_Sheet1.SheetName = "Sheet1" | ||||||
|  |         'Formulas and custom names must be loaded with R1C1 reference style | ||||||
|  |         Me.FpSpread1_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1 | ||||||
|  |         FpSpread1_Sheet1.ColumnCount = 5 | ||||||
|  |         FpSpread1_Sheet1.RowCount = 1 | ||||||
|  |         Me.FpSpread1_Sheet1.ColumnFooter.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red | ||||||
|  |         Me.FpSpread1_Sheet1.ColumnFooter.DefaultStyle.Parent = "HeaderDefault" | ||||||
|  |         Me.FpSpread1_Sheet1.ColumnFooterSheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red | ||||||
|  |         Me.FpSpread1_Sheet1.ColumnFooterSheetCornerStyle.Parent = "CornerDefault" | ||||||
|  |         Me.FpSpread1_Sheet1.ColumnHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red | ||||||
|  |         Me.FpSpread1_Sheet1.ColumnHeader.DefaultStyle.Parent = "HeaderDefault" | ||||||
|  |         Me.FpSpread1_Sheet1.RowHeader.DefaultStyle.NoteIndicatorColor = System.Drawing.Color.Red | ||||||
|  |         Me.FpSpread1_Sheet1.RowHeader.DefaultStyle.Parent = "RowHeaderDefault" | ||||||
|  |         Me.FpSpread1_Sheet1.SheetCornerStyle.NoteIndicatorColor = System.Drawing.Color.Red | ||||||
|  |         Me.FpSpread1_Sheet1.SheetCornerStyle.Parent = "CornerDefault" | ||||||
|  |         Me.FpSpread1_Sheet1.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1 | ||||||
|  |         ' | ||||||
|  |         'Button2 | ||||||
|  |         ' | ||||||
|  |         Me.Button2.Dock = System.Windows.Forms.DockStyle.Fill | ||||||
|  |         Me.Button2.Location = New System.Drawing.Point(673, 3) | ||||||
|  |         Me.Button2.Name = "Button2" | ||||||
|  |         Me.Button2.Size = New System.Drawing.Size(194, 32) | ||||||
|  |         Me.Button2.TabIndex = 1 | ||||||
|  |         Me.Button2.Text = "결과저장하기" | ||||||
|  |         Me.Button2.UseVisualStyleBackColor = True | ||||||
|  |         ' | ||||||
|  |         'Button1 | ||||||
|  |         ' | ||||||
|  |         Me.Button1.Dock = System.Windows.Forms.DockStyle.Fill | ||||||
|  |         Me.Button1.Location = New System.Drawing.Point(3, 3) | ||||||
|  |         Me.Button1.Name = "Button1" | ||||||
|  |         Me.Button1.Size = New System.Drawing.Size(194, 32) | ||||||
|  |         Me.Button1.TabIndex = 0 | ||||||
|  |         Me.Button1.Text = "목록불러오기" | ||||||
|  |         Me.Button1.UseVisualStyleBackColor = True | ||||||
|  |         ' | ||||||
|  |         'tbStart | ||||||
|  |         ' | ||||||
|  |         Me.tbStart.Dock = System.Windows.Forms.DockStyle.Fill | ||||||
|  |         Me.tbStart.Font = New System.Drawing.Font("맑은 고딕", 14.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) | ||||||
|  |         Me.tbStart.Location = New System.Drawing.Point(283, 3) | ||||||
|  |         Me.tbStart.Name = "tbStart" | ||||||
|  |         Me.tbStart.Size = New System.Drawing.Size(74, 33) | ||||||
|  |         Me.tbStart.TabIndex = 2 | ||||||
|  |         Me.tbStart.Text = "6" | ||||||
|  |         Me.tbStart.TextAlign = System.Windows.Forms.HorizontalAlignment.Center | ||||||
|  |         ' | ||||||
|  |         'Button3 | ||||||
|  |         ' | ||||||
|  |         Me.Button3.Dock = System.Windows.Forms.DockStyle.Fill | ||||||
|  |         Me.Button3.Location = New System.Drawing.Point(523, 3) | ||||||
|  |         Me.Button3.Name = "Button3" | ||||||
|  |         Me.Button3.Size = New System.Drawing.Size(144, 32) | ||||||
|  |         Me.Button3.TabIndex = 3 | ||||||
|  |         Me.Button3.Text = "실행" | ||||||
|  |         Me.Button3.UseVisualStyleBackColor = True | ||||||
|  |         ' | ||||||
|  |         'ProgressBar1 | ||||||
|  |         ' | ||||||
|  |         Me.ProgressBar1.Dock = System.Windows.Forms.DockStyle.Bottom | ||||||
|  |         Me.ProgressBar1.Location = New System.Drawing.Point(0, 491) | ||||||
|  |         Me.ProgressBar1.Name = "ProgressBar1" | ||||||
|  |         Me.ProgressBar1.Size = New System.Drawing.Size(1019, 23) | ||||||
|  |         Me.ProgressBar1.TabIndex = 2 | ||||||
|  |         ' | ||||||
|  |         'Label1 | ||||||
|  |         ' | ||||||
|  |         Me.Label1.Dock = System.Windows.Forms.DockStyle.Fill | ||||||
|  |         Me.Label1.Location = New System.Drawing.Point(363, 0) | ||||||
|  |         Me.Label1.Name = "Label1" | ||||||
|  |         Me.Label1.Size = New System.Drawing.Size(74, 38) | ||||||
|  |         Me.Label1.TabIndex = 3 | ||||||
|  |         Me.Label1.Text = "~" | ||||||
|  |         Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter | ||||||
|  |         ' | ||||||
|  |         'tbEnd | ||||||
|  |         ' | ||||||
|  |         Me.tbEnd.Dock = System.Windows.Forms.DockStyle.Fill | ||||||
|  |         Me.tbEnd.Font = New System.Drawing.Font("맑은 고딕", 14.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) | ||||||
|  |         Me.tbEnd.Location = New System.Drawing.Point(443, 3) | ||||||
|  |         Me.tbEnd.Name = "tbEnd" | ||||||
|  |         Me.tbEnd.Size = New System.Drawing.Size(74, 33) | ||||||
|  |         Me.tbEnd.TabIndex = 4 | ||||||
|  |         Me.tbEnd.Text = "0" | ||||||
|  |         Me.tbEnd.TextAlign = System.Windows.Forms.HorizontalAlignment.Center | ||||||
|  |         ' | ||||||
|  |         'TableLayoutPanel1 | ||||||
|  |         ' | ||||||
|  |         Me.TableLayoutPanel1.ColumnCount = 8 | ||||||
|  |         Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 200.0!)) | ||||||
|  |         Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 80.0!)) | ||||||
|  |         Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 80.0!)) | ||||||
|  |         Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 80.0!)) | ||||||
|  |         Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 80.0!)) | ||||||
|  |         Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 150.0!)) | ||||||
|  |         Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 200.0!)) | ||||||
|  |         Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) | ||||||
|  |         Me.TableLayoutPanel1.Controls.Add(Me.Button1, 0, 0) | ||||||
|  |         Me.TableLayoutPanel1.Controls.Add(Me.Button3, 5, 0) | ||||||
|  |         Me.TableLayoutPanel1.Controls.Add(Me.Button2, 6, 0) | ||||||
|  |         Me.TableLayoutPanel1.Controls.Add(Me.tbEnd, 4, 0) | ||||||
|  |         Me.TableLayoutPanel1.Controls.Add(Me.Label2, 1, 0) | ||||||
|  |         Me.TableLayoutPanel1.Controls.Add(Me.tbStart, 2, 0) | ||||||
|  |         Me.TableLayoutPanel1.Controls.Add(Me.Label1, 3, 0) | ||||||
|  |         Me.TableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Top | ||||||
|  |         Me.TableLayoutPanel1.Location = New System.Drawing.Point(0, 0) | ||||||
|  |         Me.TableLayoutPanel1.Name = "TableLayoutPanel1" | ||||||
|  |         Me.TableLayoutPanel1.RowCount = 1 | ||||||
|  |         Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!)) | ||||||
|  |         Me.TableLayoutPanel1.Size = New System.Drawing.Size(1019, 38) | ||||||
|  |         Me.TableLayoutPanel1.TabIndex = 5 | ||||||
|  |         ' | ||||||
|  |         'Label2 | ||||||
|  |         ' | ||||||
|  |         Me.Label2.Dock = System.Windows.Forms.DockStyle.Fill | ||||||
|  |         Me.Label2.Location = New System.Drawing.Point(203, 0) | ||||||
|  |         Me.Label2.Name = "Label2" | ||||||
|  |         Me.Label2.Size = New System.Drawing.Size(74, 38) | ||||||
|  |         Me.Label2.TabIndex = 3 | ||||||
|  |         Me.Label2.Text = "실행범위" | ||||||
|  |         Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter | ||||||
|  |         ' | ||||||
|  |         'Frm_Macro2 | ||||||
|  |         ' | ||||||
|  |         Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 12.0!) | ||||||
|  |         Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font | ||||||
|  |         Me.ClientSize = New System.Drawing.Size(1019, 514) | ||||||
|  |         Me.Controls.Add(Me.FpSpread1) | ||||||
|  |         Me.Controls.Add(Me.TableLayoutPanel1) | ||||||
|  |         Me.Controls.Add(Me.ProgressBar1) | ||||||
|  |         Me.Name = "Frm_Macro2" | ||||||
|  |         Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen | ||||||
|  |         Me.Text = "일괄처리" | ||||||
|  |         CType(Me.FpSpread1, System.ComponentModel.ISupportInitialize).EndInit() | ||||||
|  |         CType(Me.FpSpread1_Sheet1, System.ComponentModel.ISupportInitialize).EndInit() | ||||||
|  |         Me.TableLayoutPanel1.ResumeLayout(False) | ||||||
|  |         Me.TableLayoutPanel1.PerformLayout() | ||||||
|  |         Me.ResumeLayout(False) | ||||||
|  |  | ||||||
|  |     End Sub | ||||||
|  |     Friend WithEvents FpSpread1 As FarPoint.Win.Spread.FpSpread | ||||||
|  |     Friend WithEvents FpSpread1_Sheet1 As FarPoint.Win.Spread.SheetView | ||||||
|  |     Friend WithEvents Button1 As System.Windows.Forms.Button | ||||||
|  |     Friend WithEvents Button2 As System.Windows.Forms.Button | ||||||
|  |     Friend WithEvents tbStart As System.Windows.Forms.TextBox | ||||||
|  |     Friend WithEvents Button3 As System.Windows.Forms.Button | ||||||
|  |     Friend WithEvents ProgressBar1 As System.Windows.Forms.ProgressBar | ||||||
|  |     Friend WithEvents tbEnd As System.Windows.Forms.TextBox | ||||||
|  |     Friend WithEvents Label1 As System.Windows.Forms.Label | ||||||
|  |     Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel | ||||||
|  |     Friend WithEvents Label2 As System.Windows.Forms.Label | ||||||
|  | End Class | ||||||
							
								
								
									
										123
									
								
								ArinWarev1/Forms_Report/Frm_Macro2.resx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										123
									
								
								ArinWarev1/Forms_Report/Frm_Macro2.resx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,123 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <root> | ||||||
|  |   <!--  | ||||||
|  |     Microsoft ResX Schema  | ||||||
|  |      | ||||||
|  |     Version 2.0 | ||||||
|  |      | ||||||
|  |     The primary goals of this format is to allow a simple XML format  | ||||||
|  |     that is mostly human readable. The generation and parsing of the  | ||||||
|  |     various data types are done through the TypeConverter classes  | ||||||
|  |     associated with the data types. | ||||||
|  |      | ||||||
|  |     Example: | ||||||
|  |      | ||||||
|  |     ... ado.net/XML headers & schema ... | ||||||
|  |     <resheader name="resmimetype">text/microsoft-resx</resheader> | ||||||
|  |     <resheader name="version">2.0</resheader> | ||||||
|  |     <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | ||||||
|  |     <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | ||||||
|  |     <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | ||||||
|  |     <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | ||||||
|  |     <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | ||||||
|  |         <value>[base64 mime encoded serialized .NET Framework object]</value> | ||||||
|  |     </data> | ||||||
|  |     <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | ||||||
|  |         <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | ||||||
|  |         <comment>This is a comment</comment> | ||||||
|  |     </data> | ||||||
|  |                  | ||||||
|  |     There are any number of "resheader" rows that contain simple  | ||||||
|  |     name/value pairs. | ||||||
|  |      | ||||||
|  |     Each data row contains a name, and value. The row also contains a  | ||||||
|  |     type or mimetype. Type corresponds to a .NET class that support  | ||||||
|  |     text/value conversion through the TypeConverter architecture.  | ||||||
|  |     Classes that don't support this are serialized and stored with the  | ||||||
|  |     mimetype set. | ||||||
|  |      | ||||||
|  |     The mimetype is used for serialized objects, and tells the  | ||||||
|  |     ResXResourceReader how to depersist the object. This is currently not  | ||||||
|  |     extensible. For a given mimetype the value must be set accordingly: | ||||||
|  |      | ||||||
|  |     Note - application/x-microsoft.net.object.binary.base64 is the format  | ||||||
|  |     that the ResXResourceWriter will generate, however the reader can  | ||||||
|  |     read any of the formats listed below. | ||||||
|  |      | ||||||
|  |     mimetype: application/x-microsoft.net.object.binary.base64 | ||||||
|  |     value   : The object must be serialized with  | ||||||
|  |             : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | ||||||
|  |             : and then encoded with base64 encoding. | ||||||
|  |      | ||||||
|  |     mimetype: application/x-microsoft.net.object.soap.base64 | ||||||
|  |     value   : The object must be serialized with  | ||||||
|  |             : System.Runtime.Serialization.Formatters.Soap.SoapFormatter | ||||||
|  |             : and then encoded with base64 encoding. | ||||||
|  |  | ||||||
|  |     mimetype: application/x-microsoft.net.object.bytearray.base64 | ||||||
|  |     value   : The object must be serialized into a byte array  | ||||||
|  |             : using a System.ComponentModel.TypeConverter | ||||||
|  |             : and then encoded with base64 encoding. | ||||||
|  |     --> | ||||||
|  |   <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | ||||||
|  |     <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | ||||||
|  |     <xsd:element name="root" msdata:IsDataSet="true"> | ||||||
|  |       <xsd:complexType> | ||||||
|  |         <xsd:choice maxOccurs="unbounded"> | ||||||
|  |           <xsd:element name="metadata"> | ||||||
|  |             <xsd:complexType> | ||||||
|  |               <xsd:sequence> | ||||||
|  |                 <xsd:element name="value" type="xsd:string" minOccurs="0" /> | ||||||
|  |               </xsd:sequence> | ||||||
|  |               <xsd:attribute name="name" use="required" type="xsd:string" /> | ||||||
|  |               <xsd:attribute name="type" type="xsd:string" /> | ||||||
|  |               <xsd:attribute name="mimetype" type="xsd:string" /> | ||||||
|  |               <xsd:attribute ref="xml:space" /> | ||||||
|  |             </xsd:complexType> | ||||||
|  |           </xsd:element> | ||||||
|  |           <xsd:element name="assembly"> | ||||||
|  |             <xsd:complexType> | ||||||
|  |               <xsd:attribute name="alias" type="xsd:string" /> | ||||||
|  |               <xsd:attribute name="name" type="xsd:string" /> | ||||||
|  |             </xsd:complexType> | ||||||
|  |           </xsd:element> | ||||||
|  |           <xsd:element name="data"> | ||||||
|  |             <xsd:complexType> | ||||||
|  |               <xsd:sequence> | ||||||
|  |                 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | ||||||
|  |                 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | ||||||
|  |               </xsd:sequence> | ||||||
|  |               <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | ||||||
|  |               <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | ||||||
|  |               <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | ||||||
|  |               <xsd:attribute ref="xml:space" /> | ||||||
|  |             </xsd:complexType> | ||||||
|  |           </xsd:element> | ||||||
|  |           <xsd:element name="resheader"> | ||||||
|  |             <xsd:complexType> | ||||||
|  |               <xsd:sequence> | ||||||
|  |                 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | ||||||
|  |               </xsd:sequence> | ||||||
|  |               <xsd:attribute name="name" type="xsd:string" use="required" /> | ||||||
|  |             </xsd:complexType> | ||||||
|  |           </xsd:element> | ||||||
|  |         </xsd:choice> | ||||||
|  |       </xsd:complexType> | ||||||
|  |     </xsd:element> | ||||||
|  |   </xsd:schema> | ||||||
|  |   <resheader name="resmimetype"> | ||||||
|  |     <value>text/microsoft-resx</value> | ||||||
|  |   </resheader> | ||||||
|  |   <resheader name="version"> | ||||||
|  |     <value>2.0</value> | ||||||
|  |   </resheader> | ||||||
|  |   <resheader name="reader"> | ||||||
|  |     <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | ||||||
|  |   </resheader> | ||||||
|  |   <resheader name="writer"> | ||||||
|  |     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | ||||||
|  |   </resheader> | ||||||
|  |   <metadata name="FpSpread1_Sheet1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> | ||||||
|  |     <value>17, 17</value> | ||||||
|  |   </metadata> | ||||||
|  | </root> | ||||||
							
								
								
									
										841
									
								
								ArinWarev1/Forms_Report/Frm_Macro2.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										841
									
								
								ArinWarev1/Forms_Report/Frm_Macro2.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,841 @@ | |||||||
|  | Public Class Frm_Macro2 | ||||||
|  |  | ||||||
|  |     Dim fn As String = "" | ||||||
|  |  | ||||||
|  |     Dim 단위면적당신재생1차에너지합 As Decimal = 0 | ||||||
|  |     Dim 단위면적당1차에너소비량합 As Decimal = 0 | ||||||
|  |     Dim 에너지자립률 As Double = 0 | ||||||
|  |  | ||||||
|  |     Public Sub New() | ||||||
|  |  | ||||||
|  |         ' 이 호출은 디자이너에 필요합니다. | ||||||
|  |         InitializeComponent() | ||||||
|  |         fn = "" | ||||||
|  |         ' InitializeComponent() 호출 뒤에 초기화 코드를 추가하십시오. | ||||||
|  |  | ||||||
|  |     End Sub | ||||||
|  |  | ||||||
|  |     Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click | ||||||
|  |         LoadFile() | ||||||
|  |     End Sub | ||||||
|  |  | ||||||
|  |     Private Sub LoadFile() | ||||||
|  |  | ||||||
|  |         Dim od As New OpenFileDialog | ||||||
|  |         od.Filter = "excel|*.xls|*.*|*.*" | ||||||
|  |         od.FilterIndex = 1 | ||||||
|  |         If (od.ShowDialog() <> Windows.Forms.DialogResult.OK) Then Return | ||||||
|  |         fn = od.FileName | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         If Not System.IO.File.Exists(fn) Then | ||||||
|  |             MsgBox("업로드샘플파일(" + fn + ")가 존재하지 않습니다", MsgBoxStyle.Critical, "확인") | ||||||
|  |             Return | ||||||
|  |         End If | ||||||
|  |  | ||||||
|  |         Try | ||||||
|  |             If Me.FpSpread1.OpenExcel(fn) Then | ||||||
|  |                 '// MakeData() | ||||||
|  |                 '//첫줄에 열 번호를 넣는다. | ||||||
|  |                 For col As Integer = 1 To 108 | ||||||
|  |                     Dim oldvalue As Object = FpSpread1_Sheet1.Cells(0, col - 1).Value | ||||||
|  |                     If oldvalue Is Nothing Then | ||||||
|  |                         FpSpread1_Sheet1.Cells(0, col - 1).Value = "(" + col.ToString() + ")" | ||||||
|  |                     Else | ||||||
|  |                         FpSpread1_Sheet1.Cells(0, col - 1).Value = oldvalue.ToString() + "(" + col.ToString() + ")" | ||||||
|  |                     End If | ||||||
|  |                 Next | ||||||
|  |  | ||||||
|  |                 '//0번째열에서 1의 값을 찾고 그 이후의 값을 찾아서 번호를 설정한다. | ||||||
|  |                 Dim StartIndex As Integer = 0 | ||||||
|  |                 Dim EndIndex As Integer = 0 | ||||||
|  |                 ProgressBar1.Minimum = 0 | ||||||
|  |                 ProgressBar1.Maximum = 10000 | ||||||
|  |                 ProgressBar1.Value = 0 | ||||||
|  |                 For i As Integer = 0 To 65535 | ||||||
|  |                     If i >= ProgressBar1.Maximum - 1 Then | ||||||
|  |                         ProgressBar1.Value = ProgressBar1.Maximum | ||||||
|  |                     Else | ||||||
|  |                         ProgressBar1.Value += 1 | ||||||
|  |                     End If | ||||||
|  |  | ||||||
|  |                     Dim curval As Object = FpSpread1_Sheet1.Cells(i, 0).Value | ||||||
|  |                     If curval Is Nothing Then | ||||||
|  |                         If StartIndex <> 0 Then | ||||||
|  |                             EndIndex = i - 1 | ||||||
|  |                             Exit For | ||||||
|  |                         Else | ||||||
|  |                             Continue For | ||||||
|  |                         End If | ||||||
|  |                     End If | ||||||
|  |  | ||||||
|  |                     If curval.ToString() = "1" Then | ||||||
|  |                         StartIndex = i | ||||||
|  |                     ElseIf StartIndex <> 0 Then | ||||||
|  |                         If curval.ToString() = "" Then | ||||||
|  |                             EndIndex = i - 1 | ||||||
|  |                             Exit For | ||||||
|  |                         End If | ||||||
|  |                     End If | ||||||
|  |                 Next | ||||||
|  |  | ||||||
|  |                 tbStart.Text = (StartIndex + 1).ToString() | ||||||
|  |                 tbEnd.Text = (EndIndex + 1).ToString() | ||||||
|  |             End If | ||||||
|  |         Catch ex As Exception | ||||||
|  |             MsgBox(ex.Message, MsgBoxStyle.Critical, "파일 불러오기 오류") | ||||||
|  |         End Try | ||||||
|  |     End Sub | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     Private Function RData(grp As String, code As Integer) As Decimal | ||||||
|  |         Dim filter As String = String.Format("GRP='{0}' and code={1}", grp, code.ToString("000")) | ||||||
|  |         Dim DR() As DSR.TReqUseRow = DSETR1.TReqUse.Select(filter) | ||||||
|  |         If DR.GetUpperBound(0) = -1 Then Return 0 | ||||||
|  |         Return DR(0).M00 | ||||||
|  |     End Function | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     Private Sub Frm_Upload_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load | ||||||
|  |  | ||||||
|  |     End Sub | ||||||
|  |  | ||||||
|  |     Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click | ||||||
|  |         Dim sd As New SaveFileDialog() | ||||||
|  |         sd.Filter = "Excel(*.xls)|*.xls" | ||||||
|  |         sd.FilterIndex = 0 | ||||||
|  |         If sd.ShowDialog = Windows.Forms.DialogResult.OK Then | ||||||
|  |             Try | ||||||
|  |                 If FpSpread1.SaveExcel(sd.FileName, FarPoint.Excel.ExcelSaveFlags.NoFlagsSet) Then | ||||||
|  |                     MsgBox("저장완료", MsgBoxStyle.Information, "확인") | ||||||
|  |                 End If | ||||||
|  |             Catch ex As Exception | ||||||
|  |                 MsgBox(ex.Message, MsgBoxStyle.Critical, "error") | ||||||
|  |             End Try | ||||||
|  |  | ||||||
|  |         End If | ||||||
|  |     End Sub | ||||||
|  |  | ||||||
|  |     Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click | ||||||
|  |  | ||||||
|  |         '//기본홤녀은 건물개요로 | ||||||
|  |         MdiMain.Menu_건물개요() | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         Dim StartNo As Integer = CInt(tbStart.Text) | ||||||
|  |         Dim EndNo As Integer = CInt(tbEnd.Text) | ||||||
|  |         Me.ProgressBar1.Value = 0 | ||||||
|  |         Me.ProgressBar1.Minimum = 0 | ||||||
|  |         Me.ProgressBar1.Maximum = EndNo - StartNo + 1 | ||||||
|  |  | ||||||
|  |         If MsgBox("전체 실행전에 1건에대해서 테스트실행을 하시겠습니까?", MsgBoxStyle.Question Or MsgBoxStyle.YesNo, "확인") = MsgBoxResult.Yes Then | ||||||
|  |             EndNo = StartNo | ||||||
|  |         ElseIf MsgBox("전체 " + Me.ProgressBar1.Maximum.ToString() + "건의 자료를 실행하시겠습니까?" + vbCrLf + "이 작업은 중단할 수 없습니다", MsgBoxStyle.Question Or MsgBoxStyle.YesNo, "확인") <> MsgBoxResult.Yes Then | ||||||
|  |             Return | ||||||
|  |         End If | ||||||
|  |  | ||||||
|  |         For RowNum As Integer = StartNo To EndNo | ||||||
|  |  | ||||||
|  |             Me.ProgressBar1.Value += 1 | ||||||
|  |  | ||||||
|  |             Dim Row = RowNum - 1 | ||||||
|  |             Dim ColIDX As Integer = 1 | ||||||
|  |  | ||||||
|  |             '//건물개요 | ||||||
|  |             '//DSET1.tbl_Desc.Clear() | ||||||
|  |             Dim NewDesc As DS.tbl_DescRow = DSET1.tbl_Desc.Rows(0) | ||||||
|  |             NewDesc.cname = FpSpread1_Sheet1.Cells(Row, 1).Value.ToString() | ||||||
|  |             NewDesc.buildname = NewDesc.cname | ||||||
|  |             NewDesc.builds1 = 1 '//지하(층수) | ||||||
|  |             NewDesc.builds2 = 1 '//지상(층수) | ||||||
|  |  | ||||||
|  |             '//지역(해당하는이름의 코드를 가져와서 설정해야함) | ||||||
|  |             Dim 지역명 As String = FpSpread1_Sheet1.Cells(Row, 5).Value | ||||||
|  |             Dim 지역목록() As DataRow = DSET1.weather_group.Select(String.Format("name = '{0}'", 지역명)) | ||||||
|  |             If 지역목록.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 지역({1})에 해당하는 데이터가 {2}건 있습니다", Row, 지역명, 지역목록.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             NewDesc.buildarea = 지역목록(0)("code") | ||||||
|  |             NewDesc.EndEdit() | ||||||
|  |             'DSET1.tbl_Desc.Addtbl_DescRow(NewDesc) | ||||||
|  |  | ||||||
|  |             Dim Drows() As DataRow | ||||||
|  |  | ||||||
|  |             '//건물용도 | ||||||
|  |             Dim 건물용도명 As String = FpSpread1_Sheet1.Cells(Row, 6).Value.ToString().Replace(vbLf, "").Replace(vbCr, "") '//건물용도 | ||||||
|  |             Drows = DSET1.tbl_common.Select(String.Format("gubun='1201' and name = '{0}'", 건물용도명)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 건물용도({1})에 해당하는 데이터가 {2}건 있습니다", Row, 건물용도명, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             NewDesc.isjugo = Drows(0)("valn1") | ||||||
|  |             NewDesc.EndEdit() | ||||||
|  |  | ||||||
|  |             '//입력존 | ||||||
|  |             DSET1.tbl_zone.Clear() | ||||||
|  |  | ||||||
|  |             '/없음데이터도 생성해야한다. | ||||||
|  |             Dim drZoneNull As DS.tbl_zoneRow = DSET1.tbl_zone.Newtbl_zoneRow | ||||||
|  |             drZoneNull.code = "0" | ||||||
|  |             drZoneNull.설명 = "(없음)" | ||||||
|  |             DSET1.tbl_zone.Addtbl_zoneRow(drZoneNull) | ||||||
|  |  | ||||||
|  |             Dim DrZone As DS.tbl_zoneRow = DSET1.tbl_zone.Newtbl_zoneRow | ||||||
|  |             DrZone.code = "00001" | ||||||
|  |             DrZone.조명부하산출방법 = "입력치" | ||||||
|  |             DrZone.설명 = "입력존(매크로)" | ||||||
|  |             DrZone.그룹 = "0" | ||||||
|  |             DrZone.sortkey = DrZone.code | ||||||
|  |  | ||||||
|  |             DrZone.열생산난방생산기기 = "00001" '//난방기기 임시로 적용처리함() | ||||||
|  |             DrZone.열생산급탕생산기기 = "00001" '//급탕기기 임시로 적용처리함() | ||||||
|  |             DrZone.냉난방열공급시스템 = "00001" '//열공급시스템연결 | ||||||
|  |             DrZone.냉난방열공급시스템수 = "1" | ||||||
|  |             DrZone.냉난방공조처리시스템 = "00001" | ||||||
|  |             DrZone.인공광원 = "(없음)" | ||||||
|  |             DrZone.조명방식 = "(없음)" | ||||||
|  |             DrZone.외기부하처리여부 = "아니오" | ||||||
|  |  | ||||||
|  |             DrZone.설명 = FpSpread1_Sheet1.Cells(Row, 7).Value | ||||||
|  |             Dim 사용프로필 As String = FpSpread1_Sheet1.Cells(Row, 8).Value | ||||||
|  |             Drows = DSET1.tbl_profile.Select(String.Format("설명 like '%{0}'", 사용프로필)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 입력존-사용프로필({1})에 해당하는 데이터가 {2}건 있습니다", Row, 사용프로필, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             DrZone.프로필 = Drows(0)("code") | ||||||
|  |             DrZone.면적 = FpSpread1_Sheet1.Cells(Row, 9).Value | ||||||
|  |             DrZone.천장고p = FpSpread1_Sheet1.Cells(Row, 10).Value | ||||||
|  |             DrZone.순실체적 = FpSpread1_Sheet1.Cells(Row, 11).Value | ||||||
|  |  | ||||||
|  |             Dim 열저장능력 As String = FpSpread1_Sheet1.Cells(Row, 12).Value | ||||||
|  |             Drows = DSET1.tbl_common.Select(String.Format("gubun='1023' and name = '{0}'", 열저장능력)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 입력존-열저장능력({1})에 해당하는 데이터가 {2}건 있습니다", Row, 열저장능력, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             DrZone.열저장능력 = Drows(0)("Name") | ||||||
|  |  | ||||||
|  |             Dim 열교가산치 As String = FpSpread1_Sheet1.Cells(Row, 13).Value | ||||||
|  |             Drows = DSET1.tbl_common.Select(String.Format("gubun='1022' and name = '{0}'", 열교가산치)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 입력존-열교가산치({1})에 해당하는 데이터가 {2}건 있습니다", Row, 열교가산치, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             DrZone.열교가산치 = Drows(0)("Name") | ||||||
|  |             DrZone.침기율 = FpSpread1_Sheet1.Cells(Row, 14).Value | ||||||
|  |  | ||||||
|  |             Dim 냉난방방식 As String = FpSpread1_Sheet1.Cells(Row, 15).Value | ||||||
|  |             If 냉난방방식 = "없음" Then 냉난방방식 = "기능없음" | ||||||
|  |             Drows = DSET1.tbl_common.Select(String.Format("gubun='1000' and name = '{0}'", 냉난방방식)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 입력존-냉난방방식({1})에 해당하는 데이터가 {2}건 있습니다", Row, 냉난방방식, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             DrZone.냉난방방식 = Drows(0)("name") | ||||||
|  |  | ||||||
|  |             Dim 냉난방공조 As String = FpSpread1_Sheet1.Cells(Row, 16).Value | ||||||
|  |             If 냉난방공조 = "없음" Then 냉난방공조 = "기능없음" | ||||||
|  |             Drows = DSET1.tbl_common.Select(String.Format("gubun='1001' and name = '{0}'", 냉난방공조)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 입력존-냉난방공조({1})에 해당하는 데이터가 {2}건 있습니다", Row, 냉난방공조, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             DrZone.냉난방공조 = Drows(0)("name") | ||||||
|  |  | ||||||
|  |             Dim 조명부하산출방법 As String = FpSpread1_Sheet1.Cells(Row, 17).Value | ||||||
|  |             Drows = DSET1.tbl_common.Select(String.Format("gubun='1031' and name = '{0}'", 조명부하산출방법)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 입력존-조명부하산출방법({1})에 해당하는 데이터가 {2}건 있습니다", Row, 조명부하산출방법, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             DrZone.조명부하산출방법 = Drows(0)("name") | ||||||
|  |             DrZone.조명에너지부하율입력치 = FpSpread1_Sheet1.Cells(Row, 18).Value | ||||||
|  |             DSET1.tbl_zone.Addtbl_zoneRow(DrZone) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |             '//입력면 | ||||||
|  |             Dim 방위목록 As New List(Of String) | ||||||
|  |             방위목록.AddRange({"북서", "서", "남서", "남", "남동", "동", "북동", "북", "수평", "일사없음", "(없음)"}) | ||||||
|  |  | ||||||
|  |             Dim 제목1 As String = "" | ||||||
|  |             Dim 제목2 As String = "" | ||||||
|  |             DSET1.tbl_myoun.Clear() | ||||||
|  |             For i As Integer = 0 To 12 | ||||||
|  |                 Dim NewMyoun As DS.tbl_myounRow = DSET1.tbl_myoun.Newtbl_myounRow | ||||||
|  |                 NewMyoun.존분류 = DrZone.code | ||||||
|  |                 NewMyoun.code = String.Format("{0:00000}", i + 1) | ||||||
|  |                 NewMyoun.sortkey = NewMyoun.code | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |                 Dim t1 As String = FpSpread1_Sheet1.Cells(2, 19 + (i * 2)).Value '//타이틀 | ||||||
|  |                 Dim t2 As String = FpSpread1_Sheet1.Cells(3, 19 + (i * 2)).Value '//타이틀 | ||||||
|  |  | ||||||
|  |                 If Not String.IsNullOrEmpty(t1) Then 제목1 = t1 | ||||||
|  |                 If Not String.IsNullOrEmpty(t2) Then 제목2 = t2 | ||||||
|  |  | ||||||
|  |                 NewMyoun.설명 = 제목1 + ":" + 제목2 | ||||||
|  |  | ||||||
|  |                 '//공용코드 1067에서 name 이 일치하는 데이터가 있어야한다. | ||||||
|  |                 '//(없음),외벽,외부창,내벽,간벽,내부창 | ||||||
|  |                 If i = 0 Then | ||||||
|  |                     NewMyoun.건축부위방식 = "외벽" | ||||||
|  |                 ElseIf i = 1 Then | ||||||
|  |                     NewMyoun.건축부위방식 = "외벽" | ||||||
|  |                 ElseIf i = 2 Then | ||||||
|  |                     NewMyoun.건축부위방식 = "내벽" | ||||||
|  |                 ElseIf i = 3 Then | ||||||
|  |                     NewMyoun.건축부위방식 = "내벽" | ||||||
|  |                 ElseIf i = 4 Then | ||||||
|  |                     NewMyoun.건축부위방식 = "외벽" | ||||||
|  |                 ElseIf i = 5 Then '//코어 | ||||||
|  |                     NewMyoun.건축부위방식 = "내벽" | ||||||
|  |                 ElseIf i = 6 Then  '//쎼떄깐뼊(쪠외) | ||||||
|  |                     NewMyoun.건축부위방식 = "간벽" | ||||||
|  |                 ElseIf i = 7 Or i = 8 Then | ||||||
|  |                     NewMyoun.건축부위방식 = "외부창" | ||||||
|  |                 ElseIf i = 9 Or i = 10 Or i = 11 Or i = 12 Then | ||||||
|  |                     NewMyoun.건축부위방식 = "내부창" | ||||||
|  |                 End If | ||||||
|  |  | ||||||
|  |                 Dim 방위1 As String = FpSpread1_Sheet1.Cells(Row, 19 + (i * 2)).Value '//타이틀 | ||||||
|  |                 방위1 = 방위1.ToString().Replace(vbLf, "").Replace(vbCr, "") | ||||||
|  |                 If 방위목록.IndexOf(방위1) = -1 Then | ||||||
|  |                     MsgBox(String.Format("{0}번줄 입력면-방위1({1})에 해당하는 데이터가 없습니다.", Row, 방위1)) | ||||||
|  |                     Return | ||||||
|  |                 End If | ||||||
|  |                 NewMyoun.방위 = 방위1 | ||||||
|  |                 NewMyoun.건축부위면적 = FpSpread1_Sheet1.Cells(Row, 20 + (i * 2)).Value | ||||||
|  |                 DSET1.tbl_myoun.Addtbl_myounRow(NewMyoun) | ||||||
|  |             Next | ||||||
|  |  | ||||||
|  |             '//지붕 (45) | ||||||
|  |             Dim NewM지붕 As DS.tbl_myounRow = DSET1.tbl_myoun.Newtbl_myounRow | ||||||
|  |             NewM지붕.존분류 = DrZone.code | ||||||
|  |             NewM지붕.code = String.Format("{0:00000}", 14) | ||||||
|  |             NewM지붕.sortkey = NewM지붕.code | ||||||
|  |             NewM지붕.방위 = "수평" | ||||||
|  |             NewM지붕.건축부위방식 = "외벽" | ||||||
|  |             NewM지붕.건축부위면적 = FpSpread1_Sheet1.Cells(Row, 45).Value | ||||||
|  |             DSET1.tbl_myoun.Addtbl_myounRow(NewM지붕) | ||||||
|  |  | ||||||
|  |             '//바닥 (46) | ||||||
|  |             Dim NewM바닥 As DS.tbl_myounRow = DSET1.tbl_myoun.Newtbl_myounRow | ||||||
|  |             NewM바닥.존분류 = DrZone.code | ||||||
|  |             NewM바닥.code = String.Format("{0:00000}", 15) | ||||||
|  |             NewM바닥.sortkey = NewM지붕.code | ||||||
|  |             NewM바닥.방위 = "일사없음" | ||||||
|  |             NewM바닥.건축부위방식 = "외벽" | ||||||
|  |             NewM바닥.건축부위면적 = FpSpread1_Sheet1.Cells(Row, 46).Value | ||||||
|  |             DSET1.tbl_myoun.Addtbl_myounRow(NewM바닥) | ||||||
|  |  | ||||||
|  |             '//공조처리 | ||||||
|  |             DSET1.tbl_kongjo.Clear() | ||||||
|  |             Dim New공조 As DS.tbl_kongjoRow = DSET1.tbl_kongjo.Newtbl_kongjoRow | ||||||
|  |             New공조.code = "00001" | ||||||
|  |             New공조.팬효율산출방식 = "계산치" | ||||||
|  |             New공조.설명 = "공조기기" | ||||||
|  |             New공조.설정치난방 = "0" | ||||||
|  |             New공조.설정치냉방 = "0" | ||||||
|  |             New공조.최대풍량 = "0" | ||||||
|  |  | ||||||
|  |             New공조.리턴공기혼합여부 = "아니오" | ||||||
|  |             New공조.가습기유형 = "(없음)" | ||||||
|  |             New공조.외기냉방제어유무 = "무" | ||||||
|  |             New공조.열교환기유형 = "(없음)" | ||||||
|  |  | ||||||
|  |             New공조.열회수율 = "0" | ||||||
|  |             New공조.열회수율냉 = "공조기기" | ||||||
|  |             New공조.급기풍량 = "0" | ||||||
|  |             New공조.배기풍량 = "0" | ||||||
|  |             New공조.급기팬동력 = "0" | ||||||
|  |             New공조.배기팬동력 = "0" | ||||||
|  |             New공조.총압력손실급기팬 = "0" | ||||||
|  |             New공조.총압력손실배기팬 = "0" | ||||||
|  |             New공조.총효율급기팬 = "0" | ||||||
|  |             New공조.총효율배기팬 = "0" | ||||||
|  |  | ||||||
|  |  | ||||||
|  |             Dim 공조방식 As String = FpSpread1_Sheet1.Cells(Row, 47).Value | ||||||
|  |             If 공조방식 = "없음" Then 공조방식 = "(없음)" | ||||||
|  |             Drows = DSET1.tbl_common.Select(String.Format("gubun='1026' and name = '{0}'", 공조방식)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 공조처리-공조방식({1})에 해당하는 데이터가 {2}건 있습니다", Row, 공조방식, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             New공조.공조방식 = Drows(0)("name") | ||||||
|  |             DSET1.tbl_kongjo.Addtbl_kongjoRow(New공조) | ||||||
|  |  | ||||||
|  |             '//난방기기 | ||||||
|  |             DSET1.tbl_nanbangkiki.Clear() | ||||||
|  |             ColIDX = 48 | ||||||
|  |  | ||||||
|  |  | ||||||
|  |             Dim New난방 As DS.tbl_nanbangkikiRow = DSET1.tbl_nanbangkiki.Newtbl_nanbangkikiRow | ||||||
|  |             New난방.code = "00001" | ||||||
|  |             New난방.설명 = "보일러" | ||||||
|  |             New난방.신재생연결여부 = "연결없음" | ||||||
|  |             New난방.보일러대수 = "1" | ||||||
|  |  | ||||||
|  |             Dim 난방_열생산기기방식 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |             Drows = DSET1.tbl_common.Select(String.Format("gubun='1020' and name = '{0}'", 난방_열생산기기방식)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 난방기기-열생산기기방식({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방_열생산기기방식, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             New난방.열생산기기방식 = Drows(0)("name") | ||||||
|  |  | ||||||
|  |             Dim 난방_사용연료 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |             Drows = DSET1.tbl_common.Select(String.Format("gubun='1021' and name = '{0}'", 난방_사용연료)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 난방기기-사용연료({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방_사용연료, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             New난방.사용연료 = Drows(0)("name") | ||||||
|  |  | ||||||
|  |             New난방.보일러정격출력 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |             New난방.급수온도 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |             New난방.환수온도 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |  | ||||||
|  |             Dim 난방생산기기운전방식 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |             Drows = DSET1.tbl_common.Select(String.Format("gubun='1035' and name = '{0}'", 난방생산기기운전방식)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 난방기기-난방생산기기운전방식({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방생산기기운전방식, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             New난방.운전방식 = Drows(0)("name") | ||||||
|  |  | ||||||
|  |  | ||||||
|  |             Dim 난방_열원기기_보일러방식 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |             If 난방_열원기기_보일러방식.IndexOf("보일러") = -1 Then 난방_열원기기_보일러방식 += "보일러" | ||||||
|  |             Drows = DSET1.tbl_common.Select(String.Format("gubun='1036' and name = '{0}'", 난방_열원기기_보일러방식)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 난방기기-열원기기_보일러방식({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방_열원기기_보일러방식, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             New난방.보일러방식 = Drows(0)("name") | ||||||
|  |             New난방.정격보일러효율 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |  | ||||||
|  |             Dim 난방_축열탱크방식 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |             Drows = DSET1.tbl_common.Select(String.Format("gubun='1039' and name = '{0}'", 난방_축열탱크방식)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 난방기기-급탕축열탱크방식({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방_축열탱크방식, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             New난방.축열탱크방식 = Drows(0)("name") | ||||||
|  |  | ||||||
|  |  | ||||||
|  |             Dim 난방_급탕_시스템방식 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |             Drows = DSET1.tbl_common.Select(String.Format("gubun='1042' and name = '{0}'", 난방_급탕_시스템방식)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 난방기기-급탕_시스템방식({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방_급탕_시스템방식, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             New난방.분배시스템방식 = Drows(0)("name") | ||||||
|  |  | ||||||
|  |             '//입력존에서 열생산기기 급탕이 연결되지 않았다. | ||||||
|  |             '//순환무우를 비롯 급탕기기를 사용하려면 급탕기기가 연결되어야한다. | ||||||
|  |             Dim 난방_급탕_순환유무 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |             Drows = DSET1.tbl_common.Select(String.Format("gubun='1032' and name = '{0}'", 난방_급탕_순환유무)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 난방기기-급탕_순환유무({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방_급탕_순환유무, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             New난방.순환유무 = Drows(0)("name") | ||||||
|  |  | ||||||
|  |  | ||||||
|  |             Dim 난방_급탕_펌프제어 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |             Drows = DSET1.tbl_common.Select(String.Format("gubun='1043' and name = '{0}'", 난방_급탕_펌프제어)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 난방기기-급탕_펌프제어({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방_급탕_펌프제어, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             New난방.펌프제어 = Drows(0)("name") | ||||||
|  |             New난방.펌프동력급탕 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |  | ||||||
|  |             Dim 난방_배관망유형 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |             Drows = DSET1.tbl_common.Select(String.Format("gubun='1040' and name = '{0}'", 난방_배관망유형)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 난방기기-배관망유형({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방_배관망유형, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             New난방.배관망유형 = Drows(0)("name") | ||||||
|  |  | ||||||
|  |             Dim 난방_펌프감소계수 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |             Drows = DSET1.tbl_common.Select(String.Format("gubun='1002' and name = '{0}'", 난방_펌프감소계수)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 난방기기-펌프감소계수({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방_펌프감소계수, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             New난방.펌프교정계수 = Drows(0)("name") | ||||||
|  |  | ||||||
|  |  | ||||||
|  |             Dim 난방_펌프제어유형 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |             Drows = DSET1.tbl_common.Select(String.Format("gubun='1041' and name = '{0}'", 난방_펌프제어유형)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 난방기기-펌프제어유형({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방_펌프제어유형, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             New난방.펌프제어유형 = Drows(0)("name") | ||||||
|  |             New난방.펌프동력급탕 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |             DSET1.tbl_nanbangkiki.Addtbl_nanbangkikiRow(New난방) | ||||||
|  |  | ||||||
|  |             '//난방공급시스템 | ||||||
|  |             DSET1.tbl_kongkub.Clear() | ||||||
|  |             Dim New공급 As DS.tbl_kongkubRow = DSET1.tbl_kongkub.Newtbl_kongkubRow | ||||||
|  |             New공급.code = "00001" | ||||||
|  |             New공급.설명 = "난방공급" | ||||||
|  |             New공급.제어기의정격전력 = "0" | ||||||
|  |             New공급.팬송풍기정격전력 = "0" | ||||||
|  |             New공급.펌프정격전력 = "0" | ||||||
|  |             New공급.팬송풍기수 = "0" | ||||||
|  |             New공급.추가펌프수 = "0" | ||||||
|  |  | ||||||
|  |             Dim 난방공급시스템 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |             Drows = DSET1.tbl_common.Select(String.Format("gubun='1045' and name = '{0}'", 난방공급시스템)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 난방공급-시스템({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방공급시스템, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             New공급.열공급시스템 = Drows(0)("name") | ||||||
|  |  | ||||||
|  |             Dim 열공급생산기기 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |             Drows = DSET1.tbl_nanbangkiki.Select(String.Format("설명 = '{0}'", 열공급생산기기)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 난방공급-열공급생산시기({1})에 해당하는 데이터가 {2}건 있습니다", Row, 열공급생산기기, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             New공급.열공급생산기기 = Drows(0)("code") | ||||||
|  |  | ||||||
|  |             Dim 바닥난방열제어 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |             Drows = DSET1.tbl_common.Select(String.Format("gubun='1033' and name = '{0}'", 바닥난방열제어)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 난방공급-바닥난방열제어({1})에 해당하는 데이터가 {2}건 있습니다", Row, 바닥난방열제어, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             New공급.바닥난방열제어 = Drows(0)("name") | ||||||
|  |  | ||||||
|  |             Dim 바닥난방열건축부위 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |             Drows = DSET1.tbl_common.Select(String.Format("gubun='1034' and name = '{0}'", 바닥난방열건축부위)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 난방공급-바닥난방열건축부위({1})에 해당하는 데이터가 {2}건 있습니다", Row, 바닥난방열건축부위, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             New공급.바닥난방열건축부위 = Drows(0)("name") | ||||||
|  |             DSET1.tbl_kongkub.Addtbl_kongkubRow(New공급) | ||||||
|  |  | ||||||
|  |             '//냉방기기 | ||||||
|  |             DSET1.tbl_nangbangkiki.Clear() | ||||||
|  |             Dim New냉방 As DS.tbl_nangbangkikiRow = DSET1.tbl_nangbangkiki.Newtbl_nangbangkikiRow | ||||||
|  |             New냉방.code = "00001" | ||||||
|  |             New냉방.설명 = "냉방기기" | ||||||
|  |             New냉방.신재생연결여부 = "연결없음" | ||||||
|  |  | ||||||
|  |             Dim 냉동기방식 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |             If 냉동기방식 = "없음" Then 냉동기방식 = "(없음)" | ||||||
|  |             Drows = DSET1.tbl_common.Select(String.Format("gubun='1046' and name = '{0}'", 냉동기방식)) | ||||||
|  |             If Drows.Length <> 1 Then | ||||||
|  |                 MsgBox(String.Format("{0}번줄 냉방기기-냉동기방식({1})에 해당하는 데이터가 {2}건 있습니다", Row, 냉동기방식, Drows.Length)) | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |             New냉방.냉동기방식 = Drows(0)("name") | ||||||
|  |             New냉방.냉동기용량 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |             New냉방.열성능비 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1 | ||||||
|  |             If Not IsNumeric(New냉방.냉동기용량) Then New냉방.냉동기용량 = "0" | ||||||
|  |             If Not IsNumeric(New냉방.열성능비) Then New냉방.열성능비 = "0" | ||||||
|  |             DSET1.tbl_nangbangkiki.Addtbl_nangbangkikiRow(New냉방) | ||||||
|  |  | ||||||
|  |             '//열관류율 | ||||||
|  |             '//면형태를 입력해야함 이것은 공용코드 1088에 들어있으며 코드형태로 들어간다 | ||||||
|  |             '//외벽(벽체),외벽(지붕),외벽(바닥),내벽(벽체),내벽(지붕),내벽(바닥),간벽,외부창,내부창,지중벽 | ||||||
|  |             DSET1.tbl_yk.Clear() | ||||||
|  |  | ||||||
|  |             '//직접면하는 | ||||||
|  |             For Each dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("건축부위방식='외벽'") | ||||||
|  |                 dr면.열관류율 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value | ||||||
|  |             Next : ColIDX += 1 | ||||||
|  |  | ||||||
|  |             '//간접면하는 | ||||||
|  |             For Each dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("건축부위방식='내벽'") | ||||||
|  |                 dr면.열관류율 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value | ||||||
|  |             Next : ColIDX += 1 | ||||||
|  |  | ||||||
|  |             '//바닥 | ||||||
|  |             For Each dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("건축부위방식='외벽' and 방위='일사없음'") '//2018.04.24 수정 | ||||||
|  |                 dr면.열관류율 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value | ||||||
|  |             Next : ColIDX += 1 | ||||||
|  |  | ||||||
|  |             '//지붕벽체 | ||||||
|  |             For Each dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("건축부위방식='외벽' and 방위='수평'") '//2018.04.24 수정 | ||||||
|  |                 dr면.열관류율 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value | ||||||
|  |             Next : ColIDX += 1 | ||||||
|  |  | ||||||
|  |             '//현관문 | ||||||
|  |             For Each dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("건축부위방식='내부창' and 방위='일사없음'") '//2018.04.24 수정 | ||||||
|  |                 dr면.투과율 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value | ||||||
|  |                 dr면.열관류율 = FpSpread1_Sheet1.Cells(Row, ColIDX + 1).Value | ||||||
|  |             Next : ColIDX += 2 | ||||||
|  |  | ||||||
|  |             '//확장창 | ||||||
|  |             For Each dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("건축부위방식='외부창'") | ||||||
|  |                 dr면.투과율 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value | ||||||
|  |                 dr면.열관류율 = FpSpread1_Sheet1.Cells(Row, ColIDX + 1).Value | ||||||
|  |             Next : ColIDX += 2 | ||||||
|  |  | ||||||
|  |             '//세대창 | ||||||
|  |             For Each dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("건축부위방식='내부창' and 방위<>'일사없음'") '//2018.04.24 수정 | ||||||
|  |                 dr면.투과율 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value | ||||||
|  |                 dr면.열관류율 = FpSpread1_Sheet1.Cells(Row, ColIDX + 1).Value | ||||||
|  |             Next : ColIDX += 2 | ||||||
|  |  | ||||||
|  |             '//입력면의 자료를 업데이트해준다. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |             DSET1.AcceptChanges() | ||||||
|  |  | ||||||
|  |             '//계산실행 | ||||||
|  |             Run_Calc(Row) | ||||||
|  |         Next | ||||||
|  |  | ||||||
|  |         If Not msgf Is Nothing Then | ||||||
|  |             msgf.Close() | ||||||
|  |             msgf.Dispose() | ||||||
|  |             msgf = Nothing | ||||||
|  |         End If | ||||||
|  |  | ||||||
|  |         If StartNo = EndNo Then | ||||||
|  |             Report_그래프.Visible = False | ||||||
|  |             Report_그래프.Show() | ||||||
|  |         End If | ||||||
|  |  | ||||||
|  |     End Sub | ||||||
|  |  | ||||||
|  |     Sub Run_Calc(Row As Integer) | ||||||
|  |  | ||||||
|  |         '//현재데이터상태를 저장 | ||||||
|  |         DSET1.AcceptChanges() | ||||||
|  |         DSETR1.AcceptChanges() | ||||||
|  |  | ||||||
|  |         Dim Type As Calculator.ECalc = Calculator.ECalc.All   '//요구량+소요량 | ||||||
|  |         Dim showmsg As String = ""  '//추가표시메세지 | ||||||
|  |         Dim St As Date = Now    '//계산시작 | ||||||
|  |  | ||||||
|  |         pLog.Add(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>") | ||||||
|  |         pLog.Add(String.Format("계산실행({0})", Type.ToString())) | ||||||
|  |         pLog.Add(String.Format("시작시간 : {0}", St.ToString())) | ||||||
|  |         pLog.Add("----------------------------------") | ||||||
|  |  | ||||||
|  |         Dim Result As Boolean = Calc.Start(showmsg, Type, LogSB, 0) | ||||||
|  |         Dim Ts As TimeSpan = Now - St   '//계산경과시간을 표시해준다. | ||||||
|  |         Dim calc_ok As Integer = 0 | ||||||
|  |         If Result Then   '//파라미터 True 라면 소요량이 추가로 게산된다. | ||||||
|  |             Calc.Summary.All() | ||||||
|  |             If LogSB.ToString <> "" Then | ||||||
|  |                 FpSpread1_Sheet1.Cells(Row, 97).Value = LogSB.ToString | ||||||
|  |             Else | ||||||
|  |                 FpSpread1_Sheet1.Cells(Row, 97).Value = "시간:" + Ts.ToString() | ||||||
|  |                 calc_ok = 1 '================================2014.04.17 계산이 완료되면 그래프를 보여줌 | ||||||
|  |             End If | ||||||
|  |         Else | ||||||
|  |             FpSpread1_Sheet1.Cells(Row, 97).Value = LogSB.ToString | ||||||
|  |         End If | ||||||
|  |  | ||||||
|  |         '//상태메세지창이 열려있다면 제거해준다. | ||||||
|  |  | ||||||
|  |         If calc_ok = 1 Then | ||||||
|  |             '//해당값을 기록한다. | ||||||
|  |             Extract_Data(Row) | ||||||
|  |         Else | ||||||
|  |             '//빈값으로 기록을 한다. | ||||||
|  |             Dim StartIDX As Integer = 100 | ||||||
|  |             For idx As Integer = StartIDX To StartIDX + 13 | ||||||
|  |                 FpSpread1_Sheet1.Cells(Row, idx).Value = "--" | ||||||
|  |             Next | ||||||
|  |         End If | ||||||
|  |     End Sub | ||||||
|  |  | ||||||
|  |     Sub Extract_Data(Row As Integer) | ||||||
|  |         Dim 신재생에너지 As Decimal | ||||||
|  |         Dim 난방에너지 As Decimal | ||||||
|  |         Dim 냉방에너지 As Decimal | ||||||
|  |         Dim 급탕에너지 As Decimal | ||||||
|  |         Dim 조명에너지 As Decimal | ||||||
|  |         Dim 환기에너지 As Decimal | ||||||
|  |         'Dim 합계 As Decimal | ||||||
|  |  | ||||||
|  |         Dim BaseIndex As Integer = 90 | ||||||
|  |         Dim Dr2 As DSR.Graph_ReqUseRow | ||||||
|  |         For Gubun As Short = 0 To 4 | ||||||
|  |             Select Case Gubun | ||||||
|  |                 Case 0  '//1차에너지소요량 | ||||||
|  |  | ||||||
|  |                     Dim Sum As Decimal = (Result1.생산E(0).태양광전력생산량 + Result1.생산E(0).신재생열병합전력생산량) / (Result1.일차E소요량(0).난방전력 + Result1.일차E소요량(0).냉방전력 + Result1.일차E소요량(0).급탕전력 + Result1.일차E소요량(0).조명전력 + Result1.일차E소요량(0).환기전력) | ||||||
|  |  | ||||||
|  |                     Dim 난방 As Decimal = Sum * Result1.일차E소요량(0).난방전력  '//아마게산이안도잇으니 여기값들이 0이잇을거에요. | ||||||
|  |                     Dim 냉방 As Decimal = Sum * Result1.일차E소요량(0).냉방전력 | ||||||
|  |                     Dim 조명 As Decimal = Sum * Result1.일차E소요량(0).조명전력 | ||||||
|  |                     Dim 급탕 As Decimal = Sum * Result1.일차E소요량(0).급탕전력 | ||||||
|  |                     Dim 환기 As Decimal = Sum * Result1.일차E소요량(0).환기전력 | ||||||
|  |  | ||||||
|  |                     Dim 난방면적 As Decimal = 0 | ||||||
|  |                     Dim 냉방면적 As Decimal = 0 | ||||||
|  |                     Dim 조명면적 As Decimal = 0 | ||||||
|  |                     Dim 급탕면적 As Decimal = 0 | ||||||
|  |                     Dim 환기면적 As Decimal = 0 | ||||||
|  |                     If Result1.사용면적.H <> 0 Then | ||||||
|  |                         난방면적 = TOSG(IIf(난방 = 0, 0, 난방 / Result1.사용면적.H)) | ||||||
|  |                     End If | ||||||
|  |                     If Result1.사용면적.C <> 0 Then | ||||||
|  |                         냉방면적 = TOSG(IIf(냉방 = 0, 0, 냉방 / Result1.사용면적.C)) | ||||||
|  |                     End If | ||||||
|  |                     If Result1.사용면적.L <> 0 Then | ||||||
|  |                         조명면적 = TOSG(IIf(조명 = 0, 0, 조명 / Result1.사용면적.L)) | ||||||
|  |                     End If | ||||||
|  |                     If Result1.사용면적.W <> 0 Then | ||||||
|  |                         급탕면적 = TOSG(IIf(급탕 = 0, 0, 급탕 / Result1.사용면적.W)) | ||||||
|  |                     End If | ||||||
|  |                     If Result1.사용면적.V <> 0 Then | ||||||
|  |                         환기면적 = TOSG(IIf(환기 = 0, 0, 환기 / Result1.사용면적.V)) | ||||||
|  |                     End If | ||||||
|  |  | ||||||
|  |                     Dim 전기 As Decimal = 난방면적 + 냉방면적 + 조명면적 + 급탕면적 + 환기면적 | ||||||
|  |  | ||||||
|  |                     '//열병합신재생에너지추가 130831 arin | ||||||
|  |                     신재생에너지 = -1 * (Result1.생산E(0).면적당생산량태양열 + Result1.생산E(0).신재생면적당열생산량 + Result1.생산E(0).면적당생산량지열 + 전기 * 2.75) | ||||||
|  |  | ||||||
|  |                     '//1차에너지소요량 | ||||||
|  |                     난방에너지 = Result1.일차E소요량(0).난방면적 | ||||||
|  |                     냉방에너지 = Result1.일차E소요량(0).냉방면적 | ||||||
|  |                     급탕에너지 = Result1.일차E소요량(0).급탕면적 | ||||||
|  |                     조명에너지 = Result1.일차E소요량(0).조명면적 | ||||||
|  |                     환기에너지 = Result1.일차E소요량(0).환기면적 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex).Value = 난방에너지 + 냉방에너지 + 급탕에너지 + 조명에너지 + 환기에너지 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex + 8).Value = 난방에너지 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex + 9).Value = 냉방에너지 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex + 10).Value = 급탕에너지 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex + 11).Value = 조명에너지 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex + 12).Value = 환기에너지 | ||||||
|  |  | ||||||
|  |                 Case 1  '//에너지소요량 | ||||||
|  |  | ||||||
|  |                     Dim Sum As Decimal = (Result1.생산E(0).태양광전력생산량 + Result1.생산E(0).신재생열병합전력생산량) / (Result1.일차E소요량(0).난방전력 + Result1.일차E소요량(0).냉방전력 + Result1.일차E소요량(0).급탕전력 + Result1.일차E소요량(0).조명전력 + Result1.일차E소요량(0).환기전력) | ||||||
|  |  | ||||||
|  |                     Dim 난방 As Decimal = Sum * Result1.일차E소요량(0).난방전력  '//아마게산이안도잇으니 여기값들이 0이잇을거에요. | ||||||
|  |                     Dim 냉방 As Decimal = Sum * Result1.일차E소요량(0).냉방전력 | ||||||
|  |                     Dim 조명 As Decimal = Sum * Result1.일차E소요량(0).조명전력 | ||||||
|  |                     Dim 급탕 As Decimal = Sum * Result1.일차E소요량(0).급탕전력 | ||||||
|  |                     Dim 환기 As Decimal = Sum * Result1.일차E소요량(0).환기전력 | ||||||
|  |  | ||||||
|  |                     Dim 난방면적 As Decimal = 0 | ||||||
|  |                     Dim 냉방면적 As Decimal = 0 | ||||||
|  |                     Dim 조명면적 As Decimal = 0 | ||||||
|  |                     Dim 급탕면적 As Decimal = 0 | ||||||
|  |                     Dim 환기면적 As Decimal = 0 | ||||||
|  |                     If Result1.사용면적.H <> 0 Then | ||||||
|  |                         난방면적 = TOSG(IIf(난방 = 0, 0, 난방 / Result1.사용면적.H)) | ||||||
|  |                     End If | ||||||
|  |                     If Result1.사용면적.C <> 0 Then | ||||||
|  |                         냉방면적 = TOSG(IIf(냉방 = 0, 0, 냉방 / Result1.사용면적.C)) | ||||||
|  |                     End If | ||||||
|  |                     If Result1.사용면적.L <> 0 Then | ||||||
|  |                         조명면적 = TOSG(IIf(조명 = 0, 0, 조명 / Result1.사용면적.L)) | ||||||
|  |                     End If | ||||||
|  |                     If Result1.사용면적.W <> 0 Then | ||||||
|  |                         급탕면적 = TOSG(IIf(급탕 = 0, 0, 급탕 / Result1.사용면적.W)) | ||||||
|  |                     End If | ||||||
|  |                     If Result1.사용면적.V <> 0 Then | ||||||
|  |                         환기면적 = TOSG(IIf(환기 = 0, 0, 환기 / Result1.사용면적.V)) | ||||||
|  |                     End If | ||||||
|  |  | ||||||
|  |                     Dim 면적 As Decimal = 난방면적 + 냉방면적 + 조명면적 + 급탕면적 + 환기면적 | ||||||
|  |  | ||||||
|  |                     '//열병합신재생에너지추가 130831 arin | ||||||
|  |                     신재생에너지 = -1 * (Result1.생산E(0).면적당생산량태양열 + Result1.생산E(0).신재생면적당열생산량 + Result1.생산E(0).면적당생산량지열) - 면적 | ||||||
|  |                     난방에너지 = Result1.E소요량(0).난방면적 | ||||||
|  |                     냉방에너지 = Result1.E소요량(0).냉방면적 | ||||||
|  |                     급탕에너지 = Result1.E소요량(0).급탕면적 | ||||||
|  |                     조명에너지 = Result1.E소요량(0).조명면적 | ||||||
|  |                     환기에너지 = Result1.E소요량(0).환기면적 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex - 1).Value = 난방에너지 + 냉방에너지 + 급탕에너지 + 조명에너지 + 환기에너지 | ||||||
|  |  | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex - 8).Value = 난방에너지 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex - 7).Value = 냉방에너지 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex - 6).Value = 급탕에너지 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex - 5).Value = 조명에너지 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex - 4).Value = 환기에너지 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex - 3).Value = 신재생에너지 | ||||||
|  |  | ||||||
|  |  | ||||||
|  |                 Case 2  '//에너지요구량 | ||||||
|  |  | ||||||
|  |                     신재생에너지 = 0 | ||||||
|  |                     난방에너지 = Result1.E요구량(0).난방면적 | ||||||
|  |                     냉방에너지 = Result1.E요구량(0).냉방면적 | ||||||
|  |                     급탕에너지 = Result1.E요구량(0).급탕면적 | ||||||
|  |                     조명에너지 = Result1.E요구량(0).조명면적 | ||||||
|  |                     환기에너지 = 0 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex - 2).Value = 난방에너지 + 냉방에너지 + 급탕에너지 + 조명에너지 + 환기에너지 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex + 3).Value = 난방에너지 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex + 4).Value = 냉방에너지 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex + 5).Value = 급탕에너지 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex + 6).Value = 조명에너지 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex + 7).Value = 환기에너지 | ||||||
|  |  | ||||||
|  |                 Case 3  '//co2발생량 | ||||||
|  |  | ||||||
|  |                     신재생에너지 = 0 | ||||||
|  |                     난방에너지 = Result1.Co2발생량(0).난방면적 | ||||||
|  |                     냉방에너지 = Result1.Co2발생량(0).냉방면적 | ||||||
|  |                     급탕에너지 = Result1.Co2발생량(0).급탕면적 | ||||||
|  |                     조명에너지 = Result1.Co2발생량(0).조명면적 | ||||||
|  |                     환기에너지 = Result1.Co2발생량(0).환기면적 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex + 1).Value = 난방에너지 + 냉방에너지 + 급탕에너지 + 조명에너지 + 환기에너지 | ||||||
|  |  | ||||||
|  |                 Case 4  '//1차에너지소요량(+계수) + 131020  | ||||||
|  |  | ||||||
|  |                     신재생에너지 = 0 | ||||||
|  |                     If (Result1.사용면적.H_WF = 0) Then | ||||||
|  |                         난방에너지 = 0 | ||||||
|  |                     Else | ||||||
|  |                         난방에너지 = Result1.일차E소요량(0).난방면적2 * Result1.사용면적.H / Result1.사용면적.H_WF | ||||||
|  |                     End If | ||||||
|  |                     If (Result1.사용면적.C_WF = 0) Then | ||||||
|  |                         냉방에너지 = 0 | ||||||
|  |                     Else | ||||||
|  |                         냉방에너지 = TOSG(Result1.일차E소요량(0).냉방면적 * Result1.사용면적.C / Result1.사용면적.C_WF) | ||||||
|  |                     End If | ||||||
|  |                     If (Result1.사용면적.W_WF = 0) Then | ||||||
|  |                         급탕에너지 = 0 | ||||||
|  |                     Else | ||||||
|  |                         급탕에너지 = Result1.일차E소요량(0).급탕면적2 * Result1.사용면적.W / Result1.사용면적.W_WF | ||||||
|  |                     End If | ||||||
|  |                     If (Result1.사용면적.L_WF = 0) Then | ||||||
|  |                         조명에너지 = 0 | ||||||
|  |                     Else | ||||||
|  |                         조명에너지 = Result1.일차E소요량(0).조명면적 * Result1.사용면적.L / Result1.사용면적.L_WF | ||||||
|  |                     End If | ||||||
|  |                     If (Result1.사용면적.V_WF = 0) Then | ||||||
|  |                         환기에너지 = 0 | ||||||
|  |                     Else | ||||||
|  |                         환기에너지 = Result1.일차E소요량(0).환기면적 * Result1.사용면적.V / Result1.사용면적.V_WF | ||||||
|  |                     End If | ||||||
|  |  | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex + 2).Value = 난방에너지 + 냉방에너지 + 급탕에너지 + 조명에너지 + 환기에너지 | ||||||
|  |  | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex + 13).Value = 난방에너지 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex + 14).Value = 냉방에너지 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex + 15).Value = 급탕에너지 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex + 16).Value = 조명에너지 | ||||||
|  |                     FpSpread1_Sheet1.Cells(Row, BaseIndex + 17).Value = 환기에너지 | ||||||
|  |  | ||||||
|  |  | ||||||
|  |             End Select | ||||||
|  |         Next | ||||||
|  |     End Sub | ||||||
|  | End Class | ||||||
| @@ -256,6 +256,9 @@ | |||||||
|  |  | ||||||
|                     단위면적당1차에너소비량합 = 난방에너지 + 냉방에너지 + 급탕에너지 + 조명에너지 + 환기에너지 + Math.Round(단위면적당신재생1차에너지합, 1) |                     단위면적당1차에너소비량합 = 난방에너지 + 냉방에너지 + 급탕에너지 + 조명에너지 + 환기에너지 + Math.Round(단위면적당신재생1차에너지합, 1) | ||||||
|  |  | ||||||
|  |                     단위면적당1차에너소비량합 += -신재생에너지_offsite | ||||||
|  |  | ||||||
|  |  | ||||||
|                     If 단위면적당1차에너소비량합 <> 0 Then |                     If 단위면적당1차에너소비량합 <> 0 Then | ||||||
|  |  | ||||||
|                         에너지자립률 = (Math.Round(단위면적당신재생1차에너지합, 1) / 단위면적당1차에너소비량합) * 100 |                         에너지자립률 = (Math.Round(단위면적당신재생1차에너지합, 1) / 단위면적당1차에너소비량합) * 100 | ||||||
|   | |||||||
| @@ -1211,7 +1211,7 @@ iif(Fields!type.Value="조명에너지","#765e00","#475e76")))))</Color> | |||||||
|               <Paragraph> |               <Paragraph> | ||||||
|                 <TextRuns> |                 <TextRuns> | ||||||
|                   <TextRun> |                   <TextRun> | ||||||
|                     <Value>단위면적당 1차에너지생산량(대지내):</Value> |                     <Value>단위면적당 1차에너지순생산량(대지내):</Value> | ||||||
|                     <Style> |                     <Style> | ||||||
|                       <FontFamily>맑은 고딕</FontFamily> |                       <FontFamily>맑은 고딕</FontFamily> | ||||||
|                       <FontSize>8pt</FontSize> |                       <FontSize>8pt</FontSize> | ||||||
| @@ -1225,9 +1225,9 @@ iif(Fields!type.Value="조명에너지","#765e00","#475e76")))))</Color> | |||||||
|             </Paragraphs> |             </Paragraphs> | ||||||
|             <rd:DefaultName>Textbox2</rd:DefaultName> |             <rd:DefaultName>Textbox2</rd:DefaultName> | ||||||
|             <Top>0.09525cm</Top> |             <Top>0.09525cm</Top> | ||||||
|             <Left>5.03112cm</Left> |             <Left>4.92169cm</Left> | ||||||
|             <Height>0.56825cm</Height> |             <Height>0.56825cm</Height> | ||||||
|             <Width>5.042cm</Width> |             <Width>5.50068cm</Width> | ||||||
|             <ZIndex>1</ZIndex> |             <ZIndex>1</ZIndex> | ||||||
|             <Style> |             <Style> | ||||||
|               <Border> |               <Border> | ||||||
| @@ -1245,7 +1245,7 @@ iif(Fields!type.Value="조명에너지","#765e00","#475e76")))))</Color> | |||||||
|               <Paragraph> |               <Paragraph> | ||||||
|                 <TextRuns> |                 <TextRuns> | ||||||
|                   <TextRun> |                   <TextRun> | ||||||
|                     <Value>단위면적당 1차에너지소비량 : </Value> |                     <Value>단위면적당 1차에너지총소요량 : </Value> | ||||||
|                     <Style> |                     <Style> | ||||||
|                       <FontFamily>맑은 고딕</FontFamily> |                       <FontFamily>맑은 고딕</FontFamily> | ||||||
|                       <FontSize>8pt</FontSize> |                       <FontSize>8pt</FontSize> | ||||||
| @@ -1259,9 +1259,9 @@ iif(Fields!type.Value="조명에너지","#765e00","#475e76")))))</Color> | |||||||
|             </Paragraphs> |             </Paragraphs> | ||||||
|             <rd:DefaultName>Textbox2</rd:DefaultName> |             <rd:DefaultName>Textbox2</rd:DefaultName> | ||||||
|             <Top>0.09525cm</Top> |             <Top>0.09525cm</Top> | ||||||
|             <Left>11.5652cm</Left> |             <Left>11.45937cm</Left> | ||||||
|             <Height>0.56825cm</Height> |             <Height>0.56825cm</Height> | ||||||
|             <Width>4.14242cm</Width> |             <Width>4.88325cm</Width> | ||||||
|             <ZIndex>2</ZIndex> |             <ZIndex>2</ZIndex> | ||||||
|             <Style> |             <Style> | ||||||
|               <Border> |               <Border> | ||||||
| @@ -1329,7 +1329,7 @@ iif(Fields!type.Value="조명에너지","#765e00","#475e76")))))</Color> | |||||||
|             </Paragraphs> |             </Paragraphs> | ||||||
|             <rd:DefaultName>Textbox2</rd:DefaultName> |             <rd:DefaultName>Textbox2</rd:DefaultName> | ||||||
|             <Top>0.0635cm</Top> |             <Top>0.0635cm</Top> | ||||||
|             <Left>9.99727cm</Left> |             <Left>10.31477cm</Left> | ||||||
|             <Height>0.56825cm</Height> |             <Height>0.56825cm</Height> | ||||||
|             <Width>0.96366cm</Width> |             <Width>0.96366cm</Width> | ||||||
|             <ZIndex>4</ZIndex> |             <ZIndex>4</ZIndex> | ||||||
| @@ -1365,7 +1365,7 @@ iif(Fields!type.Value="조명에너지","#765e00","#475e76")))))</Color> | |||||||
|             </Paragraphs> |             </Paragraphs> | ||||||
|             <rd:DefaultName>Textbox2</rd:DefaultName> |             <rd:DefaultName>Textbox2</rd:DefaultName> | ||||||
|             <Top>0.0635cm</Top> |             <Top>0.0635cm</Top> | ||||||
|             <Left>15.64413cm</Left> |             <Left>16.27913cm</Left> | ||||||
|             <Height>0.56825cm</Height> |             <Height>0.56825cm</Height> | ||||||
|             <Width>1.15416cm</Width> |             <Width>1.15416cm</Width> | ||||||
|             <ZIndex>5</ZIndex> |             <ZIndex>5</ZIndex> | ||||||
| @@ -1436,7 +1436,7 @@ iif(Fields!type.Value="조명에너지","#765e00","#475e76")))))</Color> | |||||||
|             <rd:DefaultName>Textbox2</rd:DefaultName> |             <rd:DefaultName>Textbox2</rd:DefaultName> | ||||||
|             <Top>0.58837cm</Top> |             <Top>0.58837cm</Top> | ||||||
|             <Left>0.12253cm</Left> |             <Left>0.12253cm</Left> | ||||||
|             <Height>0.56825cm</Height> |             <Height>0.45cm</Height> | ||||||
|             <Width>3.33808cm</Width> |             <Width>3.33808cm</Width> | ||||||
|             <ZIndex>7</ZIndex> |             <ZIndex>7</ZIndex> | ||||||
|             <Style> |             <Style> | ||||||
| @@ -1455,7 +1455,7 @@ iif(Fields!type.Value="조명에너지","#765e00","#475e76")))))</Color> | |||||||
|               <Paragraph> |               <Paragraph> | ||||||
|                 <TextRuns> |                 <TextRuns> | ||||||
|                   <TextRun> |                   <TextRun> | ||||||
|                     <Value>단위면적당 1차에너지생산량(대지외):</Value> |                     <Value>단위면적당 1차에너지순생산량(대지외):</Value> | ||||||
|                     <Style> |                     <Style> | ||||||
|                       <FontFamily>맑은 고딕</FontFamily> |                       <FontFamily>맑은 고딕</FontFamily> | ||||||
|                       <FontSize>8pt</FontSize> |                       <FontSize>8pt</FontSize> | ||||||
| @@ -1469,9 +1469,9 @@ iif(Fields!type.Value="조명에너지","#765e00","#475e76")))))</Color> | |||||||
|             </Paragraphs> |             </Paragraphs> | ||||||
|             <rd:DefaultName>Textbox2</rd:DefaultName> |             <rd:DefaultName>Textbox2</rd:DefaultName> | ||||||
|             <Top>0.58837cm</Top> |             <Top>0.58837cm</Top> | ||||||
|             <Left>5.03112cm</Left> |             <Left>4.92169cm</Left> | ||||||
|             <Height>0.56825cm</Height> |             <Height>0.45cm</Height> | ||||||
|             <Width>5.042cm</Width> |             <Width>5.50068cm</Width> | ||||||
|             <ZIndex>8</ZIndex> |             <ZIndex>8</ZIndex> | ||||||
|             <Style> |             <Style> | ||||||
|               <Border> |               <Border> | ||||||
| @@ -1539,7 +1539,7 @@ iif(Fields!type.Value="조명에너지","#765e00","#475e76")))))</Color> | |||||||
|             </Paragraphs> |             </Paragraphs> | ||||||
|             <rd:DefaultName>Textbox2</rd:DefaultName> |             <rd:DefaultName>Textbox2</rd:DefaultName> | ||||||
|             <Top>0.46137cm</Top> |             <Top>0.46137cm</Top> | ||||||
|             <Left>9.99727cm</Left> |             <Left>10.3546cm</Left> | ||||||
|             <Height>0.56825cm</Height> |             <Height>0.56825cm</Height> | ||||||
|             <Width>0.96366cm</Width> |             <Width>0.96366cm</Width> | ||||||
|             <ZIndex>10</ZIndex> |             <ZIndex>10</ZIndex> | ||||||
| @@ -1589,11 +1589,49 @@ iif(Fields!type.Value="조명에너지","#765e00","#475e76")))))</Color> | |||||||
|               <PaddingBottom>2pt</PaddingBottom> |               <PaddingBottom>2pt</PaddingBottom> | ||||||
|             </Style> |             </Style> | ||||||
|           </Textbox> |           </Textbox> | ||||||
|  |           <Textbox Name="Textbox14"> | ||||||
|  |             <KeepTogether>true</KeepTogether> | ||||||
|  |             <Paragraphs> | ||||||
|  |               <Paragraph> | ||||||
|  |                 <TextRuns> | ||||||
|  |                   <TextRun> | ||||||
|  |                     <Value>단위면적당 1차에너지생산량(대지외):</Value> | ||||||
|  |                     <Style> | ||||||
|  |                       <FontFamily>맑은 고딕</FontFamily> | ||||||
|  |                       <FontSize>8pt</FontSize> | ||||||
|  |                       <Color>Red</Color> | ||||||
|  |                     </Style> | ||||||
|  |                   </TextRun> | ||||||
|  |                 </TextRuns> | ||||||
|  |                 <Style> | ||||||
|  |                   <TextAlign>Right</TextAlign> | ||||||
|  |                 </Style> | ||||||
|  |               </Paragraph> | ||||||
|  |             </Paragraphs> | ||||||
|  |             <rd:DefaultName>Textbox2</rd:DefaultName> | ||||||
|  |             <Top>0.55662cm</Top> | ||||||
|  |             <Left>11.75629cm</Left> | ||||||
|  |             <Height>0.44125cm</Height> | ||||||
|  |             <Width>5.042cm</Width> | ||||||
|  |             <ZIndex>12</ZIndex> | ||||||
|  |             <Visibility> | ||||||
|  |               <Hidden>=iif(Parameters!bcustomprofile.Value = "1",false,true)</Hidden> | ||||||
|  |             </Visibility> | ||||||
|  |             <Style> | ||||||
|  |               <Border> | ||||||
|  |                 <Style>None</Style> | ||||||
|  |               </Border> | ||||||
|  |               <PaddingLeft>2pt</PaddingLeft> | ||||||
|  |               <PaddingRight>2pt</PaddingRight> | ||||||
|  |               <PaddingTop>2pt</PaddingTop> | ||||||
|  |               <PaddingBottom>2pt</PaddingBottom> | ||||||
|  |             </Style> | ||||||
|  |           </Textbox> | ||||||
|         </ReportItems> |         </ReportItems> | ||||||
|         <KeepTogether>true</KeepTogether> |         <KeepTogether>true</KeepTogether> | ||||||
|         <Top>19.37185cm</Top> |         <Top>19.37185cm</Top> | ||||||
|         <Height>1.18837cm</Height> |         <Height>1.18837cm</Height> | ||||||
|         <Width>17.87958cm</Width> |         <Width>18.5cm</Width> | ||||||
|         <ZIndex>4</ZIndex> |         <ZIndex>4</ZIndex> | ||||||
|         <Style> |         <Style> | ||||||
|           <Border> |           <Border> | ||||||
| @@ -1601,44 +1639,6 @@ iif(Fields!type.Value="조명에너지","#765e00","#475e76")))))</Color> | |||||||
|           </Border> |           </Border> | ||||||
|         </Style> |         </Style> | ||||||
|       </Rectangle> |       </Rectangle> | ||||||
|       <Textbox Name="Textbox14"> |  | ||||||
|         <KeepTogether>true</KeepTogether> |  | ||||||
|         <Paragraphs> |  | ||||||
|           <Paragraph> |  | ||||||
|             <TextRuns> |  | ||||||
|               <TextRun> |  | ||||||
|                 <Value>단위면적당 1차에너지생산량(대지외):</Value> |  | ||||||
|                 <Style> |  | ||||||
|                   <FontFamily>맑은 고딕</FontFamily> |  | ||||||
|                   <FontSize>8pt</FontSize> |  | ||||||
|                   <Color>Red</Color> |  | ||||||
|                 </Style> |  | ||||||
|               </TextRun> |  | ||||||
|             </TextRuns> |  | ||||||
|             <Style> |  | ||||||
|               <TextAlign>Right</TextAlign> |  | ||||||
|             </Style> |  | ||||||
|           </Paragraph> |  | ||||||
|         </Paragraphs> |  | ||||||
|         <rd:DefaultName>Textbox2</rd:DefaultName> |  | ||||||
|         <Top>19.92847cm</Top> |  | ||||||
|         <Left>11.21595cm</Left> |  | ||||||
|         <Height>0.44125cm</Height> |  | ||||||
|         <Width>5.042cm</Width> |  | ||||||
|         <ZIndex>5</ZIndex> |  | ||||||
|         <Visibility> |  | ||||||
|           <Hidden>=iif(Parameters!bcustomprofile.Value = "1",false,true)</Hidden> |  | ||||||
|         </Visibility> |  | ||||||
|         <Style> |  | ||||||
|           <Border> |  | ||||||
|             <Style>None</Style> |  | ||||||
|           </Border> |  | ||||||
|           <PaddingLeft>2pt</PaddingLeft> |  | ||||||
|           <PaddingRight>2pt</PaddingRight> |  | ||||||
|           <PaddingTop>2pt</PaddingTop> |  | ||||||
|           <PaddingBottom>2pt</PaddingBottom> |  | ||||||
|         </Style> |  | ||||||
|       </Textbox> |  | ||||||
|     </ReportItems> |     </ReportItems> | ||||||
|     <Height>20.56022cm</Height> |     <Height>20.56022cm</Height> | ||||||
|     <Style /> |     <Style /> | ||||||
|   | |||||||
							
								
								
									
										36
									
								
								ArinWarev1/MdiMain.Designer.vb
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										36
									
								
								ArinWarev1/MdiMain.Designer.vb
									
									
									
										generated
									
									
									
								
							| @@ -37,7 +37,6 @@ Partial Class MdiMain | |||||||
|         Me.MenuStrip1 = New System.Windows.Forms.MenuStrip() |         Me.MenuStrip1 = New System.Windows.Forms.MenuStrip() | ||||||
|         Me.ReportToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() |         Me.ReportToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() | ||||||
|         Me.btNew = New System.Windows.Forms.ToolStripMenuItem() |         Me.btNew = New System.Windows.Forms.ToolStripMenuItem() | ||||||
|         Me.신규코드업로드ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() |  | ||||||
|         Me.ToolStripMenuItem7 = New System.Windows.Forms.ToolStripSeparator() |         Me.ToolStripMenuItem7 = New System.Windows.Forms.ToolStripSeparator() | ||||||
|         Me.btOpen = New System.Windows.Forms.ToolStripMenuItem() |         Me.btOpen = New System.Windows.Forms.ToolStripMenuItem() | ||||||
|         Me.bt_filesave = New System.Windows.Forms.ToolStripMenuItem() |         Me.bt_filesave = New System.Windows.Forms.ToolStripMenuItem() | ||||||
| @@ -58,6 +57,7 @@ Partial Class MdiMain | |||||||
|         Me.환경설정ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() |         Me.환경설정ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() | ||||||
|         Me.실행ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() |         Me.실행ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() | ||||||
|         Me.btMacro = New System.Windows.Forms.ToolStripMenuItem() |         Me.btMacro = New System.Windows.Forms.ToolStripMenuItem() | ||||||
|  |         Me.btMacro2 = New System.Windows.Forms.ToolStripMenuItem() | ||||||
|         Me.bt_계산결과 = New System.Windows.Forms.ToolStripMenuItem() |         Me.bt_계산결과 = New System.Windows.Forms.ToolStripMenuItem() | ||||||
|         Me.계산결과ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() |         Me.계산결과ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() | ||||||
|         Me.bt_인증평가서 = New System.Windows.Forms.ToolStripMenuItem() |         Me.bt_인증평가서 = New System.Windows.Forms.ToolStripMenuItem() | ||||||
| @@ -109,6 +109,7 @@ Partial Class MdiMain | |||||||
|         Me.비교데이터백업ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() |         Me.비교데이터백업ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() | ||||||
|         Me.데이터비교ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() |         Me.데이터비교ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() | ||||||
|         Me.순실체적ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() |         Me.순실체적ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() | ||||||
|  |         Me.ManualToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() | ||||||
|         Me.StatusStrip1.SuspendLayout() |         Me.StatusStrip1.SuspendLayout() | ||||||
|         Me.MenuStrip1.SuspendLayout() |         Me.MenuStrip1.SuspendLayout() | ||||||
|         Me.ContextMenuStrip1.SuspendLayout() |         Me.ContextMenuStrip1.SuspendLayout() | ||||||
| @@ -178,7 +179,7 @@ Partial Class MdiMain | |||||||
|         'MenuStrip1 |         'MenuStrip1 | ||||||
|         ' |         ' | ||||||
|         Me.MenuStrip1.Font = New System.Drawing.Font("돋움", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) |         Me.MenuStrip1.Font = New System.Drawing.Font("돋움", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) | ||||||
|         Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ReportToolStripMenuItem, Me.건물개요ToolStripMenuItem, Me.환경설정ToolStripMenuItem, Me.bt_계산결과, Me.결과그래프ToolStripMenuItem, Me.정보ToolStripMenuItem1, Me.bt_etc, Me.WindowsMenu, Me.btcustomprofile}) |         Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ReportToolStripMenuItem, Me.건물개요ToolStripMenuItem, Me.환경설정ToolStripMenuItem, Me.bt_계산결과, Me.결과그래프ToolStripMenuItem, Me.정보ToolStripMenuItem1, Me.bt_etc, Me.WindowsMenu, Me.btcustomprofile, Me.ManualToolStripMenuItem}) | ||||||
|         Me.MenuStrip1.Location = New System.Drawing.Point(0, 0) |         Me.MenuStrip1.Location = New System.Drawing.Point(0, 0) | ||||||
|         Me.MenuStrip1.MdiWindowListItem = Me.WindowsMenu |         Me.MenuStrip1.MdiWindowListItem = Me.WindowsMenu | ||||||
|         Me.MenuStrip1.Name = "MenuStrip1" |         Me.MenuStrip1.Name = "MenuStrip1" | ||||||
| @@ -188,7 +189,7 @@ Partial Class MdiMain | |||||||
|         ' |         ' | ||||||
|         'ReportToolStripMenuItem |         'ReportToolStripMenuItem | ||||||
|         ' |         ' | ||||||
|         Me.ReportToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.btNew, Me.신규코드업로드ToolStripMenuItem, Me.ToolStripMenuItem7, Me.btOpen, Me.bt_filesave, Me.btSaveNew, Me.정보ToolStripMenuItem, Me.bt_데이터관리, Me.btImport, Me.ToolStripMenuItem5, Me.lbl_p1, Me.lbl_p2, Me.lbl_p3, Me.lbl_p4, Me.lbl_p5, Me.ToolStripMenuItem6, Me.종료ToolStripMenuItem}) |         Me.ReportToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.btNew, Me.ToolStripMenuItem7, Me.btOpen, Me.bt_filesave, Me.btSaveNew, Me.정보ToolStripMenuItem, Me.bt_데이터관리, Me.btImport, Me.ToolStripMenuItem5, Me.lbl_p1, Me.lbl_p2, Me.lbl_p3, Me.lbl_p4, Me.lbl_p5, Me.ToolStripMenuItem6, Me.종료ToolStripMenuItem}) | ||||||
|         Me.ReportToolStripMenuItem.Image = CType(resources.GetObject("ReportToolStripMenuItem.Image"), System.Drawing.Image) |         Me.ReportToolStripMenuItem.Image = CType(resources.GetObject("ReportToolStripMenuItem.Image"), System.Drawing.Image) | ||||||
|         Me.ReportToolStripMenuItem.Name = "ReportToolStripMenuItem" |         Me.ReportToolStripMenuItem.Name = "ReportToolStripMenuItem" | ||||||
|         Me.ReportToolStripMenuItem.Size = New System.Drawing.Size(57, 20) |         Me.ReportToolStripMenuItem.Size = New System.Drawing.Size(57, 20) | ||||||
| @@ -201,14 +202,6 @@ Partial Class MdiMain | |||||||
|         Me.btNew.Size = New System.Drawing.Size(244, 22) |         Me.btNew.Size = New System.Drawing.Size(244, 22) | ||||||
|         Me.btNew.Text = "신규" |         Me.btNew.Text = "신규" | ||||||
|         ' |         ' | ||||||
|         '신규코드업로드ToolStripMenuItem |  | ||||||
|         ' |  | ||||||
|         Me.신규코드업로드ToolStripMenuItem.ForeColor = System.Drawing.Color.Red |  | ||||||
|         Me.신규코드업로드ToolStripMenuItem.Name = "신규코드업로드ToolStripMenuItem" |  | ||||||
|         Me.신규코드업로드ToolStripMenuItem.Size = New System.Drawing.Size(244, 22) |  | ||||||
|         Me.신규코드업로드ToolStripMenuItem.Text = "신규코드 업로드" |  | ||||||
|         Me.신규코드업로드ToolStripMenuItem.Visible = False |  | ||||||
|         ' |  | ||||||
|         'ToolStripMenuItem7 |         'ToolStripMenuItem7 | ||||||
|         ' |         ' | ||||||
|         Me.ToolStripMenuItem7.Name = "ToolStripMenuItem7" |         Me.ToolStripMenuItem7.Name = "ToolStripMenuItem7" | ||||||
| @@ -326,7 +319,7 @@ Partial Class MdiMain | |||||||
|         ' |         ' | ||||||
|         '환경설정ToolStripMenuItem |         '환경설정ToolStripMenuItem | ||||||
|         ' |         ' | ||||||
|         Me.환경설정ToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.실행ToolStripMenuItem, Me.btMacro}) |         Me.환경설정ToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.실행ToolStripMenuItem, Me.btMacro, Me.btMacro2}) | ||||||
|         Me.환경설정ToolStripMenuItem.Image = CType(resources.GetObject("환경설정ToolStripMenuItem.Image"), System.Drawing.Image) |         Me.환경설정ToolStripMenuItem.Image = CType(resources.GetObject("환경설정ToolStripMenuItem.Image"), System.Drawing.Image) | ||||||
|         Me.환경설정ToolStripMenuItem.Name = "환경설정ToolStripMenuItem" |         Me.환경설정ToolStripMenuItem.Name = "환경설정ToolStripMenuItem" | ||||||
|         Me.환경설정ToolStripMenuItem.Size = New System.Drawing.Size(57, 20) |         Me.환경설정ToolStripMenuItem.Size = New System.Drawing.Size(57, 20) | ||||||
| @@ -346,6 +339,14 @@ Partial Class MdiMain | |||||||
|         Me.btMacro.Text = "일괄실행" |         Me.btMacro.Text = "일괄실행" | ||||||
|         Me.btMacro.Visible = False |         Me.btMacro.Visible = False | ||||||
|         ' |         ' | ||||||
|  |         'btMacro2 | ||||||
|  |         ' | ||||||
|  |         Me.btMacro2.ForeColor = System.Drawing.Color.Blue | ||||||
|  |         Me.btMacro2.Name = "btMacro2" | ||||||
|  |         Me.btMacro2.Size = New System.Drawing.Size(124, 22) | ||||||
|  |         Me.btMacro2.Text = "Macro II" | ||||||
|  |         Me.btMacro2.Visible = False | ||||||
|  |         ' | ||||||
|         'bt_계산결과 |         'bt_계산결과 | ||||||
|         ' |         ' | ||||||
|         Me.bt_계산결과.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.계산결과ToolStripMenuItem, Me.bt_인증평가서, Me.업로드양식ToolStripMenuItem}) |         Me.bt_계산결과.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.계산결과ToolStripMenuItem, Me.bt_인증평가서, Me.업로드양식ToolStripMenuItem}) | ||||||
| @@ -696,6 +697,13 @@ Partial Class MdiMain | |||||||
|         Me.순실체적ToolStripMenuItem.Size = New System.Drawing.Size(170, 22) |         Me.순실체적ToolStripMenuItem.Size = New System.Drawing.Size(170, 22) | ||||||
|         Me.순실체적ToolStripMenuItem.Text = "3.순실체적" |         Me.순실체적ToolStripMenuItem.Text = "3.순실체적" | ||||||
|         ' |         ' | ||||||
|  |         'ManualToolStripMenuItem | ||||||
|  |         ' | ||||||
|  |         Me.ManualToolStripMenuItem.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right | ||||||
|  |         Me.ManualToolStripMenuItem.Name = "ManualToolStripMenuItem" | ||||||
|  |         Me.ManualToolStripMenuItem.Size = New System.Drawing.Size(59, 20) | ||||||
|  |         Me.ManualToolStripMenuItem.Text = "Manual" | ||||||
|  |         ' | ||||||
|         'MdiMain |         'MdiMain | ||||||
|         ' |         ' | ||||||
|         Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 12.0!) |         Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 12.0!) | ||||||
| @@ -801,7 +809,6 @@ Partial Class MdiMain | |||||||
|     Friend WithEvents 데이터비교ToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem |     Friend WithEvents 데이터비교ToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem | ||||||
|     Friend WithEvents 순실체적ToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem |     Friend WithEvents 순실체적ToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem | ||||||
|     Friend WithEvents 업로드양식ToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem |     Friend WithEvents 업로드양식ToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem | ||||||
|     Friend WithEvents 신규코드업로드ToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem |  | ||||||
|     Friend WithEvents WindowsMenu As System.Windows.Forms.ToolStripMenuItem |     Friend WithEvents WindowsMenu As System.Windows.Forms.ToolStripMenuItem | ||||||
|     Friend WithEvents NewWindowToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem |     Friend WithEvents NewWindowToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem | ||||||
|     Friend WithEvents CascadeToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem |     Friend WithEvents CascadeToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem | ||||||
| @@ -821,5 +828,6 @@ Partial Class MdiMain | |||||||
|     Friend WithEvents btMacro As System.Windows.Forms.ToolStripMenuItem |     Friend WithEvents btMacro As System.Windows.Forms.ToolStripMenuItem | ||||||
|     Friend WithEvents BatchUpdateProfileToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem |     Friend WithEvents BatchUpdateProfileToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem | ||||||
|     Friend WithEvents btcustomprofile As System.Windows.Forms.ToolStripMenuItem |     Friend WithEvents btcustomprofile As System.Windows.Forms.ToolStripMenuItem | ||||||
|  |     Friend WithEvents btMacro2 As System.Windows.Forms.ToolStripMenuItem | ||||||
|  |     Friend WithEvents ManualToolStripMenuItem As ToolStripMenuItem | ||||||
| End Class | End Class | ||||||
|   | |||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,4 +1,5 @@ | |||||||
| Imports System.IO | Imports System.IO | ||||||
|  | Imports Eco2Ar.WebServer | ||||||
|  |  | ||||||
| Public Class MdiMain | Public Class MdiMain | ||||||
|  |  | ||||||
| @@ -20,9 +21,17 @@ Public Class MdiMain | |||||||
|  |  | ||||||
|     '''현재열려있는폼의 이름을 변경한다. |     '''현재열려있는폼의 이름을 변경한다. | ||||||
|     Public OpenedForm As E_MenuIdx = E_MenuIdx.NONE |     Public OpenedForm As E_MenuIdx = E_MenuIdx.NONE | ||||||
|  |     Private webServer As StaticFileServer | ||||||
|  |  | ||||||
|     Private Sub MdiMain_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed |     Private Sub MdiMain_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed | ||||||
|         pLog.Add("FormClosed", True) |         pLog.Add("FormClosed", True) | ||||||
|  |  | ||||||
|  |         ' 웹 서버 정리 | ||||||
|  |         If webServer IsNot Nothing Then | ||||||
|  |             webServer.Stop() | ||||||
|  |             webServer.Dispose() | ||||||
|  |         End If | ||||||
|  |  | ||||||
|     End Sub |     End Sub | ||||||
|  |  | ||||||
|     Private Sub MdiMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing |     Private Sub MdiMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing | ||||||
| @@ -124,6 +133,7 @@ Public Class MdiMain | |||||||
|                 bt_계산결과.Visible = False |                 bt_계산결과.Visible = False | ||||||
|                 bt_인증평가서.Visible = False |                 bt_인증평가서.Visible = False | ||||||
|                 btImport.Visible = False |                 btImport.Visible = False | ||||||
|  |                 btMacro.Visible = False | ||||||
|                 '//서버로부터 사용여부 체크 |                 '//서버로부터 사용여부 체크 | ||||||
|                 'If L.Check_guest <> "OK" Then |                 'If L.Check_guest <> "OK" Then | ||||||
|                 '    MsgBox("일반사용자에게는 아직 오픈되지 않았습니다.", MsgBoxStyle.Information, "확인") |                 '    MsgBox("일반사용자에게는 아직 오픈되지 않았습니다.", MsgBoxStyle.Information, "확인") | ||||||
| @@ -138,6 +148,7 @@ Public Class MdiMain | |||||||
|                 'bt_계산결과그래프q.Visible = True |                 'bt_계산결과그래프q.Visible = True | ||||||
|                 bt_인증평가서.Visible = True |                 bt_인증평가서.Visible = True | ||||||
|                 btImport.Visible = True |                 btImport.Visible = True | ||||||
|  |                 btMacro.Visible = False | ||||||
|             Case "BOTH1" |             Case "BOTH1" | ||||||
|                 bt_데이터관리.Visible = True |                 bt_데이터관리.Visible = True | ||||||
|                 Me.bt_etc.Visible = False |                 Me.bt_etc.Visible = False | ||||||
| @@ -147,6 +158,7 @@ Public Class MdiMain | |||||||
|                 'bt_계산결과그래프q.Visible = True |                 'bt_계산결과그래프q.Visible = True | ||||||
|                 bt_인증평가서.Visible = True |                 bt_인증평가서.Visible = True | ||||||
|                 btImport.Visible = True |                 btImport.Visible = True | ||||||
|  |                 btMacro.Visible = False | ||||||
|             Case "BOTH2" |             Case "BOTH2" | ||||||
|                 bt_데이터관리.Visible = False |                 bt_데이터관리.Visible = False | ||||||
|                 Me.bt_etc.Visible = False |                 Me.bt_etc.Visible = False | ||||||
| @@ -156,6 +168,7 @@ Public Class MdiMain | |||||||
|                 'bt_계산결과그래프q.Visible = False |                 'bt_계산결과그래프q.Visible = False | ||||||
|                 bt_인증평가서.Visible = False |                 bt_인증평가서.Visible = False | ||||||
|                 btImport.Visible = False |                 btImport.Visible = False | ||||||
|  |                 btMacro.Visible = False | ||||||
|             Case Else |             Case Else | ||||||
|                 bt_데이터관리.Visible = False |                 bt_데이터관리.Visible = False | ||||||
|                 bt_계산결과그래프.Visible = False |                 bt_계산결과그래프.Visible = False | ||||||
| @@ -164,8 +177,11 @@ Public Class MdiMain | |||||||
|                 bt_계산결과.Visible = False |                 bt_계산결과.Visible = False | ||||||
|                 bt_인증평가서.Visible = False |                 bt_인증평가서.Visible = False | ||||||
|                 btImport.Visible = False |                 btImport.Visible = False | ||||||
|  |                 btMacro.Visible = False | ||||||
|         End Select |         End Select | ||||||
|  |  | ||||||
|  |         btMacro2.Visible = btMacro.Visible | ||||||
|  |  | ||||||
|         If Prj.UserAuthType_Real.StartsWith("BOTH_C_") Then |         If Prj.UserAuthType_Real.StartsWith("BOTH_C_") Then | ||||||
|             btcustomprofile.Visible = True |             btcustomprofile.Visible = True | ||||||
|         End If |         End If | ||||||
| @@ -236,6 +252,23 @@ Public Class MdiMain | |||||||
|  |  | ||||||
|         pLog.Add("Program Start") |         pLog.Add("Program Start") | ||||||
|  |  | ||||||
|  |         Try | ||||||
|  |             ' 웹 서버 초기화 및 시작 | ||||||
|  |             Dim wwwPath = Path.Combine(Application.StartupPath, "wwwroot") | ||||||
|  |             webServer = New StaticFileServer(wwwPath, 58123) | ||||||
|  |             webServer.Start() | ||||||
|  |             'If System.Diagnostics.Debugger.IsAttached Then | ||||||
|  |             '    webServer.OpenInBrowser() | ||||||
|  |             'End If | ||||||
|  |         Catch ex As Exception | ||||||
|  |             ' 웹 서버 시작 실패해도 프로그램은 계속 실행 | ||||||
|  |             Debug.WriteLine("웹 서버 시작 실패: " & ex.Message) | ||||||
|  |         End Try | ||||||
|  |  | ||||||
|  |         ' WebView2 Fixed Version 체크 | ||||||
|  |         CheckWebView2Runtime() | ||||||
|  |  | ||||||
|  |  | ||||||
|         If Me.bt_etc.Visible = False AndAlso System.Diagnostics.Debugger.IsAttached Then |         If Me.bt_etc.Visible = False AndAlso System.Diagnostics.Debugger.IsAttached Then | ||||||
|             MsgBox("debugmode import on") |             MsgBox("debugmode import on") | ||||||
|             Me.bt_etc.Visible = True |             Me.bt_etc.Visible = True | ||||||
| @@ -771,14 +804,14 @@ Public Class MdiMain | |||||||
|                 If Prj.UIVersion <> CurrentUIVersion() Then |                 If Prj.UIVersion <> CurrentUIVersion() Then | ||||||
|  |  | ||||||
|                     If CInt(Prj.UIVersion.Substring(0, 4)) >= 2016 Then |                     If CInt(Prj.UIVersion.Substring(0, 4)) >= 2016 Then | ||||||
|                         MsgBox("해당 파일은 현재 프로그램과 동일한 버젼에서 생성된 파일이 아닙니다" + vbCrLf + vbCrLf + _ |                         MsgBox("해당 파일은 현재 프로그램과 동일한 버젼에서 생성된 파일이 아닙니다" + vbCrLf + vbCrLf + | ||||||
|                                                            "파일 Version : " + Prj.UIVersion + vbCrLf + _ |                                                            "파일 Version : " + Prj.UIVersion + vbCrLf + | ||||||
|                                                            "현재 Version : " + CurrentUIVersion() + vbCrLf + vbCrLf + _ |                                                            "현재 Version : " + CurrentUIVersion() + vbCrLf + vbCrLf + | ||||||
|                                                            "파일을 생성한 버젼과 결과 혹은 화면이 일치하지 않을 수 있습니다", MsgBoxStyle.Information, "버전확인") |                                                            "파일을 생성한 버젼과 결과 혹은 화면이 일치하지 않을 수 있습니다", MsgBoxStyle.Information, "버전확인") | ||||||
|                     Else |                     Else | ||||||
|                         MsgBox("해당 파일은 현재 프로그램과 동일한 버젼에서 생성된 파일이 아닙니다" + vbCrLf + vbCrLf + _ |                         MsgBox("해당 파일은 현재 프로그램과 동일한 버젼에서 생성된 파일이 아닙니다" + vbCrLf + vbCrLf + | ||||||
|                                         "파일 Version : " + vbCrLf + _ |                                         "파일 Version : " + vbCrLf + | ||||||
|                                            "현재 Version : " + CurrentUIVersion() + vbCrLf + vbCrLf + _ |                                            "현재 Version : " + CurrentUIVersion() + vbCrLf + vbCrLf + | ||||||
|                                            "파일을 생성한 버젼과 결과 혹은 화면이 일치하지 않을 수 있습니다", MsgBoxStyle.Information, "버전확인") |                                            "파일을 생성한 버젼과 결과 혹은 화면이 일치하지 않을 수 있습니다", MsgBoxStyle.Information, "버전확인") | ||||||
|  |  | ||||||
|                     End If |                     End If | ||||||
| @@ -936,6 +969,9 @@ Public Class MdiMain | |||||||
|             DSET1.tbl_profile.AcceptChanges() |             DSET1.tbl_profile.AcceptChanges() | ||||||
|  |  | ||||||
|  |  | ||||||
|  |             Pub.Update_열관류율_140409() | ||||||
|  |  | ||||||
|  |  | ||||||
|             PrjChanged = False |             PrjChanged = False | ||||||
|  |  | ||||||
|             Me.RefreshMenuList("") |             Me.RefreshMenuList("") | ||||||
| @@ -966,7 +1002,7 @@ Public Class MdiMain | |||||||
|                 Dim oldfi As New System.IO.FileInfo(FileName) |                 Dim oldfi As New System.IO.FileInfo(FileName) | ||||||
|                 Dim newfi As New System.IO.FileInfo(bakdi.FullName + "\open_" + oldfi.Name) |                 Dim newfi As New System.IO.FileInfo(bakdi.FullName + "\open_" + oldfi.Name) | ||||||
|                 If newfi.Exists Then |                 If newfi.Exists Then | ||||||
|                     If MsgBox("백업된 파일이 존재합니다." + vbCrLf + vbCrLf + _ |                     If MsgBox("백업된 파일이 존재합니다." + vbCrLf + vbCrLf + | ||||||
|                               "백업일자 : " + newfi.CreationTime.ToShortDateString + " " + newfi.CreationTime.ToShortTimeString + vbCrLf + "백업된 파일을 불러오시겠습니까?", MsgBoxStyle.YesNo Or MsgBoxStyle.Question, "확인") = MsgBoxResult.Yes Then |                               "백업일자 : " + newfi.CreationTime.ToShortDateString + " " + newfi.CreationTime.ToShortTimeString + vbCrLf + "백업된 파일을 불러오시겠습니까?", MsgBoxStyle.YesNo Or MsgBoxStyle.Question, "확인") = MsgBoxResult.Yes Then | ||||||
|                         Open_File(newfi.FullName) |                         Open_File(newfi.FullName) | ||||||
|                     End If |                     End If | ||||||
| @@ -1063,7 +1099,7 @@ Public Class MdiMain | |||||||
|                         DSET1.tbl_zone.Rows(i - 1)("순실체적") = CSng(면적) * CSng(천장고) |                         DSET1.tbl_zone.Rows(i - 1)("순실체적") = CSng(면적) * CSng(천장고) | ||||||
|                     End If |                     End If | ||||||
|                 End If |                 End If | ||||||
|                 If DSET1.tbl_zone.Rows(i - 1).RowState = DataRowState.Deleted OrElse _ |                 If DSET1.tbl_zone.Rows(i - 1).RowState = DataRowState.Deleted OrElse | ||||||
|                     DSET1.tbl_zone.Rows(i - 1).RowState = DataRowState.Detached Then |                     DSET1.tbl_zone.Rows(i - 1).RowState = DataRowState.Detached Then | ||||||
|                     Continue For |                     Continue For | ||||||
|                 End If |                 End If | ||||||
| @@ -1077,7 +1113,7 @@ Public Class MdiMain | |||||||
|  |  | ||||||
|         If Not DSET2 Is Nothing Then |         If Not DSET2 Is Nothing Then | ||||||
|             For i As Integer = 1 To DSET2.tbl_zone.Rows.Count |             For i As Integer = 1 To DSET2.tbl_zone.Rows.Count | ||||||
|                 If DSET2.tbl_zone.Rows(i - 1).RowState = DataRowState.Deleted OrElse _ |                 If DSET2.tbl_zone.Rows(i - 1).RowState = DataRowState.Deleted OrElse | ||||||
|                     DSET2.tbl_zone.Rows(i - 1).RowState = DataRowState.Detached Then |                     DSET2.tbl_zone.Rows(i - 1).RowState = DataRowState.Detached Then | ||||||
|                     Continue For |                     Continue For | ||||||
|                 End If |                 End If | ||||||
| @@ -1092,7 +1128,7 @@ Public Class MdiMain | |||||||
|         '//입력면 |         '//입력면 | ||||||
|         If Not DSET1 Is Nothing Then |         If Not DSET1 Is Nothing Then | ||||||
|             For i As Integer = 1 To DSET1.tbl_myoun.Rows.Count |             For i As Integer = 1 To DSET1.tbl_myoun.Rows.Count | ||||||
|                 If DSET1.tbl_myoun.Rows(i - 1).RowState = DataRowState.Deleted OrElse _ |                 If DSET1.tbl_myoun.Rows(i - 1).RowState = DataRowState.Deleted OrElse | ||||||
|                     DSET1.tbl_myoun.Rows(i - 1).RowState = DataRowState.Detached Then |                     DSET1.tbl_myoun.Rows(i - 1).RowState = DataRowState.Detached Then | ||||||
|                     Continue For |                     Continue For | ||||||
|                 End If |                 End If | ||||||
| @@ -1111,7 +1147,7 @@ Public Class MdiMain | |||||||
|  |  | ||||||
|         If Not DSET2 Is Nothing Then |         If Not DSET2 Is Nothing Then | ||||||
|             For i As Integer = 1 To DSET2.tbl_myoun.Rows.Count |             For i As Integer = 1 To DSET2.tbl_myoun.Rows.Count | ||||||
|                 If DSET2.tbl_myoun.Rows(i - 1).RowState = DataRowState.Deleted OrElse _ |                 If DSET2.tbl_myoun.Rows(i - 1).RowState = DataRowState.Deleted OrElse | ||||||
|                     DSET2.tbl_myoun.Rows(i - 1).RowState = DataRowState.Detached Then |                     DSET2.tbl_myoun.Rows(i - 1).RowState = DataRowState.Detached Then | ||||||
|                     Continue For |                     Continue For | ||||||
|                 End If |                 End If | ||||||
| @@ -1999,8 +2035,8 @@ Public Class MdiMain | |||||||
|         'MsgBox(autoselecttagname) |         'MsgBox(autoselecttagname) | ||||||
|  |  | ||||||
|         '//추가할메뉴선택 |         '//추가할메뉴선택 | ||||||
|         Dim Menus() As String = New String() {"입력존", "공조처리", _ |         Dim Menus() As String = New String() {"입력존", "공조처리", | ||||||
|                                               "난방기기", "난방공급시스템", "난방분배시스템", "냉방기기", _ |                                               "난방기기", "난방공급시스템", "난방분배시스템", "냉방기기", | ||||||
|                                               "냉방분배시스템", "신재생및열병합", "열관류율", "월별에너지사용량"} |                                               "냉방분배시스템", "신재생및열병합", "열관류율", "월별에너지사용량"} | ||||||
|         For Each m As String In Menus |         For Each m As String In Menus | ||||||
|  |  | ||||||
| @@ -2674,8 +2710,8 @@ ENDSTAT:  '//오류발생시 강제종료를 위한 분기문 | |||||||
|  |  | ||||||
|     Private Sub ToolStripMenuItem13_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripMenuItem13.Click |     Private Sub ToolStripMenuItem13_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripMenuItem13.Click | ||||||
|  |  | ||||||
|         If MsgBox("정말로 서버의 데이터를 수정하시겠습니까?" & vbCrLf & _ |         If MsgBox("정말로 서버의 데이터를 수정하시겠습니까?" & vbCrLf & | ||||||
|                   "서버의 기상데이터가 삭제되고 현재데이터가 씌여집니다." & vbCrLf & _ |                   "서버의 기상데이터가 삭제되고 현재데이터가 씌여집니다." & vbCrLf & | ||||||
|                   "이작업은 되돌릴 수없습니다", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return |                   "이작업은 되돌릴 수없습니다", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return | ||||||
|  |  | ||||||
|         Dim pass As String = InputBox("암호입력") |         Dim pass As String = InputBox("암호입력") | ||||||
| @@ -2709,11 +2745,11 @@ ENDSTAT:  '//오류발생시 강제종료를 위한 분기문 | |||||||
|             Rcnt += Ta2.Insert(Dr.pcode, Dr.code, Dr.설명, Dr.최대부하, Dr.m01, Dr.m02, Dr.m03, Dr.m04, Dr.m05, Dr.m06, Dr.m07, Dr.m08, Dr.m09, Dr.m10, Dr.m11, Dr.m12) |             Rcnt += Ta2.Insert(Dr.pcode, Dr.code, Dr.설명, Dr.최대부하, Dr.m01, Dr.m02, Dr.m03, Dr.m04, Dr.m05, Dr.m06, Dr.m07, Dr.m08, Dr.m09, Dr.m10, Dr.m11, Dr.m12) | ||||||
|         Next |         Next | ||||||
|         For Each Dr As DS.weather_supdoRow In DSET1.weather_supdo.Rows |         For Each Dr As DS.weather_supdoRow In DSET1.weather_supdo.Rows | ||||||
|             Rcnt += Ta3.Insert(Dr.pcode, Dr.code, Dr.설명, Dr.t01, Dr.t02, Dr.t03, Dr.t04, Dr.t05, Dr.t06, Dr.t07, Dr.t08, Dr.t09, Dr.t10, _ |             Rcnt += Ta3.Insert(Dr.pcode, Dr.code, Dr.설명, Dr.t01, Dr.t02, Dr.t03, Dr.t04, Dr.t05, Dr.t06, Dr.t07, Dr.t08, Dr.t09, Dr.t10, | ||||||
|                                Dr.t11, Dr.t12, Dr.t13, Dr.t14, Dr.t15, Dr.t16, Dr.t17, Dr.t18, Dr.t19, Dr.t20, Dr.t21, Dr.t22, Dr.t23, Dr.t24) |                                Dr.t11, Dr.t12, Dr.t13, Dr.t14, Dr.t15, Dr.t16, Dr.t17, Dr.t18, Dr.t19, Dr.t20, Dr.t21, Dr.t22, Dr.t23, Dr.t24) | ||||||
|         Next |         Next | ||||||
|         For Each Dr As DS.weather_tempRow In DSET1.weather_temp.Rows |         For Each Dr As DS.weather_tempRow In DSET1.weather_temp.Rows | ||||||
|             Rcnt += Ta4.Insert(Dr.pcode, Dr.code, Dr.설명, Dr.t01, Dr.t02, Dr.t03, Dr.t04, Dr.t05, Dr.t06, Dr.t07, Dr.t08, Dr.t09, Dr.t10, _ |             Rcnt += Ta4.Insert(Dr.pcode, Dr.code, Dr.설명, Dr.t01, Dr.t02, Dr.t03, Dr.t04, Dr.t05, Dr.t06, Dr.t07, Dr.t08, Dr.t09, Dr.t10, | ||||||
|                                Dr.t11, Dr.t12, Dr.t13, Dr.t14, Dr.t15, Dr.t16, Dr.t17, Dr.t18, Dr.t19, Dr.t20, Dr.t21, Dr.t22, Dr.t23, Dr.t24) |                                Dr.t11, Dr.t12, Dr.t13, Dr.t14, Dr.t15, Dr.t16, Dr.t17, Dr.t18, Dr.t19, Dr.t20, Dr.t21, Dr.t22, Dr.t23, Dr.t24) | ||||||
|         Next |         Next | ||||||
|         MsgBox("업데이트완료", MsgBoxStyle.Information, "확인") |         MsgBox("업데이트완료", MsgBoxStyle.Information, "확인") | ||||||
| @@ -3467,61 +3503,6 @@ ENDSTAT:  '//오류발생시 강제종료를 위한 분기문 | |||||||
|  |  | ||||||
|     End Sub |     End Sub | ||||||
|  |  | ||||||
|     Private Sub 신규코드업로드ToolStripMenuItem_Click(sender As Object, e As EventArgs) |  | ||||||
|  |  | ||||||
|         If Prj.Opened Then |  | ||||||
|             Work_msg_timer("열려있는 파일을 닫아야 사용 가능합니다", 10) |  | ||||||
|             Return |  | ||||||
|         End If |  | ||||||
|  |  | ||||||
|         If MsgBox("신규파일의 코드를 갱신하시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.YesNo, "확인") = MsgBoxResult.Yes Then |  | ||||||
|  |  | ||||||
|             '물어야하니 if |  | ||||||
|             Dim new_string As String |  | ||||||
|             If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then  '//2011.03.09 추가 |  | ||||||
|                 new_string = "\new" |  | ||||||
|             Else |  | ||||||
|                 new_string = "\new1" |  | ||||||
|             End If |  | ||||||
|             Dim Srcfile As New System.IO.FileInfo(My.Application.Info.DirectoryPath & new_string) |  | ||||||
|             Me.Open_File(Srcfile.FullName, True) |  | ||||||
|         End If |  | ||||||
|     End Sub |  | ||||||
|  |  | ||||||
|     Private Sub 신규코드업로드ToolStripMenuItem_Click_1(sender As Object, e As EventArgs) Handles 신규코드업로드ToolStripMenuItem.Click |  | ||||||
|  |  | ||||||
|         If Prj.Opened Then |  | ||||||
|             Work_msg_timer("열려있는 파일을 닫아주세요", 10) |  | ||||||
|             Return |  | ||||||
|         End If |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         '물어야하니 if |  | ||||||
|         If MsgBox("새파일소스를 업데이트 하시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return '//ok 안하면 빠져나가기 |  | ||||||
|         Dim new_string As String |  | ||||||
|         If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then  '//2011.03.09 추가 |  | ||||||
|             new_string = "\new" |  | ||||||
|         Else |  | ||||||
|             new_string = "\new1" |  | ||||||
|         End If |  | ||||||
|         Dim Srcfile As New System.IO.FileInfo(My.Application.Info.DirectoryPath & new_string) |  | ||||||
|         If Srcfile.Exists = False Then |  | ||||||
|             MsgBox("원본샘플파일이 존재하지않습니다", MsgBoxStyle.Critical, "확인") |  | ||||||
|             Return '//복사할원본이 없으면 빠져나가기 |  | ||||||
|         End If |  | ||||||
|  |  | ||||||
|         '/////////////////////////////////////////////////////////////////////////////////////////////////////////////저장파일 변조2011.03.16추가 |  | ||||||
|         'If Not (Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1") Then  '//2011.03.09 추가 |  | ||||||
|         '    Dim Desbuf() As Byte = {} |  | ||||||
|         '    Dim Source() As Byte = My.Computer.FileSystem.ReadAllBytes(SD.FileName) |  | ||||||
|         '    Desbuf = DeCryptArea(Source, New Byte() {&HAC, &H29, &H55, &H42}) |  | ||||||
|         '    My.Computer.FileSystem.WriteAllBytes(SD.FileName, Desbuf, False)    |  | ||||||
|         'End If |  | ||||||
|         '/////////////////////////////////////////////////////////////////////////////////////////////////////////////저장파일 변조2011.03.16추가 |  | ||||||
|         Me.Open_File(Srcfile.FullName, True) |  | ||||||
|     End Sub |  | ||||||
|  |  | ||||||
|     Private Sub CascadeToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles CascadeToolStripMenuItem.Click |     Private Sub CascadeToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles CascadeToolStripMenuItem.Click | ||||||
|         Me.LayoutMdi(MdiLayout.Cascade) |         Me.LayoutMdi(MdiLayout.Cascade) | ||||||
|     End Sub |     End Sub | ||||||
| @@ -3921,8 +3902,8 @@ ENDSTAT:  '//오류발생시 강제종료를 위한 분기문 | |||||||
|                                 End If |                                 End If | ||||||
|  |  | ||||||
|  |  | ||||||
|                                 content.Append(vbTab + drm.설명 + vbTab + drm.건축부위방식 + vbTab + _ |                                 content.Append(vbTab + drm.설명 + vbTab + drm.건축부위방식 + vbTab + | ||||||
|                                                     drm.건축부위면적 + vbTab + _ |                                                     drm.건축부위면적 + vbTab + | ||||||
|                                                     열관류율 + vbTab + drm.방위) |                                                     열관류율 + vbTab + drm.방위) | ||||||
|                             Next |                             Next | ||||||
|                             content.AppendLine() |                             content.AppendLine() | ||||||
| @@ -4000,4 +3981,41 @@ ENDSTAT:  '//오류발생시 강제종료를 위한 분기문 | |||||||
|         f.ControlBox = True |         f.ControlBox = True | ||||||
|         f.ShowDialog() |         f.ShowDialog() | ||||||
|     End Sub |     End Sub | ||||||
|  |  | ||||||
|  |     Private Sub MacroIIToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles btMacro2.Click | ||||||
|  |         Menu_건물개요() | ||||||
|  |         Dim f As New Frm_Macro2 | ||||||
|  |         f.Show() | ||||||
|  |     End Sub | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     Dim frmManual As Frm_WebManual = Nothing | ||||||
|  |     Private Sub ManualToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ManualToolStripMenuItem.Click | ||||||
|  |         If frmManual Is Nothing OrElse frmManual.IsDisposed Then | ||||||
|  |             frmManual = New Frm_WebManual() | ||||||
|  |             frmManual.Show() | ||||||
|  |         End If | ||||||
|  |         If frmManual.WindowState = FormWindowState.Minimized Then | ||||||
|  |             frmManual.WindowState = FormWindowState.Normal | ||||||
|  |         End If | ||||||
|  |         frmManual.Activate() | ||||||
|  |     End Sub | ||||||
|  |  | ||||||
|  |     ''' <summary> | ||||||
|  |     ''' WebView2 Fixed Version 런타임 체크 | ||||||
|  |     ''' </summary> | ||||||
|  |     Private Sub CheckWebView2Runtime() | ||||||
|  |         Try | ||||||
|  |             Dim fixedVersionPath = Path.Combine(Application.StartupPath, "WebView2Runtime") | ||||||
|  |  | ||||||
|  |             ' Fixed Version 폴더가 없으면 경고 (하지만 계속 실행) | ||||||
|  |             If Not Directory.Exists(fixedVersionPath) Then | ||||||
|  |                 Debug.WriteLine("경고: WebView2 Fixed Version을 찾을 수 없습니다. Manual 기능이 제한될 수 있습니다.") | ||||||
|  |                 ' 사용자에게는 Manual 메뉴를 클릭할 때만 알림 | ||||||
|  |             End If | ||||||
|  |  | ||||||
|  |         Catch ex As Exception | ||||||
|  |             Debug.WriteLine("WebView2 체크 중 오류: " & ex.Message) | ||||||
|  |         End Try | ||||||
|  |     End Sub | ||||||
| End Class | End Class | ||||||
| @@ -57,6 +57,161 @@ | |||||||
|     Public DSHistory As New DS2 |     Public DSHistory As New DS2 | ||||||
|     Public Importsameaddress As Boolean = False |     Public Importsameaddress As Boolean = False | ||||||
|  |  | ||||||
|  |     Public Sub Update_열관류율_140409() | ||||||
|  |         DSET1.tbl_yk.AcceptChanges() | ||||||
|  |  | ||||||
|  |         For Each DrowYK As DS.tbl_ykRow In DSET1.tbl_yk | ||||||
|  |  | ||||||
|  |             If DrowYK.RowState = DataRowState.Deleted OrElse DrowYK.RowState = DataRowState.Detached Then Continue For | ||||||
|  |  | ||||||
|  |             Dim R_value As Decimal = 0 | ||||||
|  |             Dim width As Decimal = 0 | ||||||
|  |             Dim filter As String = "pcode='" + DrowYK.code + "'" | ||||||
|  |             For Each Dr As DS.tbl_ykdetailRow In DSET1.tbl_ykdetail.Select(filter, "") | ||||||
|  |                 If Dr.설명 = "공기층" Then | ||||||
|  |                     Dr.열전도율 = "" | ||||||
|  |                     If TOSG(Dr.두께) > 10.0 Then | ||||||
|  |                         Dr.열저항 = TOST(0.086) | ||||||
|  |                         R_value += 0.086 | ||||||
|  |                     Else | ||||||
|  |                         Dr.열저항 = TOST(TOSG(Dr.두께) * 0.0086) | ||||||
|  |                         R_value = R_value + TOSG(Dr.두께) * 0.0086 | ||||||
|  |                     End If | ||||||
|  |                 Else  '//여기아래 추가하신거에요? | ||||||
|  |  | ||||||
|  |                     If Dr.설명.IndexOf("열전달저항") <> -1 Then | ||||||
|  |                         Dr.두께 = "" | ||||||
|  |                         Dr.열전도율 = "" | ||||||
|  |                         Select Case Dr.설명 | ||||||
|  |                             Case "실내열전달저항(벽체)" | ||||||
|  |                                 Dr.열저항 = TOST(0.11) | ||||||
|  |                                 R_value += 0.11 | ||||||
|  |                             Case "실외열전달저항(벽체,간접)" | ||||||
|  |                                 Dr.열저항 = TOST(0.11) | ||||||
|  |                                 R_value += 0.11 | ||||||
|  |                             Case "실외열전달저항(벽체,직접)" | ||||||
|  |                                 Dr.열저항 = TOST(0.043) | ||||||
|  |                                 R_value += 0.043 | ||||||
|  |                             Case "실내열전달저항(바닥)" | ||||||
|  |                                 Dr.열저항 = TOST(0.086) | ||||||
|  |                                 R_value += 0.086 | ||||||
|  |                             Case "실외열전달저항(바닥,간접)" | ||||||
|  |                                 Dr.열저항 = TOST(0.15) | ||||||
|  |                                 R_value += 0.15 | ||||||
|  |                             Case "실외열전달저항(바닥,직접)" | ||||||
|  |                                 Dr.열저항 = TOST(0.043) | ||||||
|  |                                 R_value += 0.043 | ||||||
|  |                             Case "실내열전달저항(지붕)" | ||||||
|  |                                 Dr.열저항 = TOST(0.086) | ||||||
|  |                                 R_value += 0.086 | ||||||
|  |                             Case "실외열전달저항(지붕,간접)" | ||||||
|  |                                 Dr.열저항 = TOST(0.086) | ||||||
|  |                                 R_value += 0.086 | ||||||
|  |                             Case "실외열전달저항(지붕,직접)" | ||||||
|  |                                 Dr.열저항 = TOST(0.043) | ||||||
|  |                                 R_value += 0.043 | ||||||
|  |  | ||||||
|  |                         End Select | ||||||
|  |  | ||||||
|  |                     Else | ||||||
|  |                         If Dr.열전도율 <> "" AndAlso TOSG(Dr.열전도율) <> 0 Then | ||||||
|  |                             Dr.열저항 = TOSG(Math.Round(TOSG(Dr.두께) / 1000 / TOSG(Dr.열전도율), 4)).ToString | ||||||
|  |                             R_value += TOSG(Dr.열저항)  '//여부분에서는 나올수잇겟군요.?예 | ||||||
|  |                         End If | ||||||
|  |  | ||||||
|  |                     End If | ||||||
|  |  | ||||||
|  |                 End If | ||||||
|  |  | ||||||
|  |  | ||||||
|  |                 If Dr.설명.IndexOf("열전달저항") = -1 Then | ||||||
|  |                     width += TOSG(Dr.두께) | ||||||
|  |                 End If | ||||||
|  |             Next | ||||||
|  |  | ||||||
|  |             Try | ||||||
|  |                 If DrowYK.면형태 = "0" Then | ||||||
|  |                     DrowYK.열관류율 = CSng(Math.Round(1 / R_value, 3)).ToString | ||||||
|  |                     DrowYK.투과율 = "" | ||||||
|  |                 Else | ||||||
|  |                     Dim 면형태 As DS.tbl_commonRow = DSET1.tbl_common.Select("gubun='1088' and code='" + DrowYK.면형태 + "'")(0) | ||||||
|  |                     If 면형태.name = "외부창" OrElse 면형태.name = "내부창" Then | ||||||
|  |                         If DrowYK.발코니창호여부 Then | ||||||
|  |                             DrowYK.열관류율 = Math.Round((1 / ((1 / TOSG(DrowYK.창호열관류율)) + (1 / TOSG(DrowYK.발코니창호열관류율)) * 0.5)), 3) | ||||||
|  |                             DrowYK.투과율 = Math.Round(TOSG(DrowYK.발코니투과율) * TOSG(DrowYK.일사에너지투과율), 3) | ||||||
|  |                         Else | ||||||
|  |                             DrowYK.열관류율 = DrowYK.창호열관류율 | ||||||
|  |                             DrowYK.투과율 = DrowYK.일사에너지투과율 | ||||||
|  |                         End If | ||||||
|  |                     Else | ||||||
|  |                         DrowYK.열관류율 = CSng(Math.Round(1 / R_value, 3)).ToString | ||||||
|  |                         DrowYK.투과율 = "" | ||||||
|  |                     End If | ||||||
|  |                 End If | ||||||
|  |  | ||||||
|  |             Catch ex As Exception | ||||||
|  |                 DrowYK.열관류율 = "" | ||||||
|  |                 DrowYK.투과율 = "" | ||||||
|  |             End Try | ||||||
|  |  | ||||||
|  |         Next | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         '//열관류율이 링크된 모든면의 건축부위 데이터를 열관류율 화면의 건축부위 데이터로 갱신 | ||||||
|  |         For Each Drow As DS.tbl_myounRow In DSET1.tbl_myoun | ||||||
|  |  | ||||||
|  |             If Drow.RowState = DataRowState.Deleted OrElse Drow.RowState = DataRowState.Detached Then Continue For | ||||||
|  |  | ||||||
|  | #If DEBUG Then | ||||||
|  |             If Drow.code = "0009" Then | ||||||
|  |                 MsgBox("test") | ||||||
|  |             End If | ||||||
|  | #End If | ||||||
|  |  | ||||||
|  |             If Drow.열관류율2 <> "0" Then | ||||||
|  |                 Try   '==========================================2014.04.17 열관류율 삭제시 코드번호가 남아 오류 발생하는 현상을 try 안으로 넣음 | ||||||
|  |                     Dim Dr As DS.tbl_ykRow = DSET1.tbl_yk.Select("code='" & Drow.열관류율2.ToString & "'")(0) | ||||||
|  |                     Drow.건축부위방식 = Dr.면형태    '// 링크된 열관류율에서 면형태를 가져옴.. | ||||||
|  |                     Select Case Dr.면형태 | ||||||
|  |                         Case "외벽(벽체)", "0" | ||||||
|  |                             Drow.건축부위방식 = "외벽" | ||||||
|  |                         Case "외벽(지붕)", "0001" | ||||||
|  |                             Drow.건축부위방식 = "외벽" | ||||||
|  |                             'Drow.방위 = "수평" | ||||||
|  |                         Case "외벽(바닥)", "0002" | ||||||
|  |                             Drow.건축부위방식 = "외벽" | ||||||
|  |                             'Drow.방위 = "일사없음" | ||||||
|  |                         Case "내벽(벽체)", "0003", "지중벽", "0009" | ||||||
|  |                             Drow.건축부위방식 = "내벽" | ||||||
|  |                             Drow.방위 = "일사없음" | ||||||
|  |                         Case "내벽(지붕)", "0004" | ||||||
|  |                             Drow.건축부위방식 = "내벽" | ||||||
|  |                             Drow.방위 = "일사없음" | ||||||
|  |                         Case "내벽(바닥)", "0005" | ||||||
|  |                             Drow.건축부위방식 = "내벽" | ||||||
|  |                             Drow.방위 = "일사없음" | ||||||
|  |                         Case "간벽", "0006" | ||||||
|  |                             Drow.건축부위방식 = "간벽" | ||||||
|  |                             Drow.방위 = "일사없음" | ||||||
|  |                         Case "외부창", "0007" | ||||||
|  |                             Drow.건축부위방식 = "외부창" | ||||||
|  |                             'Drow.투과율 = Dr.일사에너지투과율 | ||||||
|  |                         Case "내부창", "0008" | ||||||
|  |                             Drow.건축부위방식 = "내부창" | ||||||
|  |                             'Drow.투과율 = Dr.일사에너지투과율 | ||||||
|  |                         Case Else | ||||||
|  |                             MsgBox("모르는값 " & Dr("면형태").ToString & "/" & Dr.면형태) | ||||||
|  |                     End Select | ||||||
|  |  | ||||||
|  |                 Catch ex As Exception | ||||||
|  |  | ||||||
|  |                 End Try | ||||||
|  |             End If | ||||||
|  |  | ||||||
|  |         Next | ||||||
|  |     End Sub | ||||||
|  |  | ||||||
|     Public Function 프로필급탕요구량(면적별범위 As Char) As Decimal |     Public Function 프로필급탕요구량(면적별범위 As Char) As Decimal | ||||||
|         'Drow프로필.일일급탕요구량() |         'Drow프로필.일일급탕요구량() | ||||||
|  |  | ||||||
|   | |||||||
| @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices | |||||||
| ' 지정되도록 할 수 있습니다. | ' 지정되도록 할 수 있습니다. | ||||||
| ' <Assembly: AssemblyVersion("1.0.*")>  | ' <Assembly: AssemblyVersion("1.0.*")>  | ||||||
|  |  | ||||||
| <Assembly: AssemblyVersion("1.2017.0122.1009")>  | <Assembly: AssemblyVersion("1.2017.0122.1014")>  | ||||||
| <Assembly: AssemblyFileVersion("1.2017.0122.1009")>  | <Assembly: AssemblyFileVersion("1.2017.0122.1014")>  | ||||||
|   | |||||||
							
								
								
									
										244
									
								
								ArinWarev1/WebServer/Example_WebServer_Usage.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										244
									
								
								ArinWarev1/WebServer/Example_WebServer_Usage.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,244 @@ | |||||||
|  | ' OWIN 정적 파일 호스팅 서버 사용 예제 | ||||||
|  | ' | ||||||
|  | ' 이 파일은 StaticFileServer를 사용하는 방법을 보여줍니다. | ||||||
|  | ' 실제 사용 시에는 MdiMain.vb 또는 필요한 폼에서 사용하세요. | ||||||
|  |  | ||||||
|  | Imports Eco2Ar.WebServer | ||||||
|  | Imports System.IO | ||||||
|  |  | ||||||
|  | Namespace Examples | ||||||
|  |  | ||||||
|  |     ''' <summary> | ||||||
|  |     ''' 웹 서버 사용 예제 | ||||||
|  |     ''' </summary> | ||||||
|  |     Public Class WebServerExample | ||||||
|  |  | ||||||
|  |         Private server As StaticFileServer | ||||||
|  |  | ||||||
|  |         ''' <summary> | ||||||
|  |         ''' 예제 1: 기본 사용법 | ||||||
|  |         ''' </summary> | ||||||
|  |         Public Sub Example1_BasicUsage() | ||||||
|  |             ' 1. 정적 파일을 서빙할 디렉토리 경로 설정 | ||||||
|  |             Dim wwwrootPath As String = Path.Combine(Application.StartupPath, "wwwroot") | ||||||
|  |  | ||||||
|  |             ' 2. 서버 인스턴스 생성 (포트 58123 사용) | ||||||
|  |             server = New StaticFileServer(wwwrootPath, 58123) | ||||||
|  |  | ||||||
|  |             ' 3. 서버 시작 | ||||||
|  |             server.Start() | ||||||
|  |  | ||||||
|  |             ' 4. 브라우저에서 열기 (선택사항) | ||||||
|  |             ' server.OpenInBrowser() | ||||||
|  |  | ||||||
|  |             MsgBox("웹 서버가 시작되었습니다." & vbCrLf & _ | ||||||
|  |                    "URL: " & server.BaseUrl & vbCrLf & _ | ||||||
|  |                    "루트 경로: " & server.RootPath, _ | ||||||
|  |                    MsgBoxStyle.Information, "웹 서버") | ||||||
|  |         End Sub | ||||||
|  |  | ||||||
|  |         ''' <summary> | ||||||
|  |         ''' 예제 2: MdiMain에서 사용 (프로그램 시작 시 서버 시작) | ||||||
|  |         ''' </summary> | ||||||
|  |         Public Sub Example2_IntegrationWithMdiMain() | ||||||
|  |             ' MdiMain.vb의 MdiMain_Load 이벤트에 추가: | ||||||
|  |             ' | ||||||
|  |             ' Private webServer As StaticFileServer | ||||||
|  |             ' | ||||||
|  |             ' Private Sub MdiMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load | ||||||
|  |             '     ' ... 기존 코드 ... | ||||||
|  |             ' | ||||||
|  |             '     Try | ||||||
|  |             '         ' 웹 서버 초기화 및 시작 | ||||||
|  |             '         Dim wwwPath = Path.Combine(Application.StartupPath, "wwwroot") | ||||||
|  |             '         webServer = New StaticFileServer(wwwPath) | ||||||
|  |             '         webServer.Start() | ||||||
|  |             '     Catch ex As Exception | ||||||
|  |             '         ' 웹 서버 시작 실패해도 프로그램은 계속 실행 | ||||||
|  |             '         Debug.WriteLine("웹 서버 시작 실패: " & ex.Message) | ||||||
|  |             '     End Try | ||||||
|  |             ' End Sub | ||||||
|  |             ' | ||||||
|  |             ' Private Sub MdiMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing | ||||||
|  |             '     ' ... 기존 코드 ... | ||||||
|  |             ' | ||||||
|  |             '     ' 웹 서버 정리 | ||||||
|  |             '     If webServer IsNot Nothing Then | ||||||
|  |             '         webServer.Stop() | ||||||
|  |             '         webServer.Dispose() | ||||||
|  |             '     End If | ||||||
|  |             ' End Sub | ||||||
|  |         End Sub | ||||||
|  |  | ||||||
|  |         ''' <summary> | ||||||
|  |         ''' 예제 3: 특정 파일 브라우저에서 열기 | ||||||
|  |         ''' </summary> | ||||||
|  |         Public Sub Example3_OpenSpecificFile() | ||||||
|  |             If server Is Nothing OrElse Not server.IsRunning Then | ||||||
|  |                 MsgBox("서버가 실행 중이 아닙니다.", MsgBoxStyle.Exclamation, "오류") | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |  | ||||||
|  |             ' 리포트 HTML 파일 열기 | ||||||
|  |             server.OpenFileInBrowser("report.html") | ||||||
|  |  | ||||||
|  |             ' 또는 URL만 가져오기 | ||||||
|  |             Dim reportUrl As String = server.GetFileUrl("reports/2025/report.html") | ||||||
|  |             MsgBox("리포트 URL: " & reportUrl, MsgBoxStyle.Information, "URL") | ||||||
|  |         End Sub | ||||||
|  |  | ||||||
|  |         ''' <summary> | ||||||
|  |         ''' 예제 4: 동적으로 HTML 파일 생성 후 표시 | ||||||
|  |         ''' </summary> | ||||||
|  |         Public Sub Example4_GenerateAndDisplay() | ||||||
|  |             If server Is Nothing OrElse Not server.IsRunning Then | ||||||
|  |                 MsgBox("서버가 실행 중이 아닙니다.", MsgBoxStyle.Exclamation, "오류") | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |  | ||||||
|  |             ' HTML 파일 생성 | ||||||
|  |             Dim htmlContent As String = "<!DOCTYPE html>" & vbCrLf & _ | ||||||
|  |                 "<html>" & vbCrLf & _ | ||||||
|  |                 "<head>" & vbCrLf & _ | ||||||
|  |                 "    <meta charset=""utf-8"">" & vbCrLf & _ | ||||||
|  |                 "    <title>ECO2 리포트</title>" & vbCrLf & _ | ||||||
|  |                 "    <style>" & vbCrLf & _ | ||||||
|  |                 "        body { font-family: 'Malgun Gothic', sans-serif; margin: 20px; }" & vbCrLf & _ | ||||||
|  |                 "        h1 { color: #2c3e50; }" & vbCrLf & _ | ||||||
|  |                 "        table { border-collapse: collapse; width: 100%; }" & vbCrLf & _ | ||||||
|  |                 "        th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }" & vbCrLf & _ | ||||||
|  |                 "        th { background-color: #4CAF50; color: white; }" & vbCrLf & _ | ||||||
|  |                 "    </style>" & vbCrLf & _ | ||||||
|  |                 "</head>" & vbCrLf & _ | ||||||
|  |                 "<body>" & vbCrLf & _ | ||||||
|  |                 "    <h1>건물 에너지 분석 리포트</h1>" & vbCrLf & _ | ||||||
|  |                 "    <table>" & vbCrLf & _ | ||||||
|  |                 "        <tr><th>항목</th><th>값</th></tr>" & vbCrLf & _ | ||||||
|  |                 "        <tr><td>1차 에너지 소요량</td><td>123.45 kWh/m²·year</td></tr>" & vbCrLf & _ | ||||||
|  |                 "        <tr><td>CO2 배출량</td><td>45.67 kg/m²·year</td></tr>" & vbCrLf & _ | ||||||
|  |                 "    </table>" & vbCrLf & _ | ||||||
|  |                 "</body>" & vbCrLf & _ | ||||||
|  |                 "</html>" | ||||||
|  |  | ||||||
|  |             ' 파일 저장 | ||||||
|  |             Dim reportPath As String = Path.Combine(server.RootPath, "report.html") | ||||||
|  |             File.WriteAllText(reportPath, htmlContent, System.Text.Encoding.UTF8) | ||||||
|  |  | ||||||
|  |             ' 브라우저에서 열기 | ||||||
|  |             server.OpenFileInBrowser("report.html") | ||||||
|  |         End Sub | ||||||
|  |  | ||||||
|  |         ''' <summary> | ||||||
|  |         ''' 예제 5: 폼 버튼에서 웹 리포트 생성 및 표시 | ||||||
|  |         ''' </summary> | ||||||
|  |         Public Sub Example5_ButtonClick() | ||||||
|  |             ' 폼의 버튼 클릭 이벤트에 추가: | ||||||
|  |             ' | ||||||
|  |             ' Private Sub btnShowWebReport_Click(sender As Object, e As EventArgs) Handles btnShowWebReport.Click | ||||||
|  |             '     Try | ||||||
|  |             '         ' 서버가 실행 중이 아니면 시작 | ||||||
|  |             '         If webServer Is Nothing OrElse Not webServer.IsRunning Then | ||||||
|  |             '             Dim wwwPath = Path.Combine(Application.StartupPath, "wwwroot") | ||||||
|  |             '             webServer = New StaticFileServer(wwwPath) | ||||||
|  |             '             webServer.Start() | ||||||
|  |             '         End If | ||||||
|  |             ' | ||||||
|  |             '         ' HTML 리포트 생성 | ||||||
|  |             '         GenerateHtmlReport() | ||||||
|  |             ' | ||||||
|  |             '         ' 브라우저에서 열기 | ||||||
|  |             '         webServer.OpenFileInBrowser("report.html") | ||||||
|  |             '     Catch ex As Exception | ||||||
|  |             '         MsgBox("리포트 생성 실패: " & ex.Message, MsgBoxStyle.Critical, "오류") | ||||||
|  |             '     End Try | ||||||
|  |             ' End Sub | ||||||
|  |             ' | ||||||
|  |             ' Private Sub GenerateHtmlReport() | ||||||
|  |             '     ' 실제 데이터를 사용하여 HTML 생성 | ||||||
|  |             '     Dim html As String = BuildHtmlReport(DSET1, DSETR1, Result2) | ||||||
|  |             '     Dim path As String = Path.Combine(webServer.RootPath, "report.html") | ||||||
|  |             '     File.WriteAllText(path, html, System.Text.Encoding.UTF8) | ||||||
|  |             ' End Sub | ||||||
|  |         End Sub | ||||||
|  |  | ||||||
|  |         ''' <summary> | ||||||
|  |         ''' 서버 중지 | ||||||
|  |         ''' </summary> | ||||||
|  |         Public Sub StopServer() | ||||||
|  |             If server IsNot Nothing Then | ||||||
|  |                 server.Stop() | ||||||
|  |                 server.Dispose() | ||||||
|  |                 server = Nothing | ||||||
|  |             End If | ||||||
|  |         End Sub | ||||||
|  |  | ||||||
|  |     End Class | ||||||
|  |  | ||||||
|  |     ''' <summary> | ||||||
|  |     ''' 간단한 HTML 빌더 헬퍼 클래스 | ||||||
|  |     ''' </summary> | ||||||
|  |     Public Class HtmlReportBuilder | ||||||
|  |  | ||||||
|  |         Private html As System.Text.StringBuilder | ||||||
|  |  | ||||||
|  |         Public Sub New(title As String) | ||||||
|  |             html = New System.Text.StringBuilder() | ||||||
|  |             html.AppendLine("<!DOCTYPE html>") | ||||||
|  |             html.AppendLine("<html>") | ||||||
|  |             html.AppendLine("<head>") | ||||||
|  |             html.AppendLine("    <meta charset=""utf-8"">") | ||||||
|  |             html.AppendLine("    <title>" & title & "</title>") | ||||||
|  |             html.AppendLine("    <style>") | ||||||
|  |             html.AppendLine("        body { font-family: 'Malgun Gothic', sans-serif; margin: 20px; }") | ||||||
|  |             html.AppendLine("        h1 { color: #2c3e50; }") | ||||||
|  |             html.AppendLine("        h2 { color: #34495e; border-bottom: 2px solid #3498db; padding-bottom: 5px; }") | ||||||
|  |             html.AppendLine("        table { border-collapse: collapse; width: 100%; margin: 20px 0; }") | ||||||
|  |             html.AppendLine("        th, td { border: 1px solid #ddd; padding: 12px; text-align: left; }") | ||||||
|  |             html.AppendLine("        th { background-color: #4CAF50; color: white; }") | ||||||
|  |             html.AppendLine("        tr:nth-child(even) { background-color: #f2f2f2; }") | ||||||
|  |             html.AppendLine("        .section { margin: 30px 0; }") | ||||||
|  |             html.AppendLine("    </style>") | ||||||
|  |             html.AppendLine("</head>") | ||||||
|  |             html.AppendLine("<body>") | ||||||
|  |             html.AppendLine("    <h1>" & title & "</h1>") | ||||||
|  |         End Sub | ||||||
|  |  | ||||||
|  |         Public Sub AddSection(sectionTitle As String) | ||||||
|  |             html.AppendLine("    <div class=""section"">") | ||||||
|  |             html.AppendLine("        <h2>" & sectionTitle & "</h2>") | ||||||
|  |         End Sub | ||||||
|  |  | ||||||
|  |         Public Sub StartTable(ParamArray headers As String()) | ||||||
|  |             html.AppendLine("        <table>") | ||||||
|  |             html.Append("            <tr>") | ||||||
|  |             For Each headerItem As String In headers | ||||||
|  |                 html.Append("<th>" & headerItem & "</th>") | ||||||
|  |             Next | ||||||
|  |             html.AppendLine("</tr>") | ||||||
|  |         End Sub | ||||||
|  |  | ||||||
|  |         Public Sub AddRow(ParamArray cells As String()) | ||||||
|  |             html.Append("            <tr>") | ||||||
|  |             For Each cellItem As String In cells | ||||||
|  |                 html.Append("<td>" & cellItem & "</td>") | ||||||
|  |             Next | ||||||
|  |             html.AppendLine("</tr>") | ||||||
|  |         End Sub | ||||||
|  |  | ||||||
|  |         Public Sub EndTable() | ||||||
|  |             html.AppendLine("        </table>") | ||||||
|  |         End Sub | ||||||
|  |  | ||||||
|  |         Public Sub EndSection() | ||||||
|  |             html.AppendLine("    </div>") | ||||||
|  |         End Sub | ||||||
|  |  | ||||||
|  |         Public Function Build() As String | ||||||
|  |             html.AppendLine("</body>") | ||||||
|  |             html.AppendLine("</html>") | ||||||
|  |             Return html.ToString() | ||||||
|  |         End Function | ||||||
|  |  | ||||||
|  |     End Class | ||||||
|  |  | ||||||
|  | End Namespace | ||||||
							
								
								
									
										50
									
								
								ArinWarev1/WebServer/INSTALL.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								ArinWarev1/WebServer/INSTALL.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | |||||||
|  | ===================================================== | ||||||
|  | OWIN 정적 파일 호스팅 서버 설치 가이드 | ||||||
|  | ===================================================== | ||||||
|  |  | ||||||
|  | 1. Visual Studio에서 ECO2_2025V1 프로젝트 열기 | ||||||
|  |  | ||||||
|  | 2. 메뉴: 도구 > NuGet 패키지 관리자 > 패키지 관리자 콘솔 | ||||||
|  |  | ||||||
|  | 3. 다음 명령들을 순서대로 실행: | ||||||
|  |  | ||||||
|  |    Install-Package Owin -Version 1.0 | ||||||
|  |    Install-Package Microsoft.Owin -Version 2.1.0 | ||||||
|  |    Install-Package Microsoft.Owin.Host.HttpListener -Version 2.1.0 | ||||||
|  |    Install-Package Microsoft.Owin.Hosting -Version 2.1.0 | ||||||
|  |    Install-Package Microsoft.Owin.StaticFiles -Version 2.1.0 | ||||||
|  |  | ||||||
|  | 4. 프로젝트 다시 빌드 | ||||||
|  |  | ||||||
|  | 5. wwwroot 폴더 생성 (없는 경우): | ||||||
|  |    - 출력 디렉토리에 wwwroot 폴더 생성 | ||||||
|  |    - Debug: ..\..\..\..\..\eco2\debug_2016\wwwroot | ||||||
|  |    - Release: c:\eco2\debug_2016\wwwroot | ||||||
|  |  | ||||||
|  | 6. 기본 index.html 생성 (선택사항): | ||||||
|  |    wwwroot\index.html 파일에 다음 내용 추가: | ||||||
|  |  | ||||||
|  |    <!DOCTYPE html> | ||||||
|  |    <html> | ||||||
|  |    <head> | ||||||
|  |        <meta charset="utf-8"> | ||||||
|  |        <title>ECO2 Web Server</title> | ||||||
|  |    </head> | ||||||
|  |    <body> | ||||||
|  |        <h1>ECO2 웹 서버가 정상 작동 중입니다</h1> | ||||||
|  |    </body> | ||||||
|  |    </html> | ||||||
|  |  | ||||||
|  | 7. 사용 예제는 Example_WebServer_Usage.vb 참고 | ||||||
|  |  | ||||||
|  | 8. 관리자 권한 필요 시 (선택사항): | ||||||
|  |  | ||||||
|  |    관리자 권한 명령 프롬프트에서: | ||||||
|  |    netsh http add urlacl url=http://+:58123/ user=Everyone | ||||||
|  |  | ||||||
|  | ===================================================== | ||||||
|  | 문제 발생 시: | ||||||
|  | - README.md의 "문제 해결" 섹션 참고 | ||||||
|  | - 패키지 버전이 정확한지 확인 (2.1.0) | ||||||
|  | - .NET Framework 4.0 타겟이 맞는지 확인 | ||||||
|  | ===================================================== | ||||||
							
								
								
									
										126
									
								
								ArinWarev1/WebServer/MANUAL_INSTALL.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										126
									
								
								ArinWarev1/WebServer/MANUAL_INSTALL.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,126 @@ | |||||||
|  | # Visual Studio 2010 수동 설치 가이드 | ||||||
|  |  | ||||||
|  | VS2010에는 NuGet이 기본 내장되어 있지 않으므로, 두 가지 방법 중 선택할 수 있습니다. | ||||||
|  |  | ||||||
|  | ## 방법 1: NuGet Extension 설치 (권장) | ||||||
|  |  | ||||||
|  | 1. Visual Studio 2010 열기 | ||||||
|  | 2. **도구** > **확장 관리자** 클릭 | ||||||
|  | 3. **온라인 갤러리** 선택 | ||||||
|  | 4. 검색창에 "NuGet Package Manager" 입력 | ||||||
|  | 5. **NuGet Package Manager** 찾아서 **다운로드** 클릭 | ||||||
|  | 6. 설치 후 Visual Studio 재시작 | ||||||
|  | 7. 이후 README.md의 NuGet 설치 방법 따라하기 | ||||||
|  |  | ||||||
|  | 또는 직접 다운로드: | ||||||
|  | https://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c | ||||||
|  |  | ||||||
|  | ## 방법 2: DLL 수동 추가 (NuGet 없이) | ||||||
|  |  | ||||||
|  | ### 1단계: 필요한 DLL 다운로드 | ||||||
|  |  | ||||||
|  | 다음 NuGet 패키지를 직접 다운로드: | ||||||
|  |  | ||||||
|  | **다운로드 링크:** | ||||||
|  | - https://www.nuget.org/packages/Owin/1.0 | ||||||
|  | - https://www.nuget.org/packages/Microsoft.Owin/2.1.0 | ||||||
|  | - https://www.nuget.org/packages/Microsoft.Owin.Host.HttpListener/2.1.0 | ||||||
|  | - https://www.nuget.org/packages/Microsoft.Owin.Hosting/2.1.0 | ||||||
|  | - https://www.nuget.org/packages/Microsoft.Owin.StaticFiles/2.1.0 | ||||||
|  | - https://www.nuget.org/packages/Microsoft.Owin.FileSystems/2.1.0 | ||||||
|  |  | ||||||
|  | 각 페이지에서 "Download package" 클릭 | ||||||
|  |  | ||||||
|  | ### 2단계: NuGet 패키지에서 DLL 추출 | ||||||
|  |  | ||||||
|  | 1. 다운로드한 `.nupkg` 파일의 확장자를 `.zip`으로 변경 | ||||||
|  | 2. 압축 해제 | ||||||
|  | 3. `lib\net40\` 폴더에서 DLL 파일 찾기 | ||||||
|  | 4. 프로젝트 폴더에 `lib` 디렉토리 생성 | ||||||
|  | 5. 모든 DLL을 `S:\Source\KICT\ECO2\lib\` 폴더에 복사 | ||||||
|  |  | ||||||
|  | **필요한 DLL 목록:** | ||||||
|  | - Owin.dll | ||||||
|  | - Microsoft.Owin.dll | ||||||
|  | - Microsoft.Owin.Host.HttpListener.dll | ||||||
|  | - Microsoft.Owin.Hosting.dll | ||||||
|  | - Microsoft.Owin.StaticFiles.dll | ||||||
|  | - Microsoft.Owin.FileSystems.dll | ||||||
|  |  | ||||||
|  | ### 3단계: Visual Studio 프로젝트에 참조 추가 | ||||||
|  |  | ||||||
|  | 1. 솔루션 탐색기에서 **ECO2_2025V1** 프로젝트 선택 | ||||||
|  | 2. **참조** 폴더 우클릭 > **참조 추가** | ||||||
|  | 3. **찾아보기** 탭 선택 | ||||||
|  | 4. `S:\Source\KICT\ECO2\lib\` 폴더로 이동 | ||||||
|  | 5. 위의 모든 DLL 선택하여 추가 | ||||||
|  |  | ||||||
|  | ### 4단계: app.config에 바인딩 리디렉션 추가 | ||||||
|  |  | ||||||
|  | `ArinWarev1\app.config` 파일을 열고 `</configuration>` 바로 앞에 추가: | ||||||
|  |  | ||||||
|  | ```xml | ||||||
|  | <runtime> | ||||||
|  |   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> | ||||||
|  |     <dependentAssembly> | ||||||
|  |       <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" /> | ||||||
|  |       <bindingRedirect oldVersion="0.0.0.0-2.1.0.0" newVersion="2.1.0.0" /> | ||||||
|  |     </dependentAssembly> | ||||||
|  |   </assemblyBinding> | ||||||
|  | </runtime> | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ## 방법 3: 스크립트로 자동 다운로드 (PowerShell) | ||||||
|  |  | ||||||
|  | 프로젝트 루트에서 PowerShell 실행: | ||||||
|  |  | ||||||
|  | ```powershell | ||||||
|  | # lib 폴더 생성 | ||||||
|  | New-Item -ItemType Directory -Force -Path "lib" | ||||||
|  |  | ||||||
|  | # NuGet.exe 다운로드 | ||||||
|  | Invoke-WebRequest -Uri "https://dist.nuget.org/win-x86-commandline/v2.8.6/nuget.exe" -OutFile "nuget.exe" | ||||||
|  |  | ||||||
|  | # 패키지 다운로드 | ||||||
|  | .\nuget.exe install Owin -Version 1.0 -OutputDirectory packages | ||||||
|  | .\nuget.exe install Microsoft.Owin -Version 2.1.0 -OutputDirectory packages | ||||||
|  | .\nuget.exe install Microsoft.Owin.Host.HttpListener -Version 2.1.0 -OutputDirectory packages | ||||||
|  | .\nuget.exe install Microsoft.Owin.Hosting -Version 2.1.0 -OutputDirectory packages | ||||||
|  | .\nuget.exe install Microsoft.Owin.StaticFiles -Version 2.1.0 -OutputDirectory packages | ||||||
|  |  | ||||||
|  | # DLL 복사 | ||||||
|  | Copy-Item "packages\Owin.1.0\lib\net40\Owin.dll" -Destination "lib\" | ||||||
|  | Copy-Item "packages\Microsoft.Owin.2.1.0\lib\net40\Microsoft.Owin.dll" -Destination "lib\" | ||||||
|  | Copy-Item "packages\Microsoft.Owin.Host.HttpListener.2.1.0\lib\net40\Microsoft.Owin.Host.HttpListener.dll" -Destination "lib\" | ||||||
|  | Copy-Item "packages\Microsoft.Owin.Hosting.2.1.0\lib\net40\Microsoft.Owin.Hosting.dll" -Destination "lib\" | ||||||
|  | Copy-Item "packages\Microsoft.Owin.StaticFiles.2.1.0\lib\net40\Microsoft.Owin.StaticFiles.dll" -Destination "lib\" | ||||||
|  | Copy-Item "packages\Microsoft.Owin.FileSystems.2.1.0\lib\net40\Microsoft.Owin.FileSystems.dll" -Destination "lib\" | ||||||
|  |  | ||||||
|  | Write-Host "DLL 다운로드 완료! lib 폴더를 확인하세요." | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ## 방법 4: 미리 준비된 DLL 사용 | ||||||
|  |  | ||||||
|  | 팀원에게 이미 설치된 환경에서 다음 폴더의 DLL을 복사 받기: | ||||||
|  | - `packages\Owin.1.0\lib\net40\` | ||||||
|  | - `packages\Microsoft.Owin.2.1.0\lib\net40\` | ||||||
|  | - `packages\Microsoft.Owin.Host.HttpListener.2.1.0\lib\net40\` | ||||||
|  | - `packages\Microsoft.Owin.Hosting.2.1.0\lib\net40\` | ||||||
|  | - `packages\Microsoft.Owin.StaticFiles.2.1.0\lib\net40\` | ||||||
|  | - `packages\Microsoft.Owin.FileSystems.2.1.0\lib\net40\` | ||||||
|  |  | ||||||
|  | ## 확인 방법 | ||||||
|  |  | ||||||
|  | 프로젝트를 빌드했을 때 다음 오류가 없으면 성공: | ||||||
|  | - "형식 또는 네임스페이스 이름 'Owin'을 찾을 수 없습니다" | ||||||
|  | - "형식 또는 네임스페이스 이름 'Microsoft'을 찾을 수 없습니다" | ||||||
|  |  | ||||||
|  | ## 문제 해결 | ||||||
|  |  | ||||||
|  | ### "Could not load file or assembly" 오류 | ||||||
|  | - app.config에 바인딩 리디렉션 추가했는지 확인 | ||||||
|  | - DLL 버전이 2.1.0이 맞는지 확인 (2.x 버전만 .NET 4.0 호환) | ||||||
|  |  | ||||||
|  | ### "파일을 찾을 수 없습니다" 오류 | ||||||
|  | - 출력 디렉토리에 DLL이 복사되는지 확인 | ||||||
|  | - 참조의 "로컬 복사" 속성이 True인지 확인 | ||||||
							
								
								
									
										190
									
								
								ArinWarev1/WebServer/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										190
									
								
								ArinWarev1/WebServer/README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,190 @@ | |||||||
|  | # OWIN 정적 파일 호스팅 서버 | ||||||
|  |  | ||||||
|  | ECO2 프로젝트에 OWIN 기반 내장 웹 서버를 추가하여 HTML 리포트 및 정적 파일을 호스팅할 수 있습니다. | ||||||
|  |  | ||||||
|  | ## 설치 방법 | ||||||
|  |  | ||||||
|  | ### 1. NuGet 패키지 설치 | ||||||
|  |  | ||||||
|  | Visual Studio에서 Package Manager Console을 열고 다음 명령을 실행하세요: | ||||||
|  |  | ||||||
|  | ```powershell | ||||||
|  | # ECO2_2025V1 프로젝트를 기본 프로젝트로 선택 후 실행 | ||||||
|  |  | ||||||
|  | Install-Package Microsoft.Owin -Version 2.1.0 | ||||||
|  | Install-Package Microsoft.Owin.Host.HttpListener -Version 2.1.0 | ||||||
|  | Install-Package Microsoft.Owin.Hosting -Version 2.1.0 | ||||||
|  | Install-Package Microsoft.Owin.StaticFiles -Version 2.1.0 | ||||||
|  | Install-Package Owin -Version 1.0 | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | 또는 패키지 관리자 UI에서 다음 패키지를 검색하여 설치: | ||||||
|  | - Microsoft.Owin (2.1.0) | ||||||
|  | - Microsoft.Owin.Host.HttpListener (2.1.0) | ||||||
|  | - Microsoft.Owin.Hosting (2.1.0) | ||||||
|  | - Microsoft.Owin.StaticFiles (2.1.0) | ||||||
|  | - Owin (1.0) | ||||||
|  |  | ||||||
|  | ### 2. 프로젝트에 파일 추가 | ||||||
|  |  | ||||||
|  | 다음 파일들이 `WebServer` 폴더에 추가되었습니다: | ||||||
|  | - `StaticFileServer.vb` - 메인 서버 클래스 | ||||||
|  | - `Startup.vb` - OWIN 시작 구성 | ||||||
|  | - `Example_WebServer_Usage.vb` - 사용 예제 | ||||||
|  |  | ||||||
|  | Visual Studio에서 프로젝트를 다시 로드하면 자동으로 인식됩니다. | ||||||
|  |  | ||||||
|  | ## 사용 방법 | ||||||
|  |  | ||||||
|  | ### 기본 사용법 | ||||||
|  |  | ||||||
|  | ```vb | ||||||
|  | Imports Eco2Ar.WebServer | ||||||
|  | Imports System.IO | ||||||
|  |  | ||||||
|  | ' 1. 서버 인스턴스 생성 | ||||||
|  | Dim wwwrootPath As String = Path.Combine(Application.StartupPath, "wwwroot") | ||||||
|  | Dim server As New StaticFileServer(wwwrootPath, 58123) | ||||||
|  |  | ||||||
|  | ' 2. 서버 시작 | ||||||
|  | server.Start() | ||||||
|  |  | ||||||
|  | ' 3. 브라우저에서 열기 | ||||||
|  | server.OpenInBrowser() | ||||||
|  |  | ||||||
|  | ' 4. 사용 후 서버 중지 | ||||||
|  | server.Stop() | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ### MdiMain에 통합 | ||||||
|  |  | ||||||
|  | `MdiMain.vb`에 다음 코드를 추가: | ||||||
|  |  | ||||||
|  | ```vb | ||||||
|  | Public Class MdiMain | ||||||
|  |     Private webServer As StaticFileServer | ||||||
|  |  | ||||||
|  |     Private Sub MdiMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load | ||||||
|  |         ' ... 기존 코드 ... | ||||||
|  |  | ||||||
|  |         ' 웹 서버 시작 | ||||||
|  |         Try | ||||||
|  |             Dim wwwPath = Path.Combine(Application.StartupPath, "wwwroot") | ||||||
|  |             webServer = New StaticFileServer(wwwPath) | ||||||
|  |             webServer.Start() | ||||||
|  |         Catch ex As Exception | ||||||
|  |             Debug.WriteLine("웹 서버 시작 실패: " & ex.Message) | ||||||
|  |         End Try | ||||||
|  |     End Sub | ||||||
|  |  | ||||||
|  |     Private Sub MdiMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing | ||||||
|  |         ' ... 기존 코드 ... | ||||||
|  |  | ||||||
|  |         ' 웹 서버 정리 | ||||||
|  |         If webServer IsNot Nothing Then | ||||||
|  |             webServer.Stop() | ||||||
|  |             webServer.Dispose() | ||||||
|  |         End If | ||||||
|  |     End Sub | ||||||
|  | End Class | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ### HTML 리포트 생성 및 표시 | ||||||
|  |  | ||||||
|  | ```vb | ||||||
|  | ' HTML 리포트 빌더 사용 | ||||||
|  | Dim builder As New HtmlReportBuilder("건물 에너지 분석 리포트") | ||||||
|  |  | ||||||
|  | builder.AddSection("1차 에너지 소요량") | ||||||
|  | builder.StartTable("항목", "값", "단위") | ||||||
|  | builder.AddRow("난방", "123.45", "kWh/m²·year") | ||||||
|  | builder.AddRow("냉방", "67.89", "kWh/m²·year") | ||||||
|  | builder.EndTable() | ||||||
|  | builder.EndSection() | ||||||
|  |  | ||||||
|  | Dim html As String = builder.Build() | ||||||
|  |  | ||||||
|  | ' 파일 저장 | ||||||
|  | Dim reportPath As String = Path.Combine(webServer.RootPath, "report.html") | ||||||
|  | File.WriteAllText(reportPath, html, System.Text.Encoding.UTF8) | ||||||
|  |  | ||||||
|  | ' 브라우저에서 열기 | ||||||
|  | webServer.OpenFileInBrowser("report.html") | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ## 폴더 구조 | ||||||
|  |  | ||||||
|  | ``` | ||||||
|  | C:\eco2\debug_2016\ | ||||||
|  | ├─ Eco2Ar.exe | ||||||
|  | └─ wwwroot\              # 정적 파일 루트 디렉토리 | ||||||
|  |    ├─ index.html         # 기본 페이지 | ||||||
|  |    ├─ report.html        # 생성된 리포트 | ||||||
|  |    ├─ css\ | ||||||
|  |    │  └─ styles.css | ||||||
|  |    ├─ js\ | ||||||
|  |    │  └─ scripts.js | ||||||
|  |    └─ images\ | ||||||
|  |       └─ logo.png | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ## 주요 기능 | ||||||
|  |  | ||||||
|  | ### StaticFileServer 클래스 | ||||||
|  |  | ||||||
|  | - **Start()** - 웹 서버 시작 | ||||||
|  | - **Stop()** - 웹 서버 중지 | ||||||
|  | - **OpenInBrowser()** - 기본 브라우저에서 루트 URL 열기 | ||||||
|  | - **OpenFileInBrowser(relativePath)** - 특정 파일을 브라우저에서 열기 | ||||||
|  | - **GetFileUrl(relativePath)** - 파일의 전체 URL 반환 | ||||||
|  | - **IsRunning** - 서버 실행 상태 확인 | ||||||
|  | - **BaseUrl** - 서버 URL (http://localhost:58123) | ||||||
|  | - **RootPath** - 정적 파일 루트 경로 | ||||||
|  |  | ||||||
|  | ### HtmlReportBuilder 클래스 | ||||||
|  |  | ||||||
|  | 간단한 HTML 리포트를 코드로 생성할 수 있는 헬퍼 클래스입니다. | ||||||
|  |  | ||||||
|  | ## 포트 정보 | ||||||
|  |  | ||||||
|  | - **기본 포트**: 58123 (일반적으로 사용하지 않는 포트) | ||||||
|  | - 필요 시 생성자에서 다른 포트 지정 가능: `New StaticFileServer(path, 9999)` | ||||||
|  |  | ||||||
|  | ## 보안 주의사항 | ||||||
|  |  | ||||||
|  | - 이 웹 서버는 **localhost**에서만 접근 가능합니다 (외부 접근 불가) | ||||||
|  | - 민감한 정보를 wwwroot에 저장하지 마세요 | ||||||
|  | - 필요한 경우에만 서버를 실행하고 사용 후 중지하세요 | ||||||
|  |  | ||||||
|  | ## 문제 해결 | ||||||
|  |  | ||||||
|  | ### "포트가 이미 사용 중입니다" 오류 | ||||||
|  |  | ||||||
|  | 다른 프로그램이 58123 포트를 사용 중일 수 있습니다. 다른 포트를 사용하세요: | ||||||
|  |  | ||||||
|  | ```vb | ||||||
|  | Dim server As New StaticFileServer(wwwrootPath, 58124) | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ### "관리자 권한이 필요합니다" 오류 | ||||||
|  |  | ||||||
|  | 일부 환경에서는 HTTP.sys 리스너 등록에 관리자 권한이 필요할 수 있습니다. | ||||||
|  | 다음 명령을 관리자 권한 명령 프롬프트에서 실행: | ||||||
|  |  | ||||||
|  | ```cmd | ||||||
|  | netsh http add urlacl url=http://+:58123/ user=Everyone | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ### 패키지 설치 오류 | ||||||
|  |  | ||||||
|  | .NET Framework 4.0 타겟 프로젝트이므로 반드시 2.x 버전의 OWIN 패키지를 사용해야 합니다. | ||||||
|  | 최신 버전(4.x)은 .NET Framework 4.5 이상이 필요합니다. | ||||||
|  |  | ||||||
|  | ## 예제 코드 위치 | ||||||
|  |  | ||||||
|  | 더 자세한 사용 예제는 `Example_WebServer_Usage.vb` 파일을 참고하세요. | ||||||
|  |  | ||||||
|  | ## 참고 자료 | ||||||
|  |  | ||||||
|  | - [OWIN 공식 문서](http://owin.org/) | ||||||
|  | - [Microsoft.Owin 문서](https://docs.microsoft.com/en-us/aspnet/aspnet/overview/owin-and-katana/) | ||||||
							
								
								
									
										93
									
								
								ArinWarev1/WebServer/Startup.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								ArinWarev1/WebServer/Startup.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,93 @@ | |||||||
|  | ' OWIN Startup 클래스 | ||||||
|  | Imports Owin | ||||||
|  | Imports Microsoft.Owin.StaticFiles | ||||||
|  | Imports Microsoft.Owin.FileSystems | ||||||
|  |  | ||||||
|  | Namespace WebServer | ||||||
|  |  | ||||||
|  |     ''' <summary> | ||||||
|  |     ''' OWIN 시작 구성 클래스 | ||||||
|  |     ''' </summary> | ||||||
|  |     Public Class Startup | ||||||
|  |  | ||||||
|  |         ' 정적 필드로 RootPath 저장 | ||||||
|  |         Public Shared RootPath As String = String.Empty | ||||||
|  |  | ||||||
|  |         ''' <summary> | ||||||
|  |         ''' OWIN 미들웨어 구성 | ||||||
|  |         ''' </summary> | ||||||
|  |         ''' <param name="app">App builder</param> | ||||||
|  |         Public Sub Configuration(app As IAppBuilder) | ||||||
|  |             ' 루트 경로 확인 | ||||||
|  |             If String.IsNullOrEmpty(RootPath) Then | ||||||
|  |                 RootPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot") | ||||||
|  |             End If | ||||||
|  |  | ||||||
|  |             ' 정적 파일 서빙을 위한 파일 시스템 설정 | ||||||
|  |             Dim fileSystem = New PhysicalFileSystem(RootPath) | ||||||
|  |  | ||||||
|  |             ' 정적 파일 옵션 설정 | ||||||
|  |             Dim options As New FileServerOptions() With { | ||||||
|  |                 .RequestPath = New Microsoft.Owin.PathString(""), | ||||||
|  |                 .FileSystem = fileSystem, | ||||||
|  |                 .EnableDirectoryBrowsing = False | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             ' MIME 타입 매핑 추가 (필요한 경우) | ||||||
|  |             options.StaticFileOptions.ContentTypeProvider = New CustomContentTypeProvider() | ||||||
|  |  | ||||||
|  |             ' 정적 파일 미들웨어 사용 | ||||||
|  |             app.UseFileServer(options) | ||||||
|  |  | ||||||
|  |             ' 기본 핸들러 (루트 경로 접근 시) | ||||||
|  |             app.Run(Function(context) | ||||||
|  |                         ' 루트 경로 접근 시 index.html로 리다이렉트 | ||||||
|  |                         If context.Request.Path.Value = "/" OrElse context.Request.Path.Value = "" Then | ||||||
|  |                             Dim indexPath = System.IO.Path.Combine(RootPath, "index.html") | ||||||
|  |                             If System.IO.File.Exists(indexPath) Then | ||||||
|  |                                 context.Response.Redirect("/index.html") | ||||||
|  |                             Else | ||||||
|  |                                 context.Response.StatusCode = 200 | ||||||
|  |                                 context.Response.ContentType = "text/html" | ||||||
|  |                                 Dim tcs = New System.Threading.Tasks.TaskCompletionSource(Of Integer)() | ||||||
|  |                                 context.Response.WriteAsync("<html><body><h1>ECO2 Web Server</h1><p>서버가 정상적으로 실행 중입니다.</p><p>루트 경로: " & RootPath & "</p></body></html>") | ||||||
|  |                                 tcs.SetResult(0) | ||||||
|  |                                 Return tcs.Task | ||||||
|  |                             End If | ||||||
|  |                         End If | ||||||
|  |                         Dim tcs2 = New System.Threading.Tasks.TaskCompletionSource(Of Integer)() | ||||||
|  |                         tcs2.SetResult(0) | ||||||
|  |                         Return tcs2.Task | ||||||
|  |                     End Function) | ||||||
|  |         End Sub | ||||||
|  |  | ||||||
|  |     End Class | ||||||
|  |  | ||||||
|  |     ''' <summary> | ||||||
|  |     ''' 커스텀 Content Type Provider | ||||||
|  |     ''' </summary> | ||||||
|  |     Public Class CustomContentTypeProvider | ||||||
|  |         Inherits Microsoft.Owin.StaticFiles.ContentTypes.FileExtensionContentTypeProvider | ||||||
|  |  | ||||||
|  |         Public Sub New() | ||||||
|  |             MyBase.New() | ||||||
|  |  | ||||||
|  |             ' 추가 MIME 타입 매핑 (필요한 경우) | ||||||
|  |             ' 기본적으로 일반적인 타입들은 이미 포함되어 있음 | ||||||
|  |             If Not Me.Mappings.ContainsKey(".json") Then | ||||||
|  |                 Me.Mappings.Add(".json", "application/json") | ||||||
|  |             End If | ||||||
|  |             If Not Me.Mappings.ContainsKey(".svg") Then | ||||||
|  |                 Me.Mappings.Add(".svg", "image/svg+xml") | ||||||
|  |             End If | ||||||
|  |             If Not Me.Mappings.ContainsKey(".woff") Then | ||||||
|  |                 Me.Mappings.Add(".woff", "font/woff") | ||||||
|  |             End If | ||||||
|  |             If Not Me.Mappings.ContainsKey(".woff2") Then | ||||||
|  |                 Me.Mappings.Add(".woff2", "font/woff2") | ||||||
|  |             End If | ||||||
|  |         End Sub | ||||||
|  |  | ||||||
|  |     End Class | ||||||
|  |  | ||||||
|  | End Namespace | ||||||
							
								
								
									
										175
									
								
								ArinWarev1/WebServer/StaticFileServer.vb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										175
									
								
								ArinWarev1/WebServer/StaticFileServer.vb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,175 @@ | |||||||
|  | ' OWIN 기반 정적 파일 호스팅 서버 | ||||||
|  | ' | ||||||
|  | ' 사용 방법: | ||||||
|  | ' Dim server As New StaticFileServer("C:\wwwroot", 58123) | ||||||
|  | ' server.Start() | ||||||
|  | ' ... 프로그램 실행 ... | ||||||
|  | ' server.Stop() | ||||||
|  |  | ||||||
|  | Imports System | ||||||
|  | Imports System.IO | ||||||
|  | Imports Microsoft.Owin.Hosting | ||||||
|  |  | ||||||
|  | Namespace WebServer | ||||||
|  |  | ||||||
|  |     ''' <summary> | ||||||
|  |     ''' OWIN 기반 정적 파일 호스팅 서버 | ||||||
|  |     ''' 포트 58123 사용 (일반적으로 사용하지 않는 포트) | ||||||
|  |     ''' </summary> | ||||||
|  |     Public Class StaticFileServer | ||||||
|  |         Implements IDisposable | ||||||
|  |  | ||||||
|  |         Private _webApp As IDisposable | ||||||
|  |         Private _baseUrl As String | ||||||
|  |         Private _rootPath As String | ||||||
|  |         Private _isRunning As Boolean = False | ||||||
|  |  | ||||||
|  |         ''' <summary> | ||||||
|  |         ''' 서버가 실행 중인지 여부 | ||||||
|  |         ''' </summary> | ||||||
|  |         Public ReadOnly Property IsRunning As Boolean | ||||||
|  |             Get | ||||||
|  |                 Return _isRunning | ||||||
|  |             End Get | ||||||
|  |         End Property | ||||||
|  |  | ||||||
|  |         ''' <summary> | ||||||
|  |         ''' 서버 URL (예: http://localhost:58123) | ||||||
|  |         ''' </summary> | ||||||
|  |         Public ReadOnly Property BaseUrl As String | ||||||
|  |             Get | ||||||
|  |                 Return _baseUrl | ||||||
|  |             End Get | ||||||
|  |         End Property | ||||||
|  |  | ||||||
|  |         ''' <summary> | ||||||
|  |         ''' 정적 파일 루트 경로 | ||||||
|  |         ''' </summary> | ||||||
|  |         Public ReadOnly Property RootPath As String | ||||||
|  |             Get | ||||||
|  |                 Return _rootPath | ||||||
|  |             End Get | ||||||
|  |         End Property | ||||||
|  |  | ||||||
|  |         ''' <summary> | ||||||
|  |         ''' StaticFileServer 생성자 | ||||||
|  |         ''' </summary> | ||||||
|  |         ''' <param name="rootPath">정적 파일을 서빙할 루트 디렉토리 경로</param> | ||||||
|  |         ''' <param name="port">사용할 포트 번호 (기본값: 58123)</param> | ||||||
|  |         Public Sub New(rootPath As String, Optional port As Integer = 58123) | ||||||
|  |             If String.IsNullOrEmpty(rootPath) Then | ||||||
|  |                 Throw New ArgumentException("rootPath는 비어있을 수 없습니다.", "rootPath") | ||||||
|  |             End If | ||||||
|  |  | ||||||
|  |             If Not Directory.Exists(rootPath) Then | ||||||
|  |                 Directory.CreateDirectory(rootPath) | ||||||
|  |             End If | ||||||
|  |  | ||||||
|  |             _rootPath = Path.GetFullPath(rootPath) | ||||||
|  |             _baseUrl = String.Format("http://localhost:{0}", port) | ||||||
|  |         End Sub | ||||||
|  |  | ||||||
|  |         ''' <summary> | ||||||
|  |         ''' 웹 서버 시작 | ||||||
|  |         ''' </summary> | ||||||
|  |         Public Sub Start() | ||||||
|  |             If _isRunning Then | ||||||
|  |                 Throw New InvalidOperationException("서버가 이미 실행 중입니다.") | ||||||
|  |             End If | ||||||
|  |  | ||||||
|  |             Try | ||||||
|  |                 ' OWIN 서버 시작 | ||||||
|  |                 _webApp = WebApp.Start(Of Startup)(_baseUrl) | ||||||
|  |                 _isRunning = True | ||||||
|  |  | ||||||
|  |                 ' 루트 경로를 Startup에서 접근할 수 있도록 설정 | ||||||
|  |                 Startup.RootPath = _rootPath | ||||||
|  |  | ||||||
|  |                 Console.WriteLine("웹 서버 시작: {0}", _baseUrl) | ||||||
|  |                 Console.WriteLine("루트 경로: {0}", _rootPath) | ||||||
|  |             Catch ex As Exception | ||||||
|  |                 _isRunning = False | ||||||
|  |                 Throw New Exception("웹 서버 시작 실패: " & ex.Message, ex) | ||||||
|  |             End Try | ||||||
|  |         End Sub | ||||||
|  |  | ||||||
|  |         ''' <summary> | ||||||
|  |         ''' 웹 서버 중지 | ||||||
|  |         ''' </summary> | ||||||
|  |         Public Sub [Stop]() | ||||||
|  |             If Not _isRunning Then | ||||||
|  |                 Return | ||||||
|  |             End If | ||||||
|  |  | ||||||
|  |             Try | ||||||
|  |                 If _webApp IsNot Nothing Then | ||||||
|  |                     _webApp.Dispose() | ||||||
|  |                     _webApp = Nothing | ||||||
|  |                 End If | ||||||
|  |                 _isRunning = False | ||||||
|  |                 Console.WriteLine("웹 서버 중지됨") | ||||||
|  |             Catch ex As Exception | ||||||
|  |                 Throw New Exception("웹 서버 중지 실패: " & ex.Message, ex) | ||||||
|  |             End Try | ||||||
|  |         End Sub | ||||||
|  |  | ||||||
|  |         ''' <summary> | ||||||
|  |         ''' 리소스 해제 | ||||||
|  |         ''' </summary> | ||||||
|  |         Public Sub Dispose() Implements IDisposable.Dispose | ||||||
|  |             [Stop]() | ||||||
|  |         End Sub | ||||||
|  |  | ||||||
|  |         ''' <summary> | ||||||
|  |         ''' 특정 파일의 전체 URL 반환 | ||||||
|  |         ''' </summary> | ||||||
|  |         ''' <param name="relativePath">상대 경로 (예: "index.html" 또는 "images/logo.png")</param> | ||||||
|  |         ''' <returns>전체 URL</returns> | ||||||
|  |         Public Function GetFileUrl(relativePath As String) As String | ||||||
|  |             If String.IsNullOrEmpty(relativePath) Then | ||||||
|  |                 Return _baseUrl & "/" | ||||||
|  |             End If | ||||||
|  |  | ||||||
|  |             ' 경로 정규화 | ||||||
|  |             Dim normalizedPath As String = relativePath.Replace("\", "/") | ||||||
|  |             If Not normalizedPath.StartsWith("/") Then | ||||||
|  |                 normalizedPath = "/" & normalizedPath | ||||||
|  |             End If | ||||||
|  |  | ||||||
|  |             Return _baseUrl & normalizedPath | ||||||
|  |         End Function | ||||||
|  |  | ||||||
|  |         ''' <summary> | ||||||
|  |         ''' 브라우저에서 루트 URL 열기 | ||||||
|  |         ''' </summary> | ||||||
|  |         Public Sub OpenInBrowser() | ||||||
|  |             If Not _isRunning Then | ||||||
|  |                 Throw New InvalidOperationException("서버가 실행 중이 아닙니다.") | ||||||
|  |             End If | ||||||
|  |  | ||||||
|  |             Try | ||||||
|  |                 System.Diagnostics.Process.Start(_baseUrl) | ||||||
|  |             Catch ex As Exception | ||||||
|  |                 Throw New Exception("브라우저 열기 실패: " & ex.Message, ex) | ||||||
|  |             End Try | ||||||
|  |         End Sub | ||||||
|  |  | ||||||
|  |         ''' <summary> | ||||||
|  |         ''' 특정 파일을 브라우저에서 열기 | ||||||
|  |         ''' </summary> | ||||||
|  |         ''' <param name="relativePath">상대 경로</param> | ||||||
|  |         Public Sub OpenFileInBrowser(relativePath As String) | ||||||
|  |             If Not _isRunning Then | ||||||
|  |                 Throw New InvalidOperationException("서버가 실행 중이 아닙니다.") | ||||||
|  |             End If | ||||||
|  |  | ||||||
|  |             Try | ||||||
|  |                 Dim url As String = GetFileUrl(relativePath) | ||||||
|  |                 System.Diagnostics.Process.Start(url) | ||||||
|  |             Catch ex As Exception | ||||||
|  |                 Throw New Exception("브라우저 열기 실패: " & ex.Message, ex) | ||||||
|  |             End Try | ||||||
|  |         End Sub | ||||||
|  |     End Class | ||||||
|  |  | ||||||
|  | End Namespace | ||||||
| @@ -29,7 +29,7 @@ | |||||||
| 			<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> --> | 			<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> --> | ||||||
| 		</sharedListeners> | 		</sharedListeners> | ||||||
| 	</system.diagnostics> | 	</system.diagnostics> | ||||||
| 	<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup><userSettings> | 	<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/></startup><userSettings> | ||||||
|   <Eco2Ar.My.MySettings> |   <Eco2Ar.My.MySettings> | ||||||
|    <setting name="xmlformat" serializeAs="String"> |    <setting name="xmlformat" serializeAs="String"> | ||||||
|     <value><?xml version="1.0" standalone="yes"?> |     <value><?xml version="1.0" standalone="yes"?> | ||||||
|   | |||||||
							
								
								
									
										9
									
								
								ArinWarev1/packages.config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								ArinWarev1/packages.config
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <packages> | ||||||
|  |   <package id="Microsoft.Owin" version="2.1.0" targetFramework="net40" /> | ||||||
|  |   <package id="Microsoft.Owin.Host.HttpListener" version="2.1.0" targetFramework="net40" /> | ||||||
|  |   <package id="Microsoft.Owin.Hosting" version="2.1.0" targetFramework="net40" /> | ||||||
|  |   <package id="Microsoft.Owin.StaticFiles" version="2.1.0" targetFramework="net40" /> | ||||||
|  |   <package id="Microsoft.Web.WebView2" version="1.0.3537.50" targetFramework="net48" /> | ||||||
|  |   <package id="Owin" version="1.0" targetFramework="net40" /> | ||||||
|  | </packages> | ||||||
| @@ -36,7 +36,7 @@ | |||||||
|     <ApplicationVersion>1.0.0.%2a</ApplicationVersion> |     <ApplicationVersion>1.0.0.%2a</ApplicationVersion> | ||||||
|     <UseApplicationTrust>false</UseApplicationTrust> |     <UseApplicationTrust>false</UseApplicationTrust> | ||||||
|     <BootstrapperEnabled>true</BootstrapperEnabled> |     <BootstrapperEnabled>true</BootstrapperEnabled> | ||||||
|     <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> |     <TargetFrameworkVersion>v4.8</TargetFrameworkVersion> | ||||||
|     <TargetFrameworkProfile /> |     <TargetFrameworkProfile /> | ||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||||||
|   | |||||||
| @@ -25,4 +25,4 @@ | |||||||
|             <!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> --> |             <!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> --> | ||||||
|         </sharedListeners> |         </sharedListeners> | ||||||
|     </system.diagnostics> |     </system.diagnostics> | ||||||
| <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration> | <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/></startup></configuration> | ||||||
|   | |||||||
							
								
								
									
										381
									
								
								CLAUDE.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										381
									
								
								CLAUDE.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,381 @@ | |||||||
|  | # CLAUDE.md | ||||||
|  |  | ||||||
|  | 이 파일은 Claude Code (claude.ai/code)가 이 저장소에서 작업할 때 참고할 가이드를 제공합니다. | ||||||
|  |  | ||||||
|  | ## 프로젝트 개요 | ||||||
|  |  | ||||||
|  | **ECO2 (Energy Calculation Optimization 2)**는 한국 건축물 에너지효율등급 인증 기준(녹색건축인증)에 따라 건물의 1차 에너지 소요량, CO2 배출량, 신재생에너지 생산량을 계산하는 VB.NET 및 WinForms 기반 응용 프로그램입니다. | ||||||
|  |  | ||||||
|  | **주 언어**: Visual Basic .NET (VB.NET) with .NET Framework 4.0 | ||||||
|  | **추가 언어**: C# (유틸리티 라이브러리만) | ||||||
|  | **플랫폼**: Windows 데스크톱 응용 프로그램 (x86 타겟) | ||||||
|  |  | ||||||
|  | ## 솔루션 구조 | ||||||
|  |  | ||||||
|  | 솔루션 `ArinWareT4.sln`은 모듈화된 아키텍처로 구성된 6개의 프로젝트를 포함합니다: | ||||||
|  |  | ||||||
|  | ### 메인 응용 프로그램 | ||||||
|  | - **ECO2_2025V1** (`ArinWarev1/`) - 주 WinForms 응용 프로그램 | ||||||
|  |   - 진입점: `MdiMain.vb` - 메뉴 시스템을 갖춘 MDI 부모 폼 | ||||||
|  |   - `Calculator/` 하위 디렉토리의 핵심 계산 엔진 | ||||||
|  |   - 기능별 폼 구성: `Forms/`, `Forms_Input/`, `Forms_Report/`, `Forms_Basic/` | ||||||
|  |   - `Data/`의 기상 데이터 (XML 형식) | ||||||
|  |   - 타입 데이터셋: `eco2DataSet.xsd` (데이터 모델링용) | ||||||
|  |  | ||||||
|  | ### 지원 라이브러리 (SubProject 폴더 그룹) | ||||||
|  | - **CEnergy** (`CEnergy/ArinClassV2/`) - 핵심 비즈니스 로직 라이브러리 | ||||||
|  |   - 공통 유틸리티, 데이터베이스 액세스, INI 파일 처리 | ||||||
|  |   - 여러 프로젝트에서 공유 | ||||||
|  |  | ||||||
|  | - **ArinNet** - 네트워크 통신 유틸리티 | ||||||
|  |  | ||||||
|  | - **ArinLogin** - 인증 및 사용자 관리 | ||||||
|  |   - 라이선스 검증, 암호화/복호화 | ||||||
|  |  | ||||||
|  | - **ArinLog** - 로깅 기능 | ||||||
|  |  | ||||||
|  | - **Utility** (C#) - 압축 유틸리티 | ||||||
|  |   - 데이터 압축을 위한 MiniLZO 구현 | ||||||
|  |  | ||||||
|  | ### 배포 | ||||||
|  | - **Setup1** - 설치 프로그램 프로젝트 (`.vdproj`) | ||||||
|  |  | ||||||
|  | ## 빌드 및 실행 | ||||||
|  |  | ||||||
|  | ### 솔루션 빌드 | ||||||
|  |  | ||||||
|  | ```bash | ||||||
|  | # Visual Studio에서 솔루션 열기 | ||||||
|  | start ArinWareT4.sln | ||||||
|  |  | ||||||
|  | # 명령줄에서 빌드 (Visual Studio 필요) | ||||||
|  | msbuild ArinWareT4.sln /p:Configuration=Debug /p:Platform="Any CPU" | ||||||
|  | msbuild ArinWareT4.sln /p:Configuration=Release /p:Platform="Any CPU" | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ### 출력 경로 | ||||||
|  | - **Debug**: `..\..\..\..\..\eco2\debug_2016\` (프로젝트 기준 상대 경로) | ||||||
|  | - **Release**: `c:\eco2\debug_2016\` | ||||||
|  |  | ||||||
|  | ### 플랫폼 설정 | ||||||
|  | - 타겟 플랫폼: **x86** (32비트) | ||||||
|  | - 프레임워크: **.NET Framework 4.0** | ||||||
|  | - Option Strict: **Off** (VB.NET 특성) | ||||||
|  |  | ||||||
|  | ### 빌드 구성 | ||||||
|  | - Debug / Release (표준) | ||||||
|  | - CD_ROM / DVD-5 / SingleImage (배포 구성) | ||||||
|  |  | ||||||
|  | ## 아키텍처 개요 | ||||||
|  |  | ||||||
|  | ### 계산 엔진 (`ArinWarev1/Calculator/`) | ||||||
|  |  | ||||||
|  | 계산 엔진은 건물 에너지 계산을 수행하는 전문 모듈로 구성됩니다: | ||||||
|  |  | ||||||
|  | **핵심 계산기 클래스**: | ||||||
|  | - `Calculator.vb` - 모든 계산 모듈을 조율하는 메인 오케스트레이터 | ||||||
|  | - `CZone.vb` - 존 레벨 계산 (열존, 난방/냉방 부하) | ||||||
|  | - `CAirHandling.vb` - 공조 시스템 계산 | ||||||
|  | - `CHeating.vb` - 난방 시스템 계산 (기기, 분배, 공급) | ||||||
|  | - `CCooling.vb` - 냉방 시스템 계산 (기기, 분배) | ||||||
|  | - `CRenewable.vb` - 신재생에너지 생산량 계산 | ||||||
|  | - `CSummary.vb` - 결과 집계 및 요약 생성 | ||||||
|  | - `CShared.vb` - 공유 계산 변수 및 유틸리티 | ||||||
|  |  | ||||||
|  | **결과 처리** (`Calculator/Result/`): | ||||||
|  | - `CResult.vb` - 결과 데이터 구조 | ||||||
|  | - `C1차소요량.vb` - 1차 에너지 소요량 계산 | ||||||
|  | - `CCo2발생량.vb` - CO2 배출량 계산 | ||||||
|  | - `C생산에너지.vb` - 에너지 생산량 계산 | ||||||
|  | - `C사용면적.vb` - 사용 면적 계산 | ||||||
|  | - `CZones.vb` - 존 결과 집계 | ||||||
|  |  | ||||||
|  | ### 데이터 흐름 | ||||||
|  |  | ||||||
|  | ``` | ||||||
|  | 사용자 입력 폼 (Forms_Input/) | ||||||
|  |     ↓ | ||||||
|  | DataSet (eco2DataSet - DS, DSR) | ||||||
|  |     ↓ | ||||||
|  | 계산 엔진 (Calculator) | ||||||
|  |     ↓ | ||||||
|  | 결과 클래스 (CResult, DSR) | ||||||
|  |     ↓ | ||||||
|  | 리포트 폼 (Forms_Report/) | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ### 주요 데이터셋 | ||||||
|  | - `DS` (DSET) - 입력 데이터 (사용자 입력 건물 정보) | ||||||
|  | - `DSR` (DSETR) - 결과 데이터 (계산된 에너지 값) | ||||||
|  | - `CResult` - 구조화된 계산 결과 | ||||||
|  |  | ||||||
|  | ### 폼 구성 | ||||||
|  |  | ||||||
|  | **Forms_Input/** - 데이터 입력 폼 | ||||||
|  | - `Frm_Desc.vb` - 건물 개요 | ||||||
|  | - `Frm_kongjo.vb` - 공조 처리 입력 | ||||||
|  | - `Frm_Bunbae.vb` - 분배 시스템 입력 | ||||||
|  | - `Frm_custom_profile.vb` - 커스텀 사용 프로파일 | ||||||
|  |  | ||||||
|  | **Forms_Report/** - 출력 및 보고 | ||||||
|  | - `Frm_Upload.vb` - 인증 서버 업로드 | ||||||
|  | - `Frm_Macro.vb`, `Frm_Macro2.vb` - Excel 리포트 생성 | ||||||
|  | - `Frm_Export.vb` - 데이터 내보내기 기능 | ||||||
|  |  | ||||||
|  | **Forms_Basic/** - 유틸리티 폼 | ||||||
|  | - `Frm_Calc.vb` - 계산 트리거 | ||||||
|  | - `Frm_Filter.vb` - 데이터 필터링 | ||||||
|  | - `Frm_FileInfo.vb` - 파일 메타데이터 | ||||||
|  |  | ||||||
|  | **Forms/** - 일반 응용 프로그램 폼 | ||||||
|  | - `Frm_About.vb` - About 대화상자 | ||||||
|  | - `Frm_Common.vb` - 공통 대화상자 | ||||||
|  |  | ||||||
|  | ### 메뉴 시스템 (MdiMain.vb) | ||||||
|  |  | ||||||
|  | `E_MenuIdx` 열거형에 정의된 메뉴 인덱스: | ||||||
|  | - 입력존 | ||||||
|  | - 입력면 | ||||||
|  | - 공조처리 | ||||||
|  | - 난방기기/공급/분배 | ||||||
|  | - 냉방기기/분배 | ||||||
|  | - 신재생및열병합 | ||||||
|  | - 열관류율 | ||||||
|  | - 건물개요 | ||||||
|  | - 월별에너지사용량 | ||||||
|  |  | ||||||
|  | ### 사용자 권한 | ||||||
|  |  | ||||||
|  | `Prj.UserAuthType`을 통해 제어되는 사용자 유형: | ||||||
|  | - `ADMIN` - 전체 액세스 | ||||||
|  | - `BOTH` - 전문 사용자 (계산 + 인증) | ||||||
|  | - `BOTH0` - 일반 사용자 (제한된 액세스) | ||||||
|  | - `BOTH1` - 확장 전문 사용자 액세스 | ||||||
|  |  | ||||||
|  | ## 외부 종속성 | ||||||
|  |  | ||||||
|  | ### FarPoint Spread (v5.0.3505.2008) | ||||||
|  | - 데이터 입력을 위한 Excel 형식의 스프레드시트 컨트롤 | ||||||
|  | - 구성 요소: CalcEngine, Excel, PDF, Win, Chart | ||||||
|  | - 입력 폼에서 광범위하게 사용 | ||||||
|  |  | ||||||
|  | ### Microsoft ReportViewer | ||||||
|  | - `Microsoft.ReportViewer.Common.dll` | ||||||
|  | - `Microsoft.ReportViewer.WinForms.dll` | ||||||
|  | - 형식화된 보고서 생성에 사용 | ||||||
|  |  | ||||||
|  | ### Excel Interop | ||||||
|  | - `Interop.Excel.dll` - Excel 자동화를 위한 COM interop | ||||||
|  | - 매크로/내보내기 기능에 사용 | ||||||
|  |  | ||||||
|  | ### LOV 구성 요소 | ||||||
|  | - `Lov.dll` - 값 목록 컨트롤 라이브러리 | ||||||
|  |  | ||||||
|  | ## 파일 형식 및 데이터 저장 | ||||||
|  |  | ||||||
|  | ### 프로젝트 파일 (.tpl 파일) | ||||||
|  | - LZO 압축 바이너리 형식 (Utility 프로젝트 사용) | ||||||
|  | - 건물 데이터, 계산 입력값, 결과 포함 | ||||||
|  | - 사용자 지정 위치에 저장 | ||||||
|  | - 최근 파일은 응용 프로그램 설정에서 추적 | ||||||
|  |  | ||||||
|  | ### 기상 데이터 (Data/*.xml) | ||||||
|  | - `weather_temp.xml` - 온도 데이터 | ||||||
|  | - `weather_supdo.xml` - 습도 데이터 | ||||||
|  | - `weather_ilsa.xml` - 일사량 데이터 | ||||||
|  | - `weather_group.xml` - 기상 관측소 그룹 | ||||||
|  | - `tbl_weather.xml` - 기상 위치 테이블 | ||||||
|  |  | ||||||
|  | ### 구성 파일 | ||||||
|  | - `Frm_Setting.ini` - UI 상태 지속성 (창 크기, 위치) | ||||||
|  | - `login.dat` - 사용자 자격 증명 (암호화됨) | ||||||
|  | - `app.config` - 응용 프로그램 설정 | ||||||
|  |  | ||||||
|  | ## 한국 건축물 에너지 기준 | ||||||
|  |  | ||||||
|  | 이 응용 프로그램은 한국 건축물 에너지효율등급 인증 기준을 구현합니다: | ||||||
|  |  | ||||||
|  | ### 주요 용어 | ||||||
|  | - 건물개요 | ||||||
|  | - 1차 에너지 소요량 | ||||||
|  | - CO2 발생량 | ||||||
|  | - 난방 / 냉방 | ||||||
|  | - 급탕 | ||||||
|  | - 조명 / 환기 | ||||||
|  | - 신재생에너지 | ||||||
|  | - 열관류율 | ||||||
|  | - 공조 | ||||||
|  | - 용도지역 | ||||||
|  |  | ||||||
|  | ### 계산 버전 관리 | ||||||
|  |  | ||||||
|  | `StartVersion` 상수를 통한 버전 제어: | ||||||
|  | - 규제 준수를 위한 계산 엔진 버전 관리 | ||||||
|  | - `Calculator.New()` 생성자에서 버전 확인 | ||||||
|  | - 기준 버전 "2009123100" | ||||||
|  |  | ||||||
|  | ## 개발 가이드라인 | ||||||
|  |  | ||||||
|  | ### VB.NET 규칙 | ||||||
|  | - Option Strict는 OFF - 암시적 형식 변환 허용 | ||||||
|  | - 한글 주석 및 변수명은 표준 관행 | ||||||
|  | - 명명: 클래스, 메서드는 PascalCase; 로컬 변수는 엄격한 규칙 없음 | ||||||
|  |  | ||||||
|  | ### DataSet 사용 | ||||||
|  | - 항상 타입 데이터셋 (`DS`, `DSR`) 사용 | ||||||
|  | - 모듈 수준 변수 `DSET1`, `DSETR1`을 통해 액세스 | ||||||
|  | - 타입 안전 액세스를 위해 DataRow 객체 사용 | ||||||
|  |  | ||||||
|  | ### 폼 관리 | ||||||
|  | - `MdiMain`을 통한 MDI 자식 폼 관리 | ||||||
|  | - `OpenedForm` 속성을 통해 열린 폼 추적 | ||||||
|  | - `Prj.Opened`를 사용하여 프로젝트 파일 로드 여부 확인 | ||||||
|  |  | ||||||
|  | ### 계산 흐름 | ||||||
|  | 1. 프로젝트 파일 로드 → `DSET` 채우기 | ||||||
|  | 2. 사용자가 입력 폼 수정 → `DSET` 업데이트 | ||||||
|  | 3. 계산 트리거 → `Calculator` 클래스가 `DSET` 처리 → `DSETR` 및 `CResult` 채우기 | ||||||
|  | 4. 리포트 폼에 결과 표시 | ||||||
|  |  | ||||||
|  | ### 파일 작업 | ||||||
|  | - 항상 MdiMain의 `Save_File()` / `Load_File()` 메서드 사용 | ||||||
|  | - Utility 라이브러리를 통한 파일 압축 처리 | ||||||
|  | - `PrjChanged` 플래그를 통한 파일 변경 추적 | ||||||
|  |  | ||||||
|  | ## 일반 작업 | ||||||
|  |  | ||||||
|  | ### 계산 실행 | ||||||
|  |  | ||||||
|  | 계산은 메뉴 또는 폼 버튼에서 트리거되고 `Calculator` 클래스를 통해 처리됩니다: | ||||||
|  |  | ||||||
|  | ```vb | ||||||
|  | ' 데이터셋 및 결과 객체로 계산기 초기화 | ||||||
|  | Dim calc As New Calculator(version, DSET1, DSETR1, Result2, isSimulation) | ||||||
|  |  | ||||||
|  | ' 초기화 오류 확인 | ||||||
|  | If calc.IsError Then | ||||||
|  |     ' 오류 처리 | ||||||
|  |     Return | ||||||
|  | End If | ||||||
|  |  | ||||||
|  | ' DSETR1 및 Result2에서 계산 결과 사용 가능 | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ### 새 입력 필드 추가 | ||||||
|  |  | ||||||
|  | 1. 적절한 테이블에 열을 추가하도록 `eco2DataSet.xsd` 수정 | ||||||
|  | 2. 해당 입력 폼(`Forms_Input/*.vb`) 업데이트 | ||||||
|  | 3. 관련 `Calculator/*.vb` 클래스의 계산 로직 업데이트 | ||||||
|  | 4. 필요한 경우 리포트 폼 업데이트 | ||||||
|  |  | ||||||
|  | ### 새 계산 모듈 추가 | ||||||
|  |  | ||||||
|  | 1. `Calculator/` 디렉토리에 새 클래스 생성 | ||||||
|  | 2. 기존 모듈의 계산 패턴 상속 | ||||||
|  | 3. 생성자에서 `DS`, `DSR`, `CResult` 수락 | ||||||
|  | 4. `Calculator.vb` 오케스트레이터에 연결 | ||||||
|  | 5. `CSummary.vb`의 요약 집계 업데이트 | ||||||
|  |  | ||||||
|  | ### FarPoint Spread 컨트롤 작업 | ||||||
|  |  | ||||||
|  | FarPoint 컨트롤은 그리드 기반 입력에 광범위하게 사용됩니다: | ||||||
|  |  | ||||||
|  | ```vb | ||||||
|  | ' Spread 컨트롤 액세스 | ||||||
|  | Dim spread As FarPoint.Win.Spread.FpSpread = Me.FpSpread1 | ||||||
|  |  | ||||||
|  | ' 셀 값 설정 | ||||||
|  | spread.ActiveSheet.Cells(row, col).Value = value | ||||||
|  |  | ||||||
|  | ' 셀 값 읽기 | ||||||
|  | Dim value = spread.ActiveSheet.Cells(row, col).Value | ||||||
|  |  | ||||||
|  | ' 셀 속성 설정 | ||||||
|  | spread.ActiveSheet.Cells(row, col).BackColor = Color.Yellow | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ## 알려진 패턴 및 규칙 | ||||||
|  |  | ||||||
|  | ### 전역 모듈 변수 | ||||||
|  | - `DSET1` - 전역 입력 데이터셋 (DS 타입) | ||||||
|  | - `DSETR1` - 전역 결과 데이터셋 (DSR 타입) | ||||||
|  | - `Result2` - 전역 결과 객체 (CResult 타입) | ||||||
|  | - `Prj` - 전역 프로젝트 상태 객체 | ||||||
|  | - `CLang` - 언어/지역화 문자열 | ||||||
|  |  | ||||||
|  | ### 오류 처리 | ||||||
|  | - 계산 클래스의 `IsError` 속성 패턴 | ||||||
|  | - 사용자 대면 오류에 대한 메시지 박스 | ||||||
|  | - `On Error Resume Next`를 사용한 VB.NET 오류 처리 (레거시 패턴) | ||||||
|  |  | ||||||
|  | ### 이벤트 처리 | ||||||
|  | - 클래스 수준 이벤트 핸들러를 위한 WithEvents 패턴 | ||||||
|  | - `Handles` 키워드를 통한 폼 이벤트 처리 | ||||||
|  |  | ||||||
|  | ### INI 파일 액세스 | ||||||
|  | ```vb | ||||||
|  | Dim ini As New MyINI(filePath) | ||||||
|  | Dim value = ini.Read(section, key, defaultValue) | ||||||
|  | ini.Write(section, key, value) | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ## 테스트 및 디버깅 | ||||||
|  |  | ||||||
|  | ### 디버그 모드 | ||||||
|  | - Debug 구성으로 빌드 | ||||||
|  | - 로컬 디버그 폴더로 출력 | ||||||
|  | - 전체 심볼 정보 사용 가능 | ||||||
|  |  | ||||||
|  | ### 테스트 데이터 | ||||||
|  | 사용 가능한 샘플 프로젝트 파일: | ||||||
|  | - `sample.tpl` - 표준 샘플 건물 | ||||||
|  | - `sample_0307.tpl` - 대체 샘플 | ||||||
|  | - `sample_200.tpl` - 대형 건물 샘플 | ||||||
|  |  | ||||||
|  | ### 로깅 | ||||||
|  | 응용 프로그램 로깅에 ArinLog 라이브러리 사용: | ||||||
|  | ```vb | ||||||
|  | pLog.Add("이벤트 설명", includeStackTrace) | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ## 언어 관련 참고사항 | ||||||
|  |  | ||||||
|  | 응용 프로그램은 한국 사용자를 위해 설계되었습니다: | ||||||
|  | - 모든 UI 텍스트는 한글 | ||||||
|  | - 사용자 문서는 한글 | ||||||
|  | - 한국 건축 기준 및 용어 | ||||||
|  | - 날짜/시간 형식: 한국 표준 | ||||||
|  | - 인코딩: 소스 파일은 UTF-8 | ||||||
|  |  | ||||||
|  | 주석 및 변수명은 한글과 영어를 혼용합니다 - 이는 의도적이며 이 코드베이스의 표준입니다. | ||||||
|  |  | ||||||
|  | ## 배포 참고사항 | ||||||
|  |  | ||||||
|  | ### 설치 | ||||||
|  | - 설치 프로그램 프로젝트: `Setup1/Setup1.vdproj` | ||||||
|  | - 메인 프로젝트에 구성된 ClickOnce 배포 | ||||||
|  | - 게시 URL: `ftp://tindevil.com/www/mynetapp/t4/` | ||||||
|  | - 설치 URL: `http://tindevil.com/mynetapp/t4/` | ||||||
|  |  | ||||||
|  | ### 버전 관리 | ||||||
|  | - AssemblyInfo의 버전 정보 | ||||||
|  | - ArinLogin 라이브러리를 통한 버전 확인 | ||||||
|  | - 서버 측 버전 검증 | ||||||
|  |  | ||||||
|  | ### 업데이트 | ||||||
|  | - 시작 시 업데이트 확인 | ||||||
|  | - Foreground 업데이트 모드 (실행 전 업데이트) | ||||||
|  | - 7일 업데이트 간격 구성 | ||||||
|  |  | ||||||
|  | ## 보안 참고사항 | ||||||
|  |  | ||||||
|  | ### 인증 | ||||||
|  | - ArinLogin 라이브러리를 통한 사용자 인증 | ||||||
|  | - MAC 주소 검증 (상태 표시줄의 `lbl_mac`) | ||||||
|  | - 라이선스 관리 시스템 | ||||||
|  | - `login.dat`의 암호화된 자격 증명 | ||||||
|  |  | ||||||
|  | ### 데이터 보호 | ||||||
|  | - 데이터 보호를 위한 파일 압축 | ||||||
|  | - ArinLogin.EnDec 클래스를 통한 암호화/복호화 | ||||||
|  | - 라이선스 준수를 위한 네트워크 검증 | ||||||
							
								
								
									
										4387
									
								
								Setup1/Setup1.vdproj
									
									
									
									
									
								
							
							
						
						
									
										4387
									
								
								Setup1/Setup1.vdproj
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -10,7 +10,7 @@ | |||||||
|     <AppDesignerFolder>Properties</AppDesignerFolder> |     <AppDesignerFolder>Properties</AppDesignerFolder> | ||||||
|     <RootNamespace>Utility</RootNamespace> |     <RootNamespace>Utility</RootNamespace> | ||||||
|     <AssemblyName>Utility</AssemblyName> |     <AssemblyName>Utility</AssemblyName> | ||||||
|     <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> |     <TargetFrameworkVersion>v4.8</TargetFrameworkVersion> | ||||||
|     <FileAlignment>512</FileAlignment> |     <FileAlignment>512</FileAlignment> | ||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||||||
|   | |||||||
							
								
								
									
										135
									
								
								claudedocs/WebView2_Deployment_Guide.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										135
									
								
								claudedocs/WebView2_Deployment_Guide.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,135 @@ | |||||||
|  | # WebView2 Fixed Version 배포 가이드 | ||||||
|  |  | ||||||
|  | ## 개요 | ||||||
|  |  | ||||||
|  | ECO2 프로그램은 WebView2 Fixed Version 방식을 사용하여 오프라인 환경에서도 매뉴얼 뷰어를 사용할 수 있습니다. | ||||||
|  |  | ||||||
|  | ## Fixed Version 다운로드 | ||||||
|  |  | ||||||
|  | ### 1. 다운로드 위치 | ||||||
|  | https://developer.microsoft.com/microsoft-edge/webview2/#download-section | ||||||
|  |  | ||||||
|  | "Fixed Version" 섹션에서 다운로드합니다. | ||||||
|  |  | ||||||
|  | ### 2. 버전 선택 | ||||||
|  | - **플랫폼**: x86 (32-bit) - ECO2는 x86 타겟입니다 | ||||||
|  | - **추천 버전**: 최신 Stable 버전 | ||||||
|  | - 파일 크기: 약 100-150MB | ||||||
|  |  | ||||||
|  | ### 3. 다운로드 파일 예시 | ||||||
|  | - `Microsoft.WebView2.FixedVersionRuntime.{version}.x86.cab` | ||||||
|  | - 또는 압축 해제된 폴더 형태 | ||||||
|  |  | ||||||
|  | ## 배포 방법 | ||||||
|  |  | ||||||
|  | ### 1. 폴더 구조 | ||||||
|  | ``` | ||||||
|  | {프로그램 설치 폴더}/ | ||||||
|  | ├── ECO2_2025V1.exe | ||||||
|  | ├── WebView2Runtime/          ← Fixed Version 런타임 폴더 | ||||||
|  | │   ├── msedge.exe | ||||||
|  | │   ├── msedgewebview2.exe | ||||||
|  | │   └── [기타 WebView2 파일들] | ||||||
|  | └── WebView2Data/             ← 사용자 데이터 폴더 (자동 생성됨) | ||||||
|  |     └── [캐시, 쿠키 등] | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ### 2. 설치 단계 | ||||||
|  |  | ||||||
|  | #### 방법 1: 수동 배포 (개발/테스트) | ||||||
|  | 1. Fixed Version CAB 파일 또는 폴더 다운로드 | ||||||
|  | 2. CAB 파일인 경우 압축 해제 | ||||||
|  | 3. 압축 해제된 내용을 `WebView2Runtime` 폴더로 복사 | ||||||
|  | 4. `WebView2Runtime` 폴더를 프로그램 실행 파일과 같은 위치에 배치 | ||||||
|  |  | ||||||
|  | #### 방법 2: 설치 프로그램 포함 (프로덕션) | ||||||
|  | Setup1 프로젝트에 WebView2Runtime 폴더를 포함: | ||||||
|  | 1. Setup1.vdproj 열기 | ||||||
|  | 2. WebView2Runtime 폴더를 프로젝트에 추가 | ||||||
|  | 3. 설치 시 Application Folder에 복사되도록 설정 | ||||||
|  |  | ||||||
|  | ## 동작 방식 | ||||||
|  |  | ||||||
|  | ### 런타임 검색 순서 | ||||||
|  | 1. **Fixed Version 우선**: `{실행폴더}\WebView2Runtime` 폴더 검색 | ||||||
|  | 2. **시스템 런타임 폴백**: 시스템에 설치된 WebView2 Runtime 사용 | ||||||
|  | 3. **없을 경우**: 매뉴얼 기능 사용 시 오류 메시지 표시 | ||||||
|  |  | ||||||
|  | ### 프로그램 시작 시 검사 | ||||||
|  | - MdiMain 로드 시 `CheckWebView2Runtime()` 메서드가 Fixed Version 존재 여부 확인 | ||||||
|  | - Debug.WriteLine으로 경고 출력 (사용자에게는 미표시) | ||||||
|  | - 실제 사용 시점(매뉴얼 열기)에만 오류 표시 | ||||||
|  |  | ||||||
|  | ### 오프라인 환경 | ||||||
|  | - Fixed Version이 배포되어 있으면 인터넷 연결 불필요 | ||||||
|  | - 모든 런타임 파일이 로컬에 포함되어 있음 | ||||||
|  | - 폐쇄망 환경에서도 정상 작동 | ||||||
|  |  | ||||||
|  | ## 버전 업데이트 | ||||||
|  |  | ||||||
|  | ### Fixed Version 업데이트 방법 | ||||||
|  | 1. 새 Fixed Version 다운로드 | ||||||
|  | 2. 기존 `WebView2Runtime` 폴더 백업 (선택사항) | ||||||
|  | 3. 새 버전으로 `WebView2Runtime` 폴더 교체 | ||||||
|  | 4. 프로그램 재시작 | ||||||
|  |  | ||||||
|  | ### 주의사항 | ||||||
|  | - WebView2Runtime 폴더는 약 100-150MB이므로 Git에 커밋하지 않음 | ||||||
|  | - .gitignore에 이미 추가되어 있음 | ||||||
|  | - 설치 프로그램에는 반드시 포함해야 함 | ||||||
|  |  | ||||||
|  | ## 테스트 방법 | ||||||
|  |  | ||||||
|  | ### 1. Fixed Version 테스트 | ||||||
|  | ``` | ||||||
|  | 1. WebView2Runtime 폴더가 있는 상태에서 프로그램 실행 | ||||||
|  | 2. "Manual" 메뉴 클릭 | ||||||
|  | 3. http://localhost:58123/ 페이지가 정상적으로 로드되는지 확인 | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ### 2. 폴백(Fallback) 테스트 | ||||||
|  | ``` | ||||||
|  | 1. WebView2Runtime 폴더 임시 이름 변경 (예: WebView2Runtime_backup) | ||||||
|  | 2. 프로그램 실행 (시스템 런타임 사용 시도) | ||||||
|  | 3. "Manual" 메뉴 클릭 | ||||||
|  | 4. 시스템에 런타임이 있으면 정상 작동, 없으면 오류 메시지 | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ### 3. 오프라인 테스트 | ||||||
|  | ``` | ||||||
|  | 1. 네트워크 연결 끊기 | ||||||
|  | 2. Fixed Version 배포된 상태에서 프로그램 실행 | ||||||
|  | 3. 매뉴얼 기능이 정상 작동하는지 확인 | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ## 문제 해결 | ||||||
|  |  | ||||||
|  | ### "WebView2 구성 요소를 찾을 수 없습니다" 오류 | ||||||
|  | **원인**: Fixed Version도 없고 시스템 런타임도 설치되지 않음 | ||||||
|  |  | ||||||
|  | **해결**: | ||||||
|  | 1. WebView2Runtime 폴더가 실행 파일과 같은 위치에 있는지 확인 | ||||||
|  | 2. WebView2Runtime 폴더 내에 msedgewebview2.exe 파일이 있는지 확인 | ||||||
|  | 3. 또는 시스템에 WebView2 Runtime 설치: https://go.microsoft.com/fwlink/p/?LinkId=2124703 | ||||||
|  |  | ||||||
|  | ### 페이지 로딩 실패 | ||||||
|  | **원인**: 로컬 웹서버(http://localhost:58123/)가 실행되지 않음 | ||||||
|  |  | ||||||
|  | **해결**: | ||||||
|  | 1. 로컬 웹서버가 실행 중인지 확인 | ||||||
|  | 2. 포트 58123이 열려 있는지 확인 | ||||||
|  | 3. Frm_WebManual.vb의 Navigate URL 수정 필요 시 수정 | ||||||
|  |  | ||||||
|  | ### WebView2Data 폴더 문제 | ||||||
|  | **원인**: 캐시 또는 쿠키 문제 | ||||||
|  |  | ||||||
|  | **해결**: | ||||||
|  | 1. 프로그램 종료 | ||||||
|  | 2. WebView2Data 폴더 삭제 | ||||||
|  | 3. 프로그램 재시작 (자동으로 새 폴더 생성됨) | ||||||
|  |  | ||||||
|  | ## 참고 자료 | ||||||
|  |  | ||||||
|  | - WebView2 공식 문서: https://learn.microsoft.com/microsoft-edge/webview2/ | ||||||
|  | - Fixed Version 배포 가이드: https://learn.microsoft.com/microsoft-edge/webview2/concepts/distribution | ||||||
|  | - WebView2 다운로드: https://developer.microsoft.com/microsoft-edge/webview2/ | ||||||
							
								
								
									
										68
									
								
								download_owin_packages.bat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								download_owin_packages.bat
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,68 @@ | |||||||
|  | @echo off | ||||||
|  | chcp 65001 > nul | ||||||
|  | echo ======================================== | ||||||
|  | echo OWIN NuGet 패키지 다운로드 | ||||||
|  | echo (압축 해제는 수동으로 진행) | ||||||
|  | echo ======================================== | ||||||
|  | echo. | ||||||
|  |  | ||||||
|  | REM 다운로드 폴더 생성 | ||||||
|  | echo [1/2] 다운로드 폴더 생성 중... | ||||||
|  | if not exist "owin_packages" mkdir owin_packages | ||||||
|  | cd owin_packages | ||||||
|  | echo 완료 | ||||||
|  | echo. | ||||||
|  |  | ||||||
|  | REM NuGet 패키지 다운로드 (.zip으로 저장) | ||||||
|  | echo [2/2] NuGet 패키지 다운로드 중... | ||||||
|  | echo. | ||||||
|  |  | ||||||
|  | echo   다운로드: Owin.1.0.0.zip | ||||||
|  | powershell -Command "Invoke-WebRequest -Uri 'https://www.nuget.org/api/v2/package/Owin/1.0.0' -OutFile 'Owin.1.0.0.zip'" | ||||||
|  | echo   완료 | ||||||
|  |  | ||||||
|  | echo   다운로드: Microsoft.Owin.2.1.0.zip | ||||||
|  | powershell -Command "Invoke-WebRequest -Uri 'https://www.nuget.org/api/v2/package/Microsoft.Owin/2.1.0' -OutFile 'Microsoft.Owin.2.1.0.zip'" | ||||||
|  | echo   완료 | ||||||
|  |  | ||||||
|  | echo   다운로드: Microsoft.Owin.Host.HttpListener.2.1.0.zip | ||||||
|  | powershell -Command "Invoke-WebRequest -Uri 'https://www.nuget.org/api/v2/package/Microsoft.Owin.Host.HttpListener/2.1.0' -OutFile 'Microsoft.Owin.Host.HttpListener.2.1.0.zip'" | ||||||
|  | echo   완료 | ||||||
|  |  | ||||||
|  | echo   다운로드: Microsoft.Owin.Hosting.2.1.0.zip | ||||||
|  | powershell -Command "Invoke-WebRequest -Uri 'https://www.nuget.org/api/v2/package/Microsoft.Owin.Hosting/2.1.0' -OutFile 'Microsoft.Owin.Hosting.2.1.0.zip'" | ||||||
|  | echo   완료 | ||||||
|  |  | ||||||
|  | echo   다운로드: Microsoft.Owin.StaticFiles.2.1.0.zip | ||||||
|  | powershell -Command "Invoke-WebRequest -Uri 'https://www.nuget.org/api/v2/package/Microsoft.Owin.StaticFiles/2.1.0' -OutFile 'Microsoft.Owin.StaticFiles.2.1.0.zip'" | ||||||
|  | echo   완료 | ||||||
|  |  | ||||||
|  | echo   다운로드: Microsoft.Owin.FileSystems.2.1.0.zip | ||||||
|  | powershell -Command "Invoke-WebRequest -Uri 'https://www.nuget.org/api/v2/package/Microsoft.Owin.FileSystems/2.1.0' -OutFile 'Microsoft.Owin.FileSystems.2.1.0.zip'" | ||||||
|  | echo   완료 | ||||||
|  |  | ||||||
|  | cd .. | ||||||
|  |  | ||||||
|  | echo. | ||||||
|  | echo ======================================== | ||||||
|  | echo 다운로드 완료! | ||||||
|  | echo ======================================== | ||||||
|  | echo. | ||||||
|  | echo 다운로드된 파일 목록: | ||||||
|  | dir /b owin_packages\*.zip | ||||||
|  | echo. | ||||||
|  | echo 다음 단계: | ||||||
|  | echo 1. owin_packages 폴더 열기 | ||||||
|  | echo 2. 각 .zip 파일을 압축 해제 | ||||||
|  | echo 3. 각 폴더의 lib\net40\ 경로에서 .dll 파일 찾기 | ||||||
|  | echo 4. 모든 .dll 파일을 lib 폴더로 복사 | ||||||
|  | echo. | ||||||
|  | echo 필요한 DLL 파일 목록: | ||||||
|  | echo   - Owin.dll | ||||||
|  | echo   - Microsoft.Owin.dll | ||||||
|  | echo   - Microsoft.Owin.Host.HttpListener.dll | ||||||
|  | echo   - Microsoft.Owin.Hosting.dll | ||||||
|  | echo   - Microsoft.Owin.StaticFiles.dll | ||||||
|  | echo   - Microsoft.Owin.FileSystems.dll | ||||||
|  | echo. | ||||||
|  | pause | ||||||
							
								
								
									
										143
									
								
								host_eco2_guide_fixed.bat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										143
									
								
								host_eco2_guide_fixed.bat
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,143 @@ | |||||||
|  | @echo off | ||||||
|  | chcp 65001 > nul | ||||||
|  | echo ======================================== | ||||||
|  | echo ECO2 Guide Center 로컬 호스팅 | ||||||
|  | echo ======================================== | ||||||
|  | echo. | ||||||
|  |  | ||||||
|  | REM 현재 디렉토리 확인 | ||||||
|  | set CURRENT_DIR=%CD% | ||||||
|  | echo 현재 디렉토리: %CURRENT_DIR% | ||||||
|  | echo. | ||||||
|  |  | ||||||
|  | REM eco2_guide_center 저장소 경로 확인 | ||||||
|  | set GUIDE_REPO=eco2_guide_center | ||||||
|  | if not exist "%GUIDE_REPO%" ( | ||||||
|  |     echo [1/4] 저장소 클론 중... | ||||||
|  |     git clone https://github.com/VeryColdplay/eco2_guide_center.git | ||||||
|  |     if errorlevel 1 ( | ||||||
|  |         echo 오류: 저장소 클론 실패 | ||||||
|  |         echo Git이 설치되어 있는지 확인하세요. | ||||||
|  |         pause | ||||||
|  |         exit /b 1 | ||||||
|  |     ) | ||||||
|  |     echo 완료 | ||||||
|  | ) else ( | ||||||
|  |     echo [1/4] 저장소 업데이트 중... | ||||||
|  |     cd %GUIDE_REPO% | ||||||
|  |     git pull | ||||||
|  |     cd .. | ||||||
|  |     echo 완료 | ||||||
|  | ) | ||||||
|  | echo. | ||||||
|  |  | ||||||
|  | REM 필요한 패키지 설치 | ||||||
|  | echo [2/4] Python 패키지 설치 중... | ||||||
|  | echo (네트워크 연결이 필요합니다. 시간이 걸릴 수 있습니다...) | ||||||
|  | echo. | ||||||
|  |  | ||||||
|  | REM 방화벽이나 프록시 문제가 있을 수 있으므로 개별 설치 시도 | ||||||
|  | pip install mkdocs-material 2>nul | ||||||
|  | if errorlevel 1 ( | ||||||
|  |     echo 경고: mkdocs-material 설치 실패 - 이미 설치되어 있거나 네트워크 문제일 수 있습니다. | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | pip install mkdocs-macros-plugin 2>nul | ||||||
|  | pip install mkdocs-mermaid2-plugin 2>nul | ||||||
|  | pip install mkdocs-table-reader-plugin 2>nul | ||||||
|  | pip install mkdocs-glightbox 2>nul | ||||||
|  | pip install mkdocs-git-revision-date-localized-plugin 2>nul | ||||||
|  | pip install mkdocs-minify-plugin 2>nul | ||||||
|  | pip install mkdocs-awesome-pages-plugin 2>nul | ||||||
|  |  | ||||||
|  | echo 패키지 설치 시도 완료 | ||||||
|  | echo. | ||||||
|  |  | ||||||
|  | REM MkDocs 빌드 | ||||||
|  | echo [3/4] MkDocs 빌드 중... | ||||||
|  | cd %GUIDE_REPO% | ||||||
|  |  | ||||||
|  | REM mkdocs.yml에서 awesome-pages 플러그인 제거 (임시) | ||||||
|  | echo awesome-pages 플러그인 비활성화 중... | ||||||
|  | powershell -Command "(Get-Content mkdocs.yml) -replace '  - awesome-pages', '  # - awesome-pages' | Set-Content mkdocs_temp.yml" | ||||||
|  |  | ||||||
|  | REM 정적 사이트 빌드 | ||||||
|  | echo MkDocs 빌드 실행... | ||||||
|  | mkdocs build -f mkdocs_temp.yml | ||||||
|  | if errorlevel 1 ( | ||||||
|  |     echo. | ||||||
|  |     echo 오류: MkDocs 빌드 실패 | ||||||
|  |     echo. | ||||||
|  |     echo 해결 방법: | ||||||
|  |     echo 1. Python이 설치되어 있는지 확인 | ||||||
|  |     echo 2. 인터넷 연결 확인 | ||||||
|  |     echo 3. 방화벽/프록시 설정 확인 | ||||||
|  |     echo 4. 관리자 권한으로 실행 | ||||||
|  |     echo. | ||||||
|  |     echo 또는 수동 설치: | ||||||
|  |     echo   pip install mkdocs-material mkdocs-awesome-pages-plugin | ||||||
|  |     echo. | ||||||
|  |     del mkdocs_temp.yml 2>nul | ||||||
|  |     cd .. | ||||||
|  |     pause | ||||||
|  |     exit /b 1 | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | del mkdocs_temp.yml 2>nul | ||||||
|  | echo 완료 | ||||||
|  | echo. | ||||||
|  |  | ||||||
|  | REM ECO2 wwwroot 폴더로 복사 | ||||||
|  | echo [4/4] ECO2 wwwroot로 복사 중... | ||||||
|  | cd .. | ||||||
|  |  | ||||||
|  | REM wwwroot 폴더 생성 | ||||||
|  | if not exist "wwwroot" mkdir wwwroot | ||||||
|  |  | ||||||
|  | REM 기존 파일 백업 (선택사항) | ||||||
|  | if exist "wwwroot\index.html" ( | ||||||
|  |     echo 기존 파일 발견 - 백업 생성 중... | ||||||
|  |     if not exist "wwwroot_backup" mkdir wwwroot_backup | ||||||
|  |     xcopy /E /I /Y "wwwroot\*" "wwwroot_backup\" > nul | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | REM site 폴더 내용 복사 | ||||||
|  | echo 빌드된 파일 복사 중... | ||||||
|  | xcopy /E /I /Y "%GUIDE_REPO%\site\*" "wwwroot\" > nul | ||||||
|  | if errorlevel 1 ( | ||||||
|  |     echo 오류: 파일 복사 실패 | ||||||
|  |     pause | ||||||
|  |     exit /b 1 | ||||||
|  | ) | ||||||
|  | echo 완료 | ||||||
|  | echo. | ||||||
|  |  | ||||||
|  | REM 파일 개수 확인 | ||||||
|  | for /f %%A in ('dir /b /s "wwwroot\*.html" ^| find /c ".html"') do set HTML_COUNT=%%A | ||||||
|  | echo 복사된 HTML 파일: %HTML_COUNT%개 | ||||||
|  |  | ||||||
|  | echo. | ||||||
|  | echo ======================================== | ||||||
|  | echo 호스팅 준비 완료! | ||||||
|  | echo ======================================== | ||||||
|  | echo. | ||||||
|  | echo wwwroot 폴더: %CURRENT_DIR%\wwwroot | ||||||
|  | echo. | ||||||
|  | echo 다음 중 한 가지 방법으로 접속: | ||||||
|  | echo. | ||||||
|  | echo [방법 1] ECO2 프로그램의 OWIN 서버 사용 | ||||||
|  | echo   1. ECO2 프로그램 실행 | ||||||
|  | echo   2. OWIN 서버 시작 (포트 58123) | ||||||
|  | echo   3. 브라우저: http://localhost:58123 | ||||||
|  | echo. | ||||||
|  | echo [방법 2] MkDocs 개발 서버 사용 (추천 - 자동 새로고침) | ||||||
|  | echo   1. cd eco2_guide_center | ||||||
|  | echo   2. mkdocs serve | ||||||
|  | echo   3. 브라우저: http://127.0.0.1:8000 | ||||||
|  | echo. | ||||||
|  | echo [방법 3] Python 간단 서버 사용 | ||||||
|  | echo   1. cd wwwroot | ||||||
|  | echo   2. python -m http.server 8080 | ||||||
|  | echo   3. 브라우저: http://localhost:8080 | ||||||
|  | echo. | ||||||
|  | pause | ||||||
							
								
								
									
										
											BIN
										
									
								
								lib/Microsoft.Owin.FileSystems.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/Microsoft.Owin.FileSystems.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								lib/Microsoft.Owin.Host.HttpListener.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/Microsoft.Owin.Host.HttpListener.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								lib/Microsoft.Owin.Hosting.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/Microsoft.Owin.Hosting.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								lib/Microsoft.Owin.StaticFiles.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/Microsoft.Owin.StaticFiles.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								lib/Microsoft.Owin.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/Microsoft.Owin.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								lib/Owin.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/Owin.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										1
									
								
								run_claude.bat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								run_claude.bat
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | claude --dangerously-skip-permissions  | ||||||
		Reference in New Issue
	
	Block a user