InstancerのIndexが9以上でずれる問題の無理やり回避方法のメモ。
※InstanceされるPointはSOPから読むこととする。

最初に
そもそもH19.5からCopy to Pointsのデフォルト値が変わっている。以前はここがint型variantだった。

nameをPoint Wrangleとかでランダムにバラして設定するのは割と面倒。
なので新しく追加されたMerge PackedとAttribute from Piecesを使用するのがいい。

で、この状態だとInstancerでnameにすれば基本的には大丈夫。

int型を使う
いままでのVariantを使用して0-9を超えると過去記事のようにindexがSolaris上でずれてしまう。 godofsuama.hatenablog.com
なのでSolaris上でnameで並んだ際にIndexがずれないようにpirm pathを整理する。

この部分でvariantのMaxをDetail AttributeにPromoteする。
conv_variant部分で以下VEXでを記述。このVEXで701以下までなら整数を英字に変換できる。 この処理はindexを数字のままではなくしたいときに便利。整理とか確認とか。
//max index is 701
int max = detail(1,"max");
int digitArray[];
int digitA = i@variant/26;
int digitB = i@variant%26;
int codepointA = digitA + 65;
int codepointB = digitB + 65;
if(max >= 25 ) {
digitArray[0] = codepointA;
digitArray[1] = codepointB;
}else{
digitArray[0] = codepointB;
}
string encode = encodeutf8(digitArray);
s@variantCode = encode;
こんな感じ。

これをnameにして書き出すとindexがずれづらいPrim Pathにすることができる。

InstancerをvariantにすればOK

注意
Point側にNとupを設定していないとSolaris上で勝手にNとupが設定されてSOPと一致しなくなる。