| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PDM Sucess Story: Von Vault zu GAIN Collaboration (GAIN Collaboration,PDM,PDM System,PLM,PLM System) |
Autor
|
Thema: PSP von Außen ansprechen (1688 mal gelesen)
|
AWagner Mitglied Software-engineer
Beiträge: 32 Registriert: 27.11.2007
|
erstellt am: 12. Sep. 2008 10:22 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, ich wollte fragen ob von euch schon jemand Erfahrungen gemacht hat wie man PSP von außen ansprechen kann!? zB. PSP aus einer VB.Net Anwendung starten / holen (System.Runtime.InteropServices.Marshal.GetActiveObject("progID") / CreateObject 'aber wie ist die ProgID? application/Compass? --> ist es nicht) ich habe es auch schon über den DDE-Server versucht! Bekomme es aber nicht ordentlich zum laufen! Über einen DDE Request bekomme ich zwar die $USERID aber zB. keine in der CompassINI definierten Environmentvariablen. Hat sowas schon jemand einmal gemacht? Vielleicht könnte mir jemand weiterhelfen - wär echt super! (Codekonstrukte?!) mfg Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mrndf Mitglied Dipl. Inf.
Beiträge: 26 Registriert: 12.07.2007 Wir können alles, außer Hochdeutsch;-) CAD: SolidWorks / SolidEdge / AutoCAD / Inventor PDM: PSP / PS Konfigurator: Confit / Logik Entwicklung: .NET (VB/C#) / C++ / ARX / Java DB: SQL Server / Oracle / DB2
|
erstellt am: 13. Sep. 2008 20:22 <-- editieren / zitieren --> Unities abgeben: Nur für AWagner
Hmm, zugegeben das ist nicht ganz einfach! Wäre mal interessant was die Jungs von der A... Firma dazu sagen würden;-) 1) Der offizielle Weg: Es gibt die Möglichkeit PSP über DDE zu steuern - Deatils könnte ich evtl. auf Rückfrage liefern. Dann kann man da eine Funktion einer CAI Bibliothek aufrufen. Innerhalb dieser Funktion hat man ein sogenanntes CallBack Objekt, dass länger lebt als man denkt... Das muss man nun über einen COM Aufruf oder ähnliches der eigenen Anwendung - die dann das PSP steuern soll(Das war ja die Frage...) - zur Verfügung stellen. Darauf kann man dann Funktionen aufrufen oder mit Prep Werte aus PSP auslesen. Ich hab mir das nicht ausgedacht und ich darf hier auch nicht schreiben wer das war, aber ich kenne den Namen! 2) Ein Weg der auch was kann... (aber leider nicht alles!) Wenn man auf die aktuelle Anmeldung und Dialoge verzichten kann, geht auch ein CoCreateInstance (für VB'ler CreateObject) auf dem COMPASS Server ("Compass2000.CompassApplication"). Darauf die Funktion Compass2000Server.ICompassApplication.GetUser(Name,pwd,startOptions) aufrufen und den User bekommen. StartOptions wie beim Start von PSP "-pro -DUSERID=Administrator". Der User ist schön COM und man kann alle die schönen Dinge machen, die man gerne möchte. Den User aus dem laufenden PSP Client zu angeln ist leider (noch?) nicht möglich. Gruß mrndf PS: Ach so PSP von einer Anwendung starten hat für mich jetzt noch nie Sinn gemacht. Für 2) erübrigt es sich ja, und für 1) würd ich ein Shell Aufruf vorschlagen und dann mit DDE stochern bis was kommt? (Uaaaah - da läuft's mir schon wieder kalt den Rücken runter) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AWagner Mitglied Software-engineer
Beiträge: 32 Registriert: 27.11.2007
|
erstellt am: 18. Sep. 2008 09:19 <-- editieren / zitieren --> Unities abgeben:
hy, danke für deine Antwort! Ich hab jetzt etwas rumprobiert - aber ohne weitere Hilfe komme ich scheinbar einfach nicht weiter. Wie bereits erwähnt bekomme ich bei der ersten Option nur die UserID - alle weiteren versuche andere Daten rauszubekommen sind fehlgeschlagen. Bei der zweiten Option bekomme ich über CreateObject zwar das neu Objekt aber ohne der richtigen Klassenreferenz bringt mir das Objekt wohl nicht viel. (Gibt es vielleicht ne DLL die ich einbinden kann?) Auch der Versuch mich über CallByName bis zur Funktion GetUser durchzuhanteln funktioniert nicht. Auf einen laufenden PSP-Client kann ich mit dieser Variante nicht zugreifen?!! mfg Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mrndf Mitglied Dipl. Inf.
Beiträge: 26 Registriert: 12.07.2007 Wir können alles, außer Hochdeutsch;-) CAD: SolidWorks / SolidEdge / AutoCAD / Inventor PDM: PSP / PS Konfigurator: Confit / Logik Entwicklung: .NET (VB/C#) / C++ / ARX / Java DB: SQL Server / Oracle / DB2
|
erstellt am: 19. Sep. 2008 13:50 <-- editieren / zitieren --> Unities abgeben: Nur für AWagner
Die dll zum Einbinden ist eine COM DLL Name: "CompassServer Type Library" Pfad: {Client}\bin\COMPASS_Server.dll Für DDE muss man als Topic den AIMKEY senden, um eine Funktion auf einem Recordset auszuführen: Beispiel VBA Makro (Aus Programmier Doku) 'DDEInitiate("AIM.COMPASS5.DDE", {Hier muss der AIMKEY stehen}) Kanalnr = DDEInitiate("AIM.COMPASS5.DDE", "2969.73795") Ident$ = DDERequest$(Kanalnr, "#(IDENT)") DDETerminate Kanalnr (Sollte so aussehen - hab ich aber nicht probiert!) Gruß Marc
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AWagner Mitglied Software-engineer
Beiträge: 32 Registriert: 27.11.2007
|
erstellt am: 12. Nov. 2008 13:17 <-- editieren / zitieren --> Unities abgeben:
tja, da kann ich rumprobieren was ich will ... In PSP 2009 - funktioniert DDE erst nach SP1 und nem speziellen Hotfix - TS1089406 Hatte wohl was mit Unicode-umstellung zu tun. Jetzt kann ich schön über DDE ne Verbindung zu PSP aufbauen. Damit ich mich nicht unnötig mit Api-Calls rumägern musste kann ich http://www.codeplex.com/ndde sehr empfehlen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RS Robert Mitglied IT
Beiträge: 3 Registriert: 19.09.2007
|
erstellt am: 26. Nov. 2008 12:31 <-- editieren / zitieren --> Unities abgeben: Nur für AWagner
Hallo, ist genau was ich suche, hast Du hier vielleicht noch mehr Beispiele, bzw. wo finde ich die "Programmier Doku". Ich kann unter meinen Infos leider nichts finden. Meine Aufgabe wäre es Compass mit Parametern zu starten und direkt auf ein bestimmtes Projekt zu wechseln, bzw. über die COM Schnittstelle mit Daten aus dem Projekt zu arbeiten. Es geht direkt über die SQL Schnittstelle auch, aber COM wäre mi lieber. Danke im voraus! Grüsse Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Motzi Mitglied Anwendungsprogrammierer
Beiträge: 298 Registriert: 16.06.2002 COMPASS Liebhaber, auch wenn es PSP heisst COMPASS Entwickler. 5x Windows 2003 Server, SQL 2005 AIP2009, SolidWorks 2009, EPLAN P8, Cadenas, Autodesk Productstream Professional 2009 pro, inforCOM 7.1 (ERP) d.3 DMS System
|
erstellt am: 18. Jan. 2009 17:48 <-- editieren / zitieren --> Unities abgeben: Nur für AWagner
Hallo zusammen, Das User Objekt von Aussen zu erhalten ist nur mit einer speziellen DLL in PSP möglich. Die COMPASS_Server.dll einzubinden funktioniert hier nicht. Vielleicht gibt es ja so etwas in der nächsten Version. ------------------ Gruß Motzi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |