Hi I.Pesch,
vor wenigen Tagen habe ich mich auch dieselbe Frage wie Du gestellt.
Heute hatte ich eine meogliche Loesung gefunden. Was ich von der NXOpen .NET API bzw. Journaling verstanden habe (und da bin ich auch frisch eingestiegen
), habe ich fesgestellt, dass Strings wie "HANDLE O-41" von einem Journal ausgegeben werden. Diese Strings verweisen auf bestimmte Objekte (Compenents, usw), dessen IDs von jedem Journal-Ablauf ausgegeben werden. Deswegen ist es unmoeglich (soviel ich es verstanden habe) diese bestimmte ID im Voraus herauszubekommen).
Also, um dieses Problem umzugehen, und was ich in den letzten zwei Tagen als Loesungen kenne, ist folgendes:
* Durch die ganze Produkt laufen, bis dein Part bzw. Component gefunden wird, und die Attribute dann setzen, oder
* das Part durch eine Selektion auswaehlen und dann die Attribute setzen.
Wenn Du mit "Produkt" dasselbe wie "Assembly" meinst, dann hoffe ich , dass der folgende Code Dich weiterhilft (ist die Loesung 1 von der obere Liste):
Code:
Imports NXOpen
Imports NXOpen.AssembliesModule SetComponentAttrib
Sub Main()
'Retrieve the current session / instance of NX
Dim theSession As Session = Session.GetSession()
'Retrieve the current work part (in this case, the root assembly)
Dim workPart As Part = theSession.Parts.Work
'Create an undo mark, in case the user wishes to undo the action
Dim setAttribMark As Session.UndoMarkId
setAttribMark = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Set Attribute")
'Retrieve all child components / parts of the root assembly
Try
RetrieveChild(workPart.ComponentAssembly.RootComponent)
Catch
End Try
End Sub
Private Sub RetrieveChild(ByVal component As Component)
'Retrieve all child components / part of the passed component / part
Dim childcomponents() As Component = component.GetChildren()
'Loop through all found child parts
For index As Integer = 0 To childcomponents.Length - 1
'HIER MUSST DU DEN NAMEN DEINES TEILS ANPASSEN SOWIE DEINE ATTRIBUTE
'Sobald das Component/Teil mit dem Namen "stift" gefunden wird, dann setze die Attribute und danach die Schleife verlassen
If childcomponents(index).Name = "stift" Then
childcomponents(index).SetAttribute("Durchmesser", "6mm")
Exit For
End If
'Retrieve all children for the current child component
RetrieveChild(childcomponents(index))
Next
End Sub
End Module
Sorry fuer die englischen Kommentaren, meine Muttersprache ist Englisch. Ich hoffe mein Deutsch war gut genug, dass Du meine Antwort verstanden hast!!
Uebrigens wenn die zweite Loesung auch von Dir gebraucht wird, dann sag einfach bescheid.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP