Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Aufruf von DLL aus Journal

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:  Aufruf von DLL aus Journal (2794 mal gelesen)
phimUoB
Mitglied
Ingenieur


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

Beiträge: 107
Registriert: 08.08.2003

UG NX 4
CATIA/Smarteam V5R16
Linux, Oracle, VMWare

erstellt am: 11. Jun. 2008 08:14    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,

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


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: 11. Jun. 2008 10:06    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 phimUoB 10 Unities + Antwort hilfreich

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


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

Beiträge: 107
Registriert: 08.08.2003

UG NX 4
CATIA/Smarteam V5R16
Linux, Oracle, VMWare

erstellt am: 11. Jun. 2008 10:28    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

Nach einigem probieren habe ich es nun geschaft. Dynamic Binding war das richtige Stichwort:
Code:

Imports System
Imports System.Reflection

Public 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


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

Beiträge: 107
Registriert: 08.08.2003

UG NX 4
CATIA/Smarteam V5R16
Linux, Oracle, VMWare

erstellt am: 11. Jun. 2008 16:15    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

Zumindest unter NX4 ist weder eine Author noch eine Runtime Lizenz notwendid und die DLL kann trotzdem alles:

Code:
Option Strict off

Imports 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


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

Beiträge: 137
Registriert: 23.07.2004

erstellt am: 04. Nov. 2008 12:13    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 phimUoB 10 Unities + Antwort hilfreich

Super!

Und wie kann man eine Funktion aus einer Dll Aufrufen und den Rückgabewert abfragen?

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



CAD-CAM-Programmierer (m/w/d) mit Schwerpunkt Frästechnik

Die invenio-Gruppe ist mit über 500 Mitarbeiterinnen und Mitarbeitern an zwölf Standorten in Deutschland ein Entwicklungsspezialist für die Bauteil- und Systementwicklung ? vom Konzept bis zur Umsetzung in Prototypen und Kleinserien. Seit mehr als 35 Jahren vertrauen Fahrzeughersteller und -zulieferer, die Medizintechnik sowie Unternehmen des Anlagen- und Maschinenbaus auf unsere Expertise als Technologiepartner und unsere Fähigkeit intelligente Soft- und Hardwarelösungen zu entwickeln....

Anzeige ansehenMetallhandwerk
phimUoB
Mitglied
Ingenieur


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

Beiträge: 107
Registriert: 08.08.2003

UG NX 4
CATIA/Smarteam V5R16
Linux, Oracle, VMWare

erstellt am: 04. Nov. 2008 12:42    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

Invoke() sollte als Rückgabewert den Rückgabewert der aufgerufenen Funktion liefern:

http://msdn.microsoft.com/en-us/library/a89hcwhh.aspx

Oder habe ich die Frage falschverstanden?

------------------
Beitrag im Dassault Contact mag: 

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