282 lines
15 KiB
XML
282 lines
15 KiB
XML
<Window x:Class="DwgExtractorManual.MainWindow"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
Title="DWG 정보 추출기" Height="Auto" Width="900"
|
|
WindowStartupLocation="CenterScreen"
|
|
MinHeight="600" MinWidth="800">
|
|
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- 헤더 -->
|
|
<Border Grid.Row="0" Background="#2E3440" Padding="15">
|
|
<StackPanel>
|
|
<TextBlock Text="DWG 정보 추출기"
|
|
FontSize="24" FontWeight="Bold"
|
|
Foreground="White" HorizontalAlignment="Center"/>
|
|
<TextBlock Text="DWG 파일에서 표제란(Title Block) 정보를 추출하여 Excel 또는 데이터베이스에 저장"
|
|
FontSize="12" Foreground="LightGray"
|
|
HorizontalAlignment="Center" Margin="0,5,0,0"/>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- 변환할 폴더 선택 -->
|
|
<GroupBox Grid.Row="1" Header="🗂️ 변환할 폴더 선택" Margin="15,10,15,5"
|
|
FontWeight="SemiBold" FontSize="14">
|
|
<Grid Margin="10">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBox x:Name="txtSourceFolder" Grid.Column="0"
|
|
Height="35" VerticalContentAlignment="Center"
|
|
FontSize="12" IsReadOnly="True"
|
|
Background="WhiteSmoke" BorderBrush="DarkGray"/>
|
|
<Button x:Name="btnBrowseSource" Grid.Column="1"
|
|
Content="찾아보기" Width="90" Height="35"
|
|
Margin="10,0,0,0" Click="BtnBrowseSource_Click"
|
|
Background="#5E81AC" Foreground="White"
|
|
FontWeight="SemiBold" BorderThickness="0"/>
|
|
</Grid>
|
|
</GroupBox>
|
|
|
|
<!-- 결과 저장 폴더 선택 -->
|
|
<GroupBox Grid.Row="2" Header="💾 결과 저장 폴더 선택" Margin="15,5,15,5"
|
|
FontWeight="SemiBold" FontSize="14">
|
|
<Grid Margin="10">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBox x:Name="txtResultFolder" Grid.Column="0"
|
|
Height="35" VerticalContentAlignment="Center"
|
|
FontSize="12" IsReadOnly="True"
|
|
Background="WhiteSmoke" BorderBrush="DarkGray"/>
|
|
<Button x:Name="btnBrowseResult" Grid.Column="1"
|
|
Content="찾아보기" Width="90" Height="35"
|
|
Margin="10,0,0,0" Click="BtnBrowseResult_Click"
|
|
Background="#5E81AC" Foreground="White"
|
|
FontWeight="SemiBold" BorderThickness="0"/>
|
|
</Grid>
|
|
</GroupBox>
|
|
|
|
<!-- 출력 형식 선택 -->
|
|
<GroupBox Grid.Row="3" Header="⚙️ 출력 형식 선택" Margin="15,5,15,5"
|
|
FontWeight="SemiBold" FontSize="14">
|
|
<StackPanel Orientation="Horizontal" Margin="15" HorizontalAlignment="Center">
|
|
<RadioButton x:Name="rbExcel" Content="📊 Excel (.xlsx)"
|
|
FontSize="14" Margin="20,0" IsChecked="True"
|
|
GroupName="OutputType" VerticalAlignment="Center"/>
|
|
<RadioButton x:Name="rbDatabase" Content="🗄️ 데이터베이스 (PostgreSQL)"
|
|
FontSize="14" Margin="20,0"
|
|
GroupName="OutputType" VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
</GroupBox>
|
|
|
|
<!-- 진행 상황 및 컨트롤 -->
|
|
<GroupBox Grid.Row="4" Header="📊 작업 진행 상황" Margin="15,5,15,5"
|
|
FontWeight="SemiBold" FontSize="14">
|
|
<Grid Margin="10">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- 진행률 바 -->
|
|
<ProgressBar x:Name="progressBar" Grid.Row="0"
|
|
Height="25" Margin="0,5"/>
|
|
|
|
<!-- 상태 텍스트 -->
|
|
<TextBlock x:Name="txtStatus" Grid.Row="1"
|
|
Text="준비됨" FontSize="12"
|
|
HorizontalAlignment="Center" Margin="0,5"/>
|
|
|
|
<!-- 추출 버튼들 -->
|
|
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,10,0,5">
|
|
<Button x:Name="btnExtract"
|
|
Content="🚀 DWG 추출" Width="150" Height="45"
|
|
Margin="5,0"
|
|
Click="BtnExtract_Click" FontSize="14" FontWeight="Bold"
|
|
Background="#A3BE8C" Foreground="White"
|
|
BorderThickness="0">
|
|
<Button.Style>
|
|
<Style TargetType="Button">
|
|
<Setter Property="Background" Value="#A3BE8C"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Background" Value="#8FAE74"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Button.Style>
|
|
</Button>
|
|
<Button x:Name="btnPdfExtract"
|
|
Content="📄 PDF 추출" Width="150" Height="45"
|
|
Margin="5,0"
|
|
Click="BtnPdfExtract_Click" FontSize="14" FontWeight="Bold"
|
|
Background="#D08770" Foreground="White"
|
|
BorderThickness="0">
|
|
<Button.Style>
|
|
<Style TargetType="Button">
|
|
<Setter Property="Background" Value="#D08770"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Background" Value="#C5774F"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Button.Style>
|
|
</Button>
|
|
<Button x:Name="btnMerge"
|
|
Content="🔗 합치기" Width="150" Height="45"
|
|
Margin="5,0"
|
|
Click="BtnMerge_Click" FontSize="14" FontWeight="Bold"
|
|
Background="#B48EAD" Foreground="White"
|
|
BorderThickness="0">
|
|
<Button.Style>
|
|
<Style TargetType="Button">
|
|
<Setter Property="Background" Value="#B48EAD"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Background" Value="#A07A95"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Button.Style>
|
|
</Button>
|
|
<Button x:Name="btnAuto"
|
|
Content="🤖 자동" Width="150" Height="45"
|
|
Margin="5,0"
|
|
Click="BtnAuto_Click" FontSize="14" FontWeight="Bold"
|
|
Background="#4CAF50" Foreground="White"
|
|
BorderThickness="0">
|
|
<Button.Style>
|
|
<Style TargetType="Button">
|
|
<Setter Property="Background" Value="#4CAF50"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Background" Value="#45A049"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Button.Style>
|
|
</Button>
|
|
</StackPanel>
|
|
|
|
<!-- Second row of buttons -->
|
|
<StackPanel Grid.Row="3" Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,5,0,10">
|
|
<Button x:Name="btnDwgOnly"
|
|
Content="🔧 DWG추출(폴더별)" Width="150" Height="45"
|
|
Margin="5,0"
|
|
Click="BtnDwgOnly_Click" FontSize="14" FontWeight="Bold"
|
|
Background="#8B4513" Foreground="White"
|
|
BorderThickness="0">
|
|
<Button.Style>
|
|
<Style TargetType="Button">
|
|
<Setter Property="Background" Value="#8B4513"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Background" Value="#A0522D"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Button.Style>
|
|
</Button>
|
|
<Button x:Name="btnDwgHeightSort"
|
|
Content="📏 DWG추출(Height정렬)" Width="150" Height="45"
|
|
Margin="5,0"
|
|
Click="BtnDwgHeightSort_Click" FontSize="14" FontWeight="Bold"
|
|
Background="#FF6B35" Foreground="White"
|
|
BorderThickness="0">
|
|
<Button.Style>
|
|
<Style TargetType="Button">
|
|
<Setter Property="Background" Value="#FF6B35"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Background" Value="#E55A2B"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Button.Style>
|
|
</Button>
|
|
<Button x:Name="btnVisualizeCells"
|
|
Content="🎨 셀 시각화" Width="150" Height="45"
|
|
Margin="5,0"
|
|
Click="BtnVisualizeCells_Click" FontSize="14" FontWeight="Bold"
|
|
Background="#9B59B6" Foreground="White"
|
|
BorderThickness="0">
|
|
<Button.Style>
|
|
<Style TargetType="Button">
|
|
<Setter Property="Background" Value="#9B59B6"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Background" Value="#8E44AD"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Button.Style>
|
|
</Button>
|
|
<Button x:Name="btnTestIntersection"
|
|
Content="🔬 교차점 테스트" Width="150" Height="45"
|
|
Margin="5,0"
|
|
Click="BtnTestIntersection_Click" FontSize="14" FontWeight="Bold"
|
|
Background="#E74C3C" Foreground="White"
|
|
BorderThickness="0">
|
|
<Button.Style>
|
|
<Style TargetType="Button">
|
|
<Setter Property="Background" Value="#E74C3C"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Background" Value="#C0392B"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Button.Style>
|
|
</Button>
|
|
</StackPanel>
|
|
</Grid>
|
|
</GroupBox>
|
|
|
|
<!-- 로그 출력 -->
|
|
<GroupBox Grid.Row="6" Header="📋 실시간 로그" Margin="15,5,15,10" Height="300"
|
|
FontWeight="SemiBold" FontSize="14">
|
|
<ScrollViewer Margin="5" VerticalScrollBarVisibility="Auto">
|
|
<TextBox x:Name="txtLog"
|
|
TextWrapping="Wrap" AcceptsReturn="True"
|
|
IsReadOnly="True" BorderThickness="0"
|
|
Background="Black" Foreground="LimeGreen"
|
|
FontFamily="Consolas" FontSize="11"
|
|
VerticalScrollBarVisibility="Auto"/>
|
|
</ScrollViewer>
|
|
</GroupBox>
|
|
|
|
<!-- 상태바 -->
|
|
<StatusBar Grid.Row="7" Background="#3B4252" Foreground="White">
|
|
<StatusBarItem>
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock x:Name="txtStatusBar" Text="DWG 정보 추출기 v1.0 - 준비됨"/>
|
|
<Separator Margin="10,0"/>
|
|
<TextBlock x:Name="txtFileCount" Text="파일: 0개"/>
|
|
<Separator Margin="10,0"/>
|
|
<TextBlock x:Name="txtBuildTime" Text="빌드: 로딩중..." FontSize="11" Foreground="LightGray"/>
|
|
</StackPanel>
|
|
</StatusBarItem>
|
|
<StatusBarItem HorizontalAlignment="Right">
|
|
<TextBlock x:Name="txtTime" Text="{Binding Source={x:Static sys:DateTime.Now}, StringFormat='yyyy-MM-dd HH:mm:ss'}"
|
|
xmlns:sys="clr-namespace:System;assembly=System.Runtime"/>
|
|
</StatusBarItem>
|
|
</StatusBar>
|
|
</Grid>
|
|
</Window>
|