また、下らないものを作りました。
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
間違ってるかなぁ、方向性。