| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Anzahl an Teilen (1544 mal gelesen)
|
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013/2015 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 18. Jun. 2014 16:03 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich stehe gerade etwas auf dem Schlauch. Ich möchte die Anzahl aller Bauteile aus einer Baugruppe direkt auslesen, da die Stückliste leider aus irgendeinem Grund nur Unsinn auswirft. Jetzt habe ich aber das Problem, dass wenn ich alle Teile in der Baugruppe rekursiv durchlaufe, dann gibt der mir jeweils nur ein Exemplar der verbauten Teile. Wie kann ich denn jetzt abfragen, wieviele Kopien des Teils in der Baugruppe verbaut sind? mein Code bis jetzt: Code:
Option ExplicitPublic Sub Stüli() Dim InvApp As Inventor.Application Dim oDoc As Inventor.AssemblyDocument Set InvApp = ThisApplication Set oDoc = InvApp.ActiveDocument Dim Exapp As Excel.Application Set Exapp = CreateObject("Excel.Application") Exapp.Visible = True Dim workbook As Excel.workbook Set workbook = Exapp.Workbooks.Add Dim displayname As String Dim Name As String Dim a As Integer a = 3 Dim subdoc As Document Dim Part As PartDocument Dim paramlänge As Parameter Dim Propertyset As Propertyset Dim Property As Property For Each subdoc In oDoc.AllReferencedDocuments If subdoc.DocumentType <> kAssemblyDocumentObject Then displayname = subdoc.displayname Set Propertyset = subdoc.PropertySets.Item("Design Tracking Properties") For Each Property In Propertyset If Property.displayname = "Bauteilnummer" Then Name = Property.Expression End If Next ElseIf subdoc.DocumentType = kAssemblyDocumentObject Then For Each Part In subdoc.AllReferencedDocuments displayname = Part.displayname Set Propertyset = Part.PropertySets.Item("Design Tracking Properties") For Each Property In Propertyset If Property.displayname = "Bauteilnummer" Then Name = Property.Expression End If Next Next End If With workbook .Sheets("Tabelle1").Cells(a, 1) = Name .Sheets("Tabelle1").Cells(a, 3) = displayname End With
a = a + 1 Next End Sub
Ist wahrscheinlich absolut einfach, aber ich komme im Moment einfach nicht drauf.
Gruß Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RolandD Mitglied
Beiträge: 533 Registriert: 07.01.2005 i7-9700k 32GB DDR4-RAM Nvidia RTX 2060 SSD 970 m.2 Win10-64 (21H2) AIP 2020.3 Dell U3417W
|
erstellt am: 18. Jun. 2014 21:03 <-- editieren / zitieren --> Unities abgeben: Nur für Chris 31
Hallo Chris, das kann si nicht gehen. Du erhältst natürlich jedes subdoc In oDoc.AllReferencedDocuments nur 1 Mal gelistet, unabhängig von der tatsächlichen Anzahl. Probiere mal über die Stückliste "Nur Bauteile"
Code: ' Ansicht einstellen Dim oBOMView As BOMView Set oBOMView = oBOM.BOMViews.Item(3) '1-Modelldaten 2-Strukturiert 3-Nur Bauteile) Dim Anzahl As Integer Dim Lieferant As String Dim Nr As Integer For Nr = 1 To oBOMView.BOMRows.Count 'hier die Quantity von oBOMView.BOMRows.Item(Nr) auswerten: Anzahl = oBOMView.BOMRows.Item(Nr).ItemQuantity Lieferant = oBOMView.BOMRows.Item(Nr).ComponentDefinitions.Item(1).Document.PropertySets.Item(3).Item(15).Expression If Lieferant = "" Then MsgBox "Dateien: " & oBOMView.BOMRows.Item(Nr).ComponentDefinitions.Item(1).Document.FullFileName End If Next
Ich lese in dem Beispiel alle Teile aus, die keinen Lieferant haben (das sind unsere Fertigungsteile) Da ich eine Liste für die Doku erstelle, brauche ich keine Anzahl. Hinweis: unteilbare BGs werden in der Stückliste "Nur Bauteile" als IPTs aufgelistet ------------------ Gruß Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013/2015 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 20. Jun. 2014 06:46 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen Roland, ich habe gerade versucht deinen Code laufen zu lassen. in der Zeile Code: Set oBOMView = oBOM.BOMViews.Item(3) '1-Modelldaten 2-Strukturiert 3-Nur Bauteile)
gibt er mir allerdings eine Fehlermeldung: Run-time error '5': Invalid procedure call or Argument Woran kann das liegen? Gruß Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 20. Jun. 2014 09:59 <-- editieren / zitieren --> Unities abgeben: Nur für Chris 31
Moin Die Ansicht "nur Bauteile" ist in deiner Baugruppe nicht aktiviert. Setze vorher eine Prüfung ein.
Code: If oBOM.PartsOnlyViewEnabled = False Then oBOM.PartsOnlyViewEnabled = True End If
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013/2015 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 20. Jun. 2014 11:04 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von rkauskh: MoinDie Ansicht "nur Bauteile" ist in deiner Baugruppe nicht aktiviert. Setze vorher eine Prüfung ein.
Code: If oBOM.PartsOnlyViewEnabled = False Then oBOM.PartsOnlyViewEnabled = True End If
Hallo Ralf, doch, sie ist aktiviert. Deswegen verstehe ich ja die Fehlermeldung auch nicht. Auch nach der Prüfung, die du empfohlen hast, bekomme ich die gleiche Fehlermeldung. Gruß Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 20. Jun. 2014 11:31 <-- editieren / zitieren --> Unities abgeben: Nur für Chris 31
Hallo Ist die strukturierte Ansichte deaktiviert? Deaktivierte Ansichten tauchen in der API nicht auf, weswegen Item(3) nur im Falle der Aktivierung aller Ansichten möglich ist. Du solltest meiner Meinung eh von Item(3) weggehen und die Stücklistenansicht mit ihrem Namen Item("Nur Bauteile") ansprechen. Das ist zuverlässiger. Wenn's das auch nicht ist, weiß ich auch nicht mehr. ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013/2015 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 20. Jun. 2014 11:53 <-- editieren / zitieren --> Unities abgeben:
|
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013/2015 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 23. Jun. 2014 07:10 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen, jetzt habe ich damit aber doch nochmal ein Problem. In neun von zehn Fällen funktioniert die Extraktion. Im zehnten Fall allerdings haut er mir jedes Mal die bekannte Fehlermeldung raus und beim debuggen zeigt er mir wieder die Zuweisung zur Ansicht Item("Nur Bauteile"). Es sind aber identische Baugruppen, bei der einen läuft es fehlerlos durch, bei der anderen kommt der Fehler. Kann mir irgendeiner sagen, woran das liegen könnte? Gruß Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013/2015 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 23. Jun. 2014 07:35 <-- editieren / zitieren --> Unities abgeben:
Ich glaube ich habe das Problem gefunden. Die eine Baugruppe steht auf Detailgenauigkeit "Hauptansicht", die andere Baugruppe(in der es nicht läuft) auf einer Benutzerdetailgenauigkeit. Es scheint, dass man die Stücklistenansicht nicht zuweisen kann, sobald man nicht auf "Hauptansicht" ist. Weiß vielleicht jemand, wie man dieses Problem beheben kann, da ich ja eine Benutzerdetailgenauigkeit brauche, sonst kann ich ja keine Teile unterdrücken? [Diese Nachricht wurde von Chris 31 am 23. Jun. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |