Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Mit Winform bestehende Ausdruckswerte ändern

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:  Mit Winform bestehende Ausdruckswerte ändern (1209 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

erstellt am: 07. Okt. 2018 14:44    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 habe mit winforms ein GUI erstellt. Man kann die Länge, Breite, Höhe und per checkbox eine bohrung aktivieren und dessen durchmesser eingeben.
Wie kann ich nun den vb code als journal ausführen?
Wie übernehme ich die eingegeben Werte der Textboxen in die Ausdrücke in NX?
Die Ausdrücke im Teil heißen ebenfalls, Laenge, Breite, Hoehe und Durchmesser. Die Bohrung kann mit 1 und 0 aktiviert werden.
d.H. ich muss nur coden das bei den Wert = True der Checkbox eine 1 in den Ausdruck (p109) geschrieben wird. Jedoch hab ich keine Ahnung von den NX Funktionen. Könnte mir jemand hierfür einen Beispiel Code senden?
Verwendet wird NX7.5 und NX9 mit WIN10

Code:

<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

    '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.TextBox1 = New System.Windows.Forms.TextBox()
        Me.TextBox2 = New System.Windows.Forms.TextBox()
        Me.TextBox3 = New System.Windows.Forms.TextBox()
        Me.TextBox4 = New System.Windows.Forms.TextBox()
        Me.Label1 = New System.Windows.Forms.Label()
        Me.Label2 = New System.Windows.Forms.Label()
        Me.Label3 = New System.Windows.Forms.Label()
        Me.Label4 = New System.Windows.Forms.Label()
        Me.CheckBox1 = New System.Windows.Forms.CheckBox()
        Me.Button1 = New System.Windows.Forms.Button()
        Me.Button2 = New System.Windows.Forms.Button()
        Me.SuspendLayout()
        '
        'TextBox1
        '
        Me.TextBox1.Location = New System.Drawing.Point(76, 6)
        Me.TextBox1.Name = "TextBox1"
        Me.TextBox1.Size = New System.Drawing.Size(100, 20)
        Me.TextBox1.TabIndex = 0
        '
        'TextBox2
        '
        Me.TextBox2.Location = New System.Drawing.Point(76, 32)
        Me.TextBox2.Name = "TextBox2"
        Me.TextBox2.Size = New System.Drawing.Size(100, 20)
        Me.TextBox2.TabIndex = 0
        '
        'TextBox3
        '
        Me.TextBox3.Location = New System.Drawing.Point(76, 58)
        Me.TextBox3.Name = "TextBox3"
        Me.TextBox3.Size = New System.Drawing.Size(100, 20)
        Me.TextBox3.TabIndex = 0
        '
        'TextBox4
        '
        Me.TextBox4.Location = New System.Drawing.Point(76, 119)
        Me.TextBox4.Name = "TextBox4"
        Me.TextBox4.Size = New System.Drawing.Size(100, 20)
        Me.TextBox4.TabIndex = 0
        '
        'Label1
        '
        Me.Label1.AutoSize = True
        Me.Label1.Location = New System.Drawing.Point(31, 9)
        Me.Label1.Name = "Label1"
        Me.Label1.Size = New System.Drawing.Size(43, 13)
        Me.Label1.TabIndex = 1
        Me.Label1.Text = "Laenge"
        '
        'Label2
        '
        Me.Label2.AutoSize = True
        Me.Label2.Location = New System.Drawing.Point(31, 35)
        Me.Label2.Name = "Label2"
        Me.Label2.Size = New System.Drawing.Size(34, 13)
        Me.Label2.TabIndex = 1
        Me.Label2.Text = "Breite"
        '
        'Label3
        '
        Me.Label3.AutoSize = True
        Me.Label3.Location = New System.Drawing.Point(31, 61)
        Me.Label3.Name = "Label3"
        Me.Label3.Size = New System.Drawing.Size(33, 13)
        Me.Label3.TabIndex = 1
        Me.Label3.Text = "Höhe"
        '
        'Label4
        '
        Me.Label4.AutoSize = True
        Me.Label4.Location = New System.Drawing.Point(1, 122)
        Me.Label4.Name = "Label4"
        Me.Label4.Size = New System.Drawing.Size(69, 13)
        Me.Label4.TabIndex = 1
        Me.Label4.Text = "Durchmesser"
        '
        'CheckBox1
        '
        Me.CheckBox1.AutoSize = True
        Me.CheckBox1.Location = New System.Drawing.Point(76, 93)
        Me.CheckBox1.Name = "CheckBox1"
        Me.CheckBox1.Size = New System.Drawing.Size(120, 17)
        Me.CheckBox1.TabIndex = 2
        Me.CheckBox1.Text = "Bohrung vorhanden"
        Me.CheckBox1.UseVisualStyleBackColor = True
        '
        'Button1
        '
        Me.Button1.Location = New System.Drawing.Point(101, 0)
        Me.Button1.Name = "Button1"
        Me.Button1.Size = New System.Drawing.Size(8, 8)
        Me.Button1.TabIndex = 3
        Me.Button1.Text = "Button1"
        Me.Button1.UseVisualStyleBackColor = True
        '
        'Button2
        '
        Me.Button2.Location = New System.Drawing.Point(101, 168)
        Me.Button2.Name = "Button2"
        Me.Button2.Size = New System.Drawing.Size(75, 23)
        Me.Button2.TabIndex = 4
        Me.Button2.Text = "Generieren"
        Me.Button2.UseVisualStyleBackColor = True
        '
        'Form1
        '
        Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
        Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
        Me.ClientSize = New System.Drawing.Size(251, 237)
        Me.Controls.Add(Me.Button2)
        Me.Controls.Add(Me.Button1)
        Me.Controls.Add(Me.CheckBox1)
        Me.Controls.Add(Me.Label4)
        Me.Controls.Add(Me.Label3)
        Me.Controls.Add(Me.Label2)
        Me.Controls.Add(Me.Label1)
        Me.Controls.Add(Me.TextBox4)
        Me.Controls.Add(Me.TextBox3)
        Me.Controls.Add(Me.TextBox2)
        Me.Controls.Add(Me.TextBox1)
        Me.Name = "Form1"
        Me.Text = "Form1"
        Me.ResumeLayout(False)
        Me.PerformLayout()

    End Sub

    Friend WithEvents TextBox1 As TextBox
    Friend WithEvents TextBox2 As TextBox
    Friend WithEvents TextBox3 As TextBox
    Friend WithEvents TextBox4 As TextBox
    Friend WithEvents Label1 As Label
    Friend WithEvents Label2 As Label
    Friend WithEvents Label3 As Label
    Friend WithEvents Label4 As Label
    Friend WithEvents CheckBox1 As CheckBox
    Friend WithEvents Button1 As Button
    Friend WithEvents Button2 As Button
End Class



ich hoffe ihr könnt mir helfen

mit freundlichen Grüßen
Tobias

[Diese Nachricht wurde von Tobias3107 am 07. Okt. 2018 editiert.]

[Diese Nachricht wurde von Tobias3107 am 07. Okt. 2018 editiert.]

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

Poseida
Mitglied
Maschinebautechniker, Konstrukteur


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

Beiträge: 94
Registriert: 15.12.2010

Moldex 3D R13
NX 10 TC 11

erstellt am: 08. Okt. 2018 07:40    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,

zeichne ein Journal in NX auf und übergebe dann die Werte von deiner Form. Hier mal ein schnelles Beispiel.

Code:
Imports System
Imports NXOpen
Imports NXOpenUI
Imports NXOpen.UF
Imports NXOpen.Utilities


Module Test

    Public sess As Session = Session.GetSession

    Sub Main()

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

        Dim MForm As New Form1

        MForm.ShowDialog()


    End Sub

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


End Module

<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

    '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.CheckBox1 = New System.Windows.Forms.CheckBox()
        Me.SuspendLayout()
        '
        'CheckBox1
        '
        Me.CheckBox1.AutoSize = True
        Me.CheckBox1.Location = New System.Drawing.Point(46, 26)
        Me.CheckBox1.Name = "CheckBox1"
        Me.CheckBox1.Size = New System.Drawing.Size(81, 17)
        Me.CheckBox1.TabIndex = 0
        Me.CheckBox1.Text = "CheckBox1"
        Me.CheckBox1.UseVisualStyleBackColor = True
        '
        'Form1
        '
        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.CheckBox1)
        Me.Name = "Form1"
        Me.Text = "Form1"
        Me.ResumeLayout(False)
        Me.PerformLayout()

    End Sub

    Friend WithEvents CheckBox1 As System.Windows.Forms.CheckBox

    Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged

        If CheckBox1.Checked Then
            Dim expression1 As NXOpen.Expression = CType(sess.Parts.Work.Expressions.FindObject("MeinExp"), NXOpen.Expression)
            Dim unit1 As NXOpen.Unit = CType(sess.Parts.Work.UnitCollection.FindObject("MilliMeter"), NXOpen.Unit)
            sess.Parts.Work.Expressions.EditWithUnits(expression1, unit1, "0")
        End If


    End Sub
End Class


------------------
Benjamin

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

erstellt am: 08. Okt. 2018 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

Danke für die schnelle Antwort! Habs hinbekommen   
Weißt du zufällig ob es auch möglich ist, die eingegeben Werte automatisch nach Excel/Access zu exportieren? Um zum Beispiel später, die verschiedenen Maße vergleichen zu können oder Statistiken zu ziehen?

Und gibt es eine Möglichkeit die Bilder für die PictureBox ohne festen Pfad zu importieren? Damit ich beispielsweise die Bilder verschieben kann und trotzdem die Bilder angezeigt werden? Vielleicht könnte man ja die Bilder aus einer Exceltabelle auslesen? Da es sowieso geplant wäre via Button die Maße in Excel zu übertragen. Somit müsste nur die .vb und die Excel-Datei weitergegeben werden.

Gibt es eine Umgebungsvariable für den aktuellen Speicherpfad des aktuell geöffneten Bauteils?

lg

[Diese Nachricht wurde von Tobias3107 am 08. Okt. 2018 editiert.]

[Diese Nachricht wurde von Tobias3107 am 08. Okt. 2018 editiert.]

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

Poseida
Mitglied
Maschinebautechniker, Konstrukteur


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

Beiträge: 94
Registriert: 15.12.2010

Moldex 3D R13
NX 10 TC 11

erstellt am: 09. Okt. 2018 07:36    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,

https://ww3.cad.de/foren/ubb/Forum442/HTML/000349.shtml#000018 schau dir das mal an.

Deine Frage mit den Bildern versteh ich nicht.

Schau dir mal die NX API Reference an und die Property NXOPEN->BasePart->FullPath

------------------
Benjamin

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



kaufmännischer Mitarbeiter (m/w/d) für den Bereich Großküchentechnik

CHEFS CULINAR Großküchentechnik richtet seit 40 Jahren als Fachabteilung des bundesweit führenden Lebensmittel-Großhändler CHEFS CULINAR modernste Gewerbeküchen ein.
Ob Hotellerie, Gastronomie oder Care, wir finden für jeden Anspruch die richtige Lösung ? denn Kochen ist Handwerk, Kreativität und Präzision. Von 16 Standorten in Deutschland aus arbeiten unsere 300 Mitarbeiter (m/w/d) an individuellen ...

Anzeige ansehenInnendienst, Sachbearbeitung
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: 09. Okt. 2018 21:43    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 Hilfe! Hat nun alles soweit geklappt!
Mit folgenden Code habe ich den Pfad als Variable, und der Excelexport funktioniert auch super!

Zwecks der Frage zu den Bildern: ich suche noch nach einer Möglichkeit die Bilder fest in NX zu importieren o.Ä. um später eventuelle Anzeigefehler zu vermeiden, falls jemand ein Bild verschiebt. Die Bilder haben ja einen festen Speicherpfad im Code, wie z.B. hier:

Code:

        'PictureBox1
        '
Dim pfad2 As String = IO.Path.GetDirectoryName(workPart.FullPath)
        Me.PictureBox1.ImageLocation = pfad2 + "\Bilder_Zeichnung\Nuten.jpg"
        Me.PictureBox1.Location = New System.Drawing.Point(523, 35)
        Me.PictureBox1.Name = "PictureBox1"
        Me.PictureBox1.Size = New System.Drawing.Size(215, 194)
        Me.PictureBox1.TabIndex = 1
        Me.PictureBox1.TabStop = False

Aber ich denke, wir werden dies so umsetzen, dass die Bilder fest im Firmenpool abgespeichert werden, und administrativ Schreibrechte auf den Ordner gesetzt werden.


Code:

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        Dim theSession As NXOpen.Session = NXOpen.Session.GetSession()
        Dim workPart As NXOpen.Part = theSession.Parts.Work
        Dim pfad2 As String = IO.Path.GetDirectoryName(workPart.FullPath)

Dim oExcel As Object
        Dim oBook As Object
        Dim oSheet As Object
        Dim I As Integer = 2
        oExcel = CreateObject("Excel.Application")
        oBook = oExcel.Workbooks.Add
        oSheet = oBook.Worksheets(1)
        oSheet.Range("A1").Value = Textbox1.Text
        oSheet.Range("B1").Value = "Hauptmaß"
        oSheet.Range("C1").Value = "Nebenmaß"
        oSheet.Range("D1").Value = "Untere Tol"
        oSheet.Range("E1").Value = "Obere Tol"
        oSheet.Range("F1").Value = "Typ"
        oSheet.Range("A1:F1").Font.Bold = True
oBook.SaveAs(pfad2 & "\Book1.xls")
oSheet = Nothing
        oBook = Nothing
        oExcel.Quit()
        oExcel = Nothing
End Sub


Nur noch eine Frage zum Excelcode. Im Moment werden mit diesen Code bestimmte Werte auf feste Zellen geschrieben. Zum einen müsste aus den "oBook.SaveAs(pfad2 & "\Book1.xls")" ein normales "speichern" anstatt "SaveAs" gemacht werden. Einfaches weglassen von "As" funktioniert leider nicht. Wäre es theoretisch auch möglich die Zellen variable zu machen, um die Werte immer in die erte freie Zeilen zu schreiben?

in VBA würde dies folgendermaßen aussehen:

Code:

Dim lrow As Long
   
   
    lrow = 2 'Start in Zeile 2, Zeile 1 sind ja die Überschriftrn
    'Schleife solange etwas in der ersten Spalte in sheet 1 drin steht
    Do While Trim(CStr(Sheet1.Cells(lrow, 1).Value)) <> ""
        lrow = lrow + 1 'Nächste row bearbeiten
    Loop

Danke bis jetzt! hat mir richtig geholfen!

mit freundlichen Grüßen
Tobias

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