VB2008にてAUTOCADのコマンドプロンプトにコマンドを送りたいのですがつまづいてます。
以前VB6で作成したものをVB2008にバージョンアップをしました。
AppActivate ("AutoCAD")
このあとどのようにしてコマンドを送ったらよいかわかりません。
VB6の時は
SendKeysで以下コマンドを送っていました。
よろしくお願いします。
そこらへんは変更しなくてもいけるかと・・・
SendKeys.Send(xxxx)
VB6のSendKeysと同じ事を行うには?
http://dobon.net/vb/dotnet/vb6/sendkeys.html
> VB2008にてAUTOCADのコマンドプロンプトにコマンドを送りたいのですがつまづいてます。
「AutoCAD」であれば、New AcadApplication して、そこから操作できそうですが、
「AutoCAD LT」だと、そうした操作には対応していないでしょうね。
> SendKeys
対応するのは、SendKeys.Send() / SendKeys.SendWait() メソッドです。
CADはLT2007。OSはXP。最近PCを新しくしたのですが以前のXPで動いていました。VB6も手元になくなり、仕方なく2008 Expressでバージョンアップしたものが下記です。ポリラインを選択してボタンをクリックすると面積と坪数が表示するというものです。
現在はボタンを押しても反応がなく、直後にCADコマンドに"script"を入力し、スクリプトファイルを指定してもう一度ボタンをおすと一応面積、坪数は表示するのですが。以前はポリラインをクリックしてボタンを押しただけで面積、坪数が表示できていました。
初心者なので対処の仕方がわかりません。
Private Sub kyuseki_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles kyuseki.Click
Dim Sname As String
Dim Mname As String
Dim Menseki As String
Dim zoku As String
'UPGRADE_WARNING: オブジェクト Mname の既定プロパティを解決できませんでした。 詳細については、'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"' をクリックしてください。
Mname = "c:\myprogram\面積表示\面積表示.mpr"
Sname = "c:\myprogram\面積表示\面積表示.scr"
'UPGRADE_WARNING: オブジェクト Sname の既定プロパティを解決できませんでした。 詳細については、'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"' をクリックしてください。
FileOpen(1, Sname, OpenMode.Output)
PrintLine(1, "region p ")
'UPGRADE_WARNING: オブジェクト Mname の既定プロパティを解決できませんでした。 詳細については、'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"' をクリックしてください。
PrintLine(1, "massprop l y " & Mname)
PrintLine(1, "u")
PrintLine(1, "u")
PrintLine(1, "filedia 1")
FileClose(1)
AppActivate("AutoCad")
System.Windows.Forms.SendKeys.SendWait("filedia 0" & Chr(13) & "script" & Chr(13) & Sname & Chr(13))
'UPGRADE_WARNING: オブジェクト Mname の既定プロパティを解決できませんでした。 詳細については、'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"' をクリックしてください。
FileOpen(1, Mname, OpenMode.Input)
While VB.Left(zoku, 2) <> "面積"
Input(1, zoku)
End While
FileClose(1)
'UPGRADE_WARNING: オブジェクト Menseki の既定プロパティを解決できませんでした。 詳細については、'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"' をクリックしてください。
Menseki = VB.Right(zoku, 17)
'UPGRADE_WARNING: オブジェクト Menseki の既定プロパティを解決できませんでした。 詳細については、'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"' をクリックしてください。
Menseki = LTrim(Menseki)
'UPGRADE_WARNING: オブジェクト Menseki の既定プロパティを解決できませんでした。 詳細については、'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"' をクリックしてください。
menseki_kekka.Text = CStr(System.Math.Round(Menseki * 0.000001, 2))
'UPGRADE_WARNING: オブジェクト Menseki の既定プロパティを解決できませんでした。 詳細については、'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"' をクリックしてください。
tubo_kekka.Text = CStr(System.Math.Round(System.Math.Round(Menseki * 0.000001, 2) * 0.3025, 2))
元の VB6 コードを見せてもらった方が、話が早いかな…。
*.frm (あるいは *.bas) をメモ帳等で開いて、上記 .NET コードに
該当する箇所を提示してみてください。
Chr(13) → vbCrlf としてみたらどうでしょうか?
VB.NETでは、Chr(13) & Chr(10)と2つで改行を見なすから
皆さん、いろいろとありがとうございました。
皆さんから教えていただいたことを参考に修正し、無事動くことができました。
不安定なとこもありますがLTなのでこれが限度かと・・・。
助かりました!
ツイート | ![]() |