ポイントの位置を取得するために使ってみました。便利なのでメモっておきます。
このMethodを使うと、フレームとコンストラクションモードを指定が出来ます。
何がいいかというと、オブジェクトにモーションが付いていても、他のフレームや、元のジオメトリのポイント位置を取得することが出来ます。
例えば、X<0 のポイントを選択するファンクションを作ってみましょう:
SelectObj (HalfPoints(selection(0), 1) )
function HalfPoints(oObj, kine, zero_Range){
// X < 0 にすると 0 も含まれるので、このzero_Rangeの数値をひいておこう
// 指定されていなければ、0.0001にしましょう。
var zero_Range = zero_Range == null ? 0.0001 : zero_Range
//ポイントを取得
var oPoints = oObj.ActivePrimitive.Geometry.Points;
//ポイントの数を取得 (ポイントの数を取得しておいた方がループが速くなります)
var oPointsCount = oPoints.Count;
//ターゲットポイントのコレクションを作っておく
var oTargetPoints = oObj.ActivePrimitive.Geometry.CreateSubComponent(siVertexCluster);
//ポイントをループ
for ( var i=0; i < oPointsCount; i++ ) {
// ポイントの位置を取得
// kine = 0 = グローバル値
// kine = 1 = ローカル値
var oPos = kine == 1 ? oPoints(i).Position : XSIMath.MapObjectPositionToWorldSpace(oObj.Kinematics.Global.Transform, oPoints(i).Position);
if (oPos.x < 0 - zero_Range){
oTargetPoints.Addelement(oPoints(i).index)
}
}
return oTargetPoints;
}
すると、こうなります:

でも、この列
//ポイントを取得
var oPoints = oObj.ActivePrimitive.Geometry.Points;
のGeometryにGetGeometry2(null, 0)を入れ替えると
//ポイントを取得
var oPoints = oObj.ActivePrimitive.GetGeometry2(null, 0).Points;
ポーズと関係なく元のジオメトリの位置を取得出来ます:

null は フレーム数。 null にすると現フレームになります。
0 は siConstructionModeModeling なので、元のジオメトリを取得します。
以上。