Hi~
I want to use RhinoOffsetCurveOnSrf to offset the edge on the brep.
On the left edge has problem.
Attached 3dm belt.3dm (372.3 KB)
My Code as following
const ON_Brep* Brep = NULL;
{
CRhinoGetObject get;
unsigned int geometry_type_filter = 0;
geometry_type_filter |= CRhinoGetObject::polysrf_object;
geometry_type_filter |= CRhinoGetObject::surface_object;
get.SetGeometryFilter(geometry_type_filter);
get.AcceptNothing(true);
get.SetCommandPrompt(L"Select Surface Object");
for (;;)
{
context.m_doc.UnselectAll();
context.m_doc.Redraw();
CRhinoGet::result res = get.GetObjects(1, 0);
if (res == CRhinoGet::object)
{
CRhinoObject* obj = const_cast<CRhinoObject*>(get.Object(0).Object());
Brep = ON_Brep::Cast(obj->Geometry());
break;
}
else if (res == CRhinoGet::cancel)
return CRhinoCommand::cancel;
}
}
// Select Edge
const ON_Curve* Crv = NULL;
{
CRhinoGetObject get;
unsigned int geometry_type_filter = 0;
get.SetGeometryFilter(CRhinoGetObject::edge_object);
get.SetGeometryAttributeFilter(CRhinoGetObject::surface_boundary_edge);
get.AcceptNothing(true);
get.SetCommandPrompt(L"Select Edge");
for (;;)
{
context.m_doc.UnselectAll();
context.m_doc.Redraw();
CRhinoGet::result res = get.GetObjects(1, 0);
if (res == CRhinoGet::object)
{
CRhinoObjRef objref = get.Object(0);
const ON_BrepEdge* e = objref.Edge();
if (e)
Crv = ON_Curve::Cast(e);
break;
}
else if (res == CRhinoGet::cancel)
return CRhinoCommand::cancel;
}
}
if (Brep && Crv)
{
ON_SimpleArray<ON_Curve*> result_curves;
RhinoOffsetCurveOnSrf(Crv, Brep, 0, 1.5, CUtilitys::ConvertTol(0.05), result_curves);
ON_Curve* tmpCrv = NULL;
if (result_curves.Count() > 0)
tmpCrv = *result_curves.First();
result_curves.Zero();
if (tmpCrv)
::RhinoApp().ActiveDoc()->AddCurveObject(*tmpCrv);
}



