| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX | | |  | Solid Edge 2025 First Look Online-Event 14.11.2025, eine Pressemitteilung
|
Autor
|
Thema: Journal aus Journal starten (1893 mal gelesen)
|
Kaichi Mitglied

 Beiträge: 26 Registriert: 07.11.2013 NX 8.5.2.3 Catia V5R19
|
erstellt am: 02. Dez. 2013 13:35 <-- editieren / zitieren --> Unities abgeben:         
Hi Zusammen, ich habe ein fertiges Journal dass nach einem Punkt fragt und nach Benutzereingabe (Auswahl eines Punktes im Grafikbereich durch den Benutzer) einen weiteren Punkt assoziativ darauf erstellt. Außerdem habe ich ein Journal dass eine Windows-Form öffnet. In der Form ist ein Button. Bei drücken des Buttons soll die Punkterfassung gestartet werden. Genau das funktioniert aber leider nicht. Setze ich die beiden Codes folgendermaßen zusammen öffnet sich zwar die Punkterfassung aber ich kann keine Eingabe machen. NX hängt sich einfach auf.
Code: [...] Private Sub Specify_Point_Click(sender As Object, e As EventArgs) Handles Specify_Point.Click Dim theSession As Session = Session.GetSession() Dim workPart As Part = theSession.Parts.Work Dim displayPart As Part = theSession.Parts.Display Dim ufs As UFSession = UFSession.GetUFSession() Dim response2 As Selection.Response = Nothing Dim pnt2() As Double = {0.0, 0.0, 0.0} Dim selectedObjects() As NXObject response2 = select_a_Point(selectedObjects) response2 = Selection.Response.Cancel Dim sda As Point For Each sda In selectedObjects ufs.Curve.AskPointData(sda.Tag, pnt2) MsgBox("Point specified" & vbNewLine & _ "X=" & pnt2(0) & " Y=" & pnt2(1) & " Z="& pnt2(2)) Dim nullXform As Xform = Nothing Dim test_point As Point test_point = workPart.Points.CreatePoint(sda, nullXform, SmartObject.UpdateOption.WithinModeling) test_point.SetVisibility(SmartObject.VisibilityOption.Visible) Dim nullFeatures_Feature As Features.Feature = Nothing Dim pointFeatureBuilder1 As Features.PointFeatureBuilder pointFeatureBuilder1 = workPart.BaseFeatures.CreatePointFeatureBuilder(nullFeatures_Feature) pointFeatureBuilder1.Point = test_point Dim nXObject1 As NXObject nXObject1 = pointFeatureBuilder1.Commit() Dim Name_test_point as string = "TEST_POINT" nxObject1.SetName(Name_test_point) pointFeatureBuilder1.Destroy() Next End Sub
Function select_a_Point(ByRef selectedObjects As NXObject()) Dim ui As UI = ui.GetUI() Dim mask(0) As Selection.MaskTriple With mask(0) .Type = UFConstants.UF_point_type .Subtype = UFConstants.UF_point_subtype .SolidBodySubtype = 0 End With Dim resp As Selection.Response = _ ui.SelectionManager.SelectObjects("Specify Point", "Specify Point", _ Selection.SelectionScope.AnyInAssembly, _ Selection.SelectionAction.ClearAndEnableSpecific, _ False, False, mask, selectedObjects) End Function [...]
Unabhängig voneinander funktionieren beide Journals wie gewünscht. Hat jemand eine Idee wie man das geschickt lösen könnte? Danke und Gruß Kai
[Diese Nachricht wurde von Kaichi am 02. Dez. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kaichi Mitglied

 Beiträge: 26 Registriert: 07.11.2013 NX 8.5.2.3 Catia V5R19
|
erstellt am: 05. Dez. 2013 15:26 <-- editieren / zitieren --> Unities abgeben:         
Ich versuchs nochmal anders zu beschreiben. Das ist ein fertiges Journal: Code: Option Strict Off Imports System Imports NXOpen Imports NXOpen.UFModule Create_Associative_Point_on_Point Sub Main() Dim theSession As Session = Session.GetSession() Dim workPart As Part = theSession.Parts.Work Dim displayPart As Part = theSession.Parts.Display Dim ufs As UFSession = UFSession.GetUFSession() Dim response2 As Selection.Response = Nothing Dim pnt2() As Double = {0.0, 0.0, 0.0} Dim selectedObjects() As NXObject response2 = select_a_Point(selectedObjects) response2 = Selection.Response.Cancel Dim sda As Point For Each sda In selectedObjects ufs.Curve.AskPointData(sda.Tag, pnt2) MsgBox("Point specified" & vbNewLine & _ "X=" & pnt2(0) & " Y=" & pnt2(1) & " Z="& pnt2(2)) Dim nullXform As Xform = Nothing Dim test_point As Point test_point = workPart.Points.CreatePoint(sda, nullXform, SmartObject.UpdateOption.WithinModeling) test_point.SetVisibility(SmartObject.VisibilityOption.Visible) Dim nullFeatures_Feature As Features.Feature = Nothing Dim pointFeatureBuilder1 As Features.PointFeatureBuilder pointFeatureBuilder1 = workPart.BaseFeatures.CreatePointFeatureBuilder(nullFeatures_Feature) pointFeatureBuilder1.Point = test_point Dim nXObject1 As NXObject nXObject1 = pointFeatureBuilder1.Commit() Dim Name_test_point as string = "TEST_POINT" nxObject1.SetName(Name_test_point) pointFeatureBuilder1.Destroy() Next End Sub
Function select_a_Point(ByRef selectedObjects As NXObject()) Dim ui As UI = ui.GetUI() Dim mask(0) As Selection.MaskTriple With mask(0) .Type = UFConstants.UF_point_type .Subtype = UFConstants.UF_point_subtype .SolidBodySubtype = 0 End With Dim resp As Selection.Response = _ ui.SelectionManager.SelectObjects("Specify Point", "Specify Point", _ Selection.SelectionScope.AnyInAssembly, _ Selection.SelectionAction.ClearAndEnableSpecific, _ False, False, mask, selectedObjects) End Function End Module
Es fragt den Benutzer nach einem Punkt und erzeugt dann auf diesem Punkt einen neuen Punkt. Ich möchte dass dieses Journal über einen Button in einer Windows Form gestartet wird. Also zum Beispiel so: 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.DrawingsModule Module1 Dim theSession As Session = Session.GetSession() Public workPart As Part = theSession.Parts.Work Sub Main()
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 Private Sub Specify_Point_Click(sender As Object, e As EventArgs) Handles Specify_Point.Click 'Journal zur Punkterzeugung (siehe oben) startet End Sub End Class
Füge ich den Code aber einfach ein öffnet sich zwar das Fenster zur Punkterfassung (Journal siehe ganz oben) aber "aktiv" bleibt die Windows Form (Journal weiter unten). Ich kann die Buttons in der Windows Form drücken allerdings nicht die Buttons in der Punkterfassung. Ich denke also es fehlt irgendwie der Befehl der das "aktive Fenster" wechselt? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
jo.sch Mitglied

 Beiträge: 66 Registriert: 29.01.2013 NX7.5.5.4 MP2 NX8.5.3.3 SAP PLM mit Ectr
|
erstellt am: 09. Dez. 2013 08:04 <-- editieren / zitieren --> Unities abgeben:          Nur für Kaichi
Nur als schneller Tipp, wonach du suchen könntest. Es gibt modale und nicht modale Fenster. Dialoge sind IIRC immer modal. modal heißt, ich bin immer Vordergrund und muss erst "abgearbeitet" oder geschlossen werden, bis andere Fenster berücksichtigt werden können. Du müsstest also schauen, ob du dein Fenster "nicht modal" (kein Dialog) hinbekommst. Ob das mit NX/Open und Journal möglich ist weiß ich leider nicht... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |