From 9cd8e995adbc602a17eb2e7ec329de8e57dd0d33 Mon Sep 17 00:00:00 2001 From: Anton Date: Mon, 22 Feb 2021 10:32:29 +0100 Subject: [PATCH] Drawings fixed and measurments rearanged --- Wardrobe/GUI/GUI.vb | 4 +- Wardrobe/Recess Functions/Side_Rectangle.vb | 9 +- Wardrobe/SolidWorks/Drawing.vb | 112 +++++++++++++------- 3 files changed, 84 insertions(+), 41 deletions(-) diff --git a/Wardrobe/GUI/GUI.vb b/Wardrobe/GUI/GUI.vb index 7f25166..4331f88 100644 --- a/Wardrobe/GUI/GUI.vb +++ b/Wardrobe/GUI/GUI.vb @@ -137,8 +137,8 @@ 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 - Model_3D.BuildGrating() - 'Drawing.CreateDrawing() + 'Model_3D.BuildGrating() + Drawing.CreateDrawing() End Sub End Class \ No newline at end of file diff --git a/Wardrobe/Recess Functions/Side_Rectangle.vb b/Wardrobe/Recess Functions/Side_Rectangle.vb index 0819669..b6c4325 100644 --- a/Wardrobe/Recess Functions/Side_Rectangle.vb +++ b/Wardrobe/Recess Functions/Side_Rectangle.vb @@ -251,8 +251,13 @@ 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 + ElseIf mesName.Split("_")(0) = "SS1" Then + If index + 2 <= Data.pointsMeasurements(mesName)(0) Then + Data.pointsMeasurements(mesName)(0) = Data.pointsMeasurements(mesName)(0) + 4 + Data.pointsMeasurements(mesName)(1) = Data.pointsMeasurements(mesName)(1) + 4 + ElseIf index + 2 <= Data.pointsMeasurements(mesName)(1) Then + Data.pointsMeasurements(mesName)(1) = Data.pointsMeasurements(mesName)(1) + 4 + End If End If Next diff --git a/Wardrobe/SolidWorks/Drawing.vb b/Wardrobe/SolidWorks/Drawing.vb index 0ec3ae0..37a26a5 100644 --- a/Wardrobe/SolidWorks/Drawing.vb +++ b/Wardrobe/SolidWorks/Drawing.vb @@ -103,40 +103,47 @@ Public Class Drawing swSheet.SetTemplateName(GUI.filepath & "\X2021\Weland ritningsmallar\A3 Part.slddrt") swSheet.ReloadTemplate(True) + Dim myView As View myView = iDrawing.CreateDrawViewFromModelView3(GUI.filepath & "\Temp\TESTPART1.SLDPRT", "*Front", swSheetWidth / 2, swSheetHeight / 2, 0) - 'Dim viewScale = myView.ScaleDecimal() - Dim viewScale As Double + myView.UseSheetScale() = True + Dim viewScale1, viewScale2 As Double Dim lengthForDrawing As Integer = Data.gratingL Dim widthForDrawing As Integer = Data.gratingW If lengthForDrawing < widthForDrawing * 3 Then 'W styr If widthForDrawing < 100 Then - viewScale = 1 - + viewScale1 = 1 + viewScale2 = 1 ElseIf widthForDrawing < 200 Then - viewScale = 0.5 - + viewScale1 = 1 + viewScale2 = 2 ElseIf widthForDrawing < 500 Then - viewScale = 0.2 - + viewScale1 = 1 + viewScale2 = 5 Else - viewScale = 0.1 + viewScale1 = 1 + viewScale2 = 10 End If Else If lengthForDrawing < 300 Then - viewScale = 1 + viewScale1 = 1 + viewScale2 = 1 ElseIf lengthForDrawing < 600 Then - viewScale = 0.5 + viewScale1 = 1 + viewScale2 = 2 ElseIf lengthForDrawing < 1500 Then - viewScale = 0.2 + viewScale1 = 1 + viewScale2 = 5 ElseIf lengthForDrawing < 3000 Then - viewScale = 0.1 + viewScale1 = 1 + viewScale2 = 10 Else - viewScale = 0.05 + viewScale1 = 1 + viewScale2 = 20 End If End If - myView.ScaleDecimal() = viewScale + swSheet.SetScale(viewScale1, viewScale2, False, False) Dim swExtensions As SldWorks.ModelDocExtension swExtensions = iDrawing.Extension @@ -144,21 +151,56 @@ Public Class Drawing Dim CompName = RootComp.Name + Dim sortedMeasurments As New Dictionary(Of String, Integer()) + Dim numOfMes As Integer = Data.pointsMeasurements.Count + + sortedMeasurments.Add("Lmes", Data.pointsMeasurements("Lmes")) + Data.pointsMeasurements.Remove("Lmes") + sortedMeasurments.Add("Wmes", Data.pointsMeasurements("Wmes")) + Data.pointsMeasurements.Remove("Wmes") + For i = 2 To numOfMes - 1 + Dim mesName As String = Data.pointsMeasurements.Keys(0) + Dim lowestValue As Double = 100000 + + For j = 0 To Data.pointsMeasurements.Count - 1 + Dim measureName As String = Data.pointsMeasurements.Keys(j) + Dim measureDist As Double + If Data.pointsMeasurements(measureName)(2) = 1 OrElse Data.pointsMeasurements(measureName)(2) = 3 Then + Dim x1 As Double = Data.gratingPoints.Rows(Data.pointsMeasurements(measureName)(0) - 1)("X") + Dim x2 As Double = Data.gratingPoints.Rows(Data.pointsMeasurements(measureName)(1) - 1)("X") + measureDist = Math.Abs(x1 - x2) + Else + Dim y1 As Double = Data.gratingPoints.Rows(Data.pointsMeasurements(measureName)(0) - 1)("Y") + Dim y2 As Double = Data.gratingPoints.Rows(Data.pointsMeasurements(measureName)(1) - 1)("Y") + measureDist = Math.Abs(y1 - y2) + End If + + If measureDist < lowestValue Then + lowestValue = measureDist + mesName = measureName + End If + Next + + sortedMeasurments.Add(mesName, Data.pointsMeasurements(mesName)) + Data.pointsMeasurements.Remove(mesName) + Next + + Dim OutLine = myView.GetOutline Dim X_Mid = (OutLine(2) - OutLine(0)) / 2 + OutLine(0) Dim Y_Mid = (OutLine(3) - OutLine(1)) / 2 + OutLine(1) + Dim scaleDecimal As Double = viewScale1 / viewScale2 - - 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) + For i = 2 To sortedMeasurments.Count - 1 + Dim mesName As String = sortedMeasurments.Keys(i) + Add_Dimensions(sortedMeasurments(mesName), CompName, myView, iDrawing, swExtensions, OutLine, scaleDecimal, X_Mid, Y_Mid) Next - 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) + Add_Dimensions(sortedMeasurments("Lmes"), CompName, myView, iDrawing, swExtensions, OutLine, scaleDecimal, X_Mid, Y_Mid) + Add_Dimensions(sortedMeasurments("Wmes"), CompName, myView, iDrawing, swExtensions, OutLine, scaleDecimal, 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 + myView2.UseSheetScale() = True Dim OutLine2 = myView2.GetOutline @@ -186,7 +228,7 @@ Public Class Drawing End Sub Private Shared Sub Add_Dimensions(points() As Integer, CompName As String, myView As View, iDrawing As DrawingDoc, swExtensions As SldWorks.ModelDocExtension _ - , OutLine() As Double, viewScale As Double, X_Mid As Double, Y_Mid As Double) + , OutLine() As Double, scaleDecimal As Double, X_Mid As Double, Y_Mid As Double) Dim measurement As IDisplayDimension Dim point1NameSW As String = "Point" & points(0) & "@Sketch1@" & CompName & "@" & myView.GetName2 @@ -199,12 +241,10 @@ Public Class Drawing Dim mesOffset = 0.01 If points(2) = 1 OrElse points(2) = 3 Then - '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 point1 As Double = Data.gratingPoints.Rows(points(0) - 1)("X") + Dim point2 As Double = Data.gratingPoints.Rows(points(1) - 1)("X") - Dim xPos As Decimal + Dim xPos As Double If Math.Abs(point1) > Math.Abs(point2) Then xPos = point2 + (point1 - point2) / 2 Else @@ -212,17 +252,15 @@ Public Class Drawing End If If points(2) = 1 Then - measurement = iDrawing.AddHorizontalDimension2(X_Mid + xPos * viewScale, OutLine(3) + 0.005 + mesOffset * sideCounter(0), 0) + measurement = iDrawing.AddHorizontalDimension2(X_Mid + xPos * scaleDecimal, OutLine(3) + 0.005 + mesOffset * sideCounter(0), 0) Else - measurement = iDrawing.AddHorizontalDimension2(X_Mid + xPos * viewScale, OutLine(1) - 0.005 - mesOffset * sideCounter(2), 0) + measurement = iDrawing.AddHorizontalDimension2(X_Mid + xPos * scaleDecimal, OutLine(1) - 0.005 - mesOffset * sideCounter(2), 0) End If Else - '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 point1 As Double = Data.gratingPoints.Rows(points(0) - 1)("Y") + Dim point2 As Double = Data.gratingPoints.Rows(points(1) - 1)("Y") - Dim yPos As Decimal + Dim yPos As Double If Math.Abs(point1) > Math.Abs(point2) Then yPos = point2 + (point1 - point2) / 2 Else @@ -230,9 +268,9 @@ Public Class Drawing End If If points(2) = 2 Then - measurement = iDrawing.AddVerticalDimension2(OutLine(2) + 0.005 + mesOffset * sideCounter(1), Y_Mid + yPos * viewScale, 0) + measurement = iDrawing.AddVerticalDimension2(OutLine(2) + 0.005 + mesOffset * sideCounter(1), Y_Mid + yPos * scaleDecimal, 0) Else - measurement = iDrawing.AddVerticalDimension2(OutLine(0) - 0.005 - mesOffset * sideCounter(3), Y_Mid + yPos * viewScale, 0) + measurement = iDrawing.AddVerticalDimension2(OutLine(0) - 0.005 - mesOffset * sideCounter(3), Y_Mid + yPos * scaleDecimal, 0) End If End If sideCounter(points(2) - 1) = sideCounter(points(2) - 1) + 1