RH_C_FUNCTION ON_Brep* ON_Brep_CopyTrims( const ON_BrepFace* pConstBrepFace, const ON_Surface* pConstSurface, double tolerance) { ON_Brep* rc = NULL; if( pConstBrepFace && pConstSurface ) { ON_Brep* brep = pConstBrepFace->Brep(); int fi = pConstBrepFace->m_face_index; ON_Brep* brp = brep->DuplicateFace(fi, FALSE); ON_Surface* srf = pConstSurface->DuplicateSurface(); int si = brp->AddSurface(srf); brp->m_F[0].ChangeSurface(si); if (brp->RebuildEdges(brp->m_F[0], tolerance, TRUE, TRUE)) { brp->Compact(); } else { delete brp; } rc = brp; } return rc; }