NX Journal 図面を開く
2020/01/16 categories:NX Journal| tags:NX Journal|Python|
NXでTeamcenter上の図面に対してバッチ処理を行いたい場合、次々図面を開くという処理が必要になります。そこでCSVからIDとリビジョンと図面名を取得して図面を次々開くプログラムを作成しました。CSVの中身はヘッダーありでID、リビジョン、図面名としています。このプログラムに処理を追加していろいろバッチ処理を行いたいと思います。
Pythonコード
import NXOpen
import NXOpen.UF
import csv
def main():
theSession = NXOpen.Session.GetSession()
# csvを開く
dicts = open_csv()
# 開けなければ終了
if dicts is None:
return
for d in dicts:
# 図面のファイル名を作成
dwg_filename = "@DB/" + d["ID"] + "/" + d["リビジョン"] + "/specification/" + d["図面名"]
# ファイルを開く
openPart(theSession, dwg_filename)
workPart = theSession.Parts.Work
# アプリケーションの切り替え
theSession.ApplicationSwitchImmediate("UG_APP_DRAFTING")
def openPart(theSession, id):
try:
# 既にファイルを開いていれば表示パートを変える
part1 = theSession.Parts.FindObject(id)
theSession.Parts.SetDisplay(part1, False, True)
except Exception as e:
# 見つからなければファイルを開く
theSession.Parts.SetNonmasterSeedPartData(id)
status1 = theSession.Parts.OpenBaseDisplay(id)
def open_csv():
try:
# ファイル選択ダイアログ表示
theUfSession = NXOpen.UF.UFSession.GetUFSession()
theUI = NXOpen.UI.GetUI()
ret = theUfSession.Ui.CreateFilebox("", "CSVファイルを選択", "csv", "*.csv")
# CSVを辞書のリストに変換
with open(ret[1]) as f:
reader = csv.DictReader(f)
dicts = [row for row in reader]
return dicts
except:
return None
if __name__ == '__main__':
main()