Hallo,
bei mir hat folgendes funktioniert:
Option Strict Off
Imports System.Collections
Imports NXOpen
Module NXJournal
Dim theSession As Session = Session.GetSession
Dim WP As Part = theSession.Parts.Work
Sub Main()
' alle Layer selektierbar
Dim stateCollection0 As NXOpen.Layer.StateCollection
stateCollection0 = WP.Layers.GetStates()
Dim category0 As NXOpen.Layer.Category = CType(WP.LayerCategories.FindObject("ALL"), NXOpen.Layer.Category)
stateCollection0.SetStateOfCategory(category0, NXOpen.Layer.State.Selectable)
WP.Layers.SetStates(stateCollection0, False)
stateCollection0.Dispose()
Dim objarray0() As DisplayableObject
Dim objList As ArrayList = New ArrayList
For ii As Integer = 1 To 256
Dim objs As NXObject() = WP.Layers.GetAllObjectsOnLayer(ii)
For Each an_obj As DisplayableObject In objs
If an_obj.ToString.StartsWith("Face") = False AndAlso an_obj.ToString.StartsWith("Edge") = False Then
objList.Add(an_obj)
End If
Next
Next
objarray0 = objList.ToArray(GetType(DisplayableObject))
' alle DisplayableObjects in Liste auf Layer 1
WP.Layers.MoveDisplayableObjects(1, objarray0)
' alle Layer unsichtbar
Dim stateCollection1 As NXOpen.Layer.StateCollection
stateCollection1 = WP.Layers.GetStates()
Dim category1 As NXOpen.Layer.Category = CType(WP.LayerCategories.FindObject("ALL"), NXOpen.Layer.Category)
stateCollection1.SetStateOfCategory(category1, NXOpen.Layer.State.Hidden)
WP.Layers.SetStates(stateCollection1, False)
stateCollection1.Dispose()
End Sub
Public Function GetUnloadOption(ByVal dummy As String) As Integer
Return Session.LibraryUnloadOption.Immediately
End Function
End Module
Allerdings scheinen Flächen und Kanten ebenfalls zu den DisplayableObjects zu gehören. Diese können nicht auf einen Layer verschoben werden.
Die Zeile If an_obj.ToString.StartsWith("Face") = False AndAlso an_obj.ToString.StartsWith("Edge") = False Then scheint mir nicht so elegant.
Vielleicht gibt es hier andere Lösungen. Aber es funzt.
Gruß Thorsten
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP