Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Layer von Objekt abfragen

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:  Layer von Objekt abfragen (1616 mal gelesen)
pleudel
Mitglied
Projektleiterin


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

Beiträge: 156
Registriert: 28.11.2011

Windows 7
UG NX 10 (auch Daimler)
Visual Basic 2013 Express
Programmierung in NX und ProE/Creo

erstellt am: 08. Aug. 2012 07:48    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 zusammen,

ich habe mich schon dumm und dusselig gesucht hier im Forum. 

Ich hoffe ich habe nichts übersehen, aber ich finde einfach keinen Hinweis dafür, wie ich von einem beliebigen Objekt (in meinem Fall eine verbundene Skizze) den Layer abfrage, auf dem es liegt.

Hat jemand von euch einen Ansatz oder eine Lösung dafür?

Danke schonmal für eure Hilfe!

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

Sirus
Ehrenmitglied
CAD Applikationsentwickler


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

Beiträge: 1564
Registriert: 03.06.2004

erstellt am: 08. Aug. 2012 09: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 pleudel 10 Unities + Antwort hilfreich

hallo pleudel

hier ein programm....

----------------------------

Imports System
Imports NXOpen
Imports NXOpenUI

Module report_selected_object_type_and_subtype

    Sub Main()
        Dim s As Session = Session.GetSession()
        Dim selobj As DisplayableObject = Nothing
        Dim lw As ListingWindow = s.ListingWindow

        While select_anything(selobj) = Selection.Response.Ok
            lw.Open()
            lw.WriteLine("Object: " & selobj.ToString() & _
                    " is on layer " & selobj.Layer.ToString)
        End While
    End Sub

    Function select_anything(ByRef selobj As NXObject) As Selection.Response

        Dim theUI As UI = ui.GetUI
        Dim cursor As Point3d
        Dim typeArray() As Selection.SelectionType = _
            {Selection.SelectionType.All, _
                Selection.SelectionType.Faces, _
                Selection.SelectionType.Edges}

        Dim resp As Selection.Response = theUI.SelectionManager.SelectObject( _
                "Select anything", "Select an object", _
                Selection.SelectionScope.AnyInAssembly, _
                False, typeArray, selobj, 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

------------------
gruss urs 

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

pleudel
Mitglied
Projektleiterin


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

Beiträge: 156
Registriert: 28.11.2011

Windows 7
UG NX 10 (auch Daimler)
Visual Basic 2013 Express
Programmierung in NX und ProE/Creo

erstellt am: 08. Aug. 2012 12:09    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,

SUUUUPER =) Danke schön!
Funktioniert einwandfrei.

Zusammengefasst, für alle die auch danach suchen:

Wenn man den Layer von einem Objekt abfragen will, muss man ein "DisplayableObject" deklaarieren,
dieses hat dann die "Eigenschaft" .Layer!

Beispiel:

              Dim alle_Skizzen As SketchCollection = workPart.Sketches

              For Each Skizze As DisplayableObject In alle_Skizzen
                          If Skizze.Layer = 1 Then
                              ..............................
                          End If
              Next

Hier werden alle Skizzen durchgegangen und der Layer abgefragt. Wenn sie auf Layer 1 liegt, ....

Ich hoffe damit wird dem ein oder anderen auch geholfen!

Viel Dank nochmal für die schnelle Antwort!
 


PS: Unities sind unterwegs 

[Diese Nachricht wurde von pleudel am 08. Aug. 2012 editiert.]

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

hg-obdf
Mitglied
Konstrukteur


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

Beiträge: 78
Registriert: 30.07.2008

NX7.5
Visual Basic 2010 Express
Eclipse

erstellt am: 08. Aug. 2012 13:47    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 pleudel 10 Unities + Antwort hilfreich

Hallo-
kann man auch noch beliebig erweitern auf Datums, LinkedSketches, LinkedDatums, etc.

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

Sirus
Ehrenmitglied
CAD Applikationsentwickler


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

Beiträge: 1564
Registriert: 03.06.2004

erstellt am: 08. Aug. 2012 14:18    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 pleudel 10 Unities + Antwort hilfreich

hallo pleudel

bitte, ich habe jedoch gedacht du suchst nach "einem beliebigen Objekt".

für skizzen, bezüge, usw. gibt es sicher noch andere programe...

was ist genau dein ziel?
es gibt auch programme die objekte (skiizen, bezüge, ...) auf vordefinierte layer legen,
evtl. ist da ja dein ziel?

------------------
gruss urs 

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

pleudel
Mitglied
Projektleiterin


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

Beiträge: 156
Registriert: 28.11.2011

Windows 7
UG NX 10 (auch Daimler)
Visual Basic 2013 Express
Programmierung in NX und ProE/Creo

erstellt am: 08. Aug. 2012 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

Hallo,

richtig, das ist mein Ziel ^^
Das mit dem "beliebigen" Objekt hätte ich vielleicht konkreter ausdrücken müssen,
mir ging es einfach nur um die Info, auf welchem Layer sich die Skizzen befinden.
In diesem Fall nur Skizzen, klar, die kann ich ja dann durch alles andere ersetzen, die Abfrage .Layer bleibt ja gleich,

In meinem Fall möchte ich verbundene Skizzen, die sich von selbst wieder auf Layer 1 verschoben haben (manchmal tun die das ganz von allein, kennt ihr das?), alle packen und auf einen anderen Layer schieben.
Dafür gehe ich alle verbundenen Skizzen durch und wenn sie auf Layer 1 liegt, werden sie verschoben.


Viele Grüße...

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

Sirus
Ehrenmitglied
CAD Applikationsentwickler


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

Beiträge: 1564
Registriert: 03.06.2004

erstellt am: 08. Aug. 2012 16:05    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 pleudel 10 Unities + Antwort hilfreich

...ja, das verschieben auf layer 1 kommt von "interne auf externe" skizze wechseln!

------------------
gruss urs 

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



Konstrukteur (m/w/d) Sondermaschinenbau
Technologien auf das nächste Level zu heben, sich Herausforderungen zu stellen und an den Innovationen von morgen zu arbeiten - dafür benötigen wir bei FERCHAU Expert:innen wie dich: als ambitionierte:r Kolleg:innen, der:die wie wir Technologien auf die nächste Stufe bringen möchten. Wir realisieren spannende Projekte für namhafte Kunden des Maschinenbaus und übernehmen Verantwortung für komplexe Entwicklungsprojekte....
Anzeige ansehenMaschinenbau
Sirus
Ehrenmitglied
CAD Applikationsentwickler


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

Beiträge: 1564
Registriert: 03.06.2004

SolidWorks2022

erstellt am: 08. Aug. 2012 16:17    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 pleudel 10 Unities + Antwort hilfreich

oder so....


Dim theSession As Session = Session.GetSession()
Dim workpart As Part = theSession.Parts.Work()
Dim objArray(0) As DisplayableObject
Dim displayPart As Part = theSession.Parts.Display
Dim theUI As UI = UI.GetUI()

' ----- Verschieben der Skizzen auf def. Layer

Dim layer_sketches As String = 10

For Each obj As DisplayableObject In workpart.Sketches
If Not obj.IsBlanked AndAlso workpart.Layers.GetState(obj.Layer) <> Layer.State.Hidden Then
objArray(0) = obj
workpart.Layers.MoveDisplayableObjects(Val(layer_sketches), objArray)
End If
Next

------------------
gruss urs 

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