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" なんて変数、終わってる)
こんな感じのものを作るだけです。
最初にも書きましたが、世の中の皆様はどうしているのだろう。
必要無いのかな・・・。