例題説明
モデル内のすべての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])))

FaceVector
もDFace
も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
JPT.DItemListToMacroListTCursor()
BoundaryConditions.Pressure.General()