| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Flächenkörper auswählen (2238 mal gelesen)
|
little_ug Mitglied CAX/PDM Admin / PM
Beiträge: 389 Registriert: 20.03.2003
|
erstellt am: 30. Okt. 2008 11:55 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, hat jemand eine Idee wie ich flächenkörper finden kann (am besten mit C, oder C++, es geht auch vb.net) Finde nur UF_solid_type und dort gibt es dann nur properties aber über kann ich ja schlecht selektieren oder? UF_OBJ_sheet_body_property Danke ------------------ Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Maikx Mitglied
Beiträge: 43 Registriert: 28.08.2008 UG NX4
|
erstellt am: 30. Okt. 2008 12:58 <-- editieren / zitieren --> Unities abgeben: Nur für little_ug
|
little_ug Mitglied CAX/PDM Admin / PM
Beiträge: 389 Registriert: 20.03.2003
|
erstellt am: 30. Okt. 2008 14:07 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank, aber für meine zwecke leider nicht. Ich denke in diesem Programm wählt man eine Planare Fläche eines Körpers aus. Ich suche ja Flächenkörper im ganzen modell. ------------------ Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Maikx Mitglied
Beiträge: 43 Registriert: 28.08.2008 UG NX4
|
erstellt am: 30. Okt. 2008 16:30 <-- editieren / zitieren --> Unities abgeben: Nur für little_ug
|
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 3D Printer Prusa MK2 S
|
erstellt am: 30. Okt. 2008 17:07 <-- editieren / zitieren --> Unities abgeben: Nur für little_ug
Hallo Michael, hast Du's schon mal mit der Funktion SelectObject(s) versucht ? (NXOpen>SelectionManager) Darin kannst Du anstatt der Mask über den SelectionType filtern, und da gibt's z.B. das Face als Typ. Wenn Du dennoch eine Mask verwenden willst, kannst Du die einzelnen Flächentypen in die Mask reinpacken (Cylinder, Sphere, Bsurface etc. ). Die sind laut Doku aber i.d.R. obsolete. Eine andere suboptimale Alternative ist über Type 70 (Solid) und Subtype 2 (Face) zu gehen. Ein ähnliches Thema gab's hier http://ww3.cad.de/foren/ubb/Forum442/HTML/000351.shtml schon mal. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
little_ug Mitglied CAX/PDM Admin / PM
Beiträge: 389 Registriert: 20.03.2003
|
erstellt am: 31. Okt. 2008 08:56 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, Danke für die Info. Genau das veruche ich ja über Types und Suptypes hinzubekommen. Das Problem ist nur dass ich zwar Fläche habe aber das bedeutet alle Flächen also auch die jenigen welche zu einem Volumen gehören. Ich will aber nur Flächenkörper haben und das finde ich nicht als type. Aber dein Tool mit den Types ist super, ich hab mir auch immer den Wolf gesucht für die types. Danke, ------------------ Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 3D Printer Prusa MK2 S
|
erstellt am: 31. Okt. 2008 14:47 <-- editieren / zitieren --> Unities abgeben: Nur für little_ug
Hallo Michael, da bin ich mal skeptisch, ob so detailliertes Filtern mit der API überhaupt möglich ist. Interaktiv wär's einfach, da gibt's ja den SheetBody. Daß die Objekttypen (interaktiv/ per API) nicht einheitlich sind, ist schon echt sch ... ade. Wär mal eine Frage an UGS wert, warum das so ist und ob's vielleicht irgendwann möglich wird, eine Mask so einzustellen wie in NX. Alternative wäre, vor der Selektion die unerwünschten Objekte aus- und anschließend wieder einzublenden. Oder evtl. UIStyler / BlockStyler verwenden ? Na, jedenfalls mal viel Erfolg bei der weiteren Suche. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mecteg Mitglied Dipl.-Ing.
Beiträge: 13 Registriert: 17.02.2005
|
erstellt am: 01. Nov. 2008 11:50 <-- editieren / zitieren --> Unities abgeben: Nur für little_ug
In C sieht es folgendermaßen aus: (1) Du suchst nach Volumenkörpern: (Selektionsmaske oder Cycle, je nach Programm) Type: UF_solid_type Subtype: UF_solid_body_subtype (2) Diese unterscheidest du anschließend mit: UF_MODL_ask_body_type(...) => UF_MODL_SOLID_BODY oder UF_MODL_SHEET_BODY D.h. die Selektionsmaske entsprechend einstellen und in der Selektionsfunktion noch gezielt ausfiltern. Ich hatte auch erwartet über Type und Subtype da heranzukommen, ist aber leider nicht so. Gruß Thorsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2624 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-1980 3D Printer Prusa MK2 S
|
erstellt am: 03. Nov. 2008 10:36 <-- editieren / zitieren --> Unities abgeben: Nur für little_ug
Mit etwas Vorbereitung ist es möglich, die Selektion für den Anwender so hinzukriegen, als gäb's den SheetBody als Maske. Es müssen einfach alle sichtbaren Solids auf "Visible Only" gesetzt werden, so daß sie nicht selektierbar sind. Also: - Freien Layer suchen, der nicht Worklayer ist - Alle Bodies, die Solid sind (geht beim Type Body u.a. über das Property isSolid bzw. isSheet) da drauf packen. Die Ausgangssituation sollte z.B. in einem Array festgehalten werden. - Den Layer auf visible only setzen - Selektion starten, die Solids sind jetzt nicht zu packen, obwohl sie in der Maske enthalten sind. - Layer zurücksetzen auf seinen ursprünglichen Status. - Solids ebenfalls wieder dahin schieben, wo sie hergekommen sind. - fertig. Das ist zwar etwas mehr zu programmieren, geht aber letztendlich schneller, als die langwierige und möglicherweise erfolglose Suche nach einem passenden Filter bzw. einer Maske. Dafür klappt's dann aus Anwendersicht reibungslos. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sebastian.H Mitglied Dipl.-Inf. Univ.
Beiträge: 1 Registriert: 07.11.2008 NX 5.0.5.3
|
erstellt am: 07. Nov. 2008 20:12 <-- editieren / zitieren --> Unities abgeben: Nur für little_ug
Hallo Michael, wenn ich Dich richtig verstanden habe, dann sollte die folgende VB.NET Prozedur (NX5 Open) Dein Problem lösen: Code:
Sub Main() Dim sn As Session Dim wp As Part Dim bodies As DisplayableObject() sn = Session.GetSession() wp = sn.Parts.Work bodies = wp.Bodies.ToArray For Each body As Body In bodies If body.IsSheetBody Then body.Highlight() End If Next End Sub
Freundliche Grüße Sebastian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Overcast Mitglied
Beiträge: 111 Registriert: 21.12.2005 .
|
erstellt am: 04. Dez. 2008 14:32 <-- editieren / zitieren --> Unities abgeben: Nur für little_ug
Warum setzt Du den Sheet Body nicht direkt in der Selektionsmaske...?! Code:
Option Strict Off Imports System Imports NXOpen Imports NXOpen.UI Imports NXOpen.UFModule report_selected_sheet_body Sub Main Dim theSession As Session = Session.GetSession() Dim lw As ListingWindow = theSession.ListingWindow Dim body As Body = nothing lw.Open() While select_a_sheet_body(body) = Selection.Response.Ok lw.WriteLine("Selected Sheet Body: " & body.ToString()) End While End Sub Function select_a_sheet_body(ByRef obj As Body) Dim ui As UI = GetUI() Dim mask(0) As Selection.MaskTriple With mask(0) .Type = UFConstants.UF_solid_type .Subtype = UFConstants.UF_solid_body_subtype .SolidBodySubtype = UFConstants.UF_UI_SEL_FEATURE_SHEET_BODY End With Dim cursor As Point3d = Nothing Dim resp As Selection.Response = _ ui.SelectionManager.SelectObject("Select a sheet body", "Select a sheet body", _ Selection.SelectionScope.AnyInAssembly, _ Selection.SelectionAction.ClearAndEnableSpecific, _ False, False, mask, obj, cursor) If resp = Selection.Response.ObjectSelected Or _ resp = Selection.Response.ObjectSelectedByName Then return Selection.Response.Ok Else return Selection.Response.Cancel End If End Function End Module
Zum dritten Parameter ist ein Hinweis der Dokumentation hilfreich: Zitat:
NXOpen -> Selection.MaskTriple -> SolidBodySubtypeThis is only meaningful when the type is UF_solid_type. In that case, this should be set to one of the solid type constants listed in uf_ui_types.h under "Constants for selection solid_type". For example, to select any face, use UF_UI_SEL_FEATURE_ANY_FACE in C++ and NXOpen.UF.UFConstants.UF_UI_SEL_FEATURE_ANY_FACE in .NET
Cheers. [Diese Nachricht wurde von Overcast am 04. Dez. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Werkstudent TGA im Bereich Heizungs-, Lüftungs-, Sanitär- und Klimatechnik (m/w/d) | Seit über 40 Jahren stehen wir bei der ZWP Ingenieur-AG für kosten- und ressourcenschonendes Bauen von morgen. Unsere über 400 Mitarbeiter:innen an 8 Standorten setzen mit maßgeschneiderten Lösungen neue und effektive Standards in der umweltgerechten Gebäudetechnik. Wir machen Bürogebäude und Einkaufszentren ebenso wie Museen, Schulen und Kliniken im In- und Ausland fit für die Zukunft ? das eröffnet ... | Anzeige ansehen | Elektrik, Sanitär, Heizung, Klima |
|
little_ug Mitglied CAX/PDM Admin / PM
Beiträge: 389 Registriert: 20.03.2003
|
erstellt am: 04. Dez. 2008 15:06 <-- editieren / zitieren --> Unities abgeben:
|