Please suggest any method other than pNurbsSurface->makenonrational()
Hi Vamsi,
Why not use ON_NurbsSurface::MakeNonRational()
? What problem are you trying to solve? Any additional details you can provide might help us help you find a solution.
Thanks,
β Dale
Hi Dale,
I need to convert a surface from rational to non rational form. After conversation the surface should almost look like earlier one with tolerance. Suppose if I convert a rational circle to a non rational curve, the curve should almost look like a circle. Which means number of control point will be more in non rational curve after conversion.
Thanks and Regards,
VK.
Do you want to Fit a new non-rational curve to the old rational curve? http://developer.rhino3d.com/api/RhinoCommon/html/M_Rhino_Geometry_Curve_Fit.htm
Thanks for replying. I want fit a rational surface into a new non rational surface.
I think this will do itβ¦
/*
Description:
Fits a new surface through an existing surface.
Parameters:
surface_in - [in] the surface to fit.
udegree - [in] the output surface U degree. Must be bigger than 1.
vdegree - [in] the output surface V degree. Must be bigger than 1.
dFitTol - [in] the fitting tolerance.
If dFitTol is ON_UNSET_VALUE or <=0.0, the document absolute tolerance is used.
pAchievedTol - [out] if not NULL this will be used for the achieved tolerance.
pAchievedTol is always <= dFitTol.
Returns:
pointer to surface if success.
NULL if unsuccessful.
Notes:
*/
RHINO_SDK_FUNCTION
ON_Surface* RhinoFitSurface(
const ON_Surface& surface_in,
int udegree = 3,
int vdegree = 3,
double dFitTol = ON_UNSET_VALUE,
double* pAchievedTol = nullptr);
If you are using openNURBS in the context of the Rhino C++ SDK, then the RhinoFitSurface
function might be what you need.
If you using the standalone openNURBS toolkit, then we do not have a solution for as the toolkit does not include a surface fitter. I guess you will have to keep adding knots to the original surface until the conversion meets the tolerance requirement.
β Dale