Patch Query

I need to decompose a complex surface into Coons Patch(16 pts. form).The 'patch & patches' routine I got in GeomConvert->BSplineSurfaceToBezier doesn't solve my purpose as I'm looking for the 16point Poision vector.

Pls help me out....


Pavitra's picture


You might not got my point.

Let I'v a simple BSpline surface having 4 vertices.Now I'd like to break the surface into patches in U,W direction at parametric interval say- 0,1/3,2/3,1.
Is there any API available in OCC which can perform the operation giving all the 16 cordinate positions.

Waiting for your tips.

Pavitra Mukherjee

Roman Lygin's picture

Hello Pavitra,

Don't remember if more A tailored approach is available but at least there is a generic one. ShapeUpgrade_SplitSurface does the work for you.

Handle(Geom_BSplineSurface) aBSS = ...;
Handle(ShapeUpgrade_SplitSurface) aSS = new ShapeUpgrade_SplitSurface;
aSS->Init (aBSS);
aSS->SetUSplitValues (...);
aSS->SetVSplitValues (...);
aSS->Perform ();
Handle(ShapeExtend_CompositeSurface) aCompSurf = aSS->ResSurface();
//then iterate over a CompSurf to retrieve your patches

Hope this helps.

Roman Lygin's picture

Geom_BSplineSurface::Segment (u1, u2, v1, v2) IS a more tailored approach - really forgot it :-(.
ShapeUpgrade_SplitSurface is more general but can use Segment()inside - upon flag settings - for NURBS.