SICreateCurve("crvlist", 3, 0);
SIAddPointOnCurveAtEnd("crvlist", -3.951, 0.000, 1.651, false);
SIAddPointOnCurveAtEnd("crvlist", -3.214, 0.000, -1.884, false);
SIAddPointOnCurveAtEnd("crvlist", -0.592, 0.000, 1.146, false);
SIAddPointOnCurveAtEnd("crvlist", 1.660, 0.000, 2.856, false);
SIAddPointOnCurveAtEnd("crvlist", 3.272, 0.000, -1.224, false);
GetNurbsCurveListInfo( GetValue("crvlist") );
function GetNurbsCurveListInfo( oCurveList )
{
var oPosition, oUTangent, oNormal, oBiNormal;
var p = XSIMath.CreateVector3();
oGeometry = oCurveList.ActivePrimitive.Geometry;
// Display curve list info
LogMessage( " Name: " + oCurveList.Name );
LogMessage( "FullName: " + oCurveList.FullName );
LogMessage( " Type: " + oCurveList.Type );
// Display geometry info:
LogMessage( " Length: " + oGeometry.Length );
LogMessage( " Closed: " + oGeometry.Closed );
LogMessage( " Nb Points: " + oGeometry.Points.Count );
LogMessage( " Nb Control: " + oGeometry.ControlPoints.Count );
LogMessage( " Nb Curves: " + oGeometry.Curves.Count );
LogMessage( " Nb Facets: " + oGeometry.Facets.Count );
LogMessage( " Nb Segments: " + oGeometry.Segments.Count );
LogMessage( " Nb Clusters: " + oGeometry.Clusters.Count );
LogMessage( "Nb Triangles: " + oGeometry.Triangles.Count ); //crashes Softimage
// Get the lower-level stuff
for ( i = 0; i < oGeometry.Curves.Count; i++ )
{
LogMessage( "--- Curve["+i+"] ---" );
oCurve = oGeometry.Curves(i);
// Find the midpont along the curve
var aValues = new VBArray(oCurve.EvaluatePositionFromPercentage( 50.0 ));
var oPosition = aValues.getItem(0);
var oUTangent = aValues.getItem(1);
var oNormal = aValues.getItem(2);
var oBiNormal = aValues.getItem(3);
LogMessage( " Position[x,y,z]: " + oPosition.x +","+ oPosition.y +","+ oPosition.z );
LogMessage( "U Tangent[x,y,z]: " + oUTangent.x +","+ oUTangent.y +","+ oUTangent.z );
LogMessage( " Normal[x,y,z]: " + oNormal.x +","+ oNormal.y +","+ oNormal.z );
LogMessage( "Bi Normal[x,y,z]: " + oBiNormal.x +","+ oBiNormal.y +","+ oBiNormal.z );
// Display the info
LogMessage( " Nb Knots: " + oCurve.Knots.Count );
LogMessage( " Degree: " + oCurve.Degree );
}
return(0);
} |