Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Inventor VBA: Alle Varianten einer IAssembly speichern

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
Autor Thema:  Inventor VBA: Alle Varianten einer IAssembly speichern (1500 mal gelesen)
WilliamSpiderWeb
Mitglied
Dipl.-Ing. (FH) Physikalische Technik


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

Beiträge: 96
Registriert: 09.01.2012

erstellt am: 20. Jan. 2012 15:26    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

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


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

Beiträge: 164
Registriert: 07.10.2009

Inventor Pro 2017
Cideon Workspace

erstellt am: 20. Jan. 2012 21:03    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 WilliamSpiderWeb 10 Unities + Antwort hilfreich

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


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

Beiträge: 96
Registriert: 09.01.2012

erstellt am: 21. Jan. 2012 12:54    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

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




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

Windows 10 x64, AIP 2022

erstellt am: 21. Jan. 2012 15:52    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 WilliamSpiderWeb 10 Unities + Antwort hilfreich

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


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

Beiträge: 96
Registriert: 09.01.2012

erstellt am: 24. Jan. 2012 09:12    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

Ich habe nun das oDoc.update direkt hinter factory.DefaultRow = row eingefügt.

Das Fehlerbild bleibt leider exakt so wie bisher.

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)2023 CAD.de | Impressum | Datenschutz