From 9b3cd222652987199925b65e5e5338bc25c8842b Mon Sep 17 00:00:00 2001 From: Anton Date: Thu, 18 Feb 2021 14:54:12 +0100 Subject: [PATCH] Major code cleanup and reconstruction --- Wardrobe/GUI.vb | 220 ---- Wardrobe/GUI/Draw_Grating.vb | 245 +++++ Wardrobe/{ => GUI}/GUI.Designer.vb | 7 +- Wardrobe/{ => GUI}/GUI.resx | 0 Wardrobe/GUI/GUI.vb | 144 +++ Wardrobe/{GUI_Settings.vb => GUI/Settings.vb} | 8 +- Wardrobe/GUI_Drawing_Panel.vb | 240 ----- Wardrobe/GUI_Functions.vb | 967 ------------------ Wardrobe/Gratings Data/Data.vb | 139 +++ Wardrobe/Gratings Data/Database.vb | 81 ++ .../User_Input.vb} | 92 +- Wardrobe/Recess Functions/Corner_Angle.vb | 351 +++++++ Wardrobe/Recess Functions/Corner_Rectangle.vb | 373 +++++++ Wardrobe/Recess Functions/Side_Rectangle.vb | 512 ++++++++++ .../Drawing.vb} | 36 +- .../Model_3D.vb} | 19 +- Wardrobe/Wardrobe.vbproj | 22 +- 17 files changed, 1931 insertions(+), 1525 deletions(-) delete mode 100644 Wardrobe/GUI.vb create mode 100644 Wardrobe/GUI/Draw_Grating.vb rename Wardrobe/{ => GUI}/GUI.Designer.vb (99%) rename Wardrobe/{ => GUI}/GUI.resx (100%) create mode 100644 Wardrobe/GUI/GUI.vb rename Wardrobe/{GUI_Settings.vb => GUI/Settings.vb} (72%) delete mode 100644 Wardrobe/GUI_Drawing_Panel.vb delete mode 100644 Wardrobe/GUI_Functions.vb create mode 100644 Wardrobe/Gratings Data/Data.vb create mode 100644 Wardrobe/Gratings Data/Database.vb rename Wardrobe/{GUI_Gratings_Data.vb => Gratings Data/User_Input.vb} (86%) create mode 100644 Wardrobe/Recess Functions/Corner_Angle.vb create mode 100644 Wardrobe/Recess Functions/Corner_Rectangle.vb create mode 100644 Wardrobe/Recess Functions/Side_Rectangle.vb rename Wardrobe/{SW_Drawing_Gratings.vb => SolidWorks/Drawing.vb} (85%) rename Wardrobe/{SW_HLCt_Gratings.vb => SolidWorks/Model_3D.vb} (91%) diff --git a/Wardrobe/GUI.vb b/Wardrobe/GUI.vb deleted file mode 100644 index d46e286..0000000 --- a/Wardrobe/GUI.vb +++ /dev/null @@ -1,220 +0,0 @@ -Imports XCCLibrary -Imports Excel = Microsoft.Office.Interop.Excel - -Public Class GUI - 'Public Shared filepath As String = "C:\Users\Anton\Documents\Exjobb" - Public Shared filepath As String = "C:\Users\xperd\Documents" - - Dim excelApp As Excel.Application = New Excel.Application - Dim excelWB As Excel.Workbook - - Public Shared dataBase As New Dictionary(Of String, DataTable) - - ' --- Start method (main) for GUI --- - Sub GUI_load() Handles MyBase.Load - Me.Width = 1400 - Me.Height = 800 - - AddHandler DrawingPanel.Paint, AddressOf GUI_Drawing_Panel.DrawingPanel_Paint - GUI_Drawing_Panel.Load_DrawingPanel() - - adminClass.loadSettings(GUI_Settings.filesFolder, GUI_Settings.HLCtFolder, "SolidWorks") - - Get_Database() - - CheckBox_WholeMeshWidths.Checked = True - - GUI_Functions.pointsMeasurements.Add("Lmes", {1, 2, 1}) - GUI_Functions.pointsMeasurements.Add("Wmes", {2, 3, 2}) - - GUI_Functions.recessData.Columns.Add("RECESS TYPE", GetType(String)) - GUI_Functions.recessData.Columns.Add("CORNER", GetType(Integer)) - GUI_Functions.recessData.Columns.Add("SIDE", GetType(Integer)) - GUI_Functions.recessData.Columns.Add("WIDTH", GetType(Integer)) - GUI_Functions.recessData.Columns.Add("LENGTH", GetType(Integer)) - GUI_Functions.recessData.Columns.Add("OFFSET", GetType(Integer)) - End Sub - - Private Sub Get_Database() - 'Make csv files of each sheet in excel - Dim excelApp As Excel.Application = New Excel.Application - Dim excelWB As Excel.Workbook - excelApp.DisplayAlerts = False - Dim wSNames As New List(Of String) - excelWB = excelApp.Workbooks.Open(GUI_Settings.HLCtFolder & "\Database\Databas.xlsx") - - For i = 1 To 4 - Dim activeSheet As Excel.Worksheet - activeSheet = excelWB.Sheets(i) - wSNames.Add(activeSheet.Name) - activeSheet.SaveAs(GUI_Settings.HLCtFolder & "\Database\" & wSNames(i - 1), Excel.XlFileFormat.xlCSV) - - System.Runtime.InteropServices.Marshal.ReleaseComObject(activeSheet) - Next - excelWB.Close() - excelApp.Quit() - System.Runtime.InteropServices.Marshal.ReleaseComObject(excelWB) - System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp) - - 'For Each WS In excelWB.Worksheets - ' WS.SaveAs(GUI_Settings.HLCtFolder & ("\") & WS.Name, Excel.XlFileFormat.xlCSV) - 'Next - - 'Read all CSV files to datatables - For i = 0 To wSNames.Count - 1 - Dim lines = IO.File.ReadAllLines(GUI_Settings.HLCtFolder & "\Database\" & wSNames(i) & ".csv") - Dim tempDT As New DataTable - Dim words As String() = lines(0).Split(New Char() {","c}) - - For j = 0 To words.Count - 1 - Dim colName As String = words(j).Split("[")(0) - colName = colName.Substring(0, colName.Length - 1) - Dim type As String = words(j).Split("[")(1).Split("]")(0) - - If type = "str" Then - tempDT.Columns.Add(colName, GetType(String)) - ElseIf type = "int" Then - tempDT.Columns.Add(colName, GetType(Integer)) - ElseIf type = "doub" Then - tempDT.Columns.Add(colName, GetType(String)) 'FIXA - Else - tempDT.Columns.Add(colName, GetType(Boolean)) - End If - Next - - For j = 1 To lines.Count - 1 - Dim values As String() = lines(j).Split(New Char() {","c}) - tempDT.Rows.Add() - For k = 0 To values.Count - 1 - Try - tempDT.Rows(tempDT.Rows.Count - 1)(k) = values(k) - Catch ex As Exception - If values(k) <> "" AndAlso values(k) = 0 Then - tempDT.Rows(tempDT.Rows.Count - 1)(k) = False - ElseIf values(k) <> "" AndAlso values(k) = 1 Then - tempDT.Rows(tempDT.Rows.Count - 1)(k) = True - End If - End Try - Next - Next - dataBase.Add(wSNames(i), tempDT) - Next - End Sub - - Public Sub Create_TextBox(TextBoxName As String, TextBoxText As String, TextBoxLeft As Integer, TextBoxTop As Integer, - TextBoxWidth As Integer) - Dim textBoxTemp As New TextBox - textBoxTemp.Name = TextBoxName - textBoxTemp.Text = TextBoxText - textBoxTemp.Left = TextBoxLeft - textBoxTemp.Top = TextBoxTop - textBoxTemp.Width = TextBoxWidth - textBoxTemp.Font = New Font("Microsoft Sans Serif", 10) - Me.Controls.Add(textBoxTemp) - End Sub - - Public Sub Create_LabelGUI(LabelName As String, LabelText As String, LabelLeft As Integer, LabelTop As Integer) - Dim LabelTemp As New Label - LabelTemp.Name = LabelName - LabelTemp.Text = LabelText - LabelTemp.Left = LabelLeft - LabelTemp.Top = LabelTop - LabelTemp.Font = New Font("Microsoft Sans Serif", 10) - Me.Controls.Add(LabelTemp) - End Sub - - Public Sub Create_LabelPanel(LabelName As String, LabelText As String, LabelLeft As Integer, LabelTop As Integer) - Dim LabelTemp As New Label - LabelTemp.Name = LabelName - LabelTemp.Text = LabelText - LabelTemp.Left = LabelLeft - LabelTemp.Top = LabelTop - LabelTemp.Font = New Font("Microsoft Sans Serif", 7) - LabelTemp.BackColor = Color.Transparent - DrawingPanel.Controls.Add(LabelTemp) - End Sub - - ' ---------------------------------- Gratings Data ---------------------------------- - ' --- When user changes grating type --- - Private Sub ComboBox_TypeChooser_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_TypeChooser.TextChanged - GUI_Gratings_Data.TypeChanged(sender, e) - End Sub - - - ' --- When user changes grating material --- - Private Sub ComboBox_Material_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Material.TextChanged - GUI_Gratings_Data.MaterialChanged(sender, e) - End Sub - - ' --- When user changes mesh size --- - Private Sub ComboBox_MeshSize_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_MeshSize.TextChanged - GUI_Gratings_Data.MeshChanged(sender, e) - End Sub - - ' --- When user changes grating height --- - Private Sub ComboBox_Height_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Height.TextChanged - GUI_Gratings_Data.HeightChanged(sender, e) - End Sub - - ' --- When user changes grating thickness --- - Private Sub ComboBox_Thickness_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Thickness.TextChanged - GUI_Gratings_Data.ThicknessChanged(sender, e) - End Sub - - Private Sub CheckBox_WholeMeshWidths_CheckedChanged(sender As Object, e As EventArgs) _ - Handles CheckBox_WholeMeshWidths.CheckedChanged - - GUI_Gratings_Data.WholeMeshWidthsChanged(sender, e) - End Sub - - ' --- Grating width changed --- - Private Sub WidthB_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Width.TextChanged - GUI_Gratings_Data.WidthChanged(sender, e) - End Sub - - ' --- Check if width is a number --- - Private Sub ComboBox_Width_KeyPress(sender As Object, e As KeyPressEventArgs) Handles ComboBox_Width.KeyPress - GUI_Gratings_Data.Check_IfNumber(e) - End Sub - - ' --- Grating length changed --- - Private Sub LengthBox_TextChanged(sender As Object, e As EventArgs) Handles TextBox_Length.TextChanged - GUI_Gratings_Data.LengthChanged(sender, e) - End Sub - - ' --- Check if length is a number --- - Private Sub ComboBox_Length_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox_Length.KeyPress - GUI_Gratings_Data.Check_IfNumber(e) - End Sub - - ' ---------------------------------- Functions ---------------------------------- - ' --- When angle button is pressed --- - Private Sub AngleButton_Click(sender As Object, e As EventArgs) Handles AngleButton.Click - GUI_Functions.AngleButton(sender, e) - End Sub - - ' --- When square corner button is pressed --- - Private Sub Button_Square_Click(sender As Object, e As EventArgs) Handles Button_Square.Click - GUI_Functions.SquareButtton(sender, e) - End Sub - - ' --- When square side button is pressed --- - Private Sub Button_SquareSide_Click(sender As Object, e As EventArgs) Handles Button_SquareSide.Click - GUI_Functions.SquareSideButtton(sender, e) - End Sub - - ' ---------------------------------- Settings ---------------------------------- - ' --- Settings button clicked --- - Private Sub SettingsButton_Click(sender As Object, e As EventArgs) Handles SettingsButton.Click - GUI_Settings.ButtonClicked(sender, e) - End Sub - - ' ---------------------------------- Export to SW ---------------------------------- - ' --- When export to SW button is pressed --- - Private Sub ExportSWButton_Click(sender As Object, e As EventArgs) Handles ExportSWButton.Click - SW_HLCt_Gratings.BuildGrating() - 'SW_Drawing_Gratings.CreateDrawing() - End Sub - - -End Class \ No newline at end of file diff --git a/Wardrobe/GUI/Draw_Grating.vb b/Wardrobe/GUI/Draw_Grating.vb new file mode 100644 index 0000000..28f789b --- /dev/null +++ b/Wardrobe/GUI/Draw_Grating.vb @@ -0,0 +1,245 @@ +Public Class Draw_Grating + Private Shared guiPanelL, guiPanelW As Integer + + Private Shared DirSymbolPoints As New Dictionary(Of String, Integer()) + Private Shared ArrowSymbolPoints As New Dictionary(Of String, Integer()) + + Public Shared measureLabels As New Dictionary(Of String, Integer()) + + Public Shared sideSquareMesLine As New Dictionary(Of String, Integer()) + + + Public Shared Sub Load_DrawingPanel() + AddHandler GUI.DrawingPanel.Paint, AddressOf DrawingPanel_Paint + + Get_DrawboxParameters() + + Create_DirSymbolPoints() + Create_ArrowSymbolPoints() + + ' Initialize start points + Data.Init_GrossAreaPoints() + Data.Init_GratingPoints() + + Update_GratingPoints() + End Sub + + ' --- Retrive parameters for the drawing box --- + Private Shared Sub Get_DrawboxParameters() + guiPanelL = GUI.DrawingPanel.Size.Width + guiPanelW = GUI.DrawingPanel.Size.Height + + Data.guiPanelMidX = guiPanelL / 2 + Data.guiPanelMidY = guiPanelW / 2 + + Data.guiMaxDrawL = guiPanelL - 80 + Data.guiMaxDrawW = guiPanelW - 80 + + Data.drawAR = Data.guiMaxDrawL / Data.guiMaxDrawW + + Data.gratingAR = Data.gratingL / Data.gratingW + End Sub + + ' --- Create points for grating direction symbol --- + Private Shared Sub Create_DirSymbolPoints() + DirSymbolPoints.Add("p1", {-30 + Data.guiPanelMidX, -2 + Data.guiPanelMidY}) + DirSymbolPoints.Add("p2", {20 + Data.guiPanelMidX, -2 + Data.guiPanelMidY}) + DirSymbolPoints.Add("p3", {12 + Data.guiPanelMidX, -10 + Data.guiPanelMidY}) + DirSymbolPoints.Add("p4", {15 + Data.guiPanelMidX, -13 + Data.guiPanelMidY}) + DirSymbolPoints.Add("p5", {30 + Data.guiPanelMidX, 2 + Data.guiPanelMidY}) + DirSymbolPoints.Add("p6", {-20 + Data.guiPanelMidX, 2 + Data.guiPanelMidY}) + DirSymbolPoints.Add("p7", {-12 + Data.guiPanelMidX, 10 + Data.guiPanelMidY}) + DirSymbolPoints.Add("p8", {-15 + Data.guiPanelMidX, 13 + Data.guiPanelMidY}) + DirSymbolPoints.Add("p9", {-30 + Data.guiPanelMidX, -2 + Data.guiPanelMidY}) + End Sub + + ' --- Create points for arrow symbol --- + Private Shared Sub Create_ArrowSymbolPoints() + Dim offset As Integer = 20 + ArrowSymbolPoints.Add("p1", {offset, guiPanelW - offset}) + ArrowSymbolPoints.Add("p2", {offset, guiPanelW - offset - 40}) + ArrowSymbolPoints.Add("p3", {offset - 5, guiPanelW - offset - 35}) + ArrowSymbolPoints.Add("p4", {offset, guiPanelW - offset - 40}) + ArrowSymbolPoints.Add("p5", {offset + 5, guiPanelW - offset - 35}) + ArrowSymbolPoints.Add("p6", {offset, guiPanelW - offset - 40}) + ArrowSymbolPoints.Add("p7", {offset, guiPanelW - offset}) + ArrowSymbolPoints.Add("p8", {offset + 40, guiPanelW - offset}) + ArrowSymbolPoints.Add("p9", {offset + 35, guiPanelW - offset - 5}) + ArrowSymbolPoints.Add("p10", {offset + 40, guiPanelW - offset}) + ArrowSymbolPoints.Add("p11", {offset + 35, guiPanelW - offset + 5}) + End Sub + + ' --- Updates all the gratings points --- + Public Shared Sub Update_GratingPoints() + Data.gratingAR = Data.gratingL / Data.gratingW + + If Data.gratingAR < Data.drawAR Then + ' Change draw width + Data.scaleDiff = Data.gratingW / Data.guiMaxDrawW + ' Gross area points + Data.grossAreaPoints.Rows(0)("GUI X") = Data.guiPanelMidX - Data.gratingL / (Data.scaleDiff * 2) + Data.grossAreaPoints.Rows(0)("GUI Y") = Data.guiPanelMidY - Data.guiMaxDrawW / 2 + Data.grossAreaPoints.Rows(1)("GUI X") = Data.guiPanelMidX + Data.gratingL / (Data.scaleDiff * 2) + Data.grossAreaPoints.Rows(1)("GUI Y") = Data.guiPanelMidY - Data.guiMaxDrawW / 2 + Data.grossAreaPoints.Rows(2)("GUI X") = Data.guiPanelMidX + Data.gratingL / (Data.scaleDiff * 2) + Data.grossAreaPoints.Rows(2)("GUI Y") = Data.guiPanelMidY + Data.guiMaxDrawW / 2 + Data.grossAreaPoints.Rows(3)("GUI X") = Data.guiPanelMidX - Data.gratingL / (Data.scaleDiff * 2) + Data.grossAreaPoints.Rows(3)("GUI Y") = Data.guiPanelMidY + Data.guiMaxDrawW / 2 + + ' Grating points + Data.gratingPoints.Rows(0)("GUI X") = Data.guiPanelMidX - Data.gratingL / (Data.scaleDiff * 2) + Data.gratingPoints.Rows(0)("GUI Y") = Data.guiPanelMidY - Data.guiMaxDrawW / 2 + Data.gratingPoints.Rows(1)("GUI X") = Data.guiPanelMidX + Data.gratingL / (Data.scaleDiff * 2) + Data.gratingPoints.Rows(1)("GUI Y") = Data.guiPanelMidY - Data.guiMaxDrawW / 2 + Data.gratingPoints.Rows(2)("GUI X") = Data.guiPanelMidX + Data.gratingL / (Data.scaleDiff * 2) + Data.gratingPoints.Rows(2)("GUI Y") = Data.guiPanelMidY + Data.guiMaxDrawW / 2 + Data.gratingPoints.Rows(3)("GUI X") = Data.guiPanelMidX - Data.gratingL / (Data.scaleDiff * 2) + Data.gratingPoints.Rows(3)("GUI Y") = Data.guiPanelMidY + Data.guiMaxDrawW / 2 + + Else + ' Change draw height + Data.scaleDiff = Data.gratingL / Data.guiMaxDrawL + + ' Gross area points + Data.grossAreaPoints.Rows(0)("GUI X") = Data.guiPanelMidX - Data.guiMaxDrawL / 2 + Data.grossAreaPoints.Rows(0)("GUI Y") = Data.guiPanelMidY - Data.gratingW / (Data.scaleDiff * 2) + Data.grossAreaPoints.Rows(1)("GUI X") = Data.guiPanelMidX + Data.guiMaxDrawL / 2 + Data.grossAreaPoints.Rows(1)("GUI Y") = Data.guiPanelMidY - Data.gratingW / (Data.scaleDiff * 2) + Data.grossAreaPoints.Rows(2)("GUI X") = Data.guiPanelMidX + Data.guiMaxDrawL / 2 + Data.grossAreaPoints.Rows(2)("GUI Y") = Data.guiPanelMidY + Data.gratingW / (Data.scaleDiff * 2) + Data.grossAreaPoints.Rows(3)("GUI X") = Data.guiPanelMidX - Data.guiMaxDrawL / 2 + Data.grossAreaPoints.Rows(3)("GUI Y") = Data.guiPanelMidY + Data.gratingW / (Data.scaleDiff * 2) + + ' Grating points + Data.gratingPoints.Rows(0)("GUI X") = Data.guiPanelMidX - Data.guiMaxDrawL / 2 + Data.gratingPoints.Rows(0)("GUI Y") = Data.guiPanelMidY - Data.gratingW / (Data.scaleDiff * 2) + Data.gratingPoints.Rows(1)("GUI X") = Data.guiPanelMidX + Data.guiMaxDrawL / 2 + Data.gratingPoints.Rows(1)("GUI Y") = Data.guiPanelMidY - Data.gratingW / (Data.scaleDiff * 2) + Data.gratingPoints.Rows(2)("GUI X") = Data.guiPanelMidX + Data.guiMaxDrawL / 2 + Data.gratingPoints.Rows(2)("GUI Y") = Data.guiPanelMidY + Data.gratingW / (Data.scaleDiff * 2) + Data.gratingPoints.Rows(3)("GUI X") = Data.guiPanelMidX - Data.guiMaxDrawL / 2 + Data.gratingPoints.Rows(3)("GUI Y") = Data.guiPanelMidY + Data.gratingW / (Data.scaleDiff * 2) + End If + + ' Gross area points + Data.grossAreaPoints.Rows(0)("X") = (-Data.gratingL / 2) / 1000 + Data.grossAreaPoints.Rows(0)("Y") = (Data.gratingW / 2) / 1000 + Data.grossAreaPoints.Rows(1)("X") = (Data.gratingL / 2) / 1000 + Data.grossAreaPoints.Rows(1)("Y") = (Data.gratingW / 2) / 1000 + Data.grossAreaPoints.Rows(2)("X") = (Data.gratingL / 2) / 1000 + Data.grossAreaPoints.Rows(2)("Y") = (-Data.gratingW / 2) / 1000 + Data.grossAreaPoints.Rows(3)("X") = (-Data.gratingL / 2) / 1000 + Data.grossAreaPoints.Rows(3)("Y") = (-Data.gratingW / 2) / 1000 + + ' Grating points + Data.gratingPoints.Rows(0)("X") = (-Data.gratingL / 2) / 1000 + Data.gratingPoints.Rows(0)("Y") = (Data.gratingW / 2) / 1000 + Data.gratingPoints.Rows(1)("X") = (Data.gratingL / 2) / 1000 + Data.gratingPoints.Rows(1)("Y") = (Data.gratingW / 2) / 1000 + Data.gratingPoints.Rows(2)("X") = (Data.gratingL / 2) / 1000 + Data.gratingPoints.Rows(2)("Y") = (-Data.gratingW / 2) / 1000 + Data.gratingPoints.Rows(3)("X") = (-Data.gratingL / 2) / 1000 + Data.gratingPoints.Rows(3)("Y") = (-Data.gratingW / 2) / 1000 + + GUI.DrawingPanel.Refresh() + End Sub + + ' --- Draw all the lines for the panel and grating --- + Public Shared Sub DrawingPanel_Paint(sender As Object, e As PaintEventArgs) + ' Draw grating gross area (red) + Dim penCon As Pen = New Pen(Color.Red, 2) + penCon.DashPattern = {4, 6} + e.Graphics.DrawLine(penCon, Data.grossAreaPoints(0)("GUI X"), Data.grossAreaPoints(0)("GUI Y"), + Data.grossAreaPoints(1)("GUI X"), Data.grossAreaPoints(1)("GUI Y")) + e.Graphics.DrawLine(penCon, Data.grossAreaPoints(1)("GUI X"), Data.grossAreaPoints(1)("GUI Y"), + Data.grossAreaPoints(2)("GUI X"), Data.grossAreaPoints(2)("GUI Y")) + e.Graphics.DrawLine(penCon, Data.grossAreaPoints(2)("GUI X"), Data.grossAreaPoints(2)("GUI Y"), + Data.grossAreaPoints(3)("GUI X"), Data.grossAreaPoints(3)("GUI Y")) + e.Graphics.DrawLine(penCon, Data.grossAreaPoints(3)("GUI X"), Data.grossAreaPoints(3)("GUI Y"), + Data.grossAreaPoints(0)("GUI X"), Data.grossAreaPoints(0)("GUI Y")) + + ' Draw grating direction symbol + Dim symPen As Pen = New Pen(Color.Black, 1) + For i = 1 To DirSymbolPoints.Count - 1 + e.Graphics.DrawLine(symPen, DirSymbolPoints("p" & i)(0), DirSymbolPoints("p" & i)(1), + DirSymbolPoints("p" & i + 1)(0), DirSymbolPoints("p" & i + 1)(1)) + Next + + ' Draw arrow symbol + For i = 1 To ArrowSymbolPoints.Count - 1 + e.Graphics.DrawLine(symPen, ArrowSymbolPoints("p" & i)(0), ArrowSymbolPoints("p" & i)(1), + ArrowSymbolPoints("p" & i + 1)(0), ArrowSymbolPoints("p" & i + 1)(1)) + Next + + ' Draw measure labels + For i = 0 To measureLabels.Count - 1 + Dim mesName As String = measureLabels.Keys(i) + e.Graphics.DrawString(measureLabels(mesName)(0), New Font("Microsoft Sans Serif", 7), Brushes.Black, + New Point(measureLabels(mesName)(1), measureLabels(mesName)(2))) + Next + + 'Stöd measurement linje för sidesquare + Dim penMes As Pen = New Pen(Color.Gray, 1) + For i = 0 To sideSquareMesLine.Count - 1 + Dim mesName As String = sideSquareMesLine.Keys(i) + e.Graphics.DrawLine(penMes, sideSquareMesLine(mesName)(0), sideSquareMesLine(mesName)(1), + sideSquareMesLine(mesName)(2), sideSquareMesLine(mesName)(3)) + + If Data.pointsMeasurements(mesName)(2) = 1 OrElse Data.pointsMeasurements(mesName)(2) = 3 Then + e.Graphics.DrawLine(penMes, sideSquareMesLine(mesName)(0), sideSquareMesLine(mesName)(1) + 2, + sideSquareMesLine(mesName)(0), sideSquareMesLine(mesName)(1) - 2) + e.Graphics.DrawLine(penMes, sideSquareMesLine(mesName)(2), sideSquareMesLine(mesName)(1) + 2, + sideSquareMesLine(mesName)(2), sideSquareMesLine(mesName)(1) - 2) + Else + e.Graphics.DrawLine(penMes, sideSquareMesLine(mesName)(0) + 2, sideSquareMesLine(mesName)(1), + sideSquareMesLine(mesName)(0) - 2, sideSquareMesLine(mesName)(1)) + e.Graphics.DrawLine(penMes, sideSquareMesLine(mesName)(0) + 2, sideSquareMesLine(mesName)(3), + sideSquareMesLine(mesName)(0) - 2, sideSquareMesLine(mesName)(3)) + End If + Next + + ' Draw angle recess help lines + Dim Pendot As Pen = New Pen(Color.Gray, 1) + Pendot.DashPattern = {2, 4} + + For i = 0 To Data.angleRecessPoints.Rows.Count - 1 + Dim angleQuadrant As String = Data.angleRecessPoints.Rows(i)("QUADRANT") + Dim p1XGUI, p1YGUI, p2XGUI, p2YGUI As Integer + For Each DR As DataRow In Data.gratingPoints.Rows + If DR("NAME").Split("_")(0) = "CA" & angleQuadrant Then + Dim index As Integer = Data.gratingPoints.Rows.IndexOf(DR) + p1XGUI = Data.gratingPoints.Rows(index)("GUI X") + p1YGUI = Data.gratingPoints.Rows(index)("GUI Y") + p2XGUI = Data.gratingPoints.Rows(index + 1)("GUI X") + p2YGUI = Data.gratingPoints.Rows(index + 1)("GUI Y") + Exit For + End If + Next + e.Graphics.DrawLine(Pendot, Data.angleRecessPoints.Rows(i)("GUI X"), Data.angleRecessPoints.Rows(i)("GUI Y"), + p1XGUI, p1YGUI) + e.Graphics.DrawLine(Pendot, Data.angleRecessPoints.Rows(i)("GUI X"), Data.angleRecessPoints.Rows(i)("GUI Y"), + p2XGUI, p2YGUI) + Next + + + ' Draw actual grating (black) + Dim pen As Pen = New Pen(Color.Black, 2) + For i = 0 To Data.gratingPoints.Rows.Count - 1 + Dim pTemp1(2) As Integer + Dim pTemp2(2) As Integer + + pTemp1(0) = Data.gratingPoints.Rows(i)("GUI X") + pTemp1(1) = Data.gratingPoints.Rows(i)("GUI Y") + Try + pTemp2(0) = Data.gratingPoints.Rows(i + 1)("GUI X") + pTemp2(1) = Data.gratingPoints.Rows(i + 1)("GUI Y") + Catch ex As Exception + pTemp2(0) = Data.gratingPoints.Rows(0)("GUI X") + pTemp2(1) = Data.gratingPoints.Rows(0)("GUI Y") + End Try + + e.Graphics.DrawLine(pen, pTemp1(0), pTemp1(1), pTemp2(0), pTemp2(1)) + Next + End Sub + +End Class diff --git a/Wardrobe/GUI.Designer.vb b/Wardrobe/GUI/GUI.Designer.vb similarity index 99% rename from Wardrobe/GUI.Designer.vb rename to Wardrobe/GUI/GUI.Designer.vb index 00ab45d..d0efb6d 100644 --- a/Wardrobe/GUI.Designer.vb +++ b/Wardrobe/GUI/GUI.Designer.vb @@ -125,6 +125,7 @@ Partial Class GUI ' 'AngleButton ' + Me.AngleButton.Enabled = False Me.AngleButton.Location = New System.Drawing.Point(705, 68) Me.AngleButton.Margin = New System.Windows.Forms.Padding(3, 2, 3, 2) Me.AngleButton.Name = "AngleButton" @@ -260,8 +261,9 @@ Partial Class GUI ' 'Button_Square ' + Me.Button_Square.Enabled = False Me.Button_Square.Location = New System.Drawing.Point(955, 68) - Me.Button_Square.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4) + Me.Button_Square.Margin = New System.Windows.Forms.Padding(4) Me.Button_Square.Name = "Button_Square" Me.Button_Square.Size = New System.Drawing.Size(123, 34) Me.Button_Square.TabIndex = 25 @@ -326,6 +328,7 @@ Partial Class GUI ' 'Button_SquareSide ' + Me.Button_SquareSide.Enabled = False Me.Button_SquareSide.Location = New System.Drawing.Point(1224, 68) Me.Button_SquareSide.Name = "Button_SquareSide" Me.Button_SquareSide.Size = New System.Drawing.Size(121, 35) @@ -363,7 +366,7 @@ Partial Class GUI Me.Controls.Add(Me.DrawingPanel) Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) - Me.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4) + Me.Margin = New System.Windows.Forms.Padding(4) Me.MaximizeBox = False Me.Name = "GUI" Me.Text = "Floor Gratings" diff --git a/Wardrobe/GUI.resx b/Wardrobe/GUI/GUI.resx similarity index 100% rename from Wardrobe/GUI.resx rename to Wardrobe/GUI/GUI.resx diff --git a/Wardrobe/GUI/GUI.vb b/Wardrobe/GUI/GUI.vb new file mode 100644 index 0000000..de5b2ef --- /dev/null +++ b/Wardrobe/GUI/GUI.vb @@ -0,0 +1,144 @@ +Imports XCCLibrary +Public Class GUI + Public Shared filepath As String = "C:\Users\Anton\Documents\Exjobb" + 'Public Shared filepath As String = "C:\Users\xperd\Documents" + + ' --- Start method (main) for GUI --- + Sub GUI_load() Handles MyBase.Load + ' Initialize GUI + Init_Form() + + ' Initialize DataTables, Measurments and more + Data.Init_Data() + + ' Initialize DrawingPanel + Draw_Grating.Load_DrawingPanel() + + ' Get floor gratings database + Database.Retrive_Database() + + ' Load XCC settings + adminClass.loadSettings(Settings.filesFolder, Settings.HLCtFolder, "SolidWorks") + End Sub + + ' --- Initialize GUI (form) size and position --- + Private Sub Init_Form() + Me.Width = 1400 + Me.Height = 800 + Me.Top = 20 + Me.Left = 50 + End Sub + + + ' ---------------------------------- GUI Templates ---------------------------------- + ' --- TextBox Template --- + Public Sub Create_TextBox(TextBoxName As String, TextBoxText As String, TextBoxLeft As Integer, TextBoxTop As Integer, + TextBoxWidth As Integer) + Dim textBoxTemp As New TextBox With { + .Name = TextBoxName, + .Text = TextBoxText, + .Left = TextBoxLeft, + .Top = TextBoxTop, + .Width = TextBoxWidth, + .Font = New Font("Microsoft Sans Serif", 10) + } + Me.Controls.Add(textBoxTemp) + End Sub + + ' --- Label Template for GUI --- + Public Sub Create_LabelGUI(LabelName As String, LabelText As String, LabelLeft As Integer, LabelTop As Integer) + Dim LabelTemp As New Label With { + .Name = LabelName, + .Text = LabelText, + .Left = LabelLeft, + .Top = LabelTop, + .Font = New Font("Microsoft Sans Serif", 10) + } + Me.Controls.Add(LabelTemp) + End Sub + + + ' ---------------------------------- Gratings Data ---------------------------------- + ' --- When user changes grating type --- + Private Sub ComboBox_TypeChooser_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_TypeChooser.TextChanged + User_Input.TypeChanged(sender, e) + End Sub + + + ' --- When user changes grating material --- + Private Sub ComboBox_Material_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Material.TextChanged + User_Input.MaterialChanged(sender, e) + End Sub + + ' --- When user changes mesh size --- + Private Sub ComboBox_MeshSize_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_MeshSize.TextChanged + User_Input.MeshChanged(sender, e) + End Sub + + ' --- When user changes grating height --- + Private Sub ComboBox_Height_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Height.TextChanged + User_Input.HeightChanged(sender, e) + End Sub + + ' --- When user changes grating thickness --- + Private Sub ComboBox_Thickness_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Thickness.TextChanged + User_Input.ThicknessChanged(sender, e) + End Sub + + ' --- When user checkes/uncheckes whole meshes --- + Private Sub CheckBox_WholeMeshWidths_CheckedChanged(sender As Object, e As EventArgs) _ + Handles CheckBox_WholeMeshWidths.CheckedChanged + + User_Input.WholeMeshWidthsChanged(sender, e) + End Sub + + ' --- Grating width changed --- + Private Sub WidthB_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Width.TextChanged + User_Input.WidthChanged(sender, e) + End Sub + + ' --- Check if width is a number --- + Private Sub ComboBox_Width_KeyPress(sender As Object, e As KeyPressEventArgs) Handles ComboBox_Width.KeyPress + User_Input.Check_IfNumber(e) + End Sub + + ' --- Grating length changed --- + Private Sub LengthBox_TextChanged(sender As Object, e As EventArgs) Handles TextBox_Length.TextChanged + User_Input.LengthChanged(sender, e) + End Sub + + ' --- Check if length is a number --- + Private Sub ComboBox_Length_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox_Length.KeyPress + User_Input.Check_IfNumber(e) + End Sub + + ' ---------------------------------- Functions ---------------------------------- + ' --- When angle button is pressed --- + Private Sub AngleButton_Click(sender As Object, e As EventArgs) Handles AngleButton.Click + Corner_Angle.AngleButton(sender, e) + End Sub + + ' --- When square corner button is pressed --- + Private Sub Button_Square_Click(sender As Object, e As EventArgs) Handles Button_Square.Click + Corner_Rectangle.SquareButtton(sender, e) + End Sub + + ' --- When square side button is pressed --- + Private Sub Button_SquareSide_Click(sender As Object, e As EventArgs) Handles Button_SquareSide.Click + Side_Rectangle.SquareSideButtton(sender, e) + End Sub + + ' ---------------------------------- Settings ---------------------------------- + ' --- Settings button clicked --- + Private Sub SettingsButton_Click(sender As Object, e As EventArgs) Handles SettingsButton.Click + Settings.ButtonClicked(sender, e) + End Sub + + ' ---------------------------------- Export to SW ---------------------------------- + ' --- When export to SW button is pressed --- + Private Sub ExportSWButton_Click(sender As Object, e As EventArgs) Handles ExportSWButton.Click + Model_3D.BuildGrating() + Drawing.CreateDrawing() + End Sub + +End Class \ No newline at end of file diff --git a/Wardrobe/GUI_Settings.vb b/Wardrobe/GUI/Settings.vb similarity index 72% rename from Wardrobe/GUI_Settings.vb rename to Wardrobe/GUI/Settings.vb index f86c9a0..8d9870f 100644 --- a/Wardrobe/GUI_Settings.vb +++ b/Wardrobe/GUI/Settings.vb @@ -1,14 +1,10 @@ Imports XCCLibrary -Imports Excel = Microsoft.Office.Interop.Excel - -Public Class GUI_Settings +Public Class Settings Public Shared filesFolder As String = GUI.filepath ' Hämta från settings Public Shared HLCtFolder As String = GUI.filepath & "\X2021" ' Hämta från settings ' --- Settings button clicked --- Public Shared Sub ButtonClicked(sender As Object, e As EventArgs) - - - adminClass.updateDatabase() 'Update KB + adminClass.updateDatabase() 'Update KB - should be its own button inside of a settings form End Sub End Class diff --git a/Wardrobe/GUI_Drawing_Panel.vb b/Wardrobe/GUI_Drawing_Panel.vb deleted file mode 100644 index 4a56bc5..0000000 --- a/Wardrobe/GUI_Drawing_Panel.vb +++ /dev/null @@ -1,240 +0,0 @@ -Public Class GUI_Drawing_Panel - Public Shared pCon1(3) As Decimal 'pCon(0) = pixel X, pCon(2) = SW X, etc. - Public Shared pCon2(3) As Decimal - Public Shared pCon3(3) As Decimal - Public Shared pCon4(3) As Decimal - - Public Shared containerL, containerW, containerMidX, containerMidY As Integer - Private Shared drawL As Integer = 1 - Private Shared drawW As Integer = 1 - - Private Shared DirSymbolPoints As New Dictionary(Of String, Decimal()) - Private Shared ArrowSymbolPoints As New Dictionary(Of String, Decimal()) - - Public Shared measureLabels As New Dictionary(Of String, Integer()) - - Private Shared drawAspect, gratingAspect As Decimal - Public Shared scaleDiff As Decimal = 1 - - Public Shared pointsOrder As New List(Of String) - Public Shared points As New Dictionary(Of String, Decimal()) - - Public Shared anglePoints As New Dictionary(Of String, Integer()) - Public Shared anglePointsComp As New Dictionary(Of String, String()) - - Public Shared sideSquareMesLine As New Dictionary(Of String, Integer()) - - - Public Shared Sub Load_DrawingPanel() - Get_DrawboxParameters() - Set_ContainerPointsX() - Set_ContainerPointsY() - - Create_DirSymbolPoints() - Create_ArrowSymbolPoints() - Update_GratingPoints() - Create_StartPoints() - End Sub - - ' --- Retrive parameters for the drawing box --- - Private Shared Sub Get_DrawboxParameters() - containerL = GUI.DrawingPanel.Size.Width - containerW = GUI.DrawingPanel.Size.Height - - containerMidX = containerL / 2 - containerMidY = containerW / 2 - - drawL = containerL - 80 - drawW = containerW - 80 - - drawAspect = drawL / drawW - End Sub - - ' --- Set containers points X-values --- - Private Shared Sub Set_ContainerPointsX() - pCon1(0) = containerMidX - drawL / 2 - pCon2(0) = containerMidX + drawL / 2 - pCon3(0) = containerMidX + drawL / 2 - pCon4(0) = containerMidX - drawL / 2 - End Sub - - ' --- Set containers points Y-values --- - Private Shared Sub Set_ContainerPointsY() - pCon1(1) = containerMidY - drawW / 2 - pCon2(1) = containerMidY - drawW / 2 - pCon3(1) = containerMidY + drawW / 2 - pCon4(1) = containerMidY + drawW / 2 - End Sub - - - ' --- Create points for grating direction symbol --- - Private Shared Sub Create_DirSymbolPoints() - DirSymbolPoints.Add("p1", {-30 + containerMidX, -2 + containerMidY}) - DirSymbolPoints.Add("p2", {20 + containerMidX, -2 + containerMidY}) - DirSymbolPoints.Add("p3", {12 + containerMidX, -10 + containerMidY}) - DirSymbolPoints.Add("p4", {15 + containerMidX, -13 + containerMidY}) - DirSymbolPoints.Add("p5", {30 + containerMidX, 2 + containerMidY}) - DirSymbolPoints.Add("p6", {-20 + containerMidX, 2 + containerMidY}) - DirSymbolPoints.Add("p7", {-12 + containerMidX, 10 + containerMidY}) - DirSymbolPoints.Add("p8", {-15 + containerMidX, 13 + containerMidY}) - DirSymbolPoints.Add("p9", {-30 + containerMidX, -2 + containerMidY}) - End Sub - - ' --- Create points for arrow symbol --- - Private Shared Sub Create_ArrowSymbolPoints() - Dim offset As Integer = 20 - ArrowSymbolPoints.Add("p1", {offset, containerW - offset}) - ArrowSymbolPoints.Add("p2", {offset, containerW - offset - 40}) - ArrowSymbolPoints.Add("p3", {offset - 5, containerW - offset - 35}) - ArrowSymbolPoints.Add("p4", {offset, containerW - offset - 40}) - ArrowSymbolPoints.Add("p5", {offset + 5, containerW - offset - 35}) - ArrowSymbolPoints.Add("p6", {offset, containerW - offset - 40}) - ArrowSymbolPoints.Add("p7", {offset, containerW - offset}) - ArrowSymbolPoints.Add("p8", {offset + 40, containerW - offset}) - ArrowSymbolPoints.Add("p9", {offset + 35, containerW - offset - 5}) - ArrowSymbolPoints.Add("p10", {offset + 40, containerW - offset}) - ArrowSymbolPoints.Add("p11", {offset + 35, containerW - offset + 5}) - End Sub - - ' --- Updates all the gratings points --- - Public Shared Sub Update_GratingPoints() - gratingAspect = GUI_Gratings_Data.gratingMaxL / GUI_Gratings_Data.gratingMaxW - - If gratingAspect > drawAspect Then - 'Change draw height - scaleDiff = GUI_Gratings_Data.gratingMaxL / drawL - - pCon1(1) = containerMidY - GUI_Gratings_Data.gratingMaxW / (scaleDiff * 2) - pCon2(1) = containerMidY - GUI_Gratings_Data.gratingMaxW / (scaleDiff * 2) - pCon3(1) = containerMidY + GUI_Gratings_Data.gratingMaxW / (scaleDiff * 2) - pCon4(1) = containerMidY + GUI_Gratings_Data.gratingMaxW / (scaleDiff * 2) - - Set_ContainerPointsX() - Else - 'Change draw width - scaleDiff = GUI_Gratings_Data.gratingMaxW / drawW - - pCon1(0) = containerMidX - GUI_Gratings_Data.gratingMaxL / (scaleDiff * 2) - pCon2(0) = containerMidX + GUI_Gratings_Data.gratingMaxL / (scaleDiff * 2) - pCon3(0) = containerMidX + GUI_Gratings_Data.gratingMaxL / (scaleDiff * 2) - pCon4(0) = containerMidX - GUI_Gratings_Data.gratingMaxL / (scaleDiff * 2) - - Set_ContainerPointsY() - End If - - 'Redraw grating - GUI.DrawingPanel.Refresh() - - 'SW X-values - pCon1(2) = (-GUI_Gratings_Data.gratingMaxL / 2) / 1000 - pCon2(2) = (GUI_Gratings_Data.gratingMaxL / 2) / 1000 - pCon3(2) = (GUI_Gratings_Data.gratingMaxL / 2) / 1000 - pCon4(2) = (-GUI_Gratings_Data.gratingMaxL / 2) / 1000 - - 'SW Y-values - pCon1(3) = (GUI_Gratings_Data.gratingMaxW / 2) / 1000 - pCon2(3) = (GUI_Gratings_Data.gratingMaxW / 2) / 1000 - pCon3(3) = (-GUI_Gratings_Data.gratingMaxW / 2) / 1000 - pCon4(3) = (-GUI_Gratings_Data.gratingMaxW / 2) / 1000 - End Sub - - ' --- Sets the start points for the grating --- - Private Shared Sub Create_StartPoints() - points.Add("p1", pCon1) - GUI_Functions.pointsFunc.Add("p1", True) - pointsOrder.Add("p1") - - points.Add("p2", pCon2) - GUI_Functions.pointsFunc.Add("p2", True) - pointsOrder.Add("p2") - - points.Add("p3", pCon3) - GUI_Functions.pointsFunc.Add("p3", True) - pointsOrder.Add("p3") - - points.Add("p4", pCon4) - GUI_Functions.pointsFunc.Add("p4", True) - pointsOrder.Add("p4") - End Sub - - ' --- Draw all the lines for the container and grating --- - Public Shared Sub DrawingPanel_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) - ' Draw outer grating (red) - Dim penCon As Pen = New Pen(Color.Red, 2) - penCon.DashPattern = {4, 6} - e.Graphics.DrawLine(penCon, CInt(pCon1(0)), CInt(pCon1(1)), CInt(pCon2(0)), CInt(pCon2(1))) - e.Graphics.DrawLine(penCon, CInt(pCon2(0)), CInt(pCon2(1)), CInt(pCon3(0)), CInt(pCon3(1))) - e.Graphics.DrawLine(penCon, CInt(pCon3(0)), CInt(pCon3(1)), CInt(pCon4(0)), CInt(pCon4(1))) - e.Graphics.DrawLine(penCon, CInt(pCon4(0)), CInt(pCon4(1)), CInt(pCon1(0)), CInt(pCon1(1))) - - ' Draw grating direction symbol - Dim symPen As Pen = New Pen(Color.Black, 1) - For i = 1 To DirSymbolPoints.Count - 1 - e.Graphics.DrawLine(symPen, DirSymbolPoints("p" & i)(0), DirSymbolPoints("p" & i)(1), - DirSymbolPoints("p" & i + 1)(0), DirSymbolPoints("p" & i + 1)(1)) - Next - - ' Draw arrow symbol - For i = 1 To ArrowSymbolPoints.Count - 1 - e.Graphics.DrawLine(symPen, ArrowSymbolPoints("p" & i)(0), ArrowSymbolPoints("p" & i)(1), - ArrowSymbolPoints("p" & i + 1)(0), ArrowSymbolPoints("p" & i + 1)(1)) - Next - - ' Draw measure labels - For i = 0 To measureLabels.Count - 1 - Dim mesName As String = measureLabels.Keys(i) - e.Graphics.DrawString(measureLabels(mesName)(0), New Font("Microsoft Sans Serif", 7), Brushes.Black, - New Point(measureLabels(mesName)(1), measureLabels(mesName)(2))) - Next - - 'Stöd measurement linje för sidesquare - Dim penMes As Pen = New Pen(Color.Gray, 1) - For i = 0 To sideSquareMesLine.Count - 1 - Dim mesName As String = sideSquareMesLine.Keys(i) - e.Graphics.DrawLine(penMes, sideSquareMesLine(mesName)(0), sideSquareMesLine(mesName)(1), - sideSquareMesLine(mesName)(2), sideSquareMesLine(mesName)(3)) - - If GUI_Functions.pointsMeasurements(mesName)(2) = 1 OrElse GUI_Functions.pointsMeasurements(mesName)(2) = 3 Then - e.Graphics.DrawLine(penMes, sideSquareMesLine(mesName)(0), sideSquareMesLine(mesName)(1) + 2, - sideSquareMesLine(mesName)(0), sideSquareMesLine(mesName)(1) - 2) - e.Graphics.DrawLine(penMes, sideSquareMesLine(mesName)(2), sideSquareMesLine(mesName)(1) + 2, - sideSquareMesLine(mesName)(2), sideSquareMesLine(mesName)(1) - 2) - Else - e.Graphics.DrawLine(penMes, sideSquareMesLine(mesName)(0) + 2, sideSquareMesLine(mesName)(1), - sideSquareMesLine(mesName)(0) - 2, sideSquareMesLine(mesName)(1)) - e.Graphics.DrawLine(penMes, sideSquareMesLine(mesName)(0) + 2, sideSquareMesLine(mesName)(3), - sideSquareMesLine(mesName)(0) - 2, sideSquareMesLine(mesName)(3)) - End If - Next - - - - Dim Pendot As Pen = New Pen(Color.Gray, 1) - Pendot.DashPattern = {2, 4} - - For i = 0 To anglePoints.Count - 1 - Dim angleName As String = anglePoints.Keys(i) - e.Graphics.DrawLine(Pendot, anglePoints(angleName)(0), anglePoints(angleName)(1), - points(anglePointsComp(angleName)(0))(0), points(anglePointsComp(angleName)(0))(1)) - e.Graphics.DrawLine(Pendot, anglePoints(angleName)(0), anglePoints(angleName)(1), - points(anglePointsComp(angleName)(1))(0), points(anglePointsComp(angleName)(1))(1)) - Next - - - ' Draw actual grating (black) - Dim pen As Pen = New Pen(Color.Black, 2) - For i = 0 To pointsOrder.Count - 1 - Dim pTemp1() As Decimal - Dim pTemp2() As Decimal - - pTemp1 = points(pointsOrder(i)) - Try - pTemp2 = points(pointsOrder(i + 1)) - Catch ex As Exception - pTemp2 = points(pointsOrder(0)) - End Try - - e.Graphics.DrawLine(pen, CInt(pTemp1(0)), CInt(pTemp1(1)), CInt(pTemp2(0)), CInt(pTemp2(1))) - Next - End Sub -End Class diff --git a/Wardrobe/GUI_Functions.vb b/Wardrobe/GUI_Functions.vb deleted file mode 100644 index 7a10917..0000000 --- a/Wardrobe/GUI_Functions.vb +++ /dev/null @@ -1,967 +0,0 @@ -Public Class GUI_Functions - Private Shared angleFunctionActive As Boolean = False - Private Shared squareFunctionActive As Boolean = False - Private Shared squareSideFunctionActive As Boolean = False - - Private Shared pointCounter As Integer - - Public Shared pointsFunc As New Dictionary(Of String, Boolean) - - Public Shared pointsMeasurements As New Dictionary(Of String, Integer()) - - Private Shared sideSquareValues As Integer() = {0, 0, 0} - - Public Shared recessData As New DataTable - - Public Shared Sub AngleButton(sender As Object, e As EventArgs) - GUI.Controls("AngleButton").Enabled = False - GUI.Controls("Button_Square").Enabled = False - GUI.Controls("Button_SquareSide").Enabled = False - - Dim buttonX As Integer = GUI.Controls("AngleButton").Location.X - Dim buttonY As Integer = GUI.Controls("AngleButton").Location.Y - - GUI.Create_TextBox("X_TextBox", "", buttonX + 20, buttonY + 40, 60) - AddHandler GUI.Controls("X_TextBox").TextChanged, AddressOf FunctionTextCorner_Changed - AddHandler GUI.Controls("X_TextBox").KeyPress, AddressOf FunctionText_KeyPress - GUI.Create_LabelGUI("X_Label", "1", buttonX, buttonY + 43) - - GUI.Create_TextBox("Y_TextBox", "", buttonX + 130, buttonY + 40, 60) - AddHandler GUI.Controls("Y_TextBox").TextChanged, AddressOf FunctionTextCorner_Changed - AddHandler GUI.Controls("Y_TextBox").KeyPress, AddressOf FunctionText_KeyPress - GUI.Create_LabelGUI("Y_Label", "2", buttonX + 110, buttonY + 43) - - angleFunctionActive = True - End Sub - - Public Shared Sub SquareButtton(sender As Object, e As EventArgs) - GUI.Controls("AngleButton").Enabled = False - GUI.Controls("Button_Square").Enabled = False - GUI.Controls("Button_SquareSide").Enabled = False - - Dim buttonX As Integer = GUI.Controls("Button_Square").Location.X - Dim buttonY As Integer = GUI.Controls("Button_Square").Location.Y - - GUI.Create_TextBox("X_TextBox", "", buttonX + 20, buttonY + 40, 60) - AddHandler GUI.Controls("X_TextBox").TextChanged, AddressOf FunctionTextCorner_Changed - AddHandler GUI.Controls("X_TextBox").KeyPress, AddressOf FunctionText_KeyPress - GUI.Create_LabelGUI("X_Label", "1", buttonX, buttonY + 43) - - GUI.Create_TextBox("Y_TextBox", "", buttonX + 130, buttonY + 40, 60) - AddHandler GUI.Controls("Y_TextBox").TextChanged, AddressOf FunctionTextCorner_Changed - AddHandler GUI.Controls("Y_TextBox").KeyPress, AddressOf FunctionText_KeyPress - GUI.Create_LabelGUI("Y_Label", "2", buttonX + 110, buttonY + 43) - - ' Add option for corner or side - - squareFunctionActive = True - End Sub - - Public Shared Sub SquareSideButtton(sender As Object, e As EventArgs) - GUI.Controls("AngleButton").Enabled = False - GUI.Controls("Button_Square").Enabled = False - GUI.Controls("Button_SquareSide").Enabled = False - - Dim buttonX As Integer = GUI.Controls("Button_SquareSide").Location.X - Dim buttonY As Integer = GUI.Controls("Button_SquareSide").Location.Y - - GUI.Create_TextBox("X_TextBox", "", buttonX + 20, buttonY + 40, 60) - AddHandler GUI.Controls("X_TextBox").TextChanged, AddressOf FunctionTextSide_Changed - AddHandler GUI.Controls("X_TextBox").KeyPress, AddressOf FunctionText_KeyPress - GUI.Create_LabelGUI("X_Label", "L", buttonX, buttonY + 43) - - GUI.Create_TextBox("Y_TextBox", "", buttonX + 130, buttonY + 40, 60) - AddHandler GUI.Controls("Y_TextBox").TextChanged, AddressOf FunctionTextSide_Changed - AddHandler GUI.Controls("Y_TextBox").KeyPress, AddressOf FunctionText_KeyPress - GUI.Create_LabelGUI("Y_Label", "W", buttonX + 110, buttonY + 43) - - GUI.Create_TextBox("Off_TextBox", "", buttonX + 250, buttonY + 40, 60) - AddHandler GUI.Controls("Off_TextBox").TextChanged, AddressOf FunctionTextSide_Changed - AddHandler GUI.Controls("Off_TextBox").KeyPress, AddressOf FunctionText_KeyPress - GUI.Create_LabelGUI("Off_Label", "Offset", buttonX + 210, buttonY + 43) - - ' Add option for corner or side - - 'squareSideFunctionActive = True - End Sub - - Private Shared Sub FunctionText_KeyPress(sender As Object, e As KeyPressEventArgs) - GUI_Gratings_Data.Check_IfNumber(e) - End Sub - - Private Shared Sub FunctionTextCorner_Changed(sender As TextBox, e As EventArgs) - Dim value1, value2 As Integer - Try - value1 = CInt(GUI.Controls("X_TextBox").Text) - value2 = CInt(GUI.Controls("Y_TextBox").Text) - Catch ex As Exception - value1 = 0 - value2 = 0 - End Try - If value1 > 0 AndAlso value2 > 0 Then - If GUI.DrawingPanel.Controls.Count = 2 Then - For i = 0 To GUI_Drawing_Panel.pointsOrder.Count - 1 - If pointsFunc(GUI_Drawing_Panel.pointsOrder(i)) Then - Dim pointButton As New Button - pointButton.Width = 30 - pointButton.Height = 30 - - pointButton.Left = GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(i))(0) - pointButton.Width / 2 - pointButton.Top = GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(i))(1) - pointButton.Height / 2 - - pointButton.Name = GUI_Drawing_Panel.pointsOrder(i) & "_Button" - pointButton.Text = "" - - pointButton.BackColor = Color.FromArgb(50, Color.Red) - pointButton.FlatStyle = FlatStyle.Flat - pointButton.FlatAppearance.BorderSize = 0 - pointButton.FlatAppearance.MouseOverBackColor = Color.Red - pointButton.FlatAppearance.MouseDownBackColor = Color.DarkRed - - Dim gp As New Drawing.Drawing2D.GraphicsPath - gp.AddEllipse(New Rectangle(New Point(0, 0), New Size(30, 30))) - pointButton.Region = New Region(gp) - - GUI.DrawingPanel.Controls.Add(pointButton) - - AddHandler pointButton.Click, AddressOf PointButton_Click - End If - Next - pointCounter += 1 - End If - - ElseIf GUI.DrawingPanel.Controls.Count > 2 Then - For i = 0 To GUI_Drawing_Panel.pointsOrder.Count - 1 - If pointsFunc(GUI_Drawing_Panel.pointsOrder(i)) Then - RemoveHandler GUI.DrawingPanel.Controls(GUI_Drawing_Panel.pointsOrder(i) & "_Button").Click, - AddressOf PointButton_Click - GUI.DrawingPanel.Controls.RemoveByKey(GUI_Drawing_Panel.pointsOrder(i) & "_Button") - End If - Next - - pointCounter -= 1 - End If - End Sub - - - Private Shared Sub FunctionTextSide_Changed(sender As TextBox, e As EventArgs) - Try - sideSquareValues(0) = CInt(GUI.Controls("X_TextBox").Text) - sideSquareValues(1) = CInt(GUI.Controls("Y_TextBox").Text) - sideSquareValues(2) = CInt(GUI.Controls("Off_TextBox").Text) - Catch ex As Exception - sideSquareValues(0) = 0 - sideSquareValues(1) = 0 - sideSquareValues(2) = 0 - End Try - - If sideSquareValues(0) > 0 AndAlso sideSquareValues(1) > 0 AndAlso sideSquareValues(2) > 0 Then - If GUI.DrawingPanel.Controls.Count = 2 Then - For i = 1 To 4 - Dim sidePoints As New List(Of String) - If i = 1 Then - Create_SideButton(sideSquareValues(0) / (GUI_Drawing_Panel.scaleDiff), 30, - GUI_Drawing_Panel.pCon1(0) + sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon1(1) - 30 / 2, "Button_" & i) - ElseIf i = 2 Then - Create_SideButton(30, sideSquareValues(1) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon2(0) - 30 / 2, - GUI_Drawing_Panel.pCon1(1) + sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff), "Button_" & i) - ElseIf i = 3 Then - Create_SideButton(sideSquareValues(0) / (GUI_Drawing_Panel.scaleDiff), 30, - GUI_Drawing_Panel.pCon3(0) - sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff) - sideSquareValues(0) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon3(1) - 30 / 2, "Button_" & i) - Else - Create_SideButton(30, sideSquareValues(1) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon1(0) - 30 / 2, - GUI_Drawing_Panel.pCon4(1) - sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff) - sideSquareValues(1) / (GUI_Drawing_Panel.scaleDiff), - "Button_" & i) - End If - - Next - pointCounter = pointCounter + 1 - - Else - - 'flytta knapparna/ändra storlek - For i = 2 To GUI.DrawingPanel.Controls.Count - 1 - Dim buttonSide As Integer = CInt(GUI.DrawingPanel.Controls(i).Name.Split("_")(1)) - If buttonSide = 1 Then - GUI.DrawingPanel.Controls(i).Width = sideSquareValues(0) / (GUI_Drawing_Panel.scaleDiff) - GUI.DrawingPanel.Controls(i).Left = GUI_Drawing_Panel.pCon1(0) + sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff) - ElseIf buttonSide = 2 Then - GUI.DrawingPanel.Controls(i).Height = sideSquareValues(1) / (GUI_Drawing_Panel.scaleDiff) - GUI.DrawingPanel.Controls(i).Top = GUI_Drawing_Panel.pCon1(1) + sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff) - ElseIf buttonSide = 3 Then - GUI.DrawingPanel.Controls(i).Width = sideSquareValues(0) / (GUI_Drawing_Panel.scaleDiff) - GUI.DrawingPanel.Controls(i).Left = GUI_Drawing_Panel.pCon3(0) - sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff) - GUI.DrawingPanel.Controls(i).Width - Else - GUI.DrawingPanel.Controls(i).Height = sideSquareValues(1) / (GUI_Drawing_Panel.scaleDiff) - GUI.DrawingPanel.Controls(i).Top = GUI_Drawing_Panel.pCon4(1) - sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff) - GUI.DrawingPanel.Controls(i).Height - End If - - Next - - End If - - ElseIf GUI.DrawingPanel.Controls.Count > 2 Then - For i = 2 To GUI.DrawingPanel.Controls.Count - 1 - RemoveHandler GUI.DrawingPanel.Controls(2).Click, AddressOf SideButton_Click - GUI.DrawingPanel.Controls.RemoveAt(2) - Next - - pointCounter -= 1 - End If - End Sub - - Private Shared Sub Create_SideButton(bWidth As Integer, bHeight As Integer, bLeft As Integer, bTop As Integer, bName As String) - Dim sideButton As New Button - - sideButton.Width = bWidth - sideButton.Height = bHeight - - sideButton.Left = bLeft - sideButton.Top = bTop - - sideButton.Name = bName - sideButton.Text = "" - - sideButton.BackColor = Color.FromArgb(50, Color.Red) - sideButton.FlatStyle = FlatStyle.Flat - sideButton.FlatAppearance.BorderSize = 0 - sideButton.FlatAppearance.MouseOverBackColor = Color.Red - sideButton.FlatAppearance.MouseDownBackColor = Color.DarkRed - - GUI.DrawingPanel.Controls.Add(sideButton) - - AddHandler sideButton.Click, AddressOf SideButton_Click - End Sub - - - ' --- When a side function button is pressed --- - Private Shared Sub SideButton_Click(sender As Button, e As EventArgs) - 'Determine which side is being pressed - Dim sidePressed As Integer = CInt(sender.Name.Split("_")(1)) - - ' Remove point buttons - For i = 2 To GUI.DrawingPanel.Controls.Count - 1 - RemoveHandler GUI.DrawingPanel.Controls(2).Click, AddressOf SideButton_Click - GUI.DrawingPanel.Controls.RemoveAt(2) - Next - - Dim numOfNewPoints As Integer - - Dim sidePoints As New List(Of String) - Dim index As Integer - - If sidePressed = 1 Then - For j = 0 To GUI_Drawing_Panel.pointsOrder.Count - 1 - If GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(j))(1) = GUI_Drawing_Panel.pCon1(1) Then - sidePoints.Add(GUI_Drawing_Panel.pointsOrder(j)) - End If - Next - index = GUI_Drawing_Panel.pointsOrder.IndexOf(sidePoints(0)) - If sidePoints.Count > 2 Then - For i = sidePoints.Count / 2 To 2 Step -1 - If GUI_Drawing_Panel.points(sidePoints(i * 2 - 2))(0) < - GUI_Drawing_Panel.pCon1(0) + sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff) Then - - index = GUI_Drawing_Panel.pointsOrder.IndexOf(sidePoints(i * 2 - 2)) - Exit For - End If - Next - End If - - ElseIf sidePressed = 2 Then - For j = 1 To GUI_Drawing_Panel.pointsOrder.Count - 1 - If GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(j))(0) = GUI_Drawing_Panel.pCon2(0) Then - sidePoints.Add(GUI_Drawing_Panel.pointsOrder(j)) - End If - Next - index = GUI_Drawing_Panel.pointsOrder.IndexOf(sidePoints(0)) - If sidePoints.Count > 2 Then - For i = sidePoints.Count / 2 To 2 Step -1 - If GUI_Drawing_Panel.points(sidePoints(i * 2 - 2))(1) < - GUI_Drawing_Panel.pCon2(1) + sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff) Then - - index = GUI_Drawing_Panel.pointsOrder.IndexOf(sidePoints(i * 2 - 2)) - Exit For - End If - Next - End If - - ElseIf sidePressed = 3 Then - For j = 2 To GUI_Drawing_Panel.pointsOrder.Count - 1 - If GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(j))(1) = GUI_Drawing_Panel.pCon3(1) Then - sidePoints.Add(GUI_Drawing_Panel.pointsOrder(j)) - End If - Next - index = GUI_Drawing_Panel.pointsOrder.IndexOf(sidePoints(0)) - If sidePoints.Count > 2 Then - For i = sidePoints.Count / 2 To 2 Step -1 - If GUI_Drawing_Panel.points(sidePoints(i * 2 - 2))(0) > - GUI_Drawing_Panel.pCon3(0) - sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff) Then - - index = GUI_Drawing_Panel.pointsOrder.IndexOf(sidePoints(i * 2 - 2)) - Exit For - End If - Next - End If - - Else - For j = 3 To GUI_Drawing_Panel.pointsOrder.Count - 1 - If GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(j))(0) = GUI_Drawing_Panel.pCon1(0) Then - sidePoints.Add(GUI_Drawing_Panel.pointsOrder(j)) - End If - Next - sidePoints.Add(GUI_Drawing_Panel.pointsOrder(0)) - - index = GUI_Drawing_Panel.pointsOrder.IndexOf(sidePoints(0)) - If sidePoints.Count > 2 Then - For i = sidePoints.Count / 2 To 2 Step -1 - If GUI_Drawing_Panel.points(sidePoints(i * 2 - 2))(1) > - GUI_Drawing_Panel.pCon4(1) - sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff) Then - - index = GUI_Drawing_Panel.pointsOrder.IndexOf(sidePoints(i * 2 - 2)) - Exit For - End If - Next - End If - End If - - - - For i = 2 To pointsMeasurements.Count - 1 - Dim mesName As String = pointsMeasurements.Keys(i) - If mesName.Split("_")(0) = "SS1" Then - If index + 2 = pointsMeasurements(mesName)(1) Then - If GUI_Drawing_Panel.measureLabels(mesName)(3) = 1 Then - GUI_Drawing_Panel.measureLabels(mesName)(0) = GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(index + 1))(2) * 1000 - - GUI_Drawing_Panel.pCon1(2) * 1000 - (sideSquareValues(2) + sideSquareValues(0)) - - GUI_Drawing_Panel.sideSquareMesLine(mesName)(0) = GUI_Drawing_Panel.pCon1(0) + (sideSquareValues(2) + sideSquareValues(0)) / (GUI_Drawing_Panel.scaleDiff) - - GUI_Drawing_Panel.measureLabels(mesName)(1) = (GUI_Drawing_Panel.sideSquareMesLine(mesName)(0) + GUI_Drawing_Panel.sideSquareMesLine(mesName)(2)) / 2 - 8 - - ElseIf GUI_Drawing_Panel.measureLabels(mesName)(3) = 2 Then - GUI_Drawing_Panel.measureLabels(mesName)(0) = GUI_Drawing_Panel.pCon2(3) * 1000 - GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(index + 1))(3) * 1000 - - (sideSquareValues(2) + sideSquareValues(1)) - - GUI_Drawing_Panel.sideSquareMesLine(mesName)(1) = GUI_Drawing_Panel.pCon2(1) + (sideSquareValues(2) + sideSquareValues(1)) / (GUI_Drawing_Panel.scaleDiff) - - GUI_Drawing_Panel.measureLabels(mesName)(2) = (GUI_Drawing_Panel.sideSquareMesLine(mesName)(1) + GUI_Drawing_Panel.sideSquareMesLine(mesName)(3)) / 2 - 6 - - ElseIf GUI_Drawing_Panel.measureLabels(mesName)(3) = 3 Then - GUI_Drawing_Panel.measureLabels(mesName)(0) = GUI_Drawing_Panel.pCon3(2) * 1000 - GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(index + 1))(2) * 1000 _ - - (sideSquareValues(2) + sideSquareValues(0)) - - GUI_Drawing_Panel.sideSquareMesLine(mesName)(0) = GUI_Drawing_Panel.pCon3(0) - (sideSquareValues(2) + sideSquareValues(0)) / (GUI_Drawing_Panel.scaleDiff) - - GUI_Drawing_Panel.measureLabels(mesName)(1) = (GUI_Drawing_Panel.sideSquareMesLine(mesName)(0) + GUI_Drawing_Panel.sideSquareMesLine(mesName)(2)) / 2 - 8 - - Else - GUI_Drawing_Panel.measureLabels(mesName)(0) = GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(index + 1))(3) * 1000 - - GUI_Drawing_Panel.pCon4(3) * 1000 - (sideSquareValues(2) + sideSquareValues(1)) - - GUI_Drawing_Panel.sideSquareMesLine(mesName)(1) = GUI_Drawing_Panel.pCon4(1) - (sideSquareValues(2) + sideSquareValues(1)) / (GUI_Drawing_Panel.scaleDiff) - - GUI_Drawing_Panel.measureLabels(mesName)(2) = (GUI_Drawing_Panel.sideSquareMesLine(mesName)(1) + GUI_Drawing_Panel.sideSquareMesLine(mesName)(3)) / 2 - 6 - - End If - End If - End If - Next - - - - For i = 2 To pointsMeasurements.Count - 1 - Dim mesName As String = pointsMeasurements.Keys(i) - If mesName.Split("_")(0) <> "SS1" AndAlso index + 1 < pointsMeasurements(mesName)(0) Then - pointsMeasurements(mesName)(0) = pointsMeasurements(mesName)(0) + 4 - pointsMeasurements(mesName)(1) = pointsMeasurements(mesName)(1) + 4 - ElseIf mesName.Split("_")(0) = "SS1" AndAlso index + 2 <= pointsMeasurements(mesName)(1) Then - pointsMeasurements(mesName)(1) = pointsMeasurements(mesName)(1) + 4 - End If - Next - - Dim mesNum As Integer = pointsMeasurements.Count - 1 - If sidePressed = 1 Then - GUI_Drawing_Panel.points.Add("pSS" & pointCounter * 4 - 3, - {GUI_Drawing_Panel.pCon1(0) + sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon1(1), - GUI_Drawing_Panel.pCon1(2) + sideSquareValues(2) / 1000, - GUI_Drawing_Panel.pCon1(3)}) - GUI_Drawing_Panel.points.Add("pSS" & pointCounter * 4 - 2, - {GUI_Drawing_Panel.pCon1(0) + sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon1(1) + sideSquareValues(1) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon1(2) + sideSquareValues(2) / 1000, - GUI_Drawing_Panel.pCon1(3) - sideSquareValues(1) / 1000}) - GUI_Drawing_Panel.points.Add("pSS" & pointCounter * 4 - 1, - {GUI_Drawing_Panel.pCon1(0) + (sideSquareValues(2) + sideSquareValues(0)) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon1(1) + sideSquareValues(1) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon1(2) + (sideSquareValues(2) + sideSquareValues(0)) / 1000, - GUI_Drawing_Panel.pCon1(3) - sideSquareValues(1) / 1000}) - GUI_Drawing_Panel.points.Add("pSS" & pointCounter * 4, - {GUI_Drawing_Panel.pCon1(0) + (sideSquareValues(2) + sideSquareValues(0)) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon1(1), - GUI_Drawing_Panel.pCon1(2) + (sideSquareValues(2) + sideSquareValues(0)) / 1000, - GUI_Drawing_Panel.pCon1(3)}) - 'Outer measuements - pointsMeasurements("Lmes")(1) = pointsMeasurements("Lmes")(1) + 4 - pointsMeasurements("Wmes")(0) = pointsMeasurements("Wmes")(0) + 4 - pointsMeasurements("Wmes")(1) = pointsMeasurements("Wmes")(1) + 4 - - 'SideSquare measurements - pointsMeasurements.Add("SS1_" & mesNum, {GUI_Drawing_Panel.pointsOrder.IndexOf(sidePoints(0)) + 1, index + 2, 1}) - pointsMeasurements.Add("SS_" & mesNum + 1, {index + 2, index + 5, 1}) - pointsMeasurements.Add("SS_" & mesNum + 2, {index + 2, index + 3, 4}) - - 'Support Line for sidesquare measurement - GUI_Drawing_Panel.sideSquareMesLine.Add("SS1_" & mesNum, {GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(index))(0), - GUI_Drawing_Panel.pCon1(1) - 15, - GUI_Drawing_Panel.pCon1(0) + sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon1(1) - 15}) - - - 'Label - GUI_Drawing_Panel.measureLabels.Add("SS1_" & mesNum, {CInt(GUI.Controls("Off_TextBox").Text) - (GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(index))(2) * 1000 + GUI_Gratings_Data.gratingMaxL / 2), - (GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(index))(0) + GUI_Drawing_Panel.pCon1(0) + sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff)) / 2 - 8, - GUI_Drawing_Panel.pCon1(1) - 15 - 12 - 3, - 1}) '15 är linjen, 12 är textens höjd, 3 är lite extra - GUI_Drawing_Panel.measureLabels.Add("SS_" & mesNum + 1, {CInt(GUI.Controls("X_TextBox").Text), - GUI_Drawing_Panel.pCon1(0) + sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff) + CInt(GUI.Controls("X_TextBox").Text) / (2 * GUI_Drawing_Panel.scaleDiff) - 8, - GUI_Drawing_Panel.pCon1(1) + sideSquareValues(1) / (GUI_Drawing_Panel.scaleDiff) + 3, - 1}) - GUI_Drawing_Panel.measureLabels.Add("SS_" & mesNum + 2, {CInt(GUI.Controls("Y_TextBox").Text), - GUI_Drawing_Panel.pCon1(0) + sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff) - 18 - 3, - GUI_Drawing_Panel.pCon1(1) + CInt(GUI.Controls("Y_TextBox").Text) / (2 * GUI_Drawing_Panel.scaleDiff) - 4, - 1}) - - - ElseIf sidePressed = 2 Then - GUI_Drawing_Panel.points.Add("pSS" & pointCounter * 4 - 3, - {GUI_Drawing_Panel.pCon2(0), - GUI_Drawing_Panel.pCon2(1) + sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon2(2), - GUI_Drawing_Panel.pCon2(3) - sideSquareValues(2) / 1000}) - GUI_Drawing_Panel.points.Add("pSS" & pointCounter * 4 - 2, - {GUI_Drawing_Panel.pCon2(0) - sideSquareValues(0) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon2(1) + sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon2(2) - sideSquareValues(0) / 1000, - GUI_Drawing_Panel.pCon2(3) - sideSquareValues(2) / 1000}) - GUI_Drawing_Panel.points.Add("pSS" & pointCounter * 4 - 1, - {GUI_Drawing_Panel.pCon2(0) - sideSquareValues(0) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon2(1) + (sideSquareValues(2) + sideSquareValues(1)) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon2(2) - sideSquareValues(0) / 1000, - GUI_Drawing_Panel.pCon2(3) - (sideSquareValues(2) + sideSquareValues(1)) / 1000}) - GUI_Drawing_Panel.points.Add("pSS" & pointCounter * 4, - {GUI_Drawing_Panel.pCon2(0), - GUI_Drawing_Panel.pCon2(1) + (sideSquareValues(2) + sideSquareValues(1)) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon2(2), - GUI_Drawing_Panel.pCon2(3) - (sideSquareValues(2) + sideSquareValues(1)) / 1000}) - 'Outer measuements - pointsMeasurements("Wmes")(1) = pointsMeasurements("Wmes")(1) + 4 - - 'SideSquare measurements - pointsMeasurements.Add("SS1_" & mesNum, {GUI_Drawing_Panel.pointsOrder.IndexOf(sidePoints(0)) + 1, index + 2, 2}) - pointsMeasurements.Add("SS_" & mesNum + 1, {index + 2, index + 5, 2}) - pointsMeasurements.Add("SS_" & mesNum + 2, {index + 2, index + 3, 3}) - - 'Support Line for sidesquare measurement - GUI_Drawing_Panel.sideSquareMesLine.Add("SS1_" & mesNum, {GUI_Drawing_Panel.pCon2(0) + 15, - GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(index))(1), - GUI_Drawing_Panel.pCon2(0) + 15, - GUI_Drawing_Panel.pCon2(1) + sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff)}) - - 'Label - GUI_Drawing_Panel.measureLabels.Add("SS1_" & mesNum, {CInt(GUI.Controls("Off_TextBox").Text) - (GUI_Gratings_Data.gratingMaxW / 2 - GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(index))(3) * 1000), - GUI_Drawing_Panel.pCon2(0) + 15 + 3, - (GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(index))(1) + GUI_Drawing_Panel.pCon2(1) + sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff)) / 2 - 4, - 2}) - - GUI_Drawing_Panel.measureLabels.Add("SS_" & mesNum + 1, {CInt(GUI.Controls("Y_TextBox").Text), - GUI_Drawing_Panel.pCon2(0) - sideSquareValues(0) / (GUI_Drawing_Panel.scaleDiff) - 18 - 3, - GUI_Drawing_Panel.pCon2(1) + (sideSquareValues(2) + sideSquareValues(1) / 2) / GUI_Drawing_Panel.scaleDiff - 4, - 2}) - - GUI_Drawing_Panel.measureLabels.Add("SS_" & mesNum + 2, {CInt(GUI.Controls("X_TextBox").Text), - GUI_Drawing_Panel.pCon2(0) - sideSquareValues(0) / (2 * GUI_Drawing_Panel.scaleDiff) - 8, - GUI_Drawing_Panel.pCon2(1) + sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff) - 15 - 3, - 2}) - - ElseIf sidePressed = 3 Then - GUI_Drawing_Panel.points.Add("pSS" & pointCounter * 4 - 3, - {GUI_Drawing_Panel.pCon3(0) - sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon3(1), - GUI_Drawing_Panel.pCon3(2) - sideSquareValues(2) / 1000, - GUI_Drawing_Panel.pCon3(3)}) - GUI_Drawing_Panel.points.Add("pSS" & pointCounter * 4 - 2, - {GUI_Drawing_Panel.pCon3(0) - sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon3(1) - sideSquareValues(1) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon3(2) - sideSquareValues(2) / 1000, - GUI_Drawing_Panel.pCon3(3) + sideSquareValues(1) / 1000}) - GUI_Drawing_Panel.points.Add("pSS" & pointCounter * 4 - 1, - {GUI_Drawing_Panel.pCon3(0) - (sideSquareValues(2) + sideSquareValues(0)) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon3(1) - sideSquareValues(1) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon3(2) - (sideSquareValues(2) + sideSquareValues(0)) / 1000, - GUI_Drawing_Panel.pCon3(3) + sideSquareValues(1) / 1000}) - GUI_Drawing_Panel.points.Add("pSS" & pointCounter * 4, - {GUI_Drawing_Panel.pCon3(0) - (sideSquareValues(2) + sideSquareValues(0)) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon3(1), - GUI_Drawing_Panel.pCon3(2) - (sideSquareValues(2) + sideSquareValues(0)) / 1000, - GUI_Drawing_Panel.pCon3(3)}) - - pointsMeasurements.Add("SS1_" & mesNum, {GUI_Drawing_Panel.pointsOrder.IndexOf(sidePoints(0)) + 1, index + 2, 3}) - pointsMeasurements.Add("SS_" & mesNum + 1, {index + 2, index + 5, 3}) - pointsMeasurements.Add("SS_" & mesNum + 2, {index + 2, index + 3, 4}) - - 'Support Line for sidesquare measurement - GUI_Drawing_Panel.sideSquareMesLine.Add("SS1_" & mesNum, {GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(index))(0), - GUI_Drawing_Panel.pCon3(1) + 15, - GUI_Drawing_Panel.pCon3(0) - sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon3(1) + 15}) - - 'Label - GUI_Drawing_Panel.measureLabels.Add("SS1_" & mesNum, {CInt(GUI.Controls("Off_TextBox").Text) - (GUI_Gratings_Data.gratingMaxL / 2 - GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(index))(2) * 1000), - (GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(index))(0) + GUI_Drawing_Panel.pCon3(0) - sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff)) / 2 - 8, - GUI_Drawing_Panel.pCon3(1) + 15 + 3, - 3}) '15 är linjen, 12 är textens höjd, 3 är lite extra - GUI_Drawing_Panel.measureLabels.Add("SS_" & mesNum + 1, {CInt(GUI.Controls("X_TextBox").Text), - GUI_Drawing_Panel.pCon3(0) - sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff) - CInt(GUI.Controls("X_TextBox").Text) / (2 * GUI_Drawing_Panel.scaleDiff) - 8, - GUI_Drawing_Panel.pCon3(1) - sideSquareValues(1) / (GUI_Drawing_Panel.scaleDiff) - 12 - 3, - 3}) - GUI_Drawing_Panel.measureLabels.Add("SS_" & mesNum + 2, {CInt(GUI.Controls("Y_TextBox").Text), - GUI_Drawing_Panel.pCon3(0) - sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff) + 3, - GUI_Drawing_Panel.pCon3(1) - CInt(GUI.Controls("Y_TextBox").Text) / (2 * GUI_Drawing_Panel.scaleDiff) - 4, - 3}) - - Else - GUI_Drawing_Panel.points.Add("pSS" & pointCounter * 4 - 3, - {GUI_Drawing_Panel.pCon4(0), - GUI_Drawing_Panel.pCon4(1) - sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon4(2), - GUI_Drawing_Panel.pCon4(3) + sideSquareValues(2) / 1000}) - GUI_Drawing_Panel.points.Add("pSS" & pointCounter * 4 - 2, - {GUI_Drawing_Panel.pCon4(0) + sideSquareValues(0) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon4(1) - sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon4(2) + sideSquareValues(0) / 1000, - GUI_Drawing_Panel.pCon4(3) + sideSquareValues(2) / 1000}) - GUI_Drawing_Panel.points.Add("pSS" & pointCounter * 4 - 1, - {GUI_Drawing_Panel.pCon4(0) + sideSquareValues(0) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon4(1) - (sideSquareValues(2) + sideSquareValues(1)) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon4(2) + sideSquareValues(0) / 1000, - GUI_Drawing_Panel.pCon4(3) + (sideSquareValues(2) + sideSquareValues(1)) / 1000}) - GUI_Drawing_Panel.points.Add("pSS" & pointCounter * 4, - {GUI_Drawing_Panel.pCon4(0), - GUI_Drawing_Panel.pCon4(1) - (sideSquareValues(2) + sideSquareValues(1)) / (GUI_Drawing_Panel.scaleDiff), - GUI_Drawing_Panel.pCon4(2), - GUI_Drawing_Panel.pCon4(3) + (sideSquareValues(2) + sideSquareValues(1)) / 1000}) - - pointsMeasurements.Add("SS1_" & mesNum, {GUI_Drawing_Panel.pointsOrder.IndexOf(sidePoints(0)) + 1, index + 2, 4}) - pointsMeasurements.Add("SS_" & mesNum + 1, {index + 2, index + 5, 4}) - pointsMeasurements.Add("SS_" & mesNum + 2, {index + 2, index + 3, 3}) - - 'Support Line for sidesquare measurement - GUI_Drawing_Panel.sideSquareMesLine.Add("SS1_" & mesNum, {GUI_Drawing_Panel.pCon4(0) - 15, - GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(index))(1), - GUI_Drawing_Panel.pCon4(0) - 15, - GUI_Drawing_Panel.pCon4(1) - sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff)}) - - 'Label - GUI_Drawing_Panel.measureLabels.Add("SS1_" & mesNum, {CInt(GUI.Controls("Off_TextBox").Text) - (GUI_Gratings_Data.gratingMaxW / 2 + GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(index))(3) * 1000), - GUI_Drawing_Panel.pCon4(0) - 15 - 18 - 3, - (GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(index))(1) + GUI_Drawing_Panel.pCon4(1) - sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff)) / 2 - 4, - 4}) - - GUI_Drawing_Panel.measureLabels.Add("SS_" & mesNum + 1, {CInt(GUI.Controls("Y_TextBox").Text), - GUI_Drawing_Panel.pCon4(0) + sideSquareValues(0) / (GUI_Drawing_Panel.scaleDiff) + 3, - GUI_Drawing_Panel.pCon4(1) - (sideSquareValues(2) + sideSquareValues(1) / 2) / GUI_Drawing_Panel.scaleDiff - 4, - 4}) - - GUI_Drawing_Panel.measureLabels.Add("SS_" & mesNum + 2, {CInt(GUI.Controls("X_TextBox").Text), - GUI_Drawing_Panel.pCon4(0) + sideSquareValues(0) / (2 * GUI_Drawing_Panel.scaleDiff) - 8, - GUI_Drawing_Panel.pCon4(1) - sideSquareValues(2) / (GUI_Drawing_Panel.scaleDiff) + 3, - 4}) - - End If - - pointsFunc.Add("pSS" & pointCounter * 4 - 3, False) - pointsFunc.Add("pSS" & pointCounter * 4 - 2, False) - pointsFunc.Add("pSS" & pointCounter * 4 - 1, False) - pointsFunc.Add("pSS" & pointCounter * 4, False) - - 'Insert four new points - GUI_Drawing_Panel.pointsOrder.Insert(index + 1, "pSS" & pointCounter * 4 - 3) - GUI_Drawing_Panel.pointsOrder.Insert(index + 2, "pSS" & pointCounter * 4 - 2) - GUI_Drawing_Panel.pointsOrder.Insert(index + 3, "pSS" & pointCounter * 4 - 1) - GUI_Drawing_Panel.pointsOrder.Insert(index + 4, "pSS" & pointCounter * 4) - - numOfNewPoints = 4 - - 'Redraw grating - GUI.DrawingPanel.Refresh() - - RemoveHandler GUI.Controls("X_TextBox").TextChanged, AddressOf FunctionTextSide_Changed - RemoveHandler GUI.Controls("X_TextBox").KeyPress, AddressOf FunctionText_KeyPress - GUI.Controls.RemoveByKey("X_TextBox") - - RemoveHandler GUI.Controls("Y_TextBox").TextChanged, AddressOf FunctionTextSide_Changed - RemoveHandler GUI.Controls("Y_TextBox").KeyPress, AddressOf FunctionText_KeyPress - GUI.Controls.RemoveByKey("Y_TextBox") - - RemoveHandler GUI.Controls("Off_TextBox").TextChanged, AddressOf FunctionTextSide_Changed - RemoveHandler GUI.Controls("Off_TextBox").KeyPress, AddressOf FunctionText_KeyPress - GUI.Controls.RemoveByKey("Off_TextBox") - - GUI.Controls.RemoveByKey("X_Label") - GUI.Controls.RemoveByKey("Y_Label") - GUI.Controls.RemoveByKey("Off_Label") - - GUI.Controls("AngleButton").Enabled = True - GUI.Controls("Button_Square").Enabled = True - GUI.Controls("Button_SquareSide").Enabled = True - - - - - End Sub - - ' --- When a corner function button is pressed --- - Private Shared Sub PointButton_Click(sender As Button, e As EventArgs) - 'Determine which point is being pressed - Dim pointPressed As String = sender.Name.Split("_")(0) - Dim index As Integer = GUI_Drawing_Panel.pointsOrder.IndexOf(pointPressed) - - ' Remove point buttons - For i = 0 To GUI_Drawing_Panel.pointsOrder.Count - 1 - If pointsFunc(GUI_Drawing_Panel.pointsOrder(i)) Then - RemoveHandler GUI.DrawingPanel.Controls(GUI_Drawing_Panel.pointsOrder(i) & "_Button").Click, - AddressOf PointButton_Click - GUI.DrawingPanel.Controls.RemoveByKey(GUI_Drawing_Panel.pointsOrder(i) & "_Button") - End If - Next - - 'Retrive that points coords - Dim pXP As Decimal = GUI_Drawing_Panel.points(pointPressed)(0) - Dim pYP As Decimal = GUI_Drawing_Panel.points(pointPressed)(1) - Dim pXSW As Decimal = GUI_Drawing_Panel.points(pointPressed)(2) - Dim pYSW As Decimal = GUI_Drawing_Panel.points(pointPressed)(3) - - Dim d1P As Decimal = GUI.Controls("X_TextBox").Text / GUI_Drawing_Panel.scaleDiff ' BEHÖVS Cdec?? - Dim d2P As Decimal = GUI.Controls("Y_TextBox").Text / GUI_Drawing_Panel.scaleDiff - Dim d1SW As Decimal = GUI.Controls("X_TextBox").Text / 1000 - Dim d2SW As Decimal = GUI.Controls("Y_TextBox").Text / 1000 - - Dim numOfNewPoints As Integer - - - - recessData.Rows.Add() - - - For i = 2 To pointsMeasurements.Count - 1 - Dim mesName As String = pointsMeasurements.Keys(i) - If mesName.Split("_")(0) <> "SS1" AndAlso mesName.Split("_")(0) <> "SS" Then - If index + 1 = pointsMeasurements(mesName)(0) Then - If GUI_Drawing_Panel.measureLabels(mesName)(3) = 1 Then - GUI_Drawing_Panel.measureLabels(mesName)(0) = GUI_Drawing_Panel.measureLabels(mesName)(0) - GUI.Controls("X_TextBox").Text - GUI_Drawing_Panel.measureLabels(mesName)(1) = GUI_Drawing_Panel.measureLabels(mesName)(1) + d1P / 2 - ElseIf GUI_Drawing_Panel.measureLabels(mesName)(3) = 2 Then - GUI_Drawing_Panel.measureLabels(mesName)(0) = GUI_Drawing_Panel.measureLabels(mesName)(0) - GUI.Controls("Y_TextBox").Text - GUI_Drawing_Panel.measureLabels(mesName)(2) = GUI_Drawing_Panel.measureLabels(mesName)(2) + d2P / 2 - ElseIf GUI_Drawing_Panel.measureLabels(mesName)(3) = 3 Then - GUI_Drawing_Panel.measureLabels(mesName)(0) = GUI_Drawing_Panel.measureLabels(mesName)(0) - GUI.Controls("X_TextBox").Text - GUI_Drawing_Panel.measureLabels(mesName)(1) = GUI_Drawing_Panel.measureLabels(mesName)(1) - d1P / 2 - Else - GUI_Drawing_Panel.measureLabels(mesName)(0) = GUI_Drawing_Panel.measureLabels(mesName)(0) - GUI.Controls("Y_TextBox").Text - GUI_Drawing_Panel.measureLabels(mesName)(2) = GUI_Drawing_Panel.measureLabels(mesName)(2) - d2P / 2 - End If - ElseIf index + 1 = pointsMeasurements(mesName)(1) Then - If GUI_Drawing_Panel.measureLabels(mesName)(3) = 1 Then - GUI_Drawing_Panel.measureLabels(mesName)(0) = GUI_Drawing_Panel.measureLabels(mesName)(0) - GUI.Controls("Y_TextBox").Text - GUI_Drawing_Panel.measureLabels(mesName)(2) = GUI_Drawing_Panel.measureLabels(mesName)(2) + d2P / 2 - ElseIf GUI_Drawing_Panel.measureLabels(mesName)(3) = 2 Then - GUI_Drawing_Panel.measureLabels(mesName)(0) = GUI_Drawing_Panel.measureLabels(mesName)(0) - GUI.Controls("X_TextBox").Text - GUI_Drawing_Panel.measureLabels(mesName)(1) = GUI_Drawing_Panel.measureLabels(mesName)(1) - d1P / 2 - ElseIf GUI_Drawing_Panel.measureLabels(mesName)(3) = 3 Then - GUI_Drawing_Panel.measureLabels(mesName)(0) = GUI_Drawing_Panel.measureLabels(mesName)(0) - GUI.Controls("Y_TextBox").Text - GUI_Drawing_Panel.measureLabels(mesName)(2) = GUI_Drawing_Panel.measureLabels(mesName)(2) - d2P / 2 - Else - GUI_Drawing_Panel.measureLabels(mesName)(0) = GUI_Drawing_Panel.measureLabels(mesName)(0) - GUI.Controls("X_TextBox").Text - GUI_Drawing_Panel.measureLabels(mesName)(1) = GUI_Drawing_Panel.measureLabels(mesName)(1) + d1P / 2 - End If - End If - - ElseIf mesName.Split("_")(0) = "SS1" AndAlso index + 2 = pointsMeasurements(mesName)(1) Then - If GUI_Drawing_Panel.measureLabels(mesName)(3) = 1 Then - GUI_Drawing_Panel.measureLabels(mesName)(0) = GUI_Drawing_Panel.measureLabels(mesName)(0) - GUI.Controls("X_TextBox").Text - GUI_Drawing_Panel.measureLabels(mesName)(1) = GUI_Drawing_Panel.measureLabels(mesName)(1) + d1P / 2 - - GUI_Drawing_Panel.sideSquareMesLine(mesName)(0) = GUI_Drawing_Panel.sideSquareMesLine(mesName)(0) + d1P - End If - End If - Next - - Dim mesNum As Integer = pointsMeasurements.Count - 1 - If angleFunctionActive Then - For i = 2 To pointsMeasurements.Count - 1 - Dim mesName As String = pointsMeasurements.Keys(i) - If index + 1 < pointsMeasurements(mesName)(0) Then - pointsMeasurements(mesName)(0) = pointsMeasurements(mesName)(0) + 1 - pointsMeasurements(mesName)(1) = pointsMeasurements(mesName)(1) + 1 - ElseIf index + 1 = pointsMeasurements(mesName)(0) OrElse index + 1 = pointsMeasurements(mesName)(1) Then - pointsMeasurements(mesName)(1) = pointsMeasurements(mesName)(1) + 1 - End If - Next - - If pXP < GUI_Drawing_Panel.containerMidX Then - If pYP > GUI_Drawing_Panel.containerMidY Then - 'Kvadrant 4 - GUI_Drawing_Panel.points.Add("pA" & pointCounter * 2 - 1, {pXP + d1P, pYP, pXSW + d1SW, pYSW}) - GUI_Drawing_Panel.points.Add("pA" & pointCounter * 2, {pXP, pYP - d2P, pXSW, pYSW + d2SW}) - - 'Recess measuements - pointsMeasurements.Add("A_" & mesNum, {index + 1, index + 2, 3}) - pointsMeasurements.Add("A_" & mesNum + 1, {index + 1, index + 2, 4}) - - 'Panel recess measurements - GUI_Drawing_Panel.anglePoints.Add("A" & pointCounter * 2 - 1, {pXP + d1P, pYP - d2P}) - GUI_Drawing_Panel.anglePointsComp.Add("A" & pointCounter * 2 - 1, {"pA" & pointCounter * 2 - 1, "pA" & pointCounter * 2}) - - 'Label - GUI_Drawing_Panel.measureLabels.Add("A_" & mesNum, {CInt(GUI.Controls("Y_TextBox").Text), pXP + d1P + 3, - pYP - d2P / 2 - 4, 4}) - GUI_Drawing_Panel.measureLabels.Add("A_" & mesNum + 1, {CInt(GUI.Controls("X_TextBox").Text), pXP + d1P / 2 - 8, - pYP - d2P - 12 - 3, 4}) - Else - 'Kvadrant 1 - GUI_Drawing_Panel.points.Add("pA" & pointCounter * 2 - 1, {pXP, pYP + d2P, pXSW, pYSW - d2SW}) - GUI_Drawing_Panel.points.Add("pA" & pointCounter * 2, {pXP + d1P, pYP, pXSW + d1SW, pYSW}) - - 'Outer measuements - pointsMeasurements("Lmes")(1) = pointsMeasurements("Lmes")(1) + 1 - pointsMeasurements("Wmes")(0) = pointsMeasurements("Wmes")(0) + 1 - pointsMeasurements("Wmes")(1) = pointsMeasurements("Wmes")(1) + 1 - - 'SW Recess measuements - pointsMeasurements.Add("A_" & mesNum, {index + 1, index + 2, 1}) - pointsMeasurements.Add("A_" & mesNum + 1, {index + 1, index + 2, 4}) - - 'Panel recess measurements - GUI_Drawing_Panel.anglePoints.Add("A" & pointCounter * 2 - 1, {pXP + d1P, pYP + d2P}) - GUI_Drawing_Panel.anglePointsComp.Add("A" & pointCounter * 2 - 1, {"pA" & pointCounter * 2 - 1, "pA" & pointCounter * 2}) - - 'Label - GUI_Drawing_Panel.measureLabels.Add("A_" & mesNum, {CInt(GUI.Controls("X_TextBox").Text), pXP + d1P / 2 - 8, - pYP + d2P + 3, 1}) - GUI_Drawing_Panel.measureLabels.Add("A_" & mesNum + 1, {CInt(GUI.Controls("Y_TextBox").Text), pXP + d1P + 3, - pYP + d2P / 2 - 4, 1}) - End If - Else - If pYP > GUI_Drawing_Panel.containerMidY Then - 'Kvadrant 3 - GUI_Drawing_Panel.points.Add("pA" & pointCounter * 2 - 1, {pXP, pYP - d2P, pXSW, pYSW + d2SW}) - GUI_Drawing_Panel.points.Add("pA" & pointCounter * 2, {pXP - d1P, pYP, pXSW - d1SW, pYSW}) - - pointsMeasurements("Wmes")(1) = pointsMeasurements("Wmes")(1) + 1 - - 'Recess measuements - pointsMeasurements.Add("A_" & mesNum, {index + 1, index + 2, 2}) - pointsMeasurements.Add("A_" & mesNum + 1, {index + 1, index + 2, 3}) - - 'Panel recess measurements - GUI_Drawing_Panel.anglePoints.Add("A" & pointCounter * 2 - 1, {pXP - d1P, pYP - d2P}) - GUI_Drawing_Panel.anglePointsComp.Add("A" & pointCounter * 2 - 1, {"pA" & pointCounter * 2 - 1, "pA" & pointCounter * 2}) - - 'Label - GUI_Drawing_Panel.measureLabels.Add("A_" & mesNum, {CInt(GUI.Controls("X_TextBox").Text), pXP - d1P / 2 - 8, - pYP - d2P - 12 - 3, 3}) - GUI_Drawing_Panel.measureLabels.Add("A_" & mesNum + 1, {CInt(GUI.Controls("Y_TextBox").Text), pXP - d1P - 18 - 3, - pYP - d2P / 2 - 4, 3}) - Else - 'Kvadrant 2 - GUI_Drawing_Panel.points.Add("pA" & pointCounter * 2 - 1, {pXP - d1P, pYP, pXSW - d1SW, pYSW}) - GUI_Drawing_Panel.points.Add("pA" & pointCounter * 2, {pXP, pYP + d2P, pXSW, pYSW - d2SW}) - - pointsMeasurements("Lmes")(1) = pointsMeasurements("Lmes")(1) + 1 - pointsMeasurements("Wmes")(1) = pointsMeasurements("Wmes")(1) + 1 - - 'Recess measuements - pointsMeasurements.Add("A_" & mesNum, {index + 1, index + 2, 1}) - pointsMeasurements.Add("A_" & mesNum + 1, {index + 1, index + 2, 2}) - - 'Panel recess measurements - GUI_Drawing_Panel.anglePoints.Add("A" & pointCounter * 2 - 1, {pXP - d1P, pYP + d2P}) - GUI_Drawing_Panel.anglePointsComp.Add("A" & pointCounter * 2 - 1, {"pA" & pointCounter * 2 - 1, "pA" & pointCounter * 2}) - - 'Label - GUI_Drawing_Panel.measureLabels.Add("A_" & mesNum, {CInt(GUI.Controls("Y_TextBox").Text), pXP - d1P - 18 - 3, - pYP + d2P / 2 - 4, 2}) - GUI_Drawing_Panel.measureLabels.Add("A_" & mesNum + 1, {CInt(GUI.Controls("X_TextBox").Text), pXP - d1P / 2 - 8, - pYP + d2P + 3, 2}) - End If - End If - pointsFunc.Add("pA" & pointCounter * 2 - 1, False) - pointsFunc.Add("pA" & pointCounter * 2, False) - - 'Insert two new points - GUI_Drawing_Panel.pointsOrder.Insert(index + 1, "pA" & pointCounter * 2 - 1) - GUI_Drawing_Panel.pointsOrder.Insert(index + 2, "pA" & pointCounter * 2) - - numOfNewPoints = 2 - angleFunctionActive = False - - - Else ' square - - For i = 2 To pointsMeasurements.Count - 1 - Dim mesName As String = pointsMeasurements.Keys(i) - If index + 1 < pointsMeasurements(mesName)(0) Then - pointsMeasurements(mesName)(0) = pointsMeasurements(mesName)(0) + 2 - pointsMeasurements(mesName)(1) = pointsMeasurements(mesName)(1) + 2 - ElseIf index + 1 = pointsMeasurements(mesName)(0) Then - pointsMeasurements(mesName)(1) = pointsMeasurements(mesName)(1) + 2 - ElseIf index + 1 = pointsMeasurements(mesName)(1) Then - pointsMeasurements(mesName)(1) = pointsMeasurements(mesName)(1) + 2 - End If - Next - If pXP < GUI_Drawing_Panel.containerMidX Then - If pYP > GUI_Drawing_Panel.containerMidY Then - 'Kvadrant 4 - GUI_Drawing_Panel.points.Add("pS" & pointCounter * 3 - 2, {pXP + d1P, pYP, pXSW + d1SW, pYSW}) - GUI_Drawing_Panel.points.Add("pS" & pointCounter * 3 - 1, {pXP + d1P, pYP - d2P, pXSW + d1SW, pYSW + d2SW}) - GUI_Drawing_Panel.points.Add("pS" & pointCounter * 3, {pXP, pYP - d2P, pXSW, pYSW + d2SW}) - - 'Recess measuements - pointsMeasurements.Add("S_" & mesNum, {index + 1, index + 2, 4}) - pointsMeasurements.Add("S_" & mesNum + 1, {index + 2, index + 3, 3}) - - 'Label - GUI_Drawing_Panel.measureLabels.Add("S_" & mesNum, {CInt(GUI.Controls("Y_TextBox").Text), pXP + d1P + 3, - pYP - d2P / 2 - 4, 4}) - GUI_Drawing_Panel.measureLabels.Add("S_" & mesNum + 1, {CInt(GUI.Controls("X_TextBox").Text), pXP + d1P / 2 - 8, - pYP - d2P - 12 - 3, 4}) - - 'Recess Data - recessData.Rows(recessData.Rows.Count - 1)("RECESS TYPE") = "SQUARE" - recessData.Rows(recessData.Rows.Count - 1)("CORNER") = 4 - recessData.Rows(recessData.Rows.Count - 1)("WIDTH") = CInt(GUI.Controls("Y_TextBox").Text) - recessData.Rows(recessData.Rows.Count - 1)("LENGTH") = CInt(GUI.Controls("X_TextBox").Text) - Else - 'Kvadrant 1 - GUI_Drawing_Panel.points.Add("pS" & pointCounter * 3 - 2, {pXP, pYP + d2P, pXSW, pYSW - d2SW}) - GUI_Drawing_Panel.points.Add("pS" & pointCounter * 3 - 1, {pXP + d1P, pYP + d2P, pXSW + d1SW, pYSW - d2SW}) - GUI_Drawing_Panel.points.Add("pS" & pointCounter * 3, {pXP + d1P, pYP, pXSW + d1SW, pYSW}) - - pointsMeasurements("Lmes")(1) = pointsMeasurements("Lmes")(1) + 2 - pointsMeasurements("Wmes")(0) = pointsMeasurements("Wmes")(0) + 2 - pointsMeasurements("Wmes")(1) = pointsMeasurements("Wmes")(1) + 2 - - 'Recess measuements - pointsMeasurements.Add("S_" & mesNum, {index + 1, index + 2, 1}) - pointsMeasurements.Add("S_" & mesNum + 1, {index + 2, index + 3, 4}) - - 'Label - GUI_Drawing_Panel.measureLabels.Add("S_" & mesNum, {CInt(GUI.Controls("X_TextBox").Text), pXP + d1P / 2 - 8, - pYP + d2P + 3, 1}) - GUI_Drawing_Panel.measureLabels.Add("S_" & mesNum + 1, {CInt(GUI.Controls("Y_TextBox").Text), pXP + d1P + 3, - pYP + d2P / 2 - 4, 1}) - - 'Recess Data - recessData.Rows(recessData.Rows.Count - 1)("RECESS TYPE") = "SQUARE" - recessData.Rows(recessData.Rows.Count - 1)("CORNER") = 1 - recessData.Rows(recessData.Rows.Count - 1)("WIDTH") = CInt(GUI.Controls("Y_TextBox").Text) - recessData.Rows(recessData.Rows.Count - 1)("LENGTH") = CInt(GUI.Controls("X_TextBox").Text) - - End If - Else - If pYP > GUI_Drawing_Panel.containerMidY Then - 'Kvadrant 3 - GUI_Drawing_Panel.points.Add("pS" & pointCounter * 3 - 2, {pXP, pYP - d2P, pXSW, pYSW + d2SW}) - GUI_Drawing_Panel.points.Add("pS" & pointCounter * 3 - 1, {pXP - d1P, pYP - d2P, pXSW - d1SW, pYSW + d2SW}) - GUI_Drawing_Panel.points.Add("pS" & pointCounter * 3, {pXP - d1P, pYP, pXSW - d1SW, pYSW}) - - pointsMeasurements("Wmes")(1) = pointsMeasurements("Wmes")(1) + 2 - - 'Recess measuements - pointsMeasurements.Add("S_" & mesNum, {index + 1, index + 2, 3}) - pointsMeasurements.Add("S_" & mesNum + 1, {index + 2, index + 3, 2}) - - 'Label - GUI_Drawing_Panel.measureLabels.Add("S_" & mesNum, {CInt(GUI.Controls("X_TextBox").Text), pXP - d1P / 2 - 8, - pYP - d2P - 12 - 3, 3}) - GUI_Drawing_Panel.measureLabels.Add("S_" & mesNum + 1, {CInt(GUI.Controls("Y_TextBox").Text), pXP - d1P - 18 - 3, - pYP - d2P / 2 - 4, 3}) - - 'Recess Data - recessData.Rows(recessData.Rows.Count - 1)("RECESS TYPE") = "SQUARE" - recessData.Rows(recessData.Rows.Count - 1)("CORNER") = 3 - recessData.Rows(recessData.Rows.Count - 1)("WIDTH") = CInt(GUI.Controls("Y_TextBox").Text) - recessData.Rows(recessData.Rows.Count - 1)("LENGTH") = CInt(GUI.Controls("X_TextBox").Text) - Else - 'Kvadrant 2 - GUI_Drawing_Panel.points.Add("pS" & pointCounter * 3 - 2, {pXP - d1P, pYP, pXSW - d1SW, pYSW}) - GUI_Drawing_Panel.points.Add("pS" & pointCounter * 3 - 1, {pXP - d1P, pYP + d2P, pXSW - d1SW, pYSW - d2SW}) - GUI_Drawing_Panel.points.Add("pS" & pointCounter * 3, {pXP, pYP + d2P, pXSW, pYSW - d2SW}) - - pointsMeasurements("Lmes")(1) = pointsMeasurements("Lmes")(1) + 2 - pointsMeasurements("Wmes")(1) = pointsMeasurements("Wmes")(1) + 2 - - 'Recess measuements - pointsMeasurements.Add("S_" & mesNum, {index + 1, index + 2, 2}) - pointsMeasurements.Add("S_" & mesNum + 1, {index + 2, index + 3, 1}) - - 'Label - GUI_Drawing_Panel.measureLabels.Add("S_" & mesNum, {CInt(GUI.Controls("Y_TextBox").Text), pXP - d1P - 18 - 3, - pYP + d2P / 2 - 4, 2}) - GUI_Drawing_Panel.measureLabels.Add("S_" & mesNum + 1, {CInt(GUI.Controls("X_TextBox").Text), pXP - d1P / 2 - 8, - pYP + d2P + 3, 2}) - - 'Recess Data - recessData.Rows(recessData.Rows.Count - 1)("RECESS TYPE") = "SQUARE" - recessData.Rows(recessData.Rows.Count - 1)("CORNER") = 2 - recessData.Rows(recessData.Rows.Count - 1)("WIDTH") = CInt(GUI.Controls("Y_TextBox").Text) - recessData.Rows(recessData.Rows.Count - 1)("LENGTH") = CInt(GUI.Controls("X_TextBox").Text) - - End If - End If - pointsFunc.Add("pS" & pointCounter * 3 - 2, True) - pointsFunc.Add("pS" & pointCounter * 3 - 1, False) - pointsFunc.Add("pS" & pointCounter * 3, True) - - 'Insert new points - GUI_Drawing_Panel.pointsOrder.Insert(index + 1, "pS" & pointCounter * 3 - 2) - GUI_Drawing_Panel.pointsOrder.Insert(index + 2, "pS" & pointCounter * 3 - 1) - GUI_Drawing_Panel.pointsOrder.Insert(index + 3, "pS" & pointCounter * 3) - - numOfNewPoints = 3 - - squareFunctionActive = False - - End If - GUI_Drawing_Panel.pointsOrder.RemoveAt(index) - - 'Redraw grating - GUI.DrawingPanel.Refresh() - - RemoveHandler GUI.Controls("X_TextBox").TextChanged, AddressOf FunctionTextCorner_Changed - RemoveHandler GUI.Controls("X_TextBox").KeyPress, AddressOf FunctionText_KeyPress - GUI.Controls.RemoveByKey("X_TextBox") - - RemoveHandler GUI.Controls("Y_TextBox").TextChanged, AddressOf FunctionTextCorner_Changed - RemoveHandler GUI.Controls("Y_TextBox").KeyPress, AddressOf FunctionText_KeyPress - GUI.Controls.RemoveByKey("Y_TextBox") - - GUI.Controls.RemoveByKey("X_Label") - GUI.Controls.RemoveByKey("Y_Label") - - GUI.Controls("AngleButton").Enabled = True - GUI.Controls("Button_Square").Enabled = True - GUI.Controls("Button_SquareSide").Enabled = True - End Sub - - - - - -End Class diff --git a/Wardrobe/Gratings Data/Data.vb b/Wardrobe/Gratings Data/Data.vb new file mode 100644 index 0000000..14767dd --- /dev/null +++ b/Wardrobe/Gratings Data/Data.vb @@ -0,0 +1,139 @@ +Public Class Data + Public Shared grossAreaPoints As New DataTable + Public Shared gratingPoints As New DataTable + Public Shared angleRecessPoints As New DataTable + + Public Shared guiPanelMidX, guiPanelMidY As Integer + Public Shared guiMaxDrawL As Integer = 1 + Public Shared guiMaxDrawW As Integer = 1 + + Public Shared gratingW As Integer = 1000 + Public Shared gratingL As Integer = 1000 + + Public Shared drawAR, gratingAR As Decimal + Public Shared scaleDiff As Decimal = 1 + + Public Shared recessData As New DataTable + + Public Shared pointCounter As Integer + Public Shared pointsMeasurements As New Dictionary(Of String, Integer()) + + ' --- Initialize Datatables, measurments and more --- + Public Shared Sub Init_Data() + ' Gross area points + grossAreaPoints.Columns.Add("NAME", GetType(String)) + grossAreaPoints.Columns.Add("QUADRANT", GetType(String)) + grossAreaPoints.Columns.Add("X", GetType(Decimal)) + grossAreaPoints.Columns.Add("Y", GetType(Decimal)) + grossAreaPoints.Columns.Add("GUI X", GetType(Integer)) + grossAreaPoints.Columns.Add("GUI Y", GetType(Integer)) + + ' Grating points + gratingPoints.Columns.Add("NAME", GetType(String)) + gratingPoints.Columns.Add("QUADRANT", GetType(String)) + gratingPoints.Columns.Add("X", GetType(Decimal)) + gratingPoints.Columns.Add("Y", GetType(Decimal)) + gratingPoints.Columns.Add("GUI X", GetType(Integer)) + gratingPoints.Columns.Add("GUI Y", GetType(Integer)) + gratingPoints.Columns.Add("RECESS OK", GetType(Boolean)) + + ' Angle recess points + angleRecessPoints.Columns.Add("NAME", GetType(String)) + angleRecessPoints.Columns.Add("QUADRANT", GetType(String)) + angleRecessPoints.Columns.Add("GUI X", GetType(Integer)) + angleRecessPoints.Columns.Add("GUI Y", GetType(Integer)) + + GUI.CheckBox_WholeMeshWidths.Checked = True + + pointsMeasurements.Add("Lmes", {1, 2, 1}) + pointsMeasurements.Add("Wmes", {2, 3, 2}) + + recessData.Columns.Add("RECESS TYPE", GetType(String)) + recessData.Columns.Add("CORNER", GetType(Integer)) + recessData.Columns.Add("SIDE", GetType(Integer)) + recessData.Columns.Add("WIDTH", GetType(Integer)) + recessData.Columns.Add("LENGTH", GetType(Integer)) + recessData.Columns.Add("OFFSET", GetType(Integer)) + End Sub + + Public Shared Sub Init_GrossAreaPoints() + Dim pointRow As DataRow = grossAreaPoints.NewRow + pointRow("NAME") = "P1" + pointRow("QUADRANT") = 1 + pointRow("X") = (-gratingL / 2) / 1000 + pointRow("Y") = (gratingW / 2) / 1000 + pointRow("GUI X") = guiPanelMidX - guiMaxDrawL / 2 + pointRow("GUI Y") = guiPanelMidY - guiMaxDrawW / 2 + grossAreaPoints.Rows.Add(pointRow) + + pointRow = grossAreaPoints.NewRow + pointRow("NAME") = "P2" + pointRow("QUADRANT") = 2 + pointRow("X") = (gratingL / 2) / 1000 + pointRow("Y") = (gratingW / 2) / 1000 + pointRow("GUI X") = guiPanelMidX + guiMaxDrawL / 2 + pointRow("GUI Y") = guiPanelMidY - guiMaxDrawW / 2 + grossAreaPoints.Rows.Add(pointRow) + + pointRow = grossAreaPoints.NewRow + pointRow("NAME") = "P3" + pointRow("QUADRANT") = 3 + pointRow("X") = (gratingL / 2) / 1000 + pointRow("Y") = (-gratingW / 2) / 1000 + pointRow("GUI X") = guiPanelMidX + guiMaxDrawL / 2 + pointRow("GUI Y") = guiPanelMidY + guiMaxDrawW / 2 + grossAreaPoints.Rows.Add(pointRow) + + pointRow = grossAreaPoints.NewRow + pointRow("NAME") = "P4" + pointRow("QUADRANT") = 4 + pointRow("X") = (-gratingL / 2) / 1000 + pointRow("Y") = (-gratingW / 2) / 1000 + pointRow("GUI X") = guiPanelMidX - guiMaxDrawL / 2 + pointRow("GUI Y") = guiPanelMidY + guiMaxDrawW / 2 + grossAreaPoints.Rows.Add(pointRow) + End Sub + + Public Shared Sub Init_GratingPoints() + Dim pointRow As DataRow = gratingPoints.NewRow + pointRow("NAME") = "P1" + pointRow("QUADRANT") = 1 + pointRow("X") = (-gratingL / 2) / 1000 + pointRow("Y") = (gratingW / 2) / 1000 + pointRow("GUI X") = guiPanelMidX - guiMaxDrawL / 2 + pointRow("GUI Y") = guiPanelMidY - guiMaxDrawW / 2 + pointRow("RECESS OK") = True + gratingPoints.Rows.Add(pointRow) + + pointRow = gratingPoints.NewRow + pointRow("NAME") = "P2" + pointRow("QUADRANT") = 2 + pointRow("X") = (gratingL / 2) / 1000 + pointRow("Y") = (gratingW / 2) / 1000 + pointRow("GUI X") = guiPanelMidX + guiMaxDrawL / 2 + pointRow("GUI Y") = guiPanelMidY - guiMaxDrawW / 2 + pointRow("RECESS OK") = True + gratingPoints.Rows.Add(pointRow) + + pointRow = gratingPoints.NewRow + pointRow("NAME") = "P3" + pointRow("QUADRANT") = 3 + pointRow("X") = (gratingL / 2) / 1000 + pointRow("Y") = (-gratingW / 2) / 1000 + pointRow("GUI X") = guiPanelMidX + guiMaxDrawL / 2 + pointRow("GUI Y") = guiPanelMidY + guiMaxDrawW / 2 + pointRow("RECESS OK") = True + gratingPoints.Rows.Add(pointRow) + + pointRow = gratingPoints.NewRow + pointRow("NAME") = "P4" + pointRow("QUADRANT") = 4 + pointRow("X") = (-gratingL / 2) / 1000 + pointRow("Y") = (-gratingW / 2) / 1000 + pointRow("GUI X") = guiPanelMidX - guiMaxDrawL / 2 + pointRow("GUI Y") = guiPanelMidY + guiMaxDrawW / 2 + pointRow("RECESS OK") = True + gratingPoints.Rows.Add(pointRow) + End Sub + +End Class diff --git a/Wardrobe/Gratings Data/Database.vb b/Wardrobe/Gratings Data/Database.vb new file mode 100644 index 0000000..0fd1eea --- /dev/null +++ b/Wardrobe/Gratings Data/Database.vb @@ -0,0 +1,81 @@ +Imports Excel = Microsoft.Office.Interop.Excel +Public Class Database + Public Shared database As New DataSet + + ' --- Retrive the Excel database --- + Public Shared Sub Retrive_Database() + Dim excelApp As Excel.Application = New Excel.Application + Dim excelWB As Excel.Workbook + + ' Make .csv files of each sheet in Excel + excelApp.DisplayAlerts = False + Dim wSNames As New List(Of String) + excelWB = excelApp.Workbooks.Open(Settings.HLCtFolder & "\Database\Databas.xlsx") + + For i = 1 To 4 + Dim activeSheet As Excel.Worksheet + activeSheet = excelWB.Sheets(i) + wSNames.Add(activeSheet.Name) + activeSheet.SaveAs(Settings.HLCtFolder & "\Database\" & wSNames(i - 1), Excel.XlFileFormat.xlCSV) + + System.Runtime.InteropServices.Marshal.ReleaseComObject(activeSheet) + Next + excelWB.Close() + excelApp.Quit() + System.Runtime.InteropServices.Marshal.ReleaseComObject(excelWB) + System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp) + + ' USe this when all sheets are to be read + 'For Each WS In excelWB.Worksheets + ' WS.SaveAs(GUI_Settings.HLCtFolder & ("\") & WS.Name, Excel.XlFileFormat.xlCSV) + 'Next + + + ' Read all .csv files to local database + For i = 0 To wSNames.Count - 1 + Dim tempDT As New DataTable With { + .TableName = wSNames(i) + } + + Dim lines = IO.File.ReadAllLines(Settings.HLCtFolder & "\Database\" & wSNames(i) & ".csv") + + ' Create DataTable columns + Dim words As String() = lines(0).Split(New Char() {","c}) + For j = 0 To words.Count - 1 + Dim colName As String = words(j).Split("[")(0) + colName = colName.Substring(0, colName.Length - 1) + Dim type As String = words(j).Split("[")(1).Split("]")(0) + + If type = "str" Then + tempDT.Columns.Add(colName, GetType(String)) + ElseIf type = "int" Then + tempDT.Columns.Add(colName, GetType(Integer)) + ElseIf type = "doub" Then + tempDT.Columns.Add(colName, GetType(String)) 'FIXA + Else + tempDT.Columns.Add(colName, GetType(Boolean)) + End If + Next + + ' Fill the DataTable with all data + For j = 1 To lines.Count - 1 + Dim values As String() = lines(j).Split(New Char() {","c}) + tempDT.Rows.Add() + For k = 0 To values.Count - 1 + Try + tempDT.Rows(tempDT.Rows.Count - 1)(k) = values(k) + Catch ex As Exception + If values(k) <> "" AndAlso values(k) = 0 Then + tempDT.Rows(tempDT.Rows.Count - 1)(k) = False + ElseIf values(k) <> "" AndAlso values(k) = 1 Then + tempDT.Rows(tempDT.Rows.Count - 1)(k) = True + End If + End Try + Next + Next + + ' Add DataTable to local database (DataSet) + database.Tables.Add(tempDT) + Next + End Sub +End Class diff --git a/Wardrobe/GUI_Gratings_Data.vb b/Wardrobe/Gratings Data/User_Input.vb similarity index 86% rename from Wardrobe/GUI_Gratings_Data.vb rename to Wardrobe/Gratings Data/User_Input.vb index d37e797..a4711f4 100644 --- a/Wardrobe/GUI_Gratings_Data.vb +++ b/Wardrobe/Gratings Data/User_Input.vb @@ -1,7 +1,4 @@ -Public Class GUI_Gratings_Data - Public Shared gratingMaxW As Integer = 1000 - Public Shared gratingMaxL As Integer = 1000 - +Public Class User_Input Private Shared gratingType, gratingMaterial, gratingMesh, gratingName As String Private Shared gratingSerrated As Boolean = False Private Shared loadBarSpacing, crossBarSpacing, gratingHeight, loadBarThickness As Integer @@ -9,22 +6,20 @@ Private Shared serratedCheckBox As New CheckBox Private Shared serratedCheckBoxBol As Boolean = False - Private Shared lacqueredCheckBox As New CheckBox Private Shared lacqueredCheckBoxBol As Boolean = False Private Shared gratingLacquered As Boolean = False - Public Shared Sub TypeChanged(sender As Object, e As EventArgs) GUI.ComboBox_Material.Enabled = True GUI.ComboBox_Material.Items.Clear() gratingType = GUI.ComboBox_TypeChooser.Text - Dim materialDT As DataTable = GUI.dataBase("Material") + Dim materialDT As DataTable = Database.database.Tables("Material") Dim typeInDT As String = materialDT.Rows(0)("TYPE") For i = 0 To materialDT.Rows.Count - 1 - If gratingType = materialDT.Rows(i)("TYPE") Then + If gratingType = typeInDT Then GUI.ComboBox_Material.Items.Add(materialDT.Rows(i)("MATERIAL")) End If Try @@ -40,7 +35,7 @@ GUI.ComboBox_MeshSize.Enabled = True gratingMaterial = GUI.ComboBox_Material.Text - Dim serratedDT As DataTable = GUI.dataBase("Serrated") + Dim serratedDT As DataTable = Database.database.Tables("Serrated") Dim removeCheckBox As Boolean = True Dim typeInDT As String = serratedDT.Rows(0)("TYPE") @@ -136,7 +131,7 @@ GUI.ComboBox_MeshSize.Items.Clear() - Dim meshesDT As DataTable = GUI.dataBase("Meshes") + Dim meshesDT As DataTable = Database.database.Tables("Meshes") Dim typeInDT As String = meshesDT.Rows(0)("TYPE") Dim materialInDT As String = meshesDT.Rows(0)("MATERIAL") @@ -183,7 +178,7 @@ gratingName = gratingMesh.Split("(")(1).Split(")")(0) ' Add heights - Dim meshesDT As DataTable = GUI.dataBase("Meshes") + Dim meshesDT As DataTable = Database.database.Tables("Meshes") Dim nameInDT As String = meshesDT.Rows(0)("NAME") Dim materialInDT As String = meshesDT.Rows(0)("MATERIAL") @@ -230,7 +225,7 @@ GUI.ComboBox_Thickness.Items.Clear() gratingHeight = CInt(GUI.ComboBox_Height.Text) - Dim meshesDT As DataTable = GUI.dataBase("Meshes") + Dim meshesDT As DataTable = Database.database.Tables("Meshes") Dim nameInDT As String = meshesDT.Rows(0)("NAME") Dim materialInDT As String = meshesDT.Rows(0)("MATERIAL") @@ -293,7 +288,7 @@ loadBarThickness = CInt(GUI.ComboBox_Thickness.Text) - Dim meshesDT As DataTable = GUI.dataBase("Meshes") + Dim meshesDT As DataTable = Database.database.Tables("Meshes") Dim nameInDT As String = meshesDT.Rows(0)("NAME") Dim materialInDT As String = meshesDT.Rows(0)("MATERIAL") @@ -325,7 +320,7 @@ End Try Next - Dim wholeMeshesDT As DataTable = GUI.dataBase("Whole Meshes") + Dim wholeMeshesDT As DataTable = Database.database.Tables("Whole Meshes") For i = 0 To wholeMeshesDT.Rows.Count - 1 If Not IsDBNull(wholeMeshesDT.Rows(i)(wholeMeshesColumn)) Then GUI.ComboBox_Width.Items.Add(wholeMeshesDT.Rows(i)(wholeMeshesColumn)) @@ -339,24 +334,32 @@ If GUI.ComboBox_Width.Text <> "" Then If CInt(GUI.ComboBox_Width.Text) >= GUI.ComboBox_Width.Items(GUI.ComboBox_Width.Items.Count - 1) AndAlso CInt(GUI.ComboBox_Width.Text) <= GUI.ComboBox_Width.Items(0) Then - gratingMaxW = CInt(GUI.ComboBox_Width.Text) - GUI_Drawing_Panel.Update_GratingPoints() + Data.gratingW = CInt(GUI.ComboBox_Width.Text) + Draw_Grating.Update_GratingPoints() End If + Enable_Recesses() End If End Sub Public Shared Sub LengthChanged(sender As Object, e As EventArgs) If GUI.TextBox_Length.Text <> "" Then If CInt(GUI.TextBox_Length.Text) >= 200 AndAlso CInt(GUI.TextBox_Length.Text) <= 6000 Then - gratingMaxL = CInt(GUI.TextBox_Length.Text) - GUI_Drawing_Panel.Update_GratingPoints() + Data.gratingL = CInt(GUI.TextBox_Length.Text) + Draw_Grating.Update_GratingPoints() Else 'Message: Out of boundary End If + Enable_Recesses() End If End Sub - + Private Shared Sub Enable_Recesses() + If GUI.ComboBox_Width.Text <> "" AndAlso GUI.TextBox_Length.Text <> "" Then + GUI.AngleButton.Enabled = True + GUI.Button_Square.Enabled = True + GUI.Button_SquareSide.Enabled = True + End If + End Sub ' --- Creates the table with points data used in SW --- @@ -367,25 +370,25 @@ Dim gratingTable As New DataTable gratingTable.Columns.Add("TYPE", GetType(String)) gratingTable.Columns.Add("SERRATED", GetType(Boolean)) - gratingTable.Columns.Add("WIDTH", GetType(Decimal)) - gratingTable.Columns.Add("LENGTH", GetType(Decimal)) - gratingTable.Columns.Add("LOADBAR_THICKNESS", GetType(Decimal)) - gratingTable.Columns.Add("LOADBAR_HEIGHT", GetType(Decimal)) - gratingTable.Columns.Add("LOADBAR_SPACING", GetType(Decimal)) - gratingTable.Columns.Add("CROSSBAR_SPACING", GetType(Decimal)) - gratingTable.Columns.Add("CROSSBAR_DIAMETER", GetType(Decimal)) - gratingTable.Columns.Add("CROSSBAR_THICKNESS", GetType(Decimal)) - gratingTable.Columns.Add("CROSSBAR_HEIGHT", GetType(Decimal)) + gratingTable.Columns.Add("WIDTH", GetType(Integer)) + gratingTable.Columns.Add("LENGTH", GetType(Integer)) + gratingTable.Columns.Add("LOADBAR_THICKNESS", GetType(Integer)) + gratingTable.Columns.Add("LOADBAR_HEIGHT", GetType(Integer)) + gratingTable.Columns.Add("LOADBAR_SPACING", GetType(Integer)) + gratingTable.Columns.Add("CROSSBAR_SPACING", GetType(Integer)) + gratingTable.Columns.Add("CROSSBAR_DIAMETER", GetType(Integer)) + gratingTable.Columns.Add("CROSSBAR_THICKNESS", GetType(Integer)) + gratingTable.Columns.Add("CROSSBAR_HEIGHT", GetType(Integer)) gratingTable.Rows.Add() gratingTable.Rows(0)("SERRATED") = False 'Hämta från GUI - gratingTable.Rows(0)("WIDTH") = CDec(GUI.ComboBox_Width.Text) - gratingTable.Rows(0)("LENGTH") = CDec(GUI.TextBox_Length.Text) - gratingTable.Rows(0)("LOADBAR_THICKNESS") = CDec(GUI.ComboBox_Thickness.Text) - gratingTable.Rows(0)("LOADBAR_HEIGHT") = CDec(GUI.ComboBox_Height.Text) - gratingTable.Rows(0)("LOADBAR_SPACING") = CDec(lSpacing) - gratingTable.Rows(0)("CROSSBAR_SPACING") = CDec(cSpacing) + gratingTable.Rows(0)("WIDTH") = CInt(GUI.ComboBox_Width.Text) + gratingTable.Rows(0)("LENGTH") = CInt(GUI.TextBox_Length.Text) + gratingTable.Rows(0)("LOADBAR_THICKNESS") = CInt(GUI.ComboBox_Thickness.Text) + gratingTable.Rows(0)("LOADBAR_HEIGHT") = CInt(GUI.ComboBox_Height.Text) + gratingTable.Rows(0)("LOADBAR_SPACING") = CInt(lSpacing) + gratingTable.Rows(0)("CROSSBAR_SPACING") = CInt(cSpacing) If GUI.ComboBox_TypeChooser.Text = "Pressure Welded" Then gratingTable.Rows(0)("TYPE") = "pressure_welded" ' Här behövs namn på HLCt modellen @@ -403,25 +406,6 @@ End Function - ' --- Generate a table containing all the points X- and Y-values --- - Public Shared Function Create_PointTable() - Dim pointTable As New DataTable - pointTable.Columns.Add("X", GetType(Decimal)) - pointTable.Columns.Add("Y", GetType(Decimal)) - - For i = 0 To GUI_Drawing_Panel.pointsOrder.Count - 1 - Dim pTemp() As Decimal - pTemp = GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(i)) - - pointTable.Rows.Add() - pointTable.Rows(i)("X") = pTemp(2) - pointTable.Rows(i)("Y") = pTemp(3) - Next - - Return pointTable - End Function - - ' --- Check if the key pressed is a number --- Public Shared Sub Check_IfNumber(e As KeyPressEventArgs) If Asc(e.KeyChar) <> 8 Then @@ -431,4 +415,4 @@ End If End Sub -End Class \ No newline at end of file +End Class diff --git a/Wardrobe/Recess Functions/Corner_Angle.vb b/Wardrobe/Recess Functions/Corner_Angle.vb new file mode 100644 index 0000000..16c7abc --- /dev/null +++ b/Wardrobe/Recess Functions/Corner_Angle.vb @@ -0,0 +1,351 @@ +Public Class Corner_Angle + + ' --- Create textboxes when user clicks the angle corner recess button --- + Public Shared Sub AngleButton(sender As Object, e As EventArgs) + GUI.Controls("AngleButton").Enabled = False + GUI.Controls("Button_Square").Enabled = False + GUI.Controls("Button_SquareSide").Enabled = False + + Dim buttonX As Integer = GUI.Controls("AngleButton").Location.X + Dim buttonY As Integer = GUI.Controls("AngleButton").Location.Y + + GUI.Create_TextBox("X_TextBox", "", buttonX + 20, buttonY + 40, 60) + AddHandler GUI.Controls("X_TextBox").TextChanged, AddressOf FunctionTextCorner_Changed + AddHandler GUI.Controls("X_TextBox").KeyPress, AddressOf FunctionText_KeyPress + GUI.Create_LabelGUI("X_Label", "L", buttonX, buttonY + 43) + + GUI.Create_TextBox("Y_TextBox", "", buttonX + 130, buttonY + 40, 60) + AddHandler GUI.Controls("Y_TextBox").TextChanged, AddressOf FunctionTextCorner_Changed + AddHandler GUI.Controls("Y_TextBox").KeyPress, AddressOf FunctionText_KeyPress + GUI.Create_LabelGUI("Y_Label", "W", buttonX + 110, buttonY + 43) + End Sub + + ' --- Check the key pressed by the user --- + Private Shared Sub FunctionText_KeyPress(sender As Object, e As KeyPressEventArgs) + User_Input.Check_IfNumber(e) + End Sub + + ' --- Adds clickable buttons for all corners if conditions are met --- + Private Shared Sub FunctionTextCorner_Changed(sender As TextBox, e As EventArgs) + Dim value1, value2 As Integer + Try + value1 = CInt(GUI.Controls("X_TextBox").Text) + value2 = CInt(GUI.Controls("Y_TextBox").Text) + Catch ex As Exception + value1 = 0 + value2 = 0 + End Try + + If value1 > 0 AndAlso value2 > 0 Then + If GUI.DrawingPanel.Controls.Count = 2 Then + For i = 0 To Data.gratingPoints.Rows.Count - 1 + If Data.gratingPoints.Rows(i)("RECESS OK") Then + Dim pointButton As New Button With { + .Width = 30, + .Height = 30, + .Left = Data.gratingPoints.Rows(i)("GUI X") - 30 / 2, + .Top = Data.gratingPoints.Rows(i)("GUI Y") - 30 / 2, + .Name = Data.gratingPoints.Rows(i)("NAME") & "_Button", + .Text = "" + } + + pointButton.BackColor = Color.FromArgb(50, Color.Red) + pointButton.FlatStyle = FlatStyle.Flat + pointButton.FlatAppearance.BorderSize = 0 + pointButton.FlatAppearance.MouseOverBackColor = Color.Red + pointButton.FlatAppearance.MouseDownBackColor = Color.DarkRed + Dim gp As New Drawing2D.GraphicsPath + gp.AddEllipse(New Rectangle(New Point(0, 0), New Size(30, 30))) + pointButton.Region = New Region(gp) + + GUI.DrawingPanel.Controls.Add(pointButton) + + AddHandler pointButton.Click, AddressOf PointButton_Click + End If + Next + End If + + ElseIf GUI.DrawingPanel.Controls.Count > 2 Then + For i = 0 To Data.gratingPoints.Rows.Count - 1 + If Data.gratingPoints.Rows(i)("RECESS OK") Then + Dim buttonName As String = Data.gratingPoints.Rows(i)("NAME") & "_Button" + RemoveHandler GUI.DrawingPanel.Controls(buttonName).Click, AddressOf PointButton_Click + GUI.DrawingPanel.Controls.RemoveByKey(Data.gratingPoints.Rows(i)("NAME") & "_Button") + End If + Next + End If + End Sub + + ' --- When a corner function button is pressed --- + Private Shared Sub PointButton_Click(sender As Button, e As EventArgs) + 'Determine which point is being pressed + Dim pointPressed As String = sender.Name.Split("_")(0) + Dim index As Integer + For Each DR As DataRow In Data.gratingPoints.Rows + If DR("NAME") = pointPressed Then + index = Data.gratingPoints.Rows.IndexOf(DR) + Exit For + End If + Next + + ' Remove point buttons + For i = 0 To Data.gratingPoints.Rows.Count - 1 + If Data.gratingPoints.Rows(i)("RECESS OK") Then + Dim buttonName As String = Data.gratingPoints.Rows(i)("NAME") & "_Button" + RemoveHandler GUI.DrawingPanel.Controls(buttonName).Click, AddressOf PointButton_Click + GUI.DrawingPanel.Controls.RemoveByKey(Data.gratingPoints.Rows(i)("NAME") & "_Button") + End If + Next + + 'Retrive that points coords + Dim pXGUI As Integer = Data.gratingPoints.Rows(index)("GUI X") + Dim pYGUI As Integer = Data.gratingPoints.Rows(index)("GUI Y") + Dim pX As Decimal = Data.gratingPoints.Rows(index)("X") + Dim pY As Decimal = Data.gratingPoints.Rows(index)("Y") + + Dim dXGUI As Integer = CInt(GUI.Controls("X_TextBox").Text / Data.scaleDiff) + Dim dYGUI As Integer = CInt(GUI.Controls("Y_TextBox").Text / Data.scaleDiff) + Dim dX As Decimal = GUI.Controls("X_TextBox").Text / 1000 + Dim dY As Decimal = GUI.Controls("Y_TextBox").Text / 1000 + + 'Data.recessData.Rows.Add() + + For i = 2 To Data.pointsMeasurements.Count - 1 + Dim mesName As String = Data.pointsMeasurements.Keys(i) + If mesName.Split("_")(0) <> "SS1" AndAlso mesName.Split("_")(0) <> "SS" Then + If index + 1 = Data.pointsMeasurements(mesName)(0) Then + If Draw_Grating.measureLabels(mesName)(3) = 1 Then + Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - GUI.Controls("X_TextBox").Text + Draw_Grating.measureLabels(mesName)(1) = Draw_Grating.measureLabels(mesName)(1) + dXGUI / 2 + ElseIf Draw_Grating.measureLabels(mesName)(3) = 2 Then + Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - GUI.Controls("Y_TextBox").Text + Draw_Grating.measureLabels(mesName)(2) = Draw_Grating.measureLabels(mesName)(2) + dYGUI / 2 + ElseIf Draw_Grating.measureLabels(mesName)(3) = 3 Then + Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - GUI.Controls("X_TextBox").Text + Draw_Grating.measureLabels(mesName)(1) = Draw_Grating.measureLabels(mesName)(1) - dXGUI / 2 + Else + Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - GUI.Controls("Y_TextBox").Text + Draw_Grating.measureLabels(mesName)(2) = Draw_Grating.measureLabels(mesName)(2) - dYGUI / 2 + End If + ElseIf index + 1 = Data.pointsMeasurements(mesName)(1) Then + If Draw_Grating.measureLabels(mesName)(3) = 1 Then + Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - GUI.Controls("Y_TextBox").Text + Draw_Grating.measureLabels(mesName)(2) = Draw_Grating.measureLabels(mesName)(2) + dYGUI / 2 + ElseIf Draw_Grating.measureLabels(mesName)(3) = 2 Then + Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - GUI.Controls("X_TextBox").Text + Draw_Grating.measureLabels(mesName)(1) = Draw_Grating.measureLabels(mesName)(1) - dXGUI / 2 + ElseIf Draw_Grating.measureLabels(mesName)(3) = 3 Then + Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - GUI.Controls("Y_TextBox").Text + Draw_Grating.measureLabels(mesName)(2) = Draw_Grating.measureLabels(mesName)(2) - dYGUI / 2 + Else + Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - GUI.Controls("X_TextBox").Text + Draw_Grating.measureLabels(mesName)(1) = Draw_Grating.measureLabels(mesName)(1) + dXGUI / 2 + End If + End If + + ElseIf mesName.Split("_")(0) = "SS1" AndAlso index + 2 = Data.pointsMeasurements(mesName)(1) Then + If Draw_Grating.measureLabels(mesName)(3) = 1 Then + Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - GUI.Controls("X_TextBox").Text + Draw_Grating.measureLabels(mesName)(1) = Draw_Grating.measureLabels(mesName)(1) + dXGUI / 2 + + Draw_Grating.sideSquareMesLine(mesName)(0) = Draw_Grating.sideSquareMesLine(mesName)(0) + dXGUI + End If + End If + Next + + Dim mesNum As Integer = Data.pointsMeasurements.Count - 1 + + For i = 2 To Data.pointsMeasurements.Count - 1 + Dim mesName As String = Data.pointsMeasurements.Keys(i) + If index + 1 < Data.pointsMeasurements(mesName)(0) Then + Data.pointsMeasurements(mesName)(0) = Data.pointsMeasurements(mesName)(0) + 1 + Data.pointsMeasurements(mesName)(1) = Data.pointsMeasurements(mesName)(1) + 1 + ElseIf index + 1 = Data.pointsMeasurements(mesName)(0) OrElse index + 1 = Data.pointsMeasurements(mesName)(1) Then + Data.pointsMeasurements(mesName)(1) = Data.pointsMeasurements(mesName)(1) + 1 + End If + Next + + Dim pointQuadrant As Integer = Get_PointQuadrant(pXGUI, pYGUI) + Dim pointRow1 As DataRow = Data.gratingPoints.NewRow + Dim pointRow2 As DataRow = Data.gratingPoints.NewRow + + pointRow1("NAME") = "CA" & pointQuadrant & "_" & 1 + pointRow1("QUADRANT") = pointQuadrant + pointRow1("RECESS OK") = False + + pointRow2("NAME") = "CA" & pointQuadrant & "_" & 2 + pointRow2("QUADRANT") = pointQuadrant + pointRow2("RECESS OK") = False + If pointQuadrant = 1 Then + ' Add the new points + pointRow1("X") = pX + pointRow1("Y") = pY - dY + pointRow1("GUI X") = pXGUI + pointRow1("GUI Y") = pYGUI + dYGUI + + pointRow2("X") = pX + dX + pointRow2("Y") = pY + pointRow2("GUI X") = pXGUI + dXGUI + pointRow2("GUI Y") = pYGUI + + ' Update outer measuements (SW) + Data.pointsMeasurements("Lmes")(1) = Data.pointsMeasurements("Lmes")(1) + 1 + Data.pointsMeasurements("Wmes")(0) = Data.pointsMeasurements("Wmes")(0) + 1 + Data.pointsMeasurements("Wmes")(1) = Data.pointsMeasurements("Wmes")(1) + 1 + + ' Add recess measuements (SW) + Data.pointsMeasurements.Add("A_" & mesNum, {index + 1, index + 2, 1}) + Data.pointsMeasurements.Add("A_" & mesNum + 1, {index + 1, index + 2, 4}) + + ' Add angle recess help point (GUI) + Dim pointRow = Data.angleRecessPoints.NewRow + pointRow("NAME") = "CA" & pointQuadrant + pointRow("QUADRANT") = pointQuadrant + pointRow("GUI X") = pXGUI + dXGUI + pointRow("GUI Y") = pYGUI + dYGUI + Data.angleRecessPoints.Rows.Add(pointRow) + + ' Add recess measurments (GUI) + Draw_Grating.measureLabels.Add("A_" & mesNum, {CInt(GUI.Controls("X_TextBox").Text), pXGUI + dXGUI / 2 - 8, + pYGUI + dYGUI + 3, 1}) + Draw_Grating.measureLabels.Add("A_" & mesNum + 1, {CInt(GUI.Controls("Y_TextBox").Text), pXGUI + dXGUI + 3, + pYGUI + dYGUI / 2 - 4, 1}) + ElseIf pointQuadrant = 2 Then + ' Add the new points + pointRow1("X") = pX - dX + pointRow1("Y") = pY + pointRow1("GUI X") = pXGUI - dXGUI + pointRow1("GUI Y") = pYGUI + + pointRow2("X") = pX + pointRow2("Y") = pY - dY + pointRow2("GUI X") = pXGUI + pointRow2("GUI Y") = pYGUI + dYGUI + + ' Update outer measuements (SW) + Data.pointsMeasurements("Lmes")(1) = Data.pointsMeasurements("Lmes")(1) + 1 + Data.pointsMeasurements("Wmes")(1) = Data.pointsMeasurements("Wmes")(1) + 1 + + ' Add recess measuements (SW) + Data.pointsMeasurements.Add("A_" & mesNum, {index + 1, index + 2, 1}) + Data.pointsMeasurements.Add("A_" & mesNum + 1, {index + 1, index + 2, 2}) + + ' Add angle recess help point (GUI) + Dim pointRow = Data.angleRecessPoints.NewRow + pointRow("NAME") = "CA" & pointQuadrant + pointRow("QUADRANT") = pointQuadrant + pointRow("GUI X") = pXGUI - dXGUI + pointRow("GUI Y") = pYGUI + dYGUI + Data.angleRecessPoints.Rows.Add(pointRow) + + ' Add recess measurments (GUI) + Draw_Grating.measureLabels.Add("A_" & mesNum, {CInt(GUI.Controls("Y_TextBox").Text), pXGUI - dXGUI - 18 - 3, + pYGUI + dYGUI / 2 - 4, 2}) + Draw_Grating.measureLabels.Add("A_" & mesNum + 1, {CInt(GUI.Controls("X_TextBox").Text), pXGUI - dXGUI / 2 - 8, + pYGUI + dYGUI + 3, 2}) + ElseIf pointQuadrant = 3 Then + ' Add the new points + pointRow1("X") = pX + pointRow1("Y") = pY + dY + pointRow1("GUI X") = pXGUI + pointRow1("GUI Y") = pYGUI - dYGUI + + pointRow2("X") = pX - dX + pointRow2("Y") = pY + pointRow2("GUI X") = pXGUI - dXGUI + pointRow2("GUI Y") = pYGUI + + ' Update outer measuements (SW) + Data.pointsMeasurements("Wmes")(1) = Data.pointsMeasurements("Wmes")(1) + 1 + + ' Add recess measuements (SW) + Data.pointsMeasurements.Add("A_" & mesNum, {index + 1, index + 2, 2}) + Data.pointsMeasurements.Add("A_" & mesNum + 1, {index + 1, index + 2, 3}) + + ' Add angle recess help point (GUI) + Dim pointRow = Data.angleRecessPoints.NewRow + pointRow("NAME") = "CA" & pointQuadrant + pointRow("QUADRANT") = pointQuadrant + pointRow("GUI X") = pXGUI - dXGUI + pointRow("GUI Y") = pYGUI - dYGUI + Data.angleRecessPoints.Rows.Add(pointRow) + + ' Add recess measurments (GUI) + Draw_Grating.measureLabels.Add("A_" & mesNum, {CInt(GUI.Controls("X_TextBox").Text), pXGUI - dXGUI / 2 - 8, + pYGUI - dYGUI - 12 - 3, 3}) + Draw_Grating.measureLabels.Add("A_" & mesNum + 1, {CInt(GUI.Controls("Y_TextBox").Text), pXGUI - dXGUI - 18 - 3, + pYGUI - dYGUI / 2 - 4, 3}) + Else + ' Add the new points + pointRow1("X") = pX + dX + pointRow1("Y") = pY + pointRow1("GUI X") = pXGUI + dXGUI + pointRow1("GUI Y") = pYGUI + + pointRow2("X") = pX + pointRow2("Y") = pY + dY + pointRow2("GUI X") = pXGUI + pointRow2("GUI Y") = pYGUI - dYGUI + + ' Add recess measuements (SW) + Data.pointsMeasurements.Add("A_" & mesNum, {index + 1, index + 2, 3}) + Data.pointsMeasurements.Add("A_" & mesNum + 1, {index + 1, index + 2, 4}) + + ' Add angle recess help point (GUI) + Dim pointRow = Data.angleRecessPoints.NewRow + pointRow("NAME") = "CA" & pointQuadrant + pointRow("QUADRANT") = pointQuadrant + pointRow("GUI X") = pXGUI + dXGUI + pointRow("GUI Y") = pYGUI - dYGUI + Data.angleRecessPoints.Rows.Add(pointRow) + + ' Add recess measurments (GUI) + Draw_Grating.measureLabels.Add("A_" & mesNum, {CInt(GUI.Controls("Y_TextBox").Text), pXGUI + dXGUI + 3, + pYGUI - dYGUI / 2 - 4, 4}) + Draw_Grating.measureLabels.Add("A_" & mesNum + 1, {CInt(GUI.Controls("X_TextBox").Text), pXGUI + dXGUI / 2 - 8, + pYGUI - dYGUI - 12 - 3, 4}) + End If + + Data.gratingPoints.Rows.InsertAt(pointRow1, index + 1) + Data.gratingPoints.Rows.InsertAt(pointRow2, index + 2) + Data.gratingPoints.Rows.RemoveAt(index) + + 'Redraw grating + GUI.DrawingPanel.Refresh() + + RemoveHandler GUI.Controls("X_TextBox").TextChanged, AddressOf FunctionTextCorner_Changed + RemoveHandler GUI.Controls("X_TextBox").KeyPress, AddressOf FunctionText_KeyPress + GUI.Controls.RemoveByKey("X_TextBox") + + RemoveHandler GUI.Controls("Y_TextBox").TextChanged, AddressOf FunctionTextCorner_Changed + RemoveHandler GUI.Controls("Y_TextBox").KeyPress, AddressOf FunctionText_KeyPress + GUI.Controls.RemoveByKey("Y_TextBox") + + GUI.Controls.RemoveByKey("X_Label") + GUI.Controls.RemoveByKey("Y_Label") + + GUI.Controls("AngleButton").Enabled = True + GUI.Controls("Button_Square").Enabled = True + GUI.Controls("Button_SquareSide").Enabled = True + End Sub + + ' --- Determines the clicked points quadrant --- + Private Shared Function Get_PointQuadrant(pXGUI As Integer, pYGUI As Integer) + Dim quadrant As Integer + If pXGUI < Data.guiPanelMidX Then + If pYGUI > Data.guiPanelMidY Then + quadrant = 4 + Else + quadrant = 1 + End If + Else + If pYGUI > Data.guiPanelMidY Then + quadrant = 3 + Else + quadrant = 2 + End If + End If + + Return quadrant + End Function +End Class diff --git a/Wardrobe/Recess Functions/Corner_Rectangle.vb b/Wardrobe/Recess Functions/Corner_Rectangle.vb new file mode 100644 index 0000000..6f055d6 --- /dev/null +++ b/Wardrobe/Recess Functions/Corner_Rectangle.vb @@ -0,0 +1,373 @@ +Public Class Corner_Rectangle + + ' --- Create textboxes when user clicks the rectangle corner recess button --- + Public Shared Sub SquareButtton(sender As Object, e As EventArgs) + GUI.Controls("AngleButton").Enabled = False + GUI.Controls("Button_Square").Enabled = False + GUI.Controls("Button_SquareSide").Enabled = False + + Dim buttonX As Integer = GUI.Controls("Button_Square").Location.X + Dim buttonY As Integer = GUI.Controls("Button_Square").Location.Y + + GUI.Create_TextBox("X_TextBox", "", buttonX + 20, buttonY + 40, 60) + AddHandler GUI.Controls("X_TextBox").TextChanged, AddressOf FunctionTextCorner_Changed + AddHandler GUI.Controls("X_TextBox").KeyPress, AddressOf FunctionText_KeyPress + GUI.Create_LabelGUI("X_Label", "L", buttonX, buttonY + 43) + + GUI.Create_TextBox("Y_TextBox", "", buttonX + 130, buttonY + 40, 60) + AddHandler GUI.Controls("Y_TextBox").TextChanged, AddressOf FunctionTextCorner_Changed + AddHandler GUI.Controls("Y_TextBox").KeyPress, AddressOf FunctionText_KeyPress + GUI.Create_LabelGUI("Y_Label", "W", buttonX + 110, buttonY + 43) + End Sub + + ' --- Check the key pressed by the user --- + Private Shared Sub FunctionText_KeyPress(sender As Object, e As KeyPressEventArgs) + User_Input.Check_IfNumber(e) + End Sub + + ' --- Adds clickable buttons for all corners if conditions are met --- + Private Shared Sub FunctionTextCorner_Changed(sender As TextBox, e As EventArgs) + Dim value1, value2 As Integer + Try + value1 = CInt(GUI.Controls("X_TextBox").Text) + value2 = CInt(GUI.Controls("Y_TextBox").Text) + Catch ex As Exception + value1 = 0 + value2 = 0 + End Try + + If value1 > 0 AndAlso value2 > 0 Then + If GUI.DrawingPanel.Controls.Count = 2 Then + For i = 0 To Data.gratingPoints.Rows.Count - 1 + If Data.gratingPoints.Rows(i)("RECESS OK") Then + Dim pointButton As New Button With { + .Width = 30, + .Height = 30, + .Left = Data.gratingPoints.Rows(i)("GUI X") - 30 / 2, + .Top = Data.gratingPoints.Rows(i)("GUI Y") - 30 / 2, + .Name = Data.gratingPoints.Rows(i)("NAME") & "_Button", + .Text = "" + } + + pointButton.BackColor = Color.FromArgb(50, Color.Red) + pointButton.FlatStyle = FlatStyle.Flat + pointButton.FlatAppearance.BorderSize = 0 + pointButton.FlatAppearance.MouseOverBackColor = Color.Red + pointButton.FlatAppearance.MouseDownBackColor = Color.DarkRed + Dim gp As New Drawing2D.GraphicsPath + gp.AddEllipse(New Rectangle(New Point(0, 0), New Size(30, 30))) + pointButton.Region = New Region(gp) + + GUI.DrawingPanel.Controls.Add(pointButton) + + AddHandler pointButton.Click, AddressOf PointButton_Click + End If + Next + End If + + ElseIf GUI.DrawingPanel.Controls.Count > 2 Then + For i = 0 To Data.gratingPoints.Rows.Count - 1 + If Data.gratingPoints.Rows(i)("RECESS OK") Then + Dim buttonName As String = Data.gratingPoints.Rows(i)("NAME") & "_Button" + RemoveHandler GUI.DrawingPanel.Controls(buttonName).Click, AddressOf PointButton_Click + GUI.DrawingPanel.Controls.RemoveByKey(Data.gratingPoints.Rows(i)("NAME") & "_Button") + End If + Next + End If + End Sub + + ' --- When a corner function button is pressed --- + Private Shared Sub PointButton_Click(sender As Button, e As EventArgs) + 'Determine which point is being pressed + Dim pointPressed As String = sender.Name.Split("_")(0) + Dim index As Integer + For Each DR As DataRow In Data.gratingPoints.Rows + If DR("NAME") = pointPressed Then + index = Data.gratingPoints.Rows.IndexOf(DR) + Exit For + End If + Next + + ' Remove point buttons + For i = 0 To Data.gratingPoints.Rows.Count - 1 + If Data.gratingPoints.Rows(i)("RECESS OK") Then + Dim buttonName As String = Data.gratingPoints.Rows(i)("NAME") & "_Button" + RemoveHandler GUI.DrawingPanel.Controls(buttonName).Click, AddressOf PointButton_Click + GUI.DrawingPanel.Controls.RemoveByKey(Data.gratingPoints.Rows(i)("NAME") & "_Button") + End If + Next + + 'Retrive the points coords + Dim pXGUI As Integer = Data.gratingPoints.Rows(index)("GUI X") + Dim pYGUI As Integer = Data.gratingPoints.Rows(index)("GUI Y") + Dim pX As Decimal = Data.gratingPoints.Rows(index)("X") + Dim pY As Decimal = Data.gratingPoints.Rows(index)("Y") + + Dim dXGUI As Integer = CInt(GUI.Controls("X_TextBox").Text / Data.scaleDiff) + Dim dYGUI As Integer = CInt(GUI.Controls("Y_TextBox").Text / Data.scaleDiff) + Dim dX As Decimal = GUI.Controls("X_TextBox").Text / 1000 + Dim dY As Decimal = GUI.Controls("Y_TextBox").Text / 1000 + + Data.recessData.Rows.Add() + + For i = 2 To Data.pointsMeasurements.Count - 1 + Dim mesName As String = Data.pointsMeasurements.Keys(i) + If mesName.Split("_")(0) <> "SS1" AndAlso mesName.Split("_")(0) <> "SS" Then + If index + 1 = Data.pointsMeasurements(mesName)(0) Then + If Draw_Grating.measureLabels(mesName)(3) = 1 Then + Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - GUI.Controls("X_TextBox").Text + Draw_Grating.measureLabels(mesName)(1) = Draw_Grating.measureLabels(mesName)(1) + dXGUI / 2 + ElseIf Draw_Grating.measureLabels(mesName)(3) = 2 Then + Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - GUI.Controls("Y_TextBox").Text + Draw_Grating.measureLabels(mesName)(2) = Draw_Grating.measureLabels(mesName)(2) + dYGUI / 2 + ElseIf Draw_Grating.measureLabels(mesName)(3) = 3 Then + Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - GUI.Controls("X_TextBox").Text + Draw_Grating.measureLabels(mesName)(1) = Draw_Grating.measureLabels(mesName)(1) - dXGUI / 2 + Else + Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - GUI.Controls("Y_TextBox").Text + Draw_Grating.measureLabels(mesName)(2) = Draw_Grating.measureLabels(mesName)(2) - dYGUI / 2 + End If + ElseIf index + 1 = Data.pointsMeasurements(mesName)(1) Then + If Draw_Grating.measureLabels(mesName)(3) = 1 Then + Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - GUI.Controls("Y_TextBox").Text + Draw_Grating.measureLabels(mesName)(2) = Draw_Grating.measureLabels(mesName)(2) + dYGUI / 2 + ElseIf Draw_Grating.measureLabels(mesName)(3) = 2 Then + Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - GUI.Controls("X_TextBox").Text + Draw_Grating.measureLabels(mesName)(1) = Draw_Grating.measureLabels(mesName)(1) - dXGUI / 2 + ElseIf Draw_Grating.measureLabels(mesName)(3) = 3 Then + Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - GUI.Controls("Y_TextBox").Text + Draw_Grating.measureLabels(mesName)(2) = Draw_Grating.measureLabels(mesName)(2) - dYGUI / 2 + Else + Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - GUI.Controls("X_TextBox").Text + Draw_Grating.measureLabels(mesName)(1) = Draw_Grating.measureLabels(mesName)(1) + dXGUI / 2 + End If + End If + + ElseIf mesName.Split("_")(0) = "SS1" AndAlso index + 2 = Data.pointsMeasurements(mesName)(1) Then + If Draw_Grating.measureLabels(mesName)(3) = 1 Then + Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - GUI.Controls("X_TextBox").Text + Draw_Grating.measureLabels(mesName)(1) = Draw_Grating.measureLabels(mesName)(1) + dXGUI / 2 + + Draw_Grating.sideSquareMesLine(mesName)(0) = Draw_Grating.sideSquareMesLine(mesName)(0) + dXGUI + End If + End If + Next + + Dim mesNum As Integer = Data.pointsMeasurements.Count - 1 + + For i = 2 To Data.pointsMeasurements.Count - 1 + Dim mesName As String = Data.pointsMeasurements.Keys(i) + If index + 1 < Data.pointsMeasurements(mesName)(0) Then + Data.pointsMeasurements(mesName)(0) = Data.pointsMeasurements(mesName)(0) + 1 + Data.pointsMeasurements(mesName)(1) = Data.pointsMeasurements(mesName)(1) + 1 + ElseIf index + 1 = Data.pointsMeasurements(mesName)(0) OrElse index + 1 = Data.pointsMeasurements(mesName)(1) Then + Data.pointsMeasurements(mesName)(1) = Data.pointsMeasurements(mesName)(1) + 1 + End If + Next + + Dim pointQuadrant As Integer = Get_PointQuadrant(pXGUI, pYGUI) + Dim pointRow1 As DataRow = Data.gratingPoints.NewRow + Dim pointRow2 As DataRow = Data.gratingPoints.NewRow + Dim pointRow3 As DataRow = Data.gratingPoints.NewRow + + pointRow1("NAME") = "CR" & pointQuadrant & "_" & 1 + pointRow1("QUADRANT") = pointQuadrant + pointRow1("RECESS OK") = True + + pointRow2("NAME") = "CR" & pointQuadrant & "_" & 2 + pointRow2("QUADRANT") = pointQuadrant + pointRow2("RECESS OK") = False + + pointRow3("NAME") = "CR" & pointQuadrant & "_" & 3 + pointRow3("QUADRANT") = pointQuadrant + pointRow3("RECESS OK") = True + + If pointQuadrant = 1 Then + ' Add the new points + pointRow1("X") = pX + pointRow1("Y") = pY - dY + pointRow1("GUI X") = pXGUI + pointRow1("GUI Y") = pYGUI + dYGUI + + pointRow2("X") = pX + dX + pointRow2("Y") = pY - dY + pointRow2("GUI X") = pXGUI + dXGUI + pointRow2("GUI Y") = pYGUI + dYGUI + + pointRow3("X") = pX + dX + pointRow3("Y") = pY + pointRow3("GUI X") = pXGUI + dXGUI + pointRow3("GUI Y") = pYGUI + + ' Update outer measuements (SW) + Data.pointsMeasurements("Lmes")(1) = Data.pointsMeasurements("Lmes")(1) + 2 + Data.pointsMeasurements("Wmes")(0) = Data.pointsMeasurements("Wmes")(0) + 2 + Data.pointsMeasurements("Wmes")(1) = Data.pointsMeasurements("Wmes")(1) + 2 + + ' Add recess measuements (SW) + Data.pointsMeasurements.Add("S_" & mesNum, {index + 1, index + 2, 1}) + Data.pointsMeasurements.Add("S_" & mesNum + 1, {index + 2, index + 3, 4}) + + ' Add recess measurments (GUI) + Draw_Grating.measureLabels.Add("S_" & mesNum, {CInt(GUI.Controls("X_TextBox").Text), pXGUI + dXGUI / 2 - 8, + pYGUI + dYGUI + 3, 1}) + Draw_Grating.measureLabels.Add("S_" & mesNum + 1, {CInt(GUI.Controls("Y_TextBox").Text), pXGUI + dXGUI + 3, + pYGUI + dYGUI / 2 - 4, 1}) + + ' Recess Data + Data.recessData.Rows(Data.recessData.Rows.Count - 1)("RECESS TYPE") = "SQUARE" + Data.recessData.Rows(Data.recessData.Rows.Count - 1)("CORNER") = 1 + Data.recessData.Rows(Data.recessData.Rows.Count - 1)("WIDTH") = CInt(GUI.Controls("Y_TextBox").Text) + Data.recessData.Rows(Data.recessData.Rows.Count - 1)("LENGTH") = CInt(GUI.Controls("X_TextBox").Text) + + ElseIf pointQuadrant = 2 Then + ' Add the new points + pointRow1("X") = pX - dX + pointRow1("Y") = pY + pointRow1("GUI X") = pXGUI - dXGUI + pointRow1("GUI Y") = pYGUI + + pointRow2("X") = pX - dX + pointRow2("Y") = pY - dY + pointRow2("GUI X") = pXGUI - dXGUI + pointRow2("GUI Y") = pYGUI + dYGUI + + pointRow3("X") = pX + pointRow3("Y") = pY - dY + pointRow3("GUI X") = pXGUI + pointRow3("GUI Y") = pYGUI + dYGUI + + ' Update outer measuements (SW) + Data.pointsMeasurements("Lmes")(1) = Data.pointsMeasurements("Lmes")(1) + 2 + Data.pointsMeasurements("Wmes")(1) = Data.pointsMeasurements("Wmes")(1) + 2 + + ' Add recess measuements (SW) + Data.pointsMeasurements.Add("S_" & mesNum, {index + 1, index + 2, 2}) + Data.pointsMeasurements.Add("S_" & mesNum + 1, {index + 2, index + 3, 1}) + + ' Add recess measurments (GUI) + Draw_Grating.measureLabels.Add("S_" & mesNum, {CInt(GUI.Controls("Y_TextBox").Text), pXGUI - dXGUI - 18 - 3, + pYGUI + dYGUI / 2 - 4, 2}) + Draw_Grating.measureLabels.Add("S_" & mesNum + 1, {CInt(GUI.Controls("X_TextBox").Text), pXGUI - dXGUI / 2 - 8, + pYGUI + dYGUI + 3, 2}) + + ' Recess Data + Data.recessData.Rows(Data.recessData.Rows.Count - 1)("RECESS TYPE") = "SQUARE" + Data.recessData.Rows(Data.recessData.Rows.Count - 1)("CORNER") = 2 + Data.recessData.Rows(Data.recessData.Rows.Count - 1)("WIDTH") = CInt(GUI.Controls("Y_TextBox").Text) + Data.recessData.Rows(Data.recessData.Rows.Count - 1)("LENGTH") = CInt(GUI.Controls("X_TextBox").Text) + + ElseIf pointQuadrant = 3 Then + ' Add the new points + pointRow1("X") = pX + pointRow1("Y") = pY + dY + pointRow1("GUI X") = pXGUI + pointRow1("GUI Y") = pYGUI - dYGUI + + pointRow2("X") = pX - dX + pointRow2("Y") = pY + dY + pointRow2("GUI X") = pXGUI - dXGUI + pointRow2("GUI Y") = pYGUI - dYGUI + + pointRow3("X") = pX - dX + pointRow3("Y") = pY + pointRow3("GUI X") = pXGUI - dXGUI + pointRow3("GUI Y") = pYGUI + + ' Update outer measuements (SW) + Data.pointsMeasurements("Wmes")(1) = Data.pointsMeasurements("Wmes")(1) + 2 + + ' Add recess measuements (SW) + Data.pointsMeasurements.Add("S_" & mesNum, {index + 1, index + 2, 3}) + Data.pointsMeasurements.Add("S_" & mesNum + 1, {index + 2, index + 3, 2}) + + ' Add recess measurments (GUI) + Draw_Grating.measureLabels.Add("S_" & mesNum, {CInt(GUI.Controls("X_TextBox").Text), pXGUI - dXGUI / 2 - 8, + pYGUI - dYGUI - 12 - 3, 3}) + Draw_Grating.measureLabels.Add("S_" & mesNum + 1, {CInt(GUI.Controls("Y_TextBox").Text), pXGUI - dXGUI - 18 - 3, + pYGUI - dYGUI / 2 - 4, 3}) + + ' Recess Data + Data.recessData.Rows(Data.recessData.Rows.Count - 1)("RECESS TYPE") = "SQUARE" + Data.recessData.Rows(Data.recessData.Rows.Count - 1)("CORNER") = 3 + Data.recessData.Rows(Data.recessData.Rows.Count - 1)("WIDTH") = CInt(GUI.Controls("Y_TextBox").Text) + Data.recessData.Rows(Data.recessData.Rows.Count - 1)("LENGTH") = CInt(GUI.Controls("X_TextBox").Text) + + Else + ' Add the new points + pointRow1("X") = pX + dX + pointRow1("Y") = pY + pointRow1("GUI X") = pXGUI + dXGUI + pointRow1("GUI Y") = pYGUI + + pointRow2("X") = pX + dX + pointRow2("Y") = pY + dY + pointRow2("GUI X") = pXGUI + dXGUI + pointRow2("GUI Y") = pYGUI - dYGUI + + pointRow3("X") = pX + pointRow3("Y") = pY + dY + pointRow3("GUI X") = pXGUI + pointRow3("GUI Y") = pYGUI - dYGUI + + ' Add recess measuements (SW) + Data.pointsMeasurements.Add("S_" & mesNum, {index + 1, index + 2, 4}) + Data.pointsMeasurements.Add("S_" & mesNum + 1, {index + 2, index + 3, 3}) + + ' Add recess measurments (GUI) + Draw_Grating.measureLabels.Add("S_" & mesNum, {CInt(GUI.Controls("Y_TextBox").Text), pXGUI + dXGUI + 3, + pYGUI - dYGUI / 2 - 4, 4}) + Draw_Grating.measureLabels.Add("S_" & mesNum + 1, {CInt(GUI.Controls("X_TextBox").Text), pXGUI + dXGUI / 2 - 8, + pYGUI - dYGUI - 12 - 3, 4}) + + ' Recess Data + Data.recessData.Rows(Data.recessData.Rows.Count - 1)("RECESS TYPE") = "SQUARE" + Data.recessData.Rows(Data.recessData.Rows.Count - 1)("CORNER") = 4 + Data.recessData.Rows(Data.recessData.Rows.Count - 1)("WIDTH") = CInt(GUI.Controls("Y_TextBox").Text) + Data.recessData.Rows(Data.recessData.Rows.Count - 1)("LENGTH") = CInt(GUI.Controls("X_TextBox").Text) + End If + + Data.gratingPoints.Rows.InsertAt(pointRow1, index + 1) + Data.gratingPoints.Rows.InsertAt(pointRow2, index + 2) + Data.gratingPoints.Rows.InsertAt(pointRow3, index + 3) + Data.gratingPoints.Rows.RemoveAt(index) + + 'Redraw grating + GUI.DrawingPanel.Refresh() + + RemoveHandler GUI.Controls("X_TextBox").TextChanged, AddressOf FunctionTextCorner_Changed + RemoveHandler GUI.Controls("X_TextBox").KeyPress, AddressOf FunctionText_KeyPress + GUI.Controls.RemoveByKey("X_TextBox") + + RemoveHandler GUI.Controls("Y_TextBox").TextChanged, AddressOf FunctionTextCorner_Changed + RemoveHandler GUI.Controls("Y_TextBox").KeyPress, AddressOf FunctionText_KeyPress + GUI.Controls.RemoveByKey("Y_TextBox") + + GUI.Controls.RemoveByKey("X_Label") + GUI.Controls.RemoveByKey("Y_Label") + + GUI.Controls("AngleButton").Enabled = True + GUI.Controls("Button_Square").Enabled = True + GUI.Controls("Button_SquareSide").Enabled = True + End Sub + + ' --- Determines the clicked points quadrant --- + Private Shared Function Get_PointQuadrant(pXGUI As Integer, pYGUI As Integer) + Dim quadrant As Integer + If pXGUI < Data.guiPanelMidX Then + If pYGUI > Data.guiPanelMidY Then + quadrant = 4 + Else + quadrant = 1 + End If + Else + If pYGUI > Data.guiPanelMidY Then + quadrant = 3 + Else + quadrant = 2 + End If + End If + + Return quadrant + End Function +End Class diff --git a/Wardrobe/Recess Functions/Side_Rectangle.vb b/Wardrobe/Recess Functions/Side_Rectangle.vb new file mode 100644 index 0000000..8199fce --- /dev/null +++ b/Wardrobe/Recess Functions/Side_Rectangle.vb @@ -0,0 +1,512 @@ +Public Class Side_Rectangle + Private Shared sideSquareValues(3) As Integer + Private Shared numOfSideRectangles As Integer = 0 + + ' --- Create textboxes when user clicks the rectangle side recess button --- + Public Shared Sub SquareSideButtton(sender As Object, e As EventArgs) + GUI.Controls("AngleButton").Enabled = False + GUI.Controls("Button_Square").Enabled = False + GUI.Controls("Button_SquareSide").Enabled = False + + Dim buttonX As Integer = GUI.Controls("Button_SquareSide").Location.X + Dim buttonY As Integer = GUI.Controls("Button_SquareSide").Location.Y + + GUI.Create_TextBox("X_TextBox", "", buttonX + 20, buttonY + 40, 60) + AddHandler GUI.Controls("X_TextBox").TextChanged, AddressOf FunctionTextSide_Changed + AddHandler GUI.Controls("X_TextBox").KeyPress, AddressOf FunctionText_KeyPress + GUI.Create_LabelGUI("X_Label", "L", buttonX, buttonY + 43) + + GUI.Create_TextBox("Y_TextBox", "", buttonX + 130, buttonY + 40, 60) + AddHandler GUI.Controls("Y_TextBox").TextChanged, AddressOf FunctionTextSide_Changed + AddHandler GUI.Controls("Y_TextBox").KeyPress, AddressOf FunctionText_KeyPress + GUI.Create_LabelGUI("Y_Label", "W", buttonX + 110, buttonY + 43) + + GUI.Create_TextBox("Off_TextBox", "", buttonX + 250, buttonY + 40, 60) + AddHandler GUI.Controls("Off_TextBox").TextChanged, AddressOf FunctionTextSide_Changed + AddHandler GUI.Controls("Off_TextBox").KeyPress, AddressOf FunctionText_KeyPress + GUI.Create_LabelGUI("Off_Label", "Offset", buttonX + 210, buttonY + 43) + End Sub + + ' --- Check the key pressed by the user --- + Private Shared Sub FunctionText_KeyPress(sender As Object, e As KeyPressEventArgs) + User_Input.Check_IfNumber(e) + End Sub + + ' --- Adds clickable buttons for all sides if conditions are met --- + Private Shared Sub FunctionTextSide_Changed(sender As TextBox, e As EventArgs) + Try + sideSquareValues(0) = CInt(GUI.Controls("X_TextBox").Text) + sideSquareValues(1) = CInt(GUI.Controls("Y_TextBox").Text) + sideSquareValues(2) = CInt(GUI.Controls("Off_TextBox").Text) + Catch ex As Exception + sideSquareValues(0) = 0 + sideSquareValues(1) = 0 + sideSquareValues(2) = 0 + End Try + + If sideSquareValues(0) > 0 AndAlso sideSquareValues(1) > 0 AndAlso sideSquareValues(2) > 0 Then + If GUI.DrawingPanel.Controls.Count = 2 Then + For i = 1 To 4 + Dim sidePoints As New List(Of String) + If i = 1 Then + Create_SideButton(sideSquareValues(0) / (Data.scaleDiff), 30, + Data.grossAreaPoints.Rows(0)("GUI X") + sideSquareValues(2) / (Data.scaleDiff), + Data.grossAreaPoints.Rows(0)("GUI Y") - 30 / 2, + "Button_" & i) + ElseIf i = 2 Then + Create_SideButton(30, sideSquareValues(1) / (Data.scaleDiff), + Data.grossAreaPoints.Rows(1)("GUI X") - 30 / 2, + Data.grossAreaPoints.Rows(1)("GUI Y") + sideSquareValues(2) / (Data.scaleDiff), "Button_" & i) + ElseIf i = 3 Then + Create_SideButton(sideSquareValues(0) / (Data.scaleDiff), 30, + Data.grossAreaPoints.Rows(2)("GUI X") - sideSquareValues(2) / (Data.scaleDiff) - sideSquareValues(0) / (Data.scaleDiff), + Data.grossAreaPoints.Rows(2)("GUI Y") - 30 / 2, + "Button_" & i) + Else + Create_SideButton(30, sideSquareValues(1) / (Data.scaleDiff), + Data.grossAreaPoints.Rows(3)("GUI X") - 30 / 2, + Data.grossAreaPoints.Rows(3)("GUI Y") - sideSquareValues(2) / (Data.scaleDiff) - sideSquareValues(1) / (Data.scaleDiff), + "Button_" & i) + End If + Next + Else + ' Update button size and position + For i = 2 To GUI.DrawingPanel.Controls.Count - 1 + Dim buttonSide As Integer = CInt(GUI.DrawingPanel.Controls(i).Name.Split("_")(1)) + If buttonSide = 1 Then + GUI.DrawingPanel.Controls(i).Width = sideSquareValues(0) / (Data.scaleDiff) + GUI.DrawingPanel.Controls(i).Left = Data.grossAreaPoints.Rows(0)("GUI X") + sideSquareValues(2) / (Data.scaleDiff) + ElseIf buttonSide = 2 Then + GUI.DrawingPanel.Controls(i).Height = sideSquareValues(1) / (Data.scaleDiff) + GUI.DrawingPanel.Controls(i).Top = Data.grossAreaPoints.Rows(1)("GUI Y") + sideSquareValues(2) / (Data.scaleDiff) + ElseIf buttonSide = 3 Then + GUI.DrawingPanel.Controls(i).Width = sideSquareValues(0) / (Data.scaleDiff) + GUI.DrawingPanel.Controls(i).Left = Data.grossAreaPoints.Rows(2)("GUI X") - sideSquareValues(2) / (Data.scaleDiff) - GUI.DrawingPanel.Controls(i).Width + Else + GUI.DrawingPanel.Controls(i).Height = sideSquareValues(1) / (Data.scaleDiff) + GUI.DrawingPanel.Controls(i).Top = Data.grossAreaPoints.Rows(3)("GUI Y") - sideSquareValues(2) / (Data.scaleDiff) - GUI.DrawingPanel.Controls(i).Height + End If + + Next + + End If + + ElseIf GUI.DrawingPanel.Controls.Count > 2 Then + For i = 2 To GUI.DrawingPanel.Controls.Count - 1 + RemoveHandler GUI.DrawingPanel.Controls(2).Click, AddressOf SideButton_Click + GUI.DrawingPanel.Controls.RemoveAt(2) + Next + End If + End Sub + + ' --- Template to create corner buttons --- + Private Shared Sub Create_SideButton(bWidth As Integer, bHeight As Integer, bLeft As Integer, bTop As Integer, bName As String) + Dim sideButton As New Button With { + .Width = bWidth, + .Height = bHeight, + .Left = bLeft, + .Top = bTop, + .Name = bName, + .Text = "" + } + + sideButton.BackColor = Color.FromArgb(50, Color.Red) + sideButton.FlatStyle = FlatStyle.Flat + sideButton.FlatAppearance.BorderSize = 0 + sideButton.FlatAppearance.MouseOverBackColor = Color.Red + sideButton.FlatAppearance.MouseDownBackColor = Color.DarkRed + + GUI.DrawingPanel.Controls.Add(sideButton) + + AddHandler sideButton.Click, AddressOf SideButton_Click + End Sub + + ' --- When a side function button is pressed --- + Private Shared Sub SideButton_Click(sender As Button, e As EventArgs) + 'Determine which side is being pressed + Dim sidePressed As Integer = CInt(sender.Name.Split("_")(1)) + + ' Remove point buttons + For i = 2 To GUI.DrawingPanel.Controls.Count - 1 + RemoveHandler GUI.DrawingPanel.Controls(2).Click, AddressOf SideButton_Click + GUI.DrawingPanel.Controls.RemoveAt(2) + Next + + Dim sidePoints As New List(Of Integer) + Dim index As Integer + + If sidePressed = 1 Then + For j = 0 To Data.gratingPoints.Rows.Count - 1 + If Data.gratingPoints.Rows(j)("GUI Y") = Data.grossAreaPoints.Rows(0)("GUI Y") Then + sidePoints.Add(j) + End If + Next + index = sidePoints(0) + If sidePoints.Count > 2 Then + For i = sidePoints.Count / 2 To 2 Step -1 + If Data.gratingPoints.Rows(sidePoints(i * 2 - 2))("GUI X") < + Data.grossAreaPoints.Rows(0)("GUI X") + sideSquareValues(2) / Data.scaleDiff Then + index = sidePoints(i * 2 - 2) + Exit For + End If + Next + End If + + ElseIf sidePressed = 2 Then + For j = 1 To Data.gratingPoints.Rows.Count - 1 + If Data.gratingPoints.Rows(j)("GUI X") = Data.grossAreaPoints.Rows(1)("GUI X") Then + sidePoints.Add(j) + End If + Next + index = sidePoints(0) + If sidePoints.Count > 2 Then + For i = sidePoints.Count / 2 To 2 Step -1 + If Data.gratingPoints.Rows(sidePoints(i * 2 - 2))("GUI Y") < + Data.grossAreaPoints.Rows(1)("GUI Y") + sideSquareValues(2) / Data.scaleDiff Then + index = sidePoints(i * 2 - 2) + Exit For + End If + Next + End If + + ElseIf sidePressed = 3 Then + For j = 2 To Data.gratingPoints.Rows.Count - 1 + If Data.gratingPoints.Rows(j)("GUI Y") = Data.grossAreaPoints.Rows(2)("GUI Y") Then + sidePoints.Add(j) + End If + Next + index = sidePoints(0) + If sidePoints.Count > 2 Then + For i = sidePoints.Count / 2 To 2 Step -1 + If Data.gratingPoints.Rows(sidePoints(i * 2 - 2))("GUI X") > + Data.grossAreaPoints.Rows(2)("GUI X") - sideSquareValues(2) / Data.scaleDiff Then + index = sidePoints(i * 2 - 2) + Exit For + End If + Next + End If + + Else + For j = 3 To Data.gratingPoints.Rows.Count - 1 + If Data.gratingPoints.Rows(j)("GUI X") = Data.grossAreaPoints.Rows(3)("GUI X") Then + sidePoints.Add(j) + End If + Next + sidePoints.Add(0) + index = sidePoints(0) + If sidePoints.Count > 2 Then + For i = sidePoints.Count / 2 To 2 Step -1 + If Data.gratingPoints.Rows(sidePoints(i * 2 - 2))("GUI Y") > + Data.grossAreaPoints.Rows(3)("GUI Y") - sideSquareValues(2) / Data.scaleDiff Then + index = sidePoints(i * 2 - 2) + Exit For + End If + Next + End If + End If + + For i = 2 To Data.pointsMeasurements.Count - 1 + Dim mesName As String = Data.pointsMeasurements.Keys(i) + If mesName.Split("_")(0) = "SS1" Then + If index + 2 = Data.pointsMeasurements(mesName)(1) Then + If Draw_Grating.measureLabels(mesName)(3) = 1 Then + Draw_Grating.measureLabels(mesName)(0) = Data.gratingPoints.Rows(index + 1)("X") * 1000 - + Data.grossAreaPoints.Rows(0)("X") * 1000 - (sideSquareValues(2) + sideSquareValues(0)) + + Draw_Grating.sideSquareMesLine(mesName)(0) = Data.grossAreaPoints.Rows(0)("GUI X") + (sideSquareValues(2) + sideSquareValues(0)) / Data.scaleDiff + + Draw_Grating.measureLabels(mesName)(1) = (Draw_Grating.sideSquareMesLine(mesName)(0) + Draw_Grating.sideSquareMesLine(mesName)(2)) / 2 - 8 + + ElseIf Draw_Grating.measureLabels(mesName)(3) = 2 Then + Draw_Grating.measureLabels(mesName)(0) = Data.grossAreaPoints.Rows(1)("Y") * 1000 - Data.gratingPoints.Rows(index + 1)("Y") * 1000 - + (sideSquareValues(2) + sideSquareValues(1)) + + Draw_Grating.sideSquareMesLine(mesName)(1) = Data.grossAreaPoints.Rows(1)("GUI Y") + (sideSquareValues(2) + sideSquareValues(1)) / Data.scaleDiff + + Draw_Grating.measureLabels(mesName)(2) = (Draw_Grating.sideSquareMesLine(mesName)(1) + Draw_Grating.sideSquareMesLine(mesName)(3)) / 2 - 6 + + ElseIf Draw_Grating.measureLabels(mesName)(3) = 3 Then + Draw_Grating.measureLabels(mesName)(0) = Data.grossAreaPoints.Rows(2)("X") * 1000 - Data.gratingPoints.Rows(index + 1)("X") * 1000 - + (sideSquareValues(2) + sideSquareValues(0)) + + Draw_Grating.sideSquareMesLine(mesName)(0) = Data.grossAreaPoints.Rows(2)("GUI X") - (sideSquareValues(2) + sideSquareValues(0)) / Data.scaleDiff + + Draw_Grating.measureLabels(mesName)(1) = (Draw_Grating.sideSquareMesLine(mesName)(0) + Draw_Grating.sideSquareMesLine(mesName)(2)) / 2 - 8 + + Else + Draw_Grating.measureLabels(mesName)(0) = Data.gratingPoints.Rows(index + 1)("Y") * 1000 - + Data.grossAreaPoints.Rows(3)("Y") * 1000 - (sideSquareValues(2) + sideSquareValues(1)) + + Draw_Grating.sideSquareMesLine(mesName)(1) = Data.grossAreaPoints.Rows(3)("GUI Y") - (sideSquareValues(2) + sideSquareValues(1)) / Data.scaleDiff + + Draw_Grating.measureLabels(mesName)(2) = (Draw_Grating.sideSquareMesLine(mesName)(1) + Draw_Grating.sideSquareMesLine(mesName)(3)) / 2 - 6 + + End If + End If + End If + Next + + For i = 2 To Data.pointsMeasurements.Count - 1 + Dim mesName As String = Data.pointsMeasurements.Keys(i) + If mesName.Split("_")(0) <> "SS1" AndAlso index + 1 < Data.pointsMeasurements(mesName)(0) Then + Data.pointsMeasurements(mesName)(0) = Data.pointsMeasurements(mesName)(0) + 4 + Data.pointsMeasurements(mesName)(1) = Data.pointsMeasurements(mesName)(1) + 4 + ElseIf mesName.Split("_")(0) = "SS1" AndAlso index + 2 <= Data.pointsMeasurements(mesName)(1) Then + Data.pointsMeasurements(mesName)(1) = Data.pointsMeasurements(mesName)(1) + 4 + End If + Next + + Dim mesNum As Integer = Data.pointsMeasurements.Count - 1 + + Dim pointRow1 As DataRow = Data.gratingPoints.NewRow + Dim pointRow2 As DataRow = Data.gratingPoints.NewRow + Dim pointRow3 As DataRow = Data.gratingPoints.NewRow + Dim pointRow4 As DataRow = Data.gratingPoints.NewRow + + pointRow1("NAME") = "CS" & numOfSideRectangles & "_" & 1 + pointRow1("QUADRANT") = 1 + pointRow1("RECESS OK") = False + + pointRow2("NAME") = "CS" & numOfSideRectangles & "_" & 2 + pointRow2("QUADRANT") = 1 + pointRow2("RECESS OK") = False + + pointRow3("NAME") = "CS" & numOfSideRectangles & "_" & 3 + pointRow3("QUADRANT") = 1 + pointRow3("RECESS OK") = False + + pointRow4("NAME") = "CS" & numOfSideRectangles & "_" & 4 + pointRow4("QUADRANT") = 1 + pointRow4("RECESS OK") = False + If sidePressed = 1 Then + ' Add the new points + pointRow1("X") = Data.grossAreaPoints.Rows(0)("X") + sideSquareValues(2) / 1000 + pointRow1("Y") = Data.grossAreaPoints.Rows(0)("Y") + pointRow1("GUI X") = Data.grossAreaPoints.Rows(0)("GUI X") + sideSquareValues(2) / Data.scaleDiff + pointRow1("GUI Y") = Data.grossAreaPoints.Rows(0)("GUI Y") + + pointRow2("X") = Data.grossAreaPoints.Rows(0)("X") + sideSquareValues(2) / 1000 + pointRow2("Y") = Data.grossAreaPoints.Rows(0)("Y") - sideSquareValues(1) / 1000 + pointRow2("GUI X") = Data.grossAreaPoints.Rows(0)("GUI X") + sideSquareValues(2) / Data.scaleDiff + pointRow2("GUI Y") = Data.grossAreaPoints.Rows(0)("GUI Y") + sideSquareValues(1) / Data.scaleDiff + + pointRow3("X") = Data.grossAreaPoints.Rows(0)("X") + (sideSquareValues(2) + sideSquareValues(0)) / 1000 + pointRow3("Y") = Data.grossAreaPoints.Rows(0)("Y") - sideSquareValues(1) / 1000 + pointRow3("GUI X") = Data.grossAreaPoints.Rows(0)("GUI X") + (sideSquareValues(2) + sideSquareValues(0)) / Data.scaleDiff + pointRow3("GUI Y") = Data.grossAreaPoints.Rows(0)("GUI Y") + sideSquareValues(1) / Data.scaleDiff + + pointRow4("X") = Data.grossAreaPoints.Rows(0)("X") + (sideSquareValues(2) + sideSquareValues(0)) / 1000 + pointRow4("Y") = Data.grossAreaPoints.Rows(0)("Y") + pointRow4("GUI X") = Data.grossAreaPoints.Rows(0)("GUI X") + (sideSquareValues(2) + sideSquareValues(0)) / Data.scaleDiff + pointRow4("GUI Y") = Data.grossAreaPoints.Rows(0)("GUI Y") + + ' Update outer measuements (SW) + Data.pointsMeasurements("Lmes")(1) = Data.pointsMeasurements("Lmes")(1) + 4 + Data.pointsMeasurements("Wmes")(0) = Data.pointsMeasurements("Wmes")(0) + 4 + Data.pointsMeasurements("Wmes")(1) = Data.pointsMeasurements("Wmes")(1) + 4 + + ' Add recess measuements (SW) + Data.pointsMeasurements.Add("SS1_" & mesNum, {sidePoints(0) + 1, index + 2, 1}) + Data.pointsMeasurements.Add("SS_" & mesNum + 1, {index + 2, index + 5, 1}) + Data.pointsMeasurements.Add("SS_" & mesNum + 2, {index + 2, index + 3, 4}) + + ' Add support line data for sidesquare measurement + Draw_Grating.sideSquareMesLine.Add("SS1_" & mesNum, {Data.gratingPoints.Rows(index)("GUI X"), + Data.grossAreaPoints.Rows(0)("GUI Y") - 15, + Data.grossAreaPoints.Rows(0)("GUI X") + sideSquareValues(2) / Data.scaleDiff, + Data.grossAreaPoints.Rows(0)("GUI Y") - 15}) + + ' Add recess measurments (GUI) + Draw_Grating.measureLabels.Add("SS1_" & mesNum, {CInt(GUI.Controls("Off_TextBox").Text) - (Data.gratingPoints.Rows(index)("X") * 1000 + Data.gratingL / 2), + (Data.gratingPoints.Rows(index)("GUI X") + Data.grossAreaPoints.Rows(0)("GUI X") + sideSquareValues(2) / Data.scaleDiff) / 2 - 8, + Data.grossAreaPoints.Rows(0)("GUI Y") - 15 - 12 - 3, + 1}) '15 är linjen, 12 är textens höjd, 3 är lite extra + Draw_Grating.measureLabels.Add("SS_" & mesNum + 1, {CInt(GUI.Controls("X_TextBox").Text), + Data.grossAreaPoints.Rows(0)("GUI X") + sideSquareValues(2) / (Data.scaleDiff) + CInt(GUI.Controls("X_TextBox").Text) / (2 * Data.scaleDiff) - 8, + Data.grossAreaPoints.Rows(0)("GUI Y") + sideSquareValues(1) / (Data.scaleDiff) + 3, + 1}) + Draw_Grating.measureLabels.Add("SS_" & mesNum + 2, {CInt(GUI.Controls("Y_TextBox").Text), + Data.grossAreaPoints.Rows(0)("GUI X") + sideSquareValues(2) / Data.scaleDiff - 18 - 3, + Data.grossAreaPoints.Rows(0)("GUI Y") + CInt(GUI.Controls("Y_TextBox").Text) / (2 * Data.scaleDiff) - 4, + 1}) + + ElseIf sidePressed = 2 Then + ' Add the new points + pointRow1("X") = Data.grossAreaPoints.Rows(1)("X") + pointRow1("Y") = Data.grossAreaPoints.Rows(1)("Y") - sideSquareValues(2) / 1000 + pointRow1("GUI X") = Data.grossAreaPoints.Rows(1)("GUI X") + pointRow1("GUI Y") = Data.grossAreaPoints.Rows(1)("GUI Y") + sideSquareValues(2) / Data.scaleDiff + + pointRow2("X") = Data.grossAreaPoints.Rows(1)("X") - sideSquareValues(0) / 1000 + pointRow2("Y") = Data.grossAreaPoints.Rows(1)("Y") - sideSquareValues(2) / 1000 + pointRow2("GUI X") = Data.grossAreaPoints.Rows(1)("GUI X") - sideSquareValues(0) / Data.scaleDiff + pointRow2("GUI Y") = Data.grossAreaPoints.Rows(1)("GUI Y") + sideSquareValues(2) / Data.scaleDiff + + pointRow3("X") = Data.grossAreaPoints.Rows(1)("X") - sideSquareValues(0) / 1000 + pointRow3("Y") = Data.grossAreaPoints.Rows(1)("Y") - (sideSquareValues(2) + sideSquareValues(1)) / 1000 + pointRow3("GUI X") = Data.grossAreaPoints.Rows(1)("GUI X") - sideSquareValues(0) / Data.scaleDiff + pointRow3("GUI Y") = Data.grossAreaPoints.Rows(1)("GUI Y") + (sideSquareValues(2) + sideSquareValues(1)) / Data.scaleDiff + + pointRow4("X") = Data.grossAreaPoints.Rows(1)("X") + pointRow4("Y") = Data.grossAreaPoints.Rows(1)("Y") - (sideSquareValues(2) + sideSquareValues(1)) / 1000 + pointRow4("GUI X") = Data.grossAreaPoints.Rows(1)("GUI X") + pointRow4("GUI Y") = Data.grossAreaPoints.Rows(1)("GUI Y") + (sideSquareValues(2) + sideSquareValues(1)) / Data.scaleDiff + + ' Update outer measuements (SW) + Data.pointsMeasurements("Wmes")(1) = Data.pointsMeasurements("Wmes")(1) + 4 + + ' Add recess measuements (SW) + Data.pointsMeasurements.Add("SS1_" & mesNum, {sidePoints(0) + 1, index + 2, 2}) + Data.pointsMeasurements.Add("SS_" & mesNum + 1, {index + 2, index + 5, 2}) + Data.pointsMeasurements.Add("SS_" & mesNum + 2, {index + 2, index + 3, 3}) + + ' Add support line data for sidesquare measurement + Draw_Grating.sideSquareMesLine.Add("SS1_" & mesNum, {Data.grossAreaPoints.Rows(1)("GUI X") + 15, + Data.gratingPoints.Rows(index)("GUI Y"), + Data.grossAreaPoints.Rows(1)("GUI X") + 15, + Data.grossAreaPoints.Rows(1)("GUI Y") + sideSquareValues(2) / Data.scaleDiff}) + + ' Add recess measurments (GUI) + Draw_Grating.measureLabels.Add("SS1_" & mesNum, {CInt(GUI.Controls("Off_TextBox").Text) - (Data.gratingW / 2 - Data.gratingPoints.Rows(index)("Y") * 1000), + Data.grossAreaPoints.Rows(1)("GUI X") + 15 + 3, + (Data.gratingPoints.Rows(index)("GUI Y") + Data.grossAreaPoints.Rows(1)("GUI Y") + sideSquareValues(2) / Data.scaleDiff) / 2 - 4, + 2}) + + Draw_Grating.measureLabels.Add("SS_" & mesNum + 1, {CInt(GUI.Controls("Y_TextBox").Text), + Data.grossAreaPoints.Rows(1)("GUI X") - sideSquareValues(0) / Data.scaleDiff - 18 - 3, + Data.grossAreaPoints.Rows(1)("GUI Y") + (sideSquareValues(2) + sideSquareValues(1) / 2) / Data.scaleDiff - 4, + 2}) + + Draw_Grating.measureLabels.Add("SS_" & mesNum + 2, {CInt(GUI.Controls("X_TextBox").Text), + Data.grossAreaPoints.Rows(1)("GUI X") - sideSquareValues(0) / (2 * Data.scaleDiff) - 8, + Data.grossAreaPoints.Rows(1)("GUI Y") + sideSquareValues(2) / Data.scaleDiff - 15 - 3, + 2}) + + ElseIf sidePressed = 3 Then + ' Add the new points + pointRow1("X") = Data.grossAreaPoints.Rows(2)("X") - sideSquareValues(2) / 1000 + pointRow1("Y") = Data.grossAreaPoints.Rows(2)("Y") + pointRow1("GUI X") = Data.grossAreaPoints.Rows(2)("GUI X") - sideSquareValues(2) / Data.scaleDiff + pointRow1("GUI Y") = Data.grossAreaPoints.Rows(2)("GUI Y") + + pointRow2("X") = Data.grossAreaPoints.Rows(2)("X") - sideSquareValues(2) / 1000 + pointRow2("Y") = Data.grossAreaPoints.Rows(2)("Y") + sideSquareValues(1) / 1000 + pointRow2("GUI X") = Data.grossAreaPoints.Rows(2)("GUI X") - sideSquareValues(2) / Data.scaleDiff + pointRow2("GUI Y") = Data.grossAreaPoints.Rows(2)("GUI Y") - sideSquareValues(1) / Data.scaleDiff + + pointRow3("X") = Data.grossAreaPoints.Rows(2)("X") - (sideSquareValues(2) + sideSquareValues(0)) / 1000 + pointRow3("Y") = Data.grossAreaPoints.Rows(2)("Y") + sideSquareValues(1) / 1000 + pointRow3("GUI X") = Data.grossAreaPoints.Rows(2)("GUI X") - (sideSquareValues(2) + sideSquareValues(0)) / Data.scaleDiff + pointRow3("GUI Y") = Data.grossAreaPoints.Rows(2)("GUI Y") - sideSquareValues(1) / Data.scaleDiff + + pointRow4("X") = Data.grossAreaPoints.Rows(2)("X") - (sideSquareValues(2) + sideSquareValues(0)) / 1000 + pointRow4("Y") = Data.grossAreaPoints.Rows(2)("Y") + pointRow4("GUI X") = Data.grossAreaPoints.Rows(2)("GUI X") - (sideSquareValues(2) + sideSquareValues(0)) / Data.scaleDiff + pointRow4("GUI Y") = Data.grossAreaPoints.Rows(2)("GUI Y") + + ' Add recess measuements (SW) + Data.pointsMeasurements.Add("SS1_" & mesNum, {sidePoints(0) + 1, index + 2, 3}) + Data.pointsMeasurements.Add("SS_" & mesNum + 1, {index + 2, index + 5, 3}) + Data.pointsMeasurements.Add("SS_" & mesNum + 2, {index + 2, index + 3, 4}) + + ' Add support line data for sidesquare measurement + Draw_Grating.sideSquareMesLine.Add("SS1_" & mesNum, {Data.gratingPoints.Rows(index)("GUI X"), + Data.grossAreaPoints.Rows(2)("GUI Y") + 15, + Data.grossAreaPoints.Rows(2)("GUI X") - sideSquareValues(2) / Data.scaleDiff, + Data.grossAreaPoints.Rows(2)("GUI Y") + 15}) + + ' Add recess measurments (GUI) + Draw_Grating.measureLabels.Add("SS1_" & mesNum, {CInt(GUI.Controls("Off_TextBox").Text) - (Data.gratingL / 2 - Data.gratingPoints.Rows(index)("X") * 1000), + (Data.gratingPoints.Rows(index)("GUI X") + Data.grossAreaPoints.Rows(2)("GUI X") - sideSquareValues(2) / Data.scaleDiff) / 2 - 8, + Data.grossAreaPoints.Rows(2)("GUI Y") + 15 + 3, + 3}) '15 är linjen, 12 är textens höjd, 3 är lite extra + Draw_Grating.measureLabels.Add("SS_" & mesNum + 1, {CInt(GUI.Controls("X_TextBox").Text), + Data.grossAreaPoints.Rows(2)("GUI X") - sideSquareValues(2) / (Data.scaleDiff) - CInt(GUI.Controls("X_TextBox").Text) / (2 * Data.scaleDiff) - 8, + Data.grossAreaPoints.Rows(2)("GUI Y") - sideSquareValues(1) / (Data.scaleDiff) - 12 - 3, + 3}) + Draw_Grating.measureLabels.Add("SS_" & mesNum + 2, {CInt(GUI.Controls("Y_TextBox").Text), + Data.grossAreaPoints.Rows(2)("GUI X") - sideSquareValues(2) / Data.scaleDiff + 3, + Data.grossAreaPoints.Rows(2)("GUI Y") - CInt(GUI.Controls("Y_TextBox").Text) / (2 * Data.scaleDiff) - 4, + 3}) + + Else + ' Add the new points + pointRow1("X") = Data.grossAreaPoints.Rows(3)("X") + pointRow1("Y") = Data.grossAreaPoints.Rows(3)("Y") + sideSquareValues(2) / 1000 + pointRow1("GUI X") = Data.grossAreaPoints.Rows(3)("GUI X") + pointRow1("GUI Y") = Data.grossAreaPoints.Rows(3)("GUI Y") - sideSquareValues(2) / Data.scaleDiff + + pointRow2("X") = Data.grossAreaPoints.Rows(3)("X") + sideSquareValues(0) / 1000 + pointRow2("Y") = Data.grossAreaPoints.Rows(3)("Y") + sideSquareValues(2) / 1000 + pointRow2("GUI X") = Data.grossAreaPoints.Rows(3)("GUI X") + sideSquareValues(0) / Data.scaleDiff + pointRow2("GUI Y") = Data.grossAreaPoints.Rows(3)("GUI Y") - sideSquareValues(2) / Data.scaleDiff + + pointRow3("X") = Data.grossAreaPoints.Rows(3)("X") + sideSquareValues(0) / 1000 + pointRow3("Y") = Data.grossAreaPoints.Rows(3)("Y") + (sideSquareValues(2) + sideSquareValues(1)) / 1000 + pointRow3("GUI X") = Data.grossAreaPoints.Rows(3)("GUI X") + sideSquareValues(0) / Data.scaleDiff + pointRow3("GUI Y") = Data.grossAreaPoints.Rows(3)("GUI Y") - (sideSquareValues(2) + sideSquareValues(1)) / Data.scaleDiff + + pointRow4("X") = Data.grossAreaPoints.Rows(3)("X") + pointRow4("Y") = Data.grossAreaPoints.Rows(3)("Y") + (sideSquareValues(2) + sideSquareValues(1)) / 1000 + pointRow4("GUI X") = Data.grossAreaPoints.Rows(3)("GUI X") + pointRow4("GUI Y") = Data.grossAreaPoints.Rows(3)("GUI Y") - (sideSquareValues(2) + sideSquareValues(1)) / Data.scaleDiff + + ' Add recess measuements (SW) + Data.pointsMeasurements.Add("SS1_" & mesNum, {sidePoints(0) + 1, index + 2, 4}) + Data.pointsMeasurements.Add("SS_" & mesNum + 1, {index + 2, index + 5, 4}) + Data.pointsMeasurements.Add("SS_" & mesNum + 2, {index + 2, index + 3, 3}) + + ' Add support line data for sidesquare measurement + Draw_Grating.sideSquareMesLine.Add("SS1_" & mesNum, {Data.grossAreaPoints.Rows(3)("GUI X") - 15, + Data.gratingPoints.Rows(index)("GUI Y"), + Data.grossAreaPoints.Rows(3)("GUI X") - 15, + Data.grossAreaPoints.Rows(3)("GUI Y") - sideSquareValues(2) / Data.scaleDiff}) + + ' Add recess measurments (GUI) + Draw_Grating.measureLabels.Add("SS1_" & mesNum, {CInt(GUI.Controls("Off_TextBox").Text) - (Data.gratingW / 2 + Data.gratingPoints.Rows(index)("Y") * 1000), + Data.grossAreaPoints.Rows(3)("GUI X") - 15 - 18 - 3, + (Data.gratingPoints.Rows(index)("GUI Y") + Data.grossAreaPoints.Rows(3)("GUI Y") - sideSquareValues(2) / Data.scaleDiff) / 2 - 4, + 4}) + + Draw_Grating.measureLabels.Add("SS_" & mesNum + 1, {CInt(GUI.Controls("Y_TextBox").Text), + Data.grossAreaPoints.Rows(3)("GUI X") + sideSquareValues(0) / Data.scaleDiff + 3, + Data.grossAreaPoints.Rows(3)("GUI Y") - (sideSquareValues(2) + sideSquareValues(1) / 2) / Data.scaleDiff - 4, + 4}) + + Draw_Grating.measureLabels.Add("SS_" & mesNum + 2, {CInt(GUI.Controls("X_TextBox").Text), + Data.grossAreaPoints.Rows(3)("GUI X") + sideSquareValues(0) / (2 * Data.scaleDiff) - 8, + Data.grossAreaPoints.Rows(3)("GUI Y") - sideSquareValues(2) / Data.scaleDiff + 3, + 4}) + End If + + Data.gratingPoints.Rows.InsertAt(pointRow1, index + 1) + Data.gratingPoints.Rows.InsertAt(pointRow2, index + 2) + Data.gratingPoints.Rows.InsertAt(pointRow3, index + 3) + Data.gratingPoints.Rows.InsertAt(pointRow4, index + 4) + + numOfSideRectangles += 1 + + 'Redraw grating + GUI.DrawingPanel.Refresh() + + RemoveHandler GUI.Controls("X_TextBox").TextChanged, AddressOf FunctionTextSide_Changed + RemoveHandler GUI.Controls("X_TextBox").KeyPress, AddressOf FunctionText_KeyPress + GUI.Controls.RemoveByKey("X_TextBox") + + RemoveHandler GUI.Controls("Y_TextBox").TextChanged, AddressOf FunctionTextSide_Changed + RemoveHandler GUI.Controls("Y_TextBox").KeyPress, AddressOf FunctionText_KeyPress + GUI.Controls.RemoveByKey("Y_TextBox") + + RemoveHandler GUI.Controls("Off_TextBox").TextChanged, AddressOf FunctionTextSide_Changed + RemoveHandler GUI.Controls("Off_TextBox").KeyPress, AddressOf FunctionText_KeyPress + GUI.Controls.RemoveByKey("Off_TextBox") + + GUI.Controls.RemoveByKey("X_Label") + GUI.Controls.RemoveByKey("Y_Label") + GUI.Controls.RemoveByKey("Off_Label") + + GUI.Controls("AngleButton").Enabled = True + GUI.Controls("Button_Square").Enabled = True + GUI.Controls("Button_SquareSide").Enabled = True + End Sub +End Class diff --git a/Wardrobe/SW_Drawing_Gratings.vb b/Wardrobe/SolidWorks/Drawing.vb similarity index 85% rename from Wardrobe/SW_Drawing_Gratings.vb rename to Wardrobe/SolidWorks/Drawing.vb index adb0d88..0ec3ae0 100644 --- a/Wardrobe/SW_Drawing_Gratings.vb +++ b/Wardrobe/SolidWorks/Drawing.vb @@ -1,10 +1,9 @@ -Imports XCCLibrary -Imports SldWorks -Public Class SW_Drawing_Gratings +Imports SldWorks +Public Class Drawing Private Shared sideCounter As Integer() Public Shared Sub CreateDrawing() - Dim pointTable As New DataTable - pointTable = GUI_Gratings_Data.Create_PointTable() + Dim pointTable As DataTable + pointTable = Data.gratingPoints Dim gratingHeight As Decimal = 0.025 ' Behövs variabel Dim swApp As SldWorks.SldWorks @@ -108,8 +107,8 @@ Public Class SW_Drawing_Gratings myView = iDrawing.CreateDrawViewFromModelView3(GUI.filepath & "\Temp\TESTPART1.SLDPRT", "*Front", swSheetWidth / 2, swSheetHeight / 2, 0) 'Dim viewScale = myView.ScaleDecimal() Dim viewScale As Double - Dim lengthForDrawing As Integer = GUI_Gratings_Data.gratingMaxL - Dim widthForDrawing As Integer = GUI_Gratings_Data.gratingMaxW + Dim lengthForDrawing As Integer = Data.gratingL + Dim widthForDrawing As Integer = Data.gratingW If lengthForDrawing < widthForDrawing * 3 Then 'W styr If widthForDrawing < 100 Then @@ -150,13 +149,13 @@ Public Class SW_Drawing_Gratings Dim Y_Mid = (OutLine(3) - OutLine(1)) / 2 + OutLine(1) - For i = 2 To GUI_Functions.pointsMeasurements.Count - 1 - Dim mesName As String = GUI_Functions.pointsMeasurements.Keys(i) - Add_Dimensions(GUI_Functions.pointsMeasurements(mesName), CompName, myView, iDrawing, swExtensions, OutLine, viewScale, X_Mid, Y_Mid) + For i = 2 To Data.pointsMeasurements.Count - 1 + Dim mesName As String = Data.pointsMeasurements.Keys(i) + Add_Dimensions(Data.pointsMeasurements(mesName), CompName, myView, iDrawing, swExtensions, OutLine, viewScale, X_Mid, Y_Mid) Next - Add_Dimensions(GUI_Functions.pointsMeasurements("Lmes"), CompName, myView, iDrawing, swExtensions, OutLine, viewScale, X_Mid, Y_Mid) - Add_Dimensions(GUI_Functions.pointsMeasurements("Wmes"), CompName, myView, iDrawing, swExtensions, OutLine, viewScale, X_Mid, Y_Mid) + Add_Dimensions(Data.pointsMeasurements("Lmes"), CompName, myView, iDrawing, swExtensions, OutLine, viewScale, X_Mid, Y_Mid) + Add_Dimensions(Data.pointsMeasurements("Wmes"), CompName, myView, iDrawing, swExtensions, OutLine, viewScale, X_Mid, Y_Mid) Dim myView2 As View myView2 = iDrawing.CreateDrawViewFromModelView3(GUI.filepath & "\Temp\TESTPART1.SLDPRT", "*Bottom", swSheetWidth / 2, OutLine(3) + sideCounter(0) * 0.01 + 0.03, 0) myView2.ScaleDecimal() = viewScale @@ -200,8 +199,10 @@ Public Class SW_Drawing_Gratings Dim mesOffset = 0.01 If points(2) = 1 OrElse points(2) = 3 Then - Dim point1 As Decimal = GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(points(0) - 1))(2) - Dim point2 As Decimal = GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(points(1) - 1))(2) + 'Dim point1 As Decimal = Draw_Grating.points(Draw_Grating.pointsOrder(points(0) - 1))(2) + Dim point1 As Integer = Data.gratingPoints.Rows(points(0) - 1)("X") + 'Dim point2 As Decimal = Draw_Grating.points(Draw_Grating.pointsOrder(points(1) - 1))(2) + Dim point2 As Integer = Data.gratingPoints.Rows(points(1) - 1)("X") Dim xPos As Decimal If Math.Abs(point1) > Math.Abs(point2) Then @@ -216,8 +217,10 @@ Public Class SW_Drawing_Gratings measurement = iDrawing.AddHorizontalDimension2(X_Mid + xPos * viewScale, OutLine(1) - 0.005 - mesOffset * sideCounter(2), 0) End If Else - Dim point1 As Decimal = GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(points(0) - 1))(3) - Dim point2 As Decimal = GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(points(1) - 1))(3) + 'Dim point1 As Decimal = Draw_Grating.points(Draw_Grating.pointsOrder(points(0) - 1))(3) + Dim point1 As Integer = Data.gratingPoints.Rows(points(0) - 1)("Y") + 'Dim point2 As Decimal = Draw_Grating.points(Draw_Grating.pointsOrder(points(1) - 1))(3) + Dim point2 As Integer = Data.gratingPoints.Rows(points(1) - 1)("Y") Dim yPos As Decimal If Math.Abs(point1) > Math.Abs(point2) Then @@ -240,5 +243,4 @@ Public Class SW_Drawing_Gratings measurement.CenterText = True measurement.SetPrecision3(0, 0, 0, 0) End Sub - End Class diff --git a/Wardrobe/SW_HLCt_Gratings.vb b/Wardrobe/SolidWorks/Model_3D.vb similarity index 91% rename from Wardrobe/SW_HLCt_Gratings.vb rename to Wardrobe/SolidWorks/Model_3D.vb index 6e27b8a..063fa0e 100644 --- a/Wardrobe/SW_HLCt_Gratings.vb +++ b/Wardrobe/SolidWorks/Model_3D.vb @@ -1,9 +1,8 @@ Imports XCCLibrary -Imports SldWorks -Public Class SW_HLCt_Gratings +Public Class Model_3D Public Shared Sub BuildGrating() Dim exportTable As DataTable - exportTable = GUI_Gratings_Data.Create_ExportTable() + exportTable = User_Input.Create_ExportTable() XCCBaseClass.newDesign() ExternalClass.PopulateTamplateXMLGroup() @@ -28,7 +27,7 @@ Public Class SW_HLCt_Gratings 'Instantiate recess rectangle parentID = inst_ - For Each recessDR As DataRow In GUI_Functions.recessData.Rows + For Each recessDR As DataRow In Data.recessData.Rows Inst_Recesses(parentID, gratingParameters, recessDR) Next @@ -57,23 +56,22 @@ Public Class SW_HLCt_Gratings End If Dim squareL As Integer = recessDR("LENGTH") + gratingParameters("LOADBAR_THICKNESS") Dim squareW As Integer = recessDR("WIDTH") + gratingParameters("LOADBAR_THICKNESS") - ExternalClass.modify_parameter_value("DP_LENGTH", inst_, squareL) + ExternalClass.modify_parameter_value("DP_LENGTH", inst_, squareL + gratingParameters("LOADBAR_THICKNESS")) ExternalClass.modify_parameter_value("DP_WIDTH", inst_, squareW) ExternalClass.modify_parameter_value("DP_EDGEBAR_HEIGHT", inst_, gratingParameters("LOADBAR_HEIGHT")) ExternalClass.modify_parameter_value("DP_EDGEBAR_THICKNESS", inst_, gratingParameters("LOADBAR_THICKNESS")) - If recessDR("CORNER") = 1 Then - ExternalClass.modify_parameter_value("DP_OFFSET_W", inst_, gratingParameters("WIDTH") - squareW - gratingParameters("LOADBAR_THICKNESS")) + ExternalClass.modify_parameter_value("DP_OFFSET_W", inst_, gratingParameters("WIDTH") - squareW) ExternalClass.modify_parameter_value("DP_OFFSET_L", inst_, 0) 'Position - ExternalClass.modify_parameter_value("DP_V_EDGEBAR_POS", inst_, squareL - gratingParameters("LOADBAR_THICKNESS")) + ExternalClass.modify_parameter_value("DP_V_EDGEBAR_POS", inst_, squareL) ExternalClass.modify_parameter_value("DP_V_EDGEBAR_BOTTOM", inst_, gratingParameters("LOADBAR_THICKNESS")) ExternalClass.modify_parameter_value("DP_H_EDGEBAR_POS", inst_, 0) ElseIf recessDR("CORNER") = 2 Then - ExternalClass.modify_parameter_value("DP_OFFSET_W", inst_, gratingParameters("WIDTH") - squareW - gratingParameters("LOADBAR_THICKNESS")) + ExternalClass.modify_parameter_value("DP_OFFSET_W", inst_, gratingParameters("WIDTH") - squareW) ExternalClass.modify_parameter_value("DP_OFFSET_L", inst_, gratingParameters("LENGTH") - squareL - gratingParameters("LOADBAR_THICKNESS")) 'Position @@ -94,7 +92,7 @@ Public Class SW_HLCt_Gratings ExternalClass.modify_parameter_value("DP_OFFSET_L", inst_, 0) 'Position - ExternalClass.modify_parameter_value("DP_V_EDGEBAR_POS", inst_, squareL - gratingParameters("LOADBAR_THICKNESS")) + ExternalClass.modify_parameter_value("DP_V_EDGEBAR_POS", inst_, squareL) ExternalClass.modify_parameter_value("DP_V_EDGEBAR_BOTTOM", inst_, 0) ExternalClass.modify_parameter_value("DP_H_EDGEBAR_POS", inst_, squareW - gratingParameters("LOADBAR_THICKNESS")) End If @@ -103,4 +101,5 @@ Public Class SW_HLCt_Gratings '??? End If End Sub + End Class diff --git a/Wardrobe/Wardrobe.vbproj b/Wardrobe/Wardrobe.vbproj index adef9c9..5db3a75 100644 --- a/Wardrobe/Wardrobe.vbproj +++ b/Wardrobe/Wardrobe.vbproj @@ -74,14 +74,15 @@ - - - - - + + + + + + Form - + GUI.vb Form @@ -101,11 +102,14 @@ Settings.settings True - - + + + + + - + GUI.vb