Offset Curve
Demonstrates how to offset curves to one side or another by a distance.
partial class Examples
{
public static Result OffsetCurve(RhinoDoc doc)
{
ObjRef obj_ref;
var rs = RhinoGet.GetOneObject(
"Select Curve", false, ObjectType.Curve, out obj_ref);
if (rs != Result.Success)
return rs;
var curve = obj_ref.Curve();
if (curve == null)
return Result.Nothing;
Point3d point;
rs = RhinoGet.GetPoint("Select Side", false, out point);
if (rs != Result.Success)
return rs;
if (point == Point3d.Unset)
return Result.Nothing;
var curves = curve.Offset(point, Vector3d.ZAxis, 1.0,
doc.ModelAbsoluteTolerance, CurveOffsetCornerStyle.None);
foreach (var offset-curve in curves)
doc.Objects.AddCurve(offset-curve);
doc.Views.Redraw();
return Result.Success;
}
}
Partial Friend Class Examples
Public Shared Function OffsetCurve(ByVal doc As RhinoDoc) As Result
Dim obj_ref As ObjRef = Nothing
Dim rs = RhinoGet.GetOneObject("Select Curve", False, ObjectType.Curve, obj_ref)
If rs IsNot Result.Success Then
Return rs
End If
Dim curve = obj_ref.Curve()
If curve Is Nothing Then
Return Result.Nothing
End If
Dim point As Point3d = Nothing
rs = RhinoGet.GetPoint("Select Side", False, point)
If rs IsNot Result.Success Then
Return rs
End If
If point Is Point3d.Unset Then
Return Result.Nothing
End If
Dim curves = curve.Offset(point, Vector3d.ZAxis, 1.0, doc.ModelAbsoluteTolerance, CurveOffsetCornerStyle.None)
For Each offset-curve In curves
doc.Objects.AddCurve(offset-curve)
Next offset-curve
doc.Views.Redraw()
Return Result.Success
End Function
End Class
from Rhino import *
from Rhino.DocObjects import *
from Rhino.Geometry import *
from Rhino.Input import *
from Rhino.Commands import *
from scriptcontext import doc
import rhinoscriptsyntax as rs
def RunCommand():
rc, obj_ref = RhinoGet.GetOneObject("Select Curve", False, ObjectType.Curve)
if rc != Result.Success:
return rc
curve = obj_ref.Curve()
if curve == None:
return Result.Nothing
rc, point = RhinoGet.GetPoint("Select Side", False)
if rc != Result.Success:
return rc
if point == Point3d.Unset:
return Result.Nothing
curves = curve.Offset(point, Vector3d.ZAxis, 1.0, doc.ModelAbsoluteTolerance, CurveOffsetCornerStyle.None)
for offset_curve in curves:
doc.Objects.AddCurve(offset_curve)
doc.Views.Redraw()
return Result.Success
if __name__ == "__main__":
RunCommand()