Adjusting Isocurve Density
Windows only
Problem
When creating a new surface from a selected curve, it is always a single isocurve crossing the surface. One has to adjust isocurve density after the fact from Rhino’s Properties window. It is possible to do this automatically from a plugin?
Solution
The isocurve density for surface object is stored on the object’s attributes. For C/C++ plugins, this would be the CRhinoObjectAttributes
and ON_3dmObjectAttributes
classes. Just set the m_wire_density
property. Note: setting this property to zero (0) will disable the display of isocurves for that object.
Example
CRhinoCommand::result CCommandFooBar::RunCommand( const CRhinoCommandContext& context )
{
CRhinoGetObject go;
go.SetGeometryFilter( CRhinoGetObject::surface_object );
go.GetObjects( 1, 1 );
if( go.CommandResult() == CRhinoCommand::success )
{
const CRhinoObjRef& objref = go.Object(0);
const CRhinoBrepObject* brep_obj = CRhinoBrepObject::Cast( objref.Object() );
if( brep_obj )
{
CRhinoObjectAttributes atts = brep_obj->Attributes();
atts.m_wire_density = 3; // for example
context.m_doc.ModifyObjectAttributes( objref, atts );
context.m_doc.Redraw();
}
}
return go.CommandResult();
}