Action:
|
Splits the approximating surface for a
VBL_SURF into n four-sided
bs3_surface patches.
|
|
Prototype:
|
outcome api_make_VBL_output_surfaces (
|
|
|
const surface* vbl_sf,
|
// surface with
|
|
|
|
|
// underlying VBL_SURF
|
|
|
double& interior_fit,
|
// achieved interior fit
|
|
|
|
|
// tolerance
|
|
|
double& boundary_fit,
|
// achieved boundary fit
|
|
|
|
|
// tolerance
|
|
|
bs3_surface*& bs3_array,
|
// array of returned
|
|
|
|
|
// bs3_surfaces
|
|
|
int& n,
|
// number of returned
|
|
|
|
|
// bs3_surfaces
|
|
|
logical approx_error
|
// if TRUE, approximate
|
|
|
|
= TRUE
|
// the error
|
|
|
);
|
|
Includes:
|
#include "kernel/acis.hxx"
|
|
#include "kernel/kernapi/api/api.hxx"
|
|
#include "kernel/kernapi/api/kernapi.hxx"
|
|
#include "kernel/kerngeom/surface/surdef.hxx"
|
|
#include "kernel/spline/bs3_srf/bs3surf.hxx"
|
|
#include "baseutil/logical.h"
|
|
Description:
|
This API approximates an
n-sided
VBL_SURF by
n four-sided
bs3_surfaces, which enables
ACIS to output vertex blend surfaces in a form that can be read and used by most other packages.
|
|
|
In
ACIS, the
VBL_SURF is approximated by a
bs3_surface whose parameterization is defined over an
n-sided regular polygon. This API makes up
n four-sided patches that are separated from one another in the original approximating surface parameter space by straight lines radiating from the center of the n-sided polygon to the midpoint of each of the sides. The new approximating surfaces are parameterized over the unit square. Adjacent
bs3_surface patches are made up to have the same number of knot points along common boundaries, and so the surfaces are C0 continuous across the boundaries. However, the parameter lines do not run smoothly across the boundaries, and so the approximation is not C1 or G1 continuous across the patch boundaries.
|
|
|
The API function receives a pointer to a surface, which has an underlying
VBL_SURF. The caller should also supply two doubles, which specify the requested fit tolerances of the approximating surfaces, both on the interior of the
VBL_SURF, and on its boundary. These will return the fit tolerances that the approximating surfaces have achieved, which may be larger than the requested fit tolerances, if these are particularly small, or if the surface is particularly complex. One might, for example, request an internal fit tolerance of .001 and a boundary fit tolerance that is 10 times smaller than this. Note that the interior fit tolerance (but NOT the boundary one) may be passed as exactly -1.0 to mean "do not measure the interior fit", in which case no particular interior fit is guaranteed, except that which comes about naturally by having fit the boundary correctly, and no meaningful value is returned for the achieved interior fit. The function can operate more quickly if no specific interior fit is requested. The internal joins between the patch boundaries are unaffected by this.
|
|
|
The caller must also supply the function with a pointer to a
bs3_surface and a reference to an integer. These will be used to return an array of the approximating
bs3_surfaces and the length of this array, respectively. Additionally, an
approx_error flag can be supplied which specifies whether the errors returned need to be precise or merely a (close) upper bound. If passed
TRUE, the error is bounded approximately but quite closely, and the function will be able to work more quickly.
|
|
|
If the supplied
surface is of type
spline and the underlying
spl_sur is a
VBL_SURF, this API function makes up
n four-sided approximating
bs3_surfaces. A pointer to an array of these
bs3_surfaces is then returned, along with the number of
bs3_surfaces in the array, and the maximum internal and boundary fit tolerances of the
bs3_surfaces. If the supplied surface is not a
spline, or if it is a
spline and the underlying
spl_sur is not a
VBL_SURF, this API function returns a
NULLbs3_surface pointer and sets the number of approximating
bs3_surfaces to zero.
|
|
Errors:
|
A
NULL pointer to a surface is specified. The
spl_sur underlying the surface is not a
VBL_SURF.
|
|
Library:
|
kernel
|
|
Filename:
|
kern/kernel/kernapi/api/kernapi.hxx
|
|
Effect:
|
Read-only
|