Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Problem mit falschen Komponenten-Namen in Baugruppe gelöst!

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX
Autor Thema:  Problem mit falschen Komponenten-Namen in Baugruppe gelöst! (4047 mal gelesen)
Sirus
Ehrenmitglied
CAD Applikationsentwickler


Sehen Sie sich das Profil von Sirus an!   Senden Sie eine Private Message an Sirus  Schreiben Sie einen Gästebucheintrag für Sirus

Beiträge: 1564
Registriert: 03.06.2004

SolidWorks2022

erstellt am: 12. Feb. 2013 11:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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

Sirus
Ehrenmitglied
CAD Applikationsentwickler


Sehen Sie sich das Profil von Sirus an!   Senden Sie eine Private Message an Sirus  Schreiben Sie einen Gästebucheintrag für Sirus

Beiträge: 1564
Registriert: 03.06.2004

erstellt am: 19. Feb. 2013 13:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

hallo zusammen

hab da noch was besseres gemacht...

----------------------------------------

Imports System
Imports System.Windows
Imports System.Windows.Forms
Imports NXOpen
Imports NXOpen.Assemblies

Module Comp_Name

Dim s As session = session.GetSession()
Dim lw As ListingWindow = s.ListingWindow

Sub ProcessAssemblyTree(ByVal c As Component)

Dim children As Component() = c.GetChildren()

For Each child As Component In children

' ----- lesen komponentenname
'LW.WriteLine("komponentenname = " + child.Name)

' ----- lesen partname
'LW.WriteLine("partname = " + child.DisplayName)

' ----- aus DisplayName wird neuer comp.name / trimmen bei "/"
dim comp_name As String() = child.DisplayName.Split("/")

'LW.WriteLine("comp_name = " + comp_name(0))

' ----- ändern comp_name in grosse schrift
dim comp_name_gross As string = comp_name(0).toupper()
'LW.WriteLine("comp_name_gross = " + comp_name_gross)

' ----- schreiben des neuuen comp_name, aber nur wenn nicht identisch....
if (child.Name = comp_name_gross) then
'MessageBox.Show("gleich = " + comp_name_gross + " = " + child.Name)
'LW.WriteLine("gleich = " + comp_name_gross + " = " + child.Name)

else
'MessageBox.Show("ungleich = " + comp_name_gross + " = " + child.Name)
LW.WriteLine("ungleich = " + comp_name_gross + " = " + child.Name)

child.SetName(comp_name_gross)

end if

ProcessAssemblyTree(child)
Next

End Sub

Sub Main()

Try
Dim part1 As Part = s.Parts.Work

Dim c As Component = part1.ComponentAssembly.RootComponent

ProcessAssemblyTree(c)

Catch e As Exception
lw.Open()

' ----- hier wird angegeben wenn der comp_name grösse als 30 zeichen ist!
'(Failed: A maximum of 30 characters may be entered)
lw.WriteLine("Failed: " & e.Message)
End Try

End Sub

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



Technischer Property Manager - Gewährleistungsmanagement (m/w/d)

...ist Deutschlands größte öffentlich-rechtliche Versorgungsgruppe mit 2,5 Mio. Versicherten und Versorgungsempfängern

...ist mit einem Kapitalanlagevolumen (Marktwert) von 106,8 Mrd. Euro Deutschlands Nummer 1 unter den Altersversorgern

...ist mit ihren rund 1.480 Mitarbeitenden modernes Wirtschaftsunternehmen und staatliche Oberbehörde in einem


  • Aufbau eines ...
Anzeige ansehenGebäude-, Versorgungs-, Sicherheitstechnik
Sirus
Ehrenmitglied
CAD Applikationsentwickler


Sehen Sie sich das Profil von Sirus an!   Senden Sie eine Private Message an Sirus  Schreiben Sie einen Gästebucheintrag für Sirus

Beiträge: 1564
Registriert: 03.06.2004

SolidWorks2022

erstellt am: 19. Feb. 2013 16:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


...oder noch besser anstelle "trimmen" mit "abschneiden"...

--------------------------

' ----- aus DisplayName wird neuer comp.name / abschneiden der letzten 3 zeichen "/00"
dim comp_name As String = child.DisplayName.Substring(0, child.DisplayName.Length - 3)
'LW.WriteLine("comp_name = " + comp_name)

' ----- ändern comp_name in grosse schrift
dim comp_name_gross As string = comp_name.toupper()
'LW.WriteLine("comp_name_gross = " + comp_name_gross)

' ----- schreiben des neuen comp_name, aber nur wenn nicht identisch....

if (child.Name = comp_name_gross) then
'MessageBox.Show("gleich = " + comp_name_gross + " = " + child.Name)
'LW.WriteLine("gleich = " + comp_name_gross + " = " + child.Name)

else
'MessageBox.Show("ungleich = " + comp_name_gross + " = " + child.Name)
LW.WriteLine("Anpassung Komponentenname: " + child.Name + " wird " + comp_name_gross)
child.SetName(comp_name_gross)

end if

------------------
gruss urs 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz