C#ATIA

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

ビューの位置を数値的に移動する

また、下らないものを作りました。

CATIAのDrawでビューの位置をきっちりと決めたいんです!
テーブルだけが入っているビューが複数あり、きっちり揃えたいんです!!

'vba Draw_Draw_MoveView_ver0.0.1  using-'KCL0.0.12'  by Kantoku
'ControlTipText:選択したビュー基準位置で移動

Option Explicit

Sub CATMain()

    'ドキュメントのチェック
    If Not CanExecute(Array("DrawingDocument")) Then Exit Sub

    Dim msg As String
    msg = "位置変更するビューを選択"

    Dim vi As DrawingView
    Set vi = KCL.SelectItem(msg, "DrawingView")
    If vi Is Nothing Then Exit Sub

    msg = "--基準位置--" & vbCrLf & _
        "X:" & vi.x & vbCrLf & _
        "Y:" & vi.y & vbCrLf & _
        "--サイズ--" & vbCrLf & _
        getViewSizeInfo(vi)
        
    Dim res As String
    res = InputBox(msg, "", CStr(vi.x) & "," & CStr(vi.y))
    If res = vbNullString Then Exit Sub
    
    Dim pos As Variant
    pos = convPos(res)
    
    Call execMove(vi, pos)
    
End Sub

Private Sub execMove( _
    ByVal vi As DrawingView, _
    ByVal pos As Variant)

    If vi.x = pos(0) And vi.y = pos(1) Then
        Exit Sub
    End If
    
    vi.x = pos(0)
    vi.y = pos(1)
    
    CATIA.RefreshDisplay = True
    
End Sub

Private Function convPos( _
    ByVal valueTxt As String) As Variant
    
    convPos = Empty
    
    Dim errMsg As String
    errMsg = "入力が不正です(例 5.0,10.0)"
    
    Dim ary As Variant
    ary = Split(valueTxt, ",")
    
    If UBound(ary) < 1 Then
        MsgBox errMsg
        Exit Function
    End If
    
    If Not IsNumeric(ary(0)) Or Not IsNumeric(ary(1)) Then
        MsgBox errMsg
        Exit Function
    End If
    
    convPos = Array(CDbl(ary(0)), CDbl(ary(1)))
    
End Function
    
Private Function getViewSizeInfo( _
    ByVal vi As DrawingView) As String
    
    Dim viVari As Variant
    Set viVari = vi

    Dim viSize(3) As Variant
    Call viVari.size(viSize)
    
    Dim txt As String
    txt = "X:" & viSize(1) - viSize(0) & vbCrLf & _
          "Y:" & viSize(3) - viSize(2)
    
    getViewSizeInfo = txt
    
End Function

間違ってるかなぁ、方向性。