| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Stückliste sortieren in Baugruppe (3881 mal gelesen)
|
Markosiny Mitglied
Beiträge: 31 Registriert: 21.11.2011 Inventor Prof. 2012, Vault Workgroup 2012
|
erstellt am: 18. Sep. 2012 16:37 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, als blutiger VBA Anfänger versuche ich schon seid Stunden ein Makro zu schreiben, wie ich eine Stückliste nach Bauteilnummern (Abwärts) sortiere. Dies sollte in der struktirierten Ansicht "All Levels" geschehen. Einen kleinen Teil habe ich schon zusammengestellt aber selbst der hat einen Fehler. Public Sub BOMSort() ' Set a reference to the assembly document. ' This assumes an assembly document is active. Dim oDoc As AssemblyDocument Set oDoc = ThisApplication.ActiveDocument ' Set a reference to the BOM Dim oBOM As BOM Set oBOM = oDoc.ComponentDefinition.BOM Dim FirstLevelOnly As Boolean If MsgBox("First level only?", vbYesNo) = vbYes Then FirstLevelOnly = True Else FirstLevelOnly = False End If ' Make sure that the structured view is enabled. oBOM.StructuredViewEnabled = True
' Set a reference to the "Structured" BOMView Dim oStructuredBOMView As BOMView Set oStructuredBOMView = oBOM.BOMViews.Item("Structured") <-- Hier kommt ein Fehler! End Sub
Danke für die Hilfe.
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: 18. Sep. 2012 17:08 <-- editieren / zitieren --> Unities abgeben: Nur für Markosiny
|
Markosiny Mitglied
Beiträge: 31 Registriert: 21.11.2011 Inventor Prof. 2012, Vault Workgroup 2012
|
erstellt am: 19. Sep. 2012 10:17 <-- editieren / zitieren --> Unities abgeben:
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 19. Sep. 2012 11:16 <-- editieren / zitieren --> Unities abgeben: Nur für Markosiny
Hi Ich hätt's nicht geschrieben, wenn es nicht funktionieren würde. Bei mir jedenfalls. Ist die Baugruppe durch Vault geschützt? Kannst du über die GUI auf die Stückliste zugreifen und sie sortieren? Tritt der Fehler auch in einer leeren Testbaugruppe auf? Ist der Code vollständig oder hast du Teile dazwischen herausgenommen? Kannst du eine leere Test-BG hochladen, in der der Fehler bei dir auftritt? ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Markosiny Mitglied
Beiträge: 31 Registriert: 21.11.2011 Inventor Prof. 2012, Vault Workgroup 2012
|
erstellt am: 19. Sep. 2012 12:28 <-- editieren / zitieren --> Unities abgeben:
Hallo, du hattest recht. In einer leeren Baugruppen kommt die Meldung nicht mehr. Liegt wohl an Vault. Ich habe mir jetzt in der Programmierungshilfe die Sort Funktion angeschaut. Hier ist aber nur die Deklaration hinterlegt. Gibt es nähere Info's wie Sort/Renumber Funktion ausgeführt wird? Sub Sort(PrimaryColumnTitle As String, ByRef PrimaryColumnAscending As [defaultvalue(-1)] VARIANT_BOOL, ByRef SecondaryColumnTitle As [defaultvalue("")] BSTR, ByRef SecondaryColumnAscending As [defaultvalue(-1)] VARIANT_BOOL, ByRef TertiaryColumnTitle As [defaultvalue("")] BSTR, ByRef TertiaryColumnAscending As [defaultvalue(-1)] VARIANT_BOOL)
Sub Renumber(ByRef StartValue As [defaultvalue(1)] long, ByRef Increment As [defaultvalue(1)] long, ByRef BOMRowsToRenumber As [optional] VARIANT) 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: 19. Sep. 2012 14:40 <-- editieren / zitieren --> Unities abgeben: Nur für Markosiny
Hallo Die Subs werden einfach aufgerufen. Das Makro sortiert nach Spalte "Objekt" und nummeriert in Zehnerschritten neu durch. Code: Public Sub BOMSort() ' Set a reference to the assembly document. ' This assumes an assembly document is active. Dim oDoc As AssemblyDocument Set oDoc = ThisApplication.ActiveDocument ' Set a reference to the BOM Dim oBOM As BOM Set oBOM = oDoc.ComponentDefinition.BOM Dim FirstLevelOnly As Boolean If MsgBox("First level only?", vbYesNo) = vbYes Then FirstLevelOnly = True Else FirstLevelOnly = False End If ' Make sure that the structured view is enabled. oBOM.StructuredViewEnabled = True
' Set a reference to the "Structured" BOMView Dim oStructuredBOMView As BOMView Set oStructuredBOMView = oBOM.BOMViews.Item("Strukturiert") '<-- Hier kommt ein Fehler! Call oStructuredBOMView.Sort("Object") Call oStructuredBOMView.Renumber(10, 10) End Sub
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Markosiny Mitglied
Beiträge: 31 Registriert: 21.11.2011 Inventor Prof. 2012, Vault Workgroup 2012
|
erstellt am: 19. Sep. 2012 14:56 <-- editieren / zitieren --> Unities abgeben:
Hallo, das ist ja Super! Aber die Sort Funktion Sortiert immer nur nach einer Spalte "aufwärts". In der Stückliste kann man auswählen, dass erst nach Bauteilnummer und dann nach Länge sortiert wird und das ganze "abwärts" nicht "aufwärts" Funktioniert aber nicht wenn ich das folgendermaßen aufstelle: Call oStructuredBOMView.Sort("Bauteilnummer") Call oStructuredBOMView.Sort("Laenge") Hier sortiert er erst nach Bauteilnummer und dann unabhängig davon nach der Laenge. 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: 19. Sep. 2012 15:04 <-- editieren / zitieren --> Unities abgeben: Nur für Markosiny
Hallo Kommasepariert in eine Zeile schreiben. Code: Call oStructuredBOMView.Sort("Bauteilnummer",False,"Laenge",False)
------------------ MfG Ralf [Diese Nachricht wurde von rkauskh am 19. Sep. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Markosiny Mitglied
Beiträge: 31 Registriert: 21.11.2011 Inventor Prof. 2012, Vault Workgroup 2012
|
erstellt am: 19. Sep. 2012 15:37 <-- editieren / zitieren --> Unities abgeben:
Das hat ja Super geklappt! Danke Aber einer Frage noch. Kann man das nicht absteigend sortieren? D.h. nach Bauteilnummer von Z-A?
Und was bedeutet das True und False hinter der Bauteilnummer? Wenn ich das auf True setze, dann kann ich keine Änderung feststellen. 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: 19. Sep. 2012 15:55 <-- editieren / zitieren --> Unities abgeben: Nur für Markosiny
|
Markosiny Mitglied
Beiträge: 31 Registriert: 21.11.2011 Inventor Prof. 2012, Vault Workgroup 2012
|
erstellt am: 19. Sep. 2012 16:21 <-- editieren / zitieren --> Unities abgeben:
Es kann wahrscheinlich sein, dass meine Bauteilnummern mit Buchstaben anfangen und nicht mit Zahlen. Aber wenn das händisch in der Stückliste eingibt, dann sortiert er das auch richtig. Das ist natürlich nicht schön. Da muss ich schauen wie er auch die Buchstaben erkennt. Eins noch: Wenn ich meinen VB Code in iLogic einfüge und den Haken bei "reiner VB Code" setze, dann kommt ne Meldung: Regelkompilierungsfehler in Regel1, in 00001235.iam Fehler in Zeile 1 : Die Anweisung ist in einem Namespace ungültig. Ich möchte, dass dieser Code beim speichern ausgeführt wird. Daher in iLogic!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Markosiny Mitglied
Beiträge: 31 Registriert: 21.11.2011 Inventor Prof. 2012, Vault Workgroup 2012
|
erstellt am: 19. Sep. 2012 16:27 <-- editieren / zitieren --> Unities abgeben:
|
Markosiny Mitglied
Beiträge: 31 Registriert: 21.11.2011 Inventor Prof. 2012, Vault Workgroup 2012
|
erstellt am: 19. Sep. 2012 16:51 <-- editieren / zitieren --> Unities abgeben:
Hab dem dieses Makro halbwegs funktionier, wollte ich das an meiner Baugruppe ausprobieren. Eine Baugruppe aus Vault ausgecheckt und den VB Code eingefügt und gestartet. Kommt aber immer noch die Fehlermeldung die ich am Anfang beschrieben habe. Es sind zwar freigegeben Bauteile vorhanden aber die Stückliste lässt sich von Hand sortieren bzw. mit der Sortierfunktion in der Stückliste. Wie kommt sowas zustande? 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: 19. Sep. 2012 18:50 <-- editieren / zitieren --> Unities abgeben: Nur für Markosiny
Hi Du hast aber nicht zufällig die Stückliste im Inventor offen, wenn du das Makro probierst? Dann krieg ich auch diese Fehlermeldung. Die Sort-Funktion scheint nicht ganz fehlerfrei zu sein. Es ist egal was man nach der ersten Sortierspalte eingibt - es wird ignoriert. Da ich keinen Vault habe, kann ich das nicht untersuchen. Keine Ahnung ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |