プロセス
ACETUTIL関数 |
---|
(acet-sys-procid) |
AutoCAD 自身のプロセス ID を返します。 |
戻り値:整数 |
acet-sys-procid 関数は、WIndows 上での AutoCAD 自身のプロセス ID を返します。
_$ (acet-sys-procid)⏎
3428
外部 ObjectARX アプリケーションによる関数 EXRXSUBR です。
ACETUTIL関数 |
---|
(acet-sys-sleep millisecs) |
millisecs:整数 |
AutoLISP プログラムを、指定した時間スリープさせます。 |
戻り値:nil |
acet-sys-sleep 関数は、AutoLISP プログラムを、指定した時間スリープさせます。
millisecs 引数は、停止する時間をミリ秒単位で指定します。1秒停止するためには 1000 を指定します。
_$ (acet-sys-sleep 1000)⏎
nil
単純な時間経過を計るループに対して、acet-sys-sleep 関数は、スリープ中も CPU リソースを消費しません。
外部 ObjectARX アプリケーションによる関数 EXRXSUBR です。
外部アプリケーションの起動
ACETUTIL関数 |
---|
(acet-filename-associated-app filename) |
filename:文字列 |
ファイルと関連づけられたアプリケーションのパスを返します。 |
戻り値:文字列、または nil |
acet-filename-associated-app 関数は、与えられたファイルと関連づけられたアプリケーションを、Windowsのレジストリから読み取って返します。
filename 引数は、調べるファイル名を指定しますが、この関数の場合は拡張子が判別できればよく、ファイルの実際の存在は問いません。
_$ (acet-filename-associated-app "abc.jpg")⏎
"C:¥¥WINDOWS¥¥SYSTEM32¥¥RUNDLL32.EXE"
関連づけられたアプリケーションが無い場合は、nil を返します。
ACETUTIL関数 |
---|
(acet-sys-command shell-command) |
shell-command:文字列 |
Windows コマンドプロンプトから、コマンドを実行します。 |
戻り値:整数 |
acet-sys-command 関数は、Windows 【コマンドプロンプト】から、コマンドを実行します。
shell-command 引数には、シェルに渡すコマンドの文字列を指定します。
戻り値は、コマンドの EXIT CODE を表す整数が返ります。エラーの場合は -1 を返します。返るタイミングは【コマンドプロンプト】が終了した時で、それまで AutoCAD は待機します。
次の例は、【コマンドプロンプト】を開いて、現在のワーキングディレクトリの内容を表示します。シェルのコマンドは実行後、直ちに終了しますので、この場合は "pause" コマンドを付加して一時停止して結果を表示しています。
_$ (acet-sys-command "dir&pause")⏎
0
次の例は、【コマンドプロンプト】を経由して【メモ帳】で AutoCAD の acad.pgp ファイルを開きます。
_$ (acet-sys-command (strcat "notepad " (findfile"acad.pgp")))⏎
0
外部 ObjectARX アプリケーションによる関数 EXRXSUBR です。
AutoLISP関数 |
---|
(startapp os-cmd [options]) |
os-cmd:文字列 options:文字列 |
Windows アプリケーションを起動します。 |
戻り値:整数、または nil |
startapp 関数は、Windows アプリケーションを起動します。
os-cmd 引数はアプリケーションファイル名を指定しますが、拡張子 exe は省略できます。
戻り値は、関数実行後直ちに返ります。アプリケーションの起動が成功したときは 0 より大きな整数が、失敗した場合は nil が返ります。起動したアプリケーションは、AutoCADのプロセスとは別となり、ユーザー自身がアプリケーションを終了させます。
次の例は、Windows の【電卓】を起動します。
_$ (startapp "calc")⏎
33
options 引数は、Windows アプリケーションに渡す起動オプションを指定します。
次の例は、【コマンドプロンプト】を開いて、現在のワーキングディレクトリの内容を表示します。
_$ (startapp "cmd" "/K dir")⏎
33
なお、起動オプションの作法により、ファイル名に空白スペースを含むときは“(ダブルクォーテーション)で囲む必要があります。
次は、【メモ帳】にファイル名を指定して開く例です。
_$ (startapp "notepad" "¥"d:¥my secret file.txt¥"")⏎
33
startapp 関数から起動したプログラムは実行中の AutoLISP のプログラムとは別プロセスで実行されます。そのため、外部プログラムの実行終了を待つことなく AutoLISP のプログラムは先に進みます。
startapp 関数は AutoLISP の標準関数のように見えて実は外部 ObjectARX アプリケーションの関数 EXRXSUBR として提供されています。【独自の名前空間 VLX アプリケーション】を作成すると、そこからは EXRXSUBR は特別に宣言しないと使えません。「(vl-arx-import 'startapp)」という宣言をコードの中に加えてください。
ACETUTIL関数 |
---|
(acet-sys-spawn flags os-cmd [arg1 [arg2 ...]]) |
flags:整数 os-cmd:文字列 arg1 arg2... :文字列 |
Windows アプリケーションを起動します。 |
戻り値:整数 |
acet-sys-spawn 関数は、Windows アプリケーションを起動します。
flags 引数は、アプリケーションの起動モードを整数で指定します。何もモードを指定しない場合は 0 とします。モードは次の値の和を指定します。
flags | 説明 |
---|---|
1 | 起動したアプリケーションが終了するまで待ちます。 |
2 | アプリケーションウィンドウを最小化して起動します。 |
os-cmd 引数はアプリケーションファイル名を指定しますが、拡張子 exe は省略できます。
arg1 arg2 引数は、アプリケーションに渡すオプションを文字列で指定します。
flags 引数で 1 が指定されていない場合は、関数は直ちに終了して、起動したアプリケーションのプロセス ID を返します。ここで得たプロセス ID は、acet-sys-wait 関数や acet-sys-term 関数で利用できます。
flags 引数で 1 が指定されていた場合は、関数はアプリケーションが終了するまで待ちます。この場合、関数の戻り値は アプリケーションの EXIT CODE になります。
次の例は、【メモ帳】で AutoCAD の acad.pgp ファイルを開き、【メモ帳】が終了するまで待ちます。
_$ (acet-sys-spawn 1 "notepad" (findfile "acad.pgp"))⏎
0
上の例は、【メモ帳】が終了するまで acet-sys-spawn 関数は終了しません。そしてユーザーの手によって【メモ帳】が終了されると、EXIT CODE が戻ります。
外部 ObjectARX アプリケーションによる関数 EXRXSUBR です。
ACETUTIL関数 |
---|
(acet-sys-wait pid [timeout]) |
pid:整数 timeout:整数 |
アプリケーションが終了するのを待ちます。 |
戻り値:整数 |
acet-sys-wait 関数は、アプリケーションが終了するのを待ちます。
pid 引数には、対象アプリケーションのプロセス ID を指定します。
timeout 引数が指定された場合は、指定された間を最大限として待ちます。単位はミリ秒で、1秒は1000になります。
戻り値は、アプリケーションが時間内に終了した場合は EXIT CODE の整数が、エラーが発生したり、タイムアウトだった場合は -1 が返ります。
次の例は、【メモ帳】で AutoCAD の acad.pgp ファイルを開き、5秒間【メモ帳】が終了するのを待ちます。
_$ (setq pid (acet-sys-spawn 0 "notepad" (findfile "acad.pgp")))⏎
6048
_$ (acet-sys-wait pid 5000)⏎
0
上の例は、5秒以内に【メモ帳】が終了されたので、EXIT CODE が戻っています。
外部 ObjectARX アプリケーションによる関数 EXRXSUBR です。
ACETUTIL関数 |
---|
(acet-sys-term pid) |
pid:整数 |
アプリケーションを強制終了します。 |
戻り値:nil、または nil 以外 |
acet-sys-term 関数は、アプリケーションを終了させます。
pid 引数には、対象アプリケーションのプロセス ID を指定します。
戻り値は、終了が成功すれば nil 以外、失敗した場合は nil が返ります。
次の例は、【メモ帳】で AutoCAD の acad.pgp ファイルを開き、その後、終了させています。
外部 ObjectARX アプリケーションによる関数 EXRXSUBR です。
_$ (setq pid (acet-sys-spawn 0 "notepad" (findfile "acad.pgp")))⏎
1872
_$ (acet-sys-term pid)⏎
T
環境変数
AutoLISP関数 |
---|
(getenv varname) |
varname:文字列 |
環境変数に設定されている文字列値を返します。 |
戻り値:文字列、またはnil |
AutoLISP関数 |
---|
(setenv varname value) |
varname:文字列 value:文字列 |
指定された値を環境変数に代入します。 |
戻り値:文字列 |
これらの関数は、OS が提供管理している環境変数にアクセスします。
getenv 関数は、環境変数の値を返します。setenv 関数は、環境変数に値を代入します。
vername 引数は、調べる環境変数を文字列で指定します。
value 引数は、環境変数にセットする値を文字列で指定します。
戻り値は、セットした、または調べた環境変数の値が文字列で返ります。
_$ (setenv "myargment01" "test")⏎
"test"
_$ (getenv "myargment01")⏎
"test"
なお、これらの環境変数の変更は、既存の環境変数を含めてOS が今のAutoCAD に提供している環境のみに影響しますので、他の Windows アプリケーションの動作には今後とも影響を与えません。さらに、AutoCAD から起動したアプリケーションに提供される環境変数にも引継ぎされません。
例えば、setenv 関数で環境変数を変更して、startapp 関数で【コマンドプロンプト】を実行しても、そこでは変更した環境変数は反映されません。