hallo zusammen
das problem mit den falschen komponenten-namen in baugruppen,
somit der falschen anzeige-namen der zwangsbedingungen ist
nun mit folgendem programm (von gtac) gelöst.
evtl. kann das auch einer verwenden...
---------------------------------------------
Option Strict Off
Imports System
Imports NXOpen
Imports NXOpen.UF
Imports NXOpen.UI
Imports NXOpen.Utilities
Module rename_components_to_part_number
Public s As Session = Session.GetSession()
Public ufs As UFSession = UFSession.GetUFSession()
Public lw As ListingWindow = s.ListingWindow
Sub Main()
Dim is_active As Boolean = False
ufs.UF.IsUgmanagerActive(is_active)
If is_active = False Then
MsgBox("This program should be used in an NXManager environment.", _
MsgBoxStyle.Exclamation)
Return
End If
Dim dp As Integer = 0
dp = check_for_missing_display_part()
If dp = 1 Then
Return
End If
Dim dispPart As Part = s.Parts.Display
Dim thisComp As NXOpen.Tag = NXOpen.Tag.Null
Do
thisComp = ask_next_component(dispPart.Tag, thisComp)
If thisComp <> NXOpen.Tag.Null Then
Dim partName As String = ""
Dim refsetName As String = ""
Dim instanceName As String = ""
Dim origin(2) As Double
Dim csysMatrix(8) As Double
Dim transform(3, 3) As Double
ufs.Assem.AskComponentData(thisComp, partName, refsetName, _
instanceName, origin, csysMatrix, transform)
Dim partNumber As String = ""
partNumber = ask_component_part_number(partName, thisComp)
Dim thisInstance As NXOpen.Tag = _
ufs.Assem.AskInstOfPartOcc(thisComp)
' this changes what shows up in Component Properties->General->Name
ufs.Obj.SetName(thisComp, partNumber)
' uncomment the following line to change the instance name
'ufs.Assem.RenameInstance(thisInstance, partNumber)
End If
Loop Until thisComp = NXOpen.Tag.Null
End Sub
Public Function ask_component_part_number(ByVal partName As String, _
ByVal comp As NXOpen.Tag) As String
Dim partNumber As String = ""
Dim partRev As String = ""
Dim partFileType As String = ""
Dim partFileName As String = ""
ufs.Ugmgr.DecodePartFileName(partName, partNumber, _
partRev, partFileType, partFileName)
Return partNumber
End Function
Public Function ask_next_component(ByVal dispPartTag As NXOpen.Tag, _
ByVal comp As NXOpen.Tag) As NXOpen.Tag
Dim type As Integer = 0
Dim subtype As Integer = 0
Do
ufs.Obj.CycleObjsInPart(dispPartTag, _
UFConstants.UF_component_type, comp)
If NXOpen.Tag.Null = comp Then
Return comp
End If
ufs.Obj.AskTypeAndSubtype(comp, type, subtype)
If subtype = UFConstants.UF_part_occurrence_subtype Then
Return comp
End If
Loop Until comp = NXOpen.Tag.Null
Return comp
End Function
Public Function check_for_missing_display_part() As Integer
Dim dispPart As Part = Nothing
Try
dispPart = s.Parts.Display
Catch ex As Exception
lw.Open()
lw.WriteLine("+++Error: " & ex.ToString())
End Try
If dispPart Is Nothing Then
lw.Open()
lw.WriteLine("There is no current Displayed Part")
ufs.UF.PrintSyslog("+++ERROR: There is no current Displayed Part", _
False)
Return 1
End If
Return 0
End Function
Public Function GetUnloadOption(ByVal dummy As String) As Integer
Return Session.LibraryUnloadOption.Immediately
End Function
End Module
------------------
gruss urs
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP