Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Der Typeninitialisierer für Ausdruck hat eine Ausnahme verursacht.

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:  Der Typeninitialisierer für Ausdruck hat eine Ausnahme verursacht. (1015 mal gelesen)
Tobias3107
Mitglied
Konstrukteur/Anwendungstechnik für Hartmetallwerkzeuge


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

Beiträge: 32
Registriert: 18.08.2018

NX18xx, CoCreate Drafting/Modelling, SolidWorks

erstellt am: 03. Nov. 2018 17:21    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,

ich bastel momentan an einer Benutzeroberfläche, mit welcher man diverse Expressions bearbeiten kann.

Code:

Option Strict off

Imports System
Imports NXOpen
Imports NXOpenUI
Imports NXOpen.UF
Imports NXOpen.Utilities
Imports System.IO

Module Test

    Public sess As Session = Session.GetSession

    Sub Main()

        Dim wp As Part = sess.Parts.Work
        Dim MForm As New Form1
        Dim UndoM As Session.UndoMarkId = sess.SetUndoMark(Session.MarkVisibility.Visible, "-")

        MForm.ShowDialog()


    End Sub

    Sub LW(Message As String)
        sess.ListingWindow.Open()
        sess.ListingWindow.WriteLine(Message)
    End Sub

End Module


' Extra Klasse für alle globalen Variabeln
Public Class Ausdrücke

    Public Shared theSession As NXOpen.Session = NXOpen.Session.GetSession()
    Public Shared workPart As NXOpen.Part = theSession.Parts.Work
    Public Shared Property exp_Breite As NXOpen.Expression = CType(workPart.Expressions.FindObject("Breite"), NXOpen.Expression)

End Class


<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class Form1
    Inherits System.Windows.Forms.Form


    'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
    <System.Diagnostics.DebuggerNonUserCode()>
    Protected Overrides Sub Dispose(ByVal disposing As Boolean)
        Try
            If disposing AndAlso components IsNot Nothing Then
                components.Dispose()
            End If
        Finally
            MyBase.Dispose(disposing)
        End Try
    End Sub


    Private components As System.ComponentModel.IContainer

    <System.Diagnostics.DebuggerStepThrough()>
    Private Sub InitializeComponent()
        Dim theSession As NXOpen.Session = NXOpen.Session.GetSession()
        Dim workPart As NXOpen.Part = theSession.Parts.Work

        Me.TextBox_Breite = New System.Windows.Forms.TextBox()
 

        Me.TextBox_Breite.Location = New System.Drawing.Point(11, 212)
        Me.TextBox_Breite.Name = "TextBox_Breite"
        Me.TextBox_Breite.Size = New System.Drawing.Size(100, 20)
        Me.TextBox_Breite.TabIndex = 34
        Me.TextBox_Breite.Text = CType(workPart.Expressions.FindObject("Breite"), NXOpen.Expression).Value.ToString
     '   Me.TextBox_Breite.Text = Ausdrücke.exp_Breite.Value.ToString
    End Sub

    Friend WithEvents TextBox_Breite As System.Windows.Forms.TextBox


   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim theSession As NXOpen.Session = NXOpen.Session.GetSession()
        Dim workPart As NXOpen.Part = theSession.Parts.Work
        Dim markId1 As Session.UndoMarkId

        ' Einheiten
        Dim Millimeter As NXOpen.Unit = CType(workPart.UnitCollection.FindObject("MilliMeter"), NXOpen.Unit)
        Dim Grad As Unit = CType(workPart.UnitCollection.FindObject("Degrees"), Unit)
        Dim Konst As Unit = Nothing


        workPart.Expressions.EditWithUnits(Ausdrücke.exp_Breite, Millimeter, TextBox_Breite.Text)  '(Ausdruck, Einheit, Textboxwert)

        Dim nErrs1 As Integer
        nErrs1 = theSession.UpdateManager.DoUpdate(markId1)
    End Sub
End Class




Wenn ich  

Code:
Me.TextBox_Breite.Text = CType(workPart.Expressions.FindObject("Breite"), NXOpen.Expression).Value.ToString

verwende, funktioniert das ganze so wie es soll.
Wenn ich jedoch auf die Variable exp_Breite in der Class Ausdrücke zugreife, kommt der Fehler  "Der Typeninitialisierer für "Ausdruck" hat eine Ausnahme verursacht."
Code:
     '   Me.TextBox_Breite.Text = Ausdrücke.exp_Breite.Value.ToString
.

Selbes Spiel unten bei

Code:
workPart.Expressions.EditWithUnits(Ausdrücke.exp_Breite, Millimeter, TextBox_Breite.Text)  '(Ausdruck, Einheit, Textboxwert)
.  Wenn ich hier die exp_Breite extra nochmals deklariere und das "Ausdrücke" weglasse, funktioniert auch hier alles.

Da das ganze ein recht umgangreiches Projekt ist, und ich sowieso schon über 1500 Zeilen habe, würde ich gerne vermeiden die Expressions mehrfach zu deklarieren. Das ganze sollte meiner Meinung nach, mit einer extra Klasse für die globalen Variabeln eigentlich funktionieren.
Wieso kann ich keinen Bezug auf die class Ausdrücke benutzen?

mit freundlichen Grüßen
Tobias

[Diese Nachricht wurde von Tobias3107 am 03. Nov. 2018 editiert.]

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

geraldb
Mitglied



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

Beiträge: 38
Registriert: 13.09.2008

erstellt am: 04. Nov. 2018 09:17    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 Tobias3107 10 Unities + Antwort hilfreich

Hast Du mal mit dem debugger geschaut ob im Moment der Verwendung von
Code:
Ausdrücke.exp_Breite.Value.ToString()
das darin referenzierte workPart Nothing ist und die Ausnahme verursacht? Gleiches gilt für die beiden anderen Shared-Variablen. Obendrein verwendest Du zu im Testmodul gänzlich andere, eigene Variablen.

Auf Umlaute in Funktions- und Variablennamen verzichtet man auch besser, statt Ausdrücke eben "Ausdruecke" schreiben.

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

Tobias3107
Mitglied
Konstrukteur/Anwendungstechnik für Hartmetallwerkzeuge


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

Beiträge: 32
Registriert: 18.08.2018

NX18xx, CoCreate Drafting/Modelling, SolidWorks

erstellt am: 04. Nov. 2018 12:19    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,
danke für deine schnelle Antwort!
Ich habe nun die class auf Ausdruecke umbenannt, sowie workpart und thesession nochmal neu als public shared property deklariert.
Zudem habe ich die Klasse nun ganz unten in das Programm verschoben.

Ich weiß zwar nicht wieso, aber jetzt funktioniert das ganze! 

Danke!


mit freundlichen Grüßen
Tobias

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: 04. Nov. 2018 14: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 Tobias3107 10 Unities + Antwort hilfreich

Hallo Tobias,

schön, dass es funktioniert ... es erinnert mich aber ein bisschen an James Dean: Denn sie wissen nicht, was sie tun ...

Daher zwei gut gemeinte Tipps, damit es nicht in einer mittleren Katastrophe endet:

- Es sollte ausreichen, alle Variablen und Methoden innerhalb einer Klasse unterzubringen. Das wäre einiges einfacher.
- Im Code vom Formsdesigner - steht ja auch ursprünglich deutlich drin, hat der eigene Programmcode nichts verloren.

Gruß, Michael

------------------
Ein Mensch wird laut, wenn er was will;
wenn er's erst hat, dann wird er still;
Das "Danke" ist, nach alter Sitte,
Weit selt'ner als das "Bitte, Bitte".

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



Produktentwickler / Konstrukteur Kunststofftechnik (m/w/d)

Die GESA ist ein deutscher mittelständischer, familiengeführter Hidden Champion der Point-of-Sale Industrie mit internationalen Kunden aus der Branche der dekorativen Kosmetik. Langjährige Kundenbeziehungen spiegeln das Vertrauen der Kunden in unser Team wider. Als innovativer Partner für Permanentmöbel mit langjähriger Erfahrung in der Kosmetikbranche stellt die GESA ihre Expertise in der Zusammenarbeit mit führenden Kosmetikherstellern unter Beweis....

Anzeige ansehenEntwicklung
Tobias3107
Mitglied
Konstrukteur/Anwendungstechnik für Hartmetallwerkzeuge


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

Beiträge: 32
Registriert: 18.08.2018

erstellt am: 04. Nov. 2018 21:17    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

Danke, aus Fehlern lernt man  Ich versuche, das ganze umzustrukturieren...

Viele Grüße

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