| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
| |
 | Solid Edge: Erste Schritte, ein Webinar am 26.09.2025
|
Autor
|
Thema: Aufruf von DLL aus Journal (2967 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: 2723 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 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: 142 Registriert: 23.07.2004
|
erstellt am: 04. Nov. 2008 12:13 <-- editieren / zitieren --> Unities abgeben:          Nur für phimUoB
|

| Laboringenieur*in / Technische Leitung | Laboringenieur*in / Technische Leitung Die Bergische Universität Wuppertal ist eine dynamische, vernetzte, forschungs-orientierte Campusuniversität. Gemeinsam stellen sich hier mehr als 26.000 Forschende, Lehrende, Studierende und Mitarbeitende den Herausforderungen in Gesellschaft, Kultur, Bildung, Ökonomie, Technik, Natur und Umwelt. In der Fakultät für Elektrotechnik, Informationstechnik ... | Anzeige ansehen | Feste Anstellung |
|
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:         
|