Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  Iproperty in Vb auslesen/ benutzen

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:  Iproperty in Vb auslesen/ benutzen (4104 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: 24. Apr. 2013 15: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

Guten Tag,

ich würde gerne die Bauteilnummer und die Revisionsnummer in Vb auslesen und diese benutzen um den Dateinamen daraus zu erstellen. Sollte dann so sein Bauteilnummer_Revisionsnummer.Dateiformat.
Nun bekomme ich es momentan nicht hin, diese Werte auszulesen.
Würde mir sehr freuen, wenn ihr mir helfen könntet.
Hier mein Code :

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


 


            If BeforeOrAfter = EventTimingEnum.kAfter Then

                If DocumentObject.DocumentType = DocumentTypeEnum.kDrawingDocumentObject Then

                 


                    ' Get the filename minus the extension.
                    Dim filename As String
                    filename = DocumentObject.FullFileName
                    filename = Left(filename, Len(filename) - 4)
                    filename = InputBox("Bitte den Datei Namen angeben")

                    ' 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

                    ' Save the file as dwf. 


                    ' Save the file as pdf. 
                    If MsgBox("Soll die Datei auf den Server gespeichert werden?", vbYesNo, "Speicherort") = vbYes Then
                        DocumentObject.SaveAs("C:\ServerpfadTest\" & filename & ".pdf", True)
                        MsgBox("Die Datei wurde auf dem Server gespeichert")
                    Else
                        DocumentObject.SaveAs(filename & ".pdf", True)
                        MsgBox("Die Datei wurde NICHT auf dem Server gespeichert")
                    End If

                    ' Reset SilentOperation back to its previous value. 
                    m_inventorApplication.SilentOperation = currentSetting
                End If
            End If
        End Sub

#End Region

    End Class

End Namespace


Das Addin soll die Datei beim Speichern auch als PDF speichern. Eventuell auf dem Server speichern und den Namen ändern. Das mit als PDF Speichern und auf dem Server speichern funktioniert. Jetzt muss ich nur noch irgendwie die Iproperties benutzen, damit ich den Namen ändern kann.


Mfg Basti 

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: 24. Apr. 2013 21:45    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

Code:

Dim sPartNumber as String
sPartNumber=DocumentObject.PropertySets.Item("{32853F0F-3444-11D1-9E93-0060B03C1CA6}").Item("Part Number")
Dim sRevision as string
sRevision=DocumentObject.PropertySets.Item("{F29F85E0-4FF9-1068-AB91-08002B27B3D9}").Item("Revision Number")

Damit hast du den Inhalt der iProps und kannst daraus den Dateinamen zusammensetzen.

------------------
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: 25. Apr. 2013 09:00    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


TestSpeichernNeuinstallation.zip

 
Vielen Dank für die Antwort Ralf  
Habe jedoch das Problem, wenn ich den Code einfüge und zB. die sPartNumber dann in einer MsgBox wiedergeben möchte, dass der Code nicht funktioniert. Ich habe den Code in der OnSaveMethode ( wie den restilichen Code). Muss ich da irgendetwas beachten?
Bin relativ neu mit VB und Inventor.
Hab das Projekt mal als .Zip hochgeladen.
Vielen Dank  

Edit : Ich benutze die Testversion von Inventor 2013 Sp1 ( ich schreibe das Addin für einen Arbeitskollegen)
Und zum Programmieren Visual Studio 2010 und das SDK, dass bei Inventor 2013 dabei ist.

[Diese Nachricht wurde von Ennuira93 am 25. Apr. 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: 25. Apr. 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 Nur für Ennuira93 10 Unities + Antwort hilfreich

Hallo

Kann sein, daß noch ein .Value am Ende fehlt. Also:

Code:
Dim sPartNumber as String
sPartNumber=DocumentObject.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

------------------
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: 25. Apr. 2013 13:11    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

Super! Es funktioniert.Vielen vielen Dank!   

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

Autodesk Inventor
AutoCAD Mechanical 2013

erstellt am: 30. Apr. 2013 08:30    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

Ich habe leider noch eine Frage 
Wie kann ich die Iproperty aus dem (3D) Modell rausbekommen, das in der .idw ist? 
Vielen Dank 

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: 30. Apr. 2013 12:52    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

Präzise Antwort: Das kommt darauf an.

Wenn in der IDW nur eine/mehrere Ansichten eines Bauteiles vorhanden ist, kannst du z.B. über das ReferencedDocument eines x-beliebigen DrawingViews gehen.

Code:
Dim oDoc as Document
oDoc=myDrawDoc.ActiveSheet.DrawingViews.Item(1).ReferencedDocument

Danach geht's genauso an die iProps wie in der IDW. Sind aber mehrere Bauteile/Baugruppen referenziert (oberpfuibäh) müßte man erstmal klären nach welchen Kriterien die Auswahl des richtigen Dokumentes erfolgen soll.

------------------
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: 08. Mai. 2013 11:41    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

Vielen Dank Ralf. Das hat mir sehr geholfen 
Hier möchte ich nochmal den Code zur verfügung stellen.
Vielleicht können irgendwannmal einige Leute einen Teil von dem Code gut benutzen.
Zitat:
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 sUsername As String = System.Security.Principal.WindowsIdentity.GetCurrent().Name
                            sUsername = sUsername.Substring(3, sUsername.Length - 3)

                            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


                            ' Get the filename minus the extension.

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


                            ' 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


                            ' Save the file as pdf. 
                            ' Überprüft ob Datei bereits vorhanden und fragt ob überschrieben werden soll
                            ' Fragt ob auf Server gespeichert werden soll oder Lokal
                            If MsgBox("Soll die Datei auf den Server gespeichert werden?", vbYesNo, "Speicherort") = vbYes Then
                                If My.Computer.FileSystem.FileExists("C:\ServerpfadTest\" & filename & ".pdf") Then
                                    If MsgBox("Die Datei exisitert bereits. Soll die Datei überschrieben werden?", vbYesNo, "Überschreiben") = vbYes Then

                                        DocumentObject.SaveAs("C:\ServerpfadTest\" & filename & ".pdf", True)
                                        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

                                Else
                                    DocumentObject.SaveAs("C:\ServerpfadTest\" & filename & ".pdf", True)
                                    MsgBox("Die Datei wurde auf dem Server gespeichert")

                                End If

                            Else

                                If My.Computer.FileSystem.FileExists(filename & ".pdf") Then
                                    If MsgBox("Die Datei exisitert bereits. Soll die Datei überschrieben werden?", vbYesNo, "Überschreiben") = vbYes Then
                                        DocumentObject.SaveAs(filename & ".pdf", True)
                                        MsgBox("Die Datei wurde NICHT auf dem Server gespeichert, sondern lokal")
                                    Else
                                        MsgBox("Die Datei wurde nicht überschrieben")
                                        ' eventuell Code hinzfügen : Wollen Sie die Datei unter anderem Namen speichern?
                                    End If
                                Else
                                    DocumentObject.SaveAs(filename & ".pdf", True)
                                    MsgBox("Die Datei wurde Nicht auf dem Server gespeichert, sondern lokal")
                                End If


                                ' Reset SilentOperation back to its previous value. 
                                m_inventorApplication.SilentOperation = currentSetting
                            End If
                    End If
                End If
            End If
        End Sub

#End Region

    End Class

End Namespace


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

Autodesk Inventor
AutoCAD Mechanical 2013

erstellt am: 16. Mai. 2013 10:17    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,

ich bräuchte wohl wiedermal eure Hilfe.
Ich habe festgestellt, dass bei .idw Dateien, die mehrere Blätter enthalten nur das aktive Blatt gedruckt wird. Wie kann ich meinen vorhandenen Code erweitern / umschreiben um alle Blätter in eine PDF zu speichern? Vielen Dank. 

mfg Basti 

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: 16. Mai. 2013 11:37    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

Schau mal in die Programmierungshilfe unter "TranslatorAddIn.SaveCopyAs Method". Das ist ein Beispiel für den mehrseitigen PDF-Export mit bei. Ich glaub mit deiner jetzigen SaveAs-Methode geht das nicht oder du müßtest hinterher selber die Einzel-PDF joinen.

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

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

Lothar Boekels
Ehrenmitglied V.I.P. h.c.
Dipl.-Ing. Maschinenbau und CAD-Trainer



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

Beiträge: 3794
Registriert: 15.02.2001

erstellt am: 16. Mai. 2013 12:16    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 Basti,

evtl hilft Dir das Beispiel aus der Hilfe - ist allerdings VBA:

Code:

Public Sub PublishPDF()
    ' Get the PDF translator Add-In.
    Dim PDFAddIn As TranslatorAddIn
    Set PDFAddIn = ThisApplication.ApplicationAddIns.ItemById("{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}")

    'Set a reference to the active document (the document to be published).
    Dim oDocument As Document
    Set oDocument = ThisApplication.ActiveDocument

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

    ' Create a NameValueMap object
    Dim oOptions As NameValueMap
    Set oOptions = ThisApplication.TransientObjects.CreateNameValueMap

    ' Create a DataMedium object
    Dim oDataMedium As DataMedium
    Set oDataMedium = ThisApplication.TransientObjects.CreateDataMedium

    ' Check whether the translator has 'SaveCopyAs' options
    If PDFAddIn.HasSaveCopyAsOptions(oDocument, oContext, oOptions) Then

        ' Options for drawings...

        oOptions.Value("All_Color_AS_Black") = 0

        'oOptions.Value("Remove_Line_Weights") = 0
        'oOptions.Value("Vector_Resolution") = 400
        'oOptions.Value("Sheet_Range") = kPrintAllSheets
        'oOptions.Value("Custom_Begin_Sheet") = 2
        'oOptions.Value("Custom_End_Sheet") = 4
    End If

    'Set the destination file name
    oDataMedium.FileName = "c:\temp\test.pdf"

    'Publish document.
    Call PDFAddIn.SaveCopyAs(oDocument, oContext, oOptions, oDataMedium)
End Sub



------------------
mit freundlichem Gruß
aus Mönchengladbach
Lothar Boekels

-----------------------------------------------------
Wir unterstützen die Arbeit der
Rettungshundestaffel des DRK in Viersen

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

Autodesk Inventor
AutoCAD Mechanical 2013

erstellt am: 16. Mai. 2013 13:32    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

Vielen Dank euch beiden 
Dieses Beispiel aus VBA hab ich vorher schon gefunden und nun in VB umgesetzt.
Mein Code sieht nun wie folgt aus :
Zitat:
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 sUsername As String = System.Security.Principal.WindowsIdentity.GetCurrent().Name
                        sUsername = sUsername.Substring(3, sUsername.Length - 3)

                        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

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

                        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, "Speicherort") = vbYes Then
                                If My.Computer.FileSystem.FileExists("C:\ServerpfadTest\" & filename & ".pdf") Then
                                    If MsgBox("Die Datei exisitert bereits. Soll die Datei überschrieben werden?", vbYesNo, "Überschreiben") = vbYes Then

                                        oData = m_inventorApplication.TransientObjects.CreateDataMedium
                                        oData.FileName = "C:\ServerpfadTest\" & 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

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

                                    ' Call the translator.
                                    Call oPDFTrans.SaveCopyAs(m_inventorApplication.ActiveDocument, _
                                                                      oContext, oOptions, oData)
                                End If


                                ' Get the filename minus the extension.

                                ' 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


                            End If
                        End If

                    End If
                End If
            End If

        End Sub


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