| | | 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 (340 mal gelesen)
|
chense Mitglied Konstrukteur
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 / zitieren --> Unities abgeben:
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
Beiträge: 601 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 26. Jul. 2022 17:42 <-- editieren / zitieren --> Unities abgeben: Nur für chense
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
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 / zitieren --> Unities abgeben:
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 >>)
|