Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Expression mit Kommazahl berechnen

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:  Expression mit Kommazahl berechnen (2217 mal gelesen)
Kaichi
Mitglied



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

Beiträge: 26
Registriert: 07.11.2013

NX 8.5.2.3
Catia V5R19

erstellt am: 10. Dez. 2013 14:33    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 Zusammen,

mein Programm liest die Y-Koordinate eines Punktes aus den Expressions aus:

Code:
Private point1_y_koo As Expression = CType(workPart.Expressions.FindObject("point1_y"), Expression)

anschließend nimmt es den Wert dieser Y-Koordinate verringert diesen um 32,5 und erstellt anhand dessen eine neue Y-Koordiante für einen neuen Punkt.

Code:
Dim point2_y_koo As String
point2_y_koo = point1_y_koo.value - 32.5

Dim unit_mm As Unit = CType(workPart.UnitCollection.FindObject("MilliMeter"), Unit)

Dim expression1 As Expression
expression1 = workPart.Expressions.CreateWithUnits("point2_y=" & point2_y_koo, unit_mm)


Das Problem liegt vermutlich an dem Punkt (".") in "32.5"
Denn wenn ich nur "32" nehme funktioniert alles.

Mit 32.5 bekomme ich "the specified string contains a syntax error"
Mit 32,5 bekomme ich "end-of Anweisung erwartet"
Mit "32.5" rechnet er mit 325
ich werde aber nicht richtig schlau draus.

Deklariere ich den String in Double o.ä. bekomme ich immer die Fehlermeldung dass die Expression nicht in Double konvertiert werden kann.
String ist also wohl schon richtig (?)

Wäre für Hilfe dankbar.

Gruß
Kai

[Diese Nachricht wurde von Kaichi am 10. Dez. 2013 editiert.]

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

wladlaw
Mitglied
Ingenieur


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

Beiträge: 72
Registriert: 11.01.2012

erstellt am: 10. Dez. 2013 15:20    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 Kaichi 10 Unities + Antwort hilfreich

Hallo Kai,

probier mal so:

Code:

Dim point2_y_koo As String
EDIT: point2_y_koo = "point1_y_koo - 32.5"


------------------
Gruß
Wladimir

[Diese Nachricht wurde von wladlaw am 10. Dez. 2013 editiert.]

[Diese Nachricht wurde von wladlaw am 10. Dez. 2013 editiert.]

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

Kaichi
Mitglied



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

Beiträge: 26
Registriert: 07.11.2013

NX 8.5.2.3
Catia V5R19

erstellt am: 10. Dez. 2013 15:35    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

leider nein

"the specified string contains a syntax error"

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

wladlaw
Mitglied
Ingenieur


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

Beiträge: 72
Registriert: 11.01.2012

erstellt am: 10. Dez. 2013 15: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 Kaichi 10 Unities + Antwort hilfreich

Hallo,

könntest Du dieses Journal (abgespeckte Version)  als Anhang reinstellen?

------------------
Gruß
Wladimir

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

Kaichi
Mitglied



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

Beiträge: 26
Registriert: 07.11.2013

NX 8.5.2.3
Catia V5R19

erstellt am: 10. Dez. 2013 16:23    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

Hier das gesamte Journal.

Damit es läuft muss natürlich in diesem Fall eine Expression von Hand erstellt werden.
Tools --> Expressions
Name: "point1_y"
Formula: "500" zum Beispiel

Code:
Option Strict Off
Imports System
Imports System.IO
Imports System.Collections.Generic
Imports System.Math
Imports System.Windows.Forms
Imports NXOpen
Imports NXOpenUI
Imports NXOpen.UF
Imports NXOpen.Selection
Imports NXOpen.Assemblies
Imports NXOpen.Drawings


Module Module1

    Dim theSession As Session = Session.GetSession()
    Public workPart As Part = theSession.Parts.Work

    Sub Main()

        Dim markId1 As Session.UndoMarkId
        markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "journal")

        Dim myDialog As New Dialog1
        myDialog.ShowDialog()

    End Sub


    Public Function GetUnloadOption(ByVal dummy As String) As Integer

        'Unloads the image when the NX session terminates
        GetUnloadOption = NXOpen.Session.LibraryUnloadOption.AtTermination

    End Function

End Module


Public Class Dialog1

'-----------------------------------------------------------------------

Dim theSession As Session = Session.GetSession()
Public id1 As Session.UndoMarkId
Public nErrs1 As Integer

Private point1_y_koo As Expression = CType(workPart.Expressions.FindObject("point1_y"), Expression)
Private point2_y_koo As String

'-----------------------------------------------------------------------

    Private Sub Close_Button_Click(sender As Object, e As EventArgs) Handles Close_Button.Click

        Me.DialogResult = System.Windows.Forms.DialogResult.Cancel

        Me.Close()

    End Sub

'-----------------------------------------------------------------------

    Private Sub Create_update_expr_Button_Click(sender As Object, e As EventArgs) Handles Create_update_expr_Button.Click

Dim unit_mm As Unit = CType(workPart.UnitCollection.FindObject("MilliMeter"), Unit)

point2_y_koo = point1_y_koo.value - 32.5

Dim expression1 As Expression
        expression1 = workPart.Expressions.CreateWithUnits("point2_y=" & point2_y_koo, unit_mm)

nErrs1 = theSession.UpdateManager.DoUpdate(id1)

    End Sub

'-----------------------------------------------------------------------

End Class

<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Dialog1
    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

    'Wird vom Windows Form-Designer benötigt.
    Private components As System.ComponentModel.IContainer

    'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
    'Das Bearbeiten ist mit dem Windows Form-Designer möglich. 
    'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
    <System.Diagnostics.DebuggerStepThrough()> _
    Private Sub InitializeComponent()
        Me.create_update_expr_button = New System.Windows.Forms.Button()
        Me.close_button = New System.Windows.Forms.Button()
        Me.SuspendLayout()
        '
        'create_update_expr_button
        '
        Me.create_update_expr_button.Location = New System.Drawing.Point(93, 227)
        Me.create_update_expr_button.Name = "create_update_expr_button"
        Me.create_update_expr_button.Size = New System.Drawing.Size(179, 23)
        Me.create_update_expr_button.TabIndex = 0
        Me.create_update_expr_button.Text = "Create/Update Expressions"
        Me.create_update_expr_button.UseVisualStyleBackColor = True
        '
        'close_button
        '
        Me.close_button.Location = New System.Drawing.Point(12, 227)
        Me.close_button.Name = "close_button"
        Me.close_button.Size = New System.Drawing.Size(75, 23)
        Me.close_button.TabIndex = 1
        Me.close_button.Text = "Close"
        Me.close_button.UseVisualStyleBackColor = True
        '
        'Dialog1
        '
        Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
        Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
        Me.ClientSize = New System.Drawing.Size(284, 262)
        Me.Controls.Add(Me.close_button)
        Me.Controls.Add(Me.create_update_expr_button)
        Me.Name = "Dialog1"
        Me.Text = "Dialog1"
        Me.ResumeLayout(False)

    End Sub
    Friend WithEvents create_update_expr_button As System.Windows.Forms.Button
    Friend WithEvents close_button As System.Windows.Forms.Button

End Class


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

wladlaw
Mitglied
Ingenieur


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

Beiträge: 72
Registriert: 11.01.2012

erstellt am: 10. Dez. 2013 17:00    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 Kaichi 10 Unities + Antwort hilfreich

Hallo,

es funktioniert:

Code:
   
Private Sub Create_update_expr_Button_Click(sender As Object, e As EventArgs) Handles Create_update_expr_Button.Click

    Dim unit_mm As Unit = CType(Session.GetSession().Parts.Work.UnitCollection.FindObject("MilliMeter"), Unit)
    point2_y_koo = "point1_y - 32.5"

    Dim expression1 As Expression
    expression1 = Session.GetSession().Parts.Work.Expressions.CreateWithUnits("point2_y=" & point2_y_koo, unit_mm)

End Sub


------------------
Gruß
Wladimir

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

Kaichi
Mitglied



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

Beiträge: 26
Registriert: 07.11.2013

NX 8.5.2.3
Catia V5R19

erstellt am: 10. Dez. 2013 17:07    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

Also bei mir erstellt er dann eine Expression deren Wert dieser hier ist:
"point1_y - 32.5"

Weil ja auch in Anführungszeichen (?).

Er soll ja aber den Wert der Expression auslesen. Also zum Beispiel:

point1_y = 500 mm

point2_y = point1_y - 32,5 = 467,5 mm

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



Konstrukteur Maschinenbau / Anlagenbau (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 übernehmen Verantwortung für komplexe Entwicklungsprojekte....
Anzeige ansehenMaschinenbau
Kaichi
Mitglied



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

Beiträge: 26
Registriert: 07.11.2013

NX 8.5.2.3
Catia V5R19

erstellt am: 10. Dez. 2013 18:48    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 17 Uhr hat mein Kopf Aussetzer...

Hatte bei Expressions nur in die "Formula"-Spalte geschaut und nicht in die "Value"-Spalte.

Natürlich hast Du Recht und das ist die Lösung zu meinem Problem.

Danke vielmals, nun kann es weiter gehen 

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