例題説明
Jupiter上で選択した要素から、その要素を構成する節点情報を取得します。
本例題を実施する前に、Jupiter上で要素を持つモデルを開いて準備しておいてください、
今回は、TET10要素を持つCubeモデルを使用します。

サンプルコード
# Jupiter上で手操作で選択した要素情報を取得します。
elems = JPT.GetSelectedElems()
# 空の集合を作成し、取得した要素情報から節点情報を取得して集合に追加します。
nodes = set()
for elem in elems:
for node in elem.nodes:
nodes.add(node)
# ID順にソートし、節点情報をAPI ウィンドウにprintします。
sorted_nodes = sorted(nodes, key=lambda node: node.id)
for node in sorted_nodes:
print(node.id, node.pos.x, node.pos.y, node.pos.z)
サンプルコードの説明
Jupiter上で要素を選択し、要素情報を取得する。
Jupiter上であらかじめ開いていたモデルで、要素を選択します。
本例では、TET10要素(ID:1346)を選択します。
本例で使用するPSJ Utilityは要素を選択した状態で実行する必要があるため、終了までは選択状態を維持してください。

選択中の要素の情報を取得し、それらを変数elems
に代入します。
elems = JPT.GetSelectedElems()
JPT.GetSelectedElems()
は、選択中の要素の情報を取得するPSJ Utilityです。
取得した情報は、Jupiter内で使用されるElemVector
というリスト型のクラスオブジェクトで、この中にはDElem
というクラスオブジェクトが入っています。
ElemVector、DItemオブジェクトについての詳細はそれぞれリンク先をご参考ください。
・ElemVector
・DElem
要素情報から節点情報を取得する
変数elems
内の接続要素情報から、その要素の持つ節点情報を取得していきます。
nodes = set()
for elem in elems:
for node in elem.nodes:
nodes.add(node)
まず、節点情報を格納するための空の集合型nodes
を作成します。
次にfor文を組み合わせて、elems
に含まれるDElem
オブジェクトの持つnodes
というインスタントを対象にとり、elem.nodes
に含まれるDNode
オブジェクトをnodes
に追加していきます。
sorted_nodes = sorted(nodes, key=lambda node: node.id)
次に、追加したDNode
をID順(昇順)で並べ替えるため、sorted()
関数を使用し、ソート後の集合型を変数sorted_nodes
として代入します。node: node.id
を指定することで、node(DNode)
の持つインスタントid
をもとに節点ID順にnodes
内の要素を並べ替えています。
ソート後の集合型に格納されている節点情報は、次のコードで確認が可能です。
節点のID、Jupiter内におけるGlobal座標での節点のX座標、Y座標、Z座標を確認しました。
for node in sorted_nodes:
print(node.id, node.pos.x, node.pos.y, node.pos.z)
