Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Pro ENGINEER
  VB API Button in Creo hinzufügen

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 PTC CREO
Autor Thema:  VB API Button in Creo hinzufügen (4350 mal gelesen)
Redox
Mitglied
Konstrukteur Sondermaschinenbau


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

Beiträge: 180
Registriert: 26.08.2005

Windows 10 64
Creo 3.0

erstellt am: 16. Jul. 2015 19:35    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 beisammen,

ich beschäftige mich schon einige Zeit mit Creo und der Verbindung mit VB.NET API.

Aktuell habe ich noch 2 Probleme:

1) Wie kann ich einen Button in den Ribbon hinzufügen?
Ich bekommen das Demobeispiel nicht zum Laufen:

Ich bekomme entweder bei "UICreateCommand" oder "UIAddButton"
die Fehlermeldung "pfcExceptions::XToolkitFound"

Code:
    Public Sub addInputButton()

        Dim inputCommand As IpfcUICommand
        Dim buttonListener As IpfcUICommandActionListener

        Try

            '======================================================================
            'Start the timer to call EventProcess at regular intervals
            '======================================================================
            eventTimer = New Timers.Timer(500)
            eventTimer.Enabled = True
            AddHandler eventTimer.Elapsed, AddressOf Me.timeElapsed

            '======================================================================
            'Command is created which will be associated with the button. The class
            'implementing the actionlistener must be given as input.
            '======================================================================
            buttonListener = New GatherInputListener()
            inputCommand = aC.Session.UICreateCommand("INPUT", buttonListener)

            '======================================================================
            'Button is created in the menu "Windows"
            '======================================================================
            aC.Session.UIAddButton(inputCommand, "Modell", Nothing, _
                                "USER Async App", "USER Async Help", "pfcSessionObjectsExamples.txt")

            aC.AddActionListener(Me)


2) Ist ein kleineres Problem :-) Wie kann ich die Ebenenanzeige auf aus stellen,
damit beim Export nie Ebenen angezeigt werden? In der vbug.pdf finde ich da nichts.

Wäre super, wenn da jemand etwas weiß

lg
Sebastian

------------------
mfg
Redox

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

Piz Markant
Mitglied
CAD Admin - Konstrukteur


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

Beiträge: 773
Registriert: 06.09.2000

Windows 10 64 bit
DELL PRECISION TOWER5810
NVIDIA QUADRO M4000
Creo Parametric 4.0 M060
PDMLink 11.0 M030
IV 2019 i. d. Ausbildung

erstellt am: 17. Jul. 2015 10:54    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 Redox 10 Unities + Antwort hilfreich


display.jpg

 
Hallo,

was die Anzeige der Ebenen betrifft, in der config.pro Datei die entsprechenden Einträge setzen. (siehe Bild)

Gruß Piz

------------------
Theorie ist, wenn man alles weiß, aber nichts funktioniert.
Praxis ist wenn alles funktioniert, aber niemand weiß warum.

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

Redox
Mitglied
Konstrukteur Sondermaschinenbau


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

Beiträge: 180
Registriert: 26.08.2005

Windows 10 64
Creo 3.0

erstellt am: 17. Jul. 2015 16: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

Hallo,
danke für den Tip. Ich würd aber dem Befehl für die Api brauchen (damit beim Export von Zeichnungen die Ebenen angezeigt werden)

hat vielleicht wer ein funktionierendes Beispoel für das Button hinzufügen

mfg
Redox

------------------
mfg
Redox

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

anagl
Ehrenmitglied V.I.P. h.c.
 


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

Beiträge: 4566
Registriert: 28.05.2001

CREO2 M140
PDMLink 10.2 M020
HW diverse
Das Schreiben bei CAD.de ist freiwillig und kein Muss !!!!!

erstellt am: 17. Jul. 2015 18:31    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 Redox 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Redox:
Hallo,
danke für den Tip. Ich würd aber dem Befehl für die Api brauchen (damit beim Export von Zeichnungen die Ebenen angezeigt werden)

hat vielleicht wer ein funktionierendes Beispoel für das Button hinzufügen

mfg
Redox



Zwei Anmerkungen:
1. Ich glaube dass in der Customisation das Toolkit Menü dazugenommen werden muss
2. Man kann mit den Programmier-Tools (Java Weblink VBA) die Config-Optionen setzen


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

Servus Alois

[Diese Nachricht wurde von anagl am 17. Jul. 2015 editiert.]

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

Redox
Mitglied
Konstrukteur Sondermaschinenbau


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

Beiträge: 180
Registriert: 26.08.2005

Windows 10 64
Creo 3.0

erstellt am: 19. Jul. 2015 22:22    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

Toolkit ist installiert, aufgrund der bescheidenen doku werd ich das ganze übe mapkeys und windows shortcuts machen,wird auch gehen 😉

------------------
mfg
Redox

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

Redox
Mitglied
Konstrukteur Sondermaschinenbau


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

Beiträge: 180
Registriert: 26.08.2005

Windows 10 64
Creo 3.0

erstellt am: 26. Jul. 2015 11: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

Hallo noch einmal,

habe jetzt ein anderes Problem: Ich exportiere zb alle Zeichnungen einer Baugruppe automatisch (ich lasse alle Modelle einer Baugruppe durchgehen und exportiere diese einzeln) nach 20-50 Modellen bekommen ich folgenden Fehler:

Der Assistent für verwaltetes Debugging ""DisconnectedContext"" hat ein Problem in ""pfad\name.vshost.exe"" festgestellt.

Zusätzliche Informationen: Folgender Fehler beim Übergang in den COM-Kontext 0x71e940 für diesen RuntimeCallableWrapper: Systemaufruf ist fehlgeschlagen. (Ausnahme von HRESULT: 0x80010100 (RPC_E_SYS_CALL_FAILED)). Dieser tritt in der Regel auf, da der COM-Kontext 0x71e940, in dem dieser RuntimeCallableWrapper erstellt wurde, getrennt wurde oder aufgrund eines anderen Vorgangs ausgelastet ist. Die Schnittstellen werden aus dem aktuellen COM-Kontext (COM-Kontext 0x71e7d0) freigegeben. Dies kann Datenbeschädigung oder -verlust zur Folge haben. Um dieses Problem zu vermeiden, müssen Sie sicherstellen, dass alle COM-Kontexte/Apartments/Threads so lange beibehalten werden und für den Kontextübergang verfügbar sind, bis die Anwendung alle RuntimeCallableWrappers, die in ihnen enthaltene COM-Komponenten darstellen, vollständig verarbeitet hat.

Falls ein Handler für diese Ausnahme vorhanden ist, kann das Programm möglicherweise weiterhin sicher ausgeführt werden.

ich habe schon probiert, nach jedem export neu zu verbinden, aber das bringt auch nichts? wenn ich das Probramm neu starte funktioniert es wieder. Das blöde ist, der Fehler wird nicht von der try catch der exportfunktion abgefangen, d.h. mein Programm hängt sich dann immer ganz auf.

Hat da wer eine Idee?

Ich hole mir das modell  immer mit asyncConnection.Session.OpenFile(modelDesc).Activate()
und schließe das Fenster dann auch mit asyncConnection.Session.CurrentWindow.Close()
also das sollte nicht das Problem sein??

mfg
Sebastian

------------------
mfg
Redox

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

Wyndorps
Ehrenmitglied V.I.P. h.c.
Ingenieur



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

Beiträge: 4563
Registriert: 21.07.2005

erstellt am: 26. Jul. 2015 16:29    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 Redox 10 Unities + Antwort hilfreich

Von VB in Verbindung mit Creo habe ich keine Ahnung, aber für das automatisierte Erstellen von Zeichnungen und vieles mehr gibt es doch die "PTC Creo Distributed Batch Extension".

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

"Ich stimme mit der Mathematik nicht überein. Ich meine, daß die Summe von Nullen eine gefährliche Zahl ist."  (Stanislaw Jerzy Lec)

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

Redox
Mitglied
Konstrukteur Sondermaschinenbau


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

Beiträge: 180
Registriert: 26.08.2005

Windows 10 64
Creo 3.0

erstellt am: 26. Jul. 2015 21: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

hallo
ich lade die dateien nicht dum raus, ich prüfe zuerst ein paar parameter und schreibe dann die formate raus, die ich für die fertigung benötige,bsp wird beim blech die schnittkontur exportiert aber kein step, beim fräsen dann wieder keine Kontur. Außerdem wird bei der Benenung dann auch gleichdie Version/Revision mit an den dateinamen geschrieben.

eine extension dafür werden wir uns sicher nicht zulegen, aber danke werds mir mal anschauen

mfg sebastian

------------------
mfg
Redox

[Diese Nachricht wurde von Redox am 26. Jul. 2015 editiert.]

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

Wyndorps
Ehrenmitglied V.I.P. h.c.
Ingenieur



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

Beiträge: 4563
Registriert: 21.07.2005

erstellt am: 27. Jul. 2015 17: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 Nur für Redox 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Redox:
... eine extension dafür werden wir uns sicher nicht zulegen, aber danke werds mir mal anschauen ...


Distributed Batch ist meines Wissens nach kostenlos bei Creo dabei und muss nur bei der Installation extra angewählt werden.
Siehe auch hier.

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

"Ich stimme mit der Mathematik nicht überein. Ich meine, daß die Summe von Nullen eine gefährliche Zahl ist."  (Stanislaw Jerzy Lec)

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

Redox
Mitglied
Konstrukteur Sondermaschinenbau


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

Beiträge: 180
Registriert: 26.08.2005

Windows 10 64
Creo 3.0

erstellt am: 30. Mrz. 2018 18: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,

mittlerweile habe ich es geschafft den Button zu erstellen ;-) Wie kann man für diesen auch ein Icon festlegen?
muss ja mit dem  menufile gehen, jedoch habe ich nirgends eine Doku über die Key-Wörter gefunden..

Ist ja immer
KEY
VALUE
#
#

Hat schon jemand ein Icon hinzugefügt?

lg

------------------
mfg
Redox

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

Redox
Mitglied
Konstrukteur Sondermaschinenbau


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

Beiträge: 180
Registriert: 26.08.2005

Windows 10 64
Creo 3.0

erstellt am: 31. Mrz. 2018 16:44    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

Also, falls jemand das selbe Problem hat, bei mir war die Hauptursache, dass der Text Ordner nicht gefunden wurde, ich habe die Dateien dazu in einen Test-Ordner geschoben, das scheint zu funktionieren, wenn man den Ordner bei Connect mitgibt.

Leider reagiert das auf den Button drücken sehr träge, falls da wer eine andere Lösung hat bitte mitteilen :-)

hier der Code der Klasse: (aktuell füge ich nur bei einem Button das Icon hinzu)

Code:
            asyncConnection = (New CCpfcAsyncConnection).Connect(Nothing, Nothing, "H:\Test\text", 10)

Code:
Public Sub Initialise()
        Try
            addTerminationListener()
            addMenuAndButton()
            'clsCreo.asyncConnection.WaitForEvents()
        Catch ex As Exception
            clslog.addErrorException(ex, MethodInfo.GetCurrentMethod().DeclaringType.Name)
        Finally
            'If Not clsCreo.asyncConnection Is Nothing AndAlso clsCreo.asyncConnection.IsRunning Then
            '    clsCreo.asyncConnection.End()
            'End If

        End Try

    End Sub

    '======================================================================
    'Function  :  addTerminationListener
    'Purpose    :  This function adds termination listener to the Creo
    '              Parametric session.
    '======================================================================
    Private Sub addTerminationListener()
        Dim terminationListener As New ProEExitListener()
        Try
            clsCreo.asyncConnection.AddActionListener(terminationListener)
        Catch ex As Exception
            MsgBox(ex.Message.ToString + Chr(13) + ex.StackTrace.ToString)
        End Try

    End Sub

    '======================================================================
    'Class      :  ProEExitListener
    'Purpose    :  This class must implement the listner interface along
    '              with the correct client interface name. The OnTerminate
    '              function is called when the Creo Parametric session is
    '              ended by the user.
    '======================================================================
    Private Class ProEExitListener
        Implements IpfcAsyncActionListener
        Implements ICIPClientObject
        Implements IpfcActionListener

        Public Function GetClientInterfaceName() As String Implements pfcls.ICIPClientObject.GetClientInterfaceName
            GetClientInterfaceName = "IpfcAsyncActionListener"
        End Function

        Public Sub OnTerminate(ByVal _Status As Integer) Implements pfcls.IpfcAsyncActionListener.OnTerminate
            Dim aC As pfcls.IpfcAsyncConnection

            aC = (New CCpfcAsyncConnection).GetActiveConnection
            aC.InterruptEventProcessing()

            MsgBox("ProE Exited")
        End Sub

    End Class

    '======================================================================
    'Function  :  addMenuAndButton
    'Purpose    :  This function demonstrates the usage of UI functions to
    '              add a new menu and button to Creo Parametric.
    '======================================================================
    Private Sub addMenuAndButton()
        Dim session As pfcls.IpfcSession
        Dim inputCommand As IpfcUICommand
        Dim buttonListener2 As IpfcUICommandActionListener
        Dim exitCommand As IpfcUICommand
        Dim eListener As IpfcUICommandActionListener

        Try
            session = clsCreo.asyncConnection.Session
            buttonListener2 = New ButtonListener()
            eListener = New ExitListener()

            '======================================================================
            'Command is created which will be associated with the button. The class
            'implementing the actionlistener must be given as input.
            '======================================================================
            inputCommand = session.UICreateCommand("INPUT", buttonListener2)

            exitCommand = session.UICreateCommand("EXIT", eListener)

            '======================================================================
            'Menu is created and buttons are created in the menu
            '======================================================================
            session.UIAddMenu("VB-Async", "Windows", "pfcAsynchronousModeExamples.txt", Nothing)

            session.UIAddButton(exitCommand, "VB-Async", Nothing,
                            "USER Exit Listener", "USER Exit Help", "pfcAsynchronousModeExamples.txt")

            session.UIAddButton(inputCommand, "VB-Async", Nothing,
                            "USER Async App", "USER Async Help", "pfcAsynchronousModeExamples.txt")
            inputCommand.SetIcon("test.png")

        Catch ex As Exception
            clslog.addErrorException(ex, MethodInfo.GetCurrentMethod().DeclaringType.Name)
        End Try
    End Sub

    '======================================================================
    'Class      :  ButtonListener
    'Purpose    :  This class must implement the listner interface along
    '              with the correct client interface name. The OnCommand
    '              function is called when the user button is pressed.
    '======================================================================
    Private Class ButtonListener
        Implements pfcls.IpfcUICommandActionListener
        Implements ICIPClientObject

        Public Function GetClientInterfaceName() As String _
                        Implements ICIPClientObject.GetClientInterfaceName
            GetClientInterfaceName = "IpfcUICommandActionListener"
        End Function

        Public Sub OnCommand() Implements pfcls.IpfcUICommandActionListener.OnCommand
            Me.UserFunction()
        End Sub

        Public Sub UserFunction()
            Application.DoEvents()
            'clsCreoLayout.new_Command(eCreoCommand.Export_BOM_ULY)
        End Sub

    End Class

    '======================================================================
    'Class      :  ExitListener
    'Purpose    :  This class must implement the listner interface along
    '              with the correct client interface name. The OnCommand
    '              function is called when the user button is pressed to
    '              exit the session listener.
    '======================================================================
    Private Class ExitListener
        Implements pfcls.IpfcUICommandActionListener
        Implements ICIPClientObject

        Public Function GetClientInterfaceName() As String _
                        Implements ICIPClientObject.GetClientInterfaceName
            GetClientInterfaceName = "IpfcUICommandActionListener"
        End Function

        Public Sub OnCommand() Implements pfcls.IpfcUICommandActionListener.OnCommand
            Me.UserFunction()
        End Sub

        Public Sub UserFunction()

            Dim aC As pfcls.IpfcAsyncConnection

            aC = (New CCpfcAsyncConnection).GetActiveConnection
            aC.InterruptEventProcessing()

            MsgBox("Listener Exited")
        End Sub

    End Class


------------------
mfg
Redox

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