NX Journal 図面を開く

Share on:

NXでTeamcenter上の図面に対してバッチ処理を行いたい場合、次々図面を開くという処理が必要になります。そこでCSVからIDとリビジョンと図面名を取得して図面を次々開くプログラムを作成しました。CSVの中身はヘッダーありでID、リビジョン、図面名としています。このプログラムに処理を追加していろいろバッチ処理を行いたいと思います。

Pythonコード

 1import NXOpen
 2import NXOpen.UF
 3import csv
 4
 5def main():
 6    theSession  = NXOpen.Session.GetSession()
 7
 8    # csvを開く
 9    dicts = open_csv()
10
11    # 開けなければ終了
12    if dicts is None:
13        return
14
15    for d in dicts:
16
17        # 図面のファイル名を作成
18        dwg_filename = "@DB/" + d["ID"] + "/" + d["リビジョン"] + "/specification/"  + d["図面名"]
19        
20        # ファイルを開く
21        openPart(theSession, dwg_filename)
22        workPart = theSession.Parts.Work
23        
24        # アプリケーションの切り替え
25        theSession.ApplicationSwitchImmediate("UG_APP_DRAFTING")
26
27def openPart(theSession, id):
28    try:
29        # 既にファイルを開いていれば表示パートを変える
30        part1 = theSession.Parts.FindObject(id)
31        theSession.Parts.SetDisplay(part1, False, True)
32    except Exception as e:
33        # 見つからなければファイルを開く
34        theSession.Parts.SetNonmasterSeedPartData(id)
35        status1 = theSession.Parts.OpenBaseDisplay(id)
36
37def open_csv():
38    try:
39        # ファイル選択ダイアログ表示
40        theUfSession  = NXOpen.UF.UFSession.GetUFSession()
41        theUI = NXOpen.UI.GetUI()
42        ret = theUfSession.Ui.CreateFilebox("", "CSVファイルを選択", "csv", "*.csv")
43
44        # CSVを辞書のリストに変換
45        with open(ret[1]) as f:
46            reader = csv.DictReader(f)
47            dicts = [row for row in reader]
48        
49        return dicts
50    except:
51        return None
52    
53if __name__ == '__main__':
54    main()

関連記事