Macro selecteer alle bestaande rijen in een weergave

Hallo

Ik wil alle regels selecteren die aan een weergave zijn toegevoegd om ze later te verwijderen.

Op dit moment kan ik verwijderen als ik het nummer van de regel weet (hier van 1 tot 99), maar kunnen we ervoor zorgen dat we alle bestaande regels vermelden om ze later te verwijderen?

Hieronder vindt u het stukje code dat de beginner die ik probeer te wijzigen om het vervolgens in een iets complexere macro in te voegen.

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

 

Hallo

Probeer met de volgende code of dit voor jou werkt:

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

 

Vriendelijke groeten

3 likes

Doet het werk perfect! Heel erg bedankt, ik denk niet dat het me zou zijn gelukt om deze macro af te maken zonder jouw hulp.

Even voor de goede orde, wat doet deze regel:

myModelView.FrameState = swWindowState_e.swWindowMaximized

 

Voor de rest denk ik dat ik het begrepen heb:

Je kijkt of er meer dan 0 bestaande lijnen in de weergave zijn, dan loop je op elke lijn en verwijder je deze.

 

En heel erg  bedankt d.roger de koning van de macro's! Als ik mag!

Hallo

Ik heb de regel in kwestie in de code gelaten omdat deze al deel uitmaakte van uw code, maar het is nutteloos voor de functie voor het verwijderen van regels, het stelt u in staat om het SW-venster van het plan in te stellen op maximale afmeting (of op minimale afmeting als u "swWindowMaximized" vervangt door "swWindowMinimized").

Voor de rest heb je het goed.

Vriendelijke groeten

1 like

Dat is wat ik dacht! Nogmaals bedankt.