C#ATIA

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

Drawで連番の文字を作る

CATIAネタの度に "久々" って書いちゃうのですが、久々にCATIAのマクロです。

Drawの作業していると、異様に連番の文字が必要になるのですが、
世の中の皆様はどの様に対処しているのでしょうか?

相変わらず突貫で作りました。必要だったため。

'vba Draw_RenBanMoji_ver0.0.1  using-'KCL0.0.12'  by Kantoku
':連番の文字を新たなビューに作成します

Option Explicit

Private Const X_OFFSET = -30#
Private Const Y_PICH = 10#

Sub CATMain()

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

    Dim info As String
    info = InputBox("ヘッダー,開始の数,終了の数 (例: T,5,10)")
    
    Dim ary As Variant
    ary = getRange(info)
    
    Dim msg As String
    If IsEmpty(ary) Then
        msg = "入力値を再度確認してください" & vbCrLf & info
        MsgBox msg
        Exit Sub
    End If
    
    Dim header As String
    header = ary(0)
    
    Dim s As Long
    s = ary(1)
    
    Dim e As Long
    e = ary(2)
    
    msg = "[" & header & str(s) & "] から [" & _
        header & str(e) & "] までの文字を作りますか?"

    If MsgBox(msg, vbOKCancel) = vbCancel Then
        Exit Sub
    End If

    ' exec
    Call initRenban(header, s, e)

End Sub

Private Sub initRenban( _
    ByVal header As String, _
    ByVal s As Long, _
    ByVal e As Long)
    
    Dim vw As DrawingView
    Set vw = initView

    Dim txts As DrawingTexts
    Set txts = vw.Texts

    Dim i As Long
    For i = s To e
        Call txts.Add(header & Trim(str(i)), X_OFFSET, (i - s) * Y_PICH)
    Next

End Sub

Private Function initView() As DrawingView

    Dim doc As DrawingDocument
    Set doc = CATIA.ActiveDocument
    
    Dim views As DrawingViews
    Set views = doc.Sheets.ActiveSheet.views
    
    Set initView = views.Add("")
    
End Function

Private Function getRange( _
    ByVal txt As String) As Variant
    
    getRange = Empty
    
    Dim ary As Variant
    ary = Split(txt, ",")
    
    If Not UBound(ary) = 2 Then Exit Function
    
    If Not IsNumeric(ary(1)) Or Not IsNumeric(ary(2)) Then Exit Function
    
    ary(1) = CLng(ary(1))
    ary(2) = CLng(ary(2))
    
    getRange = ary
    
End Function

"CSVファイルから文字を作る" とか "クリックした位置に作る" とかも考えたのですが
直ぐに使いたかったので、簡単にしました。("s" とか "e" なんて変数、終わってる)

こんな感じのものを作るだけです。
f:id:kandennti:20200508175255p:plain

最初にも書きましたが、世の中の皆様はどうしているのだろう。
必要無いのかな・・・。