Witam
Chcę zaznaczyć wszystkie wiersze dodane do widoku, aby usunąć je później.
Na razie mogę usunąć, gdy znam numer linii (tutaj od 1 do 99), ale czy możemy upewnić się, że wymieniliśmy wszystkie istniejące linie, aby je później usunąć?
Poniżej znajduje się fragment kodu, który nowicjusz, którego próbuję zmodyfikować, aby następnie wstawić go do nieco bardziej złożonego makra.
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
Witam
Spróbuj użyć poniższego kodu, aby sprawdzić, czy to działa dla Ciebie:
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
Pozdrowienia
3 polubienia
Doskonale spełnia swoje zadanie! Bardzo dziękuję, chyba nie udałoby mi się skończyć tego makra bez Waszej pomocy.
Dla przypomnienia, co robi ta linia:
myModelView.FrameState = swWindowState_e.swWindowMaximized
Co do reszty, myślę, że zrozumiałem:
Sprawdzasz, czy w widoku jest więcej niż 0 istniejących linii, a następnie zapętlasz każdy wiersz i usuwasz go.
I bardzo dziękuję d.roger , królowi makr! Jeśli mogę!
Witam
Zostawiłem wiersz, o którym mowa, w kodzie, ponieważ był on już częścią twojego kodu, ale jest bezużyteczny dla funkcji usuwania linii, pozwala ustawić okno oprogramowania planu na maksymalny wymiar (lub na minimalny wymiar, jeśli zamienisz "swWindowMaximized" na "swWindowMinimized").
Co do reszty, masz rację.
Pozdrowienia
1 polubienie
Tak właśnie myślałem! Jeszcze raz dziękuję.