Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Pro ENGINEER
  VB in ProEngineer starten

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 in ProEngineer starten (6359 mal gelesen)
pleudel
Mitglied
Projektleiterin


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

Beiträge: 156
Registriert: 28.11.2011

Windows 7
UG NX 12 (auch Daimler)
Visual Basic 2017 Express
Programmierung in NX, ProE/Creo, PRO.FILE

erstellt am: 28. Jan. 2014 09:18    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 zusammen,
ich hoffe, ich bin hier überhaupt richtig!
Ich habe bereits viel Programmiererfahrung mit VB.Net im Zusammenhang mit Siemens NX, nun möchte ich gerne das ein oder andere Programm in Pro/E erstellen (vom Prinzip hier wahrscheinlich ähnlich der Programme von NX).

Ich habe auch schon den benötigten Verweis für die Pro/E-Bibliothek hinzugefügt und auch das Ansprechen der Sitzung sollte kein Problem darstellen.

Mein Problem ist aber: Wie bekomme ich mein VB in Pro/E?
In NX ist das ganz einfach, Werkzeuge -> Journal -> ausführen, dann kann man eine .vb-Datei auswählen, die dann abläuft.
Wie mache ich das in Pro/E?

(Bitte entschuldigt den Vergleich zu NX, ich wollte das nur anführen, da ich da weiß, wie es geht und es in Pro/E vllt ähnlich ist!)

Es wäre schön, wenn ihr mir da helfen könntet!

Viele Grüße,
pleudel   

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

NicoFTB
Mitglied
Ingenieur Entwicklung/Konstuktion


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

Beiträge: 806
Registriert: 08.05.2012

erstellt am: 28. Jan. 2014 10:18    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 pleudel 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von pleudel:

Mein Problem ist aber: Wie bekomme ich mein VB in Pro/E?

Gar nicht. Dein VB-Programm steuert ProE von 'außen'.

------------------
Grüße
Nico \o/

Üs - ProE-Beziehungen

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

pleudel
Mitglied
Projektleiterin


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

Beiträge: 156
Registriert: 28.11.2011

Windows 7
UG NX 12 (auch Daimler)
Visual Basic 2017 Express
Programmierung in NX, ProE/Creo, PRO.FILE

erstellt am: 28. Jan. 2014 10:57    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

Das hatte ich mir schon fast gedacht. Also kann ich ganz normal in Visual Basic Express mein Programm erstellen und dann eine offene Pro/E-Sitzung ansprechen? Oder muss ich die Sitzung zwangsläufig mit dem Programm auch erst öffnen?

Was ist, wenn ich in der ProE-Sitzung bin und eine Zeichnung geöffnet habe und die als PDF exportieren will (nur mal ein Beispiel, meinetwegen auch IGES Export oder ähnlich) muss ich dann auch ein externes Programm starten um diese Sitzung mit der Zeichnung anzusprechen?

Ich frage deshalb so "blöd" nach, weil ich es anders gewohnt bin, das von außen ansprechen ist mir neu!

Viele Grüße
pleudel 

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

NicoFTB
Mitglied
Ingenieur Entwicklung/Konstuktion


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

Beiträge: 806
Registriert: 08.05.2012

erstellt am: 28. Jan. 2014 11: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 Nur für pleudel 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von pleudel:
Das hatte ich mir schon fast gedacht. Also kann ich ganz normal in Visual Basic Express mein Programm erstellen und dann eine offene Pro/E-Sitzung ansprechen? Oder muss ich die Sitzung zwangsläufig mit dem Programm auch erst öffnen?

Es geht beides.
Zitat:
Original erstellt von pleudel:
Was ist, wenn ich in der ProE-Sitzung bin und eine Zeichnung geöffnet habe und die als PDF exportieren will (nur mal ein Beispiel, meinetwegen auch IGES Export oder ähnlich) muss ich dann auch ein externes Programm starten um diese Sitzung mit der Zeichnung anzusprechen?

Ja, wenn ich dich richtig verstehe.

------------------
Grüße
Nico \o/

Üs - ProE-Beziehungen

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

pleudel
Mitglied
Projektleiterin


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

Beiträge: 156
Registriert: 28.11.2011

Windows 7
UG NX 12 (auch Daimler)
Visual Basic 2017 Express
Programmierung in NX, ProE/Creo, PRO.FILE

erstellt am: 28. Jan. 2014 11:27    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

Ok, vielleicht habe ich mich nicht deutlich ausgedrückt ^^
Also ich habe es jetzt so verstanden, dass ich eine Datei mit .vb Endung nicht einfach in ProE durch Knöpfchendrücken "aufrufen" kann und diese dann irgendwas macht, sondern ich muss ein externes Programm ausführen, um Zugriff auf eine bereits offene ProE-Sitzung zu erhalten oder um eine ProE-Sitzung zu öffnen.

Ich würde das gerne mal testen, z.B. einfach den aktuellen Dateinamen vom geöffneten Part in einer Messagebox ausgeben lassen.
Jetzt ist bei uns in ProE noch nie so programmiert worden, ich habe aber schon gelesen, dass dafür Umgebungsvariablen gesetzt werden müssen. Welche sind das?
Muss sonst noch irgendwas konfiguriert werden, um die Sitzung mit VB anzusprechen?

Kennt jmd vielleicht noch hilfreiche (wenn möglich kostenlos) Lektüre dazu?

Mein Ziel ist es im Moment nur zu zeigen, dass die Sitzung angesprochen wird und Informationen daraus verarbeitet werden können (also zb. den Dateinamen ausgeben!)

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

NicoFTB
Mitglied
Ingenieur Entwicklung/Konstuktion


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

Beiträge: 806
Registriert: 08.05.2012

erstellt am: 28. Jan. 2014 12: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 pleudel 10 Unities + Antwort hilfreich

Die Grundkonfiguration findest du hier.

Die vbapi-Hilfe ist sehr ausführlich. Aber nicht immer selbsterklärend.

------------------
Grüße
Nico \o/

Üs - ProE-Beziehungen

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

San Benedetto
Mitglied



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

Beiträge: 29
Registriert: 28.05.2013

Win7
Pro/e Wf4/Creo 2.0
VB2010express
VB2012express

erstellt am: 28. Jan. 2014 14: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 pleudel 10 Unities + Antwort hilfreich

Hallo  pleudel

hier ein paar code zeilen (verbindet zu Pro/e du must ein Modell offen haben,nur eine Pro/E Sitzung-- msgbox pfad und Datei - öffnet dann eine gleichnamige drw wenn vorhanden)

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 IpfcModel
        Dim modelDesc As IpfcModelDescriptor
        Dim Mdlname As String
        Dim Drwname As String
        Dim Pfad As String
        Dim Pos As Integer
       
        Proe = New CCpfcAsyncConnection
        asyncConnection = Proe.Connect("", "", ".", 5)
        session = CType(asyncConnection.Session, IpfcBaseSession)


Try
            model = session.CurrentModel
            If model Is Nothing Then
                Throw New Exception("Kein Model im Hauptfenster:  ")
            End If
            Mdlname = session.CurrentModel.FullName.ToLower  'ToLower - wandelt in Kleinschrift um
            Pfad = session.CurrentModel.Origin                'absolute Lage  der Datei
            Pos = Pfad.LastIndexOf(Mdlname)                  'Position des letzten vorkommens von Mdlname
            Pfad = Pfad.Remove(Pos)                          ' Schneidet den Dateinamen vom absoluten Pfad weg
            MsgBox("Pfad " & Pfad)
            Drwname = Mdlname + ".drw"
            MsgBox("name  " & Drwname)
            drawings = session.ListFiles(Drwname, EpfcFileListOpt.EpfcFILE_LIST_LATEST, Pfad) 'Suche nach datei
         
         
            If drawings.Count = 0  Then
                Throw New Exception(" Keine Zeichnung  vorhanden:  ")
            End If

            modelDesc = (New 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

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

pleudel
Mitglied
Projektleiterin


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

Beiträge: 156
Registriert: 28.11.2011

erstellt am: 28. Jan. 2014 15: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

Vielen Dank für eure Hilfe!!!!! (San Benedetto, deinen Code werde ich morgen mal ausprobieren!)

Ich hab es schonmal hinbekommen, den Dateinamen und Parameterwerte in Label zuschreiben, das heißt, die Verbindung steht 

Wie gesagt, viiiielen Dank schonmal!

   

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

NicoFTB
Mitglied
Ingenieur Entwicklung/Konstuktion


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

Beiträge: 806
Registriert: 08.05.2012

Creo Parametric 3.0 M120
PDM Essentials 10.1 M040

erstellt am: 28. Jan. 2014 16: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 pleudel 10 Unities + Antwort hilfreich

Das ging ja fix. Einige (Ich auch) haben länger dafür gebraucht.

Btw. ProE lässt sich über diese API auch mit anderen Programmiersprachen ansprechen, falls deine Kenntnisse in einer anderen Sprache besser sind.

Ich arbeite viel mit Python. Aber auch VBS, VBA und fast jede andere Sprache taugt dazu.

------------------
Grüße
Nico \o/

Üs - ProE-Beziehungen

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

pleudel
Mitglied
Projektleiterin


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

Beiträge: 156
Registriert: 28.11.2011

erstellt am: 29. Jan. 2014 10:08    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,

Nico, danke für die Info, aber VB.Net ist schon optimal, das passt schon =) klappt auch bisher sehr gut, und ich muss sogar zugeben, dass das von außen ansprechen sogar komfortabler ist als das Starten der Programme in NX, da dort ja nicht debuggt werden kann! Außerdem zerreist es die schöne Formoberfläche in NX immer ein wenig, was hier ja nicht der Fall ist!   

Eine Frage habe ich aber noch, und zwar zu der Zeile  asyncConnection.Disconnect(2)

Damit wird ja die Verbindung zu ProE wieder getrennt. Im Code oben wird, bis auf die Verbindung und das anschließende Trennen derselbigen  , der restliche Code in die Try-Catch-Anweisung geschrieben, das hatte ich bei mir nicht gemacht. Und nach ein paar mal starten ging auf einmal nichts mehr, dann habe ich den Prozess pfclscom.exe aus dem Task-Manager gelöscht, und siehe da, es ging wieder.

Kommt das daher, dass das Programm bei einem Fehler die Zeile mit dem Verbindung trennen einfach nicht erreicht und die Verbindung deshalb auch (logischerweise) nicht getrennt wird?
Folglich muss ich jeden Code nach dem Verbinden und vor dem Trennen in eine Try-Catch-Anweisung setzen?

ich glaube ich habe mir die Frage jetzt selbst schon beantwortet, trotzdem wäre es schön, zu dem Thema nochmal eine Rückmeldung zu bekommen!

     Danke

PS: Ach, und noch eine Frage: Kann man in ProE auch irgendwie Befehle aufzeichnen? also wenn ich einen Button drücke, welcher Code dahinter steht?


[Diese Nachricht wurde von pleudel am 29. Jan. 2014 editiert.]

[Diese Nachricht wurde von pleudel am 29. Jan. 2014 editiert.]

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

NicoFTB
Mitglied
Ingenieur Entwicklung/Konstuktion


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

Beiträge: 806
Registriert: 08.05.2012

Creo Parametric 3.0 M120
PDM Essentials 10.1 M040

erstellt am: 29. Jan. 2014 11:15    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 pleudel 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von pleudel:
ich glaube ich habe mir die Frage jetzt selbst schon beantwortet, trotzdem wäre es schön, zu dem Thema nochmal eine Rückmeldung zu bekommen!


Genau :) Die VB-API ist in dem Bereich manchmal ein wenig zickig. die pfclscom.exe killen reicht da leider auch nicht immer.
Zitat:
Original erstellt von pleudel:
PS: Ach, und noch eine Frage: Kann man in ProE auch irgendwie Befehle aufzeichnen? also wenn ich einen Button drücke, welcher Code dahinter steht?


Jein. Entweder nen Mapkey basteln oder die Trail-Datei auslesen und per .RunMacro() einfügen in VB. Allerdings umgeht man damit ein wenig die VB-API.

------------------
Grüße
Nico \o/

Üs - ProE-Beziehungen

[Diese Nachricht wurde von NicoFTB am 29. Jan. 2014 editiert.]

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

pleudel
Mitglied
Projektleiterin


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

Beiträge: 156
Registriert: 28.11.2011

erstellt am: 29. Jan. 2014 11:20    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

Was ist denn genau ein Mapkey?
Ich bin ja, was ProE angeht, absoluter Neuling, aber dieses Wort läuft mir andauernd über wen Weg!

Und die Trail-Datei auslesen, was ist das und wie geht das?

Gibt es eigentlich noch andere, speziell für Programmierung ausgelegte Foren für ProE?
Das NX Forum auf CAD.de ist untergliedert in allgemein und Programmierung, da findet man schneller was man sucht, hier bekommt man immer Tips zum allg. Arbeiten und nicht zum Programmieren wenn man die Suchfunktion anschmeißt... 

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

NicoFTB
Mitglied
Ingenieur Entwicklung/Konstuktion


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

Beiträge: 806
Registriert: 08.05.2012

Creo Parametric 3.0 M120
PDM Essentials 10.1 M040

erstellt am: 29. Jan. 2014 11:26    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 pleudel 10 Unities + Antwort hilfreich

Viele Tipps wirst du über ProE-APIs nicht finden. Und den Rest findest du sehr gut in der Suche (Mapkey bzw. Trail-Datei)

------------------
Grüße
Nico \o/

Üs - ProE-Beziehungen

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

PongoCAD
Mitglied



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

Beiträge: 16
Registriert: 03.03.2014

Pro/E Wildfire 4.0
VB 2010 Express

erstellt am: 06. Mrz. 2014 10:23    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 pleudel 10 Unities + Antwort hilfreich

Hallo!

Zwar liegt der letzte Beitrag etwas zurück, aber die Thematik passt eigentlich genau. Die Grundkonfiguration von VB und Pro/E hab ich, wie bei Hier vorgeschlagen, erledigt. Umgebungsvariable ist gesetzt, Verweis in VB hinzugefügt und pfclscom.exe erscheint.

Nun zum Problem:
Wenn ich zum Testen lediglich

        Dim connection As IpfcAsyncConnection
        Dim classAsyncConnection As New CCpfcAsyncConnection
        connection = classAsyncConnection.Connect("", "", ".", 5)
oder auch
        connection = classAsyncConnection.Connect(DBNull.Value, DBNull.Value, DBNull.Value,DBNull.Value)

aufrufe, wie in der vbapi Dokumentation von PTC vorgeschlagen, erhalte ich immer folgende Fehlermeldung:

COMException -> pfcExceptions::XToolkitNeedsUnlock

Anbei zwei Lösungsansätze, die zu keinem Erfolg führten. Pro/Toolkit ist am Arbeitsplatz vorhanden.

CADInterface
Blogspot

Zitat:

        Dim drawings As Cstringseq
        Dim model As IpfcModel
        Dim modelDesc As IpfcModelDescriptor
        Dim Mdlname As String
        Dim Drwname As String
        Dim Pfad As String
        Dim Pos As Integer

        Proe = New CCpfcAsyncConnection
        asyncConnection = Proe.Connect("", "", ".", 5)
        session = CType(asyncConnection.Session, IpfcBaseSession)


Hier bekomme ich direkt die Meldung, dass "Proe" nicht deklariert ist.

Liebe Grüße
Christoph

[Diese Nachricht wurde von PongoCAD am 06. Mrz. 2014 editiert.]

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

NicoFTB
Mitglied
Ingenieur Entwicklung/Konstuktion


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

Beiträge: 806
Registriert: 08.05.2012

erstellt am: 06. Mrz. 2014 10:46    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 pleudel 10 Unities + Antwort hilfreich


cadde.zip

 
Die Toolkit-Lizenz brauchst du für die VB-API nicht. Dafür ist diese ja da.

Sind Option Strict und Explicit gesetzt?
Im zweiten Fall ist Proe auch nicht deklariert.
Ggf. könnte es helfen die Objekte von der VB-API direkter anzusprechen. Zudem fehlt in dem zweiten Fall auch die Hälfte vom Code.
(Bitte verzeiht mein leihenhaftes Beschreiben, ich bin Maschinenbauer und kein Informatiker)
Ich meine:

Option Strict On
Option Explicit On

Dim connection As pfcls.IpfcAsyncConnection
Dim cAC As pfcls.CCpfcAsyncConnection

connection = New cAC.connect("","",".",5)
connection.Disconnect(2)

Ansonsten kannst du auch mal kurz mein Script testen. Einfach im CMD mit "cscript cadde.vbs" aufrufen.

Edit: Disconnect hinzugefügt. Sonst meckert die API rum.

------------------
Grüße
Nico \o/

Üs - ProE-Beziehungen

[Diese Nachricht wurde von NicoFTB am 06. Mrz. 2014 editiert.]

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

PongoCAD
Mitglied



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

Beiträge: 16
Registriert: 03.03.2014

Pro/E Wildfire 4.0
VB 2010 Express

erstellt am: 06. Mrz. 2014 11:13    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 pleudel 10 Unities + Antwort hilfreich

Danke Nico. Strict und Explicit sind gesetzt. Auch wenn ich es nun direkt anspreche, erhalte ich die selbe Fehlermeldung. Hier mal der Code des minimalistischen Testprogramms.

Option Strict On
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 connection As pfcls.IpfcAsyncConnection
        Dim cAC As New pfcls.CCpfcAsyncConnection
        connection = cAC.Connect("", "", ".", 5)
        connection.Disconnect(2)

    End Sub
End Class

Zitat:
Ansonsten kannst du auch mal kurz mein Script testen. Einfach im CMD mit "cscript cadde.vbs" aufrufen.

Jetzt steh ich irgendwie auf der Leitung. Du meinst im CMD von Windows? Und Welches Programm?

[Diese Nachricht wurde von PongoCAD am 06. Mrz. 2014 editiert.]

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

NicoFTB
Mitglied
Ingenieur Entwicklung/Konstuktion


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

Beiträge: 806
Registriert: 08.05.2012

erstellt am: 06. Mrz. 2014 11:27    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 pleudel 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von PongoCAD:
Jetzt steh ich irgendwie auf der Leitung. Du meinst im CMD von Windows? Und Welches Programm?

Das im Anhang (cadde.zip).

------------------
Grüße
Nico \o/

Üs - ProE-Beziehungen

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

PongoCAD
Mitglied



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

Beiträge: 16
Registriert: 03.03.2014

Pro/E Wildfire 4.0
VB 2010 Express

erstellt am: 06. Mrz. 2014 11: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 pleudel 10 Unities + Antwort hilfreich

Ach herje.

Habs ausgeführt, in ProE ist ein Modell geöffnet und aktiv.

Die Ausgabe:

C:\cadde>CScript cadde.vbs
Microsoft (R) Windows Script Host, Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. Alle Rechte vorbehalten.

Modelle in der Sitzung: 0
424
Laufzeitfehler in Microsoft VBScript
Objekt erforderlich
C:\cadde\cadde.vbs(45, 1) Laufzeitfehler in Microsoft VBScript: Objekt erforderlich: ''

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

NicoFTB
Mitglied
Ingenieur Entwicklung/Konstuktion


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

Beiträge: 806
Registriert: 08.05.2012

erstellt am: 06. Mrz. 2014 11:57    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 pleudel 10 Unities + Antwort hilfreich

Ok. Es gibt jetzt eigentlich nur zwei Möglichkeiten.

1.) ProE neustarten und hoffen dass es dann geht.

2.) Du hast nen Fehler bei der Installation gemacht. Hast du die vbstart.bat zB als Admin ausgeführt? ggf. schon nen Neustart gemacht?

Die VB-API kann bissl zickig sein. Bei mir funktioniert diese leider meist nur mit einer frischen Sitzung. Sobald ich schon ne Weile damit gearbeitet habe muss ich Creo erst schließen um eine Verbindung zu bekommen.

------------------
Grüße
Nico \o/

Üs - ProE-Beziehungen

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

PongoCAD
Mitglied



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

Beiträge: 16
Registriert: 03.03.2014

Pro/E Wildfire 4.0
VB 2010 Express

erstellt am: 06. Mrz. 2014 12: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 pleudel 10 Unities + Antwort hilfreich

Neustart hab ich nun durchgeführt, leider immer noch das selbe Problem. Werde mich nun nochmals wegen einer Neuinstallation an die IT wenden. Aber so viel ich weiß, wurde die vb_api_register.bat als Administrator ausgeführt.

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

San Benedetto
Mitglied



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

Beiträge: 29
Registriert: 28.05.2013

Win7
Pro/e Wf4/Creo 2.0
VB2010express
VB2012express

erstellt am: 06. Mrz. 2014 19:59    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 pleudel 10 Unities + Antwort hilfreich

Hallo PongoCad

wenns nicht läuft.

1.- im Pro/E Bin Verzeichnis vb_api_unregister.bat ausführen
2.- im Pro/E Bin Verzeichnis ptcsetup.bat ausführen
3.- im Pro/E Bin Verzeichnis vb_api_register.bat ausführen
alles als Admin
Systemvariable Pfad auf Pro_comm_msg_exe


dann sollte es von Pro/E Seite funktionieren.
In VB Verweis zu Pro/E API hinzufügen.
Windows Form erstellen mit einem Schalter "Button_drw_open"

ich hoffe es hilft.

testprg von obigen post erweitert.
(beim ersten verbinden kann es durchaus einmal 10 sec dauern bis die
Msgbox aufpoppt.

Option Strict On
Option Explicit On
Imports pfcls    '<-- bitte nicht auskommentieren wie oben in deinem Post
   
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 connection As pfcls.IpfcAsyncConnection
        Dim cAC As New pfcls.CCpfcAsyncConnection
        connection = cAC.Connect("", "", ".", 5)

        MsgBox("Hello World: " )

        connection.Disconnect(2)

    End Sub
End Class

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

PongoCAD
Mitglied



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

Beiträge: 16
Registriert: 03.03.2014

Pro/E Wildfire 4.0
VB 2010 Express

erstellt am: 06. Mrz. 2014 22:51    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 pleudel 10 Unities + Antwort hilfreich

Hallo San Benedetto!

Danke für deine Unterstützung!  Werde ich morgen gleich so durchführen! Auf meinem Testsystem hab ich das ganze nun zum Laufen bekommen, also wenigstens ein kleiner erster Erfolg. Eigentlich sollte es ja wirklich kein Problem sein, aber hab eben wenig Ahnung was am anderen System schief gegangen sein kann.. also nochmal von Null starten, dann wird’s wohl hoffentlich klappen.

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

PongoCAD
Mitglied



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

Beiträge: 16
Registriert: 03.03.2014

Pro/E Wildfire 4.0
VB 2010 Express

erstellt am: 07. Mrz. 2014 13: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 Nur für pleudel 10 Unities + Antwort hilfreich

So, ProE wurde komplett neu installiert, Umgebungsvariable überprüft, vb_api_register.bat nochmals ausgeführt und der Verweis in VB Express gemacht.

Leider endet es immer noch mit dem selben Ergebnis:
pfcExceptions::XToolkitNeedsUnlock

Einzige Spur die ich jetzt noch habe ist diese

Zitat:
This issue is corrected in M220 date code which will be available for download on 31-Jan-2014. You may switch to M200 date code OR contact PTC Technical Support to have the pfclscom.exe unlocked.

Zwar handelt es sich hier um W5, aber die Fehlermeldung und der Ansatz ist der Gleiche. Wenn's nicht hinhaut, muss ich es wohl über J-Link probieren, dieses Problem zu lösen, da es nicht ausreicht, wenn's nur Zuhause richtig funktioniert 

Noch eine Frage die aufgetaucht ist:
Auf meinem Testsystem verwende ich ein 32 bit ProE auf einem 64 bit Rechner (dort funktioniert es problemlos). Hier ist beides 64 bit. Kann ProE in 64 bit über die VB API angesprochen werden?

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

NicoFTB
Mitglied
Ingenieur Entwicklung/Konstuktion


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

Beiträge: 806
Registriert: 08.05.2012

erstellt am: 07. Mrz. 2014 13: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 pleudel 10 Unities + Antwort hilfreich

64bit funktioniert auf jeden Fall. Zumindest habe ich damit vor ein paar Monaten mal mit gespielt. Ich weiß allerdings nicht mehr welche Wochenversion das war.

------------------
Grüße
Nico \o/

Üs - ProE-Beziehungen

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

San Benedetto
Mitglied



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

Beiträge: 29
Registriert: 28.05.2013

Win7
Pro/e Wf4/Creo 2.0
VB2010express
VB2012express

erstellt am: 07. Mrz. 2014 13: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 Nur für pleudel 10 Unities + Antwort hilfreich

Hallo PongoCAD

Hast du dein Programm mit der Creo API oder WF4 API erstellt? (verweis in VB)
( Systemvariable auf WF4 Pro_comm_msg_exe  oder die von Creo)

bei mir geht's nicht Überkreuz  von Creo zu WF 4

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

PongoCAD
Mitglied



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

Beiträge: 16
Registriert: 03.03.2014

Pro/E Wildfire 4.0
VB 2010 Express

erstellt am: 10. Mrz. 2014 08:21    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 pleudel 10 Unities + Antwort hilfreich

Hallo!  

Danke für eure Tipps.

Habs mit der WF4 API erstellt und auch den Verweis und die Systemvariable dementsprechend gesetzt. Aber war ein guter Tipp, leider trifft's nicht zu..

[Diese Nachricht wurde von PongoCAD am 10. Mrz. 2014 editiert.]

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

PongoCAD
Mitglied



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

Beiträge: 16
Registriert: 03.03.2014

Pro/E Wildfire 4.0
VB 2010 Express

erstellt am: 24. Mrz. 2014 09:06    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 pleudel 10 Unities + Antwort hilfreich

Mein System wurde letzten Freitag vollständig neu aufgesetzt, nun funktionierts überraschender Weise. Danke für eure Hinweise, Gründe kann ich aber leider keiner liefern.

[Diese Nachricht wurde von PongoCAD am 24. Mrz. 2014 editiert.]

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

PongoCAD
Mitglied



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

Beiträge: 16
Registriert: 03.03.2014

Pro/E Wildfire 4.0
VB 2010 Express

erstellt am: 15. Apr. 2014 09: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 Nur für pleudel 10 Unities + Antwort hilfreich

Hallo!

Nun wo ich mich wieder aktiv damit ausseinandersetze, bin ich leider auf ein Problem gestoßen, wofür ich keine Lösung finde. Ich schaffs nicht den Modellbaum anzusprechen bzw. mir diesen als Array von Strings auszugeben. Zwar kann ich den Baugruppennamen auslesen, und auch für Testzwecke den Namen einer zweiter geöffneten Baugruppe, aber für den Modellbaum hab ich noch nicht den richtigen Befehl gefunden, auch wenn im API Wizard und in der Schnittstellen Doku nur von Befehlen so wimmelt..

Hat zufällig jemand eine Idee, wie ich den ansprechen kann? Mein Ziel ists, über Excel Listen zu exportieren, mit denen die Namen im Baum abgeglichen werden.

Mein Testprogramm:
Option Strict On   
Option Explicit On 
Imports pfcls     
Imports System.IO 
Imports System     
Imports System.Xml 
Imports Microsoft.Office.Core     
Imports Microsoft.Office.Interop   

'*** Main Skript ***'
Public Class ExportSTLFiles

    '*** Globale Deklaration der Variablen, damit sie in allen Funktionen bekannt sind
    Dim model As IpfcModel
    Dim Proe As CCpfcAsyncConnection
    Dim asyncConnection As IpfcAsyncConnection
    Dim session As IpfcBaseSession

  '*** Button zum Erstellen der Verbindung ***'
    Private Sub btnConnectProE_Click(sender As System.Object, e As System.EventArgs) Handles  ConnectProE.Click

        'SystemDiagnostic()  ' Sub zur Überprüfung der Einstellungen des Systems

        ' Verbindung zu ProE erstellen
        Proe = New CCpfcAsyncConnection
        asyncConnection = Proe.Connect("", "", ".", 5)
        session = CType(asyncConnection.Session, IpfcBaseSession)

    End Sub

Private Sub btnTestprogramm_Click(sender As System.Object, e As System.EventArgs) Handles btnTestprogramm.Click
        Dim Baugruppe As Cstringseq
        Dim modelDesc As IpfcModelDescriptor
        Dim Mdlname As String
        Dim ASMName As String
        Dim Pfad As String
        Dim Pos As Integer
Dim ActModel As IpfcModel
        Dim ActModels As IpfcModels
        Dim selections As CpfcSelections
        Dim selectionOptions As IpfcSelectionOptions
        Dim max As Integer

        Try
            model = session.CurrentModel()  ' Geöffnetes Modell ansprechen
            If model Is Nothing Then        ' Falls kein Modell geöffnet ist, gib Fehler aus
                Throw New Exception("Kein Model im Hauptfenster:  ")
            End If

            Mdlname = session.CurrentModel.FullName.ToLower  ' Modellnamen auslesen / ToLower - wandelt in Kleinschrift um
            Pfad = session.CurrentModel.Origin              ' Absolute Lage  der Datei
            Pos = Pfad.LastIndexOf(Mdlname)                  ' Position des letzten vorkommens von Mdlname
            Pfad = Pfad.Remove(Pos)                          ' Schneidet den Dateinamen vom absoluten Pfad weg
            MsgBox("Pfad " & Pfad)                          ' Ausgabe des Pfades 
            ASMName = Mdlname + ".asm"                      ' Modellnamen erweitern
            MsgBox("name  " & ASMName)                      ' Ausgabe der Oberbaugruppe
            Baugruppe = session.ListFiles(ASMName, EpfcFileListOpt.EpfcFILE_LIST_LATEST, Pfad) ' Suche nach Datei


            If Baugruppe.Count = 0 Then
                Throw New Exception("Keine Baugruppe vorhanden:  ")
            End If

      ActModels = session.ListModels()
            ActModel = CType(ActModels(1), IpfcModel)
            MsgBox("ActModel  " & ActModel.CommonName)

            selectionOptions = (New CCpfcSelectionOptions).Create("prt_or_asm")  ' Auswahl von Parts oder Assembles
            selectionOptions.MaxNumSels = 2
            MsgBox("Select")
            selections = session.Select(selectionOptions, Nothing)

            MsgBox("Selection done")
            MsgBox("Selection Count: " & selections.Count.ToString)
Catch ex As Exception
            MsgBox(ex.Message.ToString + Chr(13) + ex.StackTrace.ToString)
        End Try
        asyncConnection.Disconnect(2)
    End Sub
End Class

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

San Benedetto
Mitglied



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

Beiträge: 29
Registriert: 28.05.2013

Win7
Pro/e Wf4/Creo 2.0
VB2010express
VB2012express

erstellt am: 15. Apr. 2014 10:03    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 pleudel 10 Unities + Antwort hilfreich

Hallo PongoCad

ich werfe  einfach mal ein paar code snippels rein .

anhand derer kannst du versuche unternehmen.

Private Class AssemblyUtilities
        Private Shared asm As IpfcAssembly
        Private Shared pathArray As ArrayList


        Public Shared Function listEachLeafComponent(ByRef assembly As IpfcAssembly) As IpfcComponentPath()
            Dim startLevel As New Cintseq
            Dim Teile As Integer = 0
            asm = assembly
            pathArray = New ArrayList
            listSubAssemblyComponent(startLevel)
            Dim compPaths(pathArray.Count) As IpfcComponentPath      '******************** Listet nur prt im ASM ohne ASM in der ganzen ASM tiefe
            For i = 0 To pathArray.Count - 1
                compPaths(i) = pathArray.Item(i)
                ' MsgBox("EBENE - " & compPaths(i).ComponentIds.Count.ToString & "- " & compPaths(i).Leaf.FileName.ToString)
            Next
            Return (compPaths)
        End Function


        Private Shared Sub listSubAssemblyComponent(ByRef currentLevel As Cintseq) '*********** Listet alle Componenten im ASM rekursiv
            Dim currentComponent As IpfcSolid
            Dim currentPath As IpfcComponentPath = Nothing
            Dim level As Integer
            Dim SubComponents As IpfcFeatures
            Dim componentFeat As IpfcFeature
            Dim id As Integer
            Dim modelDesc As IpfcModelDescriptor
            ' Dim Datei As String

            level = currentLevel.Count
            If (level > 0) Then
                currentPath = (New CMpfcAssembly).CreateComponentPath(asm, currentLevel)
                currentComponent = currentPath.Leaf
            Else
                currentComponent = asm
            End If
            If (currentComponent.Type = EpfcModelType.EpfcMDL_PART) And (level > 0) Then
                pathArray.Add(currentPath)
            Else
                SubComponents = currentComponent.ListFeaturesByType(True, EpfcFeatureType.EpfcFEATTYPE_COMPONENT)
                For i = 0 To SubComponents.Count - 1
                    componentFeat = SubComponents.Item(i)
                    id = componentFeat.Id
                    modelDesc = componentFeat.ModelDescr


                    ' If InStr(tree_view.Datei, ".asm") > 1 Then
                    ' MsgBox(".ASM " & tree_view.Datei)
                    ' End If
                    ' If InStr(tree_view.Datei, ".prt") > 1 Then
                    ' MsgBox(".PRT " & tree_view.Datei)
                    ' End If
                    MsgBox("Komponente - " & modelDesc.GetFileName.ToLower & "  id: " & id & " Level " & level & " Zähler " & i)
                   
                                     
                    End If
                    ' MsgBox(" Pfad -" & tree_view.Pfad & "  " & "  - Datei - " & tree_view.Datei)


                  ' tree_view.makenode(modelDesc.GetFileName.ToLower, level, i)
                    currentLevel.Set(level, id)
                    listSubAssemblyComponent(currentLevel)                          '**************************rekursion
                Next
            End If
            If Not level = 0 Then
                currentLevel.Remove(level - 1, level)
            End If
            Return

        End Sub
    End Class

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

PongoCAD
Mitglied



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

Beiträge: 16
Registriert: 03.03.2014

Pro/E Wildfire 4.0
VB 2010 Express

erstellt am: 15. Apr. 2014 10:19    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 pleudel 10 Unities + Antwort hilfreich

Hallo San Benedetto!

Danke, dann leg ich gleich mal los und geb Besched  

[Diese Nachricht wurde von PongoCAD am 15. Apr. 2014 editiert.]

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

NicoFTB
Mitglied
Ingenieur Entwicklung/Konstuktion


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

Beiträge: 806
Registriert: 08.05.2012

erstellt am: 15. Apr. 2014 10:46    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 pleudel 10 Unities + Antwort hilfreich

Die einfache Variante. Baugruppe öffnen, speicher von 'Altlasten' leeren, über listModels() alle Teile in der Session auslesen.

Den genauen Baum auslesen geht afaik nur über die Komponenten. Und da müsste man den Baum rekursiv auslesen. Über listFeaturesByType bekommt man die Kompenenten IDs. Dann muss man prüfen ob eine ID ein ASM ist und dann in diesem ASM wieder die Komponenten ausgeben.

Das alles dann irgendwie zusammensetzen in einer Liste, einem Objekt oder ähnlichem.

Edith meint: Man sollte nicht zu lange im Beitrag-Erstellen rumtippen. Aber meine Erklärung ist grob das was das Tool oben macht.

------------------
Grüße
Nico \o/

Üs - ProE-Beziehungen

[Diese Nachricht wurde von NicoFTB am 15. Apr. 2014 editiert.]

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

PongoCAD
Mitglied



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

Beiträge: 16
Registriert: 03.03.2014

Pro/E Wildfire 4.0
VB 2010 Express

erstellt am: 16. Apr. 2014 15: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 pleudel 10 Unities + Antwort hilfreich

Hallo   !

Eure Hilfestellungen haben mir wirklich die Augen geöffnet. Habe bis dato den listModels() Befehl einfach missverstanden (dachte ich kann damit lediglich auf geöffnete Instanzen, nich auf den Inhalt zugreifen).

Nun nachdem das klappt, vergleiche ich Einträge aus listModel() mit eingelesenen Bezeichnungen aus Excel (z.B. prt0001.prt), mit dem Ziel, diese als .stl File zu exportieren. Zwar konnte ich zu Testzwecken als vrml exportierem:

Dim ActModels As IpfcModels
Dim ActModel As IpfcModel
Dim outDir As String
Dim vrmlInstructions As IpfcVRMLModelExportInstructions

ActModels = session.ListModels()

outDir = "SomeDirectory"
vrmlInstructions = (New CCpfcVRMLModelExportInstructions).Create(outDir)


Dim StringArray(3) As String
    StringArray(1) = "part_neu_1.prt"
    StringArray(2) = "partneu.prt"
    StringArray(3) = "unterbaugruppen_teil_1.prt"

For i As Integer = 0 To (ActModels.Count - 1)

                ActModel = CType(ActModels(i), IpfcModel)
                MsgBox("ListModel:  " & i & " " & ActModel.CommonName)

                If StringArray.Contains(ActModel.CommonName) Then

                    ActModel.Export(Nothing, CType(vrmlInstructions, IpfcExportInstructions))
                    MsgBox("Bin Teil von: " & ActModel.CommonName)

                End If
Next

Dies funktioniert soweit so gut, aber beim Stl Export bekomme ich es so nicht hin. Kann ich auch hier, wie beim manuellen Export, nur die Gesamtbaugruppe exportieren (Unterdrücken vernachlässigt). ?
Mein Ansatz:

Dim ModelExportSTL As IpfcSTLBinaryExportInstructions
Dim csysName, FileName As String
Dim model As IpfcModel

csysName = "CS0"
FileName = "C:\Output.stl"

model = session.CurrentModel()
ModelExportSTL = (New CCpfcSTLBinaryExportInstructions).Create(csysName)
model.Export(FileName, CType(ModelExportSTL, IpfcExportInstructions))[/b]

So kann ich zwar die Gesamtbaugruppe exportieren, aber eigentlich will ich auch jedes Bauteil abgleichen und einzeln exportieren über  ActModels = session.ListModels() und ActModel = CType(ActModels(i) IpfcModel). Da bekomm ich aber die Exception ToolkitNotFound..  

Habt ihr zufällig eine Idee? Oder muss ich den Umweg gehen, und alle anderen Baugruppen und Parts unterdrücken, und dann exportieren. Diejenigen, die exportiert werden müssen, sollen nämlich zu einem "globalen" Koordinatensystem referenziert werden, welches in der Baugruppe vorhanden sind.

Liebe Grüße
Christoph

[Diese Nachricht wurde von PongoCAD am 16. Apr. 2014 editiert.]

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

San Benedetto
Mitglied



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

Beiträge: 29
Registriert: 28.05.2013

Win7
Pro/e Wf4/Creo 2.0
VB2010express
VB2012express

erstellt am: 16. Apr. 2014 18:01    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 pleudel 10 Unities + Antwort hilfreich

Servus PongoCad

schön das du weiterkommst

mit session.ListModels() bekommst du alle Modelle die im Creo Speicher sind
also wenn du den Speicher ausleerst , und dann eine Baugruppe öffnest, hast du damit Zugriff auf alle Modelle der Baugruppe
beim Export der Modelle als Step kennen die Einzelteile nicht die Referenz wie sie verbaut wurden. Die Info Steckt nur in der BG.

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

SpacemanSpiff
Mitglied



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

Beiträge: 57
Registriert: 02.05.2011

Creo 2

erstellt am: 28. Apr. 2014 22: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 Nur für pleudel 10 Unities + Antwort hilfreich

Hallo!

Hier wird ja auch von der Zickigkeit der VBApi-Schnittstelle geschrieben.
Ich habe ein Skript, das sich mit Creo 2 verbindet, eine URL im internen Browser aufruft und sich danach wieder trennt.

Das funktionierte vor dem Wochenende ziemlich gut.
Heute hat es mich Wahnsinnig gemacht, ich bekomme immer mal wieder den XToolkitNotFound-Fehler, aber nie beim ersten mal.

Mir ist aufgefallen, dass beim Ausführen eines VBS-Scriptes die pfclscom.exe gestartet und nach kurzer Zeit wieder beendet wird. Bei Excel bleibt sie anscheinend die ganze Zeit geöffnet, sobald eine Mappe mit dem Creo-Verweis geöffnet ist, auch wenn die Verbindung getrennt wurde. Irgendwie scheint das Disconnect nicht so 100%ig zu funktionieren.
Ist es besser, eine Verbindung in Excel aufzubauen und erst zu trennen, wenn man die Mappe schließt? Momentan mache ich für jeden Aufruf eine neue Verbindung und trenne sie gleich wieder. Ich mache das über die Methode, die hier als Beispiel beschrieben wurde: http://ww3.cad.de/foren/ubb/uploads/San+Benedetto/Pro_e-VB-API-VB-2010-Express.pdf

Viele Grüße 
Spiff

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

San Benedetto
Mitglied



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

Beiträge: 29
Registriert: 28.05.2013

Win7
Pro/e Wf4/Creo 2.0
VB2010express
VB2012express

erstellt am: 29. Apr. 2014 11:51    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 pleudel 10 Unities + Antwort hilfreich

Hallo Spaceman Spiff

nur eine Verbindung kann mit Pro/e in einer Session verbunden sein

wenn dein Excel die Verbindung offen lässt und du dann nochmal zu verbinden versuchst  -> toolkit bla bla bla

aus dem User guide

Only one active Connection can be made to a single Pro/Engineer sesssion at one time

hoffe das hilft

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

PongoCAD
Mitglied



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

Beiträge: 16
Registriert: 03.03.2014

Pro/E Wildfire 4.0
VB 2010 Express

erstellt am: 05. Mai. 2014 09:40    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 pleudel 10 Unities + Antwort hilfreich

Guten Morgen  !

Dank eurer Unterstützung habe ich es nun zumindest auf meiner Testbaugruppe den separierten stl File Export aus Baugruppen umsetzen können.  Teilweise drückt der Schuh aber noch. So hab ich Probleme mit der Qualität (Sehnenhöhe) der exportierten Parts, aber da hab ich auch schon Ansätze gefunden, mit denen es klappen könnte.

Kurz zu meiner Vorgangsweise, falls jemand mal vor demselben Problem steht:

Mit dem Code von San Benedetto („AssemblyUtilities“ -> Beispiel aus VB API Doku) lässt sich der Strukturbaum hervorragend auslesen. Ich hab es etwas modifiziert, und unterdrücke gleich beim auslesen sämtliche Parts (KEINE Baugruppen).

Beispiel:

In Private Class AssemblyUtilities:
FeatureSuppressOperations = New CpfcFeatureOperations
FeatureSuppressOperations.Append(feature.CreateSuppressOp())    ' Füge zu suppressenden Part dem Array hinzu.
ParentSolid.ExecuteFeatureOps(CType(FeatureSuppressOperations, CpfcFeatureOperations), Nothing)  ' Unterdrücken.
               
„ParentSolid“ muss heirbei die Überbaugruppe des jeweiligen Parts sein (aber IpfcSolid). Lässt sich beispielsweise mit „ParentSolid = feature.DBParent“ ermitteln.

Zustäzliche zum IpfcComponentpath Array „ComPaths“ übergebe ich auch einen Array aus allen Part-Namen beim Aufruf der Funktion aus AssemblyUtilities.

Im Hauptprogramm Vergleiche ich dann lediglich den Part-Namen Array mit den Namen der gewünschten Exports (z.B. aus Excel einlesen),  und hole dann entsprechende Parts zurück (FeatureRemoveOperations.Append(feature.CreateResumeOp())). Hinweis: IpfcComponentPath hat teilweise Probleme bei unterdrückten Parts, daher der Umweg mit dem eigenen Part-Namen Array. Das lässt sich schön verschachteln, um gleichzeitig mehrere Parts zurückholen, zu exportieren und abermals zu unterdrücken. (s.o. für Hinweise zum stl File Export)

Liebe Grüße
Christoph

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