|
分類:[VB.NET/VB2005 以降]
AUTOCAD2004と2012で動作が変わってしまいます。原因が分からず困っています。 何方か分かる方宜しくお願いします。 「現象」 CADに選択コマンド(SELECT)を送り、選択が完了するまで待機(ThisDrawing.WaitPrompt関数で) し、その後CADにコマンドを送るコードですが、(この例では"_UCS W ") 2004では正常にCADに送れていますが、 2012では、文字部分が送れず、スペースだけが送られているようです。(何故ならCAD上ではスペースを押した時と同一な動作をしている) 「分かったこと」 処理の途中で選択するためのCADのマウス等の操作が介入することが原因のようです。 事前に選択状態にして実行した場合は、マウス操作が介入しないので、正しく送られます (この場合、"_UCS W ")
問題は、2004では正しく動作しているのに、なぜ、2012において文字が送られなくなるのかです。 考えられる回避策等があれば、宜しくお願いします。
[環境] WIN7, VisualStudioExpress2013
[実行コード] SendCommandPost("_SELECT ") 'この処理(WaitPrompt)は、AUTOCADのSELECTコマンドの選択が終了するまで '待機する関数です ThisDrawing.WaitPrompt() ThisDrawing.SendCommand("_UCS W ") 'ワールド座標に
[サブルーチン] Public Function SendCommand(ByVal AcadCommand As String) As Boolean Dim lngrc As Long 'APIの返却値 Dim i Dim lngdt As Long Dim strdt As String SendCommand = False lngrc = -1 ' 1文字ずつ送信 For i = 1 To Len(AcadCommand) strdt = Mid(AcadCommand, i, 1) lngdt = AscW(strdt) 'ASCIIコードに変換 lngrc = SendMessage(MWndCMD, WM_IME_CHAR, lngdt, 0) '1文字送信 Next i End Select SendCommand = SendCommand End Function
|