例題説明
読み込んだモデル内すべての”接続要素”情報を取得し、作成したListを用いてすべての”接続要素”を削除します。
本例で使用するモデルは、例題3つのキューブパートと、複数の”接続要素”を作成するで作成・保存したモデルです。未実施の場合は先に実施してください。
(ここでの”接続要素”とはMPCやRBE2などを指します)

サンプルコード
サンプルコード1 – すべて削除する方法
# 新規ドキュメントにモデルを読み込みます。
JPT.Exec('New Document()')
path = JPT.GetAppPathInfo(JPT.PathType.APPDATA_PATH)
FileMenu.LoadJTH5(path+"cube_connections.jth5")
# 作成したパートに合わせて、メインウィンドウの拡大サイズを調整します。
JPT.ViewFitToModel()
# モデル内のすべての"接続要素"の情報を取得します。
dconns = JPT.GetAllConnections()
# 取得した"接続要素"の情報を、PSJコマンドで使用できる形式のリストに変換します
ditem_connections = []
for conn in dconns:
ditem_connections.append(JPT.CastToDItem(conn))
list_connections = JPT.DItemListToMacroListTCursor(ditem_connections)
# 作成したリストを使用して、モデル内すべての"接続要素"を削除します。
JPT.Exec('DeleteItem(0, {}, [], [], 1)'.format(list_connections))
サンプルコード1の説明
モデル読込
本例題で使用するモデルを読み込みます。
まず、ファイルの読込のために新しいJupiterドキュメントを作成します。
新しいJupiterドキュメントを作成するために、マクロNew Document()
を使用します。マクロをPSJとして使用するために、JPT.Exec()
をあわせて使用します。
JPT.Exec('New Document()')

次に、モデルの読込を行います。
モデルの保存先であるJupiterのApp Dataフォルダのパスを取得し、変数path
に代入します。
path = JPT.GetAppPathInfo(JPT.PathType.APPDATA_PATH)
JPT.GetAppPathInfo()
は、PathType
を指定することで、使用中のJupiterの作業フォルダのパスを取得するPSJ Utilityです。
Path Typeと、取得可能なフォルダパスについての詳細はリンク先をご参考ください。
・Path Type
FileMenu.LoadJTH5()
はモデルをjth5ファイル形式で保存するPSJ Utilityです。読み込むファイルの存在するフォルダパスと、読み込むファイル名の指定が必須になります。
先ほど取得したpath
を使用して、Cube_Connections.jth5
というファイル名でApp Dataフォルダに保存されているファイルをJupiterに読み込みます。
読み込んだモデルを、表示画面サイズに合わせて、表示中のモデルの拡大表示率を、JPT.ViewFitToModel()
によって調整します。
FileMenu.LoadJTH5(path+"cube_connections.jth5")
JPT.ViewFitToModel()

すべての”接続要素”情報をDConnect形式で取得
モデル内のすべての”接続要素”情報を取得し、その情報を変数dconns
に代入します。
dconns = JPT.GetAllConnections()
JPT.GetAllConnections()
は、モデル内すべての”接続要素”を取得するPSJ Utilityです。
取得した情報は、Jupiter内で使用されるConnectVector
というリスト型のクラスオブジェクトで、この中にはDConnect
というクラスオブジェクトが入っています。
ConnectVector、DConnectオブジェクトについての詳細はそれぞれリンク先をご参考ください。
・ConnectVector
・DConnect
dconns
の内容については、次のコードを用いることで、Jupiter上のPython APIウィンドウに出力して確認することが出来ます。
# dconnsの内容を確認します。
print("dfconnsの内容 :" + str(dconns))
print("dconnsのオブジェクトタイプ :" + str(type(dconns)))
print("dconnsの持つオブジェクトの形式 :" + str(dconns[0]))
print("dconnsの持つオブジェクトのタイプ :" + str(type(dconns[0])))

ConnectVector
もDConnect
もJupiter上でのアドレスであり、この形式のままではPSJコマンドで使用することができません。そこで、dconns
の持つデータの形式をPSJコマンドで使用するための形式に変換する必要があります。
取得した”接続要素”情報を、マクロ用のリストに変換する
dconns
内の”接続要素”情報を、マクロ用のリスト形式に変換していきます。
ditem_connections = []
for conn in dconns:
ditem_connections.append(JPT.CastToDItem(conn))
このコードでは、まずditem_connections
という空のリストを作成します。
次に、for文を用いてdconns
の持つDConnect
オブジェクトをすべてDItem
オブジェクトの形式へ変換し、先に作成したリストditem_connections
へとDItem
を追加していきます。
このコードで使用しているJPT.CastToDItem()
は、DConnect
などのオブジェクトクラスを、DItem
オブジェクト形式に変換するPSJ Utilityです。
DItemオブジェクトについての詳細はリンク先をご参考ください。
・DItem
ditem_connections
の内容については、次のコードを用いることで、Jupiter上のPython APIウィンドウに出力して確認することが出来ます。
# ditem_connectionsの内容を確認します。
print("本モデルに設定された"接続要素"の数 = [" + str(len(ditem_connections)) + "]")
print("ditem_connectionsの内容 :" + str(ditem_connections))
print("ditem_connectionsの持つオブジェクトタイプ :" + str(type(ditem_connections[0])))

len(ditem_connections)
は、ditem_connections
の長さ、つまり格納されている”DItem
オブジェクトの総数=モデル内のすべてのFace数”を取得しています。
また、ditem_connections
の持つDItem
は、DConnect
と同様にJupiter上のアドレスであり、まだPSJコマンドで使用できる形式ではありません。ここでもう一度、形式を変換する必要があります。
list_connections = JPT.DItemListToMacroListTCursor(ditem_connections)
JPT.DItemListToMacroListTCursor()
は、DItemVector
オブジェクトまたは DItem
オブジェクトのリストをカーソルのリスト (マクロ文字列型) に変換するPSJ Utilityです。これにより、ditem_connections
の持つDItem
はPSJコマンドで使用できる形式であるマクロ文字列型のリストへと変換されます。変換後のリストは、変数list_faces
に代入されます。lise_connections
の内容については、次のコードを用いることで、Jupiter上のPython APIウィンドウに出力して確認することが出来ます。
# list_connectionsの内容を確認します。
print("list_connectionsの内容 :" + str(list_connections))
print("list_connectionssの持つオブジェクトタイプ :" + str(type(list_connections)))

マクロ文字列型は、エンティティの種類を指すID:エンティティのモデル上で割り当てられているID
の形をとっている文字列型です。この文字列型はマクロでも利用されます。
作成したリストから、モデル内すべての”接続要素”を削除
最後に、作成したリストlist_connecitons
を使用して、モデル内すべての”接続要素”を削除します。
削除にあたり、Jupiterで、境界条件や”接続要素”などのアイテムを削除した際に出力されるマクロDeleteItem(0, [], [], [], 1)を、マクロをPSJコマンドとして使用する関数JPT.Exec()をと組み合わせて使用します。
JPT.Exec()
を使用すると、マクロは使えるようになりますが、マクロは文字列として扱われる為、このままでは変数を使用することはできません。
そこで、Pythonメソッド.format()
を用います。これにより、変数list_connections
をマクロで使用することが可能となります。
JPT.Exec('DeleteItem(0, {}, [], [], 1)'.format(list_connections))

サンプルコード2 – 特定の”接続要素”のみ削除する方法
# 新規ドキュメントにモデルを読み込みます。
JPT.Exec('New Document()')
path = JPT.GetAppPathInfo(JPT.PathType.APPDATA_PATH)
FileMenu.LoadJTH5(path+"cube_connections.jth5")
# 作成したパートに合わせて、メインウィンドウの拡大サイズを調整します。
JPT.ViewFitToModel()
# モデル内のすべての"接続要素"の情報を取得します。
dconns = JPT.GetAllConnections()
# 取得した"接続要素"の情報をのうち、MPCのみをPSJコマンドで使用できる形式のリストに変換します。
ditem_mpcs = []
for conn in dconns:
if conn.type == JPT.DItemType.CONNECT_MPC:
ditem_mpcs.append(JPT.CastToDItem(conn))
list_mpcs = JPT.DItemListToMacroListTCursor(ditem_mpcs)
# 作成したリストを使用して、モデル内のすべてのMPCを削除します。
JPT.Exec('DeleteItem(0, {}, [], [], 1)'.format(list_mpcs))
サンプルコード2の説明
モデル読込
本例題で使用するモデルを読み込みます。
まず、ファイルの読込のために新しいJupiterドキュメントを作成します。
新しいJupiterドキュメントを作成するために、マクロNew Document()
を使用します。マクロをPSJとして使用するために、JPT.Exec()
をあわせて使用します。
JPT.Exec('New Document()')

次に、モデルの読込を行います。
モデルの保存先であるJupiterのApp Dataフォルダのパスを取得し、変数path
に代入します。
path = JPT.GetAppPathInfo(JPT.PathType.APPDATA_PATH)
JPT.GetAppPathInfo()
は、PathType
を指定することで、使用中のJupiterの作業フォルダのパスを取得するPSJ Utilityです。
Path Typeと、取得可能なフォルダパスについての詳細はリンク先をご参考ください。
・Path Type
FileMenu.LoadJTH5()
はモデルをjth5ファイル形式で保存するPSJ Utilityです。読み込むファイルの存在するフォルダパスと、読み込むファイル名の指定が必須になります。
先ほど取得したpath
を使用して、Cube_Connections.jth5
というファイル名でApp Dataフォルダに保存されているファイルをJupiterに読み込みます。
読み込んだモデルを、表示画面サイズに合わせて、表示中のモデルの拡大表示率を、JPT.ViewFitToModel()
によって調整します。
FileMenu.LoadJTH5(path+"cube_connections.jth5")
JPT.ViewFitToModel()

すべての”接続要素”情報をDConnect形式で取得
モデル内のすべての”接続要素”情報を取得し、その情報を変数dconns
に代入します。
dconns = JPT.GetAllConnections()
JPT.GetAllConnections()
は、モデル内すべての”接続要素”を取得するPSJ Utilityです。
取得した情報は、Jupiter内で使用されるConnectVector
というリスト型のクラスオブジェクトで、この中にはDConnect
というクラスオブジェクトが入っています。
ConnectVector、DConnectオブジェクトについての詳細はそれぞれリンク先をご参考ください。
・ConnectVector
・DConnect
dconns
の内容については、次のコードを用いることで、Jupiter上のPython APIウィンドウに出力して確認することが出来ます。
# dconnsの内容を確認します。
print("dfconnsの内容 :" + str(dconns))
print("dconnsのオブジェクトタイプ :" + str(type(dconns)))
print("dconnsの持つオブジェクトの形式 :" + str(dconns[0]))
print("dconnsの持つオブジェクトのタイプ :" + str(type(dconns[0])))

ConnectVector
もDConnect
もJupiter上でのアドレスであり、この形式のままではPSJコマンドで使用することができません。そこで、dconns
の持つデータの形式をPSJコマンドで使用するための形式に変換する必要があります。
取得した接続要素情報からMPCだけを抽出し、マクロ用のリストに変換する
dconns
内の接続要素情報から、MPCのみを抽出しマクロ用のリスト形式に変換していきます。
ditem_mpcs = []
for conn in dconns:
if conn.type == JPT.DItemType.CONNECT_MPC:
ditem_mpcs.append(JPT.CastToDItem(conn))
このコードでは、まずditem_mpcs
という空のリストを作成します。
次に、for文とif文を組み合わせてdconns
の持つDConnect
オブジェクトから、MPCのみを対象としてDItem
オブジェクトの形式へと変換します。その後、作成していたリストditem_mpcs
へ変換したMPCのDItem
を追加していきます。
このコードで使用しているJPT.CastToDItem()
は、DConnect
などのオブジェクトクラスを、DItem
オブジェクト形式に変換するPSJ Utilityです。
また、本例のように、if文でDItem Typeを指定することにより、特定の種類のみの接続要素や境界条件を対象にとることが可能になります。
DItemオブジェクト、DItem Typeについての詳細はリンク先をご参考ください。
・DItem
・DItem Type
ditem_connections
の内容については、次のコードを用いることで、Jupiter上のPython APIウィンドウに出力して確認することが出来ます。
# ditem_mpcsの内容を確認します。
print("本モデルに設定された接続要素数 = [" + str(len(ditem_mpcs)) + "]")
print("ditem_mpcsの内容 :" + str(ditem_mpcs))
print("ditem_mpcsの持つオブジェクトタイプ :" + str(type(ditem_mpcs[0])))

len(ditem_mpcs)
は、ditem_mpcs
の長さ、つまり格納されている”DItem
オブジェクトの総数=モデル内のすべてのFace数”を取得しています。
また、ditem_mpc
の持つDItem
は、DConnect
と同様にJupiter上のアドレスであり、まだPSJコマンドで使用できる形式ではありません。ここでもう一度、形式を変換する必要があります。
list_mpcs = JPT.DItemListToMacroListTCursor(ditem_mpcs)
JPT.DItemListToMacroListTCursor()
は、DItemVector
オブジェクトまたは DItem
オブジェクトのリストをカーソルのリスト (マクロ文字列型) に変換するPSJ Utilityです。これにより、ditem_mpcs
の持つDItem
はPSJコマンドで使用できる形式であるマクロ文字列型のリストへと変換されます。変換後のリストは、変数list_mpcs
に代入されます。lise_mpcs
の内容については、次のコードを用いることで、Jupiter上のPython APIウィンドウに出力して確認することが出来ます。
# list_mpcsの内容を確認します。
print("list_mpcsの内容 :" + str(list_mpcs))
print("list_mpcsの持つオブジェクトタイプ :" + str(type(list_mpcs)))

マクロ文字列型は、エンティティの種類を指すID:エンティティのモデル上で割り当てられているID
の形をとっている文字列型です。この文字列型はマクロでも利用されます。
作成したリストから、モデル内のMPCのみをすべて削除
最後に、作成したリストlist_mpcs
を使用して、モデル内のMPCのみをすべて削除します。
削除にあたり、Jupiterで、境界条件や接続要素などのアイテムを削除した際に出力されるマクロDeleteItem(0, [], [], [], 1)を、マクロをPSJコマンドとして使用する関数JPT.Exec()をと組み合わせて使用します。
JPT.Exec()
を使用すると、マクロは使えるようになりますが、マクロは文字列として扱われる為、このままでは変数を使用することはできません。
そこで、Pythonメソッド.format()
を用います。これにより、変数list_mpcs
をマクロで使用することが可能となります。
JPT.Exec('DeleteItem(0, {}, [], [], 1)'.format(list_connections))

利用しているAPI
FileMenu.LoadJTH5() # 記事なし
JPT.DItemListToMacroListTCursor()