以前、レイヤー分けマクロ作ってからすっかり忘れていましたが、
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#の場合どうするか?を考えたいです。