Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Auswahldialog steuern: Objekte zulassen

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:  Auswahldialog steuern: Objekte zulassen (1697 mal gelesen)
Mat000
Mitglied



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

Beiträge: 11
Registriert: 18.09.2008

NX 5.0.6
VB .net (Visual Studio 2005 Version 8.0.50727.42)

erstellt am: 18. Sep. 2008 15:31    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

NX 5.0.4.1
VB .net (Visual Studio 2005 Version 8.0.50727.42)
------------------

Hallo,

ich stehe vor dem Problem, dass ich einen Auswahldialog steuern möchte und dort nur das "Kurvenformelement" (Curve Feature) zulassen möchte. Weiß jemand, welche UFConstants-Werte man dafür bei UFUi.Mask einstellt? Und wo könnte ich diese Information (Zuordnung zwischen UFConstants und Objektklasse) selbst nachschlagen?

Danke und Gruß, Mat

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

älg
Mitglied
CADmin


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

Beiträge: 403
Registriert: 17.06.2003

erstellt am: 19. Sep. 2008 07:57    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 Mat000 10 Unities + Antwort hilfreich

Herzlich willkommen im Forum !
Die .NET API Reference verweist auf uf_object_types.h, ergo siehe die gute alte C-Bibliothek.
Beispiele in C zeigen für curves die Auswahl von
- UF_line_type
- UF_circle_type
- UF_conic_type
- UF_spline_type
,
jeweils ohne subtype.

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

Mat000
Mitglied



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

Beiträge: 11
Registriert: 18.09.2008

NX 5.0.6
VB .net (Visual Studio 2005 Version 8.0.50727.42)

erstellt am: 19. Sep. 2008 08:14    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 Begrüßung und die Antwort, älg!

Den unten angeführten Code habe ich natürlich schon ausprobiert, er steht ja im Forum. Leider erhalte ich damit nur "Kurve"/"Curve" und nicht "Kurvenformelement"/"Curve Feature", das hilft mir also nicht. Findet sich im Header tatsächlich die Zuordnung zur Objektklasse? Ich kann dies nämlich nicht entdecken...

Code:
        ' Auswahl auf Kurve/Curve

        Dim num_triples As Integer = 4
        Dim mask_triples(num_triples) As UFUi.Mask

        mask_triples(0).object_type = UFConstants.UF_line_type
        mask_triples(0).object_subtype = UFConstants.UF_all_subtype
        mask_triples(0).solid_type = -1
        mask_triples(1).object_type = UFConstants.UF_circle_type
        mask_triples(1).object_subtype = UFConstants.UF_all_subtype
        mask_triples(1).solid_type = -1
        mask_triples(2).object_type = UFConstants.UF_conic_type
        mask_triples(2).object_subtype = UFConstants.UF_all_subtype
        mask_triples(2).solid_type = -1
        mask_triples(3).object_type = UFConstants.UF_spline_type
        mask_triples(3).object_subtype = UFConstants.UF_all_subtype
        mask_triples(3).solid_type = -1


------------------
Gruß, Mat

[Diese Nachricht wurde von Mat000 am 24. Sep. 2008 editiert.]

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

Mat000
Mitglied



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

Beiträge: 11
Registriert: 18.09.2008

NX 5.0.6
VB .net (Visual Studio 2005 Version 8.0.50727.42)

erstellt am: 19. Sep. 2008 09:27    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

Nahe liegend wäre
Code:
mask_triples(0).object_type = UFConstants.UF_feature_type
mask_triples(0).object_subtype = UFConstants.UF_feature_subtype
mask_triples(0).solid_type = -1


aber da stützt der Dialog und die Benutzeroberfläche  gleich mit ab...

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

älg
Mitglied
CADmin


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

Beiträge: 403
Registriert: 17.06.2003

erstellt am: 19. Sep. 2008 09: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 Nur für Mat000 10 Unities + Antwort hilfreich

Ja, die Unterscheidung 'Curve'/'Curve Feature' habe ich der Einfachheit halber unterschlagen.
'Curve Feature' (wie z.B. 'TRIM_CURVE') ist m.E. nicht mit mask_triples maskierbar, da nicht als subtype definiert.
Da hilft wohl nur, nach einer Selektion den Featuretyp abzufragen und mit der Vorgabe zu vergleichen.

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

Mat000
Mitglied



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

Beiträge: 11
Registriert: 18.09.2008

NX 5.0.6
VB .net (Visual Studio 2005 Version 8.0.50727.42)

erstellt am: 19. Sep. 2008 09:59    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

Dann darauf die nahe liegende Frage: Mit welchen Parametern erstelle ich den Auswahl-Dialog, so dass "Curve Feature" ausgewählt werden kann? Kann man einen Dialog erstellen, der keinen Filter besitzt, also die Grundeinstellungen der Benutzeroberfläche übernimmt? Dort ist "Curve Feature" ja enthalten. Meine Versuche, keinen Filter zu setzen mit
Code:
ufs.Ui.SelectWithClassDialog(message, title, scope, Nothing, Nothing, sel_resp, cnt, obj)
oder
Code:
ufs.Ui.SetSelMask(select_, UFUi.SelMaskAction.SelMaskAllAndDisableSpecific, 0, Nothing)
führten zu Fehlern (Absturz des UI) oder bei
Code:
ufs.Ui.SetSelMask(select_, UFUi.SelMaskAction.SelMaskEnableAll, 0, Nothing)
keiner Anzeige von "Curve Feature".

------------------
Gruß, Mat

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

älg
Mitglied
CADmin


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

Beiträge: 403
Registriert: 17.06.2003

erstellt am: 19. Sep. 2008 10:22    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 Mat000 10 Unities + Antwort hilfreich

Da muß ich passen - das wird zu detailliert.
Funktionieren sollte eigentlich auch ohne den Umweg über die alten Funktionen etwas wie
Code:
theUI.selectionManager().selectObject(...)

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

Overcast
Mitglied



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

Beiträge: 111
Registriert: 21.12.2005

.

erstellt am: 24. Sep. 2008 13:22    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 Mat000 10 Unities + Antwort hilfreich

Die Auswahlmaske muss für Features gesetzt werden.
Danach prüft man lediglich den Feature Type, der als String vorliegt.

Beispiel in C#:

Code:

using System;
using NXOpen;
using NXOpen.Features;
using NXOpen.UF;

public class Program
{
    // class members
    private static Session theSession;
    private static UI theUI;
    private static UFSession theUfSession;
    private static ListingWindow lw;

    public static Feature select_feature()
    {
        NXObject selobj;
        Point3d cursor;
        Selection.SelectionType[] typeArray = { Selection.SelectionType.Features };

        Selection.Response resp = theUI.SelectionManager.SelectObject("Select feature", "Select feature",
                   Selection.SelectionScope.WorkPart, false, typeArray, out selobj, out cursor);

        if (resp == Selection.Response.ObjectSelected | |
                resp == Selection.Response.ObjectSelectedByName)
        {
            return (Feature)selobj;
        }
        else
            return null;
    }

    public static int Main(string[] args)
    {
        theSession = Session.GetSession();
        theUI = UI.GetUI();
        theUfSession = UFSession.GetUFSession();
        Part workPart = theSession.Parts.Work;
        lw = theSession.ListingWindow;
        lw.Open();

        Feature feat;
        while( (feat=select_feature()) != null )
        {
            lw.WriteLine("\nFeature tag : " + feat.Tag.ToString() +
                         "   Feature type: " + feat.FeatureType +
                         "   Feature name: " + feat.Name);
            if( feat.FeatureType != "SPLINE" )
                lw.WriteLine("Das ist kein Spline...nochmal bitte!");
            else
                lw.WriteLine("Hurra, ein Klavier!");
        }

        return 0;
    }

    public static int GetUnloadOption(string arg)
    {
        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
    }

}


Gruss,
Frank.

[Diese Nachricht wurde von Overcast am 24. Sep. 2008 editiert.]

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

Overcast
Mitglied



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

Beiträge: 111
Registriert: 21.12.2005

.

erstellt am: 24. Sep. 2008 14:01    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 Mat000 10 Unities + Antwort hilfreich

Und das gleiche nochmal als VB konvertiert:

Code:

Imports System
Imports NXOpen
Imports NXOpen.Features
Imports NXOpen.UF
Public Class Program
   
    ' class members
    Private Shared theSession As Session
    Private Shared theUI As UI
    Private Shared theUfSession As UFSession
    Private Shared lw As ListingWindow
   
    Public Shared Function select_feature(ByRef feat As Feature) As Selection.Response
        Dim selobj As NXObject
        Dim cursor As Point3d
        Dim typeArray() As Selection.SelectionType = _
        { Selection.SelectionType.Features }
       
        Dim resp As Selection.Response = theUI.SelectionManager.SelectObject("Select feature", _
            "Select feature", Selection.SelectionScope.WorkPart, false, typeArray, selobj, cursor)
        If ((resp = Selection.Response.ObjectSelected)  _
                    OrElse (resp = Selection.Response.ObjectSelectedByName)) Then
            feat = CType(selobj,Feature)
            Return Selection.Response.Ok
        Else
            Return Selection.Response.Cancel
        End If
    End Function
   
    Public Shared Function Main(ByVal args() As String) As Integer
        theSession = Session.GetSession
        theUI = UI.GetUI
        theUfSession = UFSession.GetUFSession
        Dim workPart As Part = theSession.Parts.Work
        lw = theSession.ListingWindow
        lw.Open
        Dim feat As Feature
       
        While select_feature(feat) = Selection.Response.Ok
            lw.WriteLine("Feature tag :" & feat.Tag.ToString _
                          & "  Feature type: " & feat.FeatureType _
                          & "  Feature name: " + feat.Name)
            If (feat.FeatureType <> "SPLINE") Then
                lw.WriteLine("Das ist kein Spline...nochmal bitte!")
            Else
                lw.WriteLine("Hurra, ein Klavier!")
            End If
        End While
        Return 0

    End Function
   
    Public Shared Function GetUnloadOption(ByVal arg As String) As Integer
        Return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately)
    End Function
End Class


Alternativ könnte man zur Selektion auch die folgende Methode verwenden:

Code:

NXOpen ► Selection ► SelectFeatures

Public Function SelectFeatures ( _
message As String, _
featType As Selection.SelectionFeatureType, _
<OutAttribute> ByRef featureArray As Feature() _
) As Selection.Response


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

Mat000
Mitglied



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

Beiträge: 11
Registriert: 18.09.2008

NX 5.0.6
VB .net (Visual Studio 2005 Version 8.0.50727.42)

erstellt am: 24. Sep. 2008 15:10    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, mit der kleinen Änderung:
Code:
[...]
If (feat.FeatureType <> "SECTION_CURVES") Then
                lw.WriteLine("Das ist keine Schnittkurve... nochmal bitte!")
[...]

ist es genau das, was ich gesucht habe.

------------------
Gruß, Mat

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: 24. Sep. 2008 18:03    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 Mat000 10 Unities + Antwort hilfreich


select_feature.vb.txt

 
... und noch ein Vorschlag.

Gruß, Michael

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



Produkt- und Werkzeugkonstrukteur (m/w/d)

Die Duran Produktions GmbH & Co. KG ist ein Unternehmen der DURAN-WHEATON-KIMBLE Firmengruppe. Diese ist der global führende Hersteller von Laborglas sowie hitzebeständigen Consumer Glasprodukten. Die Marken DURAN®, WHEATON® und KIMBLE® stehen für hochwertige, sichere und innovative Produkte sowie für zuverlässige Logistik. Unsere weltweit bekannten Gläser produzieren wir an 13 Standorten in Europa, Amerika und Asien....

Anzeige ansehenKonstruktion, Visualisierung
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. Okt. 2008 13:46    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 Mat000 10 Unities + Antwort hilfreich


get_masks_from_uf_object_types.zip

 
Hallo zusammen,

zur übersichtlichen Darstellung der Objekttypen oder zur Suche nach bestimmten Einträgen anbei ein kleines Tool.

Gruß, Michael

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