From 7fb24f6b7350fa96e3eee22a8265a5a1413e67ed Mon Sep 17 00:00:00 2001 From: Anton Date: Mon, 15 Feb 2021 15:32:57 +0100 Subject: [PATCH] Two sides of square recesses done --- Database/Databas.xlsx | Bin 0 -> 52506 bytes Material.csv => Database/Material.csv | 0 Meshes.csv => Database/Meshes.csv | 2 +- Serrated.csv => Database/Serrated.csv | 2 +- Whole Meshes.csv => Database/Whole Meshes.csv | 2 +- HLCt/Parts/~$START.SLDPRT | Bin 6 -> 0 bytes Wardrobe/GUI.vb | 85 ++++------- Wardrobe/GUI_Drawing_Panel.vb | 16 ++- Wardrobe/GUI_Functions.vb | 132 ++++++++++++------ 9 files changed, 132 insertions(+), 107 deletions(-) create mode 100644 Database/Databas.xlsx rename Material.csv => Database/Material.csv (100%) rename Meshes.csv => Database/Meshes.csv (99%) rename Serrated.csv => Database/Serrated.csv (87%) rename Whole Meshes.csv => Database/Whole Meshes.csv (93%) delete mode 100644 HLCt/Parts/~$START.SLDPRT diff --git a/Database/Databas.xlsx b/Database/Databas.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..8998c2ed0e597d0313494d6d411a3adefaa63aa0 GIT binary patch literal 52506 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�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 JQS12e^gpGO>6ZWi literal 0 HcmV?d00001 diff --git a/Material.csv b/Database/Material.csv similarity index 100% rename from Material.csv rename to Database/Material.csv diff --git a/Meshes.csv b/Database/Meshes.csv similarity index 99% rename from Meshes.csv rename to Database/Meshes.csv index 1c6e650..61e018a 100644 --- a/Meshes.csv +++ b/Database/Meshes.csv @@ -1,4 +1,4 @@ -NAME,LB-SPACING,CB-SPACING,LB-HEIGHT,LB-THICKNESS,CB-DIAMETER,TYPE,MATERIAL,SERRATED,WHOLE MESHES +NAME [str],LB-SPACING [int],CB-SPACING [int],LB-HEIGHT [int],LB-THICKNESS [int],CB-DIAMETER [doub],TYPE [str],MATERIAL [str],SERRATED [bool],WHOLE MESHES [str] B9,12,100,20,3,6.5,Pressure Welded,Hot dip galvanized steel,0,B 12 B9,12,100,25,3,6.5,Pressure Welded,Hot dip galvanized steel,0,B 12 B9,12,100,30,3,6.5,Pressure Welded,Hot dip galvanized steel,0,B 12 diff --git a/Serrated.csv b/Database/Serrated.csv similarity index 87% rename from Serrated.csv rename to Database/Serrated.csv index 5cf1614..fcd79c3 100644 --- a/Serrated.csv +++ b/Database/Serrated.csv @@ -1,4 +1,4 @@ -TYPE,MATERIAL +TYPE [str],MATERIAL [str] Pressure Welded,Hot dip galvanized steel Pressure Welded,Stainless Steel (Pickled) Pressure Welded,Stainless Steel (Untreated) diff --git a/Whole Meshes.csv b/Database/Whole Meshes.csv similarity index 93% rename from Whole Meshes.csv rename to Database/Whole Meshes.csv index 349601e..3f3929b 100644 --- a/Whole Meshes.csv +++ b/Database/Whole Meshes.csv @@ -1,4 +1,4 @@ -H 33,H 34,F 25,D 22,N 16,N 17,B 12,I 100,J 41,JN 41,HN 35,A 22,A 33 +H 33 [int],H 34 [int],F 25 [int],D 22 [int],N 16 [int],N 17 [int],B 12 [int],I 100 [int],J 41 [int],JN 41 [int],HN 35 [int],A 22 [int],A 33 [int] 1000,1000,1000,1000,1000,1000,700,1000,1000,1000,1000,1000,1000 966,962,973,972,982,983,685,900,957,955,961,968,957 933,927,949,950,966,965,672,800,914,915,926,946,924 diff --git a/HLCt/Parts/~$START.SLDPRT b/HLCt/Parts/~$START.SLDPRT deleted file mode 100644 index b07f2ee735073c92fc341c66f5066b7db22efc93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6 NcmazjNG(cX000O00t5g6 diff --git a/Wardrobe/GUI.vb b/Wardrobe/GUI.vb index 29ed65d..0a4ecf4 100644 --- a/Wardrobe/GUI.vb +++ b/Wardrobe/GUI.vb @@ -2,8 +2,8 @@ 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" + 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 @@ -29,66 +29,18 @@ Public Class GUI End Sub Private Sub Get_Database() - 'excelWB = excelApp.Workbooks.Open(GUI_Settings.HLCtFolder & "\Databas.xlsx") - - 'For i = 1 To 4 'excelWB.Worksheets.Count - ' Dim activeSheet As Excel.Worksheet - ' activeSheet = excelWB.Sheets(i) - - ' Dim tempDT As New DataTable - - ' Dim numOfColumns As Integer = 0 - ' Dim columnCounter As Integer = 1 - ' Dim rowCounter As Integer - ' Dim rowValue As String - ' Dim longestRow As Integer = 0 - ' Dim columnName As String = activeSheet.Cells(1, columnCounter).Value - ' While columnName <> "" - ' tempDT.Columns.Add(columnName, GetType(String)) - - ' rowCounter = 2 - ' rowValue = activeSheet.Cells(rowCounter, numOfColumns + 1).Value - ' While rowValue <> "" - ' rowCounter = rowCounter + 1 - ' rowValue = activeSheet.Cells(rowCounter, numOfColumns + 1).Value - ' End While - ' If rowCounter > longestRow Then - ' longestRow = rowCounter - ' End If - - ' columnCounter = columnCounter + 1 - ' columnName = activeSheet.Cells(1, columnCounter).Value - ' numOfColumns = numOfColumns + 1 - ' End While - - ' For j = 2 To longestRow - 1 - ' tempDT.Rows.Add() - ' For k = 0 To numOfColumns - 1 - ' tempDT.Rows(tempDT.Rows.Count - 1)(k) = activeSheet.Cells(j, k + 1).Value - ' Next - ' Next - - ' dataBase.Add(activeSheet.Name, tempDT) - - ' System.Runtime.InteropServices.Marshal.ReleaseComObject(activeSheet) - 'Next - - 'excelWB.Close() - 'excelApp.Quit() - 'System.Runtime.InteropServices.Marshal.ReleaseComObject(excelWB) - 'System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp) - '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 & "\Databas.xlsx") + 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 & "\" & wSNames(i - 1), Excel.XlFileFormat.xlCSV) + activeSheet.SaveAs(GUI_Settings.HLCtFolder & "\Database\" & wSNames(i - 1), Excel.XlFileFormat.xlCSV) System.Runtime.InteropServices.Marshal.ReleaseComObject(activeSheet) Next @@ -103,28 +55,43 @@ Public Class GUI 'Read all CSV files to datatables For i = 0 To wSNames.Count - 1 - Dim lines = IO.File.ReadAllLines(GUI_Settings.HLCtFolder & "\" & wSNames(i) & ".csv") + 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) - tempDT.Columns.Add(words(j), GetType(String)) + 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 - tempDT.Rows(tempDT.Rows.Count - 1)(k) = values(k) + 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, @@ -238,7 +205,7 @@ Public Class GUI ' ---------------------------------- 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_HLCt_Gratings.BuildGrating() SW_Drawing_Gratings.CreateDrawing() End Sub diff --git a/Wardrobe/GUI_Drawing_Panel.vb b/Wardrobe/GUI_Drawing_Panel.vb index 49c0575..d666961 100644 --- a/Wardrobe/GUI_Drawing_Panel.vb +++ b/Wardrobe/GUI_Drawing_Panel.vb @@ -193,10 +193,18 @@ Dim mesName As String = sideSquareMesLine.Keys(i) e.Graphics.DrawLine(penMes, sideSquareMesLine(mesName)(0), sideSquareMesLine(mesName)(1), sideSquareMesLine(mesName)(2), sideSquareMesLine(mesName)(3)) - 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) + + 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 diff --git a/Wardrobe/GUI_Functions.vb b/Wardrobe/GUI_Functions.vb index 615ebea..9d27361 100644 --- a/Wardrobe/GUI_Functions.vb +++ b/Wardrobe/GUI_Functions.vb @@ -125,7 +125,7 @@ AddHandler pointButton.Click, AddressOf PointButton_Click End If Next - pointCounter = pointCounter + 1 + pointCounter += 1 End If ElseIf GUI.DrawingPanel.Controls.Count > 2 Then @@ -137,7 +137,7 @@ End If Next - pointCounter = pointCounter - 1 + pointCounter -= 1 End If End Sub @@ -201,7 +201,7 @@ GUI.DrawingPanel.Controls.RemoveAt(2) Next - pointCounter = pointCounter - 1 + pointCounter -= 1 End If End Sub @@ -323,30 +323,48 @@ End If End If - 'pointsMeasurements.Add("SS_" & mesNum, {GUI_Drawing_Panel.pointsOrder.IndexOf(sidePoints(0)) + 1, index + 2, 1}) + For i = 2 To pointsMeasurements.Count - 1 Dim mesName As String = pointsMeasurements.Keys(i) - If mesName.Split("_")(0) = "SS" AndAlso index + 2 = pointsMeasurements(mesName)(1) Then + If 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) - - CInt(GUI.Controls("Off_TextBox").Text) - - (GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(index))(2) * 1000 + GUI_Gratings_Data.gratingMaxL / 2) - - CInt(GUI.Controls("X_TextBox").Text) + 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 + 'FIX + Else + End If - End If + End If Next For i = 2 To pointsMeasurements.Count - 1 Dim mesName As String = pointsMeasurements.Keys(i) - If index + 1 < pointsMeasurements(mesName)(0) Then + 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, @@ -375,19 +393,19 @@ pointsMeasurements("Wmes")(1) = pointsMeasurements("Wmes")(1) + 4 'SideSquare measurements - pointsMeasurements.Add("SS_" & mesNum, {GUI_Drawing_Panel.pointsOrder.IndexOf(sidePoints(0)) + 1, index + 2, 1}) + 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("SS_" & mesNum, {GUI_Drawing_Panel.points(GUI_Drawing_Panel.pointsOrder(index))(0), + 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("SS_" & 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.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 @@ -397,7 +415,7 @@ 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), + GUI_Drawing_Panel.pCon1(1) + CInt(GUI.Controls("Y_TextBox").Text) / (2 * GUI_Drawing_Panel.scaleDiff) - 4, 1}) @@ -426,10 +444,32 @@ pointsMeasurements("Wmes")(1) = pointsMeasurements("Wmes")(1) + 4 'SideSquare measurements - pointsMeasurements.Add("SS_" & mesNum, {GUI_Drawing_Panel.pointsOrder.IndexOf(sidePoints(0)) + 1, index + 2, 2}) + 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.pCon1(0) + (sideSquareValues(2) + sideSquareValues(0)) / (GUI_Drawing_Panel.scaleDiff), @@ -452,7 +492,7 @@ GUI_Drawing_Panel.pCon1(2) + sideSquareValues(2) / 1000, GUI_Drawing_Panel.pCon3(3)}) - pointsMeasurements.Add("SS_" & mesNum, {GUI_Drawing_Panel.pointsOrder.IndexOf(sidePoints(0)) + 1, index + 2, 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}) Else @@ -477,7 +517,7 @@ GUI_Drawing_Panel.pCon1(2), GUI_Drawing_Panel.pCon2(3) - sideSquareValues(2) / 1000}) - pointsMeasurements.Add("SS_" & mesNum, {GUI_Drawing_Panel.pointsOrder.IndexOf(sidePoints(0)) + 1, index + 2, 4}) + 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}) End If @@ -554,33 +594,43 @@ For i = 2 To pointsMeasurements.Count - 1 Dim mesName As String = pointsMeasurements.Keys(i) - 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 + 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 index + 1 = pointsMeasurements(mesName)(1) Then + + 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("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 + + GUI_Drawing_Panel.sideSquareMesLine(mesName)(0) = GUI_Drawing_Panel.sideSquareMesLine(mesName)(0) + d1P End If End If Next