こちらの続きです。
異なるUUIDのDraw参照元ファイルを差し替える1 - C#ATIA
コメント部分のリンク先のコードを参考に
・ファイルの選択化
・全てのビューのリンク参照元対応
'vba ChangeDrawLink ver0.0.1 using-'KCL0.0.12' by Kantoku 'Drawのビューのリンクの参照元を差し替える 'Partのみで UUID違いOK Option Explicit Private Const SelectionType = "*.CATPart" Sub CATMain() 'ドキュメントのチェック If Not CanExecute("DrawingDocument") Then Exit Sub 'ファイル選択 Dim Msg As String Msg = "Drawで参照するファイルを選択してください" Dim path As String path = CATIA.FileSelectionBox( _ Msg, _ SelectionType, _ CatFileSelectionModeOpen) If path = vbNullString Then Exit Sub 'Draw Dim drawDoc As DrawingDocument Set drawDoc = CATIA.ActiveDocument Dim viws As DrawingViews Set viws = drawDoc.sheets.ActiveSheet.Views '参照オープン Dim refDoc As Document Set refDoc = CATIA.Documents.Open(path) 'すり替え Dim i As Long For i = 2 To viws.Count Call ChangeLink(viws.Item(i), refDoc) Next '参照クローズ Call refDoc.Close MsgBox "Done" End Sub 'すり替え&Update Private Sub ChangeLink( _ ByVal viw As DrawingView, _ ByVal doc As Document) Dim links As DrawingViewGenerativeLinks Set links = viw.GenerativeLinks links.RemoveAllLinks Dim behv As DrawingViewGenerativeBehavior Set behv = viw.GenerativeBehavior behv.Document = doc behv.Update End Sub
実際にUUID違いのPartで差し替えてみました。
元の状態無いとわかりづらいですね。
確かに差し替えられるのですが、メインビュー(Views.Item(1))に出来上がる
これは何? 何か間違えているかなぁ?
あと、寸法解析しているのにも関わらず、寸法が赤くなってくれない時が
偶にあるのが困る。(寸法を少し動かすと赤くなりました)
これだけじゃ面白くない。バッチモードでドバーっとやりたい。