| 容量の大きなファイルのdxf保存に時間がかかる場合、 保存が終わるまで待つようにスクリプトを下記のとおり 一部訂正しました。 ※それでも環境によっては、うまく動作しないこともある かと思います。その場合は使用を中止して下さい。 (※繰り返しますがコピーをとったファイルでお試し下さい。)
'hoc複数ファイルを順次開いて同名のdxfファイルとして保存 '「hoc2dxf.vbs」このファイル上にhocファイルをドラッグすると '(複数ファイル可)hocファイルと同じ場所にdxfファイルが作成される '待ち時間設定(1ステップ当たりの実行スピード) '次の数値を調整して下さい。(100=0.1秒) MATI = 200 '※あまり速くすると、設定が追いつかなくなります。 '※※以下のスクリプトは変更しないで下さい。 On Error Resume next set WshShell = WScript.CreateObject("WScript.Shell") Set objArgs = WScript.Arguments Set objFS = CreateObject("Scripting.FileSystemObject") 'ファイルを選択しないで直接実行したときの注意メッセージと終了処理 if objArgs(0) = "" then a = MsgBox("hocファイルをドラッグアンドドロップして下さい" & vbCR _ & "(直接実行はできません)",48,"実行注意!") WScript.Quit end if For i = 0 to objArgs.Count - 1 Set objFile = objFS.GetFile(objArgs(i)) strPname = objFile.ParentFolder strFname = objFile.Name 'hocファイルの読込 a = WshShell.Run("""" & strPname & "\" & strFname & """",1,FALSE ) 'ファイル読込待ち制御 a = WshShell.AppActivate ("HO_CAD - " & strFname) Do While a = False WScript.Sleep 200 a = WshShell.AppActivate ("HO_CAD - " & strFname) Loop 'ファイル名をクリップボードにコピー(要「AutoItX.dll」) Set obAutoIt = CreateObject("AutoItX.Control") obAutoIt.ClipPut strFname 'dxfファイルの保存 WScript.Sleep MATI WshShell.SendKeys "q1{ESC}71" WScript.Sleep MATI WshShell.SendKeys "^v" WScript.Sleep MATI WshShell.SendKeys "{BS}{BS}{BS}{BS}~" WScript.Sleep 1000 WshShell.SendKeys "{TAB}" WScript.Sleep MATI WshShell.SendKeys "{TAB}~" 'ファイル保存待ち制御 a = WshShell.AppActivate ("HO_CAD - " & strFname) Do While a = True WScript.Sleep 200 a = WshShell.AppActivate ("HO_CAD - " & strFname) Loop WshShell.SendKeys "q7" WScript.Sleep 500 next WScript.Quit
|