' Makro:        Hide_Show_Result
' Version:      1.0
' Catia Level:  V5R19
' UIL:          English (User Interface Language)
' Autor:        Christian Obholzer
' E-Mail:       ch.obholzer@aon.at
' Erstellt:     11.03.2011
' Zweck:        Es wird der Body "Result" ein oder ausgeblendet
'-----------------------------------------------------------------------------------
' Änderungen:   Datum, Name
'               Hier wird die Änderung angegeben
'               Datum, Name
'               Hier wird die Änderung angegeben
'-----------------------------------------------------------------------------------

Option Explicit
    
Sub CATMain()

    '***Deklarationen
    Dim objWindows As Windows
    Dim objDoc As Document
    Dim strTyp As String
    Dim objSel As Object
    Dim Status As CatVisPropertyStatus
    Dim HideShow As CatVisPropertyShow

    '***Fehlerroutine einschalten
    On Error GoTo Fehler

    '***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 und wird beendet.", vbCritical + vbOKOnly, "Kein Dokument offen"
        Exit Sub
    End If

    '***Auslesen der Dokumentart
    Set objDoc = CATIA.ActiveDocument
    strTyp = TypeName(objDoc)
    If strTyp = "DrawingDocument" Then
        MsgBox "Dieses Dokument ist kein Drawing." & vbNewLine & _
        "Das Makro kann nicht ausgeführt werden und wird beendet.", vbCritical + vbOKOnly, "Falscher Dokumententyp"
        Exit Sub
    End If
    
    Set objSel = objDoc.Selection
    '***Vorselektion löschen um das Ergebnis nicht zu verfälschen
    objSel.Clear
    
    '***Performanceerhöhung der Suche
    CATIA.HSOSynchronized = False
    '***Element suchen
    objSel.Search "Part Design.Body.Name=Result, all"
    CATIA.HSOSynchronized = True
    
    If objSel.Count = 0 Then
        MsgBox "Der Body ist nicht vorhanden.", vbExclamation + vbOKOnly, "Body nicht vorhanden"
    Else
        '***Sichtbarkeitsstatus der Bodies ermitteln
        Status = objSel.VisProperties.GetShow(HideShow)

        '***Bodies ein und ausblenden
        If HideShow = catVisPropertyShowAttr Then
            objSel.VisProperties.SetShow catVisPropertyNoShowAttr
        ElseIf HideShow = catVisPropertyNoShowAttr Then
            objSel.VisProperties.SetShow catVisPropertyShowAttr
        End If
    End If

Exit Sub

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