X2021/Wardrobe/SolidWorks/Multiple_Drawing.vb

465 lines
24 KiB
VB.net

Imports SldWorks
Public Class Multiple_Drawing
Public Shared Sub Generate_Drawing()
Dim swApp As SldWorks.SldWorks
swApp = CType(System.Runtime.InteropServices.Marshal.GetActiveObject("SldWorks.Application"), SldWorks.SldWorks)
Dim status As Boolean
Dim iDrawing As DrawingDoc
Dim swSheetWidth As Double
swSheetWidth = 0.42
Dim swSheetHeight As Double
swSheetHeight = 0.297
iDrawing = swApp.NewDocument("C:\ProgramData\SolidWorks\SOLIDWORKS 2020\templates\Drawing.drwdot", 12, swSheetWidth, swSheetHeight)
Dim swSheet As Sheet
swSheet = iDrawing.GetCurrentSheet()
swSheet.SetProperties2(12, 12, 1, 1, False, swSheetWidth, swSheetHeight, True)
swSheet.SetTemplateName(Settings.HLCtFolder & "\Files Needed\A3 Part.slddrt")
swSheet.ReloadTemplate(True)
swSheet.SetScale(1, 10, False, False) ' FIXA
swSheet.SetName("Assembly")
Dim layMgr As LayerMgr
layMgr = iDrawing.GetLayerManager()
status = layMgr.SetCurrentLayer("Svenska")
Dim myView As View
myView = iDrawing.CreateDrawViewFromModelView3(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\GRATINGS_ASSEMBLY_SIMPLIFIED.SLDASM",
"*Front", swSheetWidth / 2, swSheetHeight / 2, 0)
myView.UseSheetScale() = True
myView.SetDisplayTangentEdges2(2)
Dim swExtensions As SldWorks.ModelDocExtension
swExtensions = iDrawing.Extension
Dim RootComp = myView.RootDrawingComponent
Dim CompName = RootComp.Name
Dim OutLine = myView.GetOutline
Dim modelsDT As DataTable = Multiple_3D_Simplified.partDT
Dim gratingName, plane1Name, plane2Name As String
Dim counter As Integer
Dim measurement As IDisplayDimension
Dim mesOffsets(3) As Double
mesOffsets(0) = OutLine(3) + 0.005
mesOffsets(1) = OutLine(2) + 0.005
mesOffsets(2) = OutLine(1) - 0.005
mesOffsets(3) = OutLine(0) - 0.005
' -- Recess measurements --
Dim recessDT = modelsDT.Select("parentName = '" & modelsDT.Rows(Calculate_Fill_Grid.numOfHorizontal * (Calculate_Fill_Grid.numOfVertical - 1))("partName") & "'")
For i = 0 To Data.recessData.Rows.Count - 1
Dim DR As DataRow = Data.recessData.Rows(i)
Dim recessName As String = recessDT(i)("partName")
If DR("RECESS TYPE") = "ANGLE" Then
If DR("CORNER") = 1 Then
'A = horizontal uppåt, B = Veritcal vänster
iDrawing.ClearSelection2(True)
Create_Measurement("Point1@SA", False, mesOffsets(0), CompName, myView, recessName, swExtensions, iDrawing)
mesOffsets(0) += 0.01
Create_Measurement("Point1@SB", True, mesOffsets(3), CompName, myView, recessName, swExtensions, iDrawing)
mesOffsets(3) -= 0.01
ElseIf DR("CORNER") = 2 Then
'A = Veritcal höger, B = horizontal uppåt
iDrawing.ClearSelection2(True)
Create_Measurement("Point1@SA", True, mesOffsets(1), CompName, myView, recessName, swExtensions, iDrawing)
mesOffsets(1) += 0.01
Create_Measurement("Point1@SB", False, mesOffsets(0), CompName, myView, recessName, swExtensions, iDrawing)
mesOffsets(0) += 0.01
ElseIf DR("CORNER") = 3 Then
'A = horizontal nedåt, B = Veritcal höger
iDrawing.ClearSelection2(True)
Create_Measurement("Point1@SA", False, mesOffsets(2), CompName, myView, recessName, swExtensions, iDrawing)
mesOffsets(2) -= 0.01
Create_Measurement("Point1@SB", True, mesOffsets(1), CompName, myView, recessName, swExtensions, iDrawing)
mesOffsets(1) += 0.01
Else
'A = Veritcal vänster, B = horizontal nedåt
iDrawing.ClearSelection2(True)
Create_Measurement("Point1@SA", True, mesOffsets(3), CompName, myView, recessName, swExtensions, iDrawing)
mesOffsets(3) -= 0.01
Create_Measurement("Point1@SB", False, mesOffsets(2), CompName, myView, recessName, swExtensions, iDrawing)
mesOffsets(2) -= 0.01
End If
ElseIf DR("RECESS TYPE") = "SQUARE" Then
If DR("CORNER") = 1 Then
iDrawing.ClearSelection2(True)
Create_Measurement("Point1@S2A", True, mesOffsets(3), CompName, myView, recessName, swExtensions, iDrawing)
mesOffsets(3) -= 0.01
Create_Measurement("Point1@S2B", False, mesOffsets(0), CompName, myView, recessName, swExtensions, iDrawing)
mesOffsets(0) += 0.01
ElseIf DR("CORNER") = 2 Then
iDrawing.ClearSelection2(True)
Create_Measurement("Point1@S1A", True, mesOffsets(1), CompName, myView, recessName, swExtensions, iDrawing)
mesOffsets(1) += 0.01
Create_Measurement("Point1@S2B", False, mesOffsets(0), CompName, myView, recessName, swExtensions, iDrawing)
mesOffsets(0) += 0.01
ElseIf DR("CORNER") = 3 Then
iDrawing.ClearSelection2(True)
Create_Measurement("Point1@S1A", True, mesOffsets(1), CompName, myView, recessName, swExtensions, iDrawing)
mesOffsets(1) += 0.01
Create_Measurement("Point1@S1B", False, mesOffsets(2), CompName, myView, recessName, swExtensions, iDrawing)
mesOffsets(2) -= 0.01
Else
iDrawing.ClearSelection2(True)
Create_Measurement("Point1@S2A", True, mesOffsets(3), CompName, myView, recessName, swExtensions, iDrawing)
mesOffsets(3) -= 0.01
Create_Measurement("Point1@S1B", False, mesOffsets(2), CompName, myView, recessName, swExtensions, iDrawing)
mesOffsets(2) -= 0.01
End If
ElseIf DR("RECESS TYPE") = "SIDE SQUARE" Then
If DR("SIDE") = 1 Then
iDrawing.ClearSelection2(True)
Create_Measurement("Point1@SA", False, mesOffsets(0), CompName, myView, recessName, swExtensions, iDrawing) '
Create_Measurement("Point1@SB", True, mesOffsets(1), CompName, myView, recessName, swExtensions, iDrawing)
mesOffsets(1) += 0.01
status = False
counter = 0
While status = False
gratingName = modelsDT.Rows(Calculate_Fill_Grid.numOfHorizontal - 1 + counter * Calculate_Fill_Grid.numOfHorizontal)("partName")
iDrawing.ClearSelection2(True)
plane2Name = "Point1@SL2@" & CompName & "@" & myView.GetName2 & "/" & gratingName & "-1@" & CompName.Split("-")(0)
status = swExtensions.SelectByID2(plane2Name, "EXTSKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
counter += 1
End While
plane1Name = "Point1@SA2@" & CompName & "@" & myView.GetName2 & "/" & recessName & "-1@" & CompName.Split("-")(0)
status = swExtensions.SelectByID2(plane1Name, "EXTSKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
measurement = iDrawing.AddHorizontalDimension2(0, mesOffsets(0), 0)
mesOffsets(0) += 0.01
Set_MeasurementProperties(measurement)
ElseIf DR("SIDE") = 2 Then
iDrawing.ClearSelection2(True)
Create_Measurement("Point1@SA", True, mesOffsets(1), CompName, myView, recessName, swExtensions, iDrawing)
Create_Measurement("Point1@SB", False, mesOffsets(2), CompName, myView, recessName, swExtensions, iDrawing)
mesOffsets(2) -= 0.01
status = False
counter = 0
While status = False
gratingName = modelsDT.Rows(Calculate_Fill_Grid.numOfHorizontal * Calculate_Fill_Grid.numOfVertical - 1 - counter)("partName")
iDrawing.ClearSelection2(True)
plane2Name = "Point1@SW2@" & CompName & "@" & myView.GetName2 & "/" & gratingName & "-1@" & CompName.Split("-")(0)
status = swExtensions.SelectByID2(plane2Name, "EXTSKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
counter += 1
End While
plane1Name = "Point1@SA2@" & CompName & "@" & myView.GetName2 & "/" & recessName & "-1@" & CompName.Split("-")(0)
status = swExtensions.SelectByID2(plane1Name, "EXTSKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
measurement = iDrawing.AddVerticalDimension2(mesOffsets(1), 0, 0)
mesOffsets(1) += 0.01
Set_MeasurementProperties(measurement)
ElseIf DR("SIDE") = 3 Then
iDrawing.ClearSelection2(True)
Create_Measurement("Point1@SA", False, mesOffsets(2), CompName, myView, recessName, swExtensions, iDrawing)
Create_Measurement("Point1@SB", True, mesOffsets(1), CompName, myView, recessName, swExtensions, iDrawing)
mesOffsets(1) += 0.01
status = False
counter = 0
While status = False
gratingName = modelsDT.Rows(Calculate_Fill_Grid.numOfHorizontal * Calculate_Fill_Grid.numOfVertical - 1 - counter * Calculate_Fill_Grid.numOfHorizontal)("partName")
iDrawing.ClearSelection2(True)
plane2Name = "Point1@SL2@" & CompName & "@" & myView.GetName2 & "/" & gratingName & "-1@" & CompName.Split("-")(0)
status = swExtensions.SelectByID2(plane2Name, "EXTSKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
counter += 1
End While
plane1Name = "Point1@SA1@" & CompName & "@" & myView.GetName2 & "/" & recessName & "-1@" & CompName.Split("-")(0)
status = swExtensions.SelectByID2(plane1Name, "EXTSKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
measurement = iDrawing.AddHorizontalDimension2(0, mesOffsets(2), 0)
mesOffsets(2) -= 0.01
Set_MeasurementProperties(measurement)
Else
iDrawing.ClearSelection2(True)
Create_Measurement("Point1@SA", True, mesOffsets(3), CompName, myView, recessName, swExtensions, iDrawing)
Create_Measurement("Point1@SB", False, mesOffsets(2), CompName, myView, recessName, swExtensions, iDrawing)
mesOffsets(2) -= 0.01
status = False
counter = 0
While status = False
gratingName = modelsDT.Rows(Calculate_Fill_Grid.numOfHorizontal * (Calculate_Fill_Grid.numOfVertical - 1) + counter)("partName")
iDrawing.ClearSelection2(True)
plane2Name = "Point1@SW2@" & CompName & "@" & myView.GetName2 & "/" & gratingName & "-1@" & CompName.Split("-")(0)
status = swExtensions.SelectByID2(plane2Name, "EXTSKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
counter += 1
End While
plane1Name = "Point1@SA1@" & CompName & "@" & myView.GetName2 & "/" & recessName & "-1@" & CompName.Split("-")(0)
status = swExtensions.SelectByID2(plane1Name, "EXTSKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
measurement = iDrawing.AddVerticalDimension2(mesOffsets(3), 0, 0)
mesOffsets(3) -= 0.01
Set_MeasurementProperties(measurement)
End If
ElseIf DR("RECESS TYPE") = "MIDDLE SQUARE" Then
iDrawing.ClearSelection2(True)
Create_Measurement("Point1@SA", True, mesOffsets(1), CompName, myView, recessName, swExtensions, iDrawing)
Create_Measurement("Point1@SB", False, mesOffsets(2), CompName, myView, recessName, swExtensions, iDrawing)
status = False
counter = 0
While status = False
gratingName = modelsDT.Rows(Calculate_Fill_Grid.numOfHorizontal * Calculate_Fill_Grid.numOfVertical - 1 - counter)("partName")
iDrawing.ClearSelection2(True)
plane2Name = "Point1@SW2@" & CompName & "@" & myView.GetName2 & "/" & gratingName & "-1@" & CompName.Split("-")(0)
status = swExtensions.SelectByID2(plane2Name, "EXTSKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
counter += 1
End While
plane1Name = "Point1@SA1@" & CompName & "@" & myView.GetName2 & "/" & recessName & "-1@" & CompName.Split("-")(0)
status = swExtensions.SelectByID2(plane1Name, "EXTSKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
measurement = iDrawing.AddVerticalDimension2(mesOffsets(1), 0, 0)
mesOffsets(1) += 0.01
Set_MeasurementProperties(measurement)
status = False
counter = 0
While status = False
gratingName = modelsDT.Rows(Calculate_Fill_Grid.numOfHorizontal * Calculate_Fill_Grid.numOfVertical - 1 - counter * Calculate_Fill_Grid.numOfHorizontal)("partName")
iDrawing.ClearSelection2(True)
plane2Name = "Point1@SL2@" & CompName & "@" & myView.GetName2 & "/" & gratingName & "-1@" & CompName.Split("-")(0)
status = swExtensions.SelectByID2(plane2Name, "EXTSKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
counter += 1
End While
plane1Name = "Point1@SB2@" & CompName & "@" & myView.GetName2 & "/" & recessName & "-1@" & CompName.Split("-")(0)
status = swExtensions.SelectByID2(plane1Name, "EXTSKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
measurement = iDrawing.AddHorizontalDimension2(0, mesOffsets(2), 0)
mesOffsets(2) -= 0.01
Set_MeasurementProperties(measurement)
End If
Next
' -- Loop Horizontal --
For i = 0 To Calculate_Fill_Grid.numOfHorizontal - 1
status = False
counter = 0
While status = False
gratingName = modelsDT.Rows(i + counter * Calculate_Fill_Grid.numOfHorizontal)("partName")
iDrawing.ClearSelection2(True)
plane1Name = "Point1@SL1@" & CompName & "@" & myView.GetName2 & "/" & gratingName & "-1@" & CompName.Split("-")(0)
status = swExtensions.SelectByID2(plane1Name, "EXTSKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
plane2Name = "Point1@SL2@" & CompName & "@" & myView.GetName2 & "/" & gratingName & "-1@" & CompName.Split("-")(0)
status = swExtensions.SelectByID2(plane2Name, "EXTSKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
counter += 1
End While
measurement = iDrawing.AddHorizontalDimension2(0, mesOffsets(0), 0)
iDrawing.ClearSelection2(True)
Set_MeasurementProperties(measurement)
Next
mesOffsets(0) += 0.01
status = False
counter = 0
While status = False
gratingName = modelsDT.Rows(counter * Calculate_Fill_Grid.numOfHorizontal)("partName")
iDrawing.ClearSelection2(True)
plane1Name = "Point1@SL1@" & CompName & "@" & myView.GetName2 & "/" & gratingName & "-1@" & CompName.Split("-")(0)
status = swExtensions.SelectByID2(plane1Name, "EXTSKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
counter += 1
End While
status = False
counter = 0
While status = False
gratingName = modelsDT.Rows(Calculate_Fill_Grid.numOfHorizontal - 1 + counter * Calculate_Fill_Grid.numOfHorizontal)("partName")
plane2Name = "Point1@SL2@" & CompName & "@" & myView.GetName2 & "/" & gratingName & "-1@" & CompName.Split("-")(0)
status = swExtensions.SelectByID2(plane2Name, "EXTSKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
counter += 1
End While
measurement = iDrawing.AddHorizontalDimension2(0, mesOffsets(0), 0)
iDrawing.ClearSelection2(True)
Set_MeasurementProperties(measurement)
measurement.ShowParenthesis = True
' -- Loop Vertical --
For i = 0 To Calculate_Fill_Grid.numOfVertical - 1
status = False
counter = 0
While status = False
gratingName = modelsDT.Rows(i * Calculate_Fill_Grid.numOfHorizontal + counter)("partName")
iDrawing.ClearSelection2(True)
plane1Name = "Point1@SW1@" & CompName & "@" & myView.GetName2 & "/" & gratingName & "-1@" & CompName.Split("-")(0)
status = swExtensions.SelectByID2(plane1Name, "EXTSKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
plane2Name = "Point1@SW2@" & CompName & "@" & myView.GetName2 & "/" & gratingName & "-1@" & CompName.Split("-")(0)
status = swExtensions.SelectByID2(plane2Name, "EXTSKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
counter += 1
End While
measurement = iDrawing.AddVerticalDimension2(mesOffsets(3), 0, 0)
iDrawing.ClearSelection2(True)
Set_MeasurementProperties(measurement)
Next
mesOffsets(3) -= 0.01
status = False
counter = 0
While status = False
gratingName = modelsDT.Rows(counter)("partName")
iDrawing.ClearSelection2(True)
plane1Name = "Point1@SW1@" & CompName & "@" & myView.GetName2 & "/" & gratingName & "-1@" & CompName.Split("-")(0)
status = swExtensions.SelectByID2(plane1Name, "EXTSKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
counter += 1
End While
status = False
counter = 0
While status = False
gratingName = modelsDT.Rows(Calculate_Fill_Grid.numOfHorizontal * (Calculate_Fill_Grid.numOfVertical - 1) + counter)("partName")
plane2Name = "Point1@SW2@" & CompName & "@" & myView.GetName2 & "/" & gratingName & "-1@" & CompName.Split("-")(0)
status = swExtensions.SelectByID2(plane2Name, "EXTSKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
counter += 1
End While
measurement = iDrawing.AddVerticalDimension2(mesOffsets(3), 0, 0)
iDrawing.ClearSelection2(True)
Set_MeasurementProperties(measurement)
measurement.ShowParenthesis = True
status = layMgr.AddLayer("Symbol", "", 0, 0, 2)
status = layMgr.SetCurrentLayer("Symbol")
Dim swSkMgr As SketchManager
swSkMgr = iDrawing.SketchManager
status = iDrawing.ActivateSheet("Sheet1")
Dim skSegment As Object
swSkMgr.AddToDB = True
Dim sheetProp = swSheet.GetProperties()
Dim sheetScale = myView.ScaleDecimal
For i = 0 To Draw_Grating.DirSymbolPoints.Count - 2
Dim x1, x2, y1, y2 As Double
x1 = CDbl((Draw_Grating.DirSymbolPoints(i)(0) - Data.guiPanelMidX) / (2000 * sheetScale)) + (swSheetWidth - 0.05) / sheetScale
y1 = -CDbl((Draw_Grating.DirSymbolPoints(i)(1) - Data.guiPanelMidY) / (2000 * sheetScale)) + (swSheetHeight / 2) / sheetScale
x2 = CDbl((Draw_Grating.DirSymbolPoints(i + 1)(0) - Data.guiPanelMidX) / (2000 * sheetScale)) + (swSheetWidth - 0.05) / sheetScale
y2 = -CDbl((Draw_Grating.DirSymbolPoints(i + 1)(1) - Data.guiPanelMidY) / (2000 * sheetScale)) + (swSheetHeight / 2) / sheetScale
skSegment = swSkMgr.CreateLine(x1, y1, 0, x2, y2, 0)
Next
swSkMgr.AddToDB = False
Dim note = iDrawing.CreateText2("Load Bearing Direction", (swSheetWidth - 0.072), (swSheetHeight / 2 + 0.012), 0, 0.003, 0)
status = swExtensions.SelectByID2(myView.GetName2, "DRAWINGVIEW", 0, 0, 0, False, 0, Nothing, 0)
Dim vNotes As Object
Dim autoBalloonParams As Object
autoBalloonParams = iDrawing.CreateAutoBalloonOptions()
autoBalloonParams.Layout = 1
autoBalloonParams.ReverseDirection = False
autoBalloonParams.IgnoreMultiple = True
autoBalloonParams.InsertMagneticLine = False
autoBalloonParams.LeaderAttachmentToFaces = True
autoBalloonParams.Style = 1
autoBalloonParams.Size = 3
autoBalloonParams.EditBalloonOption = 1
autoBalloonParams.EditBalloons = 1
autoBalloonParams.UpperTextContent = 1
autoBalloonParams.UpperText = """"
autoBalloonParams.Layername = "Symbol"
vNotes = iDrawing.AutoBalloon5(autoBalloonParams)
iDrawing.ClearSelection2(True)
Dim gratingCounter As Integer = 1
For i = 0 To vNotes.Length - 1
Dim noteInfo = vNotes(i).GetLeaderInfo()
Dim noteAnnotation As IAnnotation
noteAnnotation = vNotes(i).GetAnnotation()
noteAnnotation.SetPosition2(noteInfo(3), noteInfo(4), 0)
noteAnnotation.SetLeader3(0, 1, False, False, False, False)
Dim textFormat = noteAnnotation.GetTextFormat(0)
textFormat.CharHeight = 0.0025
status = noteAnnotation.SetTextFormat(0, False, textFormat)
iDrawing.ClearSelection2(True)
Dim balloonName As String = vNotes(i).GetName()
status = swExtensions.SelectByID2(balloonName & "@" & myView.GetName2, "NOTE", 0, 0, 0, False, 0, Nothing, 0)
Dim editedNote = swExtensions.EditBalloonProperties2(1, 3, 0, "G-" & gratingCounter, 0, "", 0, False, 1, "X", 0.001)
gratingCounter += 1
Next
Dim newName As String
newName = Settings.folderPaths("object_" & Data.objectNum & "_drawings_gratings_sw") & "\grating_drawing.SLDDRW"
status = iDrawing.SaveAs3(newName, 0, 0)
status = iDrawing.SaveAs3(Settings.folderPaths("object_" & Data.objectNum & "_drawings_gratings_pdf") & "\grating_drawing.pdf", 0, 2)
End Sub
Private Shared Sub Create_Measurement(mesName As String, verticalDim As Boolean, mesOffset As Double, CompName As String, myView As View,
recessName As String, swExtensions As SldWorks.ModelDocExtension, iDrawing As DrawingDoc)
Dim status As Boolean
Dim plane1Name As String = mesName & "1@" & CompName & "@" & myView.GetName2 & "/" & recessName & "-1@" & CompName.Split("-")(0)
status = swExtensions.SelectByID2(plane1Name, "EXTSKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
Dim plane2Name As String = mesName & "2@" & CompName & "@" & myView.GetName2 & "/" & recessName & "-1@" & CompName.Split("-")(0)
status = swExtensions.SelectByID2(plane2Name, "EXTSKETCHSEGMENT", 0, 0, 0, True, 0, Nothing, 0)
Dim measurement As IDisplayDimension
If verticalDim = True Then
measurement = iDrawing.AddVerticalDimension2(mesOffset, 0, 0)
Else
measurement = iDrawing.AddHorizontalDimension2(0, mesOffset, 0)
End If
Set_MeasurementProperties(measurement)
End Sub
Private Shared Sub Set_MeasurementProperties(measurement As IDisplayDimension)
measurement.SetUnits2(False, 0, 1, 0, True, 12)
measurement.CenterText = True
measurement.SetPrecision3(0, 0, 0, 0)
measurement.OffsetText = True
measurement.OffsetText = False ' Helps center the text
End Sub
End Class