Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Makro Normteile löschen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
On-Demand-Webinare zu SolidCAM (SolidCAM)
Autor Thema:  Makro Normteile löschen (847 mal gelesen)
Palime00
Mitglied


Sehen Sie sich das Profil von Palime00 an!   Senden Sie eine Private Message an Palime00  Schreiben Sie einen Gästebucheintrag für Palime00

Beiträge: 3
Registriert: 03.05.2021

SolidWorks 2020

erstellt am: 05. Mai. 2021 07:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Filterliste.JPG

 
Hallo zusammen,

und zwar habe ich folgendes Problem. Ich will in einer Baugruppe (ca. 14000 Teile) alle Normteile an Hand ihres Namens löschen. Dazu habe ich mir aus den hochgeladenen Makros etwas zusammen gebastelt. Bei kleine Baugruppen funktioniert es auch super. Aber wenn ich es über Nacht bei einer größeren starte, kommt entweder der Fehler 28(Out of Stack) oder SolidWorks hängt sich auf.

Das ist bisher mein Makro:

----------------------------------------------------------------------------------------------------------------
Option Explicit

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim boolstatus As Boolean


Const INDENT_SYMBOL As String = "    "

Sub main()

    Set swApp = Application.SldWorks
   
    Set swModel = swApp.ActiveDoc
   
    If Not swModel Is Nothing Then

        Dim swRootComp As SldWorks.Component2

        Set swRootComp = swModel.ConfigurationManager.ActiveConfiguration.GetRootComponent
   
        TraverseComponent swRootComp

    Else

        MsgBox "Please open assembly"

    End If
   
End Sub

Sub TraverseComponent(comp As SldWorks.Component2)
   
    Dim vChildComps As Variant
   
       
    vChildComps = comp.GetChildren
   
    Dim i As Integer
   
    For i = 0 To UBound(vChildComps)
   
        Dim swChildComp As SldWorks.Component2
        Set swChildComp = vChildComps(i)
               
           
               
        If swChildComp.Name2 Like "*DIN*" Or swChildComp.Name2 Like "*Gewindestift*" Or swChildComp.Name2 Like "*Zylinderstift*" Or swChildComp.Name2 Like "*Mutter*" Or swChildComp.Name2 Like "*mutter*" Or swChildComp.Name2 Like "*Gewindebolzen*" Or swChildComp.Name2 Like "*Schraube*" Or swChildComp.Name2 Like "*schraube*" Or swChildComp.Name2 Like "*B0008.169*" Or swChildComp.Name2 Like "*din*" Or swChildComp.Name2 Like "*KA15TN*" Or swChildComp.Name2 Like "*KA10TN*" Or swChildComp.Name2 Like "*Scheibe*" Or swChildComp.Name2 Like "*scheibe*" Then
        boolstatus = swModel.Extension.SelectByID2(swChildComp.Name2, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
        swModel.EditDelete
        Else
        TraverseComponent swChildComp
        End If
       
    Next
   
End Sub
---------------------------------------------------------------------------------------------

Ich hoffe ihr könnt mir hier weiterhelfen.

Oder würde es auch die Möglichkeit geben durch VBA auf die Filterliste (im Bild) zuzugreifen und alle gefundenen Bauteile zu markieren/löschen?
Habe dazu leider nichts gefunden.

Mfg
Patrick

[Diese Nachricht wurde von Palime00 am 05. Mai. 2021 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



Sehen Sie sich das Profil von bk.sc an!   Senden Sie eine Private Message an bk.sc  Schreiben Sie einen Gästebucheintrag für bk.sc

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 05. Mai. 2021 14:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Palime00 10 Unities + Antwort hilfreich

Hallo Patrick,

sind alle Normteile aus der Toolbox? Wenn ja könntest du mal probieren über den Komponentenfilter mit "istoolboxpart" dir alle Toolboxteile auflisten zu lassen dann markieren und alle auf einmal löschen.

Wenn es über die API sein muss würde ich nicht über den Namen gehen sondern für jede Komponente über IComponent2 (Objekt) -> GetModelDoc2(Methode) -> ModelDoc2 (Objekt) ->  Extension (Property) -> ModelDocExtension (Objekt) holen und hier dann ToolboxPartType (Property) > 0 auswerten und wenn ja diese Komponenten löschen.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Palime00
Mitglied


Sehen Sie sich das Profil von Palime00 an!   Senden Sie eine Private Message an Palime00  Schreiben Sie einen Gästebucheintrag für Palime00

Beiträge: 3
Registriert: 03.05.2021

SolidWorks 2020

erstellt am: 06. Mai. 2021 07:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ich habe es jetzt anders gemacht. Einfach noch ein Delay von 1s nach dem Löschen des Bauteils eingefügt. Bei einer 8000 Teile Baugruppe hat dies jetzt ohne Probleme geklappt. Bis morgen mal bei den Komplettbaugruppen testen.

Und nein die Teile sind leider nicht alle von der Toolbox.

Mfg

Patrick

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ralf Tide
Moderator
-




Sehen Sie sich das Profil von Ralf Tide an!   Senden Sie eine Private Message an Ralf Tide  Schreiben Sie einen Gästebucheintrag für Ralf Tide

Beiträge: 4978
Registriert: 06.08.2001

Sehr seltsame Dinge passiern <Klaus Lage - Toy Story>
.-)

erstellt am: 06. Mai. 2021 09:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Palime00 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Palime00:
...Einfach noch ein Delay von 1s nach dem Löschen des Bauteils eingefügt. Bei einer 8000 Teile Baugruppe hat dies jetzt ohne Probleme geklappt.
Guter Hinweis 

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


Sehen Sie sich das Profil von Christian_W an!   Senden Sie eine Private Message an Christian_W  Schreiben Sie einen Gästebucheintrag für Christian_W

Beiträge: 3189
Registriert: 04.04.2001

CSWP 12/2015<P>SWX2021sp5 Win10/11
(SWX2016, SWX2012)
proAlpha6.2e00/calinkV9
(Tactonworks)
(Medusa7, NesCAD2010,
solidEdge19)

erstellt am: 06. Mai. 2021 10:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Palime00 10 Unities + Antwort hilfreich

        Else
        TraverseComponent swChildComp


Hallo,

sieht so aus, als wenn du entweder löschst, oder mit traverse weitermachst.
Aber keine Abfrage mehr, ob die Komponente denn eine Unterbaugruppe ist oder ein Teil.
Ist das gewollt?

Gruß, Christian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Palime00
Mitglied


Sehen Sie sich das Profil von Palime00 an!   Senden Sie eine Private Message an Palime00  Schreiben Sie einen Gästebucheintrag für Palime00

Beiträge: 3
Registriert: 03.05.2021

SolidWorks 2020

erstellt am: 10. Mai. 2021 06:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ja das ist gewollt.

Gruß Patrick

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz