diff --git a/Wardrobe/GUI/Draw_Grating.vb b/Wardrobe/GUI/Draw_Grating.vb index c02d58d..e422829 100644 --- a/Wardrobe/GUI/Draw_Grating.vb +++ b/Wardrobe/GUI/Draw_Grating.vb @@ -270,6 +270,7 @@ Dim dashPen As Pen = New Pen(Color.DarkGray, 1) dashPen.DashPattern = {6, 4} + 'Vertical lines Dim singleLength As Integer = Grating_Fill.minLength / Data.scaleDiff For i = 0 To Grating_Fill.numOfHorizontal - 2 Dim x As Integer @@ -280,6 +281,7 @@ g.DrawLine(dashPen, x, y1, x, y2) Next + 'Horizontal lines Dim singleWidth As Integer = Grating_Fill.maxSingleWidth / Data.scaleDiff For i = 0 To Grating_Fill.numOfVertical - 2 Dim y As Integer diff --git a/Wardrobe/GUI/Individual.vb b/Wardrobe/GUI/Individual.vb index 0b254b1..a996c2a 100644 --- a/Wardrobe/GUI/Individual.vb +++ b/Wardrobe/GUI/Individual.vb @@ -244,10 +244,12 @@ Public Class Individual If AppForm.fillMode Then Grating_Fill.Calculate_Grid() - Model_3D_Fill.BuildGrid() + Multiple_Drawing.Create_Models_For_Drawing() ' Ska flyttas till sist i if satsen + + Multiple_3D.BuildGrid() Else - Model_3D.BuildGrating() - Drawing.Create_Model_For_Drawing() + Individual_3D.BuildGrating() + Individual_Drawing.Create_Model_For_Drawing() End If End Sub diff --git a/Wardrobe/SolidWorks/Model_3D.vb b/Wardrobe/SolidWorks/Individual_3D.vb similarity index 99% rename from Wardrobe/SolidWorks/Model_3D.vb rename to Wardrobe/SolidWorks/Individual_3D.vb index 7968910..34a3336 100644 --- a/Wardrobe/SolidWorks/Model_3D.vb +++ b/Wardrobe/SolidWorks/Individual_3D.vb @@ -1,7 +1,7 @@ Imports XCCLibrary Imports SldWorks -Public Class Model_3D +Public Class Individual_3D Private Shared gratingParameters As DataRow Private Shared designName As String Public Shared partDT As New DataTable diff --git a/Wardrobe/SolidWorks/Drawing.vb b/Wardrobe/SolidWorks/Individual_Drawing.vb similarity index 99% rename from Wardrobe/SolidWorks/Drawing.vb rename to Wardrobe/SolidWorks/Individual_Drawing.vb index 79eced6..2b79ff8 100644 --- a/Wardrobe/SolidWorks/Drawing.vb +++ b/Wardrobe/SolidWorks/Individual_Drawing.vb @@ -1,5 +1,5 @@ Imports SldWorks -Public Class Drawing +Public Class Individual_Drawing Private Shared sideCounter As Integer() Public Shared Sub Create_Model_For_Drawing() diff --git a/Wardrobe/SolidWorks/Individual_Frame_Drawing.vb b/Wardrobe/SolidWorks/Individual_Frame_Drawing.vb index f6e0d13..0f68c46 100644 --- a/Wardrobe/SolidWorks/Individual_Frame_Drawing.vb +++ b/Wardrobe/SolidWorks/Individual_Frame_Drawing.vb @@ -7,7 +7,7 @@ Public Class Individual_Frame_Drawing Dim model As ModelDoc2 Dim assembly As IAssemblyDoc Dim longstatus As Integer - frameComponents = Model_3D.partDT.Select("partType = 'frame_l_straight'") + frameComponents = Individual_3D.partDT.Select("partType = 'frame_l_straight'") For i = 0 To Individual_Frame_3D.cuttingList.Count - 1 model = swApp.NewDocument("C:\ProgramData\SolidWorks\SOLIDWORKS 2020\templates\Assembly.asmdot", 0, 0, 0) diff --git a/Wardrobe/SolidWorks/Model_3D_Fill.vb b/Wardrobe/SolidWorks/Multiple_3D.vb similarity index 99% rename from Wardrobe/SolidWorks/Model_3D_Fill.vb rename to Wardrobe/SolidWorks/Multiple_3D.vb index 2aff091..2ec30d6 100644 --- a/Wardrobe/SolidWorks/Model_3D_Fill.vb +++ b/Wardrobe/SolidWorks/Multiple_3D.vb @@ -1,10 +1,18 @@ Imports XCCLibrary Imports SldWorks -Public Class Model_3D_Fill +Public Class Multiple_3D Private Shared gratingParameters As DataRow Private Shared designName As String Public Shared Sub BuildGrid() + Dim pointTable As DataTable + pointTable = Data.gratingPoints + Dim pointTable1 As DataTable + pointTable1 = Data.grossAreaPoints + + + + Dim exportTable As DataTable exportTable = User_Input.Create_ExportTable() diff --git a/Wardrobe/SolidWorks/Multiple_Drawing.vb b/Wardrobe/SolidWorks/Multiple_Drawing.vb new file mode 100644 index 0000000..a25859f --- /dev/null +++ b/Wardrobe/SolidWorks/Multiple_Drawing.vb @@ -0,0 +1,189 @@ +Imports SldWorks +Public Class Multiple_Drawing + + Public Shared Sub Create_Models_For_Drawing() + Dim gratingsPointsDS As DataSet = Create_GreatingPoints() + + Dim gratingHeight As Decimal = User_Input.gratingHeight / 1000 + + Dim swApp As SldWorks.SldWorks + swApp = CType(System.Runtime.InteropServices.Marshal.GetActiveObject("SldWorks.Application"), SldWorks.SldWorks) + Dim Model As ModelDoc2 + Dim RootPoint(2) As Double + Dim Normal(2) As Double + swApp.UserControl = True + + Dim swSkMgr As SketchManager + Dim longstatus As Integer + Dim boolstatus As Boolean + Dim swModelDocExtension As ModelDocExtension + Dim status As Boolean + Dim swFeatureMgr As FeatureManager + Dim swFeature As Feature + Dim iPart As PartDoc + + Dim numOfGratings As Integer = Grating_Fill.numOfVertical * Grating_Fill.numOfHorizontal + + For i = 0 To numOfGratings - 1 + Model = swApp.NewDocument("C:\ProgramData\SOLIDWORKS\SOLIDWORKS 2020\templates\part.prtdot", 0, 0, 0) + + swSkMgr = Model.SketchManager + swSkMgr.InsertSketch(True) + boolstatus = Model.Extension.SelectByID2("Front Plane", "PLANE", 0, 0, 0, False, 0, Nothing, 0) + Model.ClearSelection2(True) + + For Each DR As DataRow In gratingsPointsDS.Tables(i).Rows + Dim skPoint As SketchPoint + Dim pX = DR("X") + Dim pY = DR("Y") + skPoint = swSkMgr.CreatePoint(pX, pY, 0) + Next + + For Each DR1 As DataRow In gratingsPointsDS.Tables(i).Rows + Dim skLine As SketchLine + Dim rowIndex = gratingsPointsDS.Tables(i).Rows.IndexOf(DR1) + Dim DR2 As DataRow + + Try + DR2 = gratingsPointsDS.Tables(i).Rows(rowIndex + 1) + Catch ex As Exception + DR2 = gratingsPointsDS.Tables(i).Rows(0) + End Try + + Dim pX1 = DR1("X") + Dim pY1 = DR1("Y") + Dim pX2 = DR2("X") + Dim pY2 = DR2("Y") + + skLine = swSkMgr.CreateLine(pX1, pY1, 0, pX2, pY2, 0) + Next + + swSkMgr.InsertSketch(True) + + swModelDocExtension = Model.Extension + status = swModelDocExtension.SelectByID2("Sketch1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0) + + swFeatureMgr = Model.FeatureManager + swFeature = swFeatureMgr.FeatureExtrusion3(True, False, False, 0, 0, gratingHeight, 0, False, False, False, False, 0, 0, False, False, False, False, True, True, True, 0, 0, False) + + + ' MIddle points if needed + + + Model.ClearSelection2(True) + boolstatus = Model.Extension.SelectByID2("Front Plane", "PLANE", 0, 0, 0, False, 0, Nothing, 0) + Model.FeatureManager.InsertRefPlane(8, gratingHeight, 0, 0, 0, 0) + + iPart = swApp.ActiveDoc + Dim newName As String + newName = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\simplified_grating_" & i + 1 & ".SLDPRT" + + + ' Title head data + + + longstatus = iPart.SaveAs3(newName, 0, 0) + swApp.CloseDoc(newName) + Next + + ' --- Assembly --- + Dim assembly As IAssemblyDoc + Model = swApp.NewDocument("C:\ProgramData\SolidWorks\SOLIDWORKS 2020\templates\Assembly.asmdot", 0, 0, 0) + assembly = Model + + Dim compNames(numOfGratings - 1) As String + Dim coordNames(numOfGratings - 1) As String + Dim transMatrix As Object = Nothing + For i = 0 To numOfGratings - 1 + compNames(i) = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\simplified_grating_" & i + 1 & ".SLDPRT" + coordNames(i) = "" + Next + + Dim assemComps As Object + assemComps = assembly.AddComponents3((compNames), (transMatrix), (coordNames)) + + longstatus = Model.SaveAs3(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\simplified_grating_assembly.SLDASM", 0, 0) + End Sub + + Private Shared Function Create_GreatingPoints() + Dim pointsDS As New DataSet + + Dim numOfGratings As Integer = Grating_Fill.numOfVertical * Grating_Fill.numOfHorizontal + + For i = 0 To numOfGratings - 1 + Dim pointsDT As New DataTable + pointsDT.Columns.Add("NAME", GetType(String)) + pointsDT.Columns.Add("TYPE", GetType(String)) + pointsDT.Columns.Add("X", GetType(Double)) + pointsDT.Columns.Add("Y", GetType(Double)) + + ' --- Determine grossArea points ---- + Dim pX(3) As Double + Dim pY(3) As Double + + Dim columnNum As Integer = (i + Grating_Fill.numOfHorizontal) Mod Grating_Fill.numOfHorizontal + If columnNum <> (Grating_Fill.numOfHorizontal - 1) Then + ' Columnn: alla utom sista + pX(0) = Data.grossAreaPoints.Rows(0)("X") + Grating_Fill.minLength * columnNum / 1000 + pX(1) = pX(0) + Grating_Fill.minLength / 1000 + pX(2) = pX(1) + pX(3) = pX(0) + Else + ' Column: sista + pX(0) = Data.grossAreaPoints.Rows(0)("X") + Grating_Fill.minLength * columnNum / 1000 + pX(1) = Data.grossAreaPoints.Rows(1)("X") + pX(2) = pX(1) + pX(3) = pX(0) + End If + + Dim rowNum As Integer = Math.Floor(i / Grating_Fill.numOfHorizontal) + If rowNum < Grating_Fill.numOfVertical - 2 Then + ' Row: alla utom sista och näst sista + pY(0) = Data.grossAreaPoints.Rows(0)("Y") - Grating_Fill.maxSingleWidth * rowNum / 1000 + pY(1) = pY(0) + pY(2) = pY(0) - Grating_Fill.maxSingleWidth / 1000 + pY(3) = pY(2) + ElseIf rowNum < Grating_Fill.numOfVertical - 1 Then + ' Row: Näst sista + pY(0) = Data.grossAreaPoints.Rows(0)("Y") - Grating_Fill.maxSingleWidth * rowNum / 1000 + pY(1) = pY(0) + If Grating_Fill.widthRevNeeded = True Then + pY(2) = pY(0) - Grating_Fill.revWidth / 1000 + Else + pY(2) = pY(0) - Grating_Fill.maxSingleWidth / 1000 + End If + pY(3) = pY(2) + Else + ' Row: Sista + If Grating_Fill.widthRevNeeded = True Then + pY(0) = Data.grossAreaPoints.Rows(0)("Y") - Grating_Fill.maxSingleWidth * (rowNum - 1) / 1000 - Grating_Fill.revWidth / 1000 + Else + pY(0) = Data.grossAreaPoints.Rows(0)("Y") - Grating_Fill.maxSingleWidth * rowNum / 1000 + End If + pY(1) = pY(0) + pY(2) = Data.grossAreaPoints.Rows(3)("Y") + pY(3) = pY(2) + End If + + For j = 0 To 3 + Dim DR As DataRow = pointsDT.NewRow() + DR("NAME") = "GA_" & j + 1 + DR("TYPE") = "GA" + DR("X") = pX(j) + DR("Y") = pY(j) + + pointsDT.Rows.Add(DR) + Next + + ' --- Add recess points --- + + + + + pointsDT.TableName = "Grating " & i & " - C" & columnNum & " R" & rowNum + pointsDS.Tables.Add(pointsDT) + Next + + Return pointsDS + End Function +End Class diff --git a/Wardrobe/Wardrobe.vbproj b/Wardrobe/Wardrobe.vbproj index 7401812..10332ec 100644 --- a/Wardrobe/Wardrobe.vbproj +++ b/Wardrobe/Wardrobe.vbproj @@ -119,11 +119,12 @@ - + - - + + +