Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  NX execute API auf DLL Folder übergeben

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 NX
Autor Thema:  NX execute API auf DLL Folder übergeben (1139 mal gelesen)
TurbineCool
Mitglied
Ingenieur

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

Beiträge: 2
Registriert: 08.07.2013

erstellt am: 08. Jul. 2013 12: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,

ich habe einige C# Skripts erstellt welche ich gerne über eine  Blockstyler UI aufrufen möchte in NX 7.5.5.4.

Mein Problem ist, das die C# dateien sind kompiliert als .dll sind diese ein String array in der Main "String[] args" als input bekommen können.
Aber eine dll aus einer GUI ausführen kann ich nur mit dem Befehl public Object Execute(
string libName,
string className,
string methodName,
Object[] inputArgs
)


Der Code sieht wie folgt aus wenn man auf den OK button clickt:


public int ok_cb()
    {
        int errorCode = 0;
        try
        {
            errorCode = apply_cb();
            //---- Enter your callback code here -----
           

            Session theSession = Session.GetSession();
            Object[] obj1 = new Object[1];
            obj1[0] = @"C:\...."; #oder aus der GUI ein FolderString
            Object result;
            result = theSession.Execute(GlobalVar.rootfolder_location, "NXJournal", "Main", obj1);
        }

So sieht mein NXJournal am anfang aus:

public class NXJournal
{
    public static void Main(string[] args)
    {
        Start Routine1 = new Start();


Hier ist das Problem der execute Befehl übergibt ein object und meine main will ein string[] haben.
Aber :
    public static void Main(object[] args)
geht nicht weil dann ein invoke Fehler kommt.

Ich wäre sehr dankbar für jeden Hinweis. Vieleicht gibt es noch einen anderen Weg eine dll auszuführen?
 

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

mseufert
Moderator
Freiberuflicher CAD/CAM Ingenieur


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

Beiträge: 2624
Registriert: 18.10.2005

HP Z420
WIN7 64 Win 10
UG NX6-1980
3D Printer Prusa MK2 S

erstellt am: 08. Jul. 2013 18: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 Nur für TurbineCool 10 Unities + Antwort hilfreich

Hallo TurbineCool,

woran das liegt, kann man nur vermuten. Bestätigen kann ich Dir jedoch, daß Session.Execute bzgl. Parametern und Rückgabe "etwas" eigen ist. Mit einfachen Beispielen (z.B. double als Object übergeben, Wurzel ziehen und double zurückgeben funktioniert) kann man sich rantasten, was geht und was nicht. Daneben wird seit einiger Zeit beim Start geprüft, ob die aufgerufene dll signiert ist. Genaueres steht im LogFile.

Gruß, Michael

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

TurbineCool
Mitglied
Ingenieur

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

Beiträge: 2
Registriert: 08.07.2013

erstellt am: 09. Jul. 2013 09:47    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 Michael kannst du mir das einfache Beispiel mal zuschicken?

Ich kann ja nur String empfangen. Ich weiß nicht wie das mit Double gehen soll, ich übergebe ja ein object..
Und wenn es mit double geht dann geht es auch bestimmt mit string im object.

Vielen Dank

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



Mitarbeiter Drahterodierbereich Werkzeugbau (m/w/d)
W...
Anzeige ansehenMaschinenbau
mseufert
Moderator
Freiberuflicher CAD/CAM Ingenieur


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

Beiträge: 2624
Registriert: 18.10.2005

HP Z420
WIN7 64 Win 10
UG NX6-1980
3D Printer Prusa MK2 S

erstellt am: 09. Jul. 2013 14: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 TurbineCool 10 Unities + Antwort hilfreich

Hallo TurbineCool,

schreib' eine Funktion in die Klasse NXJournal, z.B.:

public static double wurzel(double value)
{ return Math.Sqrt(value); }

Die bekommt ein double als object übergeben, z.B.:

object[] args = { 25.0 };
double result = (double)sess.Execute(<dllname>, "NXJournal", "wurzel", args);

und gibt das Resultat zunächst als object zurück. Mittels Typumwandung (double) hast Du das gesuchte Ergebnis.

Sobald das funktioniert, kannst Du auf der Basis andere Typen bzw. Arrays testen.

Gruß, Michael

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