C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)

Factory2Dが許してくれない1

最近、モチベーションがダダ下がり。何とかしたい。

久々にCATIAのマクロ作っている最中です。
・・・知らなかった事に遭遇。誰かに相談したい気持ちが山々。

結構敷居の高いDrawのマクロのお話で、こんなDrawファイルでテストしてます。
f:id:kandennti:20210521175815p:plain
まぁ何とも味わいの薄いデータです。

目的は単に直線を描きたいだけです。
色々と謎めいた部分が有りますが、要は直線描きたいだけです。

'vba
Option Explicit

Sub CATMain()

    Dim doc As DrawingDocument
    Set doc = CATIA.ActiveDocument
    
    Dim vi As Variant 'DrawingView
    Set vi = doc.sheets.ActiveSheet.views.Item(3) '正面図
    
    Dim xy(4) As Variant 'Double
    Call vi.Size(xy)
    
    Call drawLineTest(vi, xy)

End Sub

Private Sub drawLineTest( _
    ByVal view As DrawingView, _
    ByVal area As Variant)
    
    'ロックは強制的に解除
    If view.LockStatus Then
        view.LockStatus = False
    End If
    
    Dim fact As Factory2D
    Set fact = view.Factory2D

    Call fact.CreateLine(area(0), area(2), area(1), area(3))
    
End Sub

最初の画像の赤い矢印部分は

Set vi = doc.sheets.ActiveSheet.views.Item(3) '正面図

ここのビューの取得です。

DrawingSheet.Views(コレクションです)内にはビューが入っていますが、
インデックス順(先頭は1です)の内訳は

1-Main View (Treeに表示されてないやつ)
2-Background View (Treeに表示されてないやつ)
3-Treeの1個目
4-Treeの2個目
・・・

の様になってます。

で、上記のマクロは問題無く直線を描いてくれます。
f:id:kandennti:20210521180901p:plain

本当は、Treeで表示されているビューでは無く、インデックス1の
"Main View" に描きたいんです。
そこで、こんな感じに修正します。

Set vi = doc.sheets.ActiveSheet.views.Item(1) 'Main View

実行すると・・・
f:id:kandennti:20210521181211p:plain
まじですか。

同様にインデックス2のBackground Viewでもエラーです。
この二つはFactory2Dが許してくれないんだ・・・知らなかった。

Background Viewで図面枠を描くようなサンプルマクロが何処かに
あったような記憶があるので、Background Viewで直線が描ける
気がするんだけど・・・。