Attribute VB_Name = "Hole_Properties_auslesen"
' Makro:        Hole_Properties_auslesen
' Version:      1.0
' Catia Level:  V5R19
' UIL:          English (User Interface Language)
' Autor:        Christian Obholzer
' E-Mail:       ch.obholzer@aon.at
' Erstellt:     24.10.2010
' Zweck:        Es werden alle Hole Properties ausgelesen und in einer MsgBox ausgegeben
'-----------------------------------------------------------------------------------
' Ä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 objHole As Hole
    Dim vntHole As Variant
    Dim Koord(2)

    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 <> "PartDocument" Then
        MsgBox "Dieses Dokument ist kein Part." + 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.Hole, all"
    CATIA.HSOSynchronized = True
    
    For intI = 1 To objSel.Count
        Set objHole = objSel.Item(intI).Value
        '***Bohrungsdurchmesser ausgeben
        MsgBox (objHole.Diameter.Value)
        
        '***wird benöigt um die Koordinaten auszulesen
        Set vntHole = objHole
        
        '***Koordinaten ermitteln
        vntHole.GetOrigin lngKoord
        
        '***Ausgabe der Koordinaten
        MsgBox (lngKoord(0) & ", " & lngKoord(1) & ", " & lngKoord(2))
    Next
    
    objSel.Clear

Exit Sub

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