CADのコマンドがゲームの必殺技みたいに叫んだら楽しくないかな?
というわけで作っていみました。
Solidworksでコマンドを実行するたびにwavファイルを呼び出します。動画ではずんだもんにしゃべってもらってます。
エラー処理もろくにしてないので、あくまで遊びの範囲にしてください。なお、bingに相談して作ってます(便利)。
概要
今回はSolidworksのマクロを利用しています。
- Cドライブの中に"C:\temp\wave"というフォルダを作ります。
- そのフォルダの中に、音声ファイル(WAV)と設定ファイル(CSV)を入れます。
- 設定ファイルでは、数字と音声ファイルの名前を書きます。数字は、Solidworksでどんな操作をしたかを表すもので、swCommands_e Enumerationと呼ばれています。どんな数字がどんな操作に対応しているかは、次のサイトで見ることができます。
swCommands_e Enumeration - 2021 - SOLIDWORKS API Help - マクロを実行すると、設定ファイルに書いた数字の操作をするたびに、その数字に対応した音声ファイルが再生されます。この効果はSolidworksを終了するまで続きます
マクロ本体
メイン部分
Dim swEventsHandler As EventsHandler
Sub main()
Set swEventsHandler = New EventsHandler
End Sub
クラスモジュール部分
Option Explicit
Private Declare PtrSafe Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Public WithEvents swApp As SldWorks.SldWorks
Private filePaths() As String 'ファイルパスを格納する配列
Private commandIDs() As String '数字を格納する配列
Private Sub Class_Initialize()
Set swApp = Application.SldWorks
Dim fileNum As Integer 'ファイル数
Dim i As Integer 'ループカウンタ
Open "C:\temp\wave\sound_list.csv" For Input As #1
fileNum = 0
While Not EOF(1)
ReDim Preserve filePaths(fileNum)
ReDim Preserve commandIDs(fileNum)
Input #1, filePaths(fileNum), commandIDs(fileNum)
fileNum = fileNum + 1
Wend
Close #1
MsgBox "VOICEVOX:ずんだもん" & vbCrLf & "(Exit Load : " & fileNum & ")"
End Sub
Private Function swApp_CommandOpenPreNotify(ByVal command As Long, ByVal userCommand As Long) As Long
Dim i As Integer 'ループカウンタ
Dim comandStr As String '再生するコマンドを格納する変数
'数字と比較して対応するファイルを検索する
For i = 0 To UBound(commandIDs)
If commandIDs(i) = CStr(command) Then
comandStr = "play " & filePaths(i)
Exit For
End If
Next i
'再生するファイルが見つかった場合は、wavファイルを再生する
If comandStr <> "" Then
Call mciSendString(comandStr, "", 0, 0)
'MsgBox comandStr
End If
End Function
設定ファイルの例("C:\temp\wave\sound_list.csv")
C:\temp\wave\001_ずんだもん(ノーマル)_おしだし.wav,8
C:\temp\wave\002_ずんだもん(ノーマル)_おしだかっとっ.wav,10
C:\temp\wave\003_ずんだもん(ノーマル)_ぐるん.wav,24
C:\temp\wave\004_ずんだもん(ノーマル)_ぐるんかっと.wav,48
C:\temp\wave\005_ずんだもん(ノーマル)_ねじねじ.wav,39
C:\temp\wave\006_ずんだもん(ノーマル)_あーる.wav,9