ホーム / モデリング / CGaudi / 関数 / GetObjectsFromScreenInRect
GetObjectsFromScreenInRect関数
定義
GetObjectsFromScreenInRect (SelectionMode As SELECTION_MODE_T, X1 As Integer, Y1 As Integer, X2 As Integer, Y2 As Integer, bSelectInRectEntire As Boolean, VertexList() As CGaudiVertex, EdgeList() As CGaudiEdge, FaceList() As CGaudiFace, BodyList() As CGaudiBody) As Boolean
[Python]
GetObjectsFromScreenInRect_py(SelectionMode, X1, Y1, X2, Y2, bSelectInRectEntire=False)
戻り値
| True | 成功 (指定範囲にオブジェクトがなかった場合も含む) | |
| False | 失敗 |
[Python]
|
[0] |
True:成功、False:失敗 | |
|
[1] |
Vertex(頂点)のリスト | |
|
[2] |
Edge(辺)のリスト | |
|
[3] |
Face(面)のリスト | |
|
[4] |
Body(ボディ)のリスト |
引数
|
SelectionMode |
取得する対象の種類を指定(SELECTION_MODE_T列挙体) | |
|
X1, Y1, X2, Y2 |
矩形選択の左上(X1,Y1)・右下(X2,Y2)の座標(左上が原点、右方向がX軸、下方向がY軸) | |
|
bSelectInRectEntire |
Trueのとき、矩形内にすべてが含まれるオブジェクトのみ取得。 | |
|
VertexList |
取得された頂点の配列(CGaudiVertex) | |
|
EdgeList |
取得された辺の配列(CGaudiEdge) | |
|
FaceList |
取得された面の配列(CGaudiFace) | |
|
BodyList |
取得されたボディ配列(CGaudiBody) |
[Python]
| SelectionMode | 選択する対象種類(SELECTION_MODE_T列挙体を利用) | |
| X1, Y1, X2, Y2 | 矩形2点の画面座標 | |
| bSelectInRectEntire | True:矩形に全体が含まれるもののみ取得、False:一部でも含まれれば取得。
デフォルト: False |
解説
指定した画面座標で囲む矩形領域内に存在するボディやトポロジー(頂点・辺・面)を取得します。画面上で矩形選択したときと同様、他のオブジェクトに隠れているものも取得対象となります。
非表示オブジェクトは取得対象になりません。
bSelectInRectEntireがTrueの場合、矩形内にすべてが収まるオブジェクトのみを取得します。Falseの場合、一部が矩形内に含まれるものも取得されます。
取得対象は TargetSelectionMode で指定可能です。
ただし、SELECT_VEF_C は使用できません。
VBA の場合、各 List は動的配列を指定してください。実行後に配列が上書きされます。
X, Yは左上原点、右・下正方向の座標です。
実行例
Dim Femtet As New CFemtet
Dim Gaudi As CGaudi
Dim VertexList() As CGaudiVertex
Dim EdgeList() As CGaudiEdge
Dim FaceList() As CGaudiFace
Dim BodyList() As CGaudiBody
Dim bSuccess As Boolean
'画面サイズ:320 x 240の例
bSuccess = Femtet.Gaudi.GetObjectsFromScreenInRect(SELECT_FACE_C, 128, 96, 192, 144, False, VertexList, EdgeList, FaceList, BodyList)
If bSuccess = False Then
MsgBox Femtet.LastErrorMsg
Else
MsgBox "頂点数: " & UBound(VertexList) - LBound(VertexList) + 1
MsgBox "辺数: " & UBound(EdgeList) - LBound(EdgeList) + 1
MsgBox "面数: " & UBound(FaceList) - LBound(FaceList) + 1
MsgBox "ボディ数: " & UBound(BodyList) - LBound(BodyList) + 1
End If


