すべてのフェース情報を取得して、リストから圧力を設定する

未分類

例題説明

モデル内のすべてのFace情報を取得し、作成したListを用いてすべてのFaceに圧力を与えます。

サンプルコード


# 2つのキューブパートを作成します。
Geometry.Part.Cube()
Geometry.Part.Cube(dlOrigin=[0.015, 0.0, 0.0], strName="Cube_2", iPartColor=6409934)

# 作成したパートに合わせて、メインウィンドウの拡大サイズを調整します。
JPT.ViewFitToModel()

# モデル内のすべてのFace情報を取得します。
dfaces = JPT.GetAllFaces()

# 取得したFace情報を、PSJコマンドで使用できる形式のリストに変換します。
ditem_faces = []
for face in dfaces:
    ditem_faces.append(JPT.CastToDItem(face))
list_faces = JPT.DItemListToMacroListTCursor(ditem_faces)

# 作成したリストを使用して、モデル内すべてのFaceに20Mpaの圧力を設定します。
BoundaryConditions.Pressure.General(strName="Pressure1_PSJ", dPressure=20000000.0, crlTargets=list_faces)

サンプルコードの説明

キューブパート作成

まず、2つのキューブパートを作成します。
1つ目のキューブパートは、設定値をすべてデフォルトで作成します。


Geometry.Part.Cube()

2つ目のキューブパートは、座標値にdlOrigin=[0.015, 0.0, 0.0]、パート名にstrName="Cube_2"、パートの色としてiPartColor=640993を指定して作成します。


Geometry.Part.Cube(dlOrigin=[0.015, 0.0, 0.0], strName="Cube_2", iPartColor=6409934)

作成後、表示画面サイズに合わせて、表示中のモデルの拡大表示率を、JPT.ViewFitToModel()によって調整します。


JPT.ViewFitToModel()
すべてのFace情報をDFace形式で取得

モデル内のすべてのFace情報を取得し、その情報を変数dfacesに代入します。


dfaces = JPT.GetAllFaces()

JPT.GetAllFaces()は、モデル内すべてのFace情報を取得するPSJ Utilityです
取得した情報は、Jupiter内で使用されるFaceVectorというリスト型のクラスオブジェクトで、この中にはDFaceというクラスオブジェクトが入っています。

DFaceオブジェクトについての詳細はそれぞれリンク先をご参考ください。
 ・FaceVector
 ・DFace

dfacesの内容については、次のコードを用いることで、Jupiter上のPython APIウィンドウに出力して確認することが出来ます。


# dfacesの内容を確認します。
print("dfacesの内容 :" + str(dfaces))
print("dfacesのオブジェクトタイプ :" + str(type(dfaces)))
print("dfacesの持つオブジェクトの形式 :" + str(dfaces[0]))
print("dfacesの持つオブジェクトのタイプ :" + str(type(dfaces[0])))

FaceVectorDFaceもJupiter上でのアドレスであり、この形式のままではPSJコマンドで使用することができません。そこで、dfacesの持つデータの形式をPSJコマンドで使用するための形式に変換する必要があります。

取得したFace情報を、マクロ用のリストに変換する

dfaces内のFace情報を、マクロ用のリスト形式に変換していきます。


ditem_faces = []
for face in dfaces:
    ditem_faces.append(JPT.CastToDItem(face))

このコードでは、まずditem_facesという空のリストを作成します。
次に、for文を用いてdfacesの持つDFaceオブジェクトをすべてDItemオブジェクトの形式へ変換し、先に作成したリストditem_faceへとDItemを追加していきます。
このコードで使用しているJPT.CastToDItem()は、DFaceなどのオブジェクトクラスを、DItemオブジェクト形式に変換するPSJ Utilityです。

DItemオブジェクトについての詳細はリンク先をご参考ください。
 ・DItem

ditem_facesの内容については、次のコードを用いることで、Jupiter上のPython APIウィンドウに出力して確認することが出来ます。


# ditem_facesの内容を確認します。
print("本モデルの総Face数 = [" + str(len(ditem_faces)) + "]")
print("ditem_facesの内容 :" + str(ditem_faces))
print("ditem_facesの持つオブジェクトタイプ :" + str(type(ditem_faces[0])))

len(ditem_faces)は、ditem_facesの長さ、つまり格納されている”DItemオブジェクトの総数=モデル内のすべてのFace数”を取得しています。
また、ditem_facesの持つDItemは、DFaceと同様にJupiter上のアドレスであり、まだPSJコマンドで使用できる形式ではありません。ここでもう一度、形式を変換する必要があります。


list_faces = JPT.DItemListToMacroListTCursor(ditem_faces)

JPT.DItemListToMacroListTCursor()は、DItemVectorオブジェクトまたは DItemオブジェクトのリストをカーソルのリスト (マクロ文字列型) に変換するPSJ Utilityです。これにより、ditem_facesの持つDItemはPSJコマンドで使用できる形式であるマクロ文字列型のリストへと変換されます。変換後のリストは、変数list_facesに代入されます。
lise_facesの内容については、次のコードを用いることで、Jupiter上のPython APIウィンドウに出力して確認することが出来ます。


# list_facesの内容を確認します。
print("list_facesの内容 :" + str(list_faces))
print("list_facesの持つオブジェクトタイプ :" + str(type(list_faces)))

マクロ文字列型は、エンティティの種類を指すID:エンティティのモデル上で割り当てられているIDの形をとっている文字列型です。この文字列型はマクロでも利用されます。

作成したリストから、フェースに圧力を設定

最後に、作成したリストlist_facesを使用してすべてのフェースに圧力を設定します。
設定する圧力には、次の値を指定します。
 圧力名:strName="Pressure1_PSJ"
 与える圧力(20MPa):dPressure=20000000.0
 圧力の設定対象:crlTargets=list_face
その他の設定値はすべてデフォルトです。


BoundaryConditions.Pressure.General(strName="Pressure1_PSJ", dPressure=20000000.0, crlTargets=list_faces)

利用しているAPI

Geometry.Part.Cube()

JPT.ViewFitToModel()

JPT.GetAllFaces()

JPT.CastToDItem()

JPT.DItemListToMacroListTCursor()

BoundaryConditions.Pressure.General()

関連記事