| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: Journal select Objects und Reference Set ändern (702 / mal gelesen)
|
NXNeuling Mitglied Ingenieur
Beiträge: 8 Registriert: 15.07.2021 NX1963
|
erstellt am: 08. Dez. 2021 15:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, ich stehe vor einem Problem, das ich in einer Baugruppe arbeite in der ich nur für bestimmte Teile immer wieder Reference Sets ändern möchte. z.B. von Reference Set "Entire Part" auf "Routing. Ich habe nun ein Journal im Internet gefunden, mit dem ich alle meine Teile über ein bestimmtes Attribut in meiner Baugruppe selektieren kann. Kann mir einer von euch sagen, wie ich dieses Journal nun um das ändern des Reference Set erweitern kann? Grüße Option Strict Off Imports System Imports System.Collections.Generic Imports NXOpen Imports NXOpen.UF Module Module3 ReadOnly theSession As Session = Session.GetSession() ReadOnly theUfSession As UFSession = UFSession.GetUFSession() ReadOnly theUI As UI = UI.GetUI() Dim lw As ListingWindow = theSession.ListingWindow '********************************************* '* change "TEST" to the desired attribute name Const findAttributeTitle As String = "Katalogteil" '********************************************* Sub Main() If IsNothing(theSession.Parts.BaseWork) Then 'active part required Return End If lw.Open() If IsNothing(theSession.Parts.Display.ComponentAssembly.RootComponent) Then 'no components to process Return End If Dim foundComponents As New List(Of Assemblies.Component) theUI.SelectionManager.ClearGlobalSelectionList() Try Dim c As Assemblies.ComponentAssembly = theSession.Parts.Display.ComponentAssembly processComponentChildren(c.RootComponent, foundComponents) Catch e As Exception theSession.ListingWindow.WriteLine("Failed: " & e.ToString) End Try lw.Close() theUI.SelectionManager.RequestSelections(foundComponents.ToArray) lw.WriteLine("number of selected components: " & theUI.SelectionManager.GetNumSelectedObjects.ToString) End Sub Sub processComponentChildren(ByVal comp As Assemblies.Component, ByRef componentList As List(Of Assemblies.Component)) For Each child As Assemblies.Component In comp.GetChildren() If child.HasUserAttribute(findAttributeTitle, NXObject.AttributeType.Any, -1) Then componentList.Add(child) End If processComponentChildren(child, componentList) Next End Sub Public Function GetUnloadOption(ByVal dummy As String) As Integer 'Unloads the image immediately after execution within NX GetUnloadOption = NXOpen.Session.LibraryUnloadOption.Immediately End Function End Module
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
geraldb Mitglied
Beiträge: 40 Registriert: 13.09.2008
|
erstellt am: 08. Dez. 2021 21:54 <-- editieren / zitieren --> Unities abgeben: Nur für NXNeuling
|
NXNeuling Mitglied Ingenieur
Beiträge: 8 Registriert: 15.07.2021 NX1963
|
erstellt am: 09. Dez. 2021 07:40 <-- editieren / zitieren --> Unities abgeben:
|
Eonwe Mitglied
Beiträge: 82 Registriert: 10.11.2014 NX 12 mit ECTR
|
erstellt am: 09. Dez. 2021 15:43 <-- editieren / zitieren --> Unities abgeben: Nur für NXNeuling
Grundsätzlich müsste das mit workPart.ComponentAssembly.ReplaceReferenceSet(component as Component, newReferenceSet as String) funktionieren. das hier unten and sie Sub Main() dran: For each theComp as Assemblies.Component in componentList theSession.Parts.Work.ComponentAssembly.ReplaceReferenceSet(theComp, "REFERENZSET") Next ungetestet, aber das Prinzip dürfte klar werden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NXNeuling Mitglied Ingenieur
Beiträge: 8 Registriert: 15.07.2021 NX1963
|
erstellt am: 09. Dez. 2021 19:45 <-- editieren / zitieren --> Unities abgeben:
Mhh hab es versucht, aber es läuft bei mir immer auf einen Fehler. liegt auch daran, dass ich echt krasser Anfänger in dem Bereich bin Hast du noch einen Tipp für mich wie ich das dort einbaue? Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| (Senior) DevSecOps Engineer (m/w/d) | Vom Bonner Stadtteil Friesdorf aus betreibt SICAT neben einem lokalen Rechenzentrum zur Unterstützung der internen Softwareentwicklung von Medizinprodukten und Hightech CAD/CAM Produktion auch die IT-Infrastruktur für den weltweiten Zugriff unserer Kunden auf unsere hochverfügbaren Portaldienste, unsere Schulungsplattform und Website. Werden Sie Teil unseres Teams und helfen Sie dabei, ... | Anzeige ansehen | Feste Anstellung |
|
Eonwe Mitglied
Beiträge: 82 Registriert: 10.11.2014 NX 12 mit ECTR
|
erstellt am: 10. Dez. 2021 11:52 <-- editieren / zitieren --> Unities abgeben: Nur für NXNeuling
lw.WriteLine("number of selected components: " & theUI.SelectionManager.GetNumSelectedObjects.ToString) End Sub Das ist die letzte Zeile in der Sub Main(). Da dahinter und vor End Sub kommt folgendes: For each theComp as Assemblies.Component in foundComponents theSession.Parts.Work.ComponentAssembly.ReplaceReferenceSet(theComp, "REFERENZSET") Next Dabei muss "REFERENZSET" durch den Namen des neuen Referenzsets ersetzt werden. Dann bekommen alle Komponenten mit dem gefundenen Attribut das Referenzset.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |