Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Parameter an DLL ü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:  Parameter an DLL übergeben (2279 mal gelesen)
ThomasZwatz
Ehrenmitglied V.I.P. h.c.
cadadmin



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

Beiträge: 5397
Registriert: 19.05.2000

(10-2022)
---------------------------------------------
[stable]
NX2007(2027.3701) + TC13.3.0.3, RAC +AWC6.0.3
SingleSite 4Tier, DocMgt, Client4Office, MRO, ReqMgt, SchedMgt, T4S, TcVis Mockup, TcSSO, Multi-CAD
BCT-Inspector Neutral v22R2
---------------------------------------------
[testing]
NX2007(2027.3701) + TC13.3.0.3, RAC +AWC6.0.3
BCT-Inspector Neutral v22R2
@M7720 Win10 (1909)

erstellt am: 17. Nov. 2010 21:18    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

Ich möchte ein NXOpen Programm erstellen, dem man Parameter beim Aufruf übergeben kann, so in der Art
C:\temp\mydll -option1=dieses -option2=jenes

Diesen Aufruf möchte ich in eine Toolbar (oder Menue) packen ( d.h. es gibt dann mehrere Einträge in der Toolbar mit unterschiedlichen Icons die der Anwender dann anklicken kann - aber das zugrundeliegende Programm gibts nur 1x ).

Geht das ?
Mir kommt entfernt vor, dazu etwas in der SFB MailingList gelesen zu haben, finde aber im UGanswer nichts mehr ...

Thanx
Thomas

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: 18. Nov. 2010 09:52    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 ThomasZwatz 10 Unities + Antwort hilfreich

Hallo Thomas,

ein Programm mit Eingabeparametern zu erstellen ist kein Problem. Du brauchst lediglich einen Einstiegspunkt mit Parametern, z.B.:

Code:
Sub Main(Byval p1 as String, Byval p2 as string)

Der Haken an der Sache: Die Parameter können m.W. nicht über das NX- UI eingegeben werden, das erlaubt nur die Angabe des eigentlichen Programmnamens. Sollte es dafür eine Lösung geben, wäre das ein vernünftiger Weg.

Eine, nicht ganz ideale Lösung geht folgendermaßen:

Die dll wird aus einem Journal gestartet, das die unterschiedlichen Parameter übergibt. Hinter jedem Button steckt dann ein geringfügig geändertes Journal, die dll gibt's nur ein mal.

Gruß, Michael

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

Jan Boettcher
Mitglied



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

Beiträge: 183
Registriert: 22.06.2005

erstellt am: 18. Nov. 2010 11:05    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 ThomasZwatz 10 Unities + Antwort hilfreich

Hallo Thomas,

Ich habe es in so einem Fall meistens so gemacht, dass ich aus dem gleichen Quelltext über die Entwicklungsumgebung automatisch immer n dlls mit unterschiedlichen Namen erstellt habe.

Den Einsprungpunkt für die verschiedenen dlls habe ich über die Compileroptionen gesteuert. Für jeden Zweig muss es dann eine eigene Klasse mit Main-Methode geben, die einfach nur mit den richtigen Optionen weiterleitet. Alternativ könnte man sich auch denken, aus einem gemeisamen Einstiegspunkt anhand des Namens der dll o.ä. zu verzweigen.
Das Ganze hat zwar den Nachteil, dass immer mehrere dlls mit prinzipiell gleichem Inhalt existieren, aber Plattenplatz ist billig. Wichtig ist, dass ich Änderungen am Quelltext konsistent an einer Stelle machen kann.

Alternativ kann man auch die komplette dll zum Start von NX laden und dabei für die einzelnen Menuepunkte Callbacks registrieren (NX Open Programmers Guide/Execution Methods).

All diese Wege sind natürlich nutzlos, wenn die unterschiedlichen Parameter zur Compilezeit nicht bekannt sind. Einen Weg, Parameter direkt über Menues/Buttons  zu übergeben kenne ich leider auch nicht, aber ich wäre interessiert 

Viele Grüße
Jan

------------------
Jan Böttcher
www.ib-boettcher.de

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



Projekt Manager (m/w/d) Messeprojekte

Die E3 World vereint das Beste aus zwei Welten und ist der führende Dienstleister im Bereich Live Marketing, Messe und Events. Professionelle Consultingleistung für neue hybride Veranstaltungskonzepte mit digitalem Content sind genauso Teil unserer DNA, wie das klassische Markenerlebnis. Mit starken Tochterunternehmen bieten wir unseren Kunden sowohl lokale als auch globale Kreativleistungen in Bezug auf Kommunikation, Digitalisierung und Realisierung ihrer Marketingherausforderungen....

Anzeige ansehenProjektmanagement
gfx-toxic.de
Moderator
Konstruktion / Anwenderbetreuung


Sehen Sie sich das Profil von gfx-toxic.de an!   Senden Sie eine Private Message an matthias-p  Schreiben Sie einen Gästebucheintrag für matthias-p

Beiträge: 501
Registriert: 09.06.2006

Teamcenter 11.3 / NX 11
Windows 10

erstellt am: 19. Nov. 2010 10:58    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 ThomasZwatz 10 Unities + Antwort hilfreich

Hallo Thomas,

ich löse es auch so wie Michael es beschrieben hat.
Ein Journal kann dann so aussehn:

Code:
using System;
using System.Reflection;
using NXOpen;

namespace Example
{
    public class NiXe
    {
        public static void Main(string[] args)
        {
            Assembly ass = Assembly.LoadFrom("Pfad zu DLL");
            Type ty = ass.GetType("Namespace in der DLL");
            Object[] p = { "Parameter" };
            ty.GetMethod("Methodenname").Invoke(null, p);
        }
    }
}



Zitat:
Original erstellt von mseufert:
Hallo Thomas,

ein Programm mit Eingabeparametern zu erstellen ist kein Problem. Du brauchst lediglich einen Einstiegspunkt mit Parametern, z.B.:

Code:
Sub Main(Byval p1 as String, Byval p2 as string)

Der Haken an der Sache: Die Parameter können m.W. nicht über das NX- UI eingegeben werden, das erlaubt nur die Angabe des eigentlichen Programmnamens. Sollte es dafür eine Lösung geben, wäre das ein vernünftiger Weg.

Eine, nicht ganz ideale Lösung geht folgendermaßen:

Die dll wird aus einem Journal gestartet, das die unterschiedlichen Parameter übergibt. Hinter jedem Button steckt dann ein geringfügig geändertes Journal, die dll gibt's nur ein mal.

Gruß, Michael


------------------
Gruß Matthias
------------------------------------
ICQ: 163190295

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