/*********************************************************************************************
 *                                                                                           *
 *                                                                                           *
 *   Copyright 1989-2018 by AutoDesSys, Inc.                                                 *
 *                                                                                           *
 *   This software and its associated documentation contains proprietary,                    *
 *   confidential, and trade secret information of AutoDesSys Inc. and may not be            *
 *   disclosed, copied in any form, or used for any purpose except as specifically           *
 *   permitted in writing by AutoDesSys, Inc.                                                *
 *                                                                                           *
 *   AutoDesSys, Inc. grants permission to use the software to those who purchase            *
 *   a license.  Such a usage will be made according to the terms and conditions             *
 *   specified in the license agreement to which a licensee agrees before installing         *
 *   and commencing usage of the software.  The license agreement can be found               *
 *   on the envelop that contains the software CD.                                           *
 *                                                                                           *
 *   AutoDesSys, Inc. also grants permission to licensees to develop extensions to           *
 *   the software, which can be in the form of scripts or plugins.  The permission           *
 *   includes calling the API and call back functions provided by AutoDesSys, Inc.           *
 *   and accessing information relevant to these functions and the general workings          *
 *   of form.Z, but only up to the point to which AutoDesSys, Inc. has chosen to             *
 *   expose, through its form.Z SDK Manual.  All extensions developed by third               *
 *   parties will include a copy of this copyright note in an easily accessible place or     *
 *   a clear instruction to read this original note by AutoDesSys, Inc.                      *
 *                                                                                           *
 *   All the software distributed under a license, either for the purpose of using it or     *
 *   for the purpose of developing extensions, is distributed AS IS, WITHOUT                 *
 *   WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND                                    *
 *   AutoDesSys, Inc. HEREBY DISCLAIMS ALL SUCH WARRANTIES,                                  *
 *   INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF                                         *
 *   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.                                    *
 *                                                                                           *
 *   formZ, RenderZone, and RadioZity are registered trademarks of AutoDesSys, Inc.          *
 *                                                                                           *
 *   form.Z SDK, Version 8.6.3, Dec 03, 2018                                                 *
 *                                                                                           *
 *                                                                                           *
 *********************************************************************************************/


#ifndef _FORMZ_MODEL_PRIM_API_H
#define _FORMZ_MODEL_PRIM_API_H

#include "fz_model_core_api.h"

#ifdef __cplusplus
extern "C" {
#endif


/****************************************************************

	fz_objt_prim_cap_type_enum


	Description
		Enum for closure type of primitives. Used for the FZ_OBJT_SPHR_PARM_CAP_TYPE, 
		FZ_OBJT_CYLN_PARM_CAP_TYPE,FZ_OBJT_CONE_PARM_CAP_TYPE,FZ_OBJT_TORS_PARM_CAP_TYPE, 
		parameters of the respective primitives when getting / setting their 
		closure type.

	Members
		FZ_OBJT_PRIM_CAP_TYPE_NONE
			No closure.
		FZ_OBJT_PRIM_CAP_TYPE_AXIAL
			Axial closure.
		FZ_OBJT_PRIM_CAP_TYPE_CENTER
			Center closure.

	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_sphr_parm_get,fz_objt_edit_sphr_parm_set, 
		fz_objt_edit_cyln_parm_get,fz_objt_edit_cyln_parm_set, 
		fz_objt_edit_cone_parm_get,fz_objt_edit_cone_parm_set, 
		fz_objt_edit_tors_parm_get,fz_objt_edit_tors_parm_set, 

 ****************************************************************/
typedef enum fz_objt_prim_cap_type_enum
{
	FZ_OBJT_PRIM_CAP_TYPE_NONE = 0,
	FZ_OBJT_PRIM_CAP_TYPE_AXIAL,
	FZ_OBJT_PRIM_CAP_TYPE_CENTER,
	
	MODEL_PRIM_CAP_TYPE_MAX

} fz_objt_prim_cap_type_enum;





/****************************************************************

	FZ_OBJT_TYPE_CUBE


	Description
		Unique identifier for the cube object type.
 ****************************************************************/
#define FZ_OBJT_TYPE_CUBE		"\x24\xb1\x0c\x27\xcc\xb5\x4d\x2d\x9d\xe6\x29\xf5\xec\x0c\x2d\x32"

/****************************************************************

	fz_objt_cube_parm_enum


	Description
		Parameter identifiers for a parametric cube object. Used for the 
		"which" argument of fz_objt_edit_cube_parm_get and fz_objt_edit_cube_parm_set.

	Members
		FZ_OBJT_CUBE_PARM_WIDTH
			Editing - Cube width.
			Type: double
			Range: 0.0
		FZ_OBJT_CUBE_PARM_DEPTH
			Editing - Cube depth.
			Type: double
			Range: 0.0
		FZ_OBJT_CUBE_PARM_HEIGHT
			Editing - Cube height.
			Type: double
			Range: 0.0
		FZ_OBJT_CUBE_PARM_ORIGIN
			Editing - Cube origin.
			Type: fz_xyz_td
		FZ_OBJT_CUBE_PARM_ROTATION
			Editing - Cube rotation. 
			Rotation angles are applied in z y x order to transform 
			the cube from alignment with the world axes to its 
			3d orientation
			Type: fz_xyz_td

	Availability	5.0.0.0


	See Also
		fz_objt_edit_cube_parm_get, fz_objt_edit_cube_parm_set

 ****************************************************************/
typedef enum fz_objt_cube_parm_enum
{
	FZ_OBJT_CUBE_PARM_WIDTH = 0,

	FZ_OBJT_CUBE_PARM_DEPTH,
											
	FZ_OBJT_CUBE_PARM_HEIGHT,
												
	FZ_OBJT_CUBE_PARM_ORIGIN,
												
	FZ_OBJT_CUBE_PARM_ROTATION,

	MODEL_CUBE_PARM_MAX
	
} fz_objt_cube_parm_enum;

/****************************************************************

	fz_objt_cnstr_cube



	Description
		Creates a cube primitive

	Parameters
		windex  [Input]
			project window index
		wdh  [Input]
			width, depth, height
			Range: 0.0
		origin  [Input, Optional]
			origin
			Default Value: {0,0,0}
		rotation  [Input, Optional]
			rotation angles, applied in z,y,x order
			Default Value: {0,0,0}
		obj  [Result]
			new object

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_cube_parm_set,fz_objt_edit_cube_parm_get

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_cube_func) (
	fzrt_int 			windex,
	fz_xyz_td			*wdh,
	fz_xyz_td			*origin,
	fz_xyz_td			*rotation,
	fz_objt_ptr	*obj
	);

/****************************************************************

	fz_objt_edit_cube_parm_get



	Description
		Gets a parameter of a cube.

	Parameters
		windex  [Input]
			project window index
		obj  [Input]
			object
		which  [Input]
			parameter id
		data  [Result]
			parameter data

	Returns
		Error codes 
		MODEL_ERR_WRONG_OBJT_TYPE	- object passed in is not a cube


	Availability	5.0.0.0

	Plugin Example
		double		width; 
		fz_type_td	data;

		fz_objt_edit_cube_parm_get(windex,obj,FZ_OBJT_CUBE_PARM_WIDTH,&data); 
		fz_type_get_double(&width,&data);
	Script Example
		double		width;

		fz_objt_edit_cube_parm_get(windex,obj,FZ_OBJT_CUBE_PARM_WIDTH,width); 
	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_cube_parm_set,fz_objt_cnstr_cube,fz_objt_edit_parm_regen

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_edit_cube_parm_get_func) (
	fzrt_int					windex,
	fz_objt_ptr			obj,
	fz_objt_cube_parm_enum	which,
	fz_type_td				*data
	);

/****************************************************************

	fz_objt_edit_cube_parm_set



	Description
		Sets a parameter of a cube. Note, that the shape of the cube 
		is not changed until the function fz_objt_edit_parm_regen has 
		been called.

	Parameters
		windex  [Input]
			project window index
		obj  [Input]
			object
		which  [Input]
			parameter id
		data  [Input]
			parameter data

	Returns
		Error codes 
		MODEL_ERR_WRONG_OBJT_TYPE	- object passed in is not a cube


	Availability	5.0.0.0

	Plugin Example
		double		width; 
		fz_type_td	data;

		width = 10.0;

		fz_type_set_double(&data,&width); 
		fz_objt_edit_cube_parm_set(windex,obj,FZ_OBJT_CUBE_PARM_WIDTH,&data); 
		fz_objt_edit_parm_regen(windex,obj);
	Script Example
		double		width;

		width = 10.0; 
		fz_objt_edit_cube_parm_set(windex,obj,FZ_OBJT_CUBE_PARM_WIDTH,width); 
		fz_objt_edit_parm_regen(windex,obj); 
	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_cube_parm_get,fz_objt_cnstr_cube,fz_objt_edit_parm_regen

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_edit_cube_parm_set_func) (
	fzrt_int					windex,
	fz_objt_ptr			obj,
	fz_objt_cube_parm_enum	which,
	fz_type_td				*data
	);







/****************************************************************

	FZ_OBJT_TYPE_SPHR


	Description
		Unique identifier for the sphere object type.
 ****************************************************************/
#define FZ_OBJT_TYPE_SPHR		"\xb5\x3d\xa1\x43\xb4\xef\x41\x00\x80\x64\x0f\x46\x27\x88\x3c\x26"

/****************************************************************

	fz_objt_sphr_cnstr_opts_ptr


	Description
		data structure to hold options for the constructions of a sphere. 
		This type is used to pass additional construction options to the 
		function fz_objt_cnstr_sphr. The individual fields of this type 
		can be accessed and set via fz_objt_cnstr_sphr_opts_get and 
		fz_objt_cnstr_sphr_opts_set.

	Availability	5.0.0.0


	See Also
		fz_objt_cnstr_sphr, fz_objt_cnstr_sphr_opts_get, fz_objt_cnstr_sphr_opts_set

 ****************************************************************/
typedef struct	sphr_cnstr_opts_td *fz_objt_sphr_cnstr_opts_ptr;

/****************************************************************

	fz_objt_sphr_parm_enum


	Description
		Parameter identifiers for a parametric sphere object. Used for the 
		"which" argument of fz_objt_cnstr_sphr_opts_get,fz_objt_cnstr_sphr_opts_set, 
		fz_objt_edit_sphr_parm_get,fz_objt_edit_sphr_parm_set

	Members
		FZ_OBJT_SPHR_PARM_PARTIAL
			Construction and Editing - Sphere partial on (TRUE) or off (FALSE).
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_OBJT_SPHR_PARM_CAP_TYPE
			Construction and Editing - Sphere closure type. 
			ptype		fz_objt_prim_cap_type_enum
			Default Value: FZ_OBJT_PRIM_CAP_TYPE_AXIAL
		FZ_OBJT_SPHR_PARM_U_MINMAX
			Construction and Editing - Sphere horizontal min max. 
			The x value indicates the start of the sphere surface in the 
			horizontal direction (along the sphere's equator). The y value indicates 
			the end. x must be less than y. For example, x = 0.0, y = 0.5 defines a 
			half sphere, starting at the sphere's local positive x axis, 
			going counterclockwise, ending at the negative x axis.
			Type: fz_xy_td
			Range: 0.0
			Default Value: {0.0,1.0}
		FZ_OBJT_SPHR_PARM_V_MINMAX
			Construction and Editing - Sphere vertical min max. 
			The x value indicates the start of the sphere surface in the 
			vertical direction (along the sphere's north south direction). 
			The y value indicates the end. x must be less than y. x = 0.0 means 
			that the sphere starts at the south pole. 
			For example, x = 0.5, y = 1.0 defines the northern hemisphere.
			Type: fz_xy_td
			Range: 0.0
			Default Value: {0.5,1.0}
		FZ_OBJT_SPHR_PARM_RADII
			Editing - Sphere radii.
			Type: fz_xyz_td
			Range: 0.0
		FZ_OBJT_SPHR_PARM_ORIGIN
			Editing - Sphere origin.
			Type: fz_xyz_td
		FZ_OBJT_SPHR_PARM_ROTATION
			Editing - Sphere rotation. 
			Rotation angles are applied in z y x order to transform 
			the sphere from alignment with the world axes to its 
			3d orientation.
			Type: fz_xyz_td

	Availability	5.0.0.0


	See Also
		fz_objt_cnstr_sphr_opts_get, fz_objt_cnstr_sphr_opts_set

 ****************************************************************/
typedef enum fz_objt_sphr_parm_enum
{
	
	FZ_OBJT_SPHR_PARM_PARTIAL = 0,
										
	FZ_OBJT_SPHR_PARM_CAP_TYPE,
											
	FZ_OBJT_SPHR_PARM_U_MINMAX,
											
	FZ_OBJT_SPHR_PARM_V_MINMAX,

	
	
	FZ_OBJT_SPHR_PARM_RADII,
											
	FZ_OBJT_SPHR_PARM_ORIGIN,
											
	FZ_OBJT_SPHR_PARM_ROTATION,

	MODEL_SPHR_PARM_MAX
	
} fz_objt_sphr_parm_enum;


/****************************************************************

	fz_objt_cnstr_sphr_opts_init



	Description
		Allocates sphere construction options and fills all options 
		with default values.

	Parameters
		windex  [Input]
			project window index
		opts  [Result]
			construction options

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_sphr_opts_finit,fz_objt_cnstr_sphr_opts_get,fz_objt_cnstr_sphr_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_sphr_opts_init_func) (
	fzrt_int				windex,
	fz_objt_sphr_cnstr_opts_ptr	*opts
	);

/****************************************************************

	fz_objt_cnstr_sphr_opts_get



	Description
		Gets the value of a sphere's construction option. Note, that 
		only those values in fz_objt_sphr_parm_enum are accepted 
		which are tagged for the construction options. See 
		fz_objt_sphr_parm_enum for details.

	Parameters
		windex  [Input]
			project window index
		opts  [Input]
			construction options
		which  [Input]
			parameter id
		data  [Result]
			parameter data

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_sphr_opts_init,fz_objt_cnstr_sphr_opts_finit,fz_objt_cnstr_sphr_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_sphr_opts_get_func) (
	fzrt_int					windex,
	fz_objt_sphr_cnstr_opts_ptr		opts,
	fz_objt_sphr_parm_enum	which,
	fz_type_td				*data
	);

/****************************************************************

	fz_objt_cnstr_sphr_opts_set



	Description
		Sets the value of a sphere's construction option. Note, that 
		only those values in fz_objt_sphr_parm_enum are accepted 
		which are tagged for the construction options. See 
		fz_objt_sphr_parm_enum for details.

	Parameters
		windex  [Input]
			project window index
		opts  [Input]
			construction options
		which  [Input]
			parameter id
		data  [Input]
			parameter data

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_sphr_opts_init,fz_objt_cnstr_sphr_opts_finit,fz_objt_cnstr_sphr_opts_get

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_sphr_opts_set_func) (
	fzrt_int					windex,
	fz_objt_sphr_cnstr_opts_ptr		opts,
	fz_objt_sphr_parm_enum	which,
	fz_type_td				*data
	);

/****************************************************************

	fz_objt_cnstr_sphr_opts_finit



	Description
		Frees sphere construction options. The opts pointer 
		is deallocated and returned back as NULL.

	Parameters
		windex  [Input]
			project window index
		opts  [Input, Result]
			options (will become NULL)

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_sphr_opts_init,fz_objt_cnstr_sphr_opts_get,fz_objt_cnstr_sphr_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_sphr_opts_finit_func) (
	fzrt_int				windex,
	fz_objt_sphr_cnstr_opts_ptr	*opts
	);

/****************************************************************

	fz_objt_cnstr_sphr



	Description
		Creates a sphere primitive

	Parameters
		windex  [Input]
			project window index
		rx_ry_rz  [Input]
			radius x, radius y, radius z
			Range: 0.0
		origin  [Input, Optional]
			origin
			Default Value: {0,0,0}
		rotation  [Input, Optional]
			rotation angles, applied in z,y,x order
			Default Value: {0,0,0}
		opts  [Input, Optional]
			construction options. For defaults see fz_objt_sphr_parm_enum.
		refn_opts  [Input, Optional]
			display resolution options. For defaults see fz_attr_refn_parm_enum.
		obj  [Result]
			new object

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_sphr_parm_set,fz_objt_edit_sphr_parm_get

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_sphr_func) (
	fzrt_int 				windex,
	fz_xyz_td				*rx_ry_rz,
	fz_xyz_td				*origin,
	fz_xyz_td				*rotation,
	fz_objt_sphr_cnstr_opts_ptr	opts,
	fz_attr_refn_ptr	refn_opts,
	fz_objt_ptr		*obj
	);

/****************************************************************

	fz_objt_edit_sphr_parm_get



	Description
		Gets a parameter of a sphere.

	Parameters
		windex  [Input]
			project window index
		obj  [Input]
			object
		which  [Input]
			parameter id
		data  [Result]
			parameter data

	Returns
		Error codes 
		MODEL_ERR_WRONG_OBJT_TYPE	- object passed in is not a sphere


	Availability	5.0.0.0

	Plugin Example
		fz_xyz_td		radii; 
		fz_type_td		data;

		fz_objt_edit_sphr_parm_get(windex,obj,FZ_OBJT_SPHR_PARM_RADII,&data); 
		fz_type_get_xyz(&radii,&data);
	Script Example
		fz_xyz_td		radii;

		fz_objt_edit_sphr_parm_get(windex,obj,FZ_OBJT_SPHR_PARM_RADII,radii); 
	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_sphr_parm_set,fz_objt_cnstr_sphr,fz_objt_edit_parm_regen

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_edit_sphr_parm_get_func) (
	fzrt_int					windex,
	fz_objt_ptr			obj,
	fz_objt_sphr_parm_enum	which,
	fz_type_td				*data
	);

/****************************************************************

	fz_objt_edit_sphr_parm_set



	Description
		Sets a parameter of a sphere. Note, that the shape of the sphere 
		is not changed until the function fz_objt_edit_parm_regen has 
		been called.

	Parameters
		windex  [Input]
			project window index
		obj  [Input]
			object
		which  [Input]
			parameter id
		data  [Input]
			parameter data

	Returns
		Error codes 
		MODEL_ERR_WRONG_OBJT_TYPE	- object passed in is not a sphere


	Availability	5.0.0.0

	Plugin Example
		fz_xyz_td		radii; 
		fz_type_td		data;

		radii.x = 10.0; 
		radii.y = 10.0; 
		radii.z = 10.0;

		fz_type_set_xyz(&data,&radii); 
		fz_objt_edit_sphr_parm_set(windex,obj,FZ_OBJT_SPHR_PARM_RADII,&data); 
		fz_objt_edit_parm_regen(windex,obj);
	Script Example
		fz_xyz_td		radii;

		radii = {10.0,10.0,10.0}; 
		fz_objt_edit_sphr_parm_set(windex,obj,FZ_OBJT_SPHR_PARM_RADII,radii); 
		fz_objt_edit_parm_regen(windex,obj); 
	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_sphr_parm_get,fz_objt_cnstr_sphr,fz_objt_edit_parm_regen

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_edit_sphr_parm_set_func) (
	fzrt_int					windex,
	fz_objt_ptr			obj,
	fz_objt_sphr_parm_enum	which,
	fz_type_td				*data
	);




/****************************************************************

	Cone


	Description
		formZ Model Cone objects.
 ****************************************************************/



/****************************************************************

	FZ_OBJT_TYPE_CONE


	Description
		Unique identifier for the cone object type.
 ****************************************************************/
#define FZ_OBJT_TYPE_CONE		"\x41\xc3\x18\x37\x88\x60\x4a\xc3\xaa\x7a\x1f\xa7\x09\x92\xc6\x36"

/****************************************************************

	fz_objt_cone_cnstr_opts_ptr


	Description
		data structure to hold options for the constructions of a cone. 
		This type is used to pass additional construction options to the 
		function fz_objt_cnstr_cone. The individual fields of this type 
		can be accessed and set via fz_objt_cnstr_cone_opts_get and 
		fz_objt_cnstr_cone_opts_set.

	Availability	5.0.0.0


	See Also
		fz_objt_cnstr_cone, fz_objt_cnstr_cone_opts_get, fz_objt_cnstr_cone_opts_set

 ****************************************************************/
typedef struct	cone_cnstr_opts_td *fz_objt_cone_cnstr_opts_ptr;

/****************************************************************

	fz_objt_cone_parm_enum


	Description
		Parameter identifiers for a parametric cone object. Used for the 
		"which" argument of fz_objt_cnstr_cone_opts_get,fz_objt_cnstr_cone_opts_set, 
		fz_objt_edit_cone_parm_get,fz_objt_edit_cone_parm_set

	Members
		FZ_OBJT_CONE_PARM_PARTIAL
			Construction and Editing - Cone partial on (TRUE) or off (FALSE).
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_OBJT_CONE_PARM_CAP_TYPE
			Construction and Editing - Cone closure type. 
			ptype		fz_objt_prim_cap_type_enum
			Default Value: FZ_OBJT_PRIM_CAP_TYPE_AXIAL
		FZ_OBJT_CONE_PARM_U_MINMAX
			Construction and Editing - Cone horizontal min max. 
			The x value indicates the start of the cone surface in the 
			horizontal direction (around the cone's axis). The y value indicates 
			the end. x must be less than y. For example, x = 0.0, y = 0.5 defines a 
			half cone, starting at the cone's local positive x axis, 
			going counterclockwise, ending at the negative x axis.
			Type: fz_xy_td
			Range: 0.0
			Default Value: {0.0,1.0}
		FZ_OBJT_CONE_PARM_RADII
			Editing - Cone radii.
			Type: fz_xy_td
			Range: 0.0
		FZ_OBJT_CONE_PARM_HEIGHT
			Editing - Cone height.
			Type: double
			Range: 0.0
		FZ_OBJT_CONE_PARM_TRUNCATE
			Editing - Cone truncated on (TRUE) or off (FALSE). 
			If set to TRUE, the cone will be truncated using the 
			top ratio parameter. If set to FASLE, the cone 
			always has a tip.
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_OBJT_CONE_PARM_TOPRATIO
			Editing - Cone top ratio. 
			If set to 0.0, the cone has a tip. For values 
			larger than 0.0, the cone appears truncated. A value 
			of 1.0 creates a cylinder. Values larger than 1.0 
			create an inverted truncated cone (top is larger than base).
			Type: double
			Range: 0.0
		FZ_OBJT_CONE_PARM_ORIGIN
			Editing - Cone origin.
			Type: fz_xyz_td
		FZ_OBJT_CONE_PARM_ROTATION
			Editing - Cylinder rotation. 
			Rotation angles are applied in z y x order to transform 
			the cone from alignment with the world axes to its 
			3d orientation.
			Type: fz_xyz_td

	Availability	5.0.0.0


	See Also
		fz_objt_cnstr_cone_opts_get, fz_objt_cnstr_cone_opts_set, fz_objt_edit_cone_parm_get,  
		fz_objt_edit_cone_parm_set

 ****************************************************************/
typedef enum fz_objt_cone_parm_enum
{
	
	FZ_OBJT_CONE_PARM_PARTIAL = 0,
										
	FZ_OBJT_CONE_PARM_CAP_TYPE,
											
	FZ_OBJT_CONE_PARM_U_MINMAX,
	
	
	FZ_OBJT_CONE_PARM_RADII,
											
	FZ_OBJT_CONE_PARM_HEIGHT,
											
	FZ_OBJT_CONE_PARM_TRUNCATE,
											
	FZ_OBJT_CONE_PARM_TOPRATIO,
											
	FZ_OBJT_CONE_PARM_ORIGIN,
											
	FZ_OBJT_CONE_PARM_ROTATION,

	MODEL_CONE_PARM_MAX
	
} fz_objt_cone_parm_enum;

/****************************************************************

	fz_objt_cnstr_cone_opts_init



	Description
		Allocates cone construction options and fills all options 
		with default values.

	Parameters
		windex  [Input]
			project window index
		opts  [Result]
			construction options

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_cone_opts_finit,fz_objt_cnstr_cone_opts_get,fz_objt_cnstr_cone_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_cone_opts_init_func) (
	fzrt_int				windex,
	fz_objt_cone_cnstr_opts_ptr	*opts
	);

/****************************************************************

	fz_objt_cnstr_cone_opts_get



	Description
		Gets the value of a cone's construction option. Note, that 
		only those values in fz_objt_cone_parm_enum are accepted 
		which are tagged for the construction options. See 
		fz_objt_cone_parm_enum for details.

	Parameters
		windex  [Input]
			project window index
		opts  [Input]
			construction options
		which  [Input]
			parameter id
		data  [Result]
			parameter data

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_cone_opts_init,fz_objt_cnstr_cone_opts_finit,fz_objt_cnstr_cone_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_cone_opts_get_func) (
	fzrt_int					windex,
	fz_objt_cone_cnstr_opts_ptr		opts,
	fz_objt_cone_parm_enum	which,
	fz_type_td				*data
	);
											
/****************************************************************

	fz_objt_cnstr_cone_opts_set



	Description
		Sets the value of a cone's construction option. Note, that 
		only those values in fz_objt_cone_parm_enum are accepted 
		which are tagged for the construction options. See 
		fz_objt_cone_parm_enum for details.

	Parameters
		windex  [Input]
			project window index
		opts  [Input]
			construction options
		which  [Input]
			parameter id
		data  [Input]
			parameter data

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_cone_opts_init,fz_objt_cnstr_cone_opts_finit,fz_objt_cnstr_cone_opts_get

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_cone_opts_set_func) (
	fzrt_int					windex,
	fz_objt_cone_cnstr_opts_ptr		opts,
	fz_objt_cone_parm_enum	which,
	fz_type_td				*data
	);

/****************************************************************

	fz_objt_cnstr_cone_opts_finit



	Description
		Frees cone construction options. The opts pointer 
		is deallocated and returned back as NULL.

	Parameters
		windex  [Input]
			project window index
		opts  [Input, Result]
			options (will become NULL)

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_cone_opts_init,fz_objt_cnstr_cone_opts_get,fz_objt_cnstr_cone_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_cone_opts_finit_func) (
	fzrt_int				windex,
	fz_objt_cone_cnstr_opts_ptr	*opts
	);

/****************************************************************

	fz_objt_cnstr_cone



	Description
		Creates a cone primitive

	Parameters
		windex  [Input]
			project window index
		rx_ry_h  [Input]
			radius x, radius y, height
			Range: 0.0
		top_ratio  [Input]
			ratio of truncated top to cone base. If passed 
			as 0.0, the cone is not truncated. Otherwise a flat 
			top face is generated. For example, a value of 0.5 
			creates a truncated top which is half the size of the base.
			Range: 0.0
		origin  [Input, Optional]
			origin
			Default Value: {0,0,0}
		rotation  [Input, Optional]
			rotation angles, applied in z,y,x order
			Default Value: {0,0,0}
		opts  [Input, Optional]
			construction options. For defaults see fz_objt_cone_parm_enum.
		refn_opts  [Input, Optional]
			display resolution options. For defaults see fz_attr_refn_parm_enum.
		obj  [Result]
			new object

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_cone_parm_set,fz_objt_edit_cone_parm_get

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_cone_func) (
	fzrt_int 				windex,
	fz_xyz_td				*rx_ry_h,
	double				top_ratio,
	fz_xyz_td				*origin,
	fz_xyz_td				*rotation,
	fz_objt_cone_cnstr_opts_ptr	opts,
	fz_attr_refn_ptr	refn_opts,
	fz_objt_ptr		*obj
	);


/****************************************************************

	fz_objt_edit_cone_parm_get



	Description
		Gets a parameter of a cone.

	Parameters
		windex  [Input]
			project window index
		obj  [Input]
			object
		which  [Input]
			parameter id
		data  [Result]
			parameter data

	Returns
		Error codes 
		MODEL_ERR_WRONG_OBJT_TYPE	- object passed in is not a cone


	Availability	5.0.0.0

	Plugin Example
		fz_xy_td		radii; 
		fz_type_td		data;

		fz_objt_edit_cone_parm_get(windex,obj,FZ_OBJT_CONE_PARM_RADII,&data); 
		fz_type_get_xy(&radii,&data);
	Script Example
		fz_xy_td		radii;

		fz_objt_edit_cone_parm_get(windex,obj,FZ_OBJT_CONE_PARM_RADII,radii); 
	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_cone_parm_set,fz_objt_cnstr_cone,fz_objt_edit_parm_regen

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_edit_cone_parm_get_func) (
	fzrt_int					windex,
	fz_objt_ptr			obj,
	fz_objt_cone_parm_enum	which,
	fz_type_td				*data
	);

/****************************************************************

	fz_objt_edit_cone_parm_set



	Description
		Sets a parameter of a cone. Note, that the shape of the cone 
		is not changed until the function fz_objt_edit_parm_regen has 
		been called.

	Parameters
		windex  [Input]
			project window index
		obj  [Input]
			object
		which  [Input]
			parameter id
		data  [Input]
			parameter data

	Returns
		Error codes 
		MODEL_ERR_WRONG_OBJT_TYPE	- object passed in is not a cone


	Availability	5.0.0.0

	Plugin Example
		fz_xy_td		radii; 
		fz_type_td		data;

		radius = 10.0;

		fz_type_set_xy(&data,&radii); 
		fz_objt_edit_cone_parm_set(windex,obj,FZ_OBJT_CONE_PARM_RADII,&data); 
		fz_objt_edit_parm_regen(windex,obj);
	Script Example
		fz_xy_td		radii;

		radii = {10.0,10.0}; 
		fz_objt_edit_cone_parm_set(windex,obj,FZ_OBJT_CONE_PARM_RADII,radius); 
		fz_objt_edit_parm_regen(windex,obj); 
	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_cone_parm_get,fz_objt_cnstr_cone,fz_objt_edit_parm_regen

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_edit_cone_parm_set_func) (
	fzrt_int					windex,
	fz_objt_ptr			obj,
	fz_objt_cone_parm_enum	which,
	fz_type_td				*data
	);






/****************************************************************

	Cylinder


	Description
		formZ Model Cylinder objects.
 ****************************************************************/



/****************************************************************

	FZ_OBJT_TYPE_CYLN


	Description
		Unique identifier for the cylinder object type.
 ****************************************************************/
#define FZ_OBJT_TYPE_CYLN		"\x07\x75\xb1\x57\x23\x1e\x4d\x2b\x9f\x82\xe4\x1d\x49\x8b\x4c\x7e"

/****************************************************************

	fz_objt_cyln_cnstr_opts_ptr


	Description
		data structure to hold options for the constructions of a cylinder. 
		This type is used to pass additional construction options to the 
		function fz_objt_cnstr_cyln. The individual fields of this type 
		can be accessed and set via fz_objt_cnstr_cyln_opts_get and 
		fz_objt_cnstr_cyln_opts_set.

	Availability	5.0.0.0


	See Also
		fz_objt_cnstr_cyln, fz_objt_cnstr_cyln_opts_get, fz_objt_cnstr_cyln_opts_set

 ****************************************************************/
typedef struct	cyln_cnstr_opts_td *fz_objt_cyln_cnstr_opts_ptr;

/****************************************************************

	fz_objt_cyln_parm_enum


	Description
		Parameter identifiers for a parametric cylinder object. Used for the 
		"which" argument of fz_objt_cnstr_cyln_opts_get,fz_objt_cnstr_cyln_opts_set, 
		fz_objt_edit_cyln_parm_get,fz_objt_edit_cyln_parm_set

	Members
		FZ_OBJT_CYLN_PARM_PARTIAL
			Construction and Editing - Cylinder artial on (TRUE) or off (FALSE).
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_OBJT_CYLN_PARM_CAP_TYPE
			Construction and Editing - Cylinder closure type. 
			ptype		fz_objt_prim_cap_type_enum
			Default Value: FZ_OBJT_PRIM_CAP_TYPE_AXIAL
		FZ_OBJT_CYLN_PARM_U_MINMAX
			Construction and Editing - Cylinder horizontal min max. 
			The x value indicates the start of the cylinder surface in the 
			horizontal direction (around the cylinder's axis). The y value indicates 
			the end. x must be less than y. For example, x = 0.0, y = 0.5 defines a 
			half cylinder, starting at the cylinder's local positive x axis, 
			going counterclockwise, ending at the negative x axis.
			Type: fz_xy_td
			Range: 0.0
			Default Value: {0.0,1.0}
		FZ_OBJT_CYLN_PARM_RADII
			Editing - Cylinder radii.
			Type: fz_xy_td
			Range: 0.0
		FZ_OBJT_CYLN_PARM_HEIGHT
			Editing - Cylinder height.
			Type: double
			Range: 0.0
		FZ_OBJT_CYLN_PARM_ORIGIN
			Editing - Cylinder origin.
			Type: fz_xyz_td
		FZ_OBJT_CYLN_PARM_ROTATION
			Editing - Cylinder rotation. 
			Rotation angles are applied in z y x order to transform 
			the cylinder from alignment with the world axes to its 
			3d orientation.
			Type: fz_xyz_td

	Availability	5.0.0.0


	See Also
		fz_objt_cnstr_cyln_opts_get, fz_objt_cnstr_cyln_opts_set, fz_objt_edit_cyln_parm_get,  
		fz_objt_edit_cyln_parm_set

 ****************************************************************/
typedef enum fz_objt_cyln_parm_enum
{
	
	FZ_OBJT_CYLN_PARM_PARTIAL = 0,

	FZ_OBJT_CYLN_PARM_CAP_TYPE,
											
	FZ_OBJT_CYLN_PARM_U_MINMAX,

	
	FZ_OBJT_CYLN_PARM_RADII,
											
	FZ_OBJT_CYLN_PARM_HEIGHT,
											
	FZ_OBJT_CYLN_PARM_ORIGIN,
											
	FZ_OBJT_CYLN_PARM_ROTATION,

	MODEL_CYLN_PARM_MAX
	
} fz_objt_cyln_parm_enum;

/****************************************************************

	fz_objt_cnstr_cyln_opts_init



	Description
		Allocates cylinder construction options and fills all options 
		with default values.

	Parameters
		windex  [Input]
			project window index
		opts  [Result]
			construction options

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_cyln_opts_finit,fz_objt_cnstr_cyln_opts_get,fz_objt_cnstr_cyln_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_cyln_opts_init_func) (
	fzrt_int				windex,
	fz_objt_cyln_cnstr_opts_ptr	*opts
	);

/****************************************************************

	fz_objt_cnstr_cyln_opts_get



	Description
		Gets the value of a cylinder's construction option. Note, that 
		only those values in fz_objt_cyln_parm_enum are accepted 
		which are tagged for the construction options. See 
		fz_objt_cyln_parm_enum for details.

	Parameters
		windex  [Input]
			project window index
		opts  [Input]
			construction options
		which  [Input]
			parameter id
		data  [Result]
			parameter data

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_cyln_opts_init,fz_objt_cnstr_cyln_opts_finit,fz_objt_cnstr_cyln_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_cyln_opts_get_func) (
	fzrt_int					windex,
	fz_objt_cyln_cnstr_opts_ptr		opts,
	fz_objt_cyln_parm_enum	which,
	fz_type_td				*data
	);
											
/****************************************************************

	fz_objt_cnstr_cyln_opts_set



	Description
		Sets the value of a cylinder's construction option. Note, that 
		only those values in fz_objt_cyln_parm_enum are accepted 
		which are tagged for the construction options. See 
		fz_objt_cyln_parm_enum for details.

	Parameters
		windex  [Input]
			project window index
		opts  [Input]
			construction options
		which  [Input]
			parameter id
		data  [Input]
			parameter data

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_cyln_opts_init,fz_objt_cnstr_cyln_opts_finit,fz_objt_cnstr_cyln_opts_get

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_cyln_opts_set_func) (
	fzrt_int					windex,
	fz_objt_cyln_cnstr_opts_ptr		opts,
	fz_objt_cyln_parm_enum	which,
	fz_type_td				*data
	);

/****************************************************************

	fz_objt_cnstr_cyln_opts_finit



	Description
		Frees cylinder construction options. The opts pointer 
		is deallocated and returned back as NULL.

	Parameters
		windex  [Input]
			project window index
		opts  [Input, Result]
			options (will become NULL)

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_cyln_opts_init,fz_objt_cnstr_cyln_opts_get,fz_objt_cnstr_cyln_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_cyln_opts_finit_func) (
	fzrt_int				windex,
	fz_objt_cyln_cnstr_opts_ptr	*opts
	);
											
/****************************************************************

	fz_objt_cnstr_cyln



	Description
		Creates a cylinder primitive

	Parameters
		windex  [Input]
			project window index
		rx_ry_h  [Input]
			radius x, radius y, height
			Range: 0.0
		origin  [Input, Optional]
			origin
			Default Value: {0,0,0}
		rotation  [Input, Optional]
			rotation angles, applied in z,y,x order
			Default Value: {0,0,0}
		opts  [Input, Optional]
			construction options. For defaults see fz_objt_cyln_parm_enum
		refn_opts  [Input, Optional]
			display resolution options. For defaults see fz_attr_refn_parm_enum
		obj  [Result]
			new object

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_cyln_parm_set,fz_objt_edit_cyln_parm_get

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_cyln_func) (
	fzrt_int 				windex,
	fz_xyz_td				*rx_ry_h,
	fz_xyz_td				*origin,
	fz_xyz_td				*rotation,
	fz_objt_cyln_cnstr_opts_ptr	opts,
	fz_attr_refn_ptr	refn_opts,
	fz_objt_ptr		*obj
	);

/****************************************************************

	fz_objt_edit_cyln_parm_get



	Description
		Gets a parameter of a cylinder.

	Parameters
		windex  [Input]
			project window index
		obj  [Input]
			object
		which  [Input]
			parameter id
		data  [Result]
			parameter data

	Returns
		Error codes 
		MODEL_ERR_WRONG_OBJT_TYPE	- object passed in is not a cylinder


	Availability	5.0.0.0

	Plugin Example
		fz_xy_td		radii; 
		fz_type_td		data;

		fz_objt_edit_cyln_parm_get(windex,obj,FZ_OBJT_CYLN_PARM_RADII,&data); 
		fz_type_get_xy(&radii,&data);
	Script Example
		fz_xy_td		radii;

		fz_objt_edit_cyln_parm_get(windex,obj,FZ_OBJT_CYLN_PARM_RADII,radii); 
	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_cyln_parm_set,fz_objt_cnstr_cyln,fz_objt_edit_parm_regen

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_edit_cyln_parm_get_func) (
	fzrt_int					windex,
	fz_objt_ptr			obj,
	fz_objt_cyln_parm_enum	which,
	fz_type_td				*data
	);

/****************************************************************

	fz_objt_edit_cyln_parm_set



	Description
		Sets a parameter of a cylinder. Note, that the shape of the cylinder 
		is not changed until the function fz_objt_edit_parm_regen has 
		been called.

	Parameters
		windex  [Input]
			project window index
		obj  [Input]
			object
		which  [Input]
			parameter id
		data  [Input]
			parameter data

	Returns
		Error codes 
		MODEL_ERR_WRONG_OBJT_TYPE	- object passed in is not a cylinder


	Availability	5.0.0.0

	Plugin Example
		fz_xy_td		radii; 
		fz_type_td		data;

		radii.x = 10.0; 
		radii.y = 10.0;

		fz_type_set_xy(&data,&radii); 
		fz_objt_edit_cyln_parm_set(windex,obj,FZ_OBJT_CYLN_PARM_RADII,&data); 
		fz_objt_edit_parm_regen(windex,obj);
	Script Example
		fz_xy_td		radii;

		radii = {10.0,10.0}; 
		fz_objt_edit_cyln_parm_set(windex,obj,FZ_OBJT_CYLN_PARM_RADII,radius); 
		fz_objt_edit_parm_regen(windex,obj); 
	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_cyln_parm_get,fz_objt_cnstr_cyln,fz_objt_edit_parm_regen

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_edit_cyln_parm_set_func) (
	fzrt_int					windex,
	fz_objt_ptr			obj,
	fz_objt_cyln_parm_enum	which,
	fz_type_td				*data
	);



/****************************************************************

	Torus


	Description
		formZ Model Torus objects.
 ****************************************************************/



/****************************************************************

	FZ_OBJT_TYPE_TORS


	Description
		Unique identifier for the torus object type.
 ****************************************************************/
#define FZ_OBJT_TYPE_TORS		"\x9e\xcc\x15\xc2\xd1\x53\x4c\xea\xb6\x38\xc9\x5d\x3f\x61\xca\x6a"

/****************************************************************

	fz_objt_tors_cnstr_opts_ptr


	Description
		data structure to hold options for the constructions of a torus. 
		This type is used to pass additional construction options to the 
		function fz_objt_cnstr_tors. The individual fields of this type 
		can be accessed and set via fz_objt_cnstr_tors_opts_get and 
		fz_objt_cnstr_tors_opts_set.

	Availability	5.0.0.0


	See Also
		fz_objt_cnstr_tors, fz_objt_cnstr_tors_opts_get, fz_objt_cnstr_tors_opts_set

 ****************************************************************/
typedef struct	tors_cnstr_opts_td *fz_objt_tors_cnstr_opts_ptr;

/****************************************************************

	fz_objt_tors_parm_enum


	Description
		Parameter identifiers for a parametric torus object. Used for the 
		"which" argument of fz_objt_cnstr_tors_opts_get,fz_objt_cnstr_tors_opts_set, 
		fz_objt_edit_tors_parm_get,fz_objt_edit_tors_parm_set

	Members
		FZ_OBJT_TORS_PARM_PARTIAL
			Construction and Editing - Torus partial on (TRUE) or off (FALSE).
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_OBJT_TORS_PARM_CAP_TYPE
			Construction and Editing - Torus closure closure type. 
			ptype		fz_objt_prim_cap_type_enum
			Default Value: FZ_OBJT_PRIM_CAP_TYPE_AXIAL
		FZ_OBJT_TORS_PARM_U_MINMAX
			Construction and Editing - Torus horizontal min max. 
			The x value indicates the start of the torus surface in the 
			horizontal direction (around the torus's center axis). The y value indicates 
			the end. x must be less than y. For example, x = 0.0, y = 0.5 defines a 
			half torus, starting at the torus's local positive x axis, 
			going counterclockwise, ending at the negative x axis.
			Type: fz_xy_td
			Range: 0.0
			Default Value: {0.0,1.0}
		FZ_OBJT_TORS_PARM_V_MINMAX
			Construction and Editing - Torus vertical min max. 
			The x value indicates the start of the torus surface in the 
			vertical direction (along the torus's cross section direction). 
			The y value indicates the end. x must be less than y. x = 0.0 means 
			that the torus starts at the horizontal plane. 
			For example, x = 0.5, y = 1.0 defines the lower half (the bottom 
			slice of a bagel), and x = 0.0, y = 0.5 defines the upper half 
			(the part of the bagel with all the poppy seeds on it).
			Type: fz_xy_td
			Range: 0.0
			Default Value: {0.5,1.0}
		FZ_OBJT_TORS_PARM_MAJOR_RADIUS
			Editing - Torus major radius. 
			The torus's major radius cannot be less than the torus's 
			minor x radius.
			Type: double
			Range: 0.0
		FZ_OBJT_TORS_PARM_MINOR_RADII
			Editing - Torus minor radii. 
			The torus's minor x radius cannot be greater than the torus's 
			major radius.
			Type: fz_xy_td
			Range: 0.0
		FZ_OBJT_TORS_PARM_ORIGIN
			Editing - Torus origin.
			Type: fz_xyz_td
		FZ_OBJT_TORS_PARM_ROTATION
			Editing - Torus rotation. 
			Rotation angles are applied in z y x order to transform 
			the torus from alignment with the world axes to its 
			3d orientation.
			Type: fz_xyz_td

	Availability	5.0.0.0


	See Also
		fz_objt_cnstr_tors_opts_get, fz_objt_cnstr_tors_opts_set

 ****************************************************************/
typedef enum fz_objt_tors_parm_enum
{
	
	FZ_OBJT_TORS_PARM_PARTIAL = 0,
										
	FZ_OBJT_TORS_PARM_CAP_TYPE,
											
	FZ_OBJT_TORS_PARM_U_MINMAX,
											
	FZ_OBJT_TORS_PARM_V_MINMAX,
	
	
	FZ_OBJT_TORS_PARM_MAJOR_RADIUS,
											
	FZ_OBJT_TORS_PARM_MINOR_RADII,
											
	FZ_OBJT_TORS_PARM_ORIGIN,
											
	FZ_OBJT_TORS_PARM_ROTATION,

	MODEL_TORS_PARM_MAX
	
} fz_objt_tors_parm_enum;

/****************************************************************

	fz_objt_cnstr_tors_opts_init



	Description
		Allocates torus construction options and fills all options 
		with default values.

	Parameters
		windex  [Input]
			project window index
		opts  [Result]
			construction options

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_tors_opts_finit,fz_objt_cnstr_tors_opts_get,fz_objt_cnstr_tors_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_tors_opts_init_func) (
	fzrt_int				windex,
	fz_objt_tors_cnstr_opts_ptr	*opts
	);

/****************************************************************

	fz_objt_cnstr_tors_opts_get



	Description
		Gets the value of a torus's construction option. Note, that 
		only those values in fz_objt_tors_parm_enum are accepted 
		which are tagged for the construction options. See 
		fz_objt_tors_parm_enum for details.

	Parameters
		windex  [Input]
			project window index
		opts  [Input]
			construction options
		which  [Input]
			parameter id
		data  [Result]
			parameter data

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_tors_opts_init,fz_objt_cnstr_tors_opts_finit,fz_objt_cnstr_tors_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_tors_opts_get_func) (
	fzrt_int					windex,
	fz_objt_tors_cnstr_opts_ptr		opts,
	fz_objt_tors_parm_enum	which,
	fz_type_td				*data
	);

/****************************************************************

	fz_objt_cnstr_tors_opts_set



	Description
		Sets the value of a torus's construction option. Note, that 
		only those values in fz_objt_tors_parm_enum are accepted 
		which are tagged for the construction options. See 
		fz_objt_tors_parm_enum for details.

	Parameters
		windex  [Input]
			project window index
		opts  [Input]
			construction options
		which  [Input]
			parameter id
		data  [Input]
			parameter data

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_tors_opts_init,fz_objt_cnstr_tors_opts_finit,fz_objt_cnstr_tors_opts_get

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_tors_opts_set_func) (
	fzrt_int					windex,
	fz_objt_tors_cnstr_opts_ptr		opts,
	fz_objt_tors_parm_enum	which,
	fz_type_td				*data
	);


/****************************************************************

	fz_objt_cnstr_tors_opts_finit



	Description
		Frees torus construction options. The opts pointer 
		is deallocated and returned back as NULL.

	Parameters
		windex  [Input]
			project window index
		opts  [Input, Result]
			options (will become NULL)

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_tors_opts_init,fz_objt_cnstr_tors_opts_get,fz_objt_cnstr_tors_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_tors_opts_finit_func) (
	fzrt_int				windex,
	fz_objt_tors_cnstr_opts_ptr	*opts
	);

/****************************************************************

	fz_objt_cnstr_tors



	Description
		Creates a torus primitive

	Parameters
		windex  [Input]
			project window index
		maj_radius  [Input]
			major radius, from center to middle of cross section
			Range: minor radius
		rx_ry  [Input]
			minor radius x, minor radius y. 
			The minor radius x must be smaller than the major radius.
			Range: 0.0
		origin  [Input, Optional]
			origin
			Default Value: {0,0,0}
		rotation  [Input, Optional]
			rotation angles, applied in z,y,x order
			Default Value: {0,0,0}
		opts  [Input, Optional]
			construction options For defaults see fz_objt_tors_parm_enum.
		refn_opts  [Input, Optional]
			display resolution options For defaults see fz_attr_refn_parm_enum.
		obj  [Result]
			new object

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_tors_parm_set,fz_objt_edit_tors_parm_get

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_tors_func) (
	fzrt_int 				windex,
	double				maj_radius,
	fz_xy_td				*rx_ry,
	fz_xyz_td				*origin,
	fz_xyz_td				*rotation,
	fz_objt_tors_cnstr_opts_ptr	opts,
	fz_attr_refn_ptr	refn_opts,
	fz_objt_ptr		*obj
	);

/****************************************************************

	fz_objt_edit_tors_parm_get



	Description
		Gets a parameter of a torus.

	Parameters
		windex  [Input]
			project window index
		obj  [Input]
			object
		which  [Input]
			parameter id
		data  [Result]
			parameter data

	Returns
		Error codes 
		MODEL_ERR_WRONG_OBJT_TYPE	- object passed in is not a torus


	Availability	5.0.0.0

	Plugin Example
		double		radius; 
		fz_type_td	data;

		fz_objt_edit_tors_parm_get(windex,obj,FZ_OBJT_TORS_PARM_MAJOR_RADIUS,&data); 
		fz_type_get_double(&radius,&data);
	Script Example
		double		radius;

		fz_objt_edit_tors_parm_get(windex,obj,FZ_OBJT_TORS_PARM_MAJOR_RADIUS,radius); 
	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_tors_parm_set,fz_objt_cnstr_tors,fz_objt_edit_parm_regen

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_edit_tors_parm_get_func) (
	fzrt_int					windex,
	fz_objt_ptr			obj,
	fz_objt_tors_parm_enum	which,
	fz_type_td				*data
	);

/****************************************************************

	fz_objt_edit_tors_parm_set



	Description
		Sets a parameter of a torus. Note, that the shape of the torus 
		is not changed until the function fz_objt_edit_parm_regen has 
		been called.

	Parameters
		windex  [Input]
			project window index
		obj  [Input]
			object
		which  [Input]
			parameter id
		data  [Input]
			parameter data

	Returns
		Error codes 
		MODEL_ERR_WRONG_OBJT_TYPE	- object passed in is not a torus


	Availability	5.0.0.0

	Plugin Example
		double		radius; 
		fz_type_td	data;

		radius = 10.0;

		fz_type_set_double(&data,&radius); 
		fz_objt_edit_tors_parm_set(windex,obj,FZ_OBJT_TORS_PARM_MAJOR_RADIUS,&data); 
		fz_objt_edit_parm_regen(windex,obj);
	Script Example
		double		radius;

		radius = 10.0; 
		fz_objt_edit_tors_parm_set(windex,obj,FZ_OBJT_TORS_PARM_MAJOR_RADIUS,radius); 
		fz_objt_edit_parm_regen(windex,obj); 
	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_tors_parm_get,fz_objt_cnstr_tors,fz_objt_edit_parm_regen

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_edit_tors_parm_set_func) (
	fzrt_int					windex,
	fz_objt_ptr			obj,
	fz_objt_tors_parm_enum	which,
	fz_type_td				*data
	);


/****************************************************************

	Paraboloid


	Description
		formZ Paraboloid objects.  This module contains functions for creating and editing 
		the parameters of paraboloid objects.
 ****************************************************************/


#define FZ_OBJT_TYPE_PRBL		"\xaa\x95\xfb\xfb\xe3\x81\x43\x16\xbf\x85\x4d\xa5\xcd\x5a\x87\xe0"

/****************************************************************

	fz_objt_prbl_cnstr_opts_ptr


	Description
		data structure to hold options for the constructions of a paraboloid. 
		This type is used to pass additional construction options to the 
		function fz_objt_cnstr_hbl1. The individual fields of this type 
		can be accessed and set via fz_objt_cnstr_hbl1_opts_get and 
		fz_objt_cnstr_hbl1_opts_set.

	Availability	5.5.0.0


	See Also
		fz_objt_cnstr_prbl, fz_objt_cnstr_prbl_opts_get, fz_objt_cnstr_prbl_opts_set

 ****************************************************************/
typedef struct	prbl_cnstr_opts_td *fz_objt_prbl_cnstr_opts_ptr;

/****************************************************************

	fz_objt_prbl_parm_enum


	Description
		Parameter identifiers for a parametric parabola object. Used for the 
		"which" argument of fz_objt_cnstr_prbl_opts_get,fz_objt_cnstr_prbl_opts_set, 
		fz_objt_edit_prbl_parm_get,fz_objt_edit_prbl_parm_set

	Members
		FZ_OBJT_PRBL_PARM_PARTIAL
			Construction and Editing - Parabola partial on (TRUE) or off (FALSE).
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_OBJT_PRBL_PARM_CAP_TYPE
			Construction and Editing - Parabola closure closure type. 
			ptype		fz_objt_prim_cap_type_enum
			Default Value: FZ_OBJT_PRIM_CAP_TYPE_AXIAL
		FZ_OBJT_PRBL_PARM_U_MINMAX
			Construction and Editing - Parabola horizontal min max. 
			The x value indicates the start of the parabola surface in the 
			horizontal direction (around the parabola's center axis). The y value indicates 
			the end. x must be less than y. For example, x = 0.0, y = 0.5 defines a 
			half parabola, starting at the parabola's local positive x axis, 
			going counterclockwise, ending at the negative x axis.
			Type: fz_xy_td
			Range: 0.0
			Default Value: {0.0,1.0}
		FZ_OBJT_PRBL_PARM_V_MINMAX
			Construction and Editing - Parabola vertcial min max. 
			The x value indicates the start of the parabola surface in the 
			vertical direction (along the parabola's cross section direction). 
			The y value indicates the end. x must be less than y. x = 0.0 means 
			that the parabola starts at the horizontal plane. 
			For example, x = 0.5, y = 1.0 defines the lower half (the bottom 
			slice of a bagel), and x = 0.0, y = 0.5 defines the upper half 
			(the part of the bagel with all the poppy seeds on it).
			Type: fz_xy_td
			Range: 0.0
			Default Value: {0.5,1.0}
		FZ_OBJT_PRBL_PARM_RADII
			Editing - Parabola radii.
			Type: fz_xy_td
			Range: 0.0
		FZ_OBJT_PRBL_PARM_HEIGHT
			Editing - Parabola height.
			Type: double
			Range: 0.0
		FZ_OBJT_PRBL_PARM_ORIGIN
			Editing - Parabola origin.
			Type: fz_xyz_td
		FZ_OBJT_PRBL_PARM_ROTATION
			Editing - Parabola rotation. 
			Rotation angles are applied in z y x order to transform 
			the parabola from alignment with the world axes to it's 
			3d orientation.
			Type: fz_xyz_td

	Availability	5.5.0.0


	See Also
		fz_objt_cnstr_prbl_opts_get, fz_objt_cnstr_prbl_opts_set

 ****************************************************************/
typedef enum fz_objt_prbl_parm_enum
{
	
	FZ_OBJT_PRBL_PARM_PARTIAL = 0,
										
	FZ_OBJT_PRBL_PARM_CAP_TYPE,
											
	FZ_OBJT_PRBL_PARM_U_MINMAX,
											
	FZ_OBJT_PRBL_PARM_V_MINMAX,
	
	
	FZ_OBJT_PRBL_PARM_RADII,
											
	FZ_OBJT_PRBL_PARM_HEIGHT,
										
	FZ_OBJT_PRBL_PARM_ORIGIN,
											
	FZ_OBJT_PRBL_PARM_ROTATION,

	MODEL_PRBL_PARM_MAX
	
} fz_objt_prbl_parm_enum;

/****************************************************************

	fz_objt_cnstr_prbl_opts_init



	Description
		Allocates parabola construction options and fills all options 
		with default values.

	Parameters
		windex  [Input]
			project window index
		opts  [Result]
			construction options

	Returns
		Error codes


	Availability	5.5.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_prbl_opts_finit,fz_objt_cnstr_prbl_opts_get,fz_objt_cnstr_prbl_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_prbl_opts_init_func) (
	fzrt_int				windex,
	fz_objt_prbl_cnstr_opts_ptr	*opts
	);

/****************************************************************

	fz_objt_cnstr_prbl_opts_get



	Description
		Gets the value of a parabola's construction option. Note, that 
		only those values in fz_objt_prbl_parm_enum are accepted 
		which are tagged for the construction options. See 
		fz_objt_prbl_parm_enum for details.

	Parameters
		windex  [Input]
			project window index
		opts  [Input]
			construction options
		which  [Input]
			parameter id
		data  [Result]
			parameter data

	Returns
		Error codes


	Availability	5.5.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_prbl_opts_init,fz_objt_cnstr_prbl_opts_finit,fz_objt_cnstr_prbl_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_prbl_opts_get_func) (
	fzrt_int					windex,
	fz_objt_prbl_cnstr_opts_ptr		opts,
	fz_objt_prbl_parm_enum	which,
	fz_type_td				*data
	);

/****************************************************************

	fz_objt_cnstr_prbl_opts_set



	Description
		Sets the value of a parabola's construction option. Note, that 
		only those values in fz_objt_prbl_parm_enum are accepted 
		which are tagged for the construction options. See 
		fz_objt_prbl_parm_enum for details.

	Parameters
		windex  [Input]
			project window index
		opts  [Input]
			construction options
		which  [Input]
			parameter id
		data  [Input]
			parameter data

	Returns
		Error codes


	Availability	5.5.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_prbl_opts_init,fz_objt_cnstr_prbl_opts_finit,fz_objt_cnstr_prbl_opts_get

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_prbl_opts_set_func) (
	fzrt_int					windex,
	fz_objt_prbl_cnstr_opts_ptr		opts,
	fz_objt_prbl_parm_enum	which,
	fz_type_td				*data
	);


/****************************************************************

	fz_objt_cnstr_prbl_opts_finit



	Description
		Frees parabola construction options. The opts pointer 
		is deallocated and returned back as NULL.

	Parameters
		windex  [Input]
			project window index
		opts  [Input, Result]
			options (will become NULL)

	Returns
		Error codes


	Availability	5.5.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_prbl_opts_init,fz_objt_cnstr_prbl_opts_get,fz_objt_cnstr_prbl_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_prbl_opts_finit_func) (
	fzrt_int				windex,
	fz_objt_prbl_cnstr_opts_ptr	*opts
	);

/****************************************************************

	fz_objt_cnstr_prbl



	Description
		Creates a parabola primitive

	Parameters
		windex  [Input]
			project window index
		rx_ry_h  [Input]
			radius x, radius y, height
			Range: 0.0
		origin  [Input, Optional]
			origin
			Default Value: {0,0,0}
		rotation  [Input, Optional]
			rotation angles, applied in z,y,x order
			Default Value: {0,0,0}
		opts  [Input, Optional]
			construction options For defaults see fz_objt_prbl_parm_enum.
		refn_opts  [Input, Optional]
			display resolution options For defaults see fz_attr_refn_parm_enum.
		obj  [Result]
			new object

	Returns
		Error codes


	Availability	5.5.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_prbl_parm_set,fz_objt_edit_prbl_parm_get

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_prbl_func) (
	fzrt_int 				windex,
	fz_xyz_td				*rx_ry_h,
	fz_xyz_td				*origin,
	fz_xyz_td				*rotation,
	fz_objt_prbl_cnstr_opts_ptr	opts,
	fz_attr_refn_ptr	refn_opts,
	fz_objt_ptr		*obj
	);

/****************************************************************

	fz_objt_edit_prbl_parm_get



	Description
		Gets a parameter of a parabola.

	Parameters
		windex  [Input]
			project window index
		obj  [Input]
			object
		which  [Input]
			parameter id
		data  [Result]
			parameter data

	Returns
		Error codes 
		MODEL_ERR_WRONG_OBJT_TYPE	- object passed in is not a parabola


	Availability	5.5.0.0

	Plugin Example
		double		radius; 
		fz_type_td	data;

		fz_objt_edit_prbl_parm_get(windex,obj,FZ_OBJT_PRBL_PARM_PARM_RADII,&data); 
		fz_type_get_double(&radius,&data);
	Script Example
		double			radius;

		fz_objt_edit_prbl_parm_get(windex,obj,FZ_OBJT_PRBL_PARM_PARM_RADII,radius); 
	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_prbl_parm_set,fz_objt_cnstr_hbl1,fz_objt_edit_parm_regen

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_edit_prbl_parm_get_func) (
	fzrt_int					windex,
	fz_objt_ptr			obj,
	fz_objt_prbl_parm_enum	which,
	fz_type_td				*data
	);

/****************************************************************

	fz_objt_edit_prbl_parm_set



	Description
		Sets a parameter of a parabola. Note, that the shape of the parabola 
		is not changed until the function fz_objt_edit_parm_regen has 
		been called.

	Parameters
		windex  [Input]
			project window index
		obj  [Input]
			object
		which  [Input]
			parameter id
		data  [Input]
			parameter data

	Returns
		Error codes 
		MODEL_ERR_WRONG_OBJT_TYPE	- object passed in is not a parabola


	Availability	5.5.0.0

	Plugin Example
		double		radius; 
		fz_type_td	data;

		radius = 10.0;

		fz_type_set_double(&data,&radius); 
		fz_objt_edit_prbl_parm_set(windex,obj,FZ_OBJT_PRBL_PARM_PARM_RADII,&data); 
		fz_objt_edit_parm_regen(windex,obj);
	Script Example
		double		radius;

		radius = 10.0; 
		fz_objt_edit_prbl_parm_set(windex,obj,FZ_OBJT_PRBL_PARM_PARM_RADII,radius); 
		fz_objt_edit_parm_regen(windex,obj); 
	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_prbl_parm_get,fz_objt_cnstr_hbl1,fz_objt_edit_parm_regen

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_edit_prbl_parm_set_func) (
	fzrt_int					windex,
	fz_objt_ptr			obj,
	fz_objt_prbl_parm_enum	which,
	fz_type_td				*data
	);

/****************************************************************

	Single Hyperboloid


	Description
		formZ Single Sheet Hyperboloid objects.  This module contains functions for creating and editing 
		the parameters of single sheet hyperboloid objects.
 ****************************************************************/

#define FZ_OBJT_TYPE_HBL1		"\xf3\x56\x5b\xc4\xc8\x50\x47\xd5\xb4\xac\xb9\x53\x2a\x55\x03\xbe"

/****************************************************************

	fz_objt_hbl1_cnstr_opts_ptr


	Description
		data structure to hold options for the constructions of a Single hyperboloid. 
		This type is used to pass additional construction options to the 
		function fz_objt_cnstr_hbl1. The individual fields of this type 
		can be accessed and set via fz_objt_cnstr_hbl1_opts_get and 
		fz_objt_cnstr_hbl1_opts_set.

	Availability	5.5.0.0


	See Also
		fz_objt_cnstr_hbl1, fz_objt_cnstr_hbl1_opts_get, fz_objt_cnstr_hbl1_opts_set

 ****************************************************************/
typedef struct	hbl1_cnstr_opts_td *fz_objt_hbl1_cnstr_opts_ptr;

/****************************************************************

	fz_objt_hbl1_parm_enum


	Description
		Parameter identifiers for a parametric single hyperboloid object. Used for the 
		"which" argument of fz_objt_cnstr_hbl1_opts_get,fz_objt_cnstr_hbl1_opts_set, 
		fz_objt_edit_hbl1_parm_get,fz_objt_edit_hbl1_parm_set

	Members
		FZ_OBJT_HBL1_PARM_PARTIAL
			Construction and Editing - Single hyperboloid partial on (TRUE) or off (FALSE).
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_OBJT_HBL1_PARM_CAP_TYPE
			Construction and Editing - Single hyperboloid closure closure type. 
			ptype		fz_objt_prim_cap_type_enum
			Default Value: FZ_OBJT_PRIM_CAP_TYPE_AXIAL
		FZ_OBJT_HBL1_PARM_U_MINMAX
			Construction and Editing - Single hyperboloid horizontal min max. 
			The x value indicates the start of the single hyperboloid surface in the 
			horizontal direction (around the single hyperboloid's center axis). The y value indicates 
			the end. x must be less than y. For example, x = 0.0, y = 0.5 defines a 
			half single hyperboloid, starting at the single hyperboloid's local positive x axis, 
			going counterclockwise, ending at the negative x axis.
			Type: fz_xy_td
			Range: 0.0
			Default Value: {0.0,1.0}
		FZ_OBJT_HBL1_PARM_RADII
			Editing - Single hyperboloid radii.
			Type: fz_xy_td
			Range: 0.0
		FZ_OBJT_HBL1_PARM_HEIGHT
			Editing - Single hyperboloid height.
			Type: double
			Range: 0.0
		FZ_OBJT_HBL1_PARM_TOPRATIO
			Editing - Single hyperboloid top ratio.
			Type: double
			Range: 1.0
		FZ_OBJT_HBL1_PARM_ORIGIN
			Editing - Single hyperboloid origin.
			Type: fz_xyz_td
		FZ_OBJT_HBL1_PARM_ROTATION
			Editing - Single hyperboloid rotation. 
			Rotation angles are applied in z y x order to transform 
			the single hyperboloid from alignment with the world axes to it's 
			3d orientation.
			Type: fz_xyz_td

	Availability	5.5.0.0


	See Also
		fz_objt_cnstr_hbl1_opts_get, fz_objt_cnstr_hbl1_opts_set

 ****************************************************************/
typedef enum fz_objt_hbl1_parm_enum
{
	
	FZ_OBJT_HBL1_PARM_PARTIAL = 0,
										
	FZ_OBJT_HBL1_PARM_CAP_TYPE,
											
	FZ_OBJT_HBL1_PARM_U_MINMAX,
											
	
	FZ_OBJT_HBL1_PARM_RADII,
											
	FZ_OBJT_HBL1_PARM_HEIGHT,
										
	FZ_OBJT_HBL1_PARM_TOPRATIO,
	FZ_OBJT_HBL1_PARM_ORIGIN,
											
	FZ_OBJT_HBL1_PARM_ROTATION,

	MODEL_HBL1_PARM_MAX
	
} fz_objt_hbl1_parm_enum;

/****************************************************************

	fz_objt_cnstr_hbl1_opts_init



	Description
		Allocates single hyperboloid construction options and fills all options 
		with default values.

	Parameters
		windex  [Input]
			project window index
		opts  [Result]
			construction options

	Returns
		Error codes


	Availability	5.5.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_hbl1_opts_finit,fz_objt_cnstr_hbl1_opts_get,fz_objt_cnstr_hbl1_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_hbl1_opts_init_func) (
	fzrt_int				windex,
	fz_objt_hbl1_cnstr_opts_ptr	*opts
	);

/****************************************************************

	fz_objt_cnstr_hbl1_opts_get



	Description
		Gets the value of a single hyperboloid's construction option. Note, that 
		only those values in fz_objt_hbl1_parm_enum are accepted 
		which are tagged for the construction options. See 
		fz_objt_hbl1_parm_enum for details.

	Parameters
		windex  [Input]
			project window index
		opts  [Input]
			construction options
		which  [Input]
			parameter id
		data  [Result]
			parameter data

	Returns
		Error codes


	Availability	5.5.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_hbl1_opts_init,fz_objt_cnstr_hbl1_opts_finit,fz_objt_cnstr_hbl1_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_hbl1_opts_get_func) (
	fzrt_int					windex,
	fz_objt_hbl1_cnstr_opts_ptr		opts,
	fz_objt_hbl1_parm_enum	which,
	fz_type_td				*data
	);

/****************************************************************

	fz_objt_cnstr_hbl1_opts_set



	Description
		Sets the value of a single hyperboloid's construction option. Note, that 
		only those values in fz_objt_hbl1_parm_enum are accepted 
		which are tagged for the construction options. See 
		fz_objt_hbl1_parm_enum for details.

	Parameters
		windex  [Input]
			project window index
		opts  [Input]
			construction options
		which  [Input]
			parameter id
		data  [Input]
			parameter data

	Returns
		Error codes


	Availability	5.5.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_hbl1_opts_init,fz_objt_cnstr_hbl1_opts_finit,fz_objt_cnstr_hbl1_opts_get

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_hbl1_opts_set_func) (
	fzrt_int					windex,
	fz_objt_hbl1_cnstr_opts_ptr		opts,
	fz_objt_hbl1_parm_enum	which,
	fz_type_td				*data
	);


/****************************************************************

	fz_objt_cnstr_hbl1_opts_finit



	Description
		Frees single hyperboloid construction options. The opts pointer 
		is deallocated and returned back as NULL.

	Parameters
		windex  [Input]
			project window index
		opts  [Input, Result]
			options (will become NULL)

	Returns
		Error codes


	Availability	5.5.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_hbl1_opts_init,fz_objt_cnstr_hbl1_opts_get,fz_objt_cnstr_hbl1_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_hbl1_opts_finit_func) (
	fzrt_int				windex,
	fz_objt_hbl1_cnstr_opts_ptr	*opts
	);

/****************************************************************

	fz_objt_cnstr_hbl1



	Description
		Creates a single hyperboloid primitive

	Parameters
		windex  [Input]
			project window index
		rx_ry_h  [Input]
			radius x, radius y, height
			Range: 0.0
		top_ratio  [Input]
			top ratio of Single hyperboloid.
			Range: 0.0
		origin  [Input, Optional]
			origin
			Default Value: {0,0,0}
		rotation  [Input, Optional]
			rotation angles, applied in z,y,x order
			Default Value: {0,0,0}
		opts  [Input, Optional]
			construction options For defaults see fz_objt_hbl1_parm_enum.
		refn_opts  [Input, Optional]
			display resolution options For defaults see fz_attr_refn_parm_enum.
		obj  [Result]
			new object

	Returns
		Error codes


	Availability	5.5.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_hbl1_parm_set,fz_objt_edit_hbl1_parm_get

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_hbl1_func) (
	fzrt_int 				windex,
	fz_xyz_td			*rx_ry_h,
	double				top_ratio,
	fz_xyz_td			*origin,
	fz_xyz_td			*rotation,
	fz_objt_hbl1_cnstr_opts_ptr	opts,
	fz_attr_refn_ptr	refn_opts,
	fz_objt_ptr		*obj
	);

/****************************************************************

	fz_objt_edit_hbl1_parm_get



	Description
		Gets a parameter of a single hyperboloid.

	Parameters
		windex  [Input]
			project window index
		obj  [Input]
			object
		which  [Input]
			parameter id
		data  [Result]
			parameter data

	Returns
		Error codes 
		MODEL_ERR_WRONG_OBJT_TYPE	- object passed in is not a single hyperboloid


	Availability	5.5.0.0

	Plugin Example
		double		radius; 
		fz_type_td	data;

		fz_objt_edit_hbl1_parm_get(windex,obj,FZ_OBJT_HBL1_PARM_PARM_RADII,&data); 
		fz_type_get_double(&radius,&data);
	Script Example
		double			radius;

		fz_objt_edit_hbl1_parm_get(windex,obj,FZ_OBJT_HBL1_PARM_PARM_RADII,radius); 
	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_hbl1_parm_set,fz_objt_cnstr_hbl1,fz_objt_edit_parm_regen

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_edit_hbl1_parm_get_func) (
	fzrt_int					windex,
	fz_objt_ptr				obj,
	fz_objt_hbl1_parm_enum	which,
	fz_type_td				*data
	);

/****************************************************************

	fz_objt_edit_hbl1_parm_set



	Description
		Sets a parameter of a single hyperboloid. Note, that the shape of the single hyperboloid 
		is not changed until the function fz_objt_edit_parm_regen has 
		been called.

	Parameters
		windex  [Input]
			project window index
		obj  [Input]
			object
		which  [Input]
			parameter id
		data  [Input]
			parameter data

	Returns
		Error codes 
		MODEL_ERR_WRONG_OBJT_TYPE	- object passed in is not a single hyperboloid


	Availability	5.5.0.0

	Plugin Example
		double		radius; 
		fz_type_td	data;

		radius = 10.0;

		fz_type_set_double(&data,&radius); 
		fz_objt_edit_hbl1_parm_set(windex,obj,FZ_OBJT_HBL1_PARM_PARM_RADII,&data); 
		fz_objt_edit_parm_regen(windex,obj);
	Script Example
		double		radius;

		radius = 10.0; 
		fz_objt_edit_hbl1_parm_set(windex,obj,FZ_OBJT_HBL1_PARM_PARM_RADII,radius); 
		fz_objt_edit_parm_regen(windex,obj); 
	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_hbl1_parm_get,fz_objt_cnstr_hbl1,fz_objt_edit_parm_regen

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_edit_hbl1_parm_set_func) (
	fzrt_int					windex,
	fz_objt_ptr			obj,
	fz_objt_hbl1_parm_enum	which,
	fz_type_td				*data
	);

/****************************************************************

	Double Hyperboloid


	Description
		formZ Double Sheet Hyperboloid objects.  This module contains functions for creating and editing 
		the parameters of double sheet hyperboloid objects.
 ****************************************************************/

#define FZ_OBJT_TYPE_HBL2		"\x6d\x06\xb8\xae\xbd\x54\x4a\x0b\x9a\x09\xfd\x3a\xa3\x29\xed\xe5"

/****************************************************************

	fz_objt_hbl2_cnstr_opts_ptr


	Description
		data structure to hold options for the constructions of a Double hyperboloid. 
		This type is used to pass additional construction options to the 
		function fz_objt_cnstr_hbl2. The individual fields of this type 
		can be accessed and set via fz_objt_cnstr_hbl2_opts_get and 
		fz_objt_cnstr_hbl2_opts_set.

	Availability	5.5.0.0


	See Also
		fz_objt_cnstr_hbl2, fz_objt_cnstr_hbl2_opts_get, fz_objt_cnstr_hbl2_opts_set

 ****************************************************************/
typedef struct	hbl2_cnstr_opts_td *fz_objt_hbl2_cnstr_opts_ptr;

/****************************************************************

	fz_objt_hbl2_parm_enum


	Description
		Parameter identifiers for a parametric double hyperboloid object. Used for the 
		"which" argument of fz_objt_cnstr_hbl2_opts_get,fz_objt_cnstr_hbl2_opts_set, 
		fz_objt_edit_hbl2_parm_get,fz_objt_edit_hbl2_parm_set

	Members
		FZ_OBJT_HBL2_PARM_PARTIAL
			Construction and Editing - Double hyperboloid partial on (TRUE) or off (FALSE).
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_OBJT_HBL2_PARM_CAP_TYPE
			Construction and Editing - Double hyperboloid closure closure type. 
			ptype		fz_objt_prim_cap_type_enum
			Default Value: FZ_OBJT_PRIM_CAP_TYPE_AXIAL
		FZ_OBJT_HBL2_PARM_U_MINMAX
			Construction and Editing - Double hyperboloid horizontal min max. 
			The x value indicates the start of the double hyperboloid surface in the 
			horizontal direction (around the double hyperboloid's center axis). The y value indicates 
			the end. x must be less than y. For example, x = 0.0, y = 0.5 defines a 
			half double hyperboloid, starting at the double hyperboloid's local positive x axis, 
			going counterclockwise, ending at the negative x axis.
			Type: fz_xy_td
			Range: 0.0
			Default Value: {0.0,1.0}
		FZ_OBJT_HBL2_PARM_RADII
			Editing - Double hyperboloid radii.
			Type: fz_xy_td
			Range: 0.0
		FZ_OBJT_HBL2_PARM_HEIGHT
			Editing - Double hyperboloid height.
			Type: double
			Range: 0.0
		FZ_OBJT_HBL2_PARM_HALF_ONLY
			Editing - Half Only Option on (TRUE) or off (FALSE). 
			If set to TRUE, the Double hyperboloid will be of single volume 
			If set to FASLE, the Double hyperboloid will be of two volumes.
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_OBJT_HBL2_PARM_ORIGIN
			Editing - Double hyperboloid origin.
			Type: fz_xyz_td
		FZ_OBJT_HBL2_PARM_ROTATION
			Editing - Double hyperboloid rotation. 
			Rotation angles are applied in z y x order to transform 
			the double hyperboloid from alignment with the world axes to it's 
			3d orientation.
			Type: fz_xyz_td

	Availability	5.5.0.0


	See Also
		fz_objt_cnstr_hbl2_opts_get, fz_objt_cnstr_hbl2_opts_set

 ****************************************************************/
typedef enum fz_objt_hbl2_parm_enum
{
	
	FZ_OBJT_HBL2_PARM_PARTIAL = 0,
										
	FZ_OBJT_HBL2_PARM_CAP_TYPE,
											
	FZ_OBJT_HBL2_PARM_U_MINMAX,
											
	
	FZ_OBJT_HBL2_PARM_RADII,
											
	FZ_OBJT_HBL2_PARM_HEIGHT,
										
	FZ_OBJT_HBL2_PARM_HALF_ONLY,
											
	FZ_OBJT_HBL2_PARM_ORIGIN,
											
	FZ_OBJT_HBL2_PARM_ROTATION,

	MODEL_HBL2_PARM_MAX
	
} fz_objt_hbl2_parm_enum;

/****************************************************************

	fz_objt_cnstr_hbl2_opts_init



	Description
		Allocates double hyperboloid construction options and fills all options 
		with default values.

	Parameters
		windex  [Input]
			project window index
		opts  [Result]
			construction options

	Returns
		Error codes


	Availability	5.5.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_hbl2_opts_finit,fz_objt_cnstr_hbl2_opts_get,fz_objt_cnstr_hbl2_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_hbl2_opts_init_func) (
	fzrt_int				windex,
	fz_objt_hbl2_cnstr_opts_ptr	*opts
	);

/****************************************************************

	fz_objt_cnstr_hbl2_opts_get



	Description
		Gets the value of a double hyperboloid's construction option. Note, that 
		only those values in fz_objt_hbl2_parm_enum are accepted 
		which are tagged for the construction options. See 
		fz_objt_hbl2_parm_enum for details.

	Parameters
		windex  [Input]
			project window index
		opts  [Input]
			construction options
		which  [Input]
			parameter id
		data  [Result]
			parameter data

	Returns
		Error codes


	Availability	5.5.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_hbl2_opts_init,fz_objt_cnstr_hbl2_opts_finit,fz_objt_cnstr_hbl2_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_hbl2_opts_get_func) (
	fzrt_int							windex,
	fz_objt_hbl2_cnstr_opts_ptr		opts,
	fz_objt_hbl2_parm_enum			which,
	fz_type_td						*data
	);

/****************************************************************

	fz_objt_cnstr_hbl2_opts_set



	Description
		Sets the value of a double hyperboloid's construction option. Note, that 
		only those values in fz_objt_hbl2_parm_enum are accepted 
		which are tagged for the construction options. See 
		fz_objt_hbl2_parm_enum for details.

	Parameters
		windex  [Input]
			project window index
		opts  [Input]
			construction options
		which  [Input]
			parameter id
		data  [Input]
			parameter data

	Returns
		Error codes


	Availability	5.5.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_hbl2_opts_init,fz_objt_cnstr_hbl2_opts_finit,fz_objt_cnstr_hbl2_opts_get

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_hbl2_opts_set_func) (
	fzrt_int							windex,
	fz_objt_hbl2_cnstr_opts_ptr		opts,
	fz_objt_hbl2_parm_enum			which,
	fz_type_td						*data
	);


/****************************************************************

	fz_objt_cnstr_hbl2_opts_finit



	Description
		Frees double hyperboloid construction options. The opts pointer 
		is deallocated and returned back as NULL.

	Parameters
		windex  [Input]
			project window index
		opts  [Input, Result]
			options (will become NULL)

	Returns
		Error codes


	Availability	5.5.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_hbl2_opts_init,fz_objt_cnstr_hbl2_opts_get,fz_objt_cnstr_hbl2_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_hbl2_opts_finit_func) (
	fzrt_int						windex,
	fz_objt_hbl2_cnstr_opts_ptr	*opts
	);

/****************************************************************

	fz_objt_cnstr_hbl2



	Description
		Creates a double hyperboloid primitive

	Parameters
		windex  [Input]
			project window index
		rx_ry_h  [Input]
			radius x, radius y, height
			Range: 0.0
		origin  [Input, Optional]
			origin
			Default Value: {0,0,0}
		rotation  [Input, Optional]
			rotation angles, applied in z,y,x order
			Default Value: {0,0,0}
		opts  [Input, Optional]
			construction options For defaults see fz_objt_hbl2_parm_enum.
		refn_opts  [Input, Optional]
			display resolution options For defaults see fz_attr_refn_parm_enum.
		obj  [Result]
			new object

	Returns
		Error codes


	Availability	5.5.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_hbl2_parm_set,fz_objt_edit_hbl2_parm_get

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_hbl2_func) (
	fzrt_int 					windex,
	fz_xyz_td				*rx_ry_h,
	fz_xyz_td				*origin,
	fz_xyz_td				*rotation,
	fz_objt_hbl2_cnstr_opts_ptr	opts,
	fz_attr_refn_ptr	refn_opts,
	fz_objt_ptr		*obj
	);

/****************************************************************

	fz_objt_edit_hbl2_parm_get



	Description
		Gets a parameter of a double hyperboloid.

	Parameters
		windex  [Input]
			project window index
		obj  [Input]
			object
		which  [Input]
			parameter id
		data  [Result]
			parameter data

	Returns
		Error codes 
		MODEL_ERR_WRONG_OBJT_TYPE	- object passed in is not a double hyperboloid


	Availability	5.5.0.0

	Plugin Example
		double		radius; 
		fz_type_td	data;

		fz_objt_edit_hbl2_parm_get(windex,obj,FZ_OBJT_HBL2_PARM_PARM_RADII,&data); 
		fz_type_get_double(&radius,&data);
	Script Example
		double			radius;

		fz_objt_edit_hbl2_parm_get(windex,obj,FZ_OBJT_HBL2_PARM_PARM_RADII,radius); 
	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_hbl2_parm_set,fz_objt_cnstr_hbl2,fz_objt_edit_parm_regen

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_edit_hbl2_parm_get_func) (
	fzrt_int					windex,
	fz_objt_ptr				obj,
	fz_objt_hbl2_parm_enum	which,
	fz_type_td				*data
	);

/****************************************************************

	fz_objt_edit_hbl2_parm_set



	Description
		Sets a parameter of a double hyperboloid. Note, that the shape of the double hyperboloid 
		is not changed until the function fz_objt_edit_parm_regen has 
		been called.

	Parameters
		windex  [Input]
			project window index
		obj  [Input]
			object
		which  [Input]
			parameter id
		data  [Input]
			parameter data

	Returns
		Error codes 
		MODEL_ERR_WRONG_OBJT_TYPE	- object passed in is not a double hyperboloid


	Availability	5.5.0.0

	Plugin Example
		double		radius; 
		fz_type_td	data;

		radius = 10.0;

		fz_type_set_double(&data,&radius); 
		fz_objt_edit_hbl2_parm_set(windex,obj,FZ_OBJT_HBL2_PARM_RADII,&data); 
		fz_objt_edit_parm_regen(windex,obj);
	Script Example
		fz_xy_td	radius;

		radius = {10.0,20.0}; 
		fz_objt_edit_hbl2_parm_set(windex,obj,FZ_OBJT_HBL2_PARM_RADII,radius); 
		fz_objt_edit_parm_regen(windex,obj); 
	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_hbl2_parm_get,fz_objt_cnstr_hbl2,fz_objt_edit_parm_regen

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_edit_hbl2_parm_set_func) (
	fzrt_int					windex,
	fz_objt_ptr				obj,
	fz_objt_hbl2_parm_enum	which,
	fz_type_td				*data
	);

/****************************************************************

	Hyperbolic Paraboloid


	Description
		formZ Hyperbolic Paraboloid objects.  This module contains functions for creating and editing 
		the parameters of hyperbolic paraboloid objects.
 ****************************************************************/

#define FZ_OBJT_TYPE_HPBL		"\xca\xaf\x1b\x03\x0d\x05\x47\x15\x91\x78\x7c\xad\xd8\x33\x64\xc7"

/****************************************************************

	fz_objt_hpbl_cnstr_opts_ptr


	Description
		data structure to hold options for the constructions of a Hyperbolic Paraboloid. 
		This type is used to pass additional construction options to the 
		function fz_objt_cnstr_hpbl. The individual fields of this type 
		can be accessed and set via fz_objt_cnstr_hpbl_opts_get and 
		fz_objt_cnstr_hpbl_opts_set.

	Availability	5.5.0.0


	See Also
		fz_objt_cnstr_hpbl, fz_objt_cnstr_hpbl_opts_get, fz_objt_cnstr_hpbl_opts_set

 ****************************************************************/
typedef struct	hpbl_cnstr_opts_td *fz_objt_hpbl_cnstr_opts_ptr;

/****************************************************************

	fz_objt_hpbl_parm_enum


	Description
		Parameter identifiers for a parametric Hyperbolic Paraboloid object. Used for the 
		"which" argument of fz_objt_cnstr_hpbl_opts_get,fz_objt_cnstr_hpbl_opts_set, 
		fz_objt_edit_hpbl_parm_get,fz_objt_edit_hpbl_parm_set

	Members
		FZ_OBJT_HPBL_PARM_WIDTH
			Editing - Hyperbolic Paraboloid width.
			Type: double
			Range: 0.0
		FZ_OBJT_HPBL_PARM_DEPTH
			Editing - Hyperbolic Paraboloid depth.
			Type: double
			Range: 0.0
		FZ_OBJT_HPBL_PARM_HEIGHT
			Editing - Hyperbolic Paraboloid height.
			Type: double
			Range: 0.0
		FZ_OBJT_HPBL_PARM_HEIGHT2
			Editing - Hyperbolic Paraboloid height 2.
			Type: double
			Range: 0.0
		FZ_OBJT_HPBL_PARM_ORIGIN
			Editing - Hyperbolic Paraboloid origin.
			Type: fz_xyz_td
		FZ_OBJT_HPBL_PARM_ROTATION
			Editing - Hyperbolic Paraboloid rotation. 
			Rotation angles are applied in z y x order to transform 
			the Hyperbolic Paraboloid from alignment with the world axes to it's 
			3d orientation.
			Type: fz_xyz_td

	Availability	5.5.0.0


	See Also
		fz_objt_cnstr_hpbl_opts_get, fz_objt_cnstr_hpbl_opts_set

 ****************************************************************/
typedef enum fz_objt_hpbl_parm_enum
{
	
	FZ_OBJT_HPBL_PARM_WIDTH = 0,

	FZ_OBJT_HPBL_PARM_DEPTH,
											
											
	FZ_OBJT_HPBL_PARM_HEIGHT,
										
	FZ_OBJT_HPBL_PARM_HEIGHT2,
										
	FZ_OBJT_HPBL_PARM_ORIGIN,
											
	FZ_OBJT_HPBL_PARM_ROTATION,

	MODEL_HPBL_PARM_MAX
	
} fz_objt_hpbl_parm_enum;

/****************************************************************

	fz_objt_cnstr_hpbl_opts_init



	Description
		Allocates Hyperbolic Paraboloid construction options and fills all options 
		with default values.

	Parameters
		windex  [Input]
			project window index
		opts  [Result]
			construction options

	Returns
		Error codes


	Availability	5.5.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_hpbl_opts_finit,fz_objt_cnstr_hpbl_opts_get,fz_objt_cnstr_hpbl_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_hpbl_opts_init_func) (
	fzrt_int						windex,
	fz_objt_hpbl_cnstr_opts_ptr	*opts
	);

/****************************************************************

	fz_objt_cnstr_hpbl_opts_get



	Description
		Gets the value of a Hyperbolic Paraboloid's construction option. Note, that 
		only those values in fz_objt_hpbl_parm_enum are accepted 
		which are tagged for the construction options. See 
		fz_objt_hpbl_parm_enum for details.

	Parameters
		windex  [Input]
			project window index
		opts  [Input]
			construction options
		which  [Input]
			parameter id
		data  [Result]
			parameter data

	Returns
		Error codes


	Availability	5.5.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_hpbl_opts_init,fz_objt_cnstr_hpbl_opts_finit,fz_objt_cnstr_hpbl_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_hpbl_opts_get_func) (
	fzrt_int						windex,
	fz_objt_hpbl_cnstr_opts_ptr	opts,
	fz_objt_hpbl_parm_enum		which,
	fz_type_td					*data
	);

/****************************************************************

	fz_objt_cnstr_hpbl_opts_set



	Description
		Sets the value of a Hyperbolic Paraboloid's construction option. Note, that 
		only those values in fz_objt_hpbl_parm_enum are accepted 
		which are tagged for the construction options. See 
		fz_objt_hpbl_parm_enum for details.

	Parameters
		windex  [Input]
			project window index
		opts  [Input]
			construction options
		which  [Input]
			parameter id
		data  [Input]
			parameter data

	Returns
		Error codes


	Availability	5.5.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_hpbl_opts_init,fz_objt_cnstr_hpbl_opts_finit,fz_objt_cnstr_hpbl_opts_get

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_hpbl_opts_set_func) (
	fzrt_int						windex,
	fz_objt_hpbl_cnstr_opts_ptr	opts,
	fz_objt_hpbl_parm_enum		which,
	fz_type_td					*data
	);


/****************************************************************

	fz_objt_cnstr_hpbl_opts_finit



	Description
		Frees Hyperbolic Paraboloid construction options. The opts pointer 
		is deallocated and returned back as NULL.

	Parameters
		windex  [Input]
			project window index
		opts  [Input, Result]
			options (will become NULL)

	Returns
		Error codes


	Availability	5.5.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_cnstr_hpbl_opts_init,fz_objt_cnstr_hpbl_opts_get,fz_objt_cnstr_hpbl_opts_set

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_hpbl_opts_finit_func) (
	fzrt_int						windex,
	fz_objt_hpbl_cnstr_opts_ptr	*opts
	);

/****************************************************************

	fz_objt_cnstr_hpbl



	Description
		Creates a Hyperbolic Paraboloid primitive

	Parameters
		windex  [Input]
			project window index
		wdh  [Input]
			width, depth, height
			Range: 0.0
		height2  [Input]
			height2 of Hyperbolic Paraboloid.
			Range: 0.0
		origin  [Input, Optional]
			origin
			Default Value: {0,0,0}
		rotation  [Input, Optional]
			rotation angles, applied in z,y,x order
			Default Value: {0,0,0}
		opts  [Input, Optional]
			construction options For defaults see fz_objt_hpbl_parm_enum.
		refn_opts  [Input, Optional]
			display resolution options For defaults see fz_attr_refn_parm_enum.
		obj  [Result]
			new object

	Returns
		Error codes


	Availability	5.5.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_hpbl_parm_set,fz_objt_edit_hpbl_parm_get

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_cnstr_hpbl_func) (
	fzrt_int 						windex,
	fz_xyz_td					*wdh,
	double						height2,
	fz_xyz_td					*origin,
	fz_xyz_td					*rotation,
	fz_objt_hpbl_cnstr_opts_ptr	opts,
	fz_attr_refn_ptr			refn_opts,
	fz_objt_ptr					*obj
	);

/****************************************************************

	fz_objt_edit_hpbl_parm_get



	Description
		Gets a parameter of a Hyperbolic Paraboloid.

	Parameters
		windex  [Input]
			project window index
		obj  [Input]
			object
		which  [Input]
			parameter id
		data  [Result]
			parameter data

	Returns
		Error codes 
		MODEL_ERR_WRONG_OBJT_TYPE	- object passed in is not a Hyperbolic Paraboloid


	Availability	5.5.0.0

	Plugin Example
		double		radius; 
		fz_type_td	data;

		fz_objt_edit_hpbl_parm_get(windex,obj,FZ_OBJT_HPBL_PARM_PARM_RADII,&data); 
		fz_type_get_double(&radius,&data);
	Script Example
		double		radius;

		fz_objt_edit_hpbl_parm_get(windex,obj,FZ_OBJT_HPBL_PARM_PARM_RADII,radius); 
	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_hpbl_parm_set,fz_objt_cnstr_hpbl,fz_objt_edit_parm_regen

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_edit_hpbl_parm_get_func) (
	fzrt_int					windex,
	fz_objt_ptr				obj,
	fz_objt_hpbl_parm_enum	which,
	fz_type_td				*data
	);

/****************************************************************

	fz_objt_edit_hpbl_parm_set



	Description
		Sets a parameter of a Hyperbolic Paraboloid. Note, that the shape of the Hyperbolic Paraboloid 
		is not changed until the function fz_objt_edit_parm_regen has 
		been called.

	Parameters
		windex  [Input]
			project window index
		obj  [Input]
			object
		which  [Input]
			parameter id
		data  [Input]
			parameter data

	Returns
		Error codes 
		MODEL_ERR_WRONG_OBJT_TYPE	- object passed in is not a Hyperbolic Paraboloid


	Availability	5.5.0.0

	Plugin Example
		double		radius; 
		fz_type_td	data;

		radius = 10.0;

		fz_type_set_double(&data,&radius); 
		fz_objt_edit_hpbl_parm_set(windex,obj,FZ_OBJT_HPBL_PARM_PARM_RADII,&data); 
		fz_objt_edit_parm_regen(windex,obj);
	Script Example
		double		radius;

		radius = 10.0; 
		fz_objt_edit_hpbl_parm_set(windex,obj,FZ_OBJT_HPBL_PARM_PARM_RADII,radius); 
		fz_objt_edit_parm_regen(windex,obj); 
	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_prim.fsl

	See Also
		fz_objt_edit_hpbl_parm_get,fz_objt_cnstr_hpbl,fz_objt_edit_parm_regen

 ****************************************************************/
typedef fzrt_error_td  (*fz_objt_edit_hpbl_parm_set_func) (
	fzrt_int					windex,
	fz_objt_ptr				obj,
	fz_objt_hpbl_parm_enum	which,
	fz_type_td				*data
	);

#ifdef __cplusplus
}
#endif

#endif
