Femtet2026.0マクロヘルプ/マニュアル
 

ホーム / モデリング / CGaudi / 関数 / GetObjectsFromScreen

GetObjectsFromScreen関数

定義

GetObjectsFromScreen(SelectionMode As SELECTION_MODE_T, X As Long, Y As Long, VertexList() As CGaudiVertex, EdgeList() As CGaudiEdge, FaceList() As CGaudiFace, BodyList() As CGaudiBody) As Boolean



[Python]
 GetObjectsFromScreen_py(SelectionMode, X, Y) -> (bSuccess, VertexList, EdgeList, FaceList, BodyList)

戻り値

True   成功(座標上にオブジェクトがなかった場合も含む)
False   失敗



[Python]
[0]   True:成功、False:失敗
[1]   Vertex(頂点)のリスト
[2]   Edge(辺)のリスト
[3]   Face(面)のリスト
[4]   Body(ボディ)のリスト

引数

SelectionMode

  SELECTION_MODE_T列挙体:
  • SELECT_BODY_C = 1: ボディ選択
  • SELECT_FACE_C = 2: 面選択
  • SELECT_EDGE_C = 4: 辺選択
  • SELECT_VERTEX_C = 8: 頂点選択
  • SELECT_VEF_C = 14: 面・辺・頂点選択(3つの論理和)

X

  画面内座標(X方向、左上を原点、右方向がX軸)

Y

  画面内座標(Y方向、左上を原点、下方向がY軸)

VertexList

  取得した頂点(CGaudiVertex)の動的配列

EdgeList

  取得した辺(CGaudiEdge)の動的配列

FaceList

  取得した面(CGaudiFace)の動的配列

BodyList

  取得したボディ(CGaudiBody)の動的配列



[Python]
SelectionMode   選択モード(SELECTION_MODE_T)
X   画面X座標(左上原点)
Y   画面Y座標(左上原点)

解説

指定された画面上の座標 (X, Y) にあるボディ・トポロジー(頂点、辺、面、ボディ)を取得します。
画面上でクリック選択したときと同様、ほかのオブジェクトに隠れているものは取得されません。
また、非表示オブジェクトも取得されません。

取得対象は TargetSelectionMode で指定可能です。
VBA の場合、各 List は動的配列を指定してください。実行後に配列が上書きされます。
X, Yは左上原点、右・下正方向の座標です。

実行例


Dim Femtet As New CFemtet

Dim Mode As SELECTION_MODE_T

Dim X As Long, Y As Long

Dim VertexList() As CGaudiVertex

Dim EdgeList() As CGaudiEdge

Dim FaceList() As CGaudiFace

Dim BodyList() As CGaudiBody

 

Mode = SELECT_FACE_C '面を取得

 

' 画面サイズが 320 * 240 と仮定

X = 160 '画面の中央付近

Y = 120 '画面の中央付近

If Femtet.Gaudi.GetObjectsFromScreen(Mode, X, Y, VertexList, EdgeList, FaceList, BodyList) Then

    Debug.Print "取得成功:"

    Debug.Print "頂点数=" & UBound(VertexList) - LBound(VertexList) + 1

    Debug.Print "辺数=" & UBound(EdgeList) - LBound(EdgeList) + 1

    Debug.Print "面数=" & UBound(FaceList) - LBound(FaceList) + 1

    Debug.Print "ボディ数=" & UBound(BodyList) - LBound(BodyList) + 1

Else

    Debug.Print "取得失敗"

End If