'/// ScaleRef 1.0 for XSI 3.5+
'/// By Homam Bahnassi - In|Framez 2004
'--------------------------------------

set oSelection = Application.Selection
CurveLength(oSelection(0))

function CurveLength(oCurve)
	CurveLength = Empty
	if typename(oCurve) <> "X3DObject" then
		logmessage "CurveLength: Invaled Arg0..."
		exit function
	end if
	
	if oCurve.Type <> "crvlist" then
		logmessage "CurveLength: Arg0 is not a curve object..."
		exit function
	end if
	
	'-- Reset scaling before getting the curve length...
	sclx = oCurve.Kinematics.Local.Parameters("sclx").value
	scly = oCurve.Kinematics.Local.Parameters("scly").value 
	sclz = oCurve.Kinematics.Local.Parameters("sclz").value 

	if sclx <> 1 or scly <> 1 or sclz <> 1 then
		logmessage "CurveLength: Resetting scaling..."
		ResetTransform oCurve, siCtr, siScl, siXYZ
	end if
	
	set oNurbsCurveList = oCurve.ActivePrimitive.Geometry 
	set oNurbsCurve = oNurbsCurveList.Curves(0)
	fLength = oNurbsCurve.Length
	
	CurveLength = fLength
	logmessage CurveLength
end function