Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  Autodesk Productstream Professional
  Custom DotNet dll für PSP

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 Autodesk Produkte
  
Ein Tag mit Weitblick: ORCON-Kundentag auf dem TKE Testturm, eine Pressemitteilung
Autor Thema:  Custom DotNet dll für PSP (2665 mal gelesen)
2aCAD
Mitglied



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

Beiträge: 16
Registriert: 06.09.2006

erstellt am: 26. Mrz. 2010 22:32    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 Forum,
ich habe laut SDK eine dotNet-dll zur Einbindung im PSP2010 erstellt und in der Konfiguration eingebunden.
Das funktioniert auch alles, die Testfunktionen kann ich aus PSP heraus ansprechen.
Nun wollte ich die Funktionen der vererbten CCustomerNetModuleBase-Klasse (z.B. substitute) aber in einer weiteren Klasse dieser dll nutzen.
Ich habe also folgendes  in der zweiten Klasse versucht:

Code:

Imports CMPNetModule

Public Class ClsTest

Public Shared Sub PrepEx()
  Dim oCN As New CCustomerNetModuleBase

  Dim Test as String = oCN.Substitute("$PRGPATH")
  MessageBox.Show (Test)
End Sub
End Class


Zur Entwurfszeit werden auch keine Fehler initiiert.
Erst zur Laufzeit kommt beim Zugriff auf das Objekt folgender Fehler:

<Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.>

Auch wenn die Sub nicht als shared definiert sondern instanziert wird, ergibt sich der gleiche Fehler.
Auch eine Vererbung  der CCustomerNetModuleBase-Klasse in diese zweite Klasse bringt keinen Erfolg.

Hat jemand schon mal Ähnliches versucht und kann helfen?
Ich würde mich über jeden Hinweis freuen.

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

kieninj
Mitglied
Software Engineer

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

Beiträge: 5
Registriert: 03.02.2010

erstellt am: 30. Mrz. 2010 09: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 2aCAD 10 Unities + Antwort hilfreich

Hallo,

Ein Objekt der Klasse CCustomerNetModuleBase kann man nicht selbst erzeugen. Besser gesagt, erzeugen kann man es schon, aber die Funktionen CallFunction() und Substitute() gehen nicht, weil sie keinen Kontext haben.
Die Funktionen stehen nur zur Laufzeit des Kommandos zur Verfügung.
Daher könnte man auch nicht das akuelle Objekt ("this") zwischenspeichern und z.B. in einem Dialog-Objekt verwenden um mit PSP zu kommunizieren.

Wenn man so etwas realisieren möchte, sollte die CAI-Schnittstelle (Compass Application Interface) verwendet werden. Das kann man auch mit VB.NET oder C# machen.

Jens
coolOrange

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

T to the F
Mitglied



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

Beiträge: 398
Registriert: 06.06.2007

Win 7 x64 SP1
PrDS 2012 Ultimate
Vault Pro 2012
i7 M640
8 GB
Quadro FX 1800M

erstellt am: 30. Mrz. 2010 15: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 2aCAD 10 Unities + Antwort hilfreich

Das hat auch noch was mit dem "Starken Namen" zu tun.
Google mal "sn.exe". Dazu findest du reichlich, wie das in Visual Studio geht.

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

2aCAD
Mitglied



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

Beiträge: 16
Registriert: 06.09.2006

erstellt am: 30. Mrz. 2010 18:29    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 die Antworten.

@kieninj
Ich hatte so etwas fast befürchtet. Die CAI-Schnittstelle verwende ich bisher für diese Zwecke. Mit dem Call-Back-Objekt ist es halt möglich die Funktionen auch selbst instanziert zu verwenden. Ich wollte nur meine bisherigen Funktionen gern mit der CostumerNet-dll realisieren, weil dadurch eine zentrale Ablage der eigenen dll möglich wird und bei einer Aktualisierung nicht alle Clients angefasst werden müssen.
Die CAI-Schnittstelle verlangt ja eine eigene dll auf den Clients.

@T to the F
Der Starke Name dient nur der Sicherheit. Damit kann die eigene dll überhapt erst in das zentrale Serververzeichnis gelegt und in der Konfiguration bekannt gemacht werden. Ohne Signierung mit Starken Namen lassen sich DotNet-dll's nicht aus einer Netzwerkablage verwenden.

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

mrndf
Mitglied
Dipl. Inf.


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

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: 31. Mrz. 2010 13:38    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 2aCAD 10 Unities + Antwort hilfreich

Es gibt noch eine andere Möglichkeit mti Hilfe der "COMPASS_Server.dll" (COM Server). Für die PSP Version 2010 kannst Du Dir den aktuellen User des Clients auch direkt angeln (vb.net):
Dim cHelper As New Compass2000Server.CompassHelper
user = cHelper.GetUser()
Auf dem User kann man gaaaanz viele tolle Dinge machen.

Die zetrale Ablage deiner DLL ist übrigens trotzdem möglich. Du musst nur die Sicherheitseinstellungen Deiner .net Umgebung entspechennd präparieren. (Klingt aber leichter als es ist, und hat mit dem Forum hier nichts zu tun!)

Gruß Marc

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

2aCAD
Mitglied



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

Beiträge: 16
Registriert: 06.09.2006

erstellt am: 07. Apr. 2010 13: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

Hallo Marc,

vielen Dank für diesen Hinweis. Genau so habe ich mir das gewünscht.
So habe ich das jetzt gemacht:

Code:

Dim oCH As New Compass2000Server.CompassHelper
Dim oCUser As Compass2000Server.CompassUser = oCH.Get

Am User hängen dann tatsächlich viele Funktionen, auch Substitute und CallFunction.
Also vielen Dank noch mal
Gruß Falk

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)2025 CAD.de | Impressum | Datenschutz