BOM Export / Inventor
|
Concierge
|
23. Jan. 2023, 14:54
|
Hey Leute, ich habe mal wieder ein Anliegen. Ich möchte gern meine Benutzerdefinierte Stückliste exportieren (nach . accdb). Das Funktioniert auch mit dem Standardbefehl, allerdings exportiert er nur die Standardliste und nicht die mit meinen Benutzerdefinierten Spalten. Zusammengefasst hätte ich gern: Die Strukturierte Stückliste mit allen Ebenen die genau so aussieht wie im Inventor. Kann mir da einer Helfen welche Befehle ich da brauche... VG Maik
|
|
rkauskh
|
23. Jan. 2023, 20:28
|
Hallo Wäre mir neu das Inventor nach .accdb exportiert. In eine Exceltabelle geht's einfach mit: Code:
Public Sub BOMExport() Dim oDoc As AssemblyDocument Set oDoc = ThisApplication.ActiveDocument Dim oBOM As BOM Set oBOM = oDoc.ComponentDefinition.BOM oBOM.StructuredViewFirstLevelOnly = False oBOM.StructuredViewEnabled = True Dim oStructuredBOMView As BOMView Set oStructuredBOMView = oBOM.BOMViews.Item("Strukturiert") oStructuredBOMView.Export "C:\temp\BOM-StructuredAllLevels.xls", kMicrosoftExcelFormat End Sub
Ansonsten kenne ich nur CSV oder TXT als Exportformat. Die Anpassung der Stückliste muss bereits durch den Benutzer erfolgt sein. Andernfalls kannst du nur versuchen die Anpassung als XML-Datei einmal zu exportieren und über die ImportBOMCustomization-Methode des BOM Objektes in der jeweiligen Baugruppe vor dem Export zu laden.
|
|
Concierge
|
06. Mrz. 2023, 11:13
|
Hallöchen  ich möchte gern vor dem Export abfragen ob die Datei schon existiert und ich frage ob diese ersetzt werden soll, welches ich so gemacht habe: If Not System.IO.File.Exists(BOMName) Then ThisBOM.Export("Structured", BOMName, kMicrosoftAccessFormat) Else If System.IO.File.Exists(BOMName) Then MessageBox.Show("Ersetzen???", "Datei existiert bereits...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) End If If vbYes Then ThisBOM.Export("Structured", BOMName, kMicrosoftAccessFormat) If vbNo Then End If End If End If Wenn ich Nein bestätige soll er ja abbrechen bzw. beenden. Er überschreibt die Datei aber trotzdem. Habe ich noch etwas vergessen oder muss ich die Abfrage anders gestalten? BTW , gibt es eine Liste mit den ganzen Befehlen und Erklärungen dazu? Da ich Anfänger bin wäre sowas ziemlich hilfreich. Mfg Maik
|
|
rkauskh
|
06. Mrz. 2023, 12:06
|
Moin Wo soll man da anfangen? Du speicherst den Rückgabewert deiner Abfrage nirgends. Deine nachfolgenden IF-Abfragen evaluieren immer zu True. Wurde da Code entfernt? Die Prüfung der MessageBox Antworten ergibt irgendwie auch nur innerhalb des True-Zweiges von If FileExists Sinn... Schreib dir Debuggermeldungen in die verschiedenen Zweige, damit du nachverfolgen kannst wann was passiert. Oder debugge über VisualStudio oder portiere den Codeauszug nach VBA und nutze im Inventor VBA-Editor den vorhandenen Debugger. P.S.: Code-Tags wären schön. Code:
If Not System.IO.File.Exists(BOMName) Then ThisBOM.Export("Structured", BOMName, kMicrosoftAccessFormat) Else Dim Result as DialogResult = MessageBox.Show("Ersetzen???", "Datei existiert bereits...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) If Result = DialogResult.Yes Then ThisBOM.Export("Structured", BOMName, kMicrosoftAccessFormat) End If End If
|
|
KraBBy
|
06. Mrz. 2023, 12:13
|
Da passen die die If nicht, außerdem muss die Antwort der Messagebox gemerkt werden (in eine Variable schreiben). So sollte es gehen (ohne es ausprobiert zu haben):
Code: If Not System.IO.File.Exists(BOMName) Then ThisBOM.Export("Structured", BOMName, kMicrosoftAccessFormat) Else 'File existiert ret = MessageBox.Show("Ersetzen???", "Datei existiert bereits...", MessageBoxButtons.YesNo,MessageBoxIcon.Question) If vbYes = ret Then ThisBOM.Export("Structured", BOMName, kMicrosoftAccessFormat) Else 'nein oder abgebrochen 'nix tun End If End If
|
|
|