NX Journal 図面を開いてビューの更新

Share on:

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
27        # 図面を更新
28        viewUpdate(workPart)
29
30def viewUpdate(workPart):
31    # ビューの更新
32    try:
33        workPart.Views.WorkView.UpdateCustomSymbols()
34        views = [ view for view in workPart.DraftingViews ]
35        workPart.DraftingViews.UpdateViews(views)
36    except Exception as e:
37        pass
38
39def openPart(theSession, id):
40    try:
41        # 既にファイルを開いていれば表示パートを変える
42        part1 = theSession.Parts.FindObject(id)
43        status1, partLoadStatus1 = theSession.Parts.SetActiveDisplay(
44            part1, 
45            NXOpen.DisplayPartOption.AllowAdditional, 
46            NXOpen.PartDisplayPartWorkPartOption.UseLast
47        )
48        partLoadStatus1.Dispose()
49    except Exception as e:
50        # 見つからなければファイルを開く
51        status1 = theSession.Parts.OpenBaseDisplay(id)
52
53def open_csv():
54    try:
55        # ファイル選択ダイアログ表示
56        theUfSession  = NXOpen.UF.UFSession.GetUFSession()
57        theUI = NXOpen.UI.GetUI()
58        ret = theUfSession.Ui.CreateFilebox("", "CSVファイルを選択", "csv", "*.csv")
59
60        # CSVを辞書のリストに変換
61        with open(ret[1]) as f:
62            reader = csv.DictReader(f)
63            dicts = [row for row in reader]
64        
65        return dicts
66    except:
67        return None
68    
69if __name__ == '__main__':
70    main()

関連記事