Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Per Button/WinForm Bauteil vollständig laden

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:  Per Button/WinForm Bauteil vollständig laden (908 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: 27. Okt. 2018 14:45    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 mir eine Winform gebastelt.
Auf der Startseite werden 3 Buttons eingeblendet, jeder dieser Buttons soll ein bestimmtes Bauteil öffnen, sowie die dazugehörige WinForm Form.

Form1(MForm) ist die Startseite, Form2(Schwa_Form) ist die dazugehörige WinForm von Button_Schwa bzw. den Bauteil.

Das ganze läuft auch soweit ganz gut.
Ich drücke auf den Button und es öffnet sich das Bauteil sowie die WinForm, jedoch wird das Bauteil nicht komplett geöffnet. Der Körper wird zwar angezeigt, jedoch wurden die Ausdrücke etc. noch nicht geladen.
In Form2 befinden sich dann verschiedene TextBoxen, mit welchen ich die Ausdrücke ändern kann, hierbei kommt dann jedoch der Fehler, dass die Ausdrücke nicht gefunden werden, da sie ja auch noch nicht geladen sind.
Interessant hierbei ist, wenn ich das Journal beende, lädt das Bauteil fertig und es werden auf einmal alle Ausdrücke angezeigt.

Hat hierfür vielleicht jemand einen Lösung bzw. eine Idee woran dies liegen kann?
Und wie sorge ich dafür, dass beim Öffnen der dazugehörigen Form, die Startseite automatisch geschlossen wird?


Code:

Option Strict Off

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

Module NXJournal
    Public sess As Session = Session.GetSession
    Sub Main(ByVal args() As String)
        Dim UndoM As Session.UndoMarkId = sess.SetUndoMark(Session.MarkVisibility.Visible, "-")
        Dim MForm As New Form1
        Dim Schwa_Form As New Form2
        MForm.ShowDialog()
        Dim theSession As Session = Session.GetSession()


    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

    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.Button_Schaft = New System.Windows.Forms.Button()
        Me.Button_Rund = New System.Windows.Forms.Button()
        Me.Button_Schwa = New System.Windows.Forms.Button()
        Me.SuspendLayout()
        '
        'Button_Schaft
        '
        Me.Button_Schaft.Location = New System.Drawing.Point(128, 37)
        Me.Button_Schaft.Name = "Button_Schaft"
        Me.Button_Schaft.Size = New System.Drawing.Size(75, 23)
        Me.Button_Schaft.TabIndex = 0
        Me.Button_Schaft.Text = "Schafthalter"
        Me.Button_Schaft.UseVisualStyleBackColor = True
        '
        'Button_Rund
        '
        Me.Button_Rund.Location = New System.Drawing.Point(209, 37)
        Me.Button_Rund.Name = "Button_Rund"
        Me.Button_Rund.Size = New System.Drawing.Size(97, 23)
        Me.Button_Rund.TabIndex = 0
        Me.Button_Rund.Text = "Rundhalter"
        Me.Button_Rund.UseVisualStyleBackColor = True
        '
        'Button_Schwa
        '
        Me.Button_Schwa.Location = New System.Drawing.Point(12, 37)
        Me.Button_Schwa.Name = "Button_Schwa"
        Me.Button_Schwa.Size = New System.Drawing.Size(110, 23)
        Me.Button_Schwa.TabIndex = 0
        Me.Button_Schwa.Text = "Schwalbenschwanz"
        Me.Button_Schwa.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(344, 121)
        Me.Controls.Add(Me.Button_Schwa)
        Me.Controls.Add(Me.Button_Rund)
        Me.Controls.Add(Me.Button_Schaft)
        Me.Name = "Form1"
        Me.Text = "Form1"
        Me.ResumeLayout(False)

    End Sub

    Friend WithEvents Button_Schaft As System.Windows.Forms.Button
    Friend WithEvents Button_Rund As System.Windows.Forms.Button
    Friend WithEvents Button_Schwa As System.Windows.Forms.Button

    Private Sub Button_Schwa_Click(sender As Object, e As EventArgs) Handles Button_Schwa.Click
        Dim theSession As NXOpen.Session = NXOpen.Session.GetSession()
        Dim workPart As NXOpen.Part = theSession.Parts.Work
        Dim markId1 As Session.UndoMarkId
        Dim basePart1 As BasePart
        Dim partLoadStatus1 As PartLoadStatus
        basePart1 = theSession.Parts.OpenBaseDisplay("C:\XXXXXX.prt", partLoadStatus1)

        Dim displayPart As Part = theSession.Parts.Display

        'partLoadStatus1.Dispose()
        'markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Enter Gateway")
        '
        'Dim markId2 As Session.UndoMarkId
        '
        'markId2 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Enter Modeling")

        markId1 = theSession.SetUndoMark(Session.MarkVisibility.Invisible, "Open Component Fully")

        Dim markId2 As Session.UndoMarkId
        markId2 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Open Component")

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


        Dim Schwa_Form As New Form2
        Schwa_Form.ShowDialog()

    End Sub

End Class

################
Hier kommt dann noch die Form2, Eigenständig, funktioniert sie wenn das Bauteil manuell geladen wurde. Also hier liegt der Fehler nicht.
################


Danke

mit freundliche Grüßen
Tobias

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: 28. Okt. 2018 11: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 Tobias3107 10 Unities + Antwort hilfreich

Ohne Anpassung in Deinem Code gelten die LoadOptions der Session. Diese sehen vermutlich ein "Partial Loading" vor.

Abhilfe: PartialLoading für diese Aktion abschalten. Weiterhin besitzt das Part eine Eigenschaft welche den Ladezustand verrät. Ggf. muß man hier nochmal "nachladen".

Code:

Dim theSession As NXOpen.Session = NXOpen.Session.GetSession()
Dim sessionPartLoadStatus as Boolean = theSession.Parts.LoadOptions.UsePartialLoading 'alten Zustand speichern
theSession.Parts.LoadOptions.UsePartialLoading = false
Dim workPart As NXOpen.Part = theSession.Parts.Work
Dim markId1 As Session.UndoMarkId
Dim basePart1 As BasePart
Dim partLoadStatus1 As PartLoadStatus

basePart1 = theSession.Parts.OpenBaseDisplay("C:\XXXXXX.prt", partLoadStatus1)
If Not basePart1.IsFullyLoaded() Then basePart1.LoadFully()

'weiterer Code


'gewöhnliche Einstellung wiederherstellen
theSession.Parts.LoadOptions.UsePartialLoading = sessionPartLoadStatus



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



Ausbildung zum Technischen Systemplaner (m/w/d)

Interessante Aufgaben, spannende Projekte an nicht ganz all­täglichen Orten, eine inter­natio­nale Kultur und Technik auf dem neuesten Stand erwartet Dich bei AERIUS Marine. Als Zulie­ferer für Schiffs­betriebs­systeme und -technik in den Bereichen Klima/Lüftung, Rohrbau, Kälte­tech­nik und Brand­schutz sind wir rund um den Globus aktiv. Unsere mittel­ständische Organi­sation an Stand­orten in Deutschland, ...

Anzeige ansehenTechnischer Zeichner, Bauzeichner
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: 29. Okt. 2018 15:53    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 deine Antwort! Hat geklappt 

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