Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  Inventor
  Kaufteile in der Struktur-Stückliste

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 Autodesk Produkte
  
PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
Autor Thema:  Kaufteile in der Struktur-Stückliste (255 / mal gelesen)
Lothar Boekels
Ehrenmitglied V.I.P. h.c.
Dipl.-Ing. Maschinenbau und CAD-Trainer



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

Beiträge: 3850
Registriert: 15.02.2001

DELL Precision 7520 Win11Pro-64
Inventor mit Vault Professional 2025
---------------------
Während man es aufschiebt,
verrinnt das Leben.
Lucius Annaeus Seneca
(ca. 4 v. Chr - 65 n. Chr.)

erstellt am: 26. Feb. 2025 16:34    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

Noch mal ein Thema zur Strukturstückliste.
Derzeit benutze ich das MuM-Inventortool für die Stücklistengenerierung.
Was dabei aufgefallen ist, ist dass Kaufteile (wenn es denn Baugruppen sind) immer komplett mit ihrer ganzen Struktur in der Strukturstückliste erscheinen. Zuerst dachte ich, das sei ein MuM-Problem. Dann habe ich aber gesehen, dass entgegen den Angaben von Autodesk die Komponenten einer Einkauf-Baugruppe auch dort in der Strukturstückliste erscheinen, wenn sie als "Normal" oder "eingekauft" oder "untrennbar" deklariert sind.

Ich habe hier z.B. ein Linearmodul von igus - eine Baugruppe, die natürlich wegen der Darstellung und des Gewichts wegen nicht mit Komponenten, die als "Referenz" gekennzeichnet sind daherkommen können.
Für mich sinnvoll erscheint die Auszeichnung als Phantom. Dann sind auch alle Komponenten der Unterbaugruppen als Phantom zu deklarieren.
Das kann dann ganz schön Zeit kosten. Dafür habe ich mir eine iLogic-Regel gebastelt:


Code:

Sub Main()
    Try
        ' Nachricht zum Start der Regel
        MessageBox.Show("Regel wird ausgeführt")

        ' Durchlaufen Sie alle Komponenten in der obersten Baugruppe
        For Each oComp As Inventor.ComponentOccurrence In ThisApplication.ActiveDocument.ComponentDefinition.Occurrences
            ' Rufen Sie die rekursive Funktion für jede Komponente auf
            ExcludePurchasedComponents(oComp)
        Next
    Catch ex As Exception
        MessageBox.Show("Fehler in Main: " & ex.Message)
    End Try
End Sub

Sub ExcludePurchasedComponents(oComp As Inventor.ComponentOccurrence)
    Try
        ' Überprüfen Sie, ob die übergeordnete Baugruppe als Kaufteil markiert ist
        Dim isInPurchasedBOMStructure As Boolean = oComp.BOMStructure = kPurchasedBOMStructure

        ' Rekursion für alle Unterkomponenten aufrufen
        ProcessSubComponents(oComp, isInPurchasedBOMStructure)
    Catch ex As Exception
        MessageBox.Show("Fehler in ExcludePurchasedComponents: " & ex.Message)
    End Try
End Sub

Sub ProcessSubComponents(oComp As Inventor.ComponentOccurrence, isInPurchasedBOMStructure As Boolean)
    Try
        ' Durchlaufen Sie alle Unterkomponenten der aktuellen Baugruppe
        For Each oSubComp As Inventor.ComponentOccurrence In oComp.SubOccurrences
            ' Überprüfen Sie die aktuelle BOMStructure der Unterkomponente
            Dim sBOMStructure_zuerst As String = oSubComp.BOMStructure.ToString()

            ' Setzen der Stücklistenstruktur der Unterkomponenten auf Phantom, wenn sie vorher auf "normal" stand
            If isInPurchasedBOMStructure AndAlso oSubComp.BOMStructure = kNormalBOMStructure Then
' Überprüfen, ob die Teilenummer mit "DIN" oder "ISO" beginnt
Dim partNumber As String = oSubComp.Definition.Document.PropertySets.Item("Project").Item("Part Number").Value
                If Not partNumber.StartsWith("DIN") And Not partNumber.StartsWith("ISO") Then
              Dim subCompDef As Inventor.ComponentDefinition = oSubComp.Definition
Try
                subCompDef.BOMStructure = Inventor.BOMStructureEnum.kPhantomBOMStructure
Catch ex As Exception
MessageBox.Show(oSubComp.Name & ": nicht behandelt!")
End Try
            End If
Dim sBOMStructure_danach As String = oSubComp.BOMStructure.ToString()
' Nachricht zur neuen BOMStructure
            If Not sBOMStructure_zuerst = sBOMStructure_danach Then
                MessageBox.Show(oSubComp.Name & ": " & vbCrLf & sBOMStructure_zuerst & vbCrLf & "in " & vbCrLf & sBOMStructure_danach, "Änderung BOMStructure:")
            End If
End If

            ' Überprüfen Sie, ob die Unterkomponente ebenfalls eine gekaufte Baugruppe ist
            Dim isSubCompInPurchasedBOMStructure As Boolean = isInPurchasedBOMStructure OrElse oSubComp.BOMStructure = kPurchasedBOMStructure

            ' Aufruf der Funktion rekursiv für Unterbaugruppen
            ProcessSubComponents(oSubComp, isSubCompInPurchasedBOMStructure)
        Next
    Catch ex As Exception
        MessageBox.Show("Fehler in ProcessSubComponents: " & ex.Message)
    End Try
End Sub



Das funktioniert so weit schon super. ABER: Anscheinend müssen immer alle Bauteile schon vorher ausgecheckt sein.

Dazu habe ich den Zweizeiler aus den Snippets genommen:

Code:

Dim oControlDef As Inventor.ControlDefinition = ThisApplication.CommandManager.ControlDefinitions.Item("VaultCheckoutTop")
oControlDef.Execute2(True) 'synchronous execution; wait for the commands ending before rule exits


Der checkt aber die Normteile nicht aus, so dass ich in dem ersten Code die "DIN" und "ISO"-Teile ausgeschlossen habe. Aber irgendwie kommt immer noch ein Fehler:
"Fehler in ProcessSubComponents: Unbekannter Fehler (0x80004005 (E_FAIL))"

Hat da jemand einen Tipp für mich?

------------------
mit freundlichem Gruß
aus der Burggemeinde Brüggen
Lothar Boekels

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2788
Registriert: 15.11.2006

Windows 10 x64, AIP 2020-2025

erstellt am: 26. Feb. 2025 21:09    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 Lothar Boekels 10 Unities + Antwort hilfreich

Moin

Die Zeile kann nicht funktionieren, da intern die PropertySets anders aufgeteilt sind und andere Namen haben.

Code:
Dim partNumber As String = oSubComp.Definition.Document.PropertySets.Item("Project").Item("Part Number").Value

Mach daraus
Code:
Dim partNumber As String = oSubComp.Definition.Document.PropertySets.Item("Design Tracking Properties").Item("Part Number").Value

oder
Code:
Dim partNumber As String = oSubComp.Definition.Document.PropertySets.Item("{32853F0F-3444-11D1-9E93-0060B03C1CA6}").Item("Part Number").Value

Weiter hab ich den Code nicht untersucht.

Bin auch der Meinung, dass gekaufte und unteilbare Baugruppen nur in den Modelldaten aufgedröselt werden sollen, aber nicht in der strukturierten Ansicht. Ich meine, das war früher auch so. Mit dem jetzigen Verhalten gibt es doch gar keinen Unterschied mehr zwischen Normal, Gekauft und Unteilbar. 

------------------
MfG
Ralf

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

Lothar Boekels
Ehrenmitglied V.I.P. h.c.
Dipl.-Ing. Maschinenbau und CAD-Trainer



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

Beiträge: 3850
Registriert: 15.02.2001

DELL Precision 7520 Win11Pro-64
Inventor mit Vault Professional 2025
---------------------
Während man es aufschiebt,
verrinnt das Leben.
Lucius Annaeus Seneca
(ca. 4 v. Chr - 65 n. Chr.)

erstellt am: 27. Feb. 2025 09:22    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

Zitat:
Original erstellt von rkauskh:

Bin auch der Meinung, dass gekaufte und unteilbare Baugruppen nur in den Modelldaten aufgedröselt werden sollen, aber nicht in der strukturierten Ansicht. Ich meine, das war früher auch so. Mit dem jetzigen Verhalten gibt es doch gar keinen Unterschied mehr zwischen Normal, Gekauft und Unteilbar.  


Hallo Ralf,
vielen Dank für deine Zeit.

Das mit den Stücklisten ist so ein Thema, das bei Autodesk wohl nur am Rand behandelt wird, dabei haben alle die ganz kleinen Büros gar kein ERP oder so was. Da kommt es schon drauf an, dass man da ordentliche Stücklisten generieren kann.

Aber Jammern führt ja meist zu nichts. 

------------------
mit freundlichem Gruß
aus der Burggemeinde Brüggen
Lothar Boekels

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

Lothar Boekels
Ehrenmitglied V.I.P. h.c.
Dipl.-Ing. Maschinenbau und CAD-Trainer



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

Beiträge: 3850
Registriert: 15.02.2001

DELL Precision 7520 Win11Pro-64
Inventor mit Vault Professional 2025
---------------------
Während man es aufschiebt,
verrinnt das Leben.
Lucius Annaeus Seneca
(ca. 4 v. Chr - 65 n. Chr.)

erstellt am: 27. Feb. 2025 09:34    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

Für alle anderen:

Ich mache das jetzt so, dass ich die Baugruppe, die ich nicht weiter aufgelöst haben möchte mit einem iProperty "BOMauflösen" (Ja/Nein) versehen habe, dass im betreffenden Fall auf "Nein" setze.
mit dem MuM Multitool für Inventor schreibe ich die Stückliste in eine Excel-Tabelle und ebenfalls dieses iProperty. Hier in Spalte "L".
Dann habe ich mir ein Makro für Excel gemacht, dass die Zeilen mit den Komponenten dieser Baugruppe wieder entfernt.

Hier das Makro für Excel:

Code:

Sub LöscheKomponentenVonGekauftenBaugruppen()

' Makro
' Tastenkombination "Strg+Alt+d"

' Bereinigt Strukturstücklisten
'
' Wenn in Spalte "L" ein "Nein" steht, so sollen deren
' Komponenten nicht in der Stückliste erscheinen.
' Dazu wird die Positionsnummer der entsprechenden Zeile gemerkt und mit den nachfolgenden Zeilen verglichen.
' Beginnt die dortige Positionsnummer mit dem gleichen String, so ist es eine Komponente und die Zeile kann gelöscht werden.
' Bis ein Unterschied auftaucht. Dann beginnt das ganze von vorne mit der nächten Stelle, wo die Auflösung nicht gewünscht ist.
'

    Dim ws As Worksheet
    Dim letzteZeile As Long
    Dim i As Long
    Dim gemerkterWert As String
    Dim abschnittBeginn As Long
    Dim abschnittEnde As Long
   
    Set ws = ActiveSheet ' Verwendet das aktive Arbeitsblatt
    letzteZeile = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    abschnittBeginn = 6 ' Beginne bei Zeile 6
   
    Do While abschnittBeginn <= letzteZeile
        abschnittEnde = abschnittBeginn
        Do While abschnittEnde <= letzteZeile And ws.Cells(abschnittEnde, 1).Value <> ""
            abschnittEnde = abschnittEnde + 1
        Loop
       
        i = abschnittBeginn
       
        Do While i < abschnittEnde
            If ws.Cells(i, 12).Value = "Nein" Then  ' Spalte "L" -> 12
                gemerkterWert = ws.Cells(i, 1).Value
                i = i + 1
                Do While i < abschnittEnde And InStr(1, ws.Cells(i, 1).Value, gemerkterWert, vbTextCompare) = 1
                    ws.Rows(i).Delete
                    abschnittEnde = abschnittEnde - 1 ' Aktualisiere abschnittEnde nach dem Löschen
                    letzteZeile = letzteZeile - 1 ' Aktualisiere letzteZeile nach dem Löschen
                Loop
            Else
                i = i + 1
            End If
        Loop
       
        abschnittBeginn = abschnittEnde + 1
    Loop
End Sub


Dieses Makro habe ich in die PERSONAL.XLSB eingefügt, so dass es immer zur Verfügung steht.

Ich hoffe, das hilft hier dem einen oder anderen.

------------------
mit freundlichem Gruß
aus der Burggemeinde Brüggen
Lothar Boekels

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2788
Registriert: 15.11.2006

Windows 10 x64, AIP 2020-2025

erstellt am: 27. Feb. 2025 11:09    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 Lothar Boekels 10 Unities + Antwort hilfreich

Moin

Laut Aussage Autodesk bewirkt die Stücklistenstruktur nur, dass in der "Nur Bauteile" Ansicht die Bestandteile von gekauften/unteilbaren Baugruppen nicht auftauchen und stattdessen die Baugruppe wie ein Bauteil angezeigt wird. Soweit ist das nachvollziehbar. Und die Empfehlung in der strukturierten ist, nach dem Export herauslöschen. 
Du könntest auch deine Stückliste selbst zeilenweise exportieren und dabei die nicht benötigten wegfiltern. Aber wenn deine Lösung schon fertig läuft, kein Grund nochmal von vorn anzufangen.
ERP's müssen ja auch mit dem Ausgangsmaterial arbeiten. Da wir dann gern manuell drin herum korrigiert und eine erneute Übergabe schießt das alles ins Nirvana. Der Ansatz aus der CAD-BOM im ERP eine zweite Stückliste abzuleiten, umzustrukturieren und über Verlinkungen synchron zu halten ist mir noch nicht funktionierend untergekommen.

------------------
MfG
Ralf

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

Lothar Boekels
Ehrenmitglied V.I.P. h.c.
Dipl.-Ing. Maschinenbau und CAD-Trainer



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

Beiträge: 3850
Registriert: 15.02.2001

DELL Precision 7520 Win11Pro-64
Inventor mit Vault Professional 2025
---------------------
Während man es aufschiebt,
verrinnt das Leben.
Lucius Annaeus Seneca
(ca. 4 v. Chr - 65 n. Chr.)

erstellt am: 27. Feb. 2025 12:59    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

so ist es.

Mit dem Makro einfach mal auf den Auslöser drücken kann ja nicht falsch sein, da nur das gelöscht wird, was noch da ist. Wenn es schon weg ist, ist es halt schon weg. 

------------------
mit freundlichem Gruß
aus der Burggemeinde Brüggen
Lothar Boekels

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)2025 CAD.de | Impressum | Datenschutz