C#ATIA

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

3Dの画面の向きのベクトルを取得する

CATIA V5です。
ちょっと意味が分からなかったのですが、こちらを見つけました。
Re: Macro to create an Isometric View on a CATDrawing - DASSAULT: CATIA products - Eng-Tips

アイソメ図をマクロで作成する方法の様です。
オプションの設定を変更して、カメラの向きからベクトルを取得し、
DrawingViewを作成、再度オプションの設定を戻しているようです。
かなり面倒・・・。

カメラの向きを直す際、現状の "Up" と "Sight" のベクトルを取得し、
外積を使用しアイソメ方向となる "Sight" を設定を計算しています。
(up再設定した方が良い気もするけど・・・)
のX方向となる、右方向のベクトルを計算しています。
※変数を使いまわされていた為、解釈を間違えていました。
r1 Viewpoint3D (Object)


アイソメ図を作成する際の表示される6個の数値は、この2個のベクトル
ではないかな? と予測の元にサンプルを作りました。

'vba

Option Explicit

Sub CATMain()

    Dim viewer As Viewer3D
    Set viewer = CATIA.ActiveWindow.ActiveViewer
    
    Dim viewPoint As Variant 'Viewpoint3D
    Set viewPoint = viewer.Viewpoint3D
    
    '目線方向ベクトル
    Dim sightVector(2)
    viewPoint.GetSightDirection sightVector

    '上方向ベクトル
    Dim upVector(2)
    viewPoint.GetUpDirection upVector

    Dim msg As String
    msg = _
        "** 目線方向ベクトル **" & vbCrLf & _
        "X:" & sightVector(0) & vbCrLf & _
        "Y:" & sightVector(1) & vbCrLf & _
        "Z:" & sightVector(2) & vbCrLf & _
        vbCrLf & _
        "** 上方向ベクトル **" & vbCrLf & _
        "X:" & upVector(0) & vbCrLf & _
        "Y:" & upVector(1) & vbCrLf & _
        "Z:" & upVector(2)

    MsgBox msg
    
End Sub

過去に "Viewpoint3D" は何度か使ったことがあるので、
このブログをで検索してもらうと、ややこしいサンプルは
見つかると思います。