Forum:NX Programmierung
Thema:Komonente suchen mit Joker
Möchten Sie sich registrieren?
Wer darf antworten? Registrierte Benutzer können Beiträge verfassen.
Hinweise zur Registrierung Sie müssen registriert sein, um Beiträge oder Antworten auf Beiträge schreiben zu können.
Ihr Benutzername:
Ihr Kennwort:   Kennwort vergessen?
Anhang:    Datei(en) anhängen  <?>   Anhänge verwalten  <?>
Grafik für den Beitrag:                                                
                                                       
Ihre Antwort:

Fachbegriff
URL
Email
Fett
Kursiv
Durchgestr.
Liste
*
Bild
Zitat
Code

*HTML ist AUS
*UBB-Code ist AN
Smilies Legende
Netiquette

10 20 40

Optionen Smilies in diesem Beitrag deaktivieren.
Signatur anfügen: die Sie bei den Voreinstellungen angegeben haben.

Wenn Sie bereits registriert sind, aber Ihr Kennwort vergessen haben, klicken Sie bitte hier.

Bitte drücken Sie nicht mehrfach auf "Antwort speichern".

*Ist HTML- und/oder UBB-Code aktiviert, dann können Sie HTML und/oder UBB Code in Ihrem Beitrag verwenden.

T H E M A     A N S E H E N
Holgi2010

Beiträge: 49 / 0

NX8.5

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

Beiträge: 496 / 0

Teamcenter 11.3 / NX 11
Windows 10

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

Beiträge: 49 / 0

NX8.5

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