まずは親のオブジェクト名を取得する処理。
{ string $p[]=listRelatives -p $current`; print("\n"+$p[0]+"\n"); }listRelativesは文字配列を返すため、いったん配列に代入しないといけないのは頂けません。
コレの代替コマンドは
{ string $p = firstParentOf( $current ); print("\n"+$p+"\n"); }文字列で返ってくるのは中々良いのですが、オブジェクト名がロングネームでしか返ってこないので注意。
こういう時など、ロング名をショート名に変更したい場合、
{ string $tmp[]= stringToStringArray( $long,"|" ); string $short=$tmp[size($tmp)-1]; print("\n"+$short+"\n"); }こんな感じで配列の最後に入った値を取得するみたいな、なかなかの面倒くささ。
ネームスペースも外したい場合、更に複雑になりますね。
でも、この処理にも、こんなそのまんまの名称のコマンドが・・・。
{ string $short = shortNameOf( $long ); print("\n"+$short+"\n");ただし、ネームスペースは分離できないようなので、
}
plugNodeStrippedを使用するとDAGパスとネームスペースを一気に除去できます。
2017/09/20追記
で、いちばん欲しいコマンドなのですが、指定したオブジェクトがどんなタイプなのかを調べる処理。
nodeTypeで調べても大抵 "transform"と返ってきます。
なので、子のshapeノードからタイプを調べる必要があるわけですが、これに専用のコマンドは無いようで、自力で行う必要があるみたいなのですね。
こんな風に。
{ string $shape[]=`listRelatives -c -pa -ni -s $target`; string $type=`nodeType $shape[0]`; print("\n"+$type+"\n"); }
まぁ、transformノードに色々ブラ下げていると、nodeTypeに渡す値が$shape[0]に特定できないというのが原因だとは思います。
0 件のコメント:
コメントを投稿