Makro wybiera wymiar w pliku PRT i usuwa opcję "oznacz do rysowania"

Cze wszystkim

Utworzyłem makro, aby wybrać wszystkie wymiary w szkicu części pliku, ta część działa.

Z drugiej strony nie mogę znaleźć wiersza poleceń, aby usunąć opcję "zaznacz do rysowania"

Ktoś ma pomysł na zakodowanie opcji "zaznacz do rysowania"?

 

Z góry dziękujemy za Twoją opinię

W załączeniu znajduje się makro, które uruchomiłem.

Yannicka


deletedim.swp

Witam

Używa funkcji MarkedForDrawing

Dim swDispDim As DisplayDimension
swDispDim.MarkedForDrawing = False

 

1 polubienie

Witaj Hieronim,

 

Otrzymuję komunikat o błędzie wykonania 91  zmienna obiektu nie jest zdefiniowana dla linii swDispDim.MarkedForDrawing = False

 

Dim swApp jako SldWorks.SldWorks
Dim swmodel As SldWorks.ModelDoc2
Przyciemnij swdraw jako SldWorks.DrawingDoc
Dim Reponse As Liczba całkowita
Dim swDispDim   As SldWorks.DisplayDimension

 


Sub main()

Ustaw swApp = Application.SldWorks
Ustaw swmodel = swApp.ActiveDoc

 

Ustaw swApp = Application.SldWorks
Ustaw swmodel = swApp.ActiveDoc
    Jeśli swmodel jest niczym, to
        swApp.SendMsgToUser2 "Brak otwartych dokumentów", swMbWarning, swMbOk
        Wyjdź z subwoofera
    Zakończ jeżeli:
    
    Jeśli swmodel. GetType <> 1 Następnie
        swApp.SendMsgToUser2 "Otwórz plik części", swMbWarning, swMbOk
        Wyjdź z subwoofera
    Zakończ jeżeli:
    
Odpowiedź = MsgBox("Czy edytowałeś swój szkic", vbYesNo)

    Jeśli odpowiedź = vbTak to


        swApp.SetSelectionFilter 14, prawda
        SWMODEL. Extension.SelectAll (Rozszerzenie)Extension.SelectAll
        swDispDim.MarkedForDrawing = Fałsz
        swApp.SetSelectionFilter 14, Fałsz

    ElseIf Reponse <> vbTak to
    
        MsgBox ("Dziękujemy za edycję szkicu")
        Wyjdź z subwoofera
    Zakończ jeżeli:

Koniec subwoofera

Witaj Hieronim,

 

 

Mam błąd 91 wyświetlany w wierszu swDispDim.MarkedForDrawing = False

Domyślam się, że brakuje zestawu  swDispDim=??

Czy masz jakieś pojęcie o tej wiadomości?

Yannicka

Witaj Hieronim,

Mam błąd 91  wyświetlany w wierszu swDispDim.MarkedForDrawing = False

Witaj Hieronim,

Mam błąd 91 w wierszu swDispDim.MarkedForDrawing = False

Myślę, że musi brakować ustawionego swDispDim 

Jak mam postępować?

Dziękuję

Yannicka


deletedim.swp

Cześć Jerome,

 

Mam błąd 91 wyświetlany w wierszu swDispDim.MarkedForDrawing = False

Czy wiesz, skąd to może pochodzić?

Yannicka

 


deletedim.swp

Cześć Jerome,

Mam błąd 91 wyświetlany w wierszu swDispDim.MarkedForDrawing = False

Czy wiesz, skąd to może pochodzić?

Dziękuję

Przed uzyskaniem do niego dostępu należy zdefiniować swDispDim, na przykład za pomocą GetSelectedObject6, jeśli wymiary są już wybrane

For n = 1 to swModel.SelectionManager.GetSelectedObjectCount2
    Set swDispDim = swModel.SelectionManager.GetSelectedObject6(n, -1)
    swDispDim.MarkedForDrawing = False
Next n

lub szybsza metoda, która nie wymaga wcześniejszego wybierania wymiarów:

Dim swDispDim As DisplayDimension
set swDispDim = swView.GetFirstDisplayDimension5
While not swDispDim Is Nothing
    swDispDim.MarkedForDrawing = False
    set swDispDim = swDispDim.GetNext5
Wend

 

Jerome

Kod zwraca błąd 424.


deletedim.swp

Będzie to działać na szkicu, który jest otwarty lub wybrany w drzewie

Option Explicit
Sub main()
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swFeat As SldWorks.Feature
    Dim swSketch As SldWorks.Sketch
    Dim swSelMgr As SldWorks.SelectionMgr
    Dim swDispDim As SldWorks.DisplayDimension
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
    If swModel Is Nothing Then
        swApp.SendMsgToUser2 "Pas de documents ouvert", swMbWarning, swMbOk
        Exit Sub
    End If
    If swModel.GetType <> swDocumentTypes_e.swDocPART Then
        swApp.SendMsgToUser2 "Ouvrir un fichier pièce", swMbWarning, swMbOk
        Exit Sub
    End If

    If swSelMgr.GetSelectedObjectType3(1, -1) = swSelectType_e.swSelSKETCHES Then
        Set swFeat = swSelMgr.GetSelectedObject6(1, -1)
    Else
        Set swSketch = swModel.SketchManager.ActiveSketch
        Set swFeat = swSketch
    End If
    If swFeat Is Nothing Then
        swApp.SendMsgToUser2 "Ouvrir ou sélectionner une esquisse", swMbWarning, swMbOk
        Exit Sub
    End If
    Set swDispDim = swFeat.GetFirstDisplayDimension
    While Not swDispDim Is Nothing
        swDispDim.MarkedForDrawing = False
        Set swDispDim = swFeat.GetNextDisplayDimension(swDispDim)
    Wend
End Sub

 

To jest dokładnie to, czego potrzebowałem

Tylko mała uwaga, czy można zweryfikować szkic?

 

 

aby wyjść ze szkicu dodaje: swModel. Wstawianie szkicu2 Prawdziwy

ale jeśli uruchomisz makro z zaznaczonym i zamkniętym szkicem, będzie ono działać bez konieczności jego otwierania i zamykania.