Und wenn möglich, prüfen Sie, ob Zone 2 nach dem Filter leer ist oder nicht. Wenn der Filter leer ist, wird er entfernt. Wenn nicht leere msgbox
Das Wichtigste ist, dass Sie in der Lage sind, ein Datenelement zum Filter hinzuzufügen oder daraus zu entfernen, die Überprüfung (gültig oder nicht leer) bleibt zweitrangig. Ich habe diese Funktion gefunden, ohne wirklich ein Beispiel zu haben:
Ich habe diesen Code gesehen, aber für mich verwendet er den Filter nicht und bei großen Assemblys wie mir denke ich, dass die Suche viel langsamer sein wird. Wenn ich wirklich keine andere Wahl habe, würde ich es versuchen. Aber unsere Lösung über den Filter scheint sehr schnell zu gehen, wenn man sie von Hand eintippt? Ich möchte diese Suche nur automatisieren, indem ich sie in ein anderes Makro integriere. Und wenn möglich, fügen Sie dann die Suche einmal gefiltert hinzu if=0 keine Nachricht und if >0 Nachricht
Technisch sieht die Verwendung des Fitre wie folgt aus:
Sub FiltrerFeatureManager()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim searchText As String
' Initialiser l'application SolidWorks
Set swApp = Application.SldWorks
' Obtenir le modèle actif
Set swModel = swApp.ActiveDoc
' Vérifier si un document est ouvert
If swModel Is Nothing Then
MsgBox "Aucun document ouvert."
Exit Sub
End If
' Définir le texte de recherche
searchText = "Rondelle"
' Définir le texte de filtrage dans le FeatureManager
swModel.Extension.FeatureManagerFilterString = searchText
' Forcer la mise à jour de l'interface utilisateur
swModel.GraphicsRedraw2
End Sub
Es funktioniert, in diesem Beispiel werden nur die " Unterlegscheiben " gefiltert. Nur gibt es ein Problem (und nicht das letzte), ich schaffe es nicht, die Filtration " abzubrechen " ...
Ich habe diesen Code gerade Schritt für Schritt getestet:
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim value As String
Dim value2 As String
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swModelDocExt = swModel.Extension
value = "Tôle passage réduit"
'value = swModelDocExt.FeatureManagerFilterString
swModelDocExt.FeatureManagerFilterString = value
value2 = swModelDocExt.FeatureManagerFilterString
Debug.Print value2
swModelDocExt.FeatureManagerFilterString = ""
'swModel.ClearSelection2 True
End Sub
Der Filter gilt für das Grafikfenster (CAD-Artikel), in diesem Grafikbereich erscheint nur mein gefiltertes Artikel. Auf der anderen Seite bleibt der Feature-Manager starr. (Vollständige Baumstruktur der Baugruppe und nichts Sichtbares im Filter. Fehler in meiner Version 2023 SP05 oder normales Verhalten? Oder schlechte Funktion?
@Maclane einen Filter abzubrechen, müssen Sie " " in value oder searchtext=" " für Ihren Code eingeben
Hinweis: Es fällt mir wirklich schwer, die Logik von Visiativ zu verstehen, die darin besteht, ihre Tools zu verstecken oder sie sogar nicht mehr standardmäßig zu installieren... Es fördert nicht den Konsum...
Möglicherweise gibt es einen anderen möglichen Weg, indem Sie die erweiterten Auswahlen durchlaufen. (oft vergessene Option von Solidworks).
@Maclane Ja, auch bei mir dauert es " 2 Stunden ", um die Aussicht aufzufrischen! Für die Verwendung von TreeManager ist es nicht möglich, dies in einem vorhandenen Makro hinzuzufügen. Wenn ich ein ext-Dienstprogramm in SW durchlaufe, werden die Designer dies nicht systematisch tun und dahinter Fehler erzeugen: Zu ersetzende Teile werden nicht erkannt. Bei der begrenzten Anzahl an Dienstprogrammen denke ich, dass es nicht an Visiativ liegt, sondern an Windows oder Dassault Ich weiß nicht, wer diese Einschränkung erstellt hat (vgl. Hotline) Für die erweiterte Auswahl habe ich gerade getestet, dass es für Teile in der Baugruppe funktioniert, aber in einer Unterbaugruppe findet es das Teil nicht mehr. Es schien perfekt!