Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  DXF Erstellung zickt

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:  DXF Erstellung zickt (338 mal gelesen)
chense
Mitglied
Konstrukteur


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

Beiträge: 46
Registriert: 14.04.2020

Inventor 2019 auf Windows 10
Intel Xeon E5-1630, 3,7Ghz
Nvidia Quadro P4000
32GB Ram

erstellt am: 26. Jul. 2022 15: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

Hallo zusammen ich habe ein etwas komisches Problem bei der Erstellung von PDF / DXF via Ilogic.

Ich habe die Regeln "Vorabzug" und "Erstfreigabe" und "Änderungsfreigabe" die bis zur Erstellung von PDF und DXF ziemlich das gleiche tun.

Code:
'Zeichnung updaten
oDrawDoc.Update

'Addins für PDF- und DXF-Export aktivieren
PDFAddIn = ThisApplication.ApplicationAddIns.ItemById("{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")
DXFAddIn = ThisApplication.ApplicationAddIns.ItemById("{C24E3AC4-122E-11D5-8E91-0010B541CD80}")

'Strings für PDF / DXF Export erstellen
oContext = ThisApplication.TransientObjects.CreateTranslationContext
oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism
oOptions = ThisApplication.TransientObjects.CreateNameValueMap
oDataMedium = ThisApplication.TransientObjects.CreateDataMedium
oDataMediumDXF = ThisApplication.TransientObjects.CreateDataMedium

'Einstellungen für PDF
oOptions.Value("All_Color_AS_Black") = 1
oOptions.Value("Remove_Line_Weights") = 0
oOptions.Value("Vector_Resolution") = 400
oOptions.Value("Sheet_Range") = Inventor.PrintRangeEnum.kPrintAllSheets

'Name für PDF und DXF festlegen
Dim PDFName As String
Dim DXFName As String
If iProperties.Value(modelName, "Custom", "Klasse") = "RS"
PDFName = Pfad & Znr & "-" & iProperties.Value("Project", "Revision Number") & "-" & Dateiname & "-" & Datum & ".pdf"
DXFName = Pfad & Znr & "-" & iProperties.Value("Project", "Revision Number") & "-" & Dateiname & "-" & Datum & ".dxf"
Else
PDFName = Pfad & Znr & iProperties.Value("Project", "Revision Number") & "-" & Dateiname & "-" & Datum & ".pdf"
DXFName = Pfad & Znr & iProperties.Value("Project", "Revision Number") & "-" & Dateiname & "-" & Datum & ".dxf"
End If

'PDF Speichern und Öffnen
oDataMedium.FileName = PDFName
PDFAddIn.SaveCopyAs(oDrawDoc, oContext, oOptions, oDataMedium)
ThisDoc.Launch(PDFName)

'DXF erstellen
oDataMediumDXF.FileName = DXFName
DXFAddIn.SaveCopyAs(oDrawDoc, oContext, oOptions, oDataMediumDXF)

'Speichern und schließen dwg
oDrawDoc.Save
oDrawDoc.Close


In den Regeln "Vorabzug" und "Änderungsfreigabe" funktioniert das ganze einwandfrei. In der "Erstfreigabe" nicht da bekomme ich jedes mal die untenstehende Fehlermeldung beim Erstellen der DXF (PDF klappt dagegen)

Ich habe auch schon versucht den einzigen größeren Codeblock der unterschiedlich ist rauszunehmen der Fehler bleibt aber gleich. Daher die Frage, ob euch im obigen Code etwas auffällt, das dafür sorgen kann, dass das Verhalten sich nicht reproduzieren lässt?

oDrawdoc wird folgendermaßen deklariert:

Code:

'Zeichnung aktivieren und updaten
Dim oDrawDoc As DrawingDocument
oDrawDoc = ThisApplication.ActiveDocument
oDrawDoc.Update

Fehler in Regel: Erstfreigabe in Dokument: 0000-0000-123-test.ipt
Unbekannter Fehler (Ausnahme von HRESULT: 0x80004005 (E_FAIL))

System.Runtime.InteropServices.COMException (0x80004005): Unbekannter Fehler (Ausnahme von HRESULT: 0x80004005 (E_FAIL))
   bei Microsoft.VisualBasic.CompilerServices.LateBinding.InternalLateCall(Object o, Type objType, String name, Object[] args, String[] paramnames, Boolean[] CopyBack, Boolean IgnoreReturn)
   bei Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateCall(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, Boolean IgnoreReturn)
   bei ThisRule.Main()
   bei Autodesk.iLogic.Exec.AppDomExec.ExecRuleInAssembly(Assembly assem)
   bei iLogic.RuleEvalContainer.ExecRuleEval(String execRule)

------------------
Für jede Fehlermeldung gibt es eine Lösung

*Edith sagt*
Ich habe gerade noch ein wenig rumprobiert - Obwohl der Code wie gesagt ident zu den anderen Regeln ist scheint es in irgendeiner Form an der Variable DXFName zu liegen.
Wenn ich diese anders definiere funktioniert das Erstellen. Komisch daran ist allerdings, dass der DXFName den ich so erstelle auch korrekt wäre und ja eigentlich in nichts vom PDF-Namen abweicht.

[Diese Nachricht wurde von chense am 26. Jul. 2022 editiert.]

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

KraBBy
Mitglied
Maschinenbau-Ingenieur


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

Beiträge: 601
Registriert: 19.09.2007

Inventor Professional 2020
WinX

erstellt am: 26. Jul. 2022 17:42    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 chense 10 Unities + Antwort hilfreich

Es fiel mir auf, dass für PDF und DXF die selben oOptions verwendet werden. Darin sind aber nur Einstellungen für pdf enthalten.
Ich kenne aber das Verhalten nicht (und habe auch nix ausprobiert), wenn man dem Addin Optionen gibt, die nicht zutreffend sind.

------------------
Gruß KraBBy

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

chense
Mitglied
Konstrukteur


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

Beiträge: 46
Registriert: 14.04.2020

Inventor 2019 auf Windows 10
Intel Xeon E5-1630, 3,7Ghz
Nvidia Quadro P4000
32GB Ram

erstellt am: 27. Jul. 2022 08: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

Danke für den Hinweis, den Codeschnipsel habe ich mir tatsächlich irgendwo online geholt und er hat bisher überall funktioniert. Jedenfalls ist folgendes Verhalten interessant. Ich habe den Code aus der "Erstfreigabe" den ich gestern vor diesem Verhalten geändert habe (das Entfernen aller Go-Tos siehe anderer Faden) gestern in die "Änderungsfreigabe" kopiert. Dort funktioniert wieder alles reibungslos.

In der Erstfreigabe konnte ich die Definition des Speichernamens ändern, weil ich dort die Revisionsnummer ohnehin nicht brauche und er funktioniert jetzt. Hier nochmal zum Vergleich

Erstfreigabe:

Code:

'Dateiname holen
strname = ThisDoc.PathAndFileName

[...]

'Zeichnung aktivieren und updaten
Dim oDrawDoc As DrawingDocument
oDrawDoc = ThisApplication.ActiveDocument
oDrawDoc.Update

[...]

'Addins für PDF- und DXF-Export aktivieren
PDFAddIn = ThisApplication.ApplicationAddIns.ItemById("{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")
DXFAddIn = ThisApplication.ApplicationAddIns.ItemById("{C24E3AC4-122E-11D5-8E91-0010B541CD80}")

'Strings für PDF / DXF Export erstellen
oContext = ThisApplication.TransientObjects.CreateTranslationContext
oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism
oOptions = ThisApplication.TransientObjects.CreateNameValueMap
oDataMedium = ThisApplication.TransientObjects.CreateDataMedium
oDataMediumDXF = ThisApplication.TransientObjects.CreateDataMedium

'Einstellungen für PDF
oOptions.Value("All_Color_AS_Black") = 1
oOptions.Value("Remove_Line_Weights") = 0
oOptions.Value("Vector_Resolution") = 400
oOptions.Value("Sheet_Range") = Inventor.PrintRangeEnum.kPrintAllSheets

'Name für PDF und DXF festlegen
Dim PDFName As String
Dim DXFName As String
PDFName = strname & "-" & Datum & ".pdf"
DXFName = strname & "-" & Datum & ".dxf"

'PDF Speichern und Öffnen
oDataMedium.FileName = PDFName
PDFAddIn.SaveCopyAs(oDrawDoc, oContext, oOptions, oDataMedium)
ThisDoc.Launch(PDFName)

'DXF erstellen
oDataMediumDXF.FileName = DXFName
DXFAddIn.SaveCopyAs(oDrawDoc, oContext, oOptions, oDataMediumDXF)


Änderungsfreigabe:

Code:

'Zeichnungsnummer und Bauteilname extrahieren
Dim Pfad As String
Dim Znr As String
Dim Dateiname As String
Pfad = ThisDoc.Path & "\"
Znr = (Left(ThisDoc.FileName(False), 9))
Dateiname = (Mid(ThisDoc.FileName(False), 11))

[...]

Dim oDrawDoc As DrawingDocument

[...]

oDrawDoc = ThisApplication.ActiveDocument
oDrawDoc.Update
ThisApplication.ActiveDocument.Activate
ThisApplication.CommandManager.ControlDefinitions.Item("AppZoomallCmd").Execute

[...]

'Addins für PDF- und DXF-Export aktivieren
PDFAddIn = ThisApplication.ApplicationAddIns.ItemById("{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")
DXFAddIn = ThisApplication.ApplicationAddIns.ItemById("{C24E3AC4-122E-11D5-8E91-0010B541CD80}")

'Strings für PDF / DXF Export erstellen
oContext = ThisApplication.TransientObjects.CreateTranslationContext
oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism
oOptions = ThisApplication.TransientObjects.CreateNameValueMap
oDataMedium = ThisApplication.TransientObjects.CreateDataMedium
oDataMediumDXF = ThisApplication.TransientObjects.CreateDataMedium

'Einstellungen für PDF
oOptions.Value("All_Color_AS_Black") = 1
oOptions.Value("Remove_Line_Weights") = 0
oOptions.Value("Vector_Resolution") = 400
oOptions.Value("Sheet_Range") = Inventor.PrintRangeEnum.kPrintAllSheets

'Dateiname für Export
Dim PDFName As String
Dim DXFName As String
If iProperties.Value(modelName, "Custom", "Klasse") = "RS"
PDFName = Pfad & Znr & "-" & iProperties.Value("Project", "Revision Number") & "-" & Dateiname & "-" & Datum & ".pdf"
DXFName = Pfad & Znr & "-" & iProperties.Value("Project", "Revision Number") & "-" & Dateiname & "-" & Datum & ".dxf"
Else
PDFName = Pfad & Znr & iProperties.Value("Project", "Revision Number") & "-" & Dateiname & "-" & Datum & ".pdf"
DXFName = Pfad & Znr & iProperties.Value("Project", "Revision Number") & "-" & Dateiname & "-" & Datum & ".dxf"
End If

'PDF Speichern
oDataMedium.FileName = PDFName
PDFAddIn.SaveCopyAs(oDrawDoc, oContext, oOptions, oDataMedium)
ThisDoc.Launch(PDFName)

'Abfrage und Erstellung DXF
oDataMediumDXF.FileName = DXFName
DXFAddIn.SaveCopyAs(oDrawDoc, oContext, oOptions, oDataMediumDXF)


Die unterschiedliche Deklarierung von oDrawDoc kommt daher, dass ich bei der Änderungsfreigabe an 2 unterschiedlichen Punkte die Klasse "Ohne Zeichnung" abfrage und odrawdoc nicht in beiden If-Blöcken deklarieren möchte

------------------
Für jede Fehlermeldung gibt es eine Lösung

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