Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Makro für Baugruppen - Stücklistenoptionen

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
  
FMB
Autor Thema:  Makro für Baugruppen - Stücklistenoptionen (993 mal gelesen)
Brödlahans
Mitglied



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

Beiträge: 94
Registriert: 23.05.2008

HP xw4600 WS, Intel Core Duo 1,98Ghz, 3 GB Ram, WIN XP, NVIDIA Quadro FX 1700, SW2008 SP5.0, Huppendorfer Bierkühlung

erstellt am: 13. Jul. 2020 11: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


Anzeigen_Ausblenden.jpg

 
Hallo WBF,
ich stehe hier vor einem Problem, für das es bestimmt eine kluge Lösung gibt, auf die ich aber nicht komme.

Eine ganze Anlage mit X Unterbaugruppen ist mit einer nicht korrekten Teilevorlage konstruiert.
Der Kunde fordert eine Stückliste mit allen Einzelteilen, die wir über die ganz normale Stücklistenfunktion "nur Teile" auf der Gesamtzeichnung erzeugen wollten.

Dabei fiel auf, dass in ALLEN Unterbaugruppen in den Konfigurationseigenschaften als Stücklistenoption "Ausblenden" statt "Anzeigen" bei den Kind Komponenten ausgewählt ist (siehe Bild).

Da wir keinen Azubi haben, kann ich diese "Strafarbeit" nicht deligieren       

Dazu kommt, dass ich Makrounerfahren bin (für alle Unterbaugruppen wären es eigentlich die selbe "Klickreihenfolge" bei geöffneter Baugruppe...).

Hat jemand eine Idee, wie ich das lösen kann?

Danke im Voraus für eure Zeit, Gedanken und Vorschläge!

Gruß
Brödlahans


------------------
Chuck Norris kennt die Frau von Ted Mosby.

[Diese Nachricht wurde von Brödlahans am 13. Jul. 2020 editiert.]

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

u.clemens
Mitglied
Konstrukteur


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

Beiträge: 964
Registriert: 04.07.2000

engineer's law
o cheap
o fast
o good
check only two !

erstellt am: 13. Jul. 2020 12:25    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 Brödlahans 10 Unities + Antwort hilfreich

du brauchst ein Makro, was dir alle Unterbaugruppen durchklappert, die Einstellung entsprechend verändert und dann speichert.

Für "alle Unterbaugruppen durchklappert" findest du in der API-Hilfe unter dem Stichpunkt "Traverse Assembly" zahlreiche Beispiele

Für "Einstellung entsprechend verändert" kannst du dieses Code-Schnipsel einbauen

Code:
configNames = swModel.GetConfigurationNames
For i = 0 To UBound(configNames)
  Set swConfig = swModel.GetConfigurationByName(configNames(i))
  swConfig.ChildComponentDisplayInBOM = swChildComponentInBOMOption_e.swChildComponent_Show
Next i

Naja und "dann speichert" ist trivial ...

------------------
mfg uc

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

Brödlahans
Mitglied



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

Beiträge: 94
Registriert: 23.05.2008

erstellt am: 13. Jul. 2020 12:49    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 UC
vielen Dank für deinen Antwort.
Habe nun die "confignames" durch den Namen meiner Konfiguration (GS) ersetzt- habe es bei mehreren geöffneten BG´s probiert, erhielt zwar keine Fehlermeldung, aber es passierte auch nichts.

Nach dem Traverse habe ich gesucht und ebenfalls gefunden, aber auch in niO getestet (wenn mein Schnipsel funktionieren würde, dann hätte ich doch das Ergebnis, dass SWX alle Unterbaugruppen der Hauptbaugruppe nacheinander öffnet, oder?

Kannst du deine Hilfestellung noch mehr vereinfachen?

Danke für deine Hilfe!

Brödlahans

------------------
Chuck Norris kennt die Frau von Ted Mosby.

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

Spirou85
Mitglied
Konstruktuer und CAD-Betreuer


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

Beiträge: 70
Registriert: 01.12.2014

HP ZBook 15 G5
Intel Xeon 2,9 GHz - 32GB Ram
NVIDIA Quadro P2000M
Windows 10 Pro 64Bit Version 1809
Build 17763.1098
SWX2020-64Bit-SP1.0
MaxxDB 2020 SP0.06
DraftSight Enterprise 2019 x64 SP3
3DCONNEXION SpaceMouse Enterprise mit CadMouse

erstellt am: 13. Jul. 2020 14:01    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 Brödlahans 10 Unities + Antwort hilfreich

Hallo Brödlahans

nimm den Code hier, damit müsste es dann klappen.

Code:

Option Explicit

Sub Main()

    Dim swApp As SldWorks.SldWorks              'Zugriff auf SolidWorks
    Dim swDoc As SldWorks.ModelDoc2            'Zugriff auf das Aktive Dokument
    Dim swComp As SldWorks.Component2          'Zugriff auf Root-Komponente des Dokuments
   
    'SolidWorks-Objekt erstellen und mit Aktivem Dokument verbinden
    Set swApp = Application.SldWorks
    Set swDoc = swApp.ActiveDoc
    'Prüfen ob überhaupt ein Dokument offen, und ob es eine Baugruppe ist
    If swDoc Is Nothing Then
        Call MsgBox("Kein Dokument geöffnet somit Abbruch!", vbOKOnly, "Fehler !")
        Exit Sub
    End If
    If swDoc.GetType <> swDocASSEMBLY Then
        Call MsgBox("Keine Baugruppe aktiv, somit Abbruch!", vbOKOnly, "Fehler !")
        Exit Sub
    End If
   
    'Rootkomponente der Baugruppe ermitteln
    Set swComp = swDoc.GetActiveConfiguration.GetRootComponent3(True)
   
    'Baugruppe nach weiteren Komponenten durchforsten
    TraverseBG swComp, 1
   
End Sub

Sub TraverseBG(oKomponente As Object, nEbene As Long)

    Dim vKind As Variant                                'Array mit Kinkomponenten wird an Variantvariable übergeben
    Dim oKindKomp As Object                            'Objekt mit der gerade untersuchten Kindkomponente
    Dim swAktModel As SldWorks.ModelDoc2                'Model das aus der Kindkomponente geholt wurde für Vollzugriff
    Dim sConfigNam As String                            'Name der aktuellen Konfiguration der Geholten Kind-Komponente
    Dim nI As Long                                      'Zählvariable
    Dim nT As Long                                      'Zählvariable
    Dim nErrors As Long                                'Fehlercoderückgabe
    Dim nWarnings As Long                              'Warnungscoderückgabe
    Dim bRetVal As Boolean                              'Rückgabewert
    Dim vConfignames As Variant                        'Array um alle Konfigurationen durchzugehen
    Dim swConfig As SldWorks.Configuration              'Zugriff auf Konfiguration
   
    vKind = oKomponente.GetChildren        'Kinder der Routbaugruppe ermitteln
    For nI = 0 To UBound(vKind)            'Alle Kinder durchgehen
        Set oKindKomp = vKind(nI)          'Verknüpfung mit Kind-Komponente
       
        'Prüfen ob Kind Unterdrückt
        If oKindKomp.GetSuppression2 <> swComponentSuppressed Then
            'Hier nun Komponentenelemente an Variable übergeben
            sConfigNam = oKindKomp.ReferencedConfiguration      'Konfiguration ermitteln
            Set swAktModel = oKindKomp.GetModelDoc2()            'auf Kindkomponete als Modell zugreifen
            If Not swAktModel Is Nothing Then
                'Prüfen Komponente Baugruppe ist
                If swAktModel.GetType = swDocASSEMBLY Then
                    vConfignames = swAktModel.GetConfigurationNames
                    For nT = 0 To UBound(vConfignames)
                        Set swConfig = swAktModel.GetConfigurationByName(vConfignames(nT))
                        swConfig.ChildComponentDisplayInBOM = swChildComponentInBOMOption_e.swChildComponent_Show
                    Next nT
                    'Aktuelles Modell speichern
                    bRetVal = swAktModel.Save3(swSaveAsOptions_Silent, nErrors, nWarnings)
                End If
                'Weitere Kinder in der Baugruppe durchsuchen
                TraverseBG oKindKomp, nEbene + 1
            End If
        End If
    Next nI
   
End Sub


Du brauchst nichts anpassen, Code nimmt sich alles selbst.

------------------
Viele Grüße aus Brackenheim

Lars Pauly

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

Brödlahans
Mitglied



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

Beiträge: 94
Registriert: 23.05.2008

erstellt am: 14. Jul. 2020 06:57    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

1000-fachen Dank! Voll der Knaller!!!

------------------
Chuck Norris kennt die Frau von Ted Mosby.

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