AcadRemoconをPowerShellで使う
IronRubyなどで実行している例があったのでやってみたら案外普通に使えて便利 COMオブジェクトとして作成したらあとはVBSでやるのとほぼ同じようにすればよい
例
$Acad = New-Object -ComObject AcadRemocon.body $dwgname = $null [void]$acad.acGetVar('DWGNAME',[ref]$dwgname,$False) Write-Host $dwgname [System.Runtime.InteropServices.Marshal]::FinalReleaseComObject($Acad)|Out-Null [GC]::Collect()
戻り値に[ref]がつくのは参照渡しとなるため。また存在しない変数に[ref]をつけられないので先に変数を作っている
[void]にキャストしてるのはAcadRemoconは必ずコマンドの実行の成否をT/Fで返してくるので非表示にするため。パイプラインでOut-Nullも同様の目的でやっている。
PowerShellではパイプラインで渡すと前段の処理が終了してパイプに渡されるまで待つので、確実に処理を実行させるときに有効
AcadRemoconは特に意識しないと同期を考えずに次々に実行するので各コマンドを必ずOut-NullかOut-Variableでパイプライン渡ししてやるとウェイト処理を入れずに済む。