master
YJH 2026-01-16 09:04:01 +09:00
parent 2acdbded2c
commit a4f85e968e
507 changed files with 10478 additions and 414 deletions

Binary file not shown.

Binary file not shown.

View File

@ -1,17 +1,17 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\YJH\\Desktop\\NSV\\Main\\MainUI\\",
"WorkspaceRootPath": "C:\\Users\\YJH\\Desktop\\NSV\\MainUI\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{40919679-C172-452C-B5A9-8F94C7FE8312}|MainUI\\MainUI.csproj|c:\\users\\yjh\\desktop\\nsv\\main\\mainui\\mainui\\mainform.designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{40919679-C172-452C-B5A9-8F94C7FE8312}|MainUI\\MainUI.csproj|solutionrelative:mainui\\mainform.designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
"AbsoluteMoniker": "D:0:0:{40919679-C172-452C-B5A9-8F94C7FE8312}|MainUI\\MainUI.csproj|c:\\users\\yjh\\desktop\\nsv\\mainui\\mainui\\isolationtabusercontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{40919679-C172-452C-B5A9-8F94C7FE8312}|MainUI\\MainUI.csproj|solutionrelative:mainui\\isolationtabusercontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{40919679-C172-452C-B5A9-8F94C7FE8312}|MainUI\\MainUI.csproj|C:\\Users\\YJH\\Desktop\\NSV\\Main\\MainUI\\mainui\\isolationusercontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"AbsoluteMoniker": "D:0:0:{40919679-C172-452C-B5A9-8F94C7FE8312}|MainUI\\MainUI.csproj|C:\\Users\\YJH\\Desktop\\NSV\\MainUI\\mainui\\isolationusercontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{40919679-C172-452C-B5A9-8F94C7FE8312}|MainUI\\MainUI.csproj|solutionrelative:mainui\\isolationusercontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{40919679-C172-452C-B5A9-8F94C7FE8312}|MainUI\\MainUI.csproj|C:\\Users\\YJH\\Desktop\\NSV\\Main\\MainUI\\mainui\\mainform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"AbsoluteMoniker": "D:0:0:{40919679-C172-452C-B5A9-8F94C7FE8312}|MainUI\\MainUI.csproj|c:\\users\\yjh\\desktop\\nsv\\mainui\\mainui\\mainform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{40919679-C172-452C-B5A9-8F94C7FE8312}|MainUI\\MainUI.csproj|solutionrelative:mainui\\mainform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
@ -27,39 +27,41 @@
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "MainForm.Designer.cs",
"DocumentMoniker": "C:\\Users\\YJH\\Desktop\\NSV\\Main\\MainUI\\MainUI\\MainForm.Designer.cs",
"RelativeDocumentMoniker": "MainUI\\MainForm.Designer.cs",
"ToolTip": "C:\\Users\\YJH\\Desktop\\NSV\\Main\\MainUI\\MainUI\\MainForm.Designer.cs",
"RelativeToolTip": "MainUI\\MainForm.Designer.cs",
"ViewState": "AgIAABkAAAAAAAAAAAA3wDQAAABGAAAAAAAAAA==",
"Title": "IsolationTabUserControl.cs",
"DocumentMoniker": "C:\\Users\\YJH\\Desktop\\NSV\\MainUI\\MainUI\\IsolationTabUserControl.cs",
"RelativeDocumentMoniker": "MainUI\\IsolationTabUserControl.cs",
"ToolTip": "C:\\Users\\YJH\\Desktop\\NSV\\MainUI\\MainUI\\IsolationTabUserControl.cs",
"RelativeToolTip": "MainUI\\IsolationTabUserControl.cs",
"ViewState": "AgIAALkAAAAAAAAAAAApwNEAAAAbAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-11-11T07:55:44.649Z",
"WhenOpened": "2026-01-06T01:53:58.86Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "IsolationUserControl.cs",
"DocumentMoniker": "C:\\Users\\YJH\\Desktop\\NSV\\Main\\MainUI\\MainUI\\IsolationUserControl.cs",
"DocumentMoniker": "C:\\Users\\YJH\\Desktop\\NSV\\MainUI\\MainUI\\IsolationUserControl.cs",
"RelativeDocumentMoniker": "MainUI\\IsolationUserControl.cs",
"ToolTip": "C:\\Users\\YJH\\Desktop\\NSV\\Main\\MainUI\\MainUI\\IsolationUserControl.cs",
"ToolTip": "C:\\Users\\YJH\\Desktop\\NSV\\MainUI\\MainUI\\IsolationUserControl.cs",
"RelativeToolTip": "MainUI\\IsolationUserControl.cs",
"ViewState": "AgIAAB8BAAAAAAAAAAAiwA8BAAAoAAAAAAAAAA==",
"ViewState": "AgIAALIAAAAAAAAAAAAqwMsAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-11-05T01:12:05.729Z"
"WhenOpened": "2025-11-05T01:12:05.729Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "MainForm.cs",
"DocumentMoniker": "C:\\Users\\YJH\\Desktop\\NSV\\Main\\MainUI\\MainUI\\MainForm.cs",
"DocumentMoniker": "C:\\Users\\YJH\\Desktop\\NSV\\MainUI\\MainUI\\MainForm.cs",
"RelativeDocumentMoniker": "MainUI\\MainForm.cs",
"ToolTip": "C:\\Users\\YJH\\Desktop\\NSV\\Main\\MainUI\\MainUI\\MainForm.cs",
"ToolTip": "C:\\Users\\YJH\\Desktop\\NSV\\MainUI\\MainUI\\MainForm.cs",
"RelativeToolTip": "MainUI\\MainForm.cs",
"ViewState": "AgIAAMcAAAAAAAAAAMBAwMEBAAARAAAAAAAAAA==",
"ViewState": "AgIAAGMAAAAAAAAAAAAAAAMBAAAvAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-11-04T00:39:57.377Z"
"WhenOpened": "2025-11-04T00:39:57.377Z",
"EditorCaption": ""
}
]
}

View File

@ -1,14 +1,18 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\YJH\\Desktop\\NSV\\Main\\MainUI\\",
"WorkspaceRootPath": "C:\\Users\\YJH\\Desktop\\NSV\\MainUI\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{40919679-C172-452C-B5A9-8F94C7FE8312}|MainUI\\MainUI.csproj|C:\\Users\\YJH\\Desktop\\NSV\\Main\\MainUI\\mainui\\mainform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{40919679-C172-452C-B5A9-8F94C7FE8312}|MainUI\\MainUI.csproj|solutionrelative:mainui\\mainform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
"AbsoluteMoniker": "D:0:0:{40919679-C172-452C-B5A9-8F94C7FE8312}|MainUI\\MainUI.csproj|c:\\users\\yjh\\desktop\\nsv\\mainui\\mainui\\isolationtabusercontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{40919679-C172-452C-B5A9-8F94C7FE8312}|MainUI\\MainUI.csproj|solutionrelative:mainui\\isolationtabusercontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{40919679-C172-452C-B5A9-8F94C7FE8312}|MainUI\\MainUI.csproj|C:\\Users\\YJH\\Desktop\\NSV\\Main\\MainUI\\mainui\\isolationusercontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"AbsoluteMoniker": "D:0:0:{40919679-C172-452C-B5A9-8F94C7FE8312}|MainUI\\MainUI.csproj|C:\\Users\\YJH\\Desktop\\NSV\\MainUI\\mainui\\isolationusercontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{40919679-C172-452C-B5A9-8F94C7FE8312}|MainUI\\MainUI.csproj|solutionrelative:mainui\\isolationusercontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{40919679-C172-452C-B5A9-8F94C7FE8312}|MainUI\\MainUI.csproj|c:\\users\\yjh\\desktop\\nsv\\mainui\\mainui\\mainform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{40919679-C172-452C-B5A9-8F94C7FE8312}|MainUI\\MainUI.csproj|solutionrelative:mainui\\mainform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
@ -18,30 +22,43 @@
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 1,
"SelectedChildIndex": 0,
"Children": [
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "IsolationTabUserControl.cs",
"DocumentMoniker": "C:\\Users\\YJH\\Desktop\\NSV\\MainUI\\MainUI\\IsolationTabUserControl.cs",
"RelativeDocumentMoniker": "MainUI\\IsolationTabUserControl.cs",
"ToolTip": "C:\\Users\\YJH\\Desktop\\NSV\\MainUI\\MainUI\\IsolationTabUserControl.cs",
"RelativeToolTip": "MainUI\\IsolationTabUserControl.cs",
"ViewState": "AgIAALkAAAAAAAAAAAApwNEAAAAbAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-01-06T01:53:58.86Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "IsolationUserControl.cs",
"DocumentMoniker": "C:\\Users\\YJH\\Desktop\\NSV\\Main\\MainUI\\MainUI\\IsolationUserControl.cs",
"DocumentMoniker": "C:\\Users\\YJH\\Desktop\\NSV\\MainUI\\MainUI\\IsolationUserControl.cs",
"RelativeDocumentMoniker": "MainUI\\IsolationUserControl.cs",
"ToolTip": "C:\\Users\\YJH\\Desktop\\NSV\\Main\\MainUI\\MainUI\\IsolationUserControl.cs",
"ToolTip": "C:\\Users\\YJH\\Desktop\\NSV\\MainUI\\MainUI\\IsolationUserControl.cs",
"RelativeToolTip": "MainUI\\IsolationUserControl.cs",
"ViewState": "AgIAAJgAAAAAAAAAAAAAACQAAAAYAAAAAAAAAA==",
"ViewState": "AgIAALIAAAAAAAAAAAAqwMsAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-11-05T01:12:05.729Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
"DocumentIndex": 2,
"Title": "MainForm.cs",
"DocumentMoniker": "C:\\Users\\YJH\\Desktop\\NSV\\Main\\MainUI\\MainUI\\MainForm.cs",
"DocumentMoniker": "C:\\Users\\YJH\\Desktop\\NSV\\MainUI\\MainUI\\MainForm.cs",
"RelativeDocumentMoniker": "MainUI\\MainForm.cs",
"ToolTip": "C:\\Users\\YJH\\Desktop\\NSV\\Main\\MainUI\\MainUI\\MainForm.cs",
"ToolTip": "C:\\Users\\YJH\\Desktop\\NSV\\MainUI\\MainUI\\MainForm.cs",
"RelativeToolTip": "MainUI\\MainForm.cs",
"ViewState": "AgIAAO8BAAAAAAAAAAA1wDUAAAAoAAAAAAAAAA==",
"ViewState": "AgIAAGMAAAAAAAAAAAAAAAMBAAAvAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-11-04T00:39:57.377Z",
"EditorCaption": ""

336
MainUI/IsolationTabUserControl.Designer.cs generated Normal file
View File

@ -0,0 +1,336 @@

using DevExpress.Utils.Layout;
using DevExpress.XtraEditors;
namespace MainUI
{
partial class IsolationTabUserControl
{
/// <summary>
/// 필수 디자이너 변수입니다.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 사용 중인 모든 리소스를 정리합니다.
/// </summary>
/// <param name="disposing">관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region 구성 요소 디자이너에서 생성한 코드
/// <summary>
/// 디자이너 지원에 필요한 메서드입니다.
/// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
/// </summary>
private void InitializeComponent()
{
this.tablePanel1 = new DevExpress.Utils.Layout.TablePanel();
this.tablePanel2 = new DevExpress.Utils.Layout.TablePanel();
this.btn_Table = new System.Windows.Forms.Button();
this.btn_Update = new System.Windows.Forms.Button();
this.btn_Del = new System.Windows.Forms.Button();
this.btn_Report = new System.Windows.Forms.Button();
this.btn_Add = new System.Windows.Forms.Button();
this.pictureEdit1 = new DevExpress.XtraEditors.PictureEdit();
this.listBoxControl1 = new DevExpress.XtraEditors.ListBoxControl();
this.panelControl1 = new DevExpress.XtraEditors.PanelControl();
this.splitContainerControl1 = new DevExpress.XtraEditors.SplitContainerControl();
this.accordionControl1 = new DevExpress.XtraBars.Navigation.AccordionControl();
this.InformationTab = new DevExpress.XtraBars.Navigation.AccordionControlElement();
this.IsolationTab = new DevExpress.XtraBars.Navigation.AccordionControlElement();
((System.ComponentModel.ISupportInitialize)(this.tablePanel1)).BeginInit();
this.tablePanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.tablePanel2)).BeginInit();
this.tablePanel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureEdit1.Properties)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.listBoxControl1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.panelControl1)).BeginInit();
this.panelControl1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainerControl1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.splitContainerControl1.Panel1)).BeginInit();
this.splitContainerControl1.Panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainerControl1.Panel2)).BeginInit();
this.splitContainerControl1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.accordionControl1)).BeginInit();
this.SuspendLayout();
//
// tablePanel1
//
this.tablePanel1.Columns.AddRange(new DevExpress.Utils.Layout.TablePanelColumn[] {
new DevExpress.Utils.Layout.TablePanelColumn(DevExpress.Utils.Layout.TablePanelEntityStyle.Relative, 80F),
new DevExpress.Utils.Layout.TablePanelColumn(DevExpress.Utils.Layout.TablePanelEntityStyle.Relative, 20F)});
this.tablePanel1.Controls.Add(this.tablePanel2);
this.tablePanel1.Controls.Add(this.pictureEdit1);
this.tablePanel1.Controls.Add(this.listBoxControl1);
this.tablePanel1.Controls.Add(this.panelControl1);
this.tablePanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tablePanel1.Location = new System.Drawing.Point(0, 0);
this.tablePanel1.Name = "tablePanel1";
this.tablePanel1.Padding = new System.Windows.Forms.Padding(7);
this.tablePanel1.Rows.AddRange(new DevExpress.Utils.Layout.TablePanelRow[] {
new DevExpress.Utils.Layout.TablePanelRow(DevExpress.Utils.Layout.TablePanelEntityStyle.Relative, 70F),
new DevExpress.Utils.Layout.TablePanelRow(DevExpress.Utils.Layout.TablePanelEntityStyle.Absolute, 40F),
new DevExpress.Utils.Layout.TablePanelRow(DevExpress.Utils.Layout.TablePanelEntityStyle.Relative, 23F)});
this.tablePanel1.Size = new System.Drawing.Size(1432, 928);
this.tablePanel1.TabIndex = 2;
//
// tablePanel2
//
this.tablePanel1.SetColumn(this.tablePanel2, 0);
this.tablePanel2.Columns.AddRange(new DevExpress.Utils.Layout.TablePanelColumn[] {
new DevExpress.Utils.Layout.TablePanelColumn(DevExpress.Utils.Layout.TablePanelEntityStyle.Absolute, 170F),
new DevExpress.Utils.Layout.TablePanelColumn(DevExpress.Utils.Layout.TablePanelEntityStyle.Relative, 45F),
new DevExpress.Utils.Layout.TablePanelColumn(DevExpress.Utils.Layout.TablePanelEntityStyle.Absolute, 145F),
new DevExpress.Utils.Layout.TablePanelColumn(DevExpress.Utils.Layout.TablePanelEntityStyle.Absolute, 145F),
new DevExpress.Utils.Layout.TablePanelColumn(DevExpress.Utils.Layout.TablePanelEntityStyle.Absolute, 145F)});
this.tablePanel2.Controls.Add(this.btn_Table);
this.tablePanel2.Controls.Add(this.btn_Update);
this.tablePanel2.Controls.Add(this.btn_Del);
this.tablePanel2.Controls.Add(this.btn_Report);
this.tablePanel2.Controls.Add(this.btn_Add);
this.tablePanel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.tablePanel2.Location = new System.Drawing.Point(7, 665);
this.tablePanel2.Margin = new System.Windows.Forms.Padding(0);
this.tablePanel2.Name = "tablePanel2";
this.tablePanel1.SetRow(this.tablePanel2, 1);
this.tablePanel2.Rows.AddRange(new DevExpress.Utils.Layout.TablePanelRow[] {
new DevExpress.Utils.Layout.TablePanelRow(DevExpress.Utils.Layout.TablePanelEntityStyle.Relative, 100F)});
this.tablePanel2.Size = new System.Drawing.Size(1134, 40);
this.tablePanel2.TabIndex = 0;
//
// btn_Table
//
this.tablePanel2.SetColumn(this.btn_Table, 1);
this.btn_Table.Dock = System.Windows.Forms.DockStyle.Left;
this.btn_Table.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btn_Table.Location = new System.Drawing.Point(185, 0);
this.btn_Table.Margin = new System.Windows.Forms.Padding(15, 0, 0, 0);
this.btn_Table.Name = "btn_Table";
this.tablePanel2.SetRow(this.btn_Table, 0);
this.btn_Table.Size = new System.Drawing.Size(170, 40);
this.btn_Table.TabIndex = 5;
this.btn_Table.UseVisualStyleBackColor = true;
this.btn_Table.Click += new System.EventHandler(this.btn_CAD_Click);
//
// btn_Update
//
this.tablePanel2.SetColumn(this.btn_Update, 4);
this.btn_Update.Dock = System.Windows.Forms.DockStyle.Right;
this.btn_Update.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btn_Update.Location = new System.Drawing.Point(992, 0);
this.btn_Update.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0);
this.btn_Update.Name = "btn_Update";
this.tablePanel2.SetRow(this.btn_Update, 0);
this.btn_Update.Size = new System.Drawing.Size(139, 40);
this.btn_Update.TabIndex = 4;
this.btn_Update.UseVisualStyleBackColor = true;
this.btn_Update.Click += new System.EventHandler(this.Btn_Update_Click);
//
// btn_Del
//
this.tablePanel2.SetColumn(this.btn_Del, 3);
this.btn_Del.Dock = System.Windows.Forms.DockStyle.Left;
this.btn_Del.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btn_Del.Location = new System.Drawing.Point(847, 0);
this.btn_Del.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0);
this.btn_Del.Name = "btn_Del";
this.tablePanel2.SetRow(this.btn_Del, 0);
this.btn_Del.Size = new System.Drawing.Size(133, 40);
this.btn_Del.TabIndex = 1;
this.btn_Del.UseVisualStyleBackColor = true;
this.btn_Del.Click += new System.EventHandler(this.btn_Del_Click);
//
// btn_Report
//
this.btn_Report.Dock = System.Windows.Forms.DockStyle.Fill;
this.btn_Report.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btn_Report.Location = new System.Drawing.Point(0, 0);
this.btn_Report.Margin = new System.Windows.Forms.Padding(0);
this.btn_Report.Name = "btn_Report";
this.btn_Report.Size = new System.Drawing.Size(170, 40);
this.btn_Report.TabIndex = 2;
this.btn_Report.UseVisualStyleBackColor = true;
this.btn_Report.Click += new System.EventHandler(this.btn_Report_Click);
//
// btn_Add
//
this.tablePanel2.SetColumn(this.btn_Add, 2);
this.btn_Add.Dock = System.Windows.Forms.DockStyle.Left;
this.btn_Add.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btn_Add.Location = new System.Drawing.Point(702, 0);
this.btn_Add.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0);
this.btn_Add.Name = "btn_Add";
this.tablePanel2.SetRow(this.btn_Add, 0);
this.btn_Add.Size = new System.Drawing.Size(133, 40);
this.btn_Add.TabIndex = 0;
this.btn_Add.UseVisualStyleBackColor = true;
this.btn_Add.Click += new System.EventHandler(this.btn_Add_Click);
//
// pictureEdit1
//
this.tablePanel1.SetColumn(this.pictureEdit1, 0);
this.pictureEdit1.Dock = System.Windows.Forms.DockStyle.Fill;
this.pictureEdit1.Location = new System.Drawing.Point(10, 708);
this.pictureEdit1.Name = "pictureEdit1";
this.pictureEdit1.Properties.ShowCameraMenuItem = DevExpress.XtraEditors.Controls.CameraMenuItemVisibility.Auto;
this.pictureEdit1.Properties.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Zoom;
this.tablePanel1.SetRow(this.pictureEdit1, 2);
this.pictureEdit1.Size = new System.Drawing.Size(1128, 210);
this.pictureEdit1.TabIndex = 4;
//
// listBoxControl1
//
this.listBoxControl1.Appearance.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.listBoxControl1.Appearance.Options.UseFont = true;
this.listBoxControl1.Appearance.Options.UseTextOptions = true;
this.listBoxControl1.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.listBoxControl1.Appearance.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.tablePanel1.SetColumn(this.listBoxControl1, 1);
this.listBoxControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.listBoxControl1.Location = new System.Drawing.Point(1144, 10);
this.listBoxControl1.Name = "listBoxControl1";
this.tablePanel1.SetRow(this.listBoxControl1, 0);
this.tablePanel1.SetRowSpan(this.listBoxControl1, 3);
this.listBoxControl1.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
this.listBoxControl1.Size = new System.Drawing.Size(278, 908);
this.listBoxControl1.TabIndex = 3;
this.listBoxControl1.SelectedIndexChanged += new System.EventHandler(this.listBoxControl1_SelectedIndexChanged);
//
// panelControl1
//
this.tablePanel1.SetColumn(this.panelControl1, 0);
this.panelControl1.Controls.Add(this.splitContainerControl1);
this.panelControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panelControl1.Location = new System.Drawing.Point(10, 10);
this.panelControl1.Name = "panelControl1";
this.tablePanel1.SetRow(this.panelControl1, 0);
this.panelControl1.Size = new System.Drawing.Size(1128, 652);
this.panelControl1.TabIndex = 1;
//
// splitContainerControl1
//
this.splitContainerControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainerControl1.Location = new System.Drawing.Point(2, 2);
this.splitContainerControl1.Name = "splitContainerControl1";
this.splitContainerControl1.Padding = new System.Windows.Forms.Padding(5);
//
// splitContainerControl1.Panel1
//
this.splitContainerControl1.Panel1.Controls.Add(this.accordionControl1);
this.splitContainerControl1.Panel1.Text = "Panel1";
//
// splitContainerControl1.Panel2
//
this.splitContainerControl1.Panel2.Padding = new System.Windows.Forms.Padding(5);
this.splitContainerControl1.Panel2.Text = "Panel2";
this.splitContainerControl1.Size = new System.Drawing.Size(1124, 648);
this.splitContainerControl1.SplitterPosition = 257;
this.splitContainerControl1.TabIndex = 3;
//
// accordionControl1
//
this.accordionControl1.Appearance.AccordionControl.BackColor = System.Drawing.Color.White;
this.accordionControl1.Appearance.AccordionControl.Options.UseBackColor = true;
this.accordionControl1.Appearance.Item.Default.BackColor = System.Drawing.Color.Transparent;
this.accordionControl1.Appearance.Item.Default.Options.UseBackColor = true;
this.accordionControl1.Appearance.Item.Hovered.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
this.accordionControl1.Appearance.Item.Hovered.Options.UseBackColor = true;
this.accordionControl1.Appearance.Item.Pressed.BackColor = System.Drawing.SystemColors.MenuHighlight;
this.accordionControl1.Appearance.Item.Pressed.Options.UseBackColor = true;
this.accordionControl1.Dock = System.Windows.Forms.DockStyle.Left;
this.accordionControl1.Elements.AddRange(new DevExpress.XtraBars.Navigation.AccordionControlElement[] {
this.InformationTab,
this.IsolationTab});
this.accordionControl1.ItemHeight = 70;
this.accordionControl1.Location = new System.Drawing.Point(0, 0);
this.accordionControl1.Name = "accordionControl1";
this.accordionControl1.Padding = new System.Windows.Forms.Padding(3);
this.accordionControl1.ScrollBarMode = DevExpress.XtraBars.Navigation.ScrollBarMode.Hidden;
this.accordionControl1.Size = new System.Drawing.Size(260, 638);
this.accordionControl1.TabIndex = 1;
this.accordionControl1.ElementClick += new DevExpress.XtraBars.Navigation.ElementClickEventHandler(this.accordionControl1_ElementClick);
//
// InformationTab
//
this.InformationTab.Appearance.Default.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.InformationTab.Appearance.Default.Options.UseFont = true;
this.InformationTab.Appearance.Default.Options.UseTextOptions = true;
this.InformationTab.Appearance.Default.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.InformationTab.Appearance.Default.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.InformationTab.Appearance.Hovered.BackColor = System.Drawing.Color.SkyBlue;
this.InformationTab.Appearance.Hovered.Options.UseBackColor = true;
this.InformationTab.HeaderTemplate.AddRange(new DevExpress.XtraBars.Navigation.HeaderElementInfo[] {
new DevExpress.XtraBars.Navigation.HeaderElementInfo(DevExpress.XtraBars.Navigation.HeaderElementType.Text),
new DevExpress.XtraBars.Navigation.HeaderElementInfo(DevExpress.XtraBars.Navigation.HeaderElementType.Image),
new DevExpress.XtraBars.Navigation.HeaderElementInfo(DevExpress.XtraBars.Navigation.HeaderElementType.HeaderControl),
new DevExpress.XtraBars.Navigation.HeaderElementInfo(DevExpress.XtraBars.Navigation.HeaderElementType.ContextButtons)});
this.InformationTab.Name = "InformationTab";
this.InformationTab.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
this.InformationTab.Tag = "Information";
this.InformationTab.Click += new System.EventHandler(this.InformationTab_Click);
//
// IsolationTab
//
this.IsolationTab.Appearance.Default.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.IsolationTab.Appearance.Default.Options.UseFont = true;
this.IsolationTab.Appearance.Default.Options.UseTextOptions = true;
this.IsolationTab.Appearance.Default.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.IsolationTab.Appearance.Default.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.IsolationTab.Appearance.Hovered.BackColor = System.Drawing.Color.SkyBlue;
this.IsolationTab.Appearance.Hovered.Options.UseBackColor = true;
this.IsolationTab.Name = "IsolationTab";
this.IsolationTab.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
this.IsolationTab.Click += new System.EventHandler(this.IsolationTab_Click);
//
// IsolationTabUserControl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.tablePanel1);
this.Name = "IsolationTabUserControl";
this.Size = new System.Drawing.Size(1432, 928);
this.Load += new System.EventHandler(this.IsolationTab_Load);
((System.ComponentModel.ISupportInitialize)(this.tablePanel1)).EndInit();
this.tablePanel1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.tablePanel2)).EndInit();
this.tablePanel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureEdit1.Properties)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.listBoxControl1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.panelControl1)).EndInit();
this.panelControl1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainerControl1.Panel1)).EndInit();
this.splitContainerControl1.Panel1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainerControl1.Panel2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.splitContainerControl1)).EndInit();
this.splitContainerControl1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.accordionControl1)).EndInit();
this.ResumeLayout(false);
}
#endregion
private TablePanel tablePanel1;
private TablePanel tablePanel2;
private System.Windows.Forms.Button btn_Table;
private System.Windows.Forms.Button btn_Update;
private System.Windows.Forms.Button btn_Del;
private System.Windows.Forms.Button btn_Report;
private System.Windows.Forms.Button btn_Add;
private PictureEdit pictureEdit1;
public ListBoxControl listBoxControl1;
private PanelControl panelControl1;
private SplitContainerControl splitContainerControl1;
private DevExpress.XtraBars.Navigation.AccordionControl accordionControl1;
private DevExpress.XtraBars.Navigation.AccordionControlElement InformationTab;
private DevExpress.XtraBars.Navigation.AccordionControlElement IsolationTab;
}
}

View File

@ -0,0 +1,443 @@
using MainUI.Model;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NSVDataEdit;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MainUI
{
public partial class IsolationTabUserControl : UserControl
{
public InformationUserControl tab1;
public IsolationUserControl tab2;
public Information InformationData { get; private set; }
public Isolation IsolationData { get; private set; }
public List<EquipmentPackage> EquipmentData { get; set; } = new List<EquipmentPackage>();
//[0]. "ISOData.json" [1]. "WeightData.json", [2]. "DisplacementData.json" [3]. "DefaultQty.json"
List<(JObject Json, string FilePath)> jsonFiles = new List<(JObject, string)>();
public IsolationTabUserControl()
{
InitializeComponent();
JsonDataLoad();
tab1 = new InformationUserControl(jsonFiles[0].Json, jsonFiles[1].Json, jsonFiles[3].Json);
tab2 = new IsolationUserControl(jsonFiles[2].Json);
ChangedLanguage();
// 이벤트 구독
tab1.ModelItemsChanged += Tab1_ModelItemsChanged;
tab1.WeightChanged += Tab1_WeightChanged;
tab1.TypeSelectionChanged += Tab1_TypeSelectionChanged;
tab1.EquipmentTypeSelectionChanged += Tab1_EquipmentTypeSelectionChanged;
tab1.ISOQtyChanged += Tab1_ISOQtyChanged;
tab2.DiameterChanged += Tab2_DiameterChanged;
tab2.ModelNameChanged += Tab2_ModelNameChanged;
tab2.QtyCheckedChanged += Tab2_QtyCheckedChanged;
var types = jsonFiles[0].Json.Properties().Select(p => p.Name).ToList();
tab1.LoadEquipmentTypes(types);
tab1.Dock = DockStyle.Fill;
tab2.Dock = DockStyle.Fill;
string imagePath = Path.Combine(Application.StartupPath, "ModelImage", "VWM.jpg");
if (File.Exists(imagePath))
{
pictureEdit1.Image = Image.FromFile(imagePath);
}
}
private void JsonDataLoad()
{
string[] fileNames = { "ISOData.json", "WeightData.json", "DisplacementData.json", "DefaultQty.json" };
foreach (var fileName in fileNames)
{
string fullPath = Path.GetFullPath(Path.Combine(AppContext.BaseDirectory, fileName));
if (!File.Exists(fullPath))
{
MessageBox.Show(fileName + "파일이 존재하지 않습니다.");
return;
}
string json = File.ReadAllText(fullPath);
JObject obj = JObject.Parse(json);
jsonFiles.Add((obj, fullPath));
}
}
public void ChangedLanguage()
{
var rm = Properties.Resources.ResourceManager;
CultureInfo culture = Thread.CurrentThread.CurrentUICulture;
var font = new Font("Tahoma", 12F);
// 탭 / 버튼 리소스 적용 함수
string L(string key) => rm.GetString(key, culture) ?? key;
// --- Tabs ---
InformationTab.Text = L("General_Information");
IsolationTab.Text = L("Isolator_Information");
InformationTab.Appearance.Default.Font = font;
IsolationTab.Appearance.Default.Font = font;
// --- Buttons ---
btn_Add.Text = L("Add");
btn_Del.Text = L("Delete");
btn_Update.Text = L("Update");
btn_Report.Text = L("Print_Invoice");
btn_Table.Text = L("Print_Table");
btn_Add.Font = font;
btn_Del.Font = font;
btn_Update.Font = font;
btn_Report.Font = font;
btn_Table.Font = font;
tab1.ChangedLanguage();
tab2.ChangedLanguage();
}
//---------------------- ControlEvent----------------------------------
//---------------------- ControlEvent----------------------------------
//---------------------- ControlEvent----------------------------------
private void InformationTab_Click(object sender, EventArgs e)
{
splitContainerControl1.Panel2.Controls.Clear();
splitContainerControl1.Panel2.Controls.Add(tab1);
}
private void IsolationTab_Click(object sender, EventArgs e)
{
splitContainerControl1.Panel2.Controls.Clear();
splitContainerControl1.Panel2.Controls.Add(tab2);
}
private void IsolationTab_Load(object sender, EventArgs e)
{
splitContainerControl1.Panel2.Controls.Clear();
splitContainerControl1.Panel2.Controls.Add(tab1);
}
private void accordionControl1_ElementClick(object sender, DevExpress.XtraBars.Navigation.ElementClickEventArgs e)
{
// 모든 아이템 색상 초기화
foreach (var element in accordionControl1.Elements)
{
element.Appearance.Normal.BackColor = Color.Empty;
}
// 선택된 아이템만 색상 변경
e.Element.Appearance.Normal.BackColor = SystemColors.MenuHighlight;
// 선택 상태 유지
accordionControl1.SelectedElement = e.Element;
}
private void btn_Add_Click(object sender, EventArgs e)
{
string label = tab1.GetInformation().EQUIPMENTNUMBER.ToString();
foreach (string list in listBoxControl1.Items)
{
if (list == label)
{
MessageBox.Show($"{list}는 이미 존재 하는 장비 번호 입니다!", "데이터 추가 실패!", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
}
EquipmentData.Add(new EquipmentPackage
{
Information = tab1.GetInformation(),
Isolation = tab2.GetIsolation()
});
listBoxControl1.Items.Add(label);
listBoxControl1.SelectedIndex = listBoxControl1.ItemCount - 1;
}
private void btn_Report_Click(object sender, EventArgs e)
{
foreach (var data in EquipmentData)
{
if (data.Information.TYPE == "")
{
data.Information.TYPE = data.Information.CATEGORY;
}
if (data.Isolation.IBBASE == "0" && (data.Information.RPM == "" || data.Information.QUANTITY == "" ||
data.Isolation.DISCHARGEDIAMETER == "" || data.Isolation.SUCTIONDIAMETER == ""))
{
MessageBox.Show($"장비번호 {data.Information.EQUIPMENTNUMBER} 에 입력하지 않은 데이터가 존재합니다.", "내보내기 실패!", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
}
string baseDir = AppDomain.CurrentDomain.BaseDirectory;
string reportDir = Path.Combine(baseDir, "Report");
string exePath = Path.Combine(reportDir, "NSV_Report.exe");
string savePath1 = Path.Combine(Application.StartupPath, "equipment.json");
string savePath2 = Path.Combine(reportDir, "equipment.json");
string json = JsonConvert.SerializeObject(EquipmentData, Newtonsoft.Json.Formatting.Indented);
File.WriteAllText(savePath1, json, Encoding.UTF8);
File.WriteAllText(savePath2, json, Encoding.UTF8);
MessageBox.Show("저장 완료!", "저장 완료", MessageBoxButtons.OK, MessageBoxIcon.Information);
var psi = new ProcessStartInfo
{
FileName = exePath,
WorkingDirectory = reportDir,
UseShellExecute = false,
Arguments = "0",
};
Process.Start(psi);
}
private void btn_CAD_Click(object sender, EventArgs e)
{
string savePath = Path.Combine(Application.StartupPath, "equipment.json");
string json = JsonConvert.SerializeObject(EquipmentData, Newtonsoft.Json.Formatting.Indented);
File.WriteAllText(savePath, json, Encoding.UTF8);
LoadEquipmentList.DllLoad();
}
private void listBoxControl1_SelectedIndexChanged(object sender, EventArgs e)
{
// 새 항목 표시
int idx = listBoxControl1.SelectedIndex;
if (idx < 0 || idx >= EquipmentData.Count)
return;
tab1.SetInformation(EquipmentData[idx].Information);
tab2.SetIsolation(EquipmentData[idx].Isolation);
}
private void btn_Del_Click(object sender, EventArgs e)
{
listBoxControl1.SelectedIndexChanged -= listBoxControl1_SelectedIndexChanged;
var indices = listBoxControl1.SelectedIndices.Cast<int>().OrderByDescending(i => i).ToList();
if (indices.Count == 0)
return;
int lastIndex = indices.Last(); // 삭제 후 다시 선택할 기준 인덱스
// EquipmentData와 ListBoxControl 동기 삭제
foreach (int idx in indices)
{
if (idx >= 0 && idx < EquipmentData.Count)
EquipmentData.RemoveAt(idx);
if (idx >= 0 && idx < listBoxControl1.Items.Count)
listBoxControl1.Items.RemoveAt(idx);
}
// 이벤트 다시 연결
listBoxControl1.SelectedIndexChanged += listBoxControl1_SelectedIndexChanged;
if (EquipmentData.Count == 0)
{
tab1.SetInformation(null);
tab2.SetIsolation(null);
return;
}
// 인덱스 계산 (현재 인덱스 - 1, 단 0 이하이면 0)
int newIndex = lastIndex - 1;
if (newIndex < 0) newIndex = 0;
EquipmentPackage selectedData = EquipmentData[newIndex];
if (selectedData == null)
return;
tab1.SetInformation(selectedData.Information);
tab2.SetIsolation(selectedData.Isolation);
}
private void Btn_Update_Click(object sender, EventArgs e)
{
int idx = listBoxControl1.SelectedIndex;
if (idx < 0 || idx >= EquipmentData.Count)
{
MessageBox.Show("수정할 항목을 선택하세요.");
return;
}
// 현재 탭의 내용으로 갱신
EquipmentData[idx].Information = tab1.GetInformation();
EquipmentData[idx].Isolation = tab2.GetIsolation();
// 리스트박스 항목 라벨도 갱신 (예: 장비번호 표시)
string newLabel = tab1.GetInformation().EQUIPMENTNUMBER.ToString();
listBoxControl1.Items[idx] = newLabel;
MessageBox.Show("선택된 항목이 수정되었습니다.");
}
//---------------------- UserControlEvent----------------------------------
//---------------------- UserControlEvent----------------------------------
//---------------------- UserControlEvent----------------------------------
private void Tab1_TypeSelectionChanged(object sender, string selectedText)
{
bool cond = tab2.rg_ISO_IBBASE.SelectedIndex == 0 && (selectedText == "양흡입" || selectedText == "인라인");
tab2.text_ISO_pumpL2.Enabled = cond;
tab2.text_ISO_pumpW2.Enabled = cond;
}
private void Tab1_EquipmentTypeSelectionChanged(object sender, string selectedText)
{
tab2.EquipmentType = selectedText;
DevExpress.XtraEditors.ComboBoxEdit[] comboBoxes =
{
tab2.cb_ISO_FlexibleModel1,
tab2.cb_ISO_FlexibleModel2,
tab2.cb_ISO_FlexibleModel3
};
DevExpress.XtraEditors.TextEdit[] textEdits =
{
tab2.text_ISO_FlexibleDia1,
tab2.text_ISO_FlexibleDia2,
tab2.text_ISO_FlexibleDia3,
tab2.text_ISO_FlexibleQty1,
tab2.text_ISO_FlexibleQty2,
tab2.text_ISO_FlexibleQty3,
};
int? index = null;
bool enabled = false;
if (selectedText == "냉각탑")
{
index = 0;
enabled = true;
}
else if (selectedText == "펌프" || selectedText == "냉동기")
{
index = 1;
enabled = true;
}
foreach (var combo in comboBoxes)
{
combo.Enabled = enabled;
if (index.HasValue)
combo.SelectedIndex = index.Value;
}
foreach (var text in textEdits)
{
text.Enabled = enabled;
}
string txt = tab2.cb_ISO_MODELNAME.Text ?? string.Empty;
string model = txt.Length >= 3 ? txt.Substring(0, 3) : txt;
if (selectedText == "펌프" && (model == "SMA" || model == "SMB"))
{
tab2.rg_ISO_IBBASE.SelectedIndex = 0;
}
else
{
tab2.rg_ISO_IBBASE.SelectedIndex = 1;
}
}
private void Tab1_ModelItemsChanged(List<string> model)
{
// tab1에서 선택한 값 → tab2에도 반영
tab2.cb_ISO_MODELNAME.Properties.Items.Clear();
tab2.cb_ISO_MODELNAME.Properties.Items.AddRange(model);
tab2.cb_ISO_MODELNAME.SelectedIndex = 0;
}
private void Tab1_WeightChanged(string weight)
{
// tab1에서 선택한 값 → tab2에도 반영
tab2.Weight = weight;
tab2.FindDisPlacement();
tab2.FindCapacity();
}
private void Tab1_ISOQtyChanged(string qty)
{
// tab1에서 선택한 값 → tab2에도 반영
tab2.text_ISO_QUANTITY.Text = qty;
}
private void Tab2_DiameterChanged(string dimension)
{
tab1.Dimension = dimension;
tab1.SetWeight();
}
private void Tab2_ModelNameChanged(string model)
{
//이미지 변경
if (!string.IsNullOrEmpty(model) && model.Length >= 3 && model.Substring(0, 3) == "VWM")
{
model = "VWM";
}
string imagePath = Path.Combine(Application.StartupPath, "ModelImage", $"{model}.jpg");
if (File.Exists(imagePath))
{
pictureEdit1.Image = Image.FromFile(imagePath);
}
}
private void Tab2_QtyCheckedChanged(bool ch)
{
if (ch)
tab1.SetISOQty();
else
tab2.text_ISO_QUANTITY.Text = string.Empty;
}
}
}

View 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>

View File

@ -237,13 +237,13 @@ namespace MainUI
//
this.xtraTabPage1.Name = "IsoTabPage";
this.xtraTabPage1.Size = new System.Drawing.Size(1430, 902);
this.xtraTabPage1.Text = "xtraTabPage1";
this.xtraTabPage1.Text = "방진기 선정";
//
// xtraTabPage2
//
this.xtraTabPage2.Name = "MuffleTabPage";
this.xtraTabPage2.Size = new System.Drawing.Size(298, 274);
this.xtraTabPage2.Text = "xtraTabPage2";
this.xtraTabPage2.Text = "소음기 선정";
//
// MainForm
//

View File

@ -40,6 +40,7 @@ namespace MainUI
}
public List<EquipmentPackage> EquipmentData { get; private set; } = new List<EquipmentPackage>();
public List<MufflePackage> MuffleData { get; private set; } = new List<MufflePackage>();
//[0]. "ISOData.json" [1]. "WeightData.json", [2]. "DisplacementData.json" [3]. "DefaultQty.json"
List<(JObject Json, string FilePath)> jsonFiles = new List<(JObject, string)>();
@ -78,9 +79,6 @@ namespace MainUI
public void OnOpen()
{
var tab1 = isoTab.tab1;
var tab2 = isoTab.tab2;
using (var ofd = new OpenFileDialog
{
Filter = "Excel 파일 (*.xlsx;*.xls)|*.xlsx;*.xls|JSON 파일 (*.json)|*.json", // 엑셀 또는 JSON 파일만
@ -95,84 +93,153 @@ namespace MainUI
string fullPath = ofd.FileName;
string extension = Path.GetExtension(fullPath).ToLower();
List<EquipmentPackage> equipmentData = new List<EquipmentPackage>();
if (extension == ".xlsx" || extension == ".xls")
if (xtraTabControl1.SelectedTabPageIndex == 0)
{
// 엑셀 읽기
equipmentData = ReadExcelToEquipmentPackage(fullPath);
var tab1 = isoTab.tab1;
var tab2 = isoTab.tab2;
List<EquipmentPackage> equipmentData = new List<EquipmentPackage>();
foreach (var data in equipmentData)
if (extension == ".xlsx" || extension == ".xls")
{
tab1.SetInformation(data.Information);
tab2.text_ISO_FlexibleDia1.Text = data.Isolation.FLEXIBLE_DIA1;
tab2.text_ISO_FlexibleQty1.Text = data.Isolation.FLEXIBLE_QTY1;
tab2.text_ISO_FlexibleDia2.Text = data.Isolation.FLEXIBLE_DIA2;
tab2.text_ISO_FlexibleQty2.Text = data.Isolation.FLEXIBLE_QTY2;
tab2.text_ISO_FlexibleDia3.Text = data.Isolation.FLEXIBLE_DIA3;
tab2.text_ISO_FlexibleQty3.Text = data.Isolation.FLEXIBLE_QTY3;
// 엑셀 읽기
equipmentData = ReadExcelToEquipmentPackage(fullPath);
data.Isolation = tab2.GetIsolation();
//리스트에 추가
EquipmentData.Add(new EquipmentPackage
foreach (var data in equipmentData)
{
Information = data.Information,
Isolation = data.Isolation
});
tab1.SetInformation(data.Information);
tab2.text_ISO_FlexibleDia1.Text = data.Isolation.FLEXIBLE_DIA1;
tab2.text_ISO_FlexibleQty1.Text = data.Isolation.FLEXIBLE_QTY1;
tab2.text_ISO_FlexibleDia2.Text = data.Isolation.FLEXIBLE_DIA2;
tab2.text_ISO_FlexibleQty2.Text = data.Isolation.FLEXIBLE_QTY2;
tab2.text_ISO_FlexibleDia3.Text = data.Isolation.FLEXIBLE_DIA3;
tab2.text_ISO_FlexibleQty3.Text = data.Isolation.FLEXIBLE_QTY3;
string label = data.Information.EQUIPMENTNUMBER.ToString();
isoTab.listBoxControl1.Items.Add(label);
data.Isolation = tab2.GetIsolation();
isoTab.listBoxControl1.SelectedIndex = isoTab.listBoxControl1.ItemCount - 1;
//리스트에 추가
EquipmentData.Add(new EquipmentPackage
{
Information = data.Information,
Isolation = data.Isolation
});
string label = data.Information.EQUIPMENTNUMBER.ToString();
isoTab.listBoxControl1.Items.Add(label);
isoTab.listBoxControl1.SelectedIndex = isoTab.listBoxControl1.ItemCount - 1;
}
}
else if (extension == ".json")
{
string jsonText = File.ReadAllText(ofd.FileName);
try
{
// JSON을 C# 객체로 변환
equipmentData = JsonConvert.DeserializeObject<List<EquipmentPackage>>(jsonText);
}
catch (JsonSerializationException ex)
{
MessageBox.Show("형식이 맞지 않는 JSON 파일입니다.",
"오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
foreach (var data in equipmentData)
{
tab1.SetInformation(data.Information);
tab2.SetIsolation(data.Isolation);
//리스트에 추가
EquipmentData.Add(new EquipmentPackage
{
Information = data.Information,
Isolation = data.Isolation
});
string label = data.Information.EQUIPMENTNUMBER.ToString();
isoTab.listBoxControl1.Items.Add(label);
isoTab.listBoxControl1.SelectedIndex = isoTab.listBoxControl1.ItemCount - 1;
}
}
isoTab.EquipmentData = EquipmentData;
}
else if (extension == ".json")
else if (xtraTabControl1.SelectedTabPageIndex == 1)
{
string jsonText = File.ReadAllText(ofd.FileName);
var tab1 = muffleTab.tab1;
var tab2 = muffleTab.tab2;
try
List<MufflePackage> muffleData = new List<MufflePackage>();
if (extension == ".xlsx" || extension == ".xls")
{
// JSON을 C# 객체로 변환
equipmentData = JsonConvert.DeserializeObject<List<EquipmentPackage>>(jsonText);
}
catch (JsonSerializationException ex)
{
MessageBox.Show("형식이 맞지 않는 JSON 파일입니다.",
"오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
// 엑셀 읽기
muffleData = ReadExcelToMufflePackage(fullPath);
return;
}
foreach (var data in equipmentData)
{
tab1.SetInformation(data.Information);
tab2.SetIsolation(data.Isolation);
//리스트에 추가
EquipmentData.Add(new EquipmentPackage
foreach (var data in muffleData)
{
Information = data.Information,
Isolation = data.Isolation
});
tab1.SetInformation(data.MuffleInformation);
tab2.SetDuctSystem(data.MuffleDuctSystem);
string label = data.Information.EQUIPMENTNUMBER.ToString();
isoTab.listBoxControl1.Items.Add(label);
//리스트에 추가
MuffleData.Add(new MufflePackage
{
MuffleInformation = data.MuffleInformation,
MuffleDuctSystem = data.MuffleDuctSystem
});
}
isoTab.listBoxControl1.SelectedIndex = isoTab.listBoxControl1.ItemCount - 1;
}
}
else if (extension == ".json")
{
string jsonText = File.ReadAllText(ofd.FileName);
try
{
// JSON을 C# 객체로 변환
muffleData = JsonConvert.DeserializeObject<List<MufflePackage>>(jsonText);
}
catch (JsonSerializationException ex)
{
MessageBox.Show("형식이 맞지 않는 JSON 파일입니다.",
"오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
foreach (var data in muffleData)
{
tab1.SetInformation(data.MuffleInformation);
tab2.SetDuctSystem(data.MuffleDuctSystem);
//리스트에 추가
MuffleData.Add(new MufflePackage
{
MuffleInformation = data.MuffleInformation,
MuffleDuctSystem = data.MuffleDuctSystem
});
string label = data.MuffleInformation.EQUIPMENTNUMBER.ToString();
muffleTab.listBoxControl1.Items.Add(label);
muffleTab.listBoxControl1.SelectedIndex = muffleTab.listBoxControl1.ItemCount - 1;
}
}
muffleTab.MuffleData = MuffleData;
}
}
}
isoTab.EquipmentData = EquipmentData;
}
private List<EquipmentPackage> ReadExcelToEquipmentPackage(string filePath)
@ -255,6 +322,86 @@ namespace MainUI
return lst_data;
}
private List<MufflePackage> ReadExcelToMufflePackage(string filePath)
{
List<MufflePackage> lst_data = new List<MufflePackage>();
try
{
using (var workbook = new XLWorkbook(filePath))
{
var sheet = workbook.Worksheet(1); // 첫 번째 시트
var rows = sheet.RangeUsed().RowsUsed().Skip(2); // 2행까지 헤더
foreach (var row in rows)
{
MufflePackage data = new MufflePackage();
string equipment = row.Cell(1).GetString().Trim();
if (string.IsNullOrEmpty(equipment)) continue;
var info = new MuffleInformation
{
PROJECT = row.Cell(2).GetString(),
EQUIPMENTNUMBER = row.Cell(3).GetString(),
LOCATION = row.Cell(4).GetString(),
USAGE = row.Cell(5).GetString(),
AIRVOLUME = row.Cell(6).GetString(),
PRESSURE = row.Cell(7).GetString(),
EFFICIENCY = row.Cell(8).GetString(),
HUBRATIO = row.Cell(9).GetString(),
DIA = row.Cell(10).GetString(),
FANTYPE = row.Cell(11).GetString(),
FANQTY = row.Cell(12).GetString(),
NOISESTANDARD = row.Cell(13).GetString(),
DUCTSIZE_W = row.Cell(14).GetString(),
DUCTSIZE_H = row.Cell(15).GetString(),
CHAMBERSIZE_W = row.Cell(16).GetString(),
CHAMBERSIZE_H = row.Cell(17).GetString(),
CHAMBERSIZE_L = row.Cell(18).GetString(),
NOISECHAMBERSIZE_W = row.Cell(19).GetString(),
NOISECHAMBERSIZE_H = row.Cell(20).GetString(),
NOISECHAMBERSIZE_L = row.Cell(21).GetString(),
};
var ductsystem = new MuffleDuctSystem
{
DUCTLENGTH = row.Cell(22).GetString(),
SQUAREELBOWQTY = row.Cell(23).GetString(),
ROUNDELBOWQTY = row.Cell(24).GetString(),
NOISEELBOWQTY = row.Cell(25).GetString(),
BRANCHAIRVOLUME = row.Cell(26).GetString(),
DIFFUSERTYPE = row.Cell(27).GetString(),
ND_W = row.Cell(28).GetString(),
ND_H = row.Cell(29).GetString(),
DUCTZOOMSIZE_W = row.Cell(30).GetString(),
DUCTZOOMSIZE_H = row.Cell(31).GetString(),
SAFERATE = row.Cell(32).GetString(),
MUFFLESIZE_W = row.Cell(33).GetString(),
MUFFLESIZE_H = row.Cell(34).GetString(),
MUFFLESIZE_L = row.Cell(35).GetString(),
NOISELEVEL_63 = row.Cell(36).GetString(),
NOISELEVEL_125 = row.Cell(37).GetString(),
NOISELEVEL_250 = row.Cell(38).GetString(),
NOISELEVEL_500 = row.Cell(39).GetString(),
NOISELEVEL_1000 = row.Cell(40).GetString(),
NOISELEVEL_2000 = row.Cell(41).GetString(),
NOISELEVEL_4000 = row.Cell(42).GetString(),
};
data.MuffleInformation = info;
data.MuffleDuctSystem = ductsystem;
lst_data.Add(data);
}
}
}
catch (System.IO.IOException ex)
{
MessageBox.Show("파일이 이미 열려 있습니다. 닫은 후 다시 시도해주세요.", "파일 잠김", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
return lst_data;
}
private void ChangedLanguage()
@ -295,9 +442,23 @@ namespace MainUI
private void barButtonItem_Export_ItemClick(object sender, ItemClickEventArgs e)
{
string savePath = Path.Combine(Application.StartupPath, "equipment.json");
string savePath = "", json = "";
if (xtraTabControl1.SelectedTabPageIndex == 0)
{
savePath = Path.Combine(Application.StartupPath, "equipment.json");
EquipmentData = isoTab.EquipmentData;
string json = JsonConvert.SerializeObject(EquipmentData, Newtonsoft.Json.Formatting.Indented);
json = JsonConvert.SerializeObject(EquipmentData, Newtonsoft.Json.Formatting.Indented);
}
else if (xtraTabControl1.SelectedTabPageIndex == 1)
{
savePath = Path.Combine(Application.StartupPath, "MuffleData.json");
MuffleData = muffleTab.MuffleData;
json = JsonConvert.SerializeObject(MuffleData, Newtonsoft.Json.Formatting.Indented);
}
else
return;
File.WriteAllText(savePath, json, Encoding.UTF8);
@ -307,7 +468,7 @@ namespace MainUI
private void barButtonItem_DataEdit_ItemClick(object sender, ItemClickEventArgs e)
{
dataEditForm = new DataEditForm();
//dataEditForm
dataEditForm.Show();
}
private void barButtonItem_Language_ItemClick(object sender, ItemClickEventArgs e)

View File

@ -12,6 +12,12 @@ namespace MainUI.Model
public Isolation Isolation { get; set; }
}
public class MufflePackage
{
public MuffleInformation MuffleInformation { get; set; }
public MuffleDuctSystem MuffleDuctSystem { get; set; }
}
public class Information
{
public string PROJECT { get; set; } // 프로젝트
@ -65,20 +71,28 @@ namespace MainUI.Model
public class MuffleInformation
{
public string PROJECT { get; set; } // 프로젝트
public string EQUIPMENTNUMBER { get; set; } // 장비번호
public string LOCATION { get; set; } // 설치위치
public string USAGE { get; set; } // 용도
public string AIRVOLUME { get; set; } // 풍량
public string PRESSURE { get; set; } // 정압
public string EFFICIENCY { get; set; } // 효율
public string HUBRATIO { get; set; } // 효율
public string DIA { get; set; } // 효율
public string FANTYPE { get; set; } // FAN TYPE
public string FANQTY { get; set; } // FAN 수량
public string NOISESTANDARD { get; set; } // 소음기준
public string DUCTSIZE_W { get; set; } // 덕트 사이즈 W
public string DUCTSIZE_H { get; set; } // 덕트 사이즈 H
public string CHAMBERSIZE_W { get; set; } // 소음챔버 사이즈 W
public string CHAMBERSIZE_H { get; set; } // 소음챔버 사이즈 H
public string CHAMBERSIZE_L { get; set; } // 소음챔버 사이즈 L
public string CHAMBERSIZE_W { get; set; } // 일반챔버 사이즈 W
public string CHAMBERSIZE_H { get; set; } // 일반챔버 사이즈 H
public string CHAMBERSIZE_L { get; set; } // 일반챔버 사이즈 L
public string NOISECHAMBERSIZE_W { get; set; } // 소음챔버 사이즈 W
public string NOISECHAMBERSIZE_H { get; set; } // 소음챔버 사이즈 H
public string NOISECHAMBERSIZE_L { get; set; } // 소음챔버 사이즈 L
}
public class MuffleDuctSystem
@ -88,11 +102,26 @@ namespace MainUI.Model
public string ROUNDELBOWQTY { get; set; } // 라운드엘보 수량
public string NOISEELBOWQTY { get; set; } // 소음엘보 수량
public string BRANCHAIRVOLUME { get; set; } // 분기풍량
public string DIFUUSERTYPE { get; set; } // 디퓨저 종류
public string DIFFUSERTYPE { get; set; } // 디퓨저 종류
public string SAFERATE { get; set; } // 전체 시스템 안전율
public string ND_W { get; set; } // N.D (W)
public string ND_H { get; set; } // N.D (H)
public string DUCTZOOMSIZE_W { get; set; } // 덕트확대 사이즈 (W)
public string DUCTZOOMSIZE_H { get; set; } // 덕트확대 사이즈 (H)
public string SELECTIONNOISE { get; set; } // 발생소음선정 (큰:1, 작은:2)
public string INDOORNOISE { get; set; } // 실내 발생 소음 보정 (기준값:5)
public string MUFFLESIZE_W { get; set; } // 덕트확대 사이즈 (H)
public string MUFFLESIZE_H { get; set; } // 덕트확대 사이즈 (H)
public string MUFFLESIZE_L { get; set; } // 덕트확대 사이즈 (H)
public string NOISELEVEL_63 { get; set; } //발생 소음도 63
public string NOISELEVEL_125 { get; set; } //발생 소음도 125
public string NOISELEVEL_250 { get; set; } //발생 소음도 250
public string NOISELEVEL_500 { get; set; } //발생 소음도 500
public string NOISELEVEL_1000 { get; set; } //발생 소음도 1000
public string NOISELEVEL_2000 { get; set; } //발생 소음도 2000
public string NOISELEVEL_4000 { get; set; } //발생 소음도 4000
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,186 @@
using DevExpress.XtraEditors;
using MainUI.Model;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Resources;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MainUI
{
public partial class MuffleDuctSystemUserControl : UserControl
{
public MuffleDuctSystemUserControl()
{
InitializeComponent();
}
public MuffleDuctSystem GetDuctSystem()
{
return new MuffleDuctSystem
{
DUCTLENGTH = text_DuctLength.Text,
SQUAREELBOWQTY = text_SquareElbowQty.Text,
ROUNDELBOWQTY = text_RoundElbowQty.Text,
NOISEELBOWQTY = text_NoiseElbowQty.Text,
BRANCHAIRVOLUME = text_BranchAirVol.Text,
DIFFUSERTYPE = cb_DiffuserType.Text,
SAFERATE = text_SafeRate.Text.Substring(0, text_SafeRate.Text.Length - 1),
ND_W = text_ND_W.Text,
ND_H = text_ND_H.Text,
DUCTZOOMSIZE_W = text_DuctZoomSize_W.Text,
DUCTZOOMSIZE_H = text_DuctZoomSize_H.Text,
SELECTIONNOISE = cb_SelectionNoise.Text,
INDOORNOISE = text_IndoorNoise.Text.Substring(0, text_IndoorNoise.Text.Length - 2),
MUFFLESIZE_W = text_MuffleSize_W.Text,
MUFFLESIZE_H = text_MuffleSize_H.Text,
MUFFLESIZE_L = text_MuffleSize_L.Text,
NOISELEVEL_63 = text_63.Text,
NOISELEVEL_125 = text_125.Text,
NOISELEVEL_250 = text_250.Text,
NOISELEVEL_500 = text_500.Text,
NOISELEVEL_1000 = text_1000.Text,
NOISELEVEL_2000 = text_2000.Text,
NOISELEVEL_4000 = text_4000.Text
};
}
public void SetDuctSystem(MuffleDuctSystem ductSystem)
{
if (ductSystem == null)
{
text_DuctLength.Text = "";
text_SquareElbowQty.Text = "";
text_RoundElbowQty.Text = "";
text_NoiseElbowQty.Text = "";
text_BranchAirVol.Text = "";
cb_DiffuserType.SelectedIndex = 0;
text_SafeRate.Text = "";
text_ND_W.Text = "";
text_ND_H.Text = "";
text_DuctZoomSize_W.Text = "";
text_DuctZoomSize_H.Text = "";
cb_SelectionNoise.SelectedIndex = 0;
text_IndoorNoise.Text = "";
text_MuffleSize_W.Text = "";
text_MuffleSize_H.Text = "";
text_MuffleSize_L.Text = "";
text_63.Text = "";
text_125.Text = "";
text_250.Text = "";
text_500.Text = "";
text_1000.Text = "";
text_2000.Text = "";
text_4000.Text = "";
return;
}
text_DuctLength.Text = ductSystem.DUCTLENGTH;
text_SquareElbowQty.Text = ductSystem.SQUAREELBOWQTY;
text_RoundElbowQty.Text = ductSystem.ROUNDELBOWQTY;
text_NoiseElbowQty.Text = ductSystem.NOISEELBOWQTY;
text_BranchAirVol.Text = ductSystem.BRANCHAIRVOLUME;
cb_DiffuserType.Text = ductSystem.DIFFUSERTYPE;
text_SafeRate.Text = ductSystem.SAFERATE;
text_ND_W.Text = ductSystem.ND_W;
text_ND_H.Text = ductSystem.ND_H;
text_DuctZoomSize_W.Text = ductSystem.DUCTZOOMSIZE_W;
text_DuctZoomSize_H.Text = ductSystem.DUCTZOOMSIZE_H;
cb_SelectionNoise.Text = ductSystem.SELECTIONNOISE;
text_IndoorNoise.Text = ductSystem.INDOORNOISE;
text_MuffleSize_W.Text = ductSystem.MUFFLESIZE_W;
text_MuffleSize_H.Text = ductSystem.MUFFLESIZE_H;
text_MuffleSize_L.Text = ductSystem.MUFFLESIZE_L;
text_63.Text = ductSystem.NOISELEVEL_63;
text_125.Text = ductSystem.NOISELEVEL_125;
text_250.Text = ductSystem.NOISELEVEL_250;
text_500.Text = ductSystem.NOISELEVEL_500;
text_1000.Text = ductSystem.NOISELEVEL_1000;
text_2000.Text = ductSystem.NOISELEVEL_2000;
text_4000.Text = ductSystem.NOISELEVEL_4000;
}
public void ChangedLanguage()
{
ResourceManager rm = Properties.Resources.ResourceManager;
var culture = System.Threading.Thread.CurrentThread.CurrentUICulture;
var font = new System.Drawing.Font("Tahoma", 14F);
// 리소스 키 - LabelControl 매핑
var labelMap = new Dictionary<string, LabelControl>
{
{ "Duct_Length", lb_DuctLength },
{ "SquareElbowQty", lb_SquareElbowQty },
{ "RoundElbowQty", lb_RoundElbowQty },
{ "NoiseElbowQty", lb_NoiseElbowQty },
{ "BranchAirVolume", lb_BranchAirVol },
{ "DiffuserType", lb_DiffuserType },
{ "SafeRate", lb_SafeRate },
{ "DuctZoomSize_W", lb_DuctZoomSize_W },
{ "DuctZoomSize_H", lb_DuctZoomSize_H },
{ "Selection_of_Noise", lb_SelectionNoise },
{ "IndoorNoise", lb_IndoorNoise },
{ "MuffleSize", lb_MuffleSize },
{ "Noise_Level", lb_NoiseLevel }
};
// 반복문으로 리소스와 폰트 적용
foreach (var pair in labelMap)
{
string key = pair.Key;
LabelControl label = pair.Value;
string text = rm.GetString(key, culture); // 문화권 반영
if (!string.IsNullOrEmpty(text))
label.Text = text;
label.Appearance.Font = font;
label.Appearance.Options.UseFont = true;
}
// 예외 폰트 처리
lb_SafeRate.Font = new System.Drawing.Font("Tahoma", 11F);
lb_SquareElbowQty.Font = new System.Drawing.Font("Tahoma", 12F);
lb_RoundElbowQty.Font = new System.Drawing.Font("Tahoma", 12F);
lb_NoiseElbowQty.Font = new System.Drawing.Font("Tahoma", 12F);
lb_DuctZoomSize_W.Font = new System.Drawing.Font("Tahoma", 12F);
lb_DuctZoomSize_H.Font = new System.Drawing.Font("Tahoma", 12F);
}
private void MuffleDuctSystemUserControl_Load(object sender, EventArgs e)
{
}
private void text_IndoorNoise_CustomDisplayText(object sender, DevExpress.XtraEditors.Controls.CustomDisplayTextEventArgs e)
{
if (e.Value == null)
return;
decimal value;
if (!decimal.TryParse(e.Value.ToString(), out value))
return;
e.DisplayText = value.ToString() + "dB";
}
private void text_SafeRate_CustomDisplayText(object sender, DevExpress.XtraEditors.Controls.CustomDisplayTextEventArgs e)
{
if (e.Value == null)
return;
decimal value;
if (!decimal.TryParse(e.Value.ToString(), out value))
return;
e.DisplayText = value.ToString() + "%";
}
}
}

View 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>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,177 @@
using DevExpress.XtraEditors;
using MainUI.Model;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Resources;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MainUI
{
public partial class MuffleInformationUserControl : UserControl
{
public event Action<string> FanTypeChanged;
public MuffleInformationUserControl()
{
InitializeComponent();
}
public MuffleInformation GetInformation()
{
return new MuffleInformation
{
PROJECT = text_Project.Text,
EQUIPMENTNUMBER = text_EquipmentNo.Text,
LOCATION = text_Location.Text,
USAGE = text_Usage.Text,
AIRVOLUME = text_AirVolume.Text,
PRESSURE = text_Pressure.Text,
EFFICIENCY = text_Efficiency.Text.Substring(0, text_Efficiency.Text.Length - 1),
HUBRATIO = text_HubRatio.Text.Substring(0, text_HubRatio.Text.Length - 1),
DIA = text_DIA.Text,
FANTYPE = cb_FanType.Text,
FANQTY = text_FanQty.Text,
NOISESTANDARD = cb_NoiseStandard.Text,
DUCTSIZE_W = text_DuctSize_W.Text,
DUCTSIZE_H = text_DuctSize_H.Text,
CHAMBERSIZE_W = text_ChamberSize_W.Text,
CHAMBERSIZE_H = text_ChamberSize_H.Text,
CHAMBERSIZE_L = text_ChamberSize_L.Text,
NOISECHAMBERSIZE_W = text_NoiseChamber_W.Text,
NOISECHAMBERSIZE_H = text_NoiseChamber_H.Text,
NOISECHAMBERSIZE_L = text_NoiseChamber_L.Text,
};
}
public void SetInformation(MuffleInformation info)
{
if (info == null)
{
// 모든 컨트롤 초기화
text_Project.Text = "";
text_EquipmentNo.Text = "";
text_Location.Text = "";
text_Usage.Text = "";
text_AirVolume.Text= "";
text_Pressure.Text = "";
text_Efficiency.Text = "";
text_HubRatio.Text = "";
text_DIA.Text = "";
cb_FanType.SelectedIndex = 0;
text_FanQty.Text = "";
cb_NoiseStandard.SelectedIndex = 0;
text_DuctSize_W.Text = "";
text_DuctSize_H.Text = "";
text_ChamberSize_W.Text = "";
text_ChamberSize_H.Text = "";
text_ChamberSize_L.Text = "";
text_NoiseChamber_W.Text = "";
text_NoiseChamber_H.Text = "";
text_NoiseChamber_L.Text = "";
return;
}
text_Project.Text = info.PROJECT;
text_EquipmentNo.Text = info.EQUIPMENTNUMBER;
text_Location.Text = info.LOCATION;
text_Usage.Text = info.USAGE;
text_AirVolume.Text = info.AIRVOLUME;
text_Pressure.Text = info.PRESSURE;
text_Efficiency.Text = info.EFFICIENCY;
text_HubRatio.Text = info.HUBRATIO;
text_DIA.Text = info.DIA;
cb_FanType.Text = info.FANTYPE;
text_FanQty.Text = info.FANQTY;
cb_NoiseStandard.Text = info.NOISESTANDARD;
text_DuctSize_W.Text = info.DUCTSIZE_W;
text_DuctSize_H.Text = info.DUCTSIZE_H;
text_ChamberSize_W.Text = info.CHAMBERSIZE_W;
text_ChamberSize_H.Text = info.CHAMBERSIZE_H;
text_ChamberSize_L.Text = info.CHAMBERSIZE_L;
text_NoiseChamber_W.Text = info.NOISECHAMBERSIZE_W;
text_NoiseChamber_H.Text = info.NOISECHAMBERSIZE_H;
text_NoiseChamber_L.Text = info.NOISECHAMBERSIZE_L;
}
public void ChangedLanguage()
{
ResourceManager rm = Properties.Resources.ResourceManager;
var culture = System.Threading.Thread.CurrentThread.CurrentUICulture;
var font = new System.Drawing.Font("Tahoma", 14F);
// 리소스 키 - LabelControl 매핑
var labelMap = new Dictionary<string, LabelControl>
{
{ "Project", lb_Project },
{ "ITEM_No", lb_EquipmentNo },
{ "Location", lb_InstallPoint },
{ "Service", lb_Usage },
{ "Air_Volume", lb_AirVolume },
{ "Pressure", lb_Pressure },
{ "Efficiency", lb_Efficiency },
{ "FAN_Qty", lb_FanQty },
{ "Noise_Standard", lb_NoiseStandard },
{ "Duct_Size", lb_DuctSize },
{ "Chamber_Size", lb_Chamber },
{ "NoiseChamber_Size", lb_NoiseChamber },
};
// 반복문으로 리소스와 폰트 적용
foreach (var pair in labelMap)
{
string key = pair.Key;
LabelControl label = pair.Value;
string text = rm.GetString(key, culture); // 문화권 반영
if (!string.IsNullOrEmpty(text))
label.Text = text;
label.Appearance.Font = font;
label.Appearance.Options.UseFont = true;
}
// 예외 폰트 처리
}
private void cb_FanType_SelectedIndexChanged(object sender, EventArgs e)
{
FanTypeChanged?.Invoke(cb_FanType.Text ?? string.Empty);
}
private void text_Efficiency_CustomDisplayText(object sender, DevExpress.XtraEditors.Controls.CustomDisplayTextEventArgs e)
{
if (e.Value == null)
return;
decimal value;
if (!decimal.TryParse(e.Value.ToString(), out value))
return;
e.DisplayText = value.ToString() + "%";
}
private void text_HubRatio_CustomDisplayText(object sender, DevExpress.XtraEditors.Controls.CustomDisplayTextEventArgs e)
{
if (e.Value == null)
return;
decimal value;
if (!decimal.TryParse(e.Value.ToString(), out value))
return;
e.DisplayText = value.ToString() + "%";
}
}
}

View 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>

315
MainUI/MuffleTabUserControl.Designer.cs generated Normal file
View File

@ -0,0 +1,315 @@

namespace MainUI
{
partial class MuffleTabUserControl
{
/// <summary>
/// 필수 디자이너 변수입니다.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 사용 중인 모든 리소스를 정리합니다.
/// </summary>
/// <param name="disposing">관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region 구성 요소 디자이너에서 생성한 코드
/// <summary>
/// 디자이너 지원에 필요한 메서드입니다.
/// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
/// </summary>
private void InitializeComponent()
{
this.tablePanel1 = new DevExpress.Utils.Layout.TablePanel();
this.tablePanel2 = new DevExpress.Utils.Layout.TablePanel();
this.btn_Update = new System.Windows.Forms.Button();
this.btn_Del = new System.Windows.Forms.Button();
this.btn_Report = new System.Windows.Forms.Button();
this.btn_Add = new System.Windows.Forms.Button();
this.pictureEdit1 = new DevExpress.XtraEditors.PictureEdit();
this.listBoxControl1 = new DevExpress.XtraEditors.ListBoxControl();
this.panelControl1 = new DevExpress.XtraEditors.PanelControl();
this.splitContainerControl1 = new DevExpress.XtraEditors.SplitContainerControl();
this.accordionControl1 = new DevExpress.XtraBars.Navigation.AccordionControl();
this.InformationTab = new DevExpress.XtraBars.Navigation.AccordionControlElement();
this.DuctSystemTab = new DevExpress.XtraBars.Navigation.AccordionControlElement();
((System.ComponentModel.ISupportInitialize)(this.tablePanel1)).BeginInit();
this.tablePanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.tablePanel2)).BeginInit();
this.tablePanel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureEdit1.Properties)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.listBoxControl1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.panelControl1)).BeginInit();
this.panelControl1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainerControl1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.splitContainerControl1.Panel1)).BeginInit();
this.splitContainerControl1.Panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainerControl1.Panel2)).BeginInit();
this.splitContainerControl1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.accordionControl1)).BeginInit();
this.SuspendLayout();
//
// tablePanel1
//
this.tablePanel1.Columns.AddRange(new DevExpress.Utils.Layout.TablePanelColumn[] {
new DevExpress.Utils.Layout.TablePanelColumn(DevExpress.Utils.Layout.TablePanelEntityStyle.Relative, 80F),
new DevExpress.Utils.Layout.TablePanelColumn(DevExpress.Utils.Layout.TablePanelEntityStyle.Relative, 20F)});
this.tablePanel1.Controls.Add(this.tablePanel2);
this.tablePanel1.Controls.Add(this.pictureEdit1);
this.tablePanel1.Controls.Add(this.listBoxControl1);
this.tablePanel1.Controls.Add(this.panelControl1);
this.tablePanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tablePanel1.Location = new System.Drawing.Point(0, 0);
this.tablePanel1.Name = "tablePanel1";
this.tablePanel1.Padding = new System.Windows.Forms.Padding(7);
this.tablePanel1.Rows.AddRange(new DevExpress.Utils.Layout.TablePanelRow[] {
new DevExpress.Utils.Layout.TablePanelRow(DevExpress.Utils.Layout.TablePanelEntityStyle.Relative, 70F),
new DevExpress.Utils.Layout.TablePanelRow(DevExpress.Utils.Layout.TablePanelEntityStyle.Absolute, 40F),
new DevExpress.Utils.Layout.TablePanelRow(DevExpress.Utils.Layout.TablePanelEntityStyle.Relative, 23F)});
this.tablePanel1.Size = new System.Drawing.Size(1432, 928);
this.tablePanel1.TabIndex = 3;
//
// tablePanel2
//
this.tablePanel1.SetColumn(this.tablePanel2, 0);
this.tablePanel2.Columns.AddRange(new DevExpress.Utils.Layout.TablePanelColumn[] {
new DevExpress.Utils.Layout.TablePanelColumn(DevExpress.Utils.Layout.TablePanelEntityStyle.Absolute, 170F),
new DevExpress.Utils.Layout.TablePanelColumn(DevExpress.Utils.Layout.TablePanelEntityStyle.Relative, 45F),
new DevExpress.Utils.Layout.TablePanelColumn(DevExpress.Utils.Layout.TablePanelEntityStyle.Absolute, 145F),
new DevExpress.Utils.Layout.TablePanelColumn(DevExpress.Utils.Layout.TablePanelEntityStyle.Absolute, 145F),
new DevExpress.Utils.Layout.TablePanelColumn(DevExpress.Utils.Layout.TablePanelEntityStyle.Absolute, 145F)});
this.tablePanel2.Controls.Add(this.btn_Update);
this.tablePanel2.Controls.Add(this.btn_Del);
this.tablePanel2.Controls.Add(this.btn_Report);
this.tablePanel2.Controls.Add(this.btn_Add);
this.tablePanel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.tablePanel2.Location = new System.Drawing.Point(7, 665);
this.tablePanel2.Margin = new System.Windows.Forms.Padding(0);
this.tablePanel2.Name = "tablePanel2";
this.tablePanel1.SetRow(this.tablePanel2, 1);
this.tablePanel2.Rows.AddRange(new DevExpress.Utils.Layout.TablePanelRow[] {
new DevExpress.Utils.Layout.TablePanelRow(DevExpress.Utils.Layout.TablePanelEntityStyle.Relative, 100F)});
this.tablePanel2.Size = new System.Drawing.Size(1134, 40);
this.tablePanel2.TabIndex = 0;
//
// btn_Update
//
this.tablePanel2.SetColumn(this.btn_Update, 4);
this.btn_Update.Dock = System.Windows.Forms.DockStyle.Right;
this.btn_Update.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btn_Update.Location = new System.Drawing.Point(992, 0);
this.btn_Update.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0);
this.btn_Update.Name = "btn_Update";
this.tablePanel2.SetRow(this.btn_Update, 0);
this.btn_Update.Size = new System.Drawing.Size(139, 40);
this.btn_Update.TabIndex = 4;
this.btn_Update.UseVisualStyleBackColor = true;
this.btn_Update.Click += new System.EventHandler(this.btn_Update_Click);
//
// btn_Del
//
this.tablePanel2.SetColumn(this.btn_Del, 3);
this.btn_Del.Dock = System.Windows.Forms.DockStyle.Left;
this.btn_Del.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btn_Del.Location = new System.Drawing.Point(847, 0);
this.btn_Del.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0);
this.btn_Del.Name = "btn_Del";
this.tablePanel2.SetRow(this.btn_Del, 0);
this.btn_Del.Size = new System.Drawing.Size(133, 40);
this.btn_Del.TabIndex = 1;
this.btn_Del.UseVisualStyleBackColor = true;
this.btn_Del.Click += new System.EventHandler(this.btn_Del_Click);
//
// btn_Report
//
this.btn_Report.Dock = System.Windows.Forms.DockStyle.Fill;
this.btn_Report.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btn_Report.Location = new System.Drawing.Point(0, 0);
this.btn_Report.Margin = new System.Windows.Forms.Padding(0);
this.btn_Report.Name = "btn_Report";
this.btn_Report.Size = new System.Drawing.Size(170, 40);
this.btn_Report.TabIndex = 2;
this.btn_Report.UseVisualStyleBackColor = true;
this.btn_Report.Click += new System.EventHandler(this.btn_Report_Click);
//
// btn_Add
//
this.tablePanel2.SetColumn(this.btn_Add, 2);
this.btn_Add.Dock = System.Windows.Forms.DockStyle.Left;
this.btn_Add.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btn_Add.Location = new System.Drawing.Point(702, 0);
this.btn_Add.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0);
this.btn_Add.Name = "btn_Add";
this.tablePanel2.SetRow(this.btn_Add, 0);
this.btn_Add.Size = new System.Drawing.Size(133, 40);
this.btn_Add.TabIndex = 0;
this.btn_Add.UseVisualStyleBackColor = true;
this.btn_Add.Click += new System.EventHandler(this.btn_Add_Click);
//
// pictureEdit1
//
this.tablePanel1.SetColumn(this.pictureEdit1, 0);
this.pictureEdit1.Dock = System.Windows.Forms.DockStyle.Fill;
this.pictureEdit1.Location = new System.Drawing.Point(10, 708);
this.pictureEdit1.Name = "pictureEdit1";
this.pictureEdit1.Properties.ShowCameraMenuItem = DevExpress.XtraEditors.Controls.CameraMenuItemVisibility.Auto;
this.pictureEdit1.Properties.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Zoom;
this.tablePanel1.SetRow(this.pictureEdit1, 2);
this.pictureEdit1.Size = new System.Drawing.Size(1128, 210);
this.pictureEdit1.TabIndex = 4;
//
// listBoxControl1
//
this.listBoxControl1.Appearance.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.listBoxControl1.Appearance.Options.UseFont = true;
this.listBoxControl1.Appearance.Options.UseTextOptions = true;
this.listBoxControl1.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.listBoxControl1.Appearance.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.tablePanel1.SetColumn(this.listBoxControl1, 1);
this.listBoxControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.listBoxControl1.Location = new System.Drawing.Point(1144, 10);
this.listBoxControl1.Name = "listBoxControl1";
this.tablePanel1.SetRow(this.listBoxControl1, 0);
this.tablePanel1.SetRowSpan(this.listBoxControl1, 3);
this.listBoxControl1.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
this.listBoxControl1.Size = new System.Drawing.Size(278, 908);
this.listBoxControl1.TabIndex = 3;
this.listBoxControl1.SelectedIndexChanged += new System.EventHandler(this.listBoxControl1_SelectedIndexChanged);
//
// panelControl1
//
this.tablePanel1.SetColumn(this.panelControl1, 0);
this.panelControl1.Controls.Add(this.splitContainerControl1);
this.panelControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panelControl1.Location = new System.Drawing.Point(10, 10);
this.panelControl1.Name = "panelControl1";
this.tablePanel1.SetRow(this.panelControl1, 0);
this.panelControl1.Size = new System.Drawing.Size(1128, 652);
this.panelControl1.TabIndex = 1;
//
// splitContainerControl1
//
this.splitContainerControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainerControl1.Location = new System.Drawing.Point(2, 2);
this.splitContainerControl1.Name = "splitContainerControl1";
this.splitContainerControl1.Padding = new System.Windows.Forms.Padding(5);
//
// splitContainerControl1.Panel1
//
this.splitContainerControl1.Panel1.Controls.Add(this.accordionControl1);
this.splitContainerControl1.Panel1.Text = "Panel1";
//
// splitContainerControl1.Panel2
//
this.splitContainerControl1.Panel2.Padding = new System.Windows.Forms.Padding(5);
this.splitContainerControl1.Panel2.Text = "Panel2";
this.splitContainerControl1.Size = new System.Drawing.Size(1124, 648);
this.splitContainerControl1.SplitterPosition = 257;
this.splitContainerControl1.TabIndex = 3;
//
// accordionControl1
//
this.accordionControl1.Appearance.AccordionControl.BackColor = System.Drawing.Color.White;
this.accordionControl1.Appearance.AccordionControl.Options.UseBackColor = true;
this.accordionControl1.Appearance.Item.Default.BackColor = System.Drawing.Color.Transparent;
this.accordionControl1.Appearance.Item.Default.Options.UseBackColor = true;
this.accordionControl1.Appearance.Item.Hovered.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
this.accordionControl1.Appearance.Item.Hovered.Options.UseBackColor = true;
this.accordionControl1.Appearance.Item.Pressed.BackColor = System.Drawing.SystemColors.MenuHighlight;
this.accordionControl1.Appearance.Item.Pressed.Options.UseBackColor = true;
this.accordionControl1.Dock = System.Windows.Forms.DockStyle.Left;
this.accordionControl1.Elements.AddRange(new DevExpress.XtraBars.Navigation.AccordionControlElement[] {
this.InformationTab,
this.DuctSystemTab});
this.accordionControl1.ItemHeight = 70;
this.accordionControl1.Location = new System.Drawing.Point(0, 0);
this.accordionControl1.Name = "accordionControl1";
this.accordionControl1.Padding = new System.Windows.Forms.Padding(3);
this.accordionControl1.ScrollBarMode = DevExpress.XtraBars.Navigation.ScrollBarMode.Hidden;
this.accordionControl1.Size = new System.Drawing.Size(260, 638);
this.accordionControl1.TabIndex = 1;
//
// InformationTab
//
this.InformationTab.Appearance.Default.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.InformationTab.Appearance.Default.Options.UseFont = true;
this.InformationTab.Appearance.Default.Options.UseTextOptions = true;
this.InformationTab.Appearance.Default.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.InformationTab.Appearance.Default.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.InformationTab.Appearance.Hovered.BackColor = System.Drawing.Color.SkyBlue;
this.InformationTab.Appearance.Hovered.Options.UseBackColor = true;
this.InformationTab.HeaderTemplate.AddRange(new DevExpress.XtraBars.Navigation.HeaderElementInfo[] {
new DevExpress.XtraBars.Navigation.HeaderElementInfo(DevExpress.XtraBars.Navigation.HeaderElementType.Text),
new DevExpress.XtraBars.Navigation.HeaderElementInfo(DevExpress.XtraBars.Navigation.HeaderElementType.Image),
new DevExpress.XtraBars.Navigation.HeaderElementInfo(DevExpress.XtraBars.Navigation.HeaderElementType.HeaderControl),
new DevExpress.XtraBars.Navigation.HeaderElementInfo(DevExpress.XtraBars.Navigation.HeaderElementType.ContextButtons)});
this.InformationTab.Name = "InformationTab";
this.InformationTab.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
this.InformationTab.Tag = "Information";
this.InformationTab.Click += new System.EventHandler(this.InformationTab_Click);
//
// DuctSystemTab
//
this.DuctSystemTab.Appearance.Default.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.DuctSystemTab.Appearance.Default.Options.UseFont = true;
this.DuctSystemTab.Appearance.Default.Options.UseTextOptions = true;
this.DuctSystemTab.Appearance.Default.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.DuctSystemTab.Appearance.Default.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
this.DuctSystemTab.Appearance.Hovered.BackColor = System.Drawing.Color.SkyBlue;
this.DuctSystemTab.Appearance.Hovered.Options.UseBackColor = true;
this.DuctSystemTab.Name = "DuctSystemTab";
this.DuctSystemTab.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
this.DuctSystemTab.Click += new System.EventHandler(this.DuctSystemTab_Click);
//
// MuffleTabUserControl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.tablePanel1);
this.Name = "MuffleTabUserControl";
this.Size = new System.Drawing.Size(1432, 928);
this.Load += new System.EventHandler(this.MuffleTab_Load);
((System.ComponentModel.ISupportInitialize)(this.tablePanel1)).EndInit();
this.tablePanel1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.tablePanel2)).EndInit();
this.tablePanel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureEdit1.Properties)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.listBoxControl1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.panelControl1)).EndInit();
this.panelControl1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainerControl1.Panel1)).EndInit();
this.splitContainerControl1.Panel1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainerControl1.Panel2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.splitContainerControl1)).EndInit();
this.splitContainerControl1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.accordionControl1)).EndInit();
this.ResumeLayout(false);
}
#endregion
private DevExpress.Utils.Layout.TablePanel tablePanel1;
private DevExpress.Utils.Layout.TablePanel tablePanel2;
private System.Windows.Forms.Button btn_Update;
private System.Windows.Forms.Button btn_Del;
private System.Windows.Forms.Button btn_Report;
private System.Windows.Forms.Button btn_Add;
private DevExpress.XtraEditors.PictureEdit pictureEdit1;
public DevExpress.XtraEditors.ListBoxControl listBoxControl1;
private DevExpress.XtraEditors.PanelControl panelControl1;
private DevExpress.XtraEditors.SplitContainerControl splitContainerControl1;
private DevExpress.XtraBars.Navigation.AccordionControl accordionControl1;
private DevExpress.XtraBars.Navigation.AccordionControlElement InformationTab;
private DevExpress.XtraBars.Navigation.AccordionControlElement DuctSystemTab;
}
}

View File

@ -0,0 +1,236 @@
using DevExpress.XtraEditors;
using MainUI.Model;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MainUI
{
public partial class MuffleTabUserControl : UserControl
{
public MuffleInformationUserControl tab1;
public MuffleDuctSystemUserControl tab2;
public List<MufflePackage> MuffleData { get; set; } = new List<MufflePackage>();
public MuffleTabUserControl()
{
InitializeComponent();
tab1 = new MuffleInformationUserControl();
tab2 = new MuffleDuctSystemUserControl();
tab1.Dock = DockStyle.Fill;
tab2.Dock = DockStyle.Fill;
ChangedLanguage();
tab1.FanTypeChanged += Tab1_FanTypeChanged;
}
public void ChangedLanguage()
{
var rm = Properties.Resources.ResourceManager;
CultureInfo culture = Thread.CurrentThread.CurrentUICulture;
var font = new Font("Tahoma", 12F);
// 탭 / 버튼 리소스 적용 함수
string L(string key) => rm.GetString(key, culture) ?? key;
// --- Tabs ---
InformationTab.Text = L("Muffle_General_Information");
DuctSystemTab.Text = L("Duct_System");
InformationTab.Appearance.Default.Font = font;
DuctSystemTab.Appearance.Default.Font = font;
// --- Buttons ---
btn_Add.Text = L("Add");
btn_Del.Text = L("Delete");
btn_Update.Text = L("Update");
btn_Report.Text = L("Print_Invoice");
btn_Add.Font = font;
btn_Del.Font = font;
btn_Update.Font = font;
btn_Report.Font = font;
tab1.ChangedLanguage();
tab2.ChangedLanguage();
}
private void Tab1_FanTypeChanged(string fantype)
{
// tab1에서 선택한 값 → tab2에도 반영
if (fantype == "MAKER")
{
List<TextEdit> NoiseLevelText = new List<TextEdit>
{
tab2.text_63, tab2.text_125, tab2.text_250,
tab2.text_500, tab2.text_1000, tab2.text_2000, tab2.text_4000
};
foreach (var t in NoiseLevelText)
{
t.Enabled = true;
}
}
}
//---------------------- ControlEvent----------------------------------
//---------------------- ControlEvent----------------------------------
//---------------------- ControlEvent----------------------------------
private void InformationTab_Click(object sender, EventArgs e)
{
splitContainerControl1.Panel2.Controls.Clear();
splitContainerControl1.Panel2.Controls.Add(tab1);
}
private void DuctSystemTab_Click(object sender, EventArgs e)
{
splitContainerControl1.Panel2.Controls.Clear();
splitContainerControl1.Panel2.Controls.Add(tab2);
}
private void MuffleTab_Load(object sender, EventArgs e)
{
splitContainerControl1.Panel2.Controls.Clear();
splitContainerControl1.Panel2.Controls.Add(tab1);
}
private void btn_Report_Click(object sender, EventArgs e)
{
string baseDir = AppDomain.CurrentDomain.BaseDirectory;
string reportDir = Path.Combine(baseDir, "Report");
string exePath = Path.Combine(reportDir, "NSV_Report.exe");
string savePath1 = Path.Combine(Application.StartupPath, "MuffleData.json");
string savePath2 = Path.Combine(reportDir, "MuffleData.json");
string json = JsonConvert.SerializeObject(MuffleData, Newtonsoft.Json.Formatting.Indented);
File.WriteAllText(savePath1, json, Encoding.UTF8);
File.WriteAllText(savePath2, json, Encoding.UTF8);
MessageBox.Show("저장 완료!", "저장 완료", MessageBoxButtons.OK, MessageBoxIcon.Information);
var psi = new ProcessStartInfo
{
FileName = exePath,
WorkingDirectory = reportDir,
UseShellExecute = false,
Arguments = "1",
};
Process.Start(psi);
}
private void btn_Add_Click(object sender, EventArgs e)
{
string label = tab1.GetInformation().EQUIPMENTNUMBER.ToString();
foreach (string list in listBoxControl1.Items)
{
if (list == label)
{
MessageBox.Show($"{list}는 이미 존재 하는 장비 번호 입니다!", "데이터 추가 실패!", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
}
MuffleData.Add(new MufflePackage
{
MuffleInformation = tab1.GetInformation(),
MuffleDuctSystem = tab2.GetDuctSystem()
});
listBoxControl1.Items.Add(label);
listBoxControl1.SelectedIndex = listBoxControl1.ItemCount - 1;
}
private void listBoxControl1_SelectedIndexChanged(object sender, EventArgs e)
{
// 새 항목 표시
int idx = listBoxControl1.SelectedIndex;
if (idx < 0 || idx >= MuffleData.Count)
return;
tab1.SetInformation(MuffleData[idx].MuffleInformation);
tab2.SetDuctSystem(MuffleData[idx].MuffleDuctSystem);
}
private void btn_Del_Click(object sender, EventArgs e)
{
listBoxControl1.SelectedIndexChanged -= listBoxControl1_SelectedIndexChanged;
var indices = listBoxControl1.SelectedIndices.Cast<int>().OrderByDescending(i => i).ToList();
if (indices.Count == 0)
return;
int lastIndex = indices.Last(); // 삭제 후 다시 선택할 기준 인덱스
// MuffleData와 ListBoxControl 동기 삭제
foreach (int idx in indices)
{
if (idx >= 0 && idx < MuffleData.Count)
MuffleData.RemoveAt(idx);
if (idx >= 0 && idx < listBoxControl1.Items.Count)
listBoxControl1.Items.RemoveAt(idx);
}
// 이벤트 다시 연결
listBoxControl1.SelectedIndexChanged += listBoxControl1_SelectedIndexChanged;
if (MuffleData.Count == 0)
{
tab1.SetInformation(null);
tab2.SetDuctSystem(null);
return;
}
// 인덱스 계산 (현재 인덱스 - 1, 단 0 이하이면 0)
int newIndex = lastIndex - 1;
if (newIndex < 0) newIndex = 0;
MufflePackage selectedData = MuffleData[newIndex];
if (selectedData == null)
return;
tab1.SetInformation(selectedData.MuffleInformation);
tab2.SetDuctSystem(selectedData.MuffleDuctSystem);
}
private void btn_Update_Click(object sender, EventArgs e)
{
int idx = listBoxControl1.SelectedIndex;
if (idx < 0 || idx >= MuffleData.Count)
{
MessageBox.Show("수정할 항목을 선택하세요.");
return;
}
// 현재 탭의 내용으로 갱신
MuffleData[idx].MuffleInformation = tab1.GetInformation();
MuffleData[idx].MuffleDuctSystem = tab2.GetDuctSystem();
// 리스트박스 항목 라벨도 갱신 (예: 장비번호 표시)
string newLabel = tab1.GetInformation().EQUIPMENTNUMBER.ToString();
listBoxControl1.Items[idx] = newLabel;
MessageBox.Show("선택된 항목이 수정되었습니다.");
}
}
}

View 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>

View File

@ -33,7 +33,8 @@ namespace NSVDataEdit
private DataSelectForm _dataSelectForm;
private string[] fileNames = { "ISOData.json", "WeightData.json", "DisplacementData.json", "DefaultQty.json" };
private string[] fileNames = { "ISOData.json", "WeightData.json", "DisplacementData.json", "DefaultQty.json",
"SPLData.json", "MuffleReduceData.json", "FanNoiseData.json", "BFIData.json" };
private bool InitializeGrid()
{
@ -88,6 +89,29 @@ namespace NSVDataEdit
columns.Add("장비구분"); columns.Add("타입"); columns.Add("입력값"); columns.Add("방진기수량");
FlattenDefaultQty(originalJson);
break;
case 4:
columns.Add("소음기준");
columns.Add("63Hz"); columns.Add("125Hz"); columns.Add("250Hz"); columns.Add("500Hz");
columns.Add("1000Hz"); columns.Add("2000Hz"); columns.Add("4000Hz");
FlattenSPLJson(originalJson);
break;
case 5:
columns.Add("소음기 길이(L)");
columns.Add("63Hz"); columns.Add("125Hz"); columns.Add("250Hz"); columns.Add("500Hz");
columns.Add("1000Hz"); columns.Add("2000Hz"); columns.Add("4000Hz");
FlattenMuffleReduce(originalJson);
break;
case 6:
columns.Add("발생소음선정"); columns.Add("FanType"); columns.Add("인덱스");
columns.Add("63Hz"); columns.Add("125Hz"); columns.Add("250Hz"); columns.Add("500Hz");
columns.Add("1000Hz"); columns.Add("2000Hz"); columns.Add("4000Hz");
FlattenFanNoise(originalJson);
break;
case 7:
columns.Add("FanType"); columns.Add("63Hz"); columns.Add("125Hz"); columns.Add("250Hz"); columns.Add("500Hz");
columns.Add("1000Hz"); columns.Add("2000Hz"); columns.Add("4000Hz");
FlattenBFI(originalJson);
break;
//case 4:
// columns.Add("이름"); columns.Add("출력 명칭");
// FlattenFullNameJson(originalJson);
@ -366,6 +390,236 @@ namespace NSVDataEdit
}
}
public void FlattenSPLJson(JObject root)
{
table = new DataTable();
table.Columns.Clear();
// ✅ 컬럼 정의
table.Columns.Add("소음기준", typeof(string));
string[] freqCols = new string[]
{
"63Hz", "125Hz", "250Hz", "500Hz", "1000Hz", "2000Hz", "4000Hz"
};
foreach (string col in freqCols)
table.Columns.Add(col, typeof(string));
if (root == null) return;
foreach (var item in root.Properties())
{
string noise = item.Name;
JArray arr = item.Value as JArray;
if (arr == null) continue;
DataRow row = table.NewRow();
row["소음기준"] = noise;
for (int i = 0; i < freqCols.Length; i++)
{
row[freqCols[i]] = (i < arr.Count)
? arr[i].ToString()
: "0";
}
table.Rows.Add(row);
}
}
public void FlattenMuffleReduce(JObject root)
{
table = new DataTable();
table.Columns.Clear();
string[] freqCols = new string[]
{
"63Hz", "125Hz", "250Hz", "500Hz", "1000Hz", "2000Hz", "4000Hz"
};
foreach (string col in freqCols)
table.Columns.Add(col, typeof(string));
if (root == null) return;
foreach (var prop in root.Properties())
{
string rowKey = prop.Name;
JArray arr = prop.Value as JArray;
if (arr == null) continue;
DataRow row = table.NewRow();
row["RowKey"] = rowKey;
for (int i = 0; i < freqCols.Length; i++)
{
row[freqCols[i]] = (i < arr.Count)
? arr[i].ToString()
: "0";
}
table.Rows.Add(row);
}
}
public void FlattenFanNoise(JObject root)
{
table = new DataTable();
table.Columns.Clear();
// ✅ 기본 컬럼
table.Columns.Add("발생소음선정", typeof(string)); // datasetKey ("1","2" or NOISECODE)
table.Columns.Add("FanType", typeof(string));
table.Columns.Add("인덱스", typeof(int)); // rowIndex
// ✅ 주파수 컬럼
string[] freqCols = new string[]
{
"63Hz", "125Hz", "250Hz", "500Hz", "1000Hz", "2000Hz", "4000Hz"
};
foreach (string col in freqCols)
table.Columns.Add(col, typeof(string));
if (root == null) return;
foreach (var dsProp in root.Properties()) // "1", "2" or "NOISECODE_1"
{
string datasetKey = dsProp.Name;
JObject datasetObj = dsProp.Value as JObject;
if (datasetObj == null) continue;
foreach (var fanProp in datasetObj.Properties()) // "AIR FOIL" ...
{
string fanType = fanProp.Name;
JArray rows = fanProp.Value as JArray; // [ [..7..], [..7..] ]
if (rows == null) continue;
for (int r = 0; r < rows.Count; r++)
{
JArray vals = rows[r] as JArray;
if (vals == null) continue;
DataRow row = table.NewRow();
row["발생소음선정"] = datasetKey;
row["FanType"] = fanType;
row["인덱스"] = r;
for (int i = 0; i < freqCols.Length; i++)
{
row[freqCols[i]] = (i < vals.Count)
? vals[i].ToString()
: "0";
}
table.Rows.Add(row);
}
}
}
}
public void FlattenBFI(JObject root)
{
table = new DataTable();
// 배열 인덱스 -> 컬럼명 매핑
string[] freqCols = new string[]
{
"63Hz", "125Hz", "250Hz", "500Hz", "1000Hz", "2000Hz", "4000Hz"
};
if (root == null) return;
foreach (var prop in root.Properties())
{
string fanType = prop.Name;
JArray arr = prop.Value as JArray;
if (arr == null) continue;
DataRow row = table.NewRow();
row["FanType"] = fanType;
for (int i = 0; i < 7; i++)
{
row[freqCols[i]] = (i < arr.Count) ? arr[i].ToString() : "0";
}
table.Rows.Add(row);
}
}
public JObject RebuildFanNoiseJson()
{
if (table == null) throw new Exception("Table이 비어 있습니다.");
JObject root = new JObject();
// ✅ 주파수 컬럼 순서(배열 인덱스와 1:1)
string[] freqCols = new string[]
{
"63Hz", "125Hz", "250Hz", "500Hz", "1000Hz", "2000Hz", "4000Hz"
};
var datasetGroups = table.AsEnumerable()
.GroupBy(r => r["발생소음선정"] == null ? "" : r["발생소음선정"].ToString())
.Where(g => !string.IsNullOrWhiteSpace(g.Key));
foreach (var dsGroup in datasetGroups)
{
string = dsGroup.Key; // "1", "2" 또는 "NOISECODE_1"
JObject datasetObj = new JObject();
var fanGroups = dsGroup
.GroupBy(r => r["FanType"] == null ? "" : r["FanType"].ToString())
.Where(g => !string.IsNullOrWhiteSpace(g.Key));
foreach (var fanGroup in fanGroups)
{
string fanType = fanGroup.Key;
var rowsOrdered = fanGroup
.OrderBy(r => Convert.ToInt32(r["인덱스"]))
.ToList();
JArray rowsArr = new JArray();
foreach (var row in rowsOrdered)
{
JArray vals = new JArray();
for (int i = 0; i < freqCols.Length; i++)
{
string col = freqCols[i];
string v = (table.Columns.Contains(col) && row[col] != null)
? row[col].ToString()
: "0";
if (string.IsNullOrWhiteSpace(v)) v = "0";
vals.Add(v);
}
rowsArr.Add(vals);
}
datasetObj[fanType] = rowsArr;
}
root[] = datasetObj;
}
return root;
}
private void FlattenFullNameJson(JObject root)
{
table = new DataTable();
@ -587,6 +841,123 @@ namespace NSVDataEdit
return result;
}
public JObject RebuildSPLJson()
{
if (table == null)
throw new Exception("테이블이 비어 있습니다.");
JObject root = new JObject();
string[] freqCols = new string[]
{
"63Hz", "125Hz", "250Hz", "500Hz", "1000Hz", "2000Hz", "4000Hz"
};
foreach (DataRow r in table.Rows)
{
string noise = (table.Columns.Contains("소음기준") && r["소음기준"] != null)
? r["소음기준"].ToString()
: "";
if (string.IsNullOrWhiteSpace(noise)) continue;
// ✅ 주파수 컬럼을 순서대로 배열로 복원
JArray arr = new JArray();
for (int i = 0; i < freqCols.Length; i++)
{
string col = freqCols[i];
string v = (table.Columns.Contains(col) && r[col] != null)
? r[col].ToString()
: "0";
if (string.IsNullOrWhiteSpace(v)) v = "0";
arr.Add(v);
}
root[noise] = arr;
}
return root;
}
public JObject RebuildMuffleReduceJson()
{
if (table == null) throw new Exception("테이블이 비어 있습니다.");
JObject root = new JObject();
string keyCol = "소음기 길이(L)";
string[] freqCols = new string[]
{
"63Hz", "125Hz", "250Hz", "500Hz", "1000Hz", "2000Hz", "4000Hz"
};
foreach (DataRow r in table.Rows)
{
string rowKey = (table.Columns.Contains(keyCol) && r[keyCol] != null)
? r[keyCol].ToString()
: "";
if (string.IsNullOrWhiteSpace(rowKey)) continue;
JArray arr = new JArray();
for (int i = 0; i < freqCols.Length; i++)
{
string col = freqCols[i];
string v = (table.Columns.Contains(col) && r[col] != null)
? r[col].ToString()
: "0";
if (string.IsNullOrWhiteSpace(v)) v = "0";
arr.Add(v);
}
root[rowKey] = arr;
}
return root;
}
public JObject RebuildBFIJson()
{
if (table == null) throw new Exception("Table이 비어 있습니다.");
JObject root = new JObject();
// 배열 순서(인덱스) = 주파수 컬럼 순서
string[] freqCols = new string[]
{
"63Hz", "125Hz", "250Hz", "500Hz", "1000Hz", "2000Hz", "4000Hz"
};
foreach (DataRow r in table.Rows)
{
string fanType = r["FanType"] == null ? "" : r["FanType"].ToString();
if (string.IsNullOrWhiteSpace(fanType)) continue;
JArray arr = new JArray();
for (int i = 0; i < freqCols.Length; i++)
{
string col = freqCols[i];
string v = (table.Columns.Contains(col) && r[col] != null)
? r[col].ToString()
: "0";
if (string.IsNullOrWhiteSpace(v)) v = "0";
arr.Add(v);
}
root[fanType] = arr;
}
return root;
}
private JObject RebuildFullNameJson()
{
JObject result = new JObject();
@ -663,6 +1034,14 @@ namespace NSVDataEdit
newJson = RebuildSpecificationJson();
else if (idx == 3)
newJson = RebuildDefaultQtyDataJson();
else if (idx == 4)
newJson = RebuildSPLJson();
else if (idx == 5)
newJson = RebuildMuffleReduceJson();
else if (idx == 6)
newJson = RebuildFanNoiseJson();
else if (idx == 7)
newJson = RebuildBFIJson();
//else if (idx == 4)
// newJson = RebuildFullNameJson();
else return;

View File

@ -55,7 +55,12 @@
global::NSVDataEdit.Properties.Resources.Isolator_of_Equipment,
global::NSVDataEdit.Properties.Resources.Weight_data_of_Equipment,
global::NSVDataEdit.Properties.Resources.Isolator_Specification,
global::NSVDataEdit.Properties.Resources.Quantity_data_of_Equipment});
global::NSVDataEdit.Properties.Resources.Quantity_data_of_Equipment,
global::NSVDataEdit.Properties.Resources.SPL_DATA,
global::NSVDataEdit.Properties.Resources.Muffle_Reduce_Amount,
global::NSVDataEdit.Properties.Resources.FanNoiseData,
global::NSVDataEdit.Properties.Resources.BFI_Data,
});
this.tablePanel1.SetRow(this.cb_opendata, 0);
this.cb_opendata.Size = new System.Drawing.Size(263, 30);
this.cb_opendata.TabIndex = 0;

View File

@ -69,6 +69,15 @@ namespace NSVDataEdit.Properties {
}
}
/// <summary>
/// BFI Data과(와) 유사한 지역화된 문자열을 찾습니다.
/// </summary>
internal static string BFI_Data {
get {
return ResourceManager.GetString("BFI Data", resourceCulture);
}
}
/// <summary>
/// Delete Column과(와) 유사한 지역화된 문자열을 찾습니다.
/// </summary>
@ -78,6 +87,15 @@ namespace NSVDataEdit.Properties {
}
}
/// <summary>
/// FanNoiseData과(와) 유사한 지역화된 문자열을 찾습니다.
/// </summary>
internal static string FanNoiseData {
get {
return ResourceManager.GetString("FanNoiseData", resourceCulture);
}
}
/// <summary>
/// File과(와) 유사한 지역화된 문자열을 찾습니다.
/// </summary>
@ -105,6 +123,15 @@ namespace NSVDataEdit.Properties {
}
}
/// <summary>
/// Muffle Reduce Amount과(와) 유사한 지역화된 문자열을 찾습니다.
/// </summary>
internal static string Muffle_Reduce_Amount {
get {
return ResourceManager.GetString("Muffle Reduce Amount", resourceCulture);
}
}
/// <summary>
/// Name of Isolator Model과(와) 유사한 지역화된 문자열을 찾습니다.
/// </summary>
@ -141,6 +168,15 @@ namespace NSVDataEdit.Properties {
}
}
/// <summary>
/// SPL DATA과(와) 유사한 지역화된 문자열을 찾습니다.
/// </summary>
internal static string SPL_DATA {
get {
return ResourceManager.GetString("SPL DATA", resourceCulture);
}
}
/// <summary>
/// Weight data of Equipment과(와) 유사한 지역화된 문자열을 찾습니다.
/// </summary>

View File

@ -120,9 +120,15 @@
<data name="Add Col" xml:space="preserve">
<value>행 추가</value>
</data>
<data name="BFI Data" xml:space="preserve">
<value>BFI 데이터</value>
</data>
<data name="Del Col" xml:space="preserve">
<value>행 삭제</value>
</data>
<data name="FanNoiseData" xml:space="preserve">
<value>송풍기 발생소음</value>
</data>
<data name="File" xml:space="preserve">
<value>파일</value>
</data>
@ -132,6 +138,9 @@
<data name="Isolator Specification" xml:space="preserve">
<value>제품별 용량 및 변위</value>
</data>
<data name="Muffle Reduce Amount" xml:space="preserve">
<value>소음기 저감량</value>
</data>
<data name="Name of Isolator Model" xml:space="preserve">
<value>방진기 모델명</value>
</data>
@ -144,6 +153,9 @@
<data name="Save" xml:space="preserve">
<value>저장</value>
</data>
<data name="SPL Data" xml:space="preserve">
<value>실내허용소음레벨</value>
</data>
<data name="Weight data of Equipment" xml:space="preserve">
<value>장비 용량별 중량</value>
</data>

View File

@ -120,9 +120,15 @@
<data name="Add Col" xml:space="preserve">
<value>Add Column</value>
</data>
<data name="BFI Data" xml:space="preserve">
<value>BFI Data</value>
</data>
<data name="Del Col" xml:space="preserve">
<value>Delete Column</value>
</data>
<data name="FanNoiseData" xml:space="preserve">
<value>FanNoiseData</value>
</data>
<data name="File" xml:space="preserve">
<value>File</value>
</data>
@ -132,6 +138,9 @@
<data name="Isolator Specification" xml:space="preserve">
<value>Isolator Specification</value>
</data>
<data name="Muffle Reduce Amount" xml:space="preserve">
<value>Muffle Reduce Amount</value>
</data>
<data name="Name of Isolator Model" xml:space="preserve">
<value>Name of Isolator Model</value>
</data>
@ -144,6 +153,9 @@
<data name="Save" xml:space="preserve">
<value>Save</value>
</data>
<data name="SPL DATA" xml:space="preserve">
<value>SPL DATA</value>
</data>
<data name="Weight data of Equipment" xml:space="preserve">
<value>Weight data of Equipment</value>
</data>

View File

@ -1 +0,0 @@
1b1d9d0925e4a6705f75026ef8d23bfbe10b5bf0

View File

@ -97,103 +97,3 @@ C:\Users\YJH\Desktop\NSV\Main\MainUI\MainUI\NSVDataEdit\obj\Release\ko\NSVDataEd
C:\Users\YJH\Desktop\NSV\Main\MainUI\MainUI\NSVDataEdit\obj\Release\NSVDataEdit.csproj.CopyComplete
C:\Users\YJH\Desktop\NSV\Main\MainUI\MainUI\NSVDataEdit\obj\Release\NSVDataEdit.exe
C:\Users\YJH\Desktop\NSV\Main\MainUI\MainUI\NSVDataEdit\obj\Release\NSVDataEdit.pdb
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\NSVDataEdit.exe.config
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\NSVDataEdit.exe
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\NSVDataEdit.pdb
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ko\NSVDataEdit.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.BonusSkins.v21.2.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.Data.Desktop.v21.2.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.Data.v21.2.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.Printing.v21.2.Core.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.Sparkline.v21.2.Core.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.Utils.v21.2.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.XtraBars.v21.2.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.XtraEditors.v21.2.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.XtraGrid.v21.2.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\Newtonsoft.Json.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.Pdf.v21.2.Core.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.Pdf.v21.2.Drawing.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.XtraLayout.v21.2.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.XtraPrinting.v21.2.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.RichEdit.v21.2.Core.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.XtraTreeList.v21.2.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.Office.v21.2.Core.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.Data.Desktop.v21.2.xml
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.Data.v21.2.xml
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.Utils.v21.2.xml
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.Sparkline.v21.2.Core.xml
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.XtraBars.v21.2.xml
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.XtraEditors.v21.2.xml
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.Printing.v21.2.Core.xml
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.XtraGrid.v21.2.xml
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.Pdf.v21.2.Core.xml
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.Pdf.v21.2.Drawing.xml
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.XtraLayout.v21.2.xml
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.XtraPrinting.v21.2.xml
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.RichEdit.v21.2.Core.xml
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.XtraTreeList.v21.2.xml
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\DevExpress.Office.v21.2.Core.xml
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\de\DevExpress.Data.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\es\DevExpress.Data.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ja\DevExpress.Data.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ru\DevExpress.Data.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\de\DevExpress.Utils.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\es\DevExpress.Utils.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ja\DevExpress.Utils.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ru\DevExpress.Utils.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\de\DevExpress.Sparkline.v21.2.Core.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\es\DevExpress.Sparkline.v21.2.Core.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ja\DevExpress.Sparkline.v21.2.Core.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ru\DevExpress.Sparkline.v21.2.Core.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\de\DevExpress.XtraBars.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\es\DevExpress.XtraBars.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ja\DevExpress.XtraBars.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ru\DevExpress.XtraBars.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\de\DevExpress.XtraEditors.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\es\DevExpress.XtraEditors.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ja\DevExpress.XtraEditors.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ru\DevExpress.XtraEditors.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\de\DevExpress.Printing.v21.2.Core.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\es\DevExpress.Printing.v21.2.Core.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ja\DevExpress.Printing.v21.2.Core.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ru\DevExpress.Printing.v21.2.Core.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\de\DevExpress.XtraGrid.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\es\DevExpress.XtraGrid.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ja\DevExpress.XtraGrid.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ru\DevExpress.XtraGrid.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\de\DevExpress.Pdf.v21.2.Core.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\es\DevExpress.Pdf.v21.2.Core.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ja\DevExpress.Pdf.v21.2.Core.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ru\DevExpress.Pdf.v21.2.Core.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\de\DevExpress.XtraLayout.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\es\DevExpress.XtraLayout.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ja\DevExpress.XtraLayout.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ru\DevExpress.XtraLayout.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\de\DevExpress.XtraPrinting.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\es\DevExpress.XtraPrinting.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ja\DevExpress.XtraPrinting.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ru\DevExpress.XtraPrinting.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\de\DevExpress.RichEdit.v21.2.Core.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\es\DevExpress.RichEdit.v21.2.Core.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ja\DevExpress.RichEdit.v21.2.Core.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ru\DevExpress.RichEdit.v21.2.Core.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\de\DevExpress.XtraTreeList.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\es\DevExpress.XtraTreeList.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ja\DevExpress.XtraTreeList.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ru\DevExpress.XtraTreeList.v21.2.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\de\DevExpress.Office.v21.2.Core.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\es\DevExpress.Office.v21.2.Core.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ja\DevExpress.Office.v21.2.Core.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\bin\Release\ru\DevExpress.Office.v21.2.Core.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\obj\Release\NSVDataEdit.csproj.AssemblyReference.cache
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\obj\Release\NSVDataEdit.DataEditForm.resources
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\obj\Release\NSVDataEdit.DataSelectForm.resources
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\obj\Release\NSVDataEdit.Properties.Resources.resources
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\obj\Release\NSVDataEdit.Properties.Resources.ko.resources
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\obj\Release\NSVDataEdit.csproj.GenerateResource.cache
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\obj\Release\NSVDataEdit.exe.licenses
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\obj\Release\NSVDataEdit.csproj.CoreCompileInputs.cache
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\obj\Release\ko\NSVDataEdit.resources.dll
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\obj\Release\NSVDataEdit.csproj.CopyComplete
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\obj\Release\NSVDataEdit.exe
C:\Users\YJH\Desktop\NSV\MainUI\MainUI\NSVDataEdit\obj\Release\NSVDataEdit.pdb

View File

@ -247,25 +247,25 @@
<value>소음기 SIZE</value>
</data>
<data name="Air_Volume" xml:space="preserve">
<value>풍량</value>
<value>풍량(CMH)</value>
</data>
<data name="Duct_Size" xml:space="preserve">
<value>덕트 사이즈</value>
</data>
<data name="Efficiency" xml:space="preserve">
<value>효율</value>
<value>효율(%)</value>
</data>
<data name="FAN_Qty" xml:space="preserve">
<value>FAN 수량</value>
</data>
<data name="NoiseChamber_Size" xml:space="preserve">
<value>소음챔버 사이즈</value>
<value>소음 챔버 사이즈</value>
</data>
<data name="Noise_Standard" xml:space="preserve">
<value>소음기준(NC)</value>
</data>
<data name="Pressure" xml:space="preserve">
<value>정압</value>
<value>정압(mmAq)</value>
</data>
<data name="BranchAirVolume" xml:space="preserve">
<value>분기풍량(CMH)</value>
@ -277,7 +277,7 @@
<value>덕트 길이</value>
</data>
<data name="NoiseElbowQty" xml:space="preserve">
<value>소음엘보 수량(EA)</value>
<value>소음 엘보 수량(EA)</value>
</data>
<data name="RoundElbowQty" xml:space="preserve">
<value>라운드엘보 수량(EA)</value>
@ -285,8 +285,8 @@
<data name="SquareElbowQty" xml:space="preserve">
<value>사각엘보 수량(EA)</value>
</data>
<data name="DuctZoomSize" xml:space="preserve">
<value>덕트확대 사이즈</value>
<data name="DuctZoomSize_W" xml:space="preserve">
<value>덕트확대 사이즈(W)</value>
</data>
<data name="MuffleSize" xml:space="preserve">
<value>소음기 SIZE</value>
@ -294,4 +294,21 @@
<data name="Noise_Level" xml:space="preserve">
<value>발생 소음도</value>
</data>
<data name="Chamber_Size" xml:space="preserve">
<value>일반 챔버 SIZE</value>
</data>
<data name="DuctZoomSize_H" xml:space="preserve">
<value>덕트확대 사이즈(H)</value>
</data>
<data name="SafeRate" xml:space="preserve">
<value>전체 시스템 안전율(%)</value>
</data>
<data name="IndoorNoise" xml:space="preserve">
<value>실내 발생
소음 보정</value>
</data>
<data name="Selection_of_Noise" xml:space="preserve">
<value>발생소음선정
(큰:1, 작은:2)</value>
</data>
</root>

View File

@ -0,0 +1,9 @@
{
"AIR FOIL": ["0","0","3","0","0","0","0"],
"SIROCCO": ["0","0","0","2","0","0","0"],
"RADIAL BLADED": ["0","8","0","0","0","0","0"],
"VANE AXIAL": ["0","6","0","0","0","0","0"],
"TUBE AXIAL": ["7","0","0","0","0","0","0"],
"PROPELLER": ["5","0","0","0","0","0","0"],
"MAKER": ["0","0","0","0","0","0","0"],
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More