Hot News:
   

Mit Unterstützung durch:

  Foren auf CAD.de
  Inventor
  Inventor – Mehrere Volumenkörper automatisch als einzelne STEP-Dateien exportieren?

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

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
  
AutoCAD Architecture Schulung mit IHK-Zertifizierung , ein Kurs (bis zu 100% förderbar mit Bildungsgutschein)
Autor Thema:  Inventor – Mehrere Volumenkörper automatisch als einzelne STEP-Dateien exportieren? (153 / mal gelesen)
Muecke.1982
Mitglied



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

Beiträge: 1261
Registriert: 23.07.2009

[Inventor Professional 2026] - [WIN 11]

erstellt am: 12. Dez. 2025 19: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

Hallo zusammen,

ich hätte eine Frage zum Export von Volumenkörpern in Autodesk Inventor.

Gibt es eine Möglichkeit, ein Bauteil, das mehrere Volumenkörper enthält, so zu exportieren, dass jeder Volumenkörper automatisch eine eigene STEP-Datei erhält – ohne vorher über „Komponenten erstellen“ gehen zu müssen?

Aktuell mache ich es so, dass ich alle anderen Volumenkörper ausblende, die Datei als STEP exportiere, den Dateinamen anpasse und das Ganze für jeden Volumenkörper wiederhole.
Das funktioniert, ist aber ziemlich umständlich.

Gibt es dafür eine eingebaute Funktion oder lässt sich das nur über ein Makro automatisieren?

Gruß
Mücke

------------------
[Inventor Professional 2026] - [WIN 11]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik, Master Eng. IT-Security & Forensic




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

Windows 10 x64, AIP 2020-2025

erstellt am: 13. Dez. 2025 09:55    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 Muecke.1982 10 Unities + Antwort hilfreich

Moin

Hast du mal eines deiner STEPs zurück importiert? Meines Wissens hat die Sichtbarkeit von Volumenkörpern keinen Einfluss auf den Export, sprich es wird trotzdem alles exportiert.
Es gibt keine eingebaute Funktion, weil es keinen selektiven Export von Volumenkörpern gibt. Mit einem Makro lässt sich das sicher automatisieren, aber im Hintergrund wird man trotzdem eine Baugruppe mit Komponenten erstellen müssen und daraus exportieren.

------------------
MfG
Ralf

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nightsta1k3r
Ehrenmitglied V.I.P. h.c.
retired ...



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

Beiträge: 11522
Registriert: 25.02.2004

Hier könnte ihre Werbung stehen!

erstellt am: 13. Dez. 2025 10:13    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 Muecke.1982 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von rkauskh:
Meines Wissens hat die Sichtbarkeit von Volumenkörpern keinen Einfluss auf den Export

das hatte von Version zu Version unterschiedliches Verhalten 
manchmal wurde immer Master exportiert, manchmal der aktive View
muß man individuell prüfen, sogar abhängig vom Servicepack ...

------------------

------------------
Es reicht nicht, sich Blödsinn nur auszudenken, wenn man ihn nicht auch bis zur letzten Konsequenz durchzieht!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik, Master Eng. IT-Security & Forensic




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

Windows 10 x64, AIP 2020-2025

erstellt am: 13. Dez. 2025 10:27    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 Muecke.1982 10 Unities + Antwort hilfreich

Moin

Da komm ich jetzt nicht mit. Sprichst du von Ansichtsdarstellungen? Im Bauteil? Oder meinst du Modellzustände? 

------------------
MfG
Ralf

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Muecke.1982
Mitglied



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

Beiträge: 1261
Registriert: 23.07.2009

[Inventor Professional 2026] - [WIN 11]

erstellt am: 13. Dez. 2025 11:46    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

Hallo zusammen,

Zitat:
Original erstellt von rkauskh:
Hast du mal eines deiner STEPs zurück importiert?


Ja, das habe ich gemacht. Ich habe auf diese Weise bereits Daten drucken und CNC-bearbeiten lassen. Bisher hat das gut funktioniert.

Zitat:
Original erstellt von nightsta1k3r:
das hatte von Version zu Version unterschiedliches Verhalten  

Oh, ich dachte, dieses Verhalten wäre Standard und nicht von der Version und dem Update des Inventors abhängig.


Bisher hat es immer gut geklappt, aber es ist viel Handarbeit.


da ich schon einen STEp Export habe, der aber immer alles Exportirt muss ich mal schauen ob ich es verstehe wie man per Makro Volumenkörper ein und ausblenen kann :-)
dann könnte ich das Makro erweitern.

0) Prüfe, ob die Datei gespeichert wurde. Wenn nicht, hole dies nach.
1) Prüfe, ob ein Volumenkörper existiert. Merke dir die Anzahl der Volumenkörper.
2) Blende alle Volumenkörper aus.
3) Schleife von 1 bis Ende Volumenkörper
4) Blende den aktuellen Volumenkörper ein.
Exportiere ihn mit dem Namen des Volumenkörpers im STEP-Format.
Speicherort: Bauteilpfad + „/STEP/”
4) Sage, dass du fertig bist und was exportiert wurde.


Haha, ich bin gespannt, ob ich das hinbekomme und es noch im Jahr 2025 fertigstellen werde. 

------------------
[Inventor Professional 2026] - [WIN 11]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik, Master Eng. IT-Security & Forensic




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

Windows 10 x64, AIP 2020-2025

erstellt am: 13. Dez. 2025 12:09    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 Muecke.1982 10 Unities + Antwort hilfreich

Moin

Oh Mann, die DIVA macht einen fertig. 2025 so , 2026 anders herum. 

Volumenkörper in dem Sinne gibt es in der API nicht. Such nach SurfaceBody mit Eigenschaft IsSolid=True.
Also PartDocument.ComponentDefinition.SurfaceBodies liefert die die Collection. Die hat eine Count Eigenschaft, selber zählen und merken nicht notwendig.  In deinem Pseudocode fehlt den aktuellen Volumenkörper nach Export wieder unsichtbar schalten.

------------------
MfG
Ralf

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nightsta1k3r
Ehrenmitglied V.I.P. h.c.
retired ...



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

Beiträge: 11522
Registriert: 25.02.2004

Hier könnte ihre Werbung stehen!

erstellt am: 13. Dez. 2025 14:05    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 Muecke.1982 10 Unities + Antwort hilfreich

#
Zitat:
Original erstellt von rkauskh:
Sprichst du von Ansichtsdarstellungen?

ja, das war schon lange vor den Modellzuständen einmal so, einmal anders ...

------------------

------------------
Es reicht nicht, sich Blödsinn nur auszudenken, wenn man ihn nicht auch bis zur letzten Konsequenz durchzieht!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Muecke.1982
Mitglied



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

Beiträge: 1261
Registriert: 23.07.2009

[Inventor Professional 2026] - [WIN 11]

erstellt am: 14. Dez. 2025 00:28    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

Hm, das ging jetzt schneller als gedacht.
GPT hat das sehr gut hinbekommen. 

Beim letzten Mal war da was mit einer ID, die, meine ich, angepasst werden musste, nach ein paar Tagen, da die auf einmal nicht mehr ging oder so.
Mal schauen, ob das diesmal auch wiederkommt.


Hier ist der Code!

Gruß Mücke

Code:

Option Explicit

Public Sub Export_Solids_To_Step_Separate()

    Dim invApp As Application
    Dim invDoc As Document
    Dim partDoc As PartDocument
    Dim compDef As PartComponentDefinition
    Dim bodies As SurfaceBodies

    Dim oBody As SurfaceBody
    Dim oHideBody As SurfaceBody

    Dim stepAddIn As TranslatorAddIn
    Dim context As TranslationContext
    Dim options As NameValueMap
    Dim dataMedium As dataMedium

    Dim originalPath As String
    Dim stepFolder As String
    Dim exportFile As String
    Dim exportList As String

    '-----------------------------------------
    ' Inventor Anwendung
    '-----------------------------------------
    Set invApp = ThisApplication

    '-----------------------------------------
    ' 0) Dokument prüfen
    '-----------------------------------------
    If invApp.ActiveDocument Is Nothing Then
        MsgBox "Es ist keine Datei geöffnet!", vbExclamation
        Exit Sub
    End If

    Set invDoc = invApp.ActiveDocument

    If invDoc.DocumentType <> kPartDocumentObject Then
        MsgBox "Dieses Makro funktioniert nur mit IPT-Dateien!", vbExclamation
        Exit Sub
    End If

    ' Datei speichern falls nötig
    If invDoc.FullFileName = "" Then
        MsgBox "Die Datei ist noch nicht gespeichert." & vbCrLf & _
              "Bitte Speicherort wählen.", vbInformation
        invDoc.Save
    End If

    Set partDoc = invDoc
    Set compDef = partDoc.ComponentDefinition
    Set bodies = compDef.SurfaceBodies

    '-----------------------------------------
    ' 1) Prüfen ob Volumenkörper existieren
    '-----------------------------------------
    If bodies.Count = 0 Then
        MsgBox "Es wurden keine Volumenkörper gefunden!", vbExclamation
        Exit Sub
    End If

    Dim solidFound As Boolean
    solidFound = False

    For Each oBody In bodies
        If oBody.IsSolid Then
            solidFound = True
            Exit For
        End If
    Next

    If Not solidFound Then
        MsgBox "Es wurden keine Solid Bodies gefunden!", vbExclamation
        Exit Sub
    End If

    '-----------------------------------------
    ' STEP-Ordner vorbereiten
    '-----------------------------------------
    originalPath = Left(invDoc.FullFileName, InStrRev(invDoc.FullFileName, "\") - 1)
    stepFolder = originalPath & "\STEP"

    If Dir(stepFolder, vbDirectory) = "" Then
        MkDir stepFolder
    End If

    '-----------------------------------------
    ' STEP-Translator vorbereiten
    '-----------------------------------------
    Set stepAddIn = invApp.ApplicationAddIns.ItemById( _
        "{90AF7F40-0C01-11D5-8E83-0010B541CD80}")

    If stepAddIn Is Nothing Then
        MsgBox "STEP-Translator nicht gefunden!", vbCritical
        Exit Sub
    End If

    Set context = invApp.TransientObjects.CreateTranslationContext
    context.Type = kFileBrowseIOMechanism

    Set options = invApp.TransientObjects.CreateNameValueMap
    ' options.Value("ApplicationProtocolType") = 2 ' AP214 => gut für Farben, ältere Systeme
    options.Value("ApplicationProtocolType") = 3 ' AP242 => moderner Standard, MBD-fähig, besser für Datenaustausch

    Set dataMedium = invApp.TransientObjects.CreateDataMedium

    '-----------------------------------------
    ' Alle Bodies zuerst ausblenden
    '-----------------------------------------
    For Each oHideBody In bodies
        oHideBody.Visible = False
    Next

    '-----------------------------------------
    ' Schleife: Export je Volumenkörper
    '-----------------------------------------
    For Each oBody In bodies

        If oBody.IsSolid Then

            ' Alle Bodies ausblenden
            For Each oHideBody In bodies
                oHideBody.Visible = False
            Next

            ' Aktuellen Body einblenden
            oBody.Visible = True

            exportFile = stepFolder & "\" & oBody.Name & ".step"
            dataMedium.FileName = exportFile

            If stepAddIn.HasSaveCopyAsOptions(invDoc, context, options) Then
                stepAddIn.SaveCopyAs invDoc, context, options, dataMedium
                exportList = exportList & oBody.Name & ".step" & vbCrLf
            End If

        End If

    Next

    '-----------------------------------------
    ' ?? ALLE VOLUMENKÖRPER WIEDER SICHTBAR
    '-----------------------------------------
    For Each oBody In bodies
        oBody.Visible = True
    Next

    '-----------------------------------------
    ' 2) Abschlussmeldung
    '-----------------------------------------
    MsgBox "Export abgeschlossen!" & vbCrLf & vbCrLf & _
          "Speicherort:" & vbCrLf & stepFolder & vbCrLf & vbCrLf & _
          "Erstellte Dateien:" & vbCrLf & exportList, _
          vbInformation, "Fertig"

End Sub


------------------
[Inventor Professional 2026] - [WIN 11]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik, Master Eng. IT-Security & Forensic




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

Windows 10 x64, AIP 2020-2025

erstellt am: 14. Dez. 2025 01:13    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 Muecke.1982 10 Unities + Antwort hilfreich

Moin

Ein paar kleine Anmerkungen nach dem ersten drüberlesen:
1. Wenn der User den Speicherndialog abbricht bekommst du einen Fehler.
2. Eventuell sollte man auf ausstehende Aktualisierungen prüfen?
3. Nachdem alle SurfaceBodies bereits unsichtbar sind, macht es in der "For Each oBody In bodies" Schleife wenig Sinn das nochmal zu tun. Besser am Ende der Schleife den aktuellen Body wieder unsichtbar machen.
4. Sicherheitshalber das Addin mit Activate laden und hinterher schauen ob es geladen wurde, sonst Fehler.

------------------
MfG
Ralf

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Muecke.1982
Mitglied



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

Beiträge: 1261
Registriert: 23.07.2009

[Inventor Professional 2026] - [WIN 11]

erstellt am: 14. Dez. 2025 11:08    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

Zitat:
Original erstellt von rkauskh:

1. Wenn der User den Speicherndialog abbricht bekommst du einen Fehler.


Das habe ich eingebaut bekommen.
Unter dem Punkt: Datei speichern falls nötig (mit Abbruch-Erkennung)

Zitat:
Original erstellt von rkauskh:

2. Eventuell sollte man auf ausstehende Aktualisierungen prüfen?


Ich weiß nicht, wie das funktioniert, aber GPT hat etwas in den Code eingebaut. Ich weiß nur nicht, wie ich so etwas testen kann.
Unter dem Punkt: Auf ausstehende Aktualisierungen prüfen

Zitat:
Original erstellt von rkauskh:

3. Nachdem alle SurfaceBodies bereits unsichtbar sind, macht es in der "For Each oBody In bodies" Schleife wenig Sinn das nochmal zu tun. Besser am Ende der Schleife den aktuellen Body wieder unsichtbar machen.
4. Sicherheitshalber das Addin mit Activate laden und hinterher schauen ob es geladen wurde, sonst Fehler.


Leider verstehe ich den Code nicht gut genug, um das richtig zu ermitteln und abzuändern.


[EDIT]
Der aktuelle Code:

Code:

Option Explicit

Public Sub Export_Solids_To_Step_Separate()

    Dim invApp As Application
    Dim invDoc As Document
    Dim partDoc As PartDocument
    Dim compDef As PartComponentDefinition
    Dim bodies As SurfaceBodies

    Dim oBody As SurfaceBody
    Dim oHideBody As SurfaceBody

    Dim stepAddIn As TranslatorAddIn
    Dim context As TranslationContext
    Dim options As NameValueMap
    Dim dataMedium As dataMedium

    Dim originalPath As String
    Dim stepFolder As String
    Dim exportFile As String
    Dim exportList As String

    '-----------------------------------------
    ' Inventor Anwendung
    '-----------------------------------------
    Set invApp = ThisApplication

    '-----------------------------------------
    ' 0) Dokument prüfen
    '-----------------------------------------
    If invApp.ActiveDocument Is Nothing Then
        MsgBox "Es ist keine Datei geöffnet!", vbExclamation
        Exit Sub
    End If

    Set invDoc = invApp.ActiveDocument

    If invDoc.DocumentType <> kPartDocumentObject Then
        MsgBox "Dieses Makro funktioniert nur mit IPT-Dateien!", vbExclamation
        Exit Sub
    End If

    '-----------------------------------------
    ' Datei speichern falls nötig (mit Abbruch-Erkennung)
    '-----------------------------------------
    If invDoc.FullFileName = "" Then

        MsgBox "Die Datei ist noch nicht gespeichert." & vbCrLf & _
               "Bitte Speicherort wählen.", vbInformation

        On Error Resume Next
        invDoc.Save
        On Error GoTo 0

        If invDoc.FullFileName = "" Then
            MsgBox "Vorgang abgebrochen." & vbCrLf & _
                   "Die Datei muss gespeichert sein, um den Export durchzuführen.", _
                   vbExclamation
            Exit Sub
        End If

    End If

    Set partDoc = invDoc
    Set compDef = partDoc.ComponentDefinition

    '-----------------------------------------
    ' Auf ausstehende Aktualisierungen prüfen
    '-----------------------------------------
    If partDoc.RequiresUpdate Then

        On Error Resume Next
        partDoc.Update
        If Err.Number <> 0 Then
            MsgBox "Das Modell konnte nicht aktualisiert werden." & vbCrLf & _
                   "Bitte Modell prüfen (Fehler, unterdrückte Features).", _
                   vbCritical
            Exit Sub
        End If
        On Error GoTo 0

    End If

    Set bodies = compDef.SurfaceBodies

    '-----------------------------------------
    ' 1) Prüfen ob Volumenkörper existieren
    '-----------------------------------------
    If bodies.Count = 0 Then
        MsgBox "Es wurden keine Volumenkörper gefunden!", vbExclamation
        Exit Sub
    End If

    Dim solidFound As Boolean
    solidFound = False

    For Each oBody In bodies
        If oBody.IsSolid Then
            solidFound = True
            Exit For
        End If
    Next

    If Not solidFound Then
        MsgBox "Es wurden keine Solid Bodies gefunden!", vbExclamation
        Exit Sub
    End If

    '-----------------------------------------
    ' STEP-Ordner vorbereiten
    '-----------------------------------------
    originalPath = Left(invDoc.FullFileName, InStrRev(invDoc.FullFileName, "\") - 1)
    stepFolder = originalPath & "\STEP"

    If Dir(stepFolder, vbDirectory) = "" Then
        MkDir stepFolder
    End If

    '-----------------------------------------
    ' STEP-Translator vorbereiten
    '-----------------------------------------
    Set stepAddIn = invApp.ApplicationAddIns.ItemById( _
        "{90AF7F40-0C01-11D5-8E83-0010B541CD80}")

    If stepAddIn Is Nothing Then
        MsgBox "STEP-Translator nicht gefunden!", vbCritical
        Exit Sub
    End If

    Set context = invApp.TransientObjects.CreateTranslationContext
    context.Type = kFileBrowseIOMechanism

    Set options = invApp.TransientObjects.CreateNameValueMap
    options.Value("ApplicationProtocolType") = 3   ' AP242

    Set dataMedium = invApp.TransientObjects.CreateDataMedium

    '-----------------------------------------
    ' Alle Bodies zuerst ausblenden
    '-----------------------------------------
    For Each oHideBody In bodies
        oHideBody.Visible = False
    Next

    '-----------------------------------------
    ' Schleife: Export je Volumenkörper
    '-----------------------------------------
    For Each oBody In bodies

        If oBody.IsSolid Then

            For Each oHideBody In bodies
                oHideBody.Visible = False
            Next

            oBody.Visible = True

            exportFile = stepFolder & "\" & oBody.Name & ".step"
            dataMedium.FileName = exportFile

            If stepAddIn.HasSaveCopyAsOptions(invDoc, context, options) Then
                stepAddIn.SaveCopyAs invDoc, context, options, dataMedium
                exportList = exportList & oBody.Name & ".step" & vbCrLf
            End If

        End If

    Next

    '-----------------------------------------
    ' Alle Volumenkörper wieder sichtbar
    '-----------------------------------------
    For Each oBody In bodies
        oBody.Visible = True
    Next

    '-----------------------------------------
    ' 2) Abschlussmeldung
    '-----------------------------------------
    MsgBox "Export abgeschlossen!" & vbCrLf & vbCrLf & _
           "Speicherort:" & vbCrLf & stepFolder & vbCrLf & vbCrLf & _
           "Erstellte Dateien:" & vbCrLf & exportList, _
           vbInformation, "Fertig"

End Sub



------------------
[Inventor Professional 2026] - [WIN 11]

[Diese Nachricht wurde von Muecke.1982 am 14. Dez. 2025 editiert.]

[Diese Nachricht wurde von Muecke.1982 am 14. Dez. 2025 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik, Master Eng. IT-Security & Forensic




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

Windows 10 x64, AIP 2020-2025

erstellt am: 15. Dez. 2025 09:48    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 Muecke.1982 10 Unities + Antwort hilfreich

Moin

Zitat:
Ich weiß nur nicht, wie ich so etwas testen kann.

In den fx-Parametern unten den Haken bei "Sofort aktualisieren" herausnehmen und anschließend ob einen der Parameterwerte ändern, wäre eine Möglichkeit.

Zitat:
Leider verstehe ich den Code nicht gut genug, um das richtig zu ermitteln und abzuändern.

Ein Satz den ich mittlerweile ständig höre, wenn ich halbfertige KI-generierte Programme zum Laufen bringen soll.

Ungetestet, aber sollte laufen:

Code:

Option Explicit

Public Sub Export_Solids_To_Step_Separate()

    Dim invApp As Application
    Dim invDoc As Document
    Dim partDoc As PartDocument
    Dim compDef As PartComponentDefinition
    Dim bodies As SurfaceBodies

    Dim oBody As SurfaceBody
    Dim oHideBody As SurfaceBody

    Dim stepAddIn As TranslatorAddIn
    Dim context As TranslationContext
    Dim options As NameValueMap
    Dim dataMedium As dataMedium

    Dim originalPath As String
    Dim stepFolder As String
    Dim exportFile As String
    Dim exportList As String

    '-----------------------------------------
    ' Inventor Anwendung
    '-----------------------------------------
    Set invApp = ThisApplication

    '-----------------------------------------
    ' 0) Dokument prüfen
    '-----------------------------------------
    If invApp.ActiveDocument Is Nothing Then
        MsgBox "Es ist keine Datei geöffnet!", vbExclamation
        Exit Sub
    End If

    Set invDoc = invApp.ActiveDocument

    If invDoc.DocumentType <> kPartDocumentObject Then
        MsgBox "Dieses Makro funktioniert nur mit IPT-Dateien!", vbExclamation
        Exit Sub
    End If

    '-----------------------------------------
    ' Datei speichern falls nötig (mit Abbruch-Erkennung)
    '-----------------------------------------
    If invDoc.FullFileName = "" Then

        MsgBox "Die Datei ist noch nicht gespeichert." & vbCrLf & _
              "Bitte Speicherort wählen.", vbInformation

        On Error Resume Next
        invDoc.Save
        On Error GoTo 0

        If invDoc.FullFileName = "" Then
            MsgBox "Vorgang abgebrochen." & vbCrLf & _
                  "Die Datei muss gespeichert sein, um den Export durchzuführen.", _
                  vbExclamation
            Exit Sub
        End If

    End If

    Set partDoc = invDoc
    Set compDef = partDoc.ComponentDefinition

    '-----------------------------------------
    ' Auf ausstehende Aktualisierungen prüfen
    '-----------------------------------------
    If partDoc.RequiresUpdate Then

        On Error Resume Next
        partDoc.Update
        If Err.Number <> 0 Then
            MsgBox "Das Modell konnte nicht aktualisiert werden." & vbCrLf & _
                  "Bitte Modell prüfen (Fehler, unterdrückte Features).", _
                  vbCritical
            Exit Sub
        End If
        On Error GoTo 0

    End If

    Set bodies = compDef.SurfaceBodies

    '-----------------------------------------
    ' 1) Prüfen ob Volumenkörper existieren
    '-----------------------------------------
    If bodies.Count = 0 Then
        MsgBox "Es wurden keine Volumenkörper gefunden!", vbExclamation
        Exit Sub
    End If

    Dim solidFound As Boolean
    solidFound = False

    For Each oBody In bodies
        If oBody.IsSolid Then
            solidFound = True
            Exit For
        End If
    Next

    If Not solidFound Then
        MsgBox "Es wurden keine Solid Bodies gefunden!", vbExclamation
        Exit Sub
    End If

    '-----------------------------------------
    ' STEP-Ordner vorbereiten
    '-----------------------------------------
    originalPath = Left(invDoc.FullFileName, InStrRev(invDoc.FullFileName, "\") - 1)
    stepFolder = originalPath & "\STEP"

    If Dir(stepFolder, vbDirectory) = "" Then
        MkDir stepFolder
    End If

    '-----------------------------------------
    ' STEP-Translator vorbereiten
    '-----------------------------------------
    Set stepAddIn = invApp.ApplicationAddIns.ItemById( _
        "{90AF7F40-0C01-11D5-8E83-0010B541CD80}")
   
    If stepAddIn Is Nothing Then
        MsgBox "STEP-Translator nicht gefunden!", vbCritical
        Exit Sub
    Else
        Call stepAddIn.Activate
        If stepAddIn.Activated = False Then
            MsgBox "STEP-Addin konnte nicht geladen werden.", vbCritical, "Solids2Step"
            Exit Sub
        End If
    End If

    Set context = invApp.TransientObjects.CreateTranslationContext
    context.Type = kFileBrowseIOMechanism

    Set options = invApp.TransientObjects.CreateNameValueMap
    options.Value("ApplicationProtocolType") = 3  ' AP242

    Set dataMedium = invApp.TransientObjects.CreateDataMedium

    '-----------------------------------------
    ' Alle Bodies zuerst ausblenden
    '-----------------------------------------
    For Each oHideBody In bodies
        oHideBody.Visible = False
    Next

    '-----------------------------------------
    ' Schleife: Export je Volumenkörper
    '-----------------------------------------
    For Each oBody In bodies

        If oBody.IsSolid Then

            oBody.Visible = True

            exportFile = stepFolder & "\" & oBody.Name & ".step"
            dataMedium.fileName = exportFile

            If stepAddIn.HasSaveCopyAsOptions(invDoc, context, options) Then
                stepAddIn.SaveCopyAs invDoc, context, options, dataMedium
                exportList = exportList & oBody.Name & ".step" & vbCrLf
            End If
           
            oBody.Visible = False
           
        End If

    Next

    '-----------------------------------------
    ' Alle Volumenkörper wieder sichtbar
    '-----------------------------------------
    For Each oBody In bodies
        oBody.Visible = True
    Next

    '-----------------------------------------
    ' 2) Abschlussmeldung
    '-----------------------------------------
    MsgBox "Export abgeschlossen!" & vbCrLf & vbCrLf & _
          "Speicherort:" & vbCrLf & stepFolder & vbCrLf & vbCrLf & _
          "Erstellte Dateien:" & vbCrLf & exportList, _
          vbInformation, "Fertig"

End Sub



------------------
MfG
Ralf

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

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz