| | | 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
Beiträge: 2 Registriert: 23.10.2011 ProE 5.0
|
erstellt am: 23. Okt. 2011 14:28 <-- editieren / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für zulu
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
Beiträge: 2 Registriert: 23.10.2011 ProE 5.0
|
erstellt am: 29. Okt. 2011 18:54 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 4 Registriert: 13.04.2015
|
erstellt am: 16. Apr. 2015 12:25 <-- editieren / zitieren --> Unities abgeben: Nur für zulu
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 >>)
|