Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Pro ENGINEER
  ProE VB API und Perl-Script

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 Creo
Autor Thema:  ProE VB API und Perl-Script (3471 mal gelesen)
zulu
Mitglied
Maschinenbau

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

Beiträge: 2
Registriert: 23.10.2011

ProE 5.0

erstellt am: 23. Okt. 2011 14:28    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,

auf dieser Seite gibt es einige Beispiele für den Aufruf von ProE durch den ProE API mit VB, VBA und Perl: http://inversionconsulting.blogspot.com/2008/06/proe-vb-api-not-just-for-visual-basic.html


In dem API Users Guide ( http://communities.ptc.com/docs/DOC-2219  ) gibt es ein VBA-Beispiel für das Auslesen von Massen (siehe Seite 178, Kapitel "Mass Properties"). Hier der Auszug:

Code:
Imports pfcls
Public Class pfcSolidExamples
Public Sub printMassProperties(ByRef session As IpfcBaseSession)
Dim model As IpfcModel
Dim solid As IpfcSolid
Dim solidProperties As IpfcMassProperty
Dim gravityCentre As New CpfcPoint3D
Try
'======================================================================
'Get the current solid
'======================================================================
model = session.CurrentModel
If model Is Nothing Then
Throw New Exception("Model not present")
End If
If (Not model.Type = EpfcModelType.EpfcMDL_PART) And
_(Not model.Type = EpfcModelType.EpfcMDL_ASSEMBLY) Then
Throw New Exception("Model is not a solid")
End If
solid = CType(model, IpfcSolid)
'======================================================================
'Get the solid properties. Optional argument in this method is the name
'of the coordinate system to use. If null, uses default
'======================================================================
solidProperties = solid.GetMassProperty(Nothing)
gravityCentre = solidProperties.GravityCenter
MsgBox("The solid mass is: " + solidProperties.Mass.ToString +
Chr(13).ToString + _"The solid volume is: " +
solidProperties.Volume.ToString +
Chr(13).ToString + _"The Centre of Gravity is at: " +
Chr(13).ToString + _"X : " +
gravityCentre.Item(0).ToString + Chr(13).ToString +
_"Y : " + gravityCentre.Item(1).ToString +
Chr(13).ToString +
_"Z : " + gravityCentre.Item(2).ToString +
Chr(13).ToString)
Catch ex As Exception
MsgBox(ex.Message.ToString + Chr(13) + ex.StackTrace.ToString)
Exit Sub
End Try
End Sub
End Class


Prinzipiell funktionert der Aufruf von ProE aus Perl aus, aber ich kann in dem VBA Beispiel folgende Zeilen mangels Verständniss für Perl und das VBA nicht nach Perl übersetzten:

Code:
solid = CType(model, IpfcSolid)
solidProperties = solid.GetMassProperty(Nothing)

Kann mir jemand erklären, wie die beiden Zeilen in Perl programmiert werden müssen?

Danke und Grüße
Zulu

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

rybog
Mitglied
Möchtegern-Rentner


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

Beiträge: 99
Registriert: 25.05.2001

Pro/E WF 4.0
Quadro P2200
Creo 7.0.2.0
Quadro FX2800M

erstellt am: 27. Okt. 2011 00: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 zulu 10 Unities + Antwort hilfreich

Hallo,

ich habe keine Erfahrung mit der Anbindung an Pro/E, und noch weniger mit OLE und Perl unter Windows.
Deshalb hier nur das, was ich aus den Links, die du angegeben hast, schlussfolgern kann:

Code:

use Win32::OLE;
$solid = Win32::OLE->new("pfcls.CType", model, IpfcSolid);
$solidProperties = $solid->GetMassProperty(Nothing);

Ich bin mir nicht sicher, ob der Konstruktor korrekt ist. VB benutzt in deinem Skript einen Wrapper (Imports pfcls), du wirst aber in PERL direkt die OLE Objekte modifizieren müssen. Ein Blick in die Dokumentation, wie PERL und OLE genutzt werden, wäre vielleicht keine schlechte Idee. Hier die CPAN-Doku: http://search.cpan.org/~jdb/Win32-OLE-0.1709/lib/Win32/OLE.pm

Gruß.

[Diese Nachricht wurde von rybog am 27. Okt. 2011 editiert.]

[Diese Nachricht wurde von rybog am 27. Okt. 2011 editiert.]

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

zulu
Mitglied
Maschinenbau

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

Beiträge: 2
Registriert: 23.10.2011

ProE 5.0

erstellt am: 29. Okt. 2011 18: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

Hallo rybog,

die Methode new() akzeptiert laut Doku aus deinem Link maximal zwei Parameter. Entsprechend dem bekomme ich die Fehlermeldung:

"System error: Usage: Win32::OLE->new(PROGID[,DESTROY]) at test.pl line 23."

Ich habe mein Problem noch in einem perl-Forum gepostet. Mal sehen, ob mir ein Perl-Experte bei dem Problem helfen kann: http://www.perl-community.de/bat/poard/thread/16865


[Diese Nachricht wurde von zulu am 29. Okt. 2011 editiert.]

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

suchristian
Mitglied
Student

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

Beiträge: 4
Registriert: 13.04.2015

erstellt am: 16. Apr. 2015 12:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für zulu 10 Unities + Antwort hilfreich

Hello, everyone!
I am doing a programming project and as a part of it I should realize the function, that collect and return all constraint information of Creo assembly by using VB API. Following are information I should collect.

1.Parent Product. I should return the path to the parent product, e.g [Product 1\Product 24]
2.Constraint name.
3.Constraint type. Type con be distance, on, concentricity and so on.
4.Parts. Every item contains an array with the path to the corresponding parts.

If you have done similar programming with Pro/E model, it is also very helpful. Thank you very much for your kind help!

Christian

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