Hot News:
   

Mit Unterstützung durch:

  Foren auf CAD.de
  Inventor
  iLogic Regel: mehrere einzelne pdf und dxf erstellen

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
  
2D- und 3D-Bauvisionen in der Revit Weiterbildung mit IHK-Zertifizierung , ein Kurs (bis zu 100% förderbar mit Bildungsgutschein)
Autor Thema:  iLogic Regel: mehrere einzelne pdf und dxf erstellen (117 / mal gelesen)
Esseling
Mitglied
Technische Zeichnerin

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

Beiträge: 8
Registriert: 09.12.2025

erstellt am: 18. Dez. 2025 10:10    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


Screenshot.png


Screenshot1.png

 
Hallo,

ich möchte neue iLogic-Regeln erstellen.

Hat jemand einen Code, mit dem sich aus einer IDW-Datei mit mehreren Blättern einzelne PDFs mit Namen erstellen lassen?
Außerdem soll von der Abwicklung keine PDF, sondern nur eine DXF erstellt werden. Bei der Abwicklung habe ich die Option „Nicht zählen und drucken” ausgewählt.

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

Windows 10 x64, AIP 2020-2025

erstellt am: 18. Dez. 2025 10:57    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 Esseling 10 Unities + Antwort hilfreich

Moin

Such mal im Internet, und hier im Inventor VBA Forum. Du wirst zum Thema PDF/DXF-Export sehr viele Treffer bekommen.
Ein Zeichnungsblatt mit einer Erstansicht von einer Blechabwicklung würde ich so keinesfalls identifizieren. Die Ansicht hat eine Eigenschaft "IsFlatPatternView = True/False", mit der man das sauber lösen kann.

------------------
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: 11529
Registriert: 25.02.2004

Hier könnte ihre Werbung stehen!

erstellt am: 18. Dez. 2025 12:59    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 Esseling 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Esseling:
soll von der Abwicklung keine PDF, sondern nur eine DXF erstellt werden

dann ist die Zeichnung die falsche Wahl
Besser: aus dem Modell der Abwicklung per RMK nach DXF exportieren, dann gibts die Kontur auf Layer 0 und nichts zusätzlich störendes

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

------------------
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

Esseling
Mitglied
Technische Zeichnerin

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

Beiträge: 8
Registriert: 09.12.2025

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

If ThisApplication.ActiveDocument.DocumentType <> _
  Inventor.DocumentTypeEnum.kDrawingDocumentObject Then
    Return
End If

Dim oDrawDoc As DrawingDocument
oDrawDoc = ThisApplication.ActiveDocument

Dim basePath As String
basePath = System.IO.Path.GetDirectoryName(oDrawDoc.FullFileName)

Dim baseName As String
baseName = System.IO.Path.GetFileNameWithoutExtension(oDrawDoc.FullFileName)

Dim oContext As TranslationContext
oContext = ThisApplication.TransientObjects.CreateTranslationContext
oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism

' PDF Translator
Dim oPDFAddIn As TranslatorAddIn
oPDFAddIn = ThisApplication.ApplicationAddIns.ItemById( _
    "{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")

' DXF Translator
Dim oDXFAddIn As TranslatorAddIn
oDXFAddIn = ThisApplication.ApplicationAddIns.ItemById( _
    "{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")

Dim i As Integer = 1

For Each oSheet As Sheet In oDrawDoc.Sheets

    Dim sheetName As String
    sheetName = oSheet.Name

    ' Sonderzeichen entfernen
    sheetName = System.Text.RegularExpressions.Regex.Replace( _
        sheetName, "[\\\/:*?""<>|]", "_")

    Dim oDataMedium As DataMedium
    oDataMedium = ThisApplication.TransientObjects.CreateDataMedium


    If sheetName.ToLower = "abwicklung" Then

        Dim oDXFOptions As NameValueMap
        oDXFOptions = ThisApplication.TransientObjects.CreateNameValueMap

        If oDXFAddIn.HasSaveCopyAsOptions(oDrawDoc, oContext, oDXFOptions) Then
            oDXFOptions.Value("Sheet_Range") = _
                Inventor.PrintRangeEnum.kPrintSheetRange
            oDXFOptions.Value("Custom_Begin_Sheet") = i
            oDXFOptions.Value("Custom_End_Sheet") = i
        End If

        oDataMedium.FileName = basePath & "\" & _
            baseName & "_" & sheetName & ".dxf"

        oDXFAddIn.SaveCopyAs(oDrawDoc, oContext, oDXFOptions, oDataMedium)

    Else

        Dim oPDFOptions As NameValueMap
        oPDFOptions = ThisApplication.TransientObjects.CreateNameValueMap

        If oPDFAddIn.HasSaveCopyAsOptions(oDrawDoc, oContext, oPDFOptions) Then
            oPDFOptions.Value("Sheet_Range") = _
                Inventor.PrintRangeEnum.kPrintSheetRange
            oPDFOptions.Value("Custom_Begin_Sheet") = i
            oPDFOptions.Value("Custom_End_Sheet") = i
            oPDFOptions.Value("Vector_Resolution") = 400
        End If

        oDataMedium.FileName = basePath & "\" & _
            baseName & "_" & sheetName & ".pdf"

        oPDFAddIn.SaveCopyAs(oDrawDoc, oContext, oPDFOptions, oDataMedium)

    End If

    i += 1
Next

Hallo, durch den Code werden die Dateien erstellt.
Jetzt ist das Problem, dass in der dxf die Abwicklung nicht drin ist. Also die Datei ist leer.
Woran liegt das?

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

Windows 10 x64, AIP 2020-2025

erstellt am: 18. Dez. 2025 16:50    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 Esseling 10 Unities + Antwort hilfreich

Moin

Wenn deine Zeichnung noch nie gespeichert wurde ist FullFileName leer und du bekommst einen relativ nichtssagenden Fehler angezeigt.
Die Addin-ID für DXF ist falsch. Die ist definitiv nicht die gleiche wie beim PDF-Translator. Ich meine die lautet "C24E3AC4-122E-11D5-8E91-0010B541CD80".
Bei DXF hab ich bisher nur schlechte Erfahrung damit gemacht, die Optionen direkt zu setzen. Wenn er die Optionen ignoriert, eine entsprechend konfigurierte ini-Datei erstellen und die laden.


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

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

Esseling
Mitglied
Technische Zeichnerin

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

Beiträge: 8
Registriert: 09.12.2025

erstellt am: 19. Dez. 2025 10:25    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, vielen Dank für die Info.
Jetzt werden von allen Blättern eine dxf erstellt, kann man auch nur von der Abwicklung eine dxf erstellen. Die Abwicklung hat die Option "nicht zählen" und "nicht drucken". Kann man das über diese Optionen machen?
Aktuell sieht der Code so aus:

If ThisApplication.ActiveDocument.DocumentType <> Inventor.DocumentTypeEnum.kDrawingDocumentObject Then
    Return
End If

Dim oDrawDoc As DrawingDocument
oDrawDoc = ThisApplication.ActiveDocument

Dim basePath As String
basePath = System.IO.Path.GetDirectoryName(oDrawDoc.FullFileName)

Dim baseName As String
baseName = System.IO.Path.GetFileNameWithoutExtension(oDrawDoc.FullFileName)

Dim oContext As TranslationContext
oContext = ThisApplication.TransientObjects.CreateTranslationContext
oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism

' PDF Translator
Dim oPDFAddIn As TranslatorAddIn
oPDFAddIn = ThisApplication.ApplicationAddIns.ItemById("{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")

' DXF Translator
Dim oDXFAddIn As TranslatorAddIn
oDXFAddIn = ThisApplication.ApplicationAddIns.ItemById("{C24E3AC4-122E-11D5-8E91-0010B541CD80}")

Dim i As Integer = 1
Dim totalSheets As Integer = oDrawDoc.Sheets.Count
Dim lastSheetIndex As Integer = totalSheets ' Das letzte Blatt ist der höchste Index

' Schleife durch alle Blätter der Zeichnung
For Each oSheet As Sheet In oDrawDoc.Sheets

    Dim sheetName As String
    sheetName = oSheet.Name

    ' Sonderzeichen entfernen
    sheetName = System.Text.RegularExpressions.Regex.Replace(sheetName, "[\\\/:*?""<>|]", "_")

    ' PDF Export für alle Blätter außer dem letzten
    If i < lastSheetIndex Then
        ' PDF Export vorbereiten
        Dim oDataMedium As DataMedium
        oDataMedium = ThisApplication.TransientObjects.CreateDataMedium

        Dim oPDFOptions As NameValueMap
        oPDFOptions = ThisApplication.TransientObjects.CreateNameValueMap

        If oPDFAddIn.HasSaveCopyAsOptions(oDrawDoc, oContext, oPDFOptions) Then
            oPDFOptions.Value("Sheet_Range") = Inventor.PrintRangeEnum.kPrintSheetRange
            oPDFOptions.Value("Custom_Begin_Sheet") = i
            oPDFOptions.Value("Custom_End_Sheet") = i
            oPDFOptions.Value("Vector_Resolution") = 400
        End If

        ' PDF-Datei speichern
        oDataMedium.FileName = basePath & "\" & baseName & "_" & sheetName & ".pdf"
        oPDFAddIn.SaveCopyAs(oDrawDoc, oContext, oPDFOptions, oDataMedium)
    End If

    ' DXF Export nur für das letzte Blatt
    If i = lastSheetIndex Then
        ' DXF Export vorbereiten
        Dim oDXFOptions As NameValueMap
        oDXFOptions = ThisApplication.TransientObjects.CreateNameValueMap

        If oDXFAddIn.HasSaveCopyAsOptions(oDrawDoc, oContext, oDXFOptions) Then
            oDXFOptions.Value("Sheet_Range") = Inventor.PrintRangeEnum.kPrintSheetRange
            oDXFOptions.Value("Custom_Begin_Sheet") = i
            oDXFOptions.Value("Custom_End_Sheet") = i
        End If

        ' DXF-Datei speichern
        Dim oDataMedium As DataMedium
        oDataMedium = ThisApplication.TransientObjects.CreateDataMedium
        oDataMedium.FileName = basePath & "\" & baseName & ".dxf"
        oDXFAddIn.SaveCopyAs(oDrawDoc, oContext, oDXFOptions, oDataMedium)
    End If

    i += 1
Next

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



Anzeige:Infos zum Werbeplatz >>

speedyPDM CAD APP für Andere, Datenaustausch, Allgemeine Werkzeuge

speedyPDM ist das führende technische Dokumenten- und Produktdatenmanagementsystem für Solidworks, Solid Edge, Inventor, AutoCAD, ZWCAD, BricsCAD, Office und Email inklusive Revisionsmanagement.

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

Windows 10 x64, AIP 2020-2025

erstellt am: 19. Dez. 2025 11:40    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 Esseling 10 Unities + Antwort hilfreich

Moin

Dein aktueller Code soll nur vom letzten Blatt ein DXF erstellen, alle anderen davor als PDF. Wenn es "nicht drucken" und "nicht zählen" sein soll, muss das auch drin stehen. Außerdem, der DXF-Export übernimmt deine gesetzten Einstellungen nicht. Gib ihm eine ini Datei mit. Um die zu erstellen, rufst du im Inventor die Datei exportieren Funktion auf, stellst die Optionen so ein wie gewollt und speicherst das unter C:\Temp als dxf.ini (Pfad und Name frei wählbar, aber im Code anpassen).
Der unten stehende Code wird, wenn es 2 oder mehr Blätter mit nicht zählen/nicht drucken gibt fehlerhaft arbeiten. Jedes DXF hat den gleichen Dateinamen (weil nicht zählen die Laufnummer im Blattnamen entfernt) und überschreibt somit seinen Vorgänger. Das nur als Hinweis.

Code:

If ThisApplication.ActiveDocument.DocumentType <> Inventor.DocumentTypeEnum.kDrawingDocumentObject Then
    Return
End If

Dim oDrawDoc As DrawingDocument
oDrawDoc = ThisApplication.ActiveDocument

Dim basePath As String
basePath = System.IO.Path.GetDirectoryName(oDrawDoc.FullFileName)

Dim baseName As String
baseName = System.IO.Path.GetFileNameWithoutExtension(oDrawDoc.FullFileName)

Dim oContext As TranslationContext
oContext = ThisApplication.TransientObjects.CreateTranslationContext
oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism

' PDF Translator
Dim oPDFAddIn As TranslatorAddIn
oPDFAddIn = ThisApplication.ApplicationAddIns.ItemById("{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")

' DXF Translator
Dim oDXFAddIn As TranslatorAddIn
oDXFAddIn = ThisApplication.ApplicationAddIns.ItemById("{C24E3AC4-122E-11D5-8E91-0010B541CD80}")

Dim i As Integer = 1

' Schleife durch alle Blätter der Zeichnung
For Each oSheet As Sheet In oDrawDoc.Sheets

    Dim sheetName As String = oSheet.Name

    ' Sonderzeichen entfernen
    sheetName = System.Text.RegularExpressions.Regex.Replace(sheetName, "[\\\/:*?""<>|]", "_")

    ' PDF Export für alle Blätter außer "Nicht zählen" und "Nicht drucken" aktiv
    If oSheet.ExcludeFromCount = True And oSheet.ExcludeFromPrinting = True Then
        ' DXF Export vorbereiten
        Dim oDXFOptions As NameValueMap
        oDXFOptions = ThisApplication.TransientObjects.CreateNameValueMap

        If oDXFAddIn.HasSaveCopyAsOptions(oDrawDoc, oContext, oDXFOptions) Then
            'oDXFOptions.Value("Sheet_Range") = Inventor.PrintRangeEnum.kPrintSheetRange
            'oDXFOptions.Value("Custom_Begin_Sheet") = i
            'oDXFOptions.Value("Custom_End_Sheet") = i
            oDXFOptions.Value("Export_Acad_IniFile") = "C:\Temp\dxf.ini"
        End If

        ' DXF-Datei speichern
        Dim oDataMedium As DataMedium
        oDataMedium = ThisApplication.TransientObjects.CreateDataMedium
        oDataMedium.FileName = basePath & "\" & baseName & ".dxf"
        oDXFAddIn.SaveCopyAs(oDrawDoc, oContext, oDXFOptions, oDataMedium)

    Else
        ' PDF Export vorbereiten
        Dim oDataMedium As DataMedium
        oDataMedium = ThisApplication.TransientObjects.CreateDataMedium

        Dim oPDFOptions As NameValueMap
        oPDFOptions = ThisApplication.TransientObjects.CreateNameValueMap

        If oPDFAddIn.HasSaveCopyAsOptions(oDrawDoc, oContext, oPDFOptions) Then
            oPDFOptions.Value("Sheet_Range") = Inventor.PrintRangeEnum.kPrintSheetRange
            oPDFOptions.Value("Custom_Begin_Sheet") = i
            oPDFOptions.Value("Custom_End_Sheet") = i
            oPDFOptions.Value("Vector_Resolution") = 400
        End If

        ' PDF-Datei speichern
        oDataMedium.FileName = basePath & "\" & baseName & "_" & sheetName & ".pdf"
        oPDFAddIn.SaveCopyAs(oDrawDoc, oContext, oPDFOptions, oDataMedium)

    End If

   

    i += 1
Next


------------------
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