CATIA VBAでのサブエレメント(内部要素)|CATIAマクロの作成方法
CATIAにはサブエレメント(内部要素)というものがあります。
CATIA VBAでもこれらサブエレメントを扱うオブジェクトが用意されています。
これらオブジェクトは名前が長く一見難しそうに感じますが、内容は非常に簡単です。
SelectElement系のメソッドと合わせて使う場面もよく出てくるので、ここでそれぞれのオブジェクトが何を意味しているのかを押さえておきましょう。
Boundary
サブエレメントは「頂点(Vertex)」「フェース(Face)」「エッジ(Edge)」の3種類です。
CATIA VBAではこれらを総称して「Boundary」と呼びます。
「Boundary」の各オブジェクトは『CAA V5 Visual Basic Help』の
「Boundary Automation Objects」にまとまっています。
普段CATIAを操作している時には「頂点」「フェース」「エッジ」の3種類しか意識していないと思いますがVBAの場合はより多くの種類を意識する必要があります。上図を見ればわかる通りそれぞれのサブエレメントの中でもいくつかの種類に分かれているためです。
以下ではこれらのオブジェクトがそれぞれ何を表しているかを解説していきます。
Vertex
NotWireBoundaryMonoDimFeatVertex
TriDimFeatVertexOrBiDimFeatVertex
ZeroDimFeatVertexOrWireBoundaryMonoDimFeatVertex
Edge
MonoDimFeatEdge
└ RectilinearMonoDimFeatEdge
BiDimFeatEdge
└ RectilinearBiDimFeatEdge
TriDimFeatEdge
└ RectilinearTriDimFeatEdge
Face
PlanarFace
CylindricalFace
Vertex
頂点(Vertex)は以下の3つの種類に分けることができます。
「NotWireBoundaryMonoDimFeatVertex」
「TriDimFeatVertexOrBiDimFeatVertex」
「ZeroDimFeatVertexOrWireBoundaryMonoDimFeatVertex」
NotWireBoundaryMonoDimFeatVertex
「NotWireBoundaryMonoDimFeatVertex」はヘルプに以下のように書かれています。
0-D boundary belonging to a feature whose topological result is one dimensional, the boundary not beeing the extremity of the feature.
トポロジカルな結果が1次元であるフィーチャーに属する0-D境界。
ここでの「トポロジカルな結果が1次元であるフィーチャー」というのは「ワイヤー形状」を意味します。「フィーチャーに属する0-D境界」というのは簡単にいえばワイヤー同士の”つなぎ目”の点のことを意味します。
つまり「NotWireBoundaryMonoDimFeatVertex」は曲線(ワイヤー)の”つなぎ目”となる頂点のみを表すオブジェクトです。(つなぎ目部分は接線/曲率連続である必要はありません)
TriDimFeatVertexOrBiDimFeatVertex
「TriDimFeatVertexOrBiDimFeatVertex」はヘルプに以下のように書かれています。
0-D boundary belonging to a feature whose topological result is three dimensional or two dimentional.
トポロジカルな結果が3次元または2次元であるフィーチャーに属する0-D境界。
ここでの「トポロジカルな結果が3次元または2次元であるフィーチャー」の「3次元」はソリッドもしくは完全に閉じているサーフェス形状、「2次元」はサーフェス形状のことを意味しています。
つまり「TriDimFeatVertexOrBiDimFeatVertex」はサーフェスもしくはソリッド形状の全て頂点を表すオブジェクトです。
ZeroDimFeatVertexOrWireBoundaryMonoDimFeatVertex
「ZeroDimFeatVertexOrWireBoundaryMonoDimFeatVertex」はヘルプに以下のように書かれています。
0-D boundary beeing either an isolated point or the extremity of a feature whose topological result is one dimensional.
トポロジカルな結果が1次元であるフィーチャーの孤立した点または極限のいずれかである0-D境界。
ここでの「トポロジカルな結果が1次元であるフィーチャー」というのは先にも出てきたとおり「ワイヤー形状」のことを意味します。「孤立した点または極限のいずれかである0-D境界」というのはそのままの意味で「孤立した点」と「ワイヤーの端点(極限)」を意味します。
つまり「ZeroDimFeatVertexOrWireBoundaryMonoDimFeatVertex」は孤立した点もしくはワイヤーの端点となる頂点を表すオブジェクトです。
Edge
エッジ(Edge)は以下の3つの種類に分けることができます。
また、それぞれ3種類はより細かくRectilinear(直線)として分けることもできます。
「MonoDimFeatEdge」(RectilinearMonoDimFeatEdge)
「BiDimFeatEdge」 (RectilinearBiDimFeatEdge)
「TriDimFeatEdge」 (RectilinearTriDimFeatEdge)
MonoDimFeatEdge
「MonoDimFeatEdge」はヘルプに以下のように書かれています。
1-D boundary belonging to a feature whose topological result is one dimensional.
トポロジカルな結果が1次元であるフィーチャーに属する1-D境界。
ここでの「トポロジカルな結果が1次元であるフィーチャー」というのは頂点の項でも出てきたとおり「ワイヤー形状」を意味します。また、「1-D境界」はエッジのことを意味します。
つまり「MonoDimFeatEdge」はワイヤー形状のエッジを表すオブジェクトです。
RectilinearMonoDimFeatEdge
MonoDimFeatEdgeの中でも直線形状となっているエッジは「RectilinearMonoDimFeatEdge」として表すことが出来ます。直線エッジの「方向」と「原点」を求めるメソッドが用意されているため、VBAでの形状作成にも利用することができます。
BiDimFeatEdge
「BiDimFeatEdge」はヘルプに以下のように書かれています。
1-D boundary belonging to a feature whose topological result is two dimensional.
トポロジカルな結果が2次元であるフィーチャーに属する1-D境界。
ここでの「トポロジカルな結果が2次元であるフィーチャー」というのは頂点の項でも出てきたとおり「サーフェス形状」を意味します。
つまり「BiDimFeatEdge」はサーフェス形状のエッジを表すオブジェクトです。
RectilinearBiDimFeatEdge
BiDimFeatEdgeの中でも直線形状となっているエッジは「RectilinearBiDimFeatEdge」として表すことが出来ます。直線エッジの「方向」と「原点」を求めるメソッドが用意されているため、VBAでの形状作成にも利用することができます。
TriDimFeatEdge
「TriDimFeatEdge」はヘルプに以下のように書かれています。
1-D boundary belonging to a feature whose topological result is three dimensional.
トポロジカルな結果が3次元であるフィーチャーに属する1-D境界。
ここでの「トポロジカルな結果が3次元であるフィーチャー」というのは頂点の項でも出てきたとおり「ソリッドもしくは完全に閉じているサーフェス形状」を意味します。
つまり「TriDimFeatEdge」はソリッドもしくは完全に閉じたサーフェス形状のエッジを表すオブジェクトです。
RectilinearTriDimFeatEdge
TriDimFeatEdgeの中でも直線形状となっているエッジは「RectilinearTriDimFeatEdge」として表すことが出来ます。直線エッジの「方向」と「原点」を求めるメソッドが用意されているため、VBAでの形状作成にも利用することができます。
Face
頂点(Vertex)は以下の2つの種類に分けることができます。
「PlanarFace」
「CylindricalFace」
※どちらにも分類されないものは「Face」として扱います。
PlanarFace
「PlanarFace」はヘルプに以下のように書かれています。
2-D boundary with a planar geometry.
平面形状の2-D境界。
ここでの「2-D境界」はフェースをしています。
つまり「PlanarFace」は平面状のフェースを表すオブジェクトです。
CylindricalFace
「CylindricalFace」はヘルプに以下のように書かれています。
2-D boundary with a cylindrical geometry.
シリンダ形状の2-D境界。
ここでの「2-D境界」はフェースをしています。
つまり「CylindricalFace」はシリンダ状のフェースを表すオブジェクトです。
まとめ
今回はVBAでのサブエレメントを表すオブジェクトについての内容でした。
いろいろなオブジェクトが出てきましたがまとめると以下のとおりです。
Vertex ⇒ 全ての頂点
NotWireBoundaryMonoDimFeatVertex ⇒ ワイヤーのつなぎ目
TriDimFeatVertexOrBiDimFeatVertex ⇒ ソリッド/サーフェスの頂点
ZeroDimFeatVertexOrWireBoundaryMonoDimFeatVertex ⇒ ワイヤーの端点/孤立した点
Edge ⇒ 全てのエッジ
MonoDimFeatEdge ⇒ ワイヤーのエッジ
BiDimFeatEdge ⇒ サーフェスのエッジ
TriDimFeatEdge ⇒ ソリッド/閉じたサーフェスのエッジ
Face ⇒ 全てのフェース
PlanarFace ⇒ 平面状のフェース
CylindricalFace ⇒ シリンダ状のフェース
これらオブジェクトは主にSelectElement系のメソッドでのフィルターに使われることが多いです。
たとえばユーザーに曲線(Curve)だけを選択させたい場合は「MonoDimFeatEdge」を、フェースだけを選択させたい場合は「Face」をフィルターにいれれば選択を制限させることができます。
長い英語の名前で難しく感じますが、どれも上記のように一言で説明できるオブジェクトたちです。それぞれが何を表しているかは英単語から何となく予想できると思うので、何となくでもいいので覚えておいたほうがマクロ作成時に役に立ちます。