C
catch
cd
ceil
clock
close
concat
continue
create_sphere
catch
[catch]
スクリプトを実行し、エラーが出れば、実行せずにスキップします。
通常、スクリプトの途中で、エラーが出ると、エラー発生個所で中断され、そのあとの部分は実行されません。
しかし、エラーの内容によっては、中断せずに、エラー個所をスキップすればすむようなケースもあります。
こういうときに
catch
コマンドを使うと、エラーが出た部分だけをスキップして、次を実行することができます。
たとえば、
set
a 0
set
c 0
set
d 0
set
list
[
list
a b c d]
foreach
l $
list
{
un
set
$l
message
$lを
un
set
}
というスクリプトの場合、変数 b は
set
されていないので、
un
set
しようとすると、エラーになります。
実行すると、
aを
un
set
can't
un
set
"b": no such variable
というエラーメッセージが出て中断されます。
catch
コマンドを使って次のように書き換えると、
set
a 0
set
c 0
set
d 0
set
list
[
list
a b c d]
foreach
l $
list
{
catch
{
un
set
$l
message
$lを
un
set
}
}
エラーが出た部分は、スキップして次を実行します。実行結果は、
aを
un
set
cを
un
set
dを
un
set
となります。
2003.6.9(月) 15:35:31[
編集
]
cd
[cd]
現在の作業ディレクトリを移動します。
たとえば
set
c_d [
pwd
]
set
n_d [
string
range $c_d 0 [
expr
[
string
last [
file
tail $c_d] $c_d] - 1]]
cd
$n_d
とすると、現在のディレクトリの親ディレクトリに移動します。
親ディレクトリのパスを得るには、もっといい方法があると思うのですが(^^;;
2005.6.17(金) 12:44:40[
編集
]
ceil
[ceil]
実数
の小数部分を繰り上げます。マイナスのときは、切り捨てます。
set
a 34.567
set
b -34.567
message
"a = [
expr
ceil
($a)]"
message
"b = [
expr
ceil
($b)]"
を実行すると、
a = 35.0
b = -34.0
と表示されます。
整数
にするためには、さらに int を使って
[
expr
int(
ceil
($a))]
のようにする必要があるようです。
小数部分の切り捨ては、
floor
を使います。
2003.6.9(月) 15:49:31[
編集
]
clock
[clock]
時刻や日付を得るコマンドです。
clock
のあとに、オプションをいろいろとつけられるようですが、よく使うのは、seconds です。
set
sec [
clock
seconds]
で得た値に、さらにformat オプションをつけて
clock
コマンドを実行することによって、現在の時刻が得られます。
set
sec [
clock
seconds]
message
[
clock
format $sec -format "今日は%m月%d日。時刻は%Xです。"]
clock
seconds で得られるのは、特定の時刻からの経過秒数のようです。
これ を 0 として計算してみると、1970年1月1日午前9時ちょうどからの秒数のようです。
Shade のスクリプトで使う場合は、スクリプト開始からの経過時間のように、
相対的な時間を使う場合が多いと思います。スクリプトの最初に
set
start_t [
clock
seconds]
最後に
set
fin_t [
clock
seconds]
message
"[
expr
$fin_t - $start_t]秒で終了"
と書いておくと、スクリプトの実行に要した時間を表示することができます。
2003.6.9(月) 17:48:54[
編集
]
close
[close]
open
コマンドを使って、ファイルにアクセスした場合は、必ず
close
コマンドで開いたファイルを閉じておきます。
set
file
_ID [
open
test.tcl r]
set
cnt [
read
$
file
_ID]
close
$
file
_ID
2003.6.9(月) 17:49:58[
編集
]
concat
[concat]
要素
をつなぎ合わせて、
リスト
にしますが、
要素
が
リスト
になっている場合、
要素
をばらばらにしてつなぎ合わせます。
set
list
1 {1 2 3}
set
list
2 {4 5 6}
message
[
concat
$
list
1 $
list
2]
を実行すると、
1 2 3 4 5 6
と表示されます。
同じく
リスト
を作るコマンド
list
の場合は、
リスト
をつなぐ場合は、
リスト
のまま、つなぎます。
set
list
1 {1 2 3}
set
list
2 {4 5 6}
message
[
list
$
list
1 $
list
2]
を実行すると、
{1 2 3} {4 5 6}
と表示されます。
2003.6.9(月) 17:50:33[
編集
]
continue
[continue]
ループをスキップします。
for {
set
i 0} {$i <= 9} {
incr
i} {
if {$i == 4} {
continue
}
message
$i
}
を実行すると、
1
2
3
5
6
7
8
9
と表示されます。4 が抜けています。
ループを中止する
break
コマンドと同様に、一番内側のループ文だけスキップします。
2003.6.9(月) 17:51:33[
編集
]
create_sphere
[create_sphere]
Shade のコマンドです。
球を作成します。
create_sphere
at {110.0 60.0 300.0} r 70.0 as "球の名前"
の様に指定します。
at のあとに作成される球の中心座標値、r のあとに球の半径、
as のあとに作成される球の名前を指定します。
as 以降を省略すると標準の名前になります。
2003.6.17(火) 12:52:40[
編集
]
Sakura Dictionary Ver. 1.09a
Scripted by
UTANO Lime
(c)
Pastel Carrot
1999-
All rights Reserved.