Ich möchte alle Linien auswählen, die einer Ansicht hinzugefügt wurden, um sie später zu löschen.
Im Moment kann ich löschen, wenn ich die Nummer der Zeile kenne (hier von 1 bis 99), aber können wir sicherstellen, dass alle vorhandenen Zeilen aufgelistet werden, um sie später zu löschen?
Unten sehen Sie den Codeausschnitt, den der Anfänger, den ich zu ändern versuche, ändert, um ihn dann in ein etwas komplexeres Makro einzufügen.
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim Numberline As Integer
Sub main()
Numberline = 0
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Dim myModelView As Object
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized
boolstatus = Part.ActivateView("Vue de mise en plan1")
Do
Numberline = Numberline + 1
'boolstatus = Part.Extension.SelectByID2("Line", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Line" & Numberline, "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
Part.EditDelete
Loop While Numberline < 100
End Sub
Versuchen Sie mit dem folgenden Code, um zu sehen, ob dies für Sie funktioniert:
Option Explicit
Dim swApp As Object
Dim Part As Object
Dim swDraw As SldWorks.DrawingDoc
Dim swView As SldWorks.View
Dim swSketch As SldWorks.Sketch
Dim vSkSegArr As Variant
Dim vSkSeg As Variant
Dim swSkSeg As SldWorks.SketchSegment
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim Numberline As Integer
Dim lNumSegments As Long
Sub main()
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Set swDraw = Part
Dim myModelView As Object
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized
boolstatus = Part.ActivateView("Vue de mise en plan1")
Set swView = swDraw.ActiveDrawingView
lNumSegments = swView.GetLineCount2(1)
If lNumSegments > 0 Then
Set swSketch = swView.GetSketch
vSkSegArr = swSketch.GetSketchSegments
For Each vSkSeg In vSkSegArr
Set swSkSeg = vSkSeg
boolstatus = Part.Extension.SelectByID2(swSkSeg.GetName, "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
Part.EditDelete
Next vSkSeg
End If
End Sub
Ich habe die fragliche Zeile im Code belassen, weil sie bereits Teil Ihres Codes war, aber für die Funktion zum Löschen von Zeilen unbrauchbar ist, ermöglicht es Ihnen, das SW-Fenster des Plans auf die maximale Dimension festzulegen (oder auf die minimale Dimension, wenn Sie "swWindowMaximized" durch "swWindowMinimized" ersetzen).