Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor
  Strukturierte Stückliste über alle Ebenen

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:  Strukturierte Stückliste über alle Ebenen (1499 / mal gelesen)
GRM
Mitglied
CAD/PDM-Administrator / Konstrukteur Maschinenbau


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

Beiträge: 282
Registriert: 02.06.2005

HP Z440, Xeon, 32 GB RAM, Quadro M4000;
Windows7-64; AIP2020; Vault Professional 2020

erstellt am: 10. Aug. 2021 11:23    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


BoM.jpg

 
Hallo,

ich würde gerne eine strukturierte Stückliste über alle Ebenen mit korrekten Positionsnummern aus Inventor exportieren.

z.B.:
Baugruppe 068487 hat Pos. 1, 2, 10
Verbaut man diese Baugruppe in einer Überbaugruppe, gibt die strukturierte Stückliste über alle Ebenen folgendes aus:

Pos. 1.1, 1.2, 1.3

sollte jedoch so aussehen:
Pos. 1.1, 1.2, 1.10

Warum ist dass so?
Gibt es eine Möglichkeit die tatsächlichen Positionsnummern der Unterbaugruppen zu exportieren?

------------------
Gruß Markus

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

Roland Schröder
Moderator
Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen




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

Beiträge: 13438
Registriert: 02.04.2004

IV 2024

erstellt am: 10. Aug. 2021 13:41    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 GRM 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von GRM:
Warum ist dass so?
Weil Positionsnummer und Bauteilnummern zwei verschiedenen Dinge sind!

Bauteilnummern identifizieren Maschinenkomponenten.

Positionsnummern gelten per Definition nur als Bezug auf einer einzigen Zeichnung und werden daher von Inventor auch nur in Bezug auf die jeweilige Zeichnung vergeben.

Positionsnummer und Bauteilnummer werden zwar oft und gern übereinstimmend gewählt, aber das funktioniert nur in begrenzten Fällen. Spätestens wenn Bauteile aus verschiedenen Konstruktionen zusammen verwendet werden, gibt es Kuddelmuddel.

Ich verwende schon lange gar keine Positionsnummern mehr, sondern direkt Bauteilnummern. Die sind zwar länger, aber im Gegensatz zur Tuschezeit kostet es keine Mühe, die hinzuschreiben, und man muss nicht erst in der Stückliste nachsehen, um zu wissen, welche Komponente das sein soll.

------------------
Roland  
www.Das-Entwicklungsbuero.de

It's not the hammer - it's the way you hit!

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

GRM
Mitglied
CAD/PDM-Administrator / Konstrukteur Maschinenbau


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

Beiträge: 282
Registriert: 02.06.2005

HP Z440, Xeon, 32 GB RAM, Quadro M4000;
Windows7-64; AIP2020; Vault Professional 2020

erstellt am: 12. Aug. 2021 09:38    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

Hi,
für alle die das gleiche Problem haben.
Habe dazu eine iLogic gefunden, die das Problem löst:

Sub Main()
Dim sErrMsgBadDoc As String
sErrMsgBadDoc = "This macro requires active assembly document."
If ThisApplication.ActiveDocument Is Nothing Then
    MessageBox.Show(sErrMsgBadDoc)
    Exit Sub
End If

If Not TypeOf ThisApplication.ActiveDocument Is AssemblyDocument Then
    MessageBox.Show(sErrMsgBadDoc)
    Exit Sub
End If

Dim oTxnMgr As TransactionManager = ThisApplication.TransactionManager
Dim oTxn As Transaction = oTxnMgr.StartTransaction(ThisApplication.ActiveDocument, "BOM Sync")

Dim oDoc As AssemblyDocument
oDoc = ThisApplication.ActiveDocument
Dim oBOM As BOM = oDoc.ComponentDefinition.BOM

oBOM.StructuredViewEnabled = True
oBOM.StructuredViewFirstLevelOnly = False
oBOM.StructuredViewDelimiter = "."

' Find structured view
Dim oStructView As BOMView = oBOM.BOMViews("Structured")

If oStructView Is Nothing Then
    ' No struct view even if enabled? Probably because of LOD
    MessageBox.Show("Cannot get structured BOM view, make sure Master LOD is active")
oTxn.End
    Exit Sub
End If

' Now get rows and update item numbers for sub assemblies recursively
Dim oRow As BOMRow
For Each oRow In oStructView.BOMRows
    If Not oRow.ChildRows Is Nothing Then
        UpdateItemNumbers(oRow, oBOM.StructuredViewDelimiter)
    End If
Next oRow

oStructView.Sort("Item")

MessageBox.Show("BOM item numbers have been synced", "BOM Sync")
oTxn.End
End Sub

Sub UpdateItemNumbers(oRow1 As BOMRow, sDelim As String)
' assembly row expected as input
If oRow1.ChildRows Is Nothing Then
    Exit Sub
End If

' get sub BOM and its structured view
Dim oBOM2 As BOM = oRow1.ComponentDefinitions(1).BOM
If oBOM2.StructuredViewEnabled = False Then
Try
oBOM2.StructuredViewEnabled = True
Catch
'MessageBox.Show("Could not enable BOM on " & oRow1.ComponentDefinitions.Item(1).Document.PropertySets.Item("Design Tracking Properties").Item("Part Number").Value)
GoTo NextRow:
End Try
End If
Dim oStructView2 As BOMView = oBOM2.BOMViews("Structured")

' No structured view in this sub bom? Nothing to do.
If oStructView2 Is Nothing Then
    Exit Sub
End If

' Now iterate sub rows and match them to rows in sub bom. Transfer item number if needed
Dim oRow2 As BOMRow
For Each oRow2 In oRow1.ChildRows
'MessageBox.Show(oRow2.ComponentDefinitions.Item(1).Document.PropertySets.Item("Design Tracking Properties").Item("Part Number").Value)
    ' Find this row in sub bom
    Dim oRow3 As BOMRow = FindRow(oStructView2, oRow2)

    If Not oRow3 Is Nothing Then
        If Not oRow2.ChildRows Is Nothing Then
            ' Workaround for assembly renumbering to preserve parent numbers
            ModifyAssemblyItemNumber(oRow2, oRow3, sDelim)
        ElseIf TypeOf oRow2.ComponentDefinitions.Item(1) Is VirtualComponentDefinition Then
'MessageBox.Show(oRow2.ComponentDefinitions(1).PropertySets.Item("Design Tracking Properties").Item("Part Number").Value & vbCr & oRow3.ItemNumber)
Dim oItem As String' = VirtualItem(oRow3)
oItem = oRow3.ItemNumber
oRow2.ItemNumber = oItem
Else
            oRow2.ItemNumber = oRow3.ItemNumber
        End If
    End If
    'Recurse
    If Not oRow2.ChildRows Is Nothing Then
        UpdateItemNumbers(oRow2, sDelim)
    End If
Next oRow2
NextRow:
End Sub

' compares two BOM rows from different BOMs if they refer to same components
Function MatchRows(oRow1 As BOMRow, oRow2 As BOMRow) As Boolean
If oRow1.ComponentDefinitions.Count <> oRow2.ComponentDefinitions.Count Then
    MatchRows = False
    Exit Function
End If
Dim i As Integer
For i = 1 To oRow1.ComponentDefinitions.Count
    If oRow1.ComponentDefinitions(i).Document.FullDocumentName <> oRow2.ComponentDefinitions(i).Document.FullDocumentName Then
        MatchRows = False
        Exit Function
    End If
Next i
'Fix for virtual components getting all the same item number
If TypeOf oRow1.ComponentDefinitions(1) Is VirtualComponentDefinition Then
If oRow1.ComponentDefinitions(1).PropertySets.Item("Design Tracking Properties").Item("Part Number") IsNot oRow2.ComponentDefinitions(1).PropertySets.Item("Design Tracking Properties").Item("Part Number")
MatchRows = False
Exit Function
End If
End If
MatchRows = True
End Function

' finds BOM row in the specified BOM view which refer to same component as input row
' no recursion, first level search only
Function FindRow(oBOMView2 As BOMView, oRow2 As BOMRow) As BOMRow
Dim oRow As BOMRow
For Each oRow In oBOMView2.BOMRows
    If MatchRows(oRow2, oRow) Then
        FindRow = oRow
        Exit For
    End If
Next oRow
End Function

' Modyfing item numbers for assembly works differently than for parts.
' For part, only last part of the number is modified (for example "3.4", when set to "10" will change to "3.10").
' For assemblies, override is set which replaces everything (for example "3.4", when set to "10" will change to "10").
' Looks like a defect in API, it should be consistent. Ideally, API should provide both ways of modifying the part number.
' Workaround it to preserve the inherited part of the number (but it won't update when parent's number changes because of
' override.
Sub ModifyAssemblyItemNumber(oDestRow As BOMRow, oSrcRow As BOMRow, sDelim As String)
' source item number is always 1st level only
' get last part of current item number, use current delimiter
Dim sItem As String
sItem = oDestRow.Parent.ItemNumber
sItem = sItem & sDelim & oSrcRow.ItemNumber
oDestRow.ItemNumber = sItem
End Sub

------------------
Gruß Markus

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: 2630
Registriert: 15.11.2006

Windows 10 x64, AIP 2020-2025

erstellt am: 13. Aug. 2021 09:31    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 GRM 10 Unities + Antwort hilfreich

Moin

Bitte nutze doch die Codetags, das erhöht die Lesbarkeit deines Beitrags.

Welchen Grund gibt es für diese Anforderung? Ich höre so was immer wieder, aber eine sinnvolle Begründung gab's noch nie. Die häufigste Folge dieser Lücken in der Nummerierung waren Rückfragen aus der Fertigung, wo denn die fehlenden Positionen zu finden sind.

Dein Code funktioniert im besten Fall mit einem englischsprachigen Inventor. Im deutschen gibt's keine Stücklistenansicht "Structured".

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

RKW Solutions GmbH
www.RKW-Solutions.com

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