C#ATIA

↑タイトル詐欺 主にCATIA V5 の VBA

レイヤーの扱いを考える1

以前、レイヤー分けマクロ作ってからすっかり忘れていましたが、
CATIA V5のレイヤーの扱いが悪いですね。
手動でも悪いのですが、マクロでも同様です。

単純に、Partファイルの最初の形状セットの最初の要素のレイヤー番号を
表示するだけのマクロです。

'vba
Sub CATMain()
    Dim partDocument As partDocument
    Set partDocument = CATIA.ActiveDocument
    
    Dim hybridShape As hybridShape '1個目の形状セットの1個目の要素
    Set hybridShape = partDocument.Part.HybridBodies.item(1).HybridShapes.item(1)
    
    'hybridShapeのレイヤを取得したい
    Dim partselection As selection
    Set partselection = partDocument.selection
    
    Dim Layertype As CatVisLayerType, Layer As Long
    With partselection
        Call .Clear
        Call .add(hybridShape)
        Call .VisProperties.GetLayer(Layertype, Layer)
    End With
    MsgBox (Layer)
End Sub

前半4行は、最初の要素を取得するまでなので無視します。
一度selectionに取り込み、VisPropertiesのGetLayerメソッドでやっと取得できます。
レイヤーに限らず、カラーや線幅なども・・・。
何故、VisPropertiesをAnyObject辺りで実装してくれなかったのだろうか?
と思ってしまいます。

直感的に

    'vba これは動きません
    LayerNumber = hybridShape.GetLayer()

これぐらいで書きたいものですよね?
この辺を含めてC#の場合どうするか?を考えたいです。