| | | 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
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 / zitieren --> Unities abgeben:
Ich möchte ein NXOpen Programm erstellen, dem man Parameter beim Aufruf übergeben kann, so in der Art C:\temp\mydll -option1=dieses -option2=jenesDiesen 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
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 / zitieren --> Unities abgeben: Nur für ThomasZwatz
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
Beiträge: 183 Registriert: 22.06.2005
|
erstellt am: 18. Nov. 2010 11:05 <-- editieren / zitieren --> Unities abgeben: Nur für ThomasZwatz
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 ansehen | Projektmanagement |
|
gfx-toxic.de Moderator Konstruktion / Anwenderbetreuung
Beiträge: 501 Registriert: 09.06.2006 Teamcenter 11.3 / NX 11 Windows 10
|
erstellt am: 19. Nov. 2010 10:58 <-- editieren / zitieren --> Unities abgeben: Nur für ThomasZwatz
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 >>)
|