VERSION 5.00
Begin {C62A69F0-16DC-11CE-9E98-00AA00574A4F} Rename_AllCATPart 
   Caption         =   "Rename AllCATPart"
   ClientHeight    =   2355
   ClientLeft      =   45
   ClientTop       =   375
   ClientWidth     =   4155
   OleObjectBlob   =   "Rename_AllCATPart.frx":0000
   StartUpPosition =   1  'CenterOwner
End
Attribute VB_Name = "Rename_AllCATPart"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
' Makro:        Rename_AllCATPart
' Version:      1.0
' Catia Level:  V5R19
' UIL:          English (User Interface Language)
' Autor:        Christian Obholzer
' E-Mail:       ch.obholzer@aon.at
' Erstellt:     21.04.2011
' Zweck:        Es werden alle Bodies umbenannt und durchnummeriert
'-----------------------------------------------------------------------------------
' Änderungen:   Datum, Name
'               Hier wird die Änderung angegeben
'               Datum, Name
'               Hier wird die Änderung angegeben
'-----------------------------------------------------------------------------------

Option Explicit

    '***Deklarationen
    Public objDoc As Document
    
Private Sub cmd_Beenden_Click()

    '***Fenster schließen
    Unload Me

End Sub

Private Sub cmd_Start_Rename_Click()

    '***Deklarationen
    Dim objSel As Object
    Dim intCount As Integer
    Dim dblLaenge As Double
    Dim dblSchritt As Double
    Dim intI As Integer

    '***Fehlerroutine einschalten
    On Error GoTo Fehler

    Set objSel = objDoc.Selection
    '***Vorselektion löschen um das Ergebnis nicht zu verfälschen
    objSel.Clear
    
    '***Performanceerhöhung der Suche
    CATIA.HSOSynchronized = False
    '***Alle Achsensysteme selektieren
    objSel.Search "Part Design.Body.Name != PartBody, all"
    CATIA.HSOSynchronized = True
    
    '***Startnummer definieren
    intCount = "1"
    
    '***Fortschrittbalken einblenden
    Me.lbl_Fortschrittsbalken.Visible = True
    '***Startbreite des Fortschrittbalkens
    dblLaenge = 0
    '***Schrittbreite pro Aktualisierung
    dblSchritt = Me.lbl_Fortschrittsbalken.Width / objSel.Count
    
    For intI = 1 To objSel.Count
        '***Berechnung der Breite des Fortschrittbalkens
        dblLaenge = dblLaenge + dblSchritt
        Me.lbl_Fortschrittsbalken.Width = dblLaenge
        '***Berechung der Prozente für den Fortschrittstext
        Me.lbl_Fortschrittstext.Caption = Format(intI / objSel.Count, "0 %")
        
        If intCount < 10 Then
            '***Body umbenennen
            objSel.Item(intI).Value.Name = "BN.000.00" & intCount
        ElseIf (intCount > 9) And (intCount < 100) Then
            '***Body umbenennen
            objSel.Item(intI).Value.Name = "BN.000.0" & intCount
        ElseIf intCount > 100 Then
            '***Body umbenennen
            objSel.Item(intI).Value.Name = "BN.000.0" & intCount
        End If
        
        '***Counter hochzählen
        intCount = intCount + 1
    Next
    
    objSel.Clear
    
    '***Meldung an User
    MsgBox "Makro wurde erfolgreich beendet.", vbInformation + vbOKOnly, "Makro erfolgreich beendet"
    
    '***Fenster schließen
    Unload Me

Exit Sub

'***Fehlerbehandlung: Ausgabe der Fehlernummer und Fehlerbeschreibung
Fehler:
    MsgBox "Fehlernummer: " & Err.Number & vbNewLine & _
    "Fehlerbeschreibung: " & Err.Description, vbCritical + vbOKOnly, "Fehler"
    
End Sub

Private Sub UserForm_Initialize()

    '***Deklarationen
    Dim objWindows As Windows
    Dim strTyp As String

    '***Abfrage nach geöffnetem Dokument
    Set objWindows = CATIA.Windows
    If objWindows.Count = 0 Then
        MsgBox "Es ist kein Dokument geöffnet." & vbNewLine & _
        "Das Makro kann nicht ausgeführt werden." & vbNewLine & _
        "Klicken Sie im nächsten Fenster auf den Button Beenden.", vbCritical + vbOKOnly, "Kein Dokument offen"
        
        '***Button deaktivieren
        Me.cmd_Start_Rename.Enabled = False
        Exit Sub
    End If

    '***Auslesen der Dokumentart
    Set objDoc = CATIA.ActiveDocument
    strTyp = TypeName(objDoc)
    If strTyp <> "PartDocument" Then
        MsgBox "Dieses Dokument ist kein Part." & vbNewLine & _
        "Das Makro kann nicht ausgeführt werden." & vbNewLine & _
        "Klicken Sie im nächsten Fenster auf den Button Beenden.", vbCritical + vbOKOnly, "Falscher Dokumententyp"
        
        '***Button deaktivieren
        Me.cmd_Start_Rename.Enabled = False
        Exit Sub
    End If

    '***Fortschrittsbalken ausblenden
    Me.lbl_Fortschrittsbalken.Visible = False

End Sub
