Komonente suchen mit Joker / NX Programmierung
Holgi2010 28. Aug. 2018, 09:48

Hallo Zusammen,

ich möchte eine Baugruppen-Komponente über den Namen auswählen.
Wenn ich den vollen Namen in den String schreibe funktioniert das.
Leider ändert sich der Name von Baugruppe zu Baugruppe.
Deshalb müsste ich mit Joker arbeiten.
Hat jemand eine Idee?
Dankeschön.

Option Strict Off
Imports System
Imports NXOpen
Imports NXOpen.Assemblies
Imports System.Collections


Module NXJournal


  Sub Main()

KomponenteWaehlen
 
End sub

    Sub KomponenteWaehlen()

        Try
            Dim part1 As Part = theSession.Parts.Work
            Dim origPart As Part = part1

            alreadyProcessed = New Hashtable

            Dim c As ComponentAssembly = part1.ComponentAssembly
Walk(c.RootComponent, 0)

        Catch e As Exception
        End Try
    End Sub

'Module NXJournal
    Dim theSession As Session = Session.GetSession()
    Dim alreadyProcessed As Hashtable
    Dim prototype As Part
    Dim knt As Integer = 0
Dim Komponente_01 as String


    Sub Walk(ByVal c As Component, ByVal level As Integer)

        Dim children As Component() = c.GetChildren()
        Dim child As Component
        prototype = CType(c.Prototype, Part)

        If Not alreadyProcessed.Contains(prototype) Then

            alreadyProcessed.Add(prototype, prototype)
            knt = knt + 1

        End If

'Komponente_01 = "MHL 7235" 'der volle Name wird gefunden
Komponente_01 = "MHL " & "*" 'mit Joker wird nix gefunden :-(

        For Each child In children

If child.name = Komponente_01
' 'child.Suppress()
child.Highlight()
End if

            'Walk(child, level + 1)
        Next
    End Sub


End Module

matthias-p 28. Aug. 2018, 09:58

Code:
If child.name = Komponente_01

du musst hier mit den String-Befehlen von VB arbeiten.
Wenn du "=" ist gleich sagst, dann sucht er auch genau nach dem string xyz*. Es gibt aber Funktionen wie StartsWith, EndWitch oder Contains...die brauchst du hier...
Hat jetzt nichts mit NXOpen zu tun, sondern mit VB und .net an sich.

Holgi2010 28. Aug. 2018, 11:08

Perfekt !!
Danke Matthias       

If child.name.StartsWith(Komponente_01) = True Then
'If child.name.EndsWith(Komponente_01) = True Then
'If child.name.Contains(Komponente_01) = True Then