How To Create an Ellipsoid using 3D ACIS
The 3D analytics supported directly in 3D ACIS include: sphere, block, pyramid, cone, and torus. These shapes can be changed to more generalized shapes using simple tricks that may not be known by everyone. For instance, to create a well behaved ellipsoid, convert a sphere to a spline and perform non-uniform scaling on it, as shown by the following Scheme script:
(define ellipsoid (lambda (r1 r2 r3)
(define x (solid:sphere 0 0 0 1 ) )
(define saved_new_periodic_splitting (option:set 'new_periodic_splitting 3 ) )
(define ellipsoid (entity:spline-convert x))
(entity:delete x)
(entity:scale ellipsoid r1 r2 r3)
(option:set 'new_periodic_splitting saved_new_periodic_splitting )
ellipsoid
))
(ellipsoid 0.2 0.3 0.4)
In C++, you would perform something like the following:
BODY* ellipsoid = 0;
outcome result;
check_outcome( result = api_set_int_option( "new_periodic_splitting", 3 ) );
check_outcome( result = api_solid_sphere( SPAposition( 0, 0, 0 ), 1, ellipsoid ) );
check_outcome( result = api_transform_entity( ellipsoid, scale_transf( radius_x, radius_y, radius_z ) ) );
check_outcome( result = api_change_body_trans( ellipsoid, NULL ) );
The same logic can be applied to the other 3D analytics, as well as other surfaces.