NURBS サーフェイストリムの完全なデータ記述を戻します。トリムは、NURBS サーフェイス上に投影されたNURBS カーブリストです。データは 1D 配列で戻されます。順序は NurbsSurface.GetTrim メソッドの出力引数と同じです。
注:このメソッドは、JScriptやPerlScriptなどの引数の参照渡しをサポートしないスクリプト言語で使用する必要があります。出力引数の取得の詳細については、About Output Argument Arrays を参照してください。
Object NurbsSurface.GetTrim2( Int32 in_nTrimIndex, siNurbsFormat in_eNurbsFormat ); |
oArray = NurbsSurface.GetTrim2( TrimIndex, [NurbsFormat] ); |
Array。順序は、IsBoundary、ProjectionType、Count、ControlPoints、NbControlPoints、Knots、NbKnots、Closed、Degree、Parameterization です。
パラメータ | タイプ | 説明 |
---|---|---|
TrimIndex | Long | どのトリムを記述するか指定します。 |
NurbsFormat | siNurbsFormat |
NURBs のデータ形式を指定します。 デフォルト値:siSINurbs |
// JScript example : shows how to retrieve the output arguments returned by NurbsSurface.GetTrim2 // Create a sphere with some trims first CreatePrim("Sphere", "NurbsSurface", null, null); CreatePrim("Square", "NurbsCurve", null, null); Scale(null, -0.325581395348837, 1, 1, siRelative, siLocal, siObj, siXYZ, null, null, null, null, null, null, null, 0); Scale(null, 1, 0.732558139534884, 1, siRelative, siLocal, siObj, siXYZ, null, null, null, null, null, null, null, 0); SelectObj("sphere", null, true); ApplyTopoOp("TrimByProjection", "sphere;square", 3, siPersistentOperation, null); // get the trimmed surface var surfs = Application.Selection(0).ActivePrimitive.Geometry.Surfaces; // get the first trim parameters and convert VB array to JScript array var vbArgs = new VBArray(surfs(0).GetTrim2( 0, siSINurbs )); var args = vbArgs.toArray(); // get the bondary flag of curves LogMessage("trim is boundary?: " + args[0] ); // get the projection type LogMessage("projection type: " + args[1] ); // get the number of curves LogMessage("number of curves: " + args[2] ); // get the number of control points per curve var vbArg4 = new VBArray(args[4]); var ncpoints = vbArg4.toArray(); for (i = 0; i < args[2]; i++) { LogMessage("number of control points for curve " + i + ": " + ncpoints[i] ); } // get the control points var vbArg3 = new VBArray(args[3]); var cpts = vbArg3.toArray(); for ( i=0; i<ncpoints.length; i++ ) { for ( j=0, k=0; k<ncpoints[i]; k++, j+=4 ) { LogMessage("crv" + i + "[" + k + "]: " + cpts[j] + ", " + cpts[j+1] + ", " + cpts[j+2] + ", " + cpts[j+3] ); } } // get the number knots per curve var vbArg6 = new VBArray(args[6]); var nknots = vbArg6.toArray(); for (i = 0; i < nknots.length; i++) { LogMessage("number of knots for curve " + i + ": " + nknots[i] ); } // get the knots var vbArg5 = new VBArray(args[5]); var knots = vbArg5.toArray(); for ( j=0; j<nknots.length; j++) { for (i = 0; i < nknots[j]; i++) { LogMessage("crv" + j + ": " + "knots" + i + ": " + knots[i] ); } } // get nurbs curves closeness state var vbArg7 = new VBArray(args[7]); var closes = vbArg7.toArray(); for (i = 0; i < closes.length; i++) { LogMessage("curve" + i + " closeness: " + closes[i] ); } // get nurbs degree var vbArg8 = new VBArray(args[8]); var degrees = vbArg8.toArray(); for (i = 0; i < degrees.length; i++) { LogMessage("curve" + i + " degree: " + degrees[i] ); } // get nurbs parameterization factor var vbArg9 = new VBArray(args[9]); var params = vbArg9.toArray(); for (i = 0; i < params.length; i++) { LogMessage("curve" + i + " parameterization: " + params[i] ); } |