See that
For SVG plugin I have done that
public XmlNode WriteSVGCurve(XmlDocument xmlDoc, Curve curve, Rhino.DocObjects.RhinoObject rhobj)
{
//if (testIfCurveVisibleInView(curve, DirectionOfProjection, doc.ModelAngleToleranceRadians, doc.ModelAbsoluteTolerance))
//{
if (curve.IsLinear())
{
return WriteSVGLine(xmlDoc, curve, rhobj);
}//End if linear
else
{
Polyline polyline;
if (curve.TryGetPolyline(out polyline))
{
return WriteSVGPolyline(xmlDoc, polyline, rhobj);
}//End if polyline
else
{
Circle circle;
if (curve.TryGetCircle(out circle))
{
if (Vector3d.Multiply(circle.Normal, DirectionOfProjection) < 0.9999) return WriteSVGBezier(xmlDoc, curve, rhobj);
else return WriteSVGCircle(xmlDoc, circle, rhobj);
}
else
{
return WriteSVGBezier(xmlDoc, curve, rhobj);
}
}
}
//}
//else return null;
}