| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Aufruf von DLL aus Journal (2809 mal gelesen)
|
phimUoB Mitglied Ingenieur
Beiträge: 107 Registriert: 08.08.2003 UG NX 4 CATIA/Smarteam V5R16 Linux, Oracle, VMWare
|
erstellt am: 11. Jun. 2008 08:14 <-- editieren / zitieren --> Unities abgeben:
Hallo, Hatte diese Frage auch schon im NX-Forum gestellt. Ist hier aber wohl besser aufgehoben. Kann ich mit dem DllImport aus dem Journal auch anderen beliebigen Code aufrufen? Wir möchten Stücklistendaten aus NX in einem Excel-Sheet ablegen. Ein Journal-Skript habe ich schon hingekrieg und auch eine DLL mit dem Excel-Code. Nur kriege ich den Aufruff nicht hin. Was sind die Anforderungen an die DLL? Momentan habe ich mit C# etwas gebastelt. Irgendwie scheinnt aber VBScript Probleme mit dem daraus resultierenden "Managed"-Code Probleme zu haben. Geht das aus dem Journal überhaupt? Oder geht das nur mit der dotnet-author Lizenz? Code:
Public Class TestDLL <DllImport("D:\SharpDevelop Projects\test\bin\Debug\test.dll")> _ Shared Function TestSub () End Function End Class
Code:
namespace test { public class MyClass { public static void TestSub() { System.Windows.Forms.MessageBox.Show("Hello DLL!"); } } }
------------------ Beitrag im Dassault Contact mag: 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: 11. Jun. 2008 10:06 <-- editieren / zitieren --> Unities abgeben: Nur für phimUoB
Der Zugriff auf externe Programme (.exe) geht aus einem Journal heraus über die Process- Klasse. Ob das auch mit Libraries (.dll) funktioniert, kann ich nicht sagen. Falls extern auf die NX API zugegriffen wird, ist mit einiger Sicherheit ein Author- Lizenz erforderlich. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
phimUoB Mitglied Ingenieur
Beiträge: 107 Registriert: 08.08.2003 UG NX 4 CATIA/Smarteam V5R16 Linux, Oracle, VMWare
|
erstellt am: 11. Jun. 2008 10:28 <-- editieren / zitieren --> Unities abgeben:
Nach einigem probieren habe ich es nun geschaft. Dynamic Binding war das richtige Stichwort: Code:
Imports System Imports System.ReflectionPublic Class TestDLL Shared Sub TestSub Dim a As [Assembly] = [Assembly].LoadFrom("D:\SharpDevelop Projects\test\bin\Debug\test.dll") Dim t As Type = a.GetType("MyTestDLL.MyClass") Dim p() As Object = {"Hello DLL"} t.GetMethod("TestSub").Invoke(Nothing, p) End Sub End Class
Ob nun in der DLL auch Methoden aus der NXopen.dll verwendet werden kann weis ich noch nicht. Ist ja aber für meine Anwendung auch nicht notwendig. ------------------ Beitrag im Dassault Contact mag: Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
phimUoB Mitglied Ingenieur
Beiträge: 107 Registriert: 08.08.2003 UG NX 4 CATIA/Smarteam V5R16 Linux, Oracle, VMWare
|
erstellt am: 11. Jun. 2008 16:15 <-- editieren / zitieren --> Unities abgeben:
Zumindest unter NX4 ist weder eine Author noch eine Runtime Lizenz notwendid und die DLL kann trotzdem alles: Code: Option Strict offImports System Imports System.Reflection Imports NXOpen Module NXEXample Public Class TestDLL Shared Sub TestSub(session As Session) Dim a As [Assembly] = [Assembly].LoadFrom("D:\SharpDevelop Projects\test\bin\Debug\test.dll") Dim t As Type = a.GetType("MyTestDLL.MyClass") Dim p() As Object = {session} t.GetMethod("TestSub").Invoke(Nothing, p) End Sub End Class
Sub Main Dim theSession as Session
theSession = Session.GetSession() TestDLL.TestSub(theSession) End Sub End Module
------------------ Beitrag im Dassault Contact mag: Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
met Mitglied CAD-Admin / Konstrukteur
Beiträge: 137 Registriert: 23.07.2004
|
erstellt am: 04. Nov. 2008 12:13 <-- editieren / zitieren --> Unities abgeben: Nur für phimUoB
|
| Techniker Elektrotechnik (m/w/d) | Die besten Köpfe für die unterschiedlichsten Aufgaben zu finden sowie Menschen und Technologien zu verbinden, und zwar täglich aufs Neue - dafür schätzen unsere Kunden FERCHAU. Unterstütze uns: als ambitionierte:r Kolleg:in, der:die wie wir Technologien auf die nächste Stufe bringen möchte. Wir realisieren spannende Projekte für namhafte Kunden in allen Technologiebereichen und für alle Branchen und sorgen für sichere und nachhaltige Technologielösungen.... | Anzeige ansehen | Elektrotechnik, Elektronik |
|
phimUoB Mitglied Ingenieur
Beiträge: 107 Registriert: 08.08.2003 UG NX 4 CATIA/Smarteam V5R16 Linux, Oracle, VMWare
|
erstellt am: 04. Nov. 2008 12:42 <-- editieren / zitieren --> Unities abgeben:
|