| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
Autor
|
Thema: Proe VB API, installieren (7079 mal gelesen)
|
TripleM Mitglied Konstrukteur
Beiträge: 11 Registriert: 20.08.2012 Pro/E
|
erstellt am: 12. Apr. 2013 10:11 <-- editieren / zitieren --> Unities abgeben:
Hi, möchte eine Tool nutzen das über VB auf Proe zugreift. Da dies nicht ging öffnete ich ptcsetup und musste feststellen das ich es auch nicht dazu installieren kann. Gibt es noch andere altanatieven wenn dies bei der Installation nicht aufgeführt ist? danke MfG TripleM Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
vladi182 Mitglied Konstrukteur - CAD-Administrator
Beiträge: 46 Registriert: 22.03.2013 Creo/Elements/Pro M070 Workstation HP Z400 Win7 64 MDESIGN 2010 Office 2003
|
erstellt am: 13. Apr. 2013 18:16 <-- editieren / zitieren --> Unities abgeben: Nur für TripleM
Hi bei der Installation muss die API Schnittstelle dabei sein. Bei mir ist die dabei gewesen. Mit mit welchem Program hast den Tool gemacht? VBA Excel? Wenn ja wie hast du daraus eine exe Datei erstellt? Möchte gerne ein Fenster programmieren und die Daten werden von Excel bezogen werden. [Diese Nachricht wurde von vladi182 am 13. Apr. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
vladi182 Mitglied Konstrukteur - CAD-Administrator
Beiträge: 46 Registriert: 22.03.2013 Creo/Elements/Pro M070 Workstation HP Z400 Win7 64 MDESIGN 2010 Office 2003
|
erstellt am: 13. Apr. 2013 18:33 <-- editieren / zitieren --> Unities abgeben: Nur für TripleM
|
NicoFTB Mitglied Ingenieur Entwicklung/Konstuktion
Beiträge: 806 Registriert: 08.05.2012
|
erstellt am: 23. Apr. 2013 12:47 <-- editieren / zitieren --> Unities abgeben: Nur für TripleM
|
San Benedetto Mitglied
Beiträge: 29 Registriert: 28.05.2013 Win7 Pro/e Wf4/Creo 2.0 VB2010express VB2012express
|
erstellt am: 28. Mai. 2013 13:18 <-- editieren / zitieren --> Unities abgeben: Nur für TripleM
|
cadsr Mitglied
Beiträge: 237 Registriert: 06.05.2004 WF5 M200-64bit, Creo2 M050-64bit Creo3 M070
|
erstellt am: 30. Apr. 2014 09:19 <-- editieren / zitieren --> Unities abgeben: Nur für TripleM
Hallo, ich hole diese Thema nochmals hoch, weil es genau zu meiner Fragestellung passt. Ich mache gerade meine ersten Versuche mit dem VBA-API. Ziel ist es einige Parameter zu ändern, "ProE"-Version ist creo elements/pro5 M200. Die Installation hat soweit funktioniert und von Excel aus kann ich über VBA auf ProE zugreifen. Nun habe ich Visual Studio Express 2012 installiert und wollte testhalber mal das Programm von San Benedettos PDF auführen. Der Verweis den man in Visual Studio einrichten muß, heißt zwischenzeitlich Creo VB API Type library... Auf diese scheint das Programm nun wohl irgendwie nicht zuzugreifen, denn ich bekomme folgende Fehlermeldungen: ------ Erstellen gestartet: Projekt: Parameter-get-1, Konfiguration: Debug Any CPU ------ G:\ProE-WF5\vba1\Parameter-get-1\Parameter-get-1\Form1.vb(4) : error BC30002: Der Typ "Cstringseq" ist nicht definiert. G:\ProE-WF5\vba1\Parameter-get-1\Parameter-get-1\Form1.vb(5) : error BC30002: Der Typ "IpfcModel" ist nicht definiert. G:\ProE-WF5\vba1\Parameter-get-1\Parameter-get-1\Form1.vb(6) : error BC30002: Der Typ "IpfcModelDescriptor" ist nicht definiert. G:\ProE-WF5\vba1\Parameter-get-1\Parameter-get-1\Form1.vb(10) : error BC30451: "Proe" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. G:\ProE-WF5\vba1\Parameter-get-1\Parameter-get-1\Form1.vb(10) : error BC30002: Der Typ "CCpfcAsyncConnection" ist nicht definiert. G:\ProE-WF5\vba1\Parameter-get-1\Parameter-get-1\Form1.vb(11) : error BC30451: "asyncConnection" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. G:\ProE-WF5\vba1\Parameter-get-1\Parameter-get-1\Form1.vb(11) : error BC30451: "Proe" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. G:\ProE-WF5\vba1\Parameter-get-1\Parameter-get-1\Form1.vb(12) : error BC30451: "session" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. G:\ProE-WF5\vba1\Parameter-get-1\Parameter-get-1\Form1.vb(12) : error BC30451: "asyncConnection" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. G:\ProE-WF5\vba1\Parameter-get-1\Parameter-get-1\Form1.vb(14) : error BC30451: "session" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. G:\ProE-WF5\vba1\Parameter-get-1\Parameter-get-1\Form1.vb(18) : error BC30451: "session" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. G:\ProE-WF5\vba1\Parameter-get-1\Parameter-get-1\Form1.vb(19) : error BC30451: "session" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. G:\ProE-WF5\vba1\Parameter-get-1\Parameter-get-1\Form1.vb(21) : error BC30451: "session" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. G:\ProE-WF5\vba1\Parameter-get-1\Parameter-get-1\Form1.vb(21) : error BC30451: "EpfcFileListOpt" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. G:\ProE-WF5\vba1\Parameter-get-1\Parameter-get-1\Form1.vb(25) : error BC30002: Der Typ "CCpfcModelDescriptor" ist nicht definiert. G:\ProE-WF5\vba1\Parameter-get-1\Parameter-get-1\Form1.vb(26) : error BC30451: "session" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. G:\ProE-WF5\vba1\Parameter-get-1\Parameter-get-1\Form1.vb(31) : error BC30451: "asyncConnection" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. ========== Erstellen: 0 erfolgreich, 1 fehlerhaft, 0 aktuell, 0 übersprungen ========== Hat jemand einen Tip was da noch falsch läuft? Muß nach der Installation von Visual Studio "Creo VB API..." von selbst bei den Verweisen vorhanden sein? Ich mußte mit Durchsuchen ins WF5-Installationverzeichnis gehen (...\x86e_win64\obj\pfclscom.exe). Viele Dank schon mal für alle Tips! Stefan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
San Benedetto Mitglied
Beiträge: 29 Registriert: 28.05.2013 Win7 Pro/e Wf4/Creo 2.0 VB2010express VB2012express
|
erstellt am: 30. Apr. 2014 11:24 <-- editieren / zitieren --> Unities abgeben: Nur für TripleM
Hallo Cadsr die Creo Api sollte von VB 2012 erkannt werden (also nur Hacken setzen) bei dir sieht es so aus als ob Vb 2012 das nicht macht . mach nochmal ein unregister.bat (im Admin Modus) und dann ein register.bat (im Admin Modus) starte dann Vb und mach eine neue Form Projekt -> verweis ->Com Typbibliotheken dann müsste Creo VB API Type Librady for Creo Parametric 2.0 unter den vielen Einträgen erscheinen -> Hacken setzen das fällt mir gerade noch ein -- hast du in der Form pfcls importiert Imports pfcls als erste Befehlszeile [Diese Nachricht wurde von San Benedetto am 30. Apr. 2014 editiert.] [Diese Nachricht wurde von San Benedetto am 30. Apr. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadsr Mitglied
Beiträge: 237 Registriert: 06.05.2004 WF5 M200-64bit, Creo2 M050-64bit Creo3 M070
|
erstellt am: 30. Apr. 2014 12:07 <-- editieren / zitieren --> Unities abgeben: Nur für TripleM
Hallo San Benedetto, vielen Dank für Deine Tips. Ich habe die Schritte durchgeführt, aber die Fehlermeldungen kommen immer noch. Auch die Import-Zeile habe ich ergänzt und bekomme hier den Fehler: Import wurde nicht deklariert. Auf das Obejekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. Den Verweis auf Creo finde ich immer, seitdem ich ihn von Hand hinzugefügt habe. Evtl. muss ich VS nochmals deinstallieren. Oder können es noch irgendwelche Sicherheitseinstellungen auf dem Rechner sein? Die Firewall habe ich auch mal ausgeschaltet, ändert aber nichts. Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
San Benedetto Mitglied
Beiträge: 29 Registriert: 28.05.2013 Win7 Pro/e Wf4/Creo 2.0 VB2010express VB2012express
|
erstellt am: 30. Apr. 2014 12:53 <-- editieren / zitieren --> Unities abgeben: Nur für TripleM
|
cadsr Mitglied
Beiträge: 237 Registriert: 06.05.2004 WF5 M200-64bit, Creo2 M050-64bit Creo3 M070
|
erstellt am: 07. Mai. 2014 10:18 <-- editieren / zitieren --> Unities abgeben: Nur für TripleM
Hallo, nach vielen Irrwegen funktioniert nun das Zusammenspiel zwischen VS2012 und Creo elements pro (WF5). Es war kein Installationsproblem (trotz verschiedener Deinstallationen, Neuinstallationen, Updates etc. blieben die Fehlermeldungen die gleichen). Der erste (blöde) Fehler war, das ich statt "Imports pfcls" "Import pfcls" geschrieben habe. Folgender Code hat bei mir jetzt funktioniert:
Option Explicit On Imports pfcls Public Class Form1 Private Sub Button_drw_open_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_drw_open.Click Dim drawings As Cstringseq Dim model As pfcls.IpfcModel Dim modelDesc As pfcls.IpfcModelDescriptor Dim Mdlname As String Dim Drwname As String Dim Dirname As String Dim asyncconnection As pfcls.IpfcAsyncConnection Dim cAC As New pfcls.CCpfcAsyncConnection Dim session As pfcls.IpfcSession asyncconnection = cAC.Connect("", "", ".", 5) session = asyncconnection.Session Try model = session.CurrentModel If model Is Nothing Then Throw New Exception("Kein Modell im Hauptfenster: ") End If Dirname = session.GetCurrentDirectory() Mdlname = session.CurrentModel.FullName.ToLower 'ToLower wandelt in Kleinschrift um Drwname = Mdlname + ".drw" drawings = session.ListFiles(Drwname, EpfcFileListOpt.EpfcFILE_LIST_LATEST, Dirname) 'Zeile 29 If drawings.Count = 0 Then Throw New Exception("Keine Zeichnung zum Modell vorhanden ") End If modelDesc = (New pfcls.CCpfcModelDescriptor).CreateFromFileName(Drwname) session.OpenFile(modelDesc).Activate() Catch ex As Exception MsgBox(ex.Message.ToString + Chr(13) + ex.StackTrace.ToString) End Try asyncconnection.Disconnect(2)
End Sub End Class Das Explicit On kann man machen oder auch nicht. An der Funktion dieses Beispiels ändert sich nichts.
Dann scheint VS2012 irgendwie penibler zu sein, evtl. ist das auch noch eine Einstellungssache. Wenn ich z.B. statt "Dim Mdlname As String" nur "Dim Mdlname" wie im PDF schreibe bekomme ich Fehlermeldungen. Ich bekomme bei geöffnetem Teil und nicht vorhandener Zeichnung die angehängte Meldung. Hat jemand einen Tip, was hier noch falsch ist? Gruß Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NicoFTB Mitglied Ingenieur Entwicklung/Konstuktion
Beiträge: 806 Registriert: 08.05.2012
|
erstellt am: 07. Mai. 2014 11:37 <-- editieren / zitieren --> Unities abgeben: Nur für TripleM
Dim drawings As CStringseq mit Dim drawings As pfcls.Istringseq ersetzen. Wenn du Option Strict On setzt müsstest du das (glaube ich) schon beim Schreiben erkennen. Dazu müssten ggf. dann aber noch weitere Anpassungen an deinem Code vorgenommen werden. Btw. in deiner Fehlermeldung steht auch direkt oben als Überschrift was verkehrt ist. ------------------ Grüße Nico \o/ Üs - ProE-Beziehungen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
magge84 Mitglied Dipl.-Ing. (Entwicklung)
Beiträge: 66 Registriert: 04.09.2008 Solid Works 2018 + PDM Windows 10 64-bit HP Z-Book Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz NVIDIA Quadro M3000M
|
erstellt am: 31. Jul. 2015 13:55 <-- editieren / zitieren --> Unities abgeben: Nur für TripleM
Hallo zusammen, ich bin gerade dabei die VB API zum Laufen zu bringen. Die Verbindung zu Creo steht. Nun versuche ich den Code von cadsr zu testen. Leider bekomme ich immer die selbe Fehlermeldung, wie cadsr. "INVALID ...." Ich habe jetzt rausfinden können, dass folgende Programmzeile daran schuld ist: ... drawings = session.ListFiles(Drwname, EpfcFileListOpt.EpfcFILE_LIST_LATEST, Dirname) ... Ersetze ich den Dirname durch einen festen Pfad, z.B. "C:\temp\" funktioniert alles einwandfrei. Definiere ich den Dirname aber vorher, kommt die Fehlermeldung. ... Dim Dirname As String Dirname = session.GetCurrentDirectory().ToLower ... Ich habe auch schon die Verbesserungsvorschläge von Nico getestet. Ohne Erfolg.
Hat jemand eine Idee wo hier der Hase im Pfeffer begraben ist? Ich / Wir wissen nicht mehr weiter. P.S.: Ich verwende Visual Basic 2010 Express. ------------------ Gruß, Markus [Diese Nachricht wurde von magge84 am 31. Jul. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
San Benedetto Mitglied
Beiträge: 29 Registriert: 28.05.2013 Win7 Pro/e Wf4/Creo 2.0 VB2010express VB2012express
|
erstellt am: 31. Jul. 2015 14:23 <-- editieren / zitieren --> Unities abgeben: Nur für TripleM
|
magge84 Mitglied Dipl.-Ing. (Entwicklung)
Beiträge: 66 Registriert: 04.09.2008
|
erstellt am: 31. Jul. 2015 14:42 <-- editieren / zitieren --> Unities abgeben: Nur für TripleM
|
San Benedetto Mitglied
Beiträge: 29 Registriert: 28.05.2013 Win7 Pro/e Wf4/Creo 2.0 VB2010express VB2012express
|
erstellt am: 31. Jul. 2015 14:56 <-- editieren / zitieren --> Unities abgeben: Nur für TripleM
ok dann versuch mal ... drawings = session.ListFiles(Drwname, EpfcFileListOpt.EpfcFILE_LIST_LATEST, session.GetCurrentDirectory() ... evtl - session.GetCurrentDirectory() to string oder so kanns leider grad nicht testen lass dir mal dirname anzeigen MsgBox("Dir" &Dirname) [Diese Nachricht wurde von San Benedetto am 31. Jul. 2015 editiert.]
[Diese Nachricht wurde von San Benedetto am 31. Jul. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Redox Mitglied Konstrukteur Sondermaschinenbau
Beiträge: 180 Registriert: 26.08.2005 Windows 10 64 Creo 3.0
|
erstellt am: 01. Aug. 2015 15:59 <-- editieren / zitieren --> Unities abgeben: Nur für TripleM
|
magge84 Mitglied Dipl.-Ing. (Entwicklung)
Beiträge: 66 Registriert: 04.09.2008
|
erstellt am: 03. Aug. 2015 08:28 <-- editieren / zitieren --> Unities abgeben: Nur für TripleM
Guten Morgen, folgender Code hat den gewünschten Erfolg gebracht, .... drawings = session.ListFiles(Drwname, EpfcFileListOpt.EpfcFILE_LIST_LATEST, session.GetCurrentDirectory().ToString) .... Vielen Dank! ------------------ Gruß, Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |