# Differences

This shows you the differences between two versions of the page.

 — developer:sdksamples:curvelength [2015/09/14] (current) Line 1: Line 1: + ====== Calculating partial lengths of curves ====== + > **Developer:​** //​[[developer:​cplusplusplugins|C++]]//​ + > **Summary:​** //​Demonstrates how to calculate the length of a curve from the start point to some point on the curve.// + + ===== Example ===== + + + CRhinoCommand::​result CCommandTest::​RunCommand( const CRhinoCommandContext&​ context ) + { + CRhinoGetObject go; + go.SetCommandPrompt( L"​Select curve" ); + go.SetGeometryFilter( CRhinoGetObject::​curve_object ); + go.GetObjects( 1, 1 ); + if( go.CommandResult() != CRhinoCommand::​success ) + return go.CommandResult();​ + + const ON_Curve* crv = go.Object(0).Curve();​ + if( 0 == crv ) + return CRhinoCommand::​failure;​ + + CRhinoGetPoint gp; + gp.SetCommandPrompt( L"​Point on surface"​ ); + gp.Constrain( *crv ); + gp.GetPoint();​ + if( gp.CommandResult() != CRhinoCommand::​success ) + return gp.CommandResult();​ + + ON_3dPoint pt = gp.Point(); + + double t = 0.0; + if( crv->​GetClosestPoint(pt,​ &t) ) + { + ON_Interval domain = crv->​Domain();​ + ON_Interval sub_domain( domain.Min(),​ t ); + double length = 0.0; + if( crv->​GetLength(&​length,​ 0.0, &​sub_domain) ) + RhinoApp().Print( L"​Distance from start of curve = %f.\n",​ length ); + } + + return CRhinoCommand::​success;​ + } + ​ + + \\ + + {{tag>​Developer cplusplus}}