Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  PDF-Addin nicht 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:  PDF-Addin nicht speichern (1640 mal gelesen)
Ennuira93
Mitglied
Fachinformatiker Systemintegration


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

Beiträge: 16
Registriert: 18.04.2013

Autodesk Inventor
AutoCAD Mechanical 2013

erstellt am: 28. Okt. 2013 15: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

Guten Tag,
ich habe mal vor einigen Monaten ein Addin zusammengebastelt, dass .idw Dateien in .pdf Dateien umwandelt.
Jetzt wollten meine Koleggen das mal benutzen und es ist aufgefallen, dass man nachdem man es 1x benutzt hat, die Funktionen : Speichern als , Kopie speichern unter ... usw nicht mehr funktionieren.

Es würde mir sehr helfen wenn jemand von euch mir helfen könnte.
Vielen Dank! 

Hier nochmal der Quellcode :

Code:
Imports Inventor
Imports System.Runtime.InteropServices
Imports Microsoft.Win32

Namespace TestSpeichernNeuinstallation
    <ProgIdAttribute("TestSpeichernNeuinstallation.StandardAddInServer"), _
    GuidAttribute("f01145cb-dd0d-411b-9975-e49a219b849d")> _
    Public Class StandardAddInServer
        Implements Inventor.ApplicationAddInServer

        ' Inventor application object.
        Private m_inventorApplication As Inventor.Application
        Private WithEvents m_appEvents As Inventor.ApplicationEvents

#Region "ApplicationAddInServer Members"

        Public Sub Activate(ByVal addInSiteObject As Inventor.ApplicationAddInSite, ByVal firstTime As Boolean) Implements Inventor.ApplicationAddInServer.Activate

            ' This method is called by Inventor when it loads the AddIn.
            ' The AddInSiteObject provides access to the Inventor Application object.
            ' The FirstTime flag indicates if the AddIn is loaded for the first time.

            ' Initialize AddIn members.
            m_inventorApplication = addInSiteObject.Application
            m_appEvents = m_inventorApplication.ApplicationEvents

          

            ' TODO:  Add ApplicationAddInServer.Activate implementation.
            ' e.g. event initialization, command creation etc.

        End Sub

        Public Sub Deactivate() Implements Inventor.ApplicationAddInServer.Deactivate

            ' This method is called by Inventor when the AddIn is unloaded.
            ' The AddIn will be unloaded either manually by the user or
            ' when the Inventor session is terminated.

            ' TODO:  Add ApplicationAddInServer.Deactivate implementation

            ' Release objects.
            Marshal.ReleaseComObject(m_inventorApplication)
            m_inventorApplication = Nothing

            System.GC.WaitForPendingFinalizers()
            System.GC.Collect()

        End Sub

        Public ReadOnly Property Automation() As Object Implements Inventor.ApplicationAddInServer.Automation

            ' This property is provided to allow the AddIn to expose an API
            ' of its own to other programs. Typically, this  would be done by
            ' implementing the AddIn's API interface in a class and returning
            ' that class object through this property.

            Get
                Return Nothing
            End Get

        End Property

        Public Sub ExecuteCommand(ByVal commandID As Integer) Implements Inventor.ApplicationAddInServer.ExecuteCommand

            ' Note:this method is now obsolete, you should use the
            ' ControlDefinition functionality for implementing commands.

        End Sub

  

        Private Sub m_appEvents_OnSaveDocument( _
               ByVal DocumentObject As Inventor._Document, _
               ByVal BeforeOrAfter As Inventor.EventTimingEnum, _
               ByVal Context As Inventor.NameValueMap, _
               ByRef HandlingCode As Inventor.HandlingCodeEnum) _
                                  Handles m_appEvents.OnSaveDocument

            Dim dateiformat As String
            dateiformat = DocumentObject.FullFileName
  
            dateiformat = dateiformat.Substring(dateiformat.Length - 4)

            If dateiformat = ".idw" Then

                If BeforeOrAfter = EventTimingEnum.kBefore Then

                    If DocumentObject.DocumentType = DocumentTypeEnum.kDrawingDocumentObject Then

                        Dim sPartNumber As String
                        sPartNumber = DocumentObject.ReferencedDocuments(1).PropertySets.Item("{32853F0F-3444-11D1-9E93-0060B03C1CA6}").Item("Part Number").Value

                        Dim sRevision As String
                        sRevision = DocumentObject.PropertySets.Item("{F29F85E0-4FF9-1068-AB91-08002B27B3D9}").Item("Revision Number").Value

                        If sRevision = "" Then sRevision = "0"

                        Dim filename As String
                        filename = DocumentObject.FullFileName
                        filename = Left(filename, Len(filename) - 4)
                        filename = sPartNumber & "#" & sRevision & "#"

                        ' Save the current SilentOperation and then turn it on. 
                        'This will suppress the dwf viewer from being displayed. 
                        Dim currentSetting As Boolean

                        currentSetting = m_inventorApplication.SilentOperation

                        m_inventorApplication.SilentOperation = True

                        Dim oPDFTrans As TranslatorAddIn
                        oPDFTrans = m_inventorApplication.ApplicationAddIns.ItemById( _
                        "{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")
                        If oPDFTrans Is Nothing Then
                            MsgBox("Could not access PDF translator.")
                            Exit Sub
                        End If


                        ' Create some objects that are used to pass information to the translator Add-In. 
                        Dim oContext As TranslationContext
                        oContext = m_inventorApplication.TransientObjects.CreateTranslationContext
                        Dim oOptions As NameValueMap
                        oOptions = m_inventorApplication.TransientObjects.CreateNameValueMap
                        If oPDFTrans.HasSaveCopyAsOptions(m_inventorApplication.ActiveDocument, _
                                                                     oContext, oOptions) Then

                            ' Set to print all sheets.  This can also have the value
                            ' kPrintCurrentSheet or kPrintSheetRange. If kPrintSheetRange
                            ' is used then you must also use the CustomBeginSheet and
                            ' Custom_End_Sheet to define the sheet range.
                            oOptions.Value("Sheet_Range") = PrintRangeEnum.kPrintAllSheets

                            ' Other possible options...
                            'oOptions.Value("Custom_Begin_Sheet") = 1
                            'oOptions.Value("Custom_End_Sheet") = 5
                            'oOptions.Value("All_Color_AS_Black") = True
                            'oOptions.Value("Remove_Line_Weights") = True
                            'oOptions.Value("Vector_Resolution") = 200

                            ' Define various settings and input to provide the translator.
                            oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism
                            Dim oData As DataMedium

                            If MsgBox("Wollen Sie die Zeichnung nach D3 exportieren?", vbYesNo + vbDefaultButton2, "Speicherort") = vbYes Then
                                If MsgBox("Sind Sie sich wirklich sicher, dass die Zeichnung nach D3 expotieren wollen?", vbYesNo + vbDefaultButton2, "Speicherort") = vbYes Then
                                    If My.Computer.FileSystem.FileExists("C:\Test\" & filename & ".pdf") Then
                                        If MsgBox("Die Datei exisitert bereits. Soll die Zeichnung überschrieben werden?", vbYesNo + vbDefaultButton2, "Überschreiben") = vbYes Then

                                            oData = m_inventorApplication.TransientObjects.CreateDataMedium
                                            oData.FileName = "C:\Test\" & filename & ".pdf"
                                            MsgBox("Die Datei wurde auf dem Server gespeichert")

                                        Else
                                            MsgBox("Die Datei wurde nicht überschrieben")
                                            ' eventuell Code hinzfügen : Wollen Sie die Datei unter anderem Namen speichern?
                                        End If
                                    End If

                                    oData = m_inventorApplication.TransientObjects.CreateDataMedium
                                    oData.FileName = "C:\Test\" & filename & ".pdf"
                                    MsgBox("Die Datei wurde auf dem Server gespeichert")

                                    Call oPDFTrans.SaveCopyAs(m_inventorApplication.ActiveDocument, _
                                                           oContext, oOptions, oData)
                                    m_inventorApplication.SilentOperation = currentSetting
                                End If

                            End If


                        End If

                    End If
                End If
            End If

        End Sub

#End Region

    End Class

End Namespace


[Diese Nachricht wurde von Ennuira93 am 28. Okt. 2013 editiert.]

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: 28. Okt. 2013 19:07    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 Ennuira93 10 Unities + Antwort hilfreich

Hallo

Versuch mal im Context des Events zu prüfen ob

Code:
SaveCopyAsFileName = "..."

drin steht oder
Code:
SaveFileName = "..."

Dein Code sollte nur beim zweiten laufen.

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

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

Ennuira93
Mitglied
Fachinformatiker Systemintegration


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

Beiträge: 16
Registriert: 18.04.2013

erstellt am: 29. Okt. 2013 11: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

Hallo rkauskh,

danke für die Antwort, aber ich kann leider damit nichts anfangen.
Der Code läuft ja. Die PDFs werden bei uns auf dem Server gespeichert, aber nachdem dieses Addin einmal benutzt wurde kann man nicht mehr die anderen Speicherfunktionen benutzen wie zB Kopie speichern unter . Es funktioniert nur noch speichern und alles speichern.

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

daywa1k3r
Moderator
Softwareentwickler




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

Beiträge: 3497
Registriert: 01.08.2002

Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570
Laptop: Alienware m17x
Win7, Inventor2012

erstellt am: 29. Okt. 2013 13:36    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 Ennuira93 10 Unities + Antwort hilfreich

Hi, ohne jetzt den Code studiert zu haben bin ich mir ziemlich sicher, dass es an nicht zurückgesetzten „SilentOperation“ liegt, die wenn falsch gesetzt bewirkt, dass gar keine Meldungen mehr ausgegeben werden (so wie z.B. Speichern-, Öffnen-… Dialoge). Also solltest du am Ende für alle Fälle ein:


Code:

m_inventorApplication.SilentOperation = false

reinschreiben, so dass deine letzte 3 Zeilen wie folgt aussehen:

Code:

m_inventorApplication.SilentOperation = false
End Class
End Namespace


------------------
Grüße Igor

FX64 Software Solutions - Inventor Tools
FX64 LambdaSpect - Lichtsimulation mit Autodesk Inventor

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: 29. Okt. 2013 19:56    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 Ennuira93 10 Unities + Antwort hilfreich

Bingo würd ich sagen Igor. 

Zusätzlich würd ich die Abbruchbedingung auch entsprechend erweitern.

Code:
If oPDFTrans Is Nothing Then
    m_inventorApplication.SilentOperation = false
    MsgBox("Could not access PDF translator.")
    Exit Sub
End If

Oder gleich Try-Catch-Finally verwenden?

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

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

daywa1k3r
Moderator
Softwareentwickler




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

Beiträge: 3497
Registriert: 01.08.2002

Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570
Laptop: Alienware m17x
Win7, Inventor2012

erstellt am: 29. Okt. 2013 20: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 Nur für Ennuira93 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von rkauskh:

Oder gleich Try-Catch-Finally verwenden?

Genau so, und die SilentOperation in Finally auf false setzen, dann kann in Try-Catch passieren was mag.

------------------
Grüße Igor

FX64 Software Solutions - Inventor Tools
FX64 LambdaSpect - Lichtsimulation mit Autodesk Inventor

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

Ennuira93
Mitglied
Fachinformatiker Systemintegration


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

Beiträge: 16
Registriert: 18.04.2013

erstellt am: 30. Okt. 2013 07:02    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

Guten Morgen und vielen Dank für die Antworten.
Das hat mir sehr geholfen.
Problem tritt nicht mehr auf. 

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