| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Inventor VBA: Alle Varianten einer IAssembly speichern (1500 mal gelesen)
|
WilliamSpiderWeb Mitglied Dipl.-Ing. (FH) Physikalische Technik
Beiträge: 96 Registriert: 09.01.2012
|
erstellt am: 20. Jan. 2012 15:26 <-- editieren / zitieren --> Unities abgeben:
Ich versuche gerade per Makro die Varianten meiner iAssembly automatisch als Dateien zu speichern. beim Ausführen meines Codes bekomme ich eine Fehlermeldung: Run-time error '5': Invalid procedure call or arument Der Befehl, der den Fehler schmeißt, ist fett und kursiv gedruckt:
Code: Public Sub iassembly_member_generation() If ThisApplication.ActiveDocumentType <> kAssemblyDocumentObject Then MsgBox "Um dieses Makro verwenden zu können, muss eine Baugruppe aktiv sein" Exit Sub End If Dim oDoc As AssemblyDocument Set oDoc = ThisApplication.ActiveDocument Dim factory As iAssemblyFactory Set factory = oDoc.ComponentDefinition.iAssemblyFactory Dim row As iAssemblyTableRow For Each row In factory.TableRows factory.DefaultRow = row Dim outputfile As String outputfile = ThisApplication.FileLocations.Workspace + "\" + row.MemberName + ".asm" oDoc.SaveAs outputfile, True Dim oMemberDoc As AssemblyDocument Set oMemberDoc = ThisApplication.Documents.Open(outputfile, False) oMemberDoc.ComponentDefinition.iAssemblyFactory.Delete oMemberDoc.Save oMemberDoc.Close Next factory.DefaultRow = factory.TableRows.Item(1) Set oDoc = Nothing Set factory = Nothing Set oMemberDoc = Nothing End Sub
Bis dahin scheint allerdings alles korrekt abgelaufen zu sein: Ich konnte beobachten, dass, wie gewünscht, das erste Member der iAssembly-Variantentabelle aktiviert wurde. Der Dateipfad und -name in der Variable outputfile ist auch korrekt. Ich hoffe, um Eure Mithilfe beim Lösen meines Problems Achja, mein System ist ein Windows 7 und ich verwende Inventor 2012. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
noctis79 Mitglied Konstrukteur/ CAD-Administrator
Beiträge: 164 Registriert: 07.10.2009 Inventor Pro 2017 Cideon Workspace
|
erstellt am: 20. Jan. 2012 21:03 <-- editieren / zitieren --> Unities abgeben: Nur für WilliamSpiderWeb
Probier´s mal mit Call oDoc.SaveAs (outputfile, True) [Diese Nachricht wurde von noctis79 am 20. Jan. 2012 editiert.] In der Zeile darüber würde ich allerdings statt "+" ein "&" nutzen... [Diese Nachricht wurde von noctis79 am 20. Jan. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WilliamSpiderWeb Mitglied Dipl.-Ing. (FH) Physikalische Technik
Beiträge: 96 Registriert: 09.01.2012
|
erstellt am: 21. Jan. 2012 12:54 <-- editieren / zitieren --> Unities abgeben:
Danke für die Antwort, aber das ist leider nicht des Rätzels Lösung. Ich bin zwar schon ein wenig aus dem alten VB raus und programmiere mehr im VB.NET, aber wenn ich mich richtig erinnere, sind die von Dir beschriebenen Varianten 1 zu 1 austauschbar. Hab's trotzdem ausprobiert, und ergibt das gleiche Fehlerbild. Der gleiche Code (lediglich AssemblyDocument durch PartDocument ersetzt), funktioniert übrigens einwandfrei. 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: 21. Jan. 2012 15:52 <-- editieren / zitieren --> Unities abgeben: Nur für WilliamSpiderWeb
Hi Probier mal nach dem Umschalten der DefaultRow ein oDoc.Update. Eventuell muß deine iAssembly nur aktualisiert werden, bevor gespeichert werden kann. Dafür würde jedenfalls sprechen, daß der erste Durchlauf funktioniert. ------------------ MfG RK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WilliamSpiderWeb Mitglied Dipl.-Ing. (FH) Physikalische Technik
Beiträge: 96 Registriert: 09.01.2012
|
erstellt am: 24. Jan. 2012 09:12 <-- editieren / zitieren --> Unities abgeben:
|