C#ATIA

↑タイトル詐欺 主にCATIA V5 の VBA(最近はPMillマクロとFusion360APIが多い)

異なるUUIDのDraw参照元ファイルを差し替える2

こちらの続きです。
異なる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で差し替えてみました。
f:id:kandennti:20181123192358p:plain
元の状態無いとわかりづらいですね。
確かに差し替えられるのですが、メインビュー(Views.Item(1))に出来上がる
これは何? 何か間違えているかなぁ?
あと、寸法解析しているのにも関わらず、寸法が赤くなってくれない時が
偶にあるのが困る。(寸法を少し動かすと赤くなりました)

これだけじゃ面白くない。バッチモードでドバーっとやりたい。