usingRhino;usingRhino.DocObjects;usingRhino.Commands;usingRhino.Geometry;usingRhino.Input;namespace examples_cs
{publicclassAddRadialDimensionCommand:Rhino.Commands.Command{publicoverridestringEnglishName{get{return"csAddRadialDimension";}}protectedoverrideResultRunCommand(RhinoDoc doc,RunMode mode){ObjRef obj_ref;var rc =RhinoGet.GetOneObject("Select curve for radius dimension",true,ObjectType.Curve,out obj_ref);if(rc !=Result.Success)return rc;double curve_parameter;var curve = obj_ref.CurveParameter(out curve_parameter);if(curve ==null)returnResult.Failure;if(curve.IsLinear()|| curve.IsPolyline()){RhinoApp.WriteLine("Curve must be non-linear.");returnResult.Nothing;}// in this example just deal with planar curvesif(!curve.IsPlanar()){RhinoApp.WriteLine("Curve must be planar.");returnResult.Nothing;}var point_on_curve = curve.PointAt(curve_parameter);var curvature_vector = curve.CurvatureAt(curve_parameter);var len = curvature_vector.Length;if(len <RhinoMath.SqrtEpsilon){RhinoApp.WriteLine("Curve is almost linear and therefore has no curvature.");returnResult.Nothing;}var center = point_on_curve +(curvature_vector/(len*len));Plane plane;
curve.TryGetPlane(out plane);var radial_dimension =newRadialDimension(center, point_on_curve, plane.XAxis, plane.Normal,5.0);
doc.Objects.AddRadialDimension(radial_dimension);
doc.Views.Redraw();returnResult.Success;}}}
fromRhinoimport*fromRhino.DocObjectsimport*fromRhino.Commandsimport*fromRhino.Geometryimport*fromRhino.Inputimport*from scriptcontext import doc
defRunCommand():
rc, obj_ref =RhinoGet.GetOneObject("Select curve for radius dimension",True,ObjectType.Curve)if rc !=Result.Success:return rc
curve, curve_parameter = obj_ref.CurveParameter()if curve ==None:returnResult.Failureif curve.IsLinear()or curve.IsPolyline():
print "Curve must be non-linear."returnResult.Nothing# in this example just deal with planar curvesifnot curve.IsPlanar():
print "Curve must be planar."returnResult.Nothing
point_on_curve = curve.PointAt(curve_parameter)
curvature_vector = curve.CurvatureAt(curve_parameter)
len = curvature_vector.Lengthif len <RhinoMath.SqrtEpsilon:
print "Curve is almost linear and therefore has no curvature."returnResult.Nothing
center = point_on_curve +(curvature_vector/(len*len))
_, plane = curve.TryGetPlane()
radial_dimension = \
RadialDimension(center, point_on_curve, plane.XAxis, plane.Normal,5.0)
doc.Objects.AddRadialDimension(radial_dimension)
doc.Views.Redraw()returnResult.Successif __name__=="__main__":RunCommand()
ImportsRhinoImportsRhino.DocObjectsImportsRhino.CommandsImportsRhino.GeometryImportsRhino.InputNamespace examples_vb
PublicClassAddRadialDimensionCommandInheritsRhino.Commands.CommandPublicOverridesReadOnlyPropertyEnglishName()AsStringGetReturn"vbAddRadialDimension"EndGetEndPropertyProtectedOverridesFunctionRunCommand(doc AsRhinoDoc, mode AsRunMode)AsResultDim obj_ref AsObjRef=NothingDim rc =RhinoGet.GetOneObject("Select curve for radius dimension",True,ObjectType.Curve, obj_ref)If rc <>Result.SuccessThenReturn rc
EndIfDim curve_parameter AsDoubleDim curve = obj_ref.CurveParameter(curve_parameter)If curve IsNothingThenReturnResult.FailureEndIfIf curve.IsLinear()OrElse curve.IsPolyline()ThenRhinoApp.WriteLine("Curve must be non-linear.")ReturnResult.[Nothing]EndIf' in this example just deal with planar curvesIfNot curve.IsPlanar()ThenRhinoApp.WriteLine("Curve must be planar.")ReturnResult.[Nothing]EndIfDim point_on_curve = curve.PointAt(curve_parameter)Dim curvature_vector = curve.CurvatureAt(curve_parameter)Dim len = curvature_vector.LengthIf len <RhinoMath.SqrtEpsilonThenRhinoApp.WriteLine("Curve is almost linear and therefore has no curvature.")ReturnResult.[Nothing]EndIfDim center = point_on_curve +(curvature_vector /(len * len))Dim plane AsPlane
curve.TryGetPlane(plane)Dim radial_dimension =NewRadialDimension(center, point_on_curve, plane.XAxis, plane.Normal,5.0)
doc.Objects.AddRadialDimension(radial_dimension)
doc.Views.Redraw()ReturnResult.SuccessEndFunctionEndClassEndNamespace