#include <opennurbs_beam.h>
Public Member Functions | |
ON_Extrusion () | |
ON_Extrusion (const ON_Extrusion &src) | |
~ON_Extrusion () | |
bool | AddInnerProfile (ON_Curve *inner_profile) |
Add an inner profile. Paramters: inner_profile - [in] closed curve in the xy plane or a 2d curve. More... | |
ON_Brep * | BrepForm (ON_Brep *brep=nullptr) const override |
Build a brep form of the extrusion. The outer profile is always the first face in the brep. If there are inner profiles, additional brep faces are created for each profile. If the outer profile is closed, then end caps are added as the last two faces in the brep. More... | |
ON_Brep * | BrepForm (ON_Brep *brep, bool bSmoothFaces) const |
Build a brep form of the extrusion. The outer profile is always the first face in the brep. If there are inner profiles, additional brep faces are created for each profile. If the outer profile is closed, then end caps are added as the last two faces in the brep. More... | |
int | CapCount () const |
ON__UINT32 | DataCRC (ON__UINT32 current_remainder) const override |
Returns a CRC calculated from the information that defines the object. This CRC can be used as a quick way to see if two objects are not identical. More... | |
int | Degree (int dir) const override |
void | Destroy () |
void | DestroyMesh (ON::mesh_type mt) |
Destroy a mesh attached to the ON_Extrusion. More... | |
void | DestroyRuntimeCache (bool bDelete=true) override |
Expert user function. If you are using openNURBS in its default configuration to read and write 3dm archives, you never need to call this function. Many objects employ lazy creation of (runtime) caches that save information to help speed geometric calculations. This function will destroy all runtime information. More... | |
int | Dimension () const override |
Dimension of the object. More... | |
ON_Interval | Domain (int dir) const override |
void | Dump (ON_TextLog &) const override |
Creates a text dump of the object. More... | |
bool | Evaluate (double u, double v, int num_der, int array_stride, double *der_array, int quadrant=0, int *hint=0) const override |
work horse evaluator More... | |
bool | Extend (int dir, const ON_Interval &domain) override |
Pure virtual function. Default returns false. Where possible, analytically extends surface to include domain. More... | |
bool | GetBBox (double *boxmin, double *boxmax, bool bGrowBox=false) const override |
virtual ON_Geometry GetBBox override More... | |
bool | GetBrepFormComponentIndex (ON_COMPONENT_INDEX extrusion_ci, ON_COMPONENT_INDEX &brep_ci) const |
Convert a component index that identifies a part of this extrusion to a component index that identifies a part of the brep created by BrepForm(...,false). More... | |
bool | GetBrepFormComponentIndex (ON_COMPONENT_INDEX extrusion_ci, double extrusion_profile_parameter, const ON_Brep &brep_form, ON_COMPONENT_INDEX &brep_ci) const |
bool | GetBrepFormComponentIndex (ON_COMPONENT_INDEX extrusion_ci, double extrusion_profile_parameter, const ON_Brep *brep_form, ON_COMPONENT_INDEX &brep_ci) const |
void | GetMiterPlaneNormal (int end, ON_3dVector &N) const |
bool | GetNextDiscontinuity (int dir, ON::continuity c, double t0, double t1, double *t, int *hint=nullptr, int *dtype=nullptr, double cos_angle_tolerance=ON_DEFAULT_ANGLE_TOLERANCE_COSINE, double curvature_tolerance=ON_SQRT_EPSILON) const override |
Search for a derivatitive, tangent, or curvature discontinuity. More... | |
int | GetNurbForm (ON_NurbsSurface &nurbs_surface, double tolerance=0.0) const override |
Get a NURBS surface representation of this surface. More... | |
bool | GetNurbFormParameterFromSurfaceParameter (double surface_s, double surface_t, double *nurbs_s, double *nurbs_t) const override |
bool | GetParameterTolerance (int dir, double t, double *tminus, double *tplus) const override |
bool | GetPathPlane (double s, ON_Plane &plane) const |
Get the the 3d plane perpendicular to the path at a normalized path parameter. More... | |
int | GetProfileCurves (ON_SimpleArray< const ON_Curve *> &profile_curves) const |
Get a list of the 2d profile curves. More... | |
int | GetProfileKinkParameters (int profile_index, ON_SimpleArray< double > &profile_kink_parameters) const |
Get the parameters where a profile curve has kinks. More... | |
int | GetProfileKinkParameters (int profile_index, ON_SimpleArray< double > *profile_kink_parameters) const |
bool | GetProfilePlane (double s, ON_Plane &plane) const |
Get the the 3d plane containing the profile curve at a normalized path parameter. More... | |
bool | GetProfileTransformation (double s, ON_Xform &xform) const |
Get the transformation that maps the xy profile curve to its 3d location. More... | |
bool | GetSpanVector (int dir, double *span_vector) const override |
bool | GetSpanVectorIndex (int dir, double t, int side, int *span_vector_index, ON_Interval *span_interval) const override |
bool | GetSurfaceParameterFromNurbFormParameter (double nurbs_s, double nurbs_t, double *surface_s, double *surface_t) const override |
bool | GetSurfaceSize (double *width, double *height) const override |
Get an estimate of the size of the rectangle that would be created if the 3d surface where flattened into a rectangle. More... | |
bool | GetTightBoundingBox (class ON_BoundingBox &tight_bbox, bool bGrowBox=false, const class ON_Xform *xform=nullptr) const override |
virtual ON_Geometry GetTightBoundingBox override More... | |
int | HasNurbForm () const override |
Is there a NURBS surface representation of this surface. More... | |
int | IsCapped () const |
bool | IsClosed (int) const override |
bool | IsContinuous (ON::continuity c, double s, double t, int *hint=nullptr, double point_tolerance=ON_ZERO_TOLERANCE, double d1_tolerance=ON_ZERO_TOLERANCE, double d2_tolerance=ON_ZERO_TOLERANCE, double cos_angle_tolerance=ON_DEFAULT_ANGLE_TOLERANCE_COSINE, double curvature_tolerance=ON_SQRT_EPSILON) const override |
Test continuity at a surface parameter value. More... | |
ISO | IsIsoparametric (const ON_Curve &curve, const ON_Interval *curve_domain=nullptr) const override |
Test a 2d curve to see if it is iso parameteric in the surface's parameter space. More... | |
ISO | IsIsoparametric (const ON_BoundingBox &bbox) const override |
Test a 2d bounding box to see if it is iso parameteric in the surface's parameter space. More... | |
int | IsMitered () const |
ON_Curve * | IsoCurve (int dir, double c) const override |
Get isoparametric curve. More... | |
bool | IsPeriodic (int) const override |
bool | IsPlanar (ON_Plane *plane=nullptr, double tolerance=ON_ZERO_TOLERANCE) const override |
Test a surface to see if it is planar. More... | |
bool | IsSolid () const |
bool | IsValid (class ON_TextLog *text_log=nullptr) const override |
Tests an object to see if its data members are correctly initialized. More... | |
const ON_Mesh * | Mesh (ON::mesh_type mt) const |
Get a mesh attached to the ON_Extrusion. More... | |
ON::object_type | ObjectType () const override |
Useful for switch statements that need to differentiate between basic object types like points, curves, surfaces, and so on. More... | |
ON_DEPRECATED_MSG ("Use CapCount(), ProfileCount(), or ProfileSmoothSegmentCount()") int FaceCount() const | |
Deprecated function. More... | |
ON_Extrusion & | operator= (const ON_Extrusion &) |
ON_3dPoint | PathEnd () const |
ON_LineCurve * | PathLineCurve (ON_LineCurve *line_curve) const |
int | PathParameter () const |
Get the surface parameter for the path. More... | |
ON_3dPoint | PathStart () const |
ON_3dVector | PathTangent () const |
const ON_PolyCurve * | PolyProfile () const |
const ON_Curve * | Profile (int profile_index) const |
ON_Curve * | Profile3d (int profile_index, double s) const |
ON_Curve * | Profile3d (ON_COMPONENT_INDEX ci) const |
int | ProfileCount () const |
int | ProfileIndex (double profile_parameter) const |
bool | ProfileIsKinked (int profile_index) const |
int | ProfileParameter () const |
Get the surface parameter for the profile. More... | |
int | ProfileSmoothSegmentCount (int profile_index) const |
bool | Read (ON_BinaryArchive &binary_archive) override |
Low level archive writing tool used by ON_BinaryArchive::ReadObject(). More... | |
bool | Reverse (int dir) override |
bool | SetDomain (int dir, double t0, double t1) override |
bool | SetMesh (ON::mesh_type mt, ON_Mesh *mesh) |
Attach a mesh to the ON_Extrusion. More... | |
bool | SetMiterPlaneNormal (ON_3dVector N, int end) |
Set miter plane normal. More... | |
bool | SetOuterProfile (ON_Curve *outer_profile, bool bCap) |
Set the outer profile of the extrusion. Paramters: outer_profile - [in] curve in the xy plane or a 2d curve. bCap - [in] If outer_profile is a closed curve, then bCap determines if the extrusion has end caps. If outer_profile is an open curve, bCap is ignored. More... | |
bool | SetPath (ON_3dPoint A, ON_3dPoint B) |
Sets m_path to (A,B), m_path_domain to [0,Length(AB)], and m_t to [0,1]. More... | |
bool | SetPathAndUp (ON_3dPoint A, ON_3dPoint B, ON_3dVector up) |
Sets m_path to (A,B), m_path_domain to [0,Length(AB)], m_t to [0,1], and m_up. More... | |
unsigned int | SizeOf () const override |
int | SpanCount (int dir) const override |
bool | Split (int dir, double c, ON_Surface *&west_or_south_side, ON_Surface *&east_or_north_side) const override |
Splits (divides) the surface into two parts at the specified parameter. More... | |
ON_SumSurface * | SumSurfaceForm (ON_SumSurface *sum_surface) const |
Build a sum surface form of the extrusion. More... | |
bool | Transform (const ON_Xform &xform) override |
Transforms the object. More... | |
bool | Transpose () override |
bool | Trim (int dir, const ON_Interval &domain) override |
Removes the portions of the surface outside of the specified interval. More... | |
ON_Curve * | WallEdge (ON_COMPONENT_INDEX ci) const |
ON_Surface * | WallSurface (ON_COMPONENT_INDEX ci) const |
bool | Write (ON_BinaryArchive &binary_archive) const override |
Low level archive writing tool used by ON_BinaryArchive::WriteObject(). More... | |
Public Member Functions inherited from ON_Surface | |
ON_Surface () | |
ON_Surface (const ON_Surface &) | |
virtual | ~ON_Surface () |
ON_Brep * | BrepForm (ON_Brep *brep=nullptr) const override |
Overrides virtual ON_Geometry::HasBrepForm. Uses ON_Brep::Create( ON_Surface&* ) to create a brep form. The surface is copied for use in the returned brep. More... | |
void | DestroyRuntimeCache (bool bDelete=true) override |
virtual ON_Object::DestroyRuntimeCache override More... | |
void | DestroySurfaceTree () |
virtual ON_Surface * | DuplicateSurface () const |
Get a duplicate of the surface. More... | |
bool | Ev1Der (double u, double v, ON_3dPoint &point, ON_3dVector &du, ON_3dVector &dv, int quadrant=0, int *hint=0) const |
bool | Ev2Der (double u, double v, ON_3dPoint &point, ON_3dVector &du, ON_3dVector &dv, ON_3dVector &duu, ON_3dVector &duv, ON_3dVector &dvv, int quadrant=0, int *hint=0) const |
bool | EvaluatePoint (const class ON_ObjRef &objref, ON_3dPoint &P) const override |
virtual ON_Geometry override More... | |
bool | EvNormal (double u, double v, ON_3dPoint &point, ON_3dVector &normal, int quadrant=0, int *hint=0) const |
bool | EvNormal (double u, double v, ON_3dVector &normal, int quadrant=0, int *hint=0) const |
bool | EvNormal (double u, double v, ON_3dPoint &point, ON_3dVector &du, ON_3dVector &dv, ON_3dVector &normal, int=0, int *=0) const |
bool | EvPoint (double u, double v, ON_3dPoint &point, int quadrant=0, int *hint=0) const |
bool | FrameAt (double u, double v, ON_Plane &frame) const |
bool | GetDomain (int dir, double *t0, double *t1) const |
surface interface More... | |
bool | HasBrepForm () const override |
Overrides virtual ON_Geometry::HasBrepForm and returns true. Result: Returns true. More... | |
int | IsAtSeam (double s, double t) const |
Test if a surface parameter value is at a seam. More... | |
bool | IsAtSingularity (double s, double t, bool bExact=true) const |
Test if a surface parameter value is at a singularity. More... | |
bool | IsCone (ON_Cone *cone=nullptr, double tolerance=ON_ZERO_TOLERANCE) const |
Determine if the surface is a portion of a cone. More... | |
bool | IsCylinder (ON_Cylinder *cylinder=nullptr, double tolerance=ON_ZERO_TOLERANCE) const |
Determine if the surface is a portion of a cylinder. More... | |
virtual bool | IsSingular (int) const |
bool | IsSolid () const |
bool | IsSphere (ON_Sphere *sphere=nullptr, double tolerance=ON_ZERO_TOLERANCE) const |
Determine if the surface is a portion of a sphere. More... | |
bool | IsTorus (ON_Torus *torus=nullptr, double tolerance=ON_ZERO_TOLERANCE) const |
Determine if the surface is a portion of a torus. More... | |
ON_3dVector | NormalAt (double, double) const |
ON_NurbsSurface * | NurbsSurface (ON_NurbsSurface *pNurbsSurface=nullptr, double tolerance=0.0, const ON_Interval *s_subdomain=nullptr, const ON_Interval *t_subdomain=nullptr) const |
Get a NURBS surface representation of this surface. More... | |
ON::object_type | ObjectType () const override |
override ON_Object::ObjectType() - returns ON::surface_object More... | |
ON_Surface & | operator= (const ON_Surface &) |
ON_3dPoint | PointAt (double, double) const |
simple evaluation interface - no error handling More... | |
bool | SetDomain (int dir, ON_Interval domain) |
unsigned int | SizeOf () const override |
virtual ON_Object::SizeOf override More... | |
Public Member Functions inherited from ON_Geometry | |
ON_Geometry ()=default | |
ON_Geometry (const ON_Geometry &)=default | |
~ON_Geometry ()=default | |
ON_BoundingBox | BoundingBox () const |
Get object's 3d axis aligned bounding box. More... | |
virtual void | ClearBoundingBox () |
Some objects cache bounding box information. If you modify an object, then call ClearBoundingBox() to inform the object that any cached bounding boxes are invalid. More... | |
virtual ON_COMPONENT_INDEX | ComponentIndex () const |
If this piece of geometry is a component in something larger, like an ON_BrepEdge in an ON_Brep, then this function returns the component index. More... | |
bool | GetBoundingBox (ON_BoundingBox &bbox, bool bGrowBox=false) const |
Get object's 3d axis aligned bounding box or the union of the input box with the object's bounding box. More... | |
bool | GetBoundingBox (ON_3dPoint &bbox_min, ON_3dPoint &bbox_max, bool bGrowBox=false) const |
Get corners of object's 3d axis aligned bounding box or the union of the input box with the object's bounding box. More... | |
virtual bool | IsDeformable () const |
bool | IsValid (class ON_TextLog *text_log=nullptr) const override |
Tests an object to see if its data members are correctly initialized. More... | |
virtual bool | MakeDeformable () |
If possible, converts the object into a form that can be accuratly modified with "squishy" transformations like projections, shears, an non-uniform scaling. More... | |
ON_Geometry & | operator= (const ON_Geometry &)=default |
bool | Rotate (double sin_angle, double cos_angle, const ON_3dVector &rotation_axis, const ON_3dPoint &rotation_center) |
Rotates the object about the specified axis. A positive rotation angle results in a counter-clockwise rotation about the axis (right hand rule). More... | |
bool | Rotate (double rotation_angle, const ON_3dVector &rotation_axis, const ON_3dPoint &rotation_center) |
Rotates the object about the specified axis. A positive rotation angle results in a counter-clockwise rotation about the axis (right hand rule). More... | |
bool | Scale (double scale_factor) |
Scales the object by the specified facotor. The scale is centered at the origin. More... | |
virtual bool | SwapCoordinates (int i, int j) |
Swaps object coordinate values with indices i and j. More... | |
bool | Translate (const ON_3dVector &translation_vector) |
Translates the object along the specified vector. More... | |
Public Member Functions inherited from ON_Object | |
ON_Object () ON_NOEXCEPT | |
ON_Object (const ON_Object &) | |
virtual | ~ON_Object () |
virtual ON_AggregateComponentStatus | AggregateComponentStatus () const |
Call whenever a component status setting is modifed by directly changing it on a component in a way that will result in any saved information about the parent object's aggretate component status becoming invalid. More... | |
bool | AttachUserData (class ON_UserData *pUserData) |
Attach user data to an object. More... | |
unsigned int | ClearAllComponentStates () const |
Set all active level component states to ON_ComponentStatus::NoneSet. More... | |
virtual unsigned int | ClearComponentStates (ON_ComponentStatus states_to_clear) const |
Clear the specified states on every component. More... | |
virtual unsigned int | ClearComponentStates (ON_COMPONENT_INDEX component_index, ON_ComponentStatus states_to_clear) const |
Clear states on an individual component. More... | |
unsigned int | CopyUserData (const ON_Object &source_object, ON_UUID source_userdata_item_id, ON_Object::UserDataConflictResolution userdata_conflict_resolution) |
Expert user tool that copies user data items with positive values of ON_UserData.m_userdata_copycount from source_object to "this. More... | |
void | CopyUserData (const ON_Object &source_object) |
Calls CopyUserData(source_object,ON_Object::UserDataConflictResolution::source_object). More... | |
virtual bool | DeleteComponents (const ON_COMPONENT_INDEX *ci_list, size_t ci_count) |
Delete the portions of the object identified in ci_list[]. More... | |
bool | DetachUserData (class ON_UserData *pUserData) |
Remove user data from an object. More... | |
void | EmergencyDestroy () |
Sets m_user_data_list = 0. More... | |
class ON_UserData * | FirstUserData () const |
User data is stored as a linked list of ON_UserData classes. FirstUserData gets the first item in the linked list. This is the most recent item attached using AttachUserData(). Remark: To iterate through all the user data on an object, call FirstUserData() and then use ON_UserData::Next() to traverse the list. More... | |
virtual unsigned int | GetComponentsWithSetStates (ON_ComponentStatus states_filter, bool bAllEqualStates, ON_SimpleArray< ON_COMPONENT_INDEX > &components) const |
class ON_UserData * | GetUserData (const ON_UUID &userdata_uuid) const |
Get a pointer to user data. More... | |
bool | GetUserString (const wchar_t *key, ON_wString &string_value) const |
Get user string from the object. More... | |
int | GetUserStringKeys (ON_ClassArray< ON_wString > &user_string_keys) const |
Get a list of all user string keys on the object. More... | |
int | GetUserStrings (ON_ClassArray< ON_UserString > &user_strings) const |
Get a list of all user strings on the object. More... | |
bool | IsKindOf (const ON_ClassId *pClassId) const |
Low level tool to test if an object is derived from a specified class. More... | |
virtual void | MarkAggregateComponentStatusAsNotCurrent () const |
Call whenever a component status setting is modifed by directly changing it on a component in a way that will result in any saved information about the parent object's aggretate component status becoming invalid. More... | |
virtual void | MemoryRelocate () |
The MemoryRelocate() function is called when an object's location in memory is changed. For example, if an object resides in a chunk of memory that is grown by calling a realloc that has to allocate a new chunk and copy the contents of the old chunk to the new chunk, then the location of the object's memory changes. In practice this happens when classes derived from ON_Object are stored in dynamic arrays, like the default implementation of ON_ObjectArray<>'s that use realloc to grow the dynamic array. More... | |
virtual ON_UUID | ModelObjectId () const |
All objects in an opennurbs model have an id ( ON_Layer.m_layer_id, ON_Font.m_font_id, ON_Material.m_material_id, ON_3dmObjectAttributes.m_uuid ). More... | |
unsigned int | MoveUserData (ON_Object &source_object, ON_UUID source_userdata_item_id, ON_Object::UserDataConflictResolution userdata_conflict_resolution, bool bDeleteAllSourceItems) |
Expert user tool that moves user data items from source_object to "this. More... | |
void | MoveUserData (ON_Object &source_object) |
Calls MoveUserData(source_object,ON_Object::UserDataConflictResolution::source_object,true). More... | |
ON_Object & | operator= (const ON_Object &) |
void | PurgeUserData () |
PurgeUserData() removes all user data from object. More... | |
virtual unsigned int | SetComponentStates (ON_COMPONENT_INDEX component_index, ON_ComponentStatus states_to_set) const |
Set states on an individual component. More... | |
virtual unsigned int | SetComponentStatus (ON_COMPONENT_INDEX component_index, ON_ComponentStatus status_to_copy) const |
Copy status settings to an individual component. More... | |
bool | SetUserString (const wchar_t *key, const wchar_t *string_value) |
Attach a user string to the object. This information will perisist through copy construction, operator=, and file IO. More... | |
int | SetUserStrings (int count, const ON_UserString *user_strings, bool bReplace) |
Append entries to the user string list More... | |
void | TransformUserData (const class ON_Xform &xform) |
Objects derived from ON_Geometry must call TransformUserData() in their Transform() member function. More... | |
virtual bool | UpdateReferencedComponents (const class ON_ComponentManifest &source_manifest, const class ON_ComponentManifest &destination_manifest, const class ON_ManifestMap &manifest_map) |
Uses the destination_manifest to update references to other components. This is typically done when a component's references came from a "source" context and are being updated to the "destination" context. For example, inserting one model into another when index, id, and name conflicts need to be resolved at the time of insertion. More... | |
int | UserStringCount () const |
Static Public Member Functions | |
static bool | CleanupPolyCurveProfile (ON_PolyCurve &polycurve) |
If possible, modify a polycurve so it meets the necessary conditions to be used as a multi-segment profile in a extrusion. More... | |
static ON_Extrusion * | CreateFrom3dCurve (const ON_Curve &curve, const ON_Plane *plane, double height, bool bCap, ON_Extrusion *extrusion=0) |
Create an ON_Exrusion from a 3d curve, a plane and a height. More... | |
static ON_Extrusion * | Cylinder (const ON_Cylinder &cylinder, bool bCapBottom, bool bCapTop, ON_Extrusion *extrusion=0) |
Get an ON_Exrusion form of a cylinder. More... | |
static bool | IsValidPolyCurveProfile (const ON_PolyCurve &polycurve, ON_TextLog *text_log=0) |
Test a polycurve to determine if it meets the necessary conditions to be used as a multi-segment profile in a extrusion. More... | |
static ON_Extrusion * | Pipe (const ON_Cylinder &cylinder, double other_radius, bool bCapBottom, bool bCapTop, ON_Extrusion *extrusion=0) |
Get an ON_Exrusion form of a pipe. More... | |
Public Attributes | |
bool | m_bCap [2] |
bool | m_bHaveN [2] |
bool | m_bTransposed |
ON_MeshCache | m_mesh_cache = ON_MeshCache::Empty |
Cached meshes used for rendering, analysis, ... More... | |
ON_3dVector | m_N [2] |
ON_Line | m_path |
ON_Interval | m_path_domain |
Surface parameterization information. More... | |
ON_Curve * | m_profile |
int | m_profile_count |
ON_Interval | m_t |
ON_3dVector | m_up |
Static Public Attributes | |
static const double | m_Nz_min |
static const double | m_path_length_min |
Static Public Attributes inherited from ON_Geometry | |
static const ON_Geometry | Unset |
Additional Inherited Members | |
Public Types inherited from ON_Surface | |
enum | ISO { not_iso = 0, x_iso = 1, y_iso = 2, W_iso = 3, S_iso = 4, E_iso = 5, N_iso = 6, iso_count = 7 } |
pure virtual class for surface objects More... | |
Public Types inherited from ON_Object | |
enum | UserDataConflictResolution : unsigned char { UserDataConflictResolution::destination_object = 0, UserDataConflictResolution::source_object = 1, UserDataConflictResolution::source_copycount_gt = 2, UserDataConflictResolution::source_copycount_ge = 3, UserDataConflictResolution::destination_copycount_gt = 4, UserDataConflictResolution::destination_copycount_ge = 5, UserDataConflictResolution::delete_item = 6 } |
When a userdata item is copied or moved from a source object to a destination object, the ON_Object::UserDataConflictResolution enum values specify how conficts are resolved. Remark: A userdata item "conflict" occurs when both the destination and source object have a user data item with the same value of ON_UserData::m_userdata_uuid. More... | |
ON_Extrusion::ON_Extrusion | ( | ) |
ON_Extrusion::ON_Extrusion | ( | const ON_Extrusion & | src | ) |
ON_Extrusion::~ON_Extrusion | ( | ) |
bool ON_Extrusion::AddInnerProfile | ( | ON_Curve * | inner_profile | ) |
Add an inner profile. Paramters: inner_profile - [in] closed curve in the xy plane or a 2d curve.
If needed, innter_profile will be converted to a 2d curve. If inner_profile is not correctly oriented, it will be reversed so it has a clockwise orientation.
Build a brep form of the extrusion. The outer profile is always the first face in the brep. If there are inner profiles, additional brep faces are created for each profile. If the outer profile is closed, then end caps are added as the last two faces in the brep.
brep | [in] If the brep pointer is not null, then the brep form is constructed in brep. If the brep pointer is null, then an ON_Brep is allocated on the heap. |
Reimplemented from ON_Geometry.
Build a brep form of the extrusion. The outer profile is always the first face in the brep. If there are inner profiles, additional brep faces are created for each profile. If the outer profile is closed, then end caps are added as the last two faces in the brep.
brep | [in] If the brep pointer is not null, then the brep form is constructed in brep. If the brep pointer is null, then an ON_Brep is allocated on the heap. |
bSmoothFaces | [in] If true and the profiles have kinks, then the faces corresponding to those profiles are split so they will be G1. |
int ON_Extrusion::CapCount | ( | ) | const |
|
static |
If possible, modify a polycurve so it meets the necessary conditions to be used as a multi-segment profile in a extrusion.
|
static |
Create an ON_Exrusion from a 3d curve, a plane and a height.
curve | [in] A continuous 3d curve. |
plane | [in] If plane is null, then the plane returned by curve.IsPlanar() is used. The 3d curve is projected to this plane and the result is passed to ON_Extrusion::SetOuterProfile(). |
height | [in] If the height > 0, the bottom of the extrusion will be in plane and the top will be height units above the plane. If the height < 0, the top of the extrusion will be in plane and the bottom will be height units below the plane. |
bCap | [in] If the curve is closed and bCap is true, then the resulting extrusion is capped. |
extrusion | [in] If the input extrusion pointer is null, one will be allocated on the heap and it is the caller's responsibility to delte it at an appropriate time. If the input pointer is not null, this extrusion will be used and the same pointer will be returned, provided the input is valid. |
|
static |
Get an ON_Exrusion form of a cylinder.
cylinder | [in] cylinder.IsFinite() must be true |
bCapBottom | [in] if true, the end at cylinder.m_height[0] will be capped |
bCapTop | [in] if true, the end at cylinder.m_height[1] will be capped |
extrusion | [in] If the input extrusion pointer is null, one will be allocated on the heap and it is the caller's responsibility to delte it at an appropriate time. If the input pointer is not null, this extrusion will be used and the same pointer will be returned, provided the input is valid. |
|
overridevirtual |
Returns a CRC calculated from the information that defines the object. This CRC can be used as a quick way to see if two objects are not identical.
current_remainder | [in]; |
Reimplemented from ON_Object.
|
overridevirtual |
Implements ON_Surface.
void ON_Extrusion::Destroy | ( | ) |
void ON_Extrusion::DestroyMesh | ( | ON::mesh_type | mt | ) |
Destroy a mesh attached to the ON_Extrusion.
mt | [in] type of mesh to destroy If mt is ON::default_mesh or ON::any_mesh, then all attached meshes of all types are destroyed. |
bDeleteMesh | [in] if true, cached mesh is deleted. If false, pointer to cached mesh is just set to null. |
DEPRECATED. Use ON_Extrusion.m_mesh_cache to managed chached meshes.
|
overridevirtual |
Expert user function. If you are using openNURBS in its default configuration to read and write 3dm archives, you never need to call this function. Many objects employ lazy creation of (runtime) caches that save information to help speed geometric calculations. This function will destroy all runtime information.
bDelete | [in] if true, any cached information is properly deleted. If false, any cached information is simply discarded. This is useful when the cached information may be in alternate memory pools that are managed in nonstandard ways. |
Reimplemented from ON_Object.
|
overridevirtual |
Dimension of the object.
The dimension is typically three. For parameter space trimming curves the dimension is two. In rare cases the dimension can be one or greater than three.
Reimplemented from ON_Geometry.
|
overridevirtual |
Implements ON_Surface.
|
overridevirtual |
|
overridevirtual |
work horse evaluator
Implements ON_Surface.
|
overridevirtual |
Pure virtual function. Default returns false. Where possible, analytically extends surface to include domain.
dir | [in] 0 new Domain(0) will include domain. (the first surface parameter). 1 new Domain(1) will include domain. (the second surface parameter). |
domain | [in] if domain is not included in surface domain, surface will be extended so that its domain includes domain. Will not work if surface is closed in direction dir. Original surface is identical to the restriction of the resulting surface to the original surface domain, |
Reimplemented from ON_Surface.
|
overridevirtual |
virtual ON_Geometry GetBBox override
Reimplemented from ON_Geometry.
bool ON_Extrusion::GetBrepFormComponentIndex | ( | ON_COMPONENT_INDEX | extrusion_ci, |
ON_COMPONENT_INDEX & | brep_ci | ||
) | const |
Convert a component index that identifies a part of this extrusion to a component index that identifies a part of the brep created by BrepForm(...,false).
extrusion_ci | [in] |
extrusion_profile_parameter | [in] |
brep_form | [in] brep created by ON_Extrusion::BrepForm() |
brep_ci | [out] |
If the wall surfaces have creases, then this function cannot be used to identify brep components created by BrepForm(...,true).
bool ON_Extrusion::GetBrepFormComponentIndex | ( | ON_COMPONENT_INDEX | extrusion_ci, |
double | extrusion_profile_parameter, | ||
const ON_Brep & | brep_form, | ||
ON_COMPONENT_INDEX & | brep_ci | ||
) | const |
bool ON_Extrusion::GetBrepFormComponentIndex | ( | ON_COMPONENT_INDEX | extrusion_ci, |
double | extrusion_profile_parameter, | ||
const ON_Brep * | brep_form, | ||
ON_COMPONENT_INDEX & | brep_ci | ||
) | const |
void ON_Extrusion::GetMiterPlaneNormal | ( | int | end, |
ON_3dVector & | N | ||
) | const |
|
overridevirtual |
Search for a derivatitive, tangent, or curvature discontinuity.
dir | [in] If 0, then "u" parameter is checked. If 1, then the "v" parameter is checked. |
c | [in] type of continity to test for. |
t0 | [in] Search begins at t0. If there is a discontinuity at t0, it will be ignored. This makes it possible to repeatedly call GetNextDiscontinuity and step through the discontinuities. |
t1 | [in] (t0 != t1) If there is a discontinuity at t1 is will be ingored unless c is a locus discontinuity type and t1 is at the start or end of the curve. |
t | [out] if a discontinuity is found, then *t reports the parameter at the discontinuity. |
hint | [in/out] if GetNextDiscontinuity will be called repeatedly, passing a "hint" with initial value *hint=0 will increase the speed of the search. |
dtype | [out] if not nullptr, *dtype reports the kind of discontinuity found at *t. A value of 1 means the first derivative or unit tangent was discontinuous. A value of 2 means the second derivative or curvature was discontinuous. A value of 0 means teh curve is not closed, a locus discontinuity test was applied, and t1 is at the start of end of the curve. |
cos_angle_tolerance | [in] default = cos(1 degree) Used only when c is ON::continuity::G1_continuous or ON::continuity::G2_continuous. If the cosine of the angle between two tangent vectors is <= cos_angle_tolerance, then a G1 discontinuity is reported. |
curvature_tolerance | [in] (default = ON_SQRT_EPSILON) Used only when c is ON::continuity::G2_continuous. If K0 and K1 are curvatures evaluated from above and below and |K0 - K1| > curvature_tolerance, then a curvature discontinuity is reported. |
Parametric continuity tests c = (C0_continuous, ..., G2_continuous):
true if a parametric discontinuity was found strictly between t0 and t1. Note well that all curves are parametrically continuous at the ends of their domains.
Locus continuity tests c = (C0_locus_continuous, ...,G2_locus_continuous):
true if a locus discontinuity was found strictly between t0 and t1 or at t1 is the at the end of a curve. Note well that all open curves (IsClosed()=false) are locus discontinuous at the ends of their domains. All closed curves (IsClosed()=true) are at least C0_locus_continuous at the ends of their domains.
Reimplemented from ON_Surface.
|
overridevirtual |
Get a NURBS surface representation of this surface.
nurbs_surface | [out] NURBS representation returned here |
tolerance | [in] tolerance to use when creating NURBS representation. |
s_subdomain | [in] if not nullptr, then the NURBS representation for this portion of the surface is returned. |
t_subdomain | [in] if not nullptr, then the NURBS representation for this portion of the surface is returned. |
This is a low-level virtual function. If you do not need the parameterization information provided by the return code, then ON_Surface::NurbsSurface may be easier to use.
Reimplemented from ON_Surface.
|
overridevirtual |
Reimplemented from ON_Surface.
|
overridevirtual |
Reimplemented from ON_Surface.
bool ON_Extrusion::GetPathPlane | ( | double | s, |
ON_Plane & | plane | ||
) | const |
Get the the 3d plane perpendicular to the path at a normalized path parameter.
s | [in] 0.0 = starting plane 1.0 = ending plane |
plane | [out] Plane is returned here. If false is returned, then the input value of plane is not changed. |
When no mitering is happening, GetPathPlane() and GetProfilePlane() return the same plane.
int ON_Extrusion::GetProfileCurves | ( | ON_SimpleArray< const ON_Curve *> & | profile_curves | ) | const |
Get a list of the 2d profile curves.
int ON_Extrusion::GetProfileKinkParameters | ( | int | profile_index, |
ON_SimpleArray< double > & | profile_kink_parameters | ||
) | const |
Get the parameters where a profile curve has kinks.
profile_index | [in] |
profile_kink_parameters | [out] parameters at internal kinks are appended to this array. |
This function is used when making the brep form that has smooth faces.
int ON_Extrusion::GetProfileKinkParameters | ( | int | profile_index, |
ON_SimpleArray< double > * | profile_kink_parameters | ||
) | const |
bool ON_Extrusion::GetProfilePlane | ( | double | s, |
ON_Plane & | plane | ||
) | const |
Get the the 3d plane containing the profile curve at a normalized path parameter.
s | [in] 0.0 = starting plane 1.0 = ending plane |
plane | [out] Plane containing profile is returned in plane. If false is returned, then the input value of plane is not changed. |
When no mitering is happening, GetPathPlane() and GetProfilePlane() return the same plane.
bool ON_Extrusion::GetProfileTransformation | ( | double | s, |
ON_Xform & | xform | ||
) | const |
Get the transformation that maps the xy profile curve to its 3d location.
s | [in] 0.0 = starting profile 1.0 = ending profile |
|
overridevirtual |
Implements ON_Surface.
|
overridevirtual |
Reimplemented from ON_Surface.
|
overridevirtual |
Reimplemented from ON_Surface.
|
overridevirtual |
Get an estimate of the size of the rectangle that would be created if the 3d surface where flattened into a rectangle.
width | [out] (corresponds to the first surface parameter) |
height | [out] (corresponds to the first surface parameter) |
Reimplemented from ON_Surface.
|
overridevirtual |
virtual ON_Geometry GetTightBoundingBox override
Reimplemented from ON_Geometry.
|
overridevirtual |
Is there a NURBS surface representation of this surface.
This is a low-level virtual function.
Reimplemented from ON_Surface.
int ON_Extrusion::IsCapped | ( | ) | const |
|
overridevirtual |
Reimplemented from ON_Surface.
|
overridevirtual |
Test continuity at a surface parameter value.
c | [in] continuity to test for |
s | [in] surface parameter to test |
t | [in] surface parameter to test |
hint | [in] evaluation hint |
point_tolerance | [in] if the distance between two points is greater than point_tolerance, then the surface is not C0. |
d1_tolerance | [in] if the difference between two first derivatives is greater than d1_tolerance, then the surface is not C1. |
d2_tolerance | [in] if the difference between two second derivatives is greater than d2_tolerance, then the surface is not C2. |
cos_angle_tolerance | [in] default = cos(1 degree) Used only when c is ON::continuity::G1_continuous or ON::continuity::G2_continuous. If the cosine of the angle between two normal vectors is <= cos_angle_tolerance, then a G1 discontinuity is reported. |
curvature_tolerance | [in] (default = ON_SQRT_EPSILON) Used only when c is ON::continuity::G2_continuous. If K0 and K1 are curvatures evaluated from above and below and |K0 - K1| > curvature_tolerance, then a curvature discontinuity is reported. |
Reimplemented from ON_Surface.
|
overridevirtual |
Test a 2d curve to see if it is iso parameteric in the surface's parameter space.
curve | [in] curve to test curve_domain = [in] optional sub domain of the curve |
Because it may transpose domains, ON_SurfaceProxy overrides this function. All other surface classes just use the base class implementation.
Reimplemented from ON_Surface.
|
overridevirtual |
Test a 2d bounding box to see if it is iso parameteric in the surface's parameter space.
bbox | [in] bounding box to test |
Because it may transpose domains, ON_SurfaceProxy overrides this function. All other surface classes just use the base class implementation.
Reimplemented from ON_Surface.
int ON_Extrusion::IsMitered | ( | ) | const |
|
overridevirtual |
Get isoparametric curve.
dir | [in] 0 first parameter varies and second parameter is constant e.g., point on IsoCurve(0,c) at t is srf(t,c) This is a horizontal line from left to right 1 first parameter is constant and second parameter varies e.g., point on IsoCurve(1,c) at t is srf(c,t This is a vertical line from bottom to top |
c | [in] value of constant parameter |
In this function "dir" indicates which direction the resulting curve runs. 0: horizontal, 1: vertical In the other ON_Surface functions that take a "dir" argument, "dir" indicates if "c" is a "u" or "v" parameter.
Reimplemented from ON_Surface.
|
overridevirtual |
Reimplemented from ON_Surface.
|
overridevirtual |
Test a surface to see if it is planar.
plane | [out] if not nullptr and true is returned, the plane parameters are filled in. |
tolerance | [in] tolerance to use when checking |
Reimplemented from ON_Surface.
bool ON_Extrusion::IsSolid | ( | ) | const |
|
overridevirtual |
Tests an object to see if its data members are correctly initialized.
text_log | [in] if the object is not valid and text_log is not nullptr, then a brief englis description of the reason the object is not valid is appened to the log. The information appended to text_log is suitable for |
low | level debugging purposes by programmers and is not intended to be useful as a high level user interface tool. |
Reimplemented from ON_Object.
|
static |
Test a polycurve to determine if it meets the necessary conditions to be used as a multi-segment profile in a extrusion.
const ON_Mesh* ON_Extrusion::Mesh | ( | ON::mesh_type | mt | ) | const |
Get a mesh attached to the ON_Extrusion.
mt | [in] type of mesh to get. ON::render_mesh, ON::analysis_mesh and ON::preview_mesh remove the meshes of those types. If mt is ON::default_mesh or ON::any_mesh, then the first non null mesh is returned. |
DEPRECATED. Use ON_Extrusion.m_mesh_cache to managed chached meshes.
|
overridevirtual |
Useful for switch statements that need to differentiate between basic object types like points, curves, surfaces, and so on.
ON::object_type enum value.
The default implementation of this virtual function returns ON::unknown_object_type
Reimplemented from ON_Object.
ON_Extrusion::ON_DEPRECATED_MSG | ( | "Use | CapCount(), |
ProfileCount() | , | ||
or ProfileSmoothSegmentCount()" | |||
) | const |
Deprecated function.
Use CapCount() to determine how many end caps there are. Use ProfileCount() to determine how many profiles there are. Use ProfileSmoothSegmentCount() to determine how many smooth subsegments are in a profile. Each smooth subsegment becomes a wall face in the brep form.
Number of "faces" the extrusion has. 0: extrusion is not valid 1: extrusion is not capped 2: extrusion has a closed outer profile and one cap 3: extrusion has a closed outer profile and two caps
This function was written before extrusions supported "holes" and before the brep form was divided at profile creases. At this point it simply leads to confusion. See the Description function replacements.
ON_Extrusion& ON_Extrusion::operator= | ( | const ON_Extrusion & | ) |
ON_3dPoint ON_Extrusion::PathEnd | ( | ) | const |
ON_LineCurve* ON_Extrusion::PathLineCurve | ( | ON_LineCurve * | line_curve | ) | const |
int ON_Extrusion::PathParameter | ( | ) | const |
Get the surface parameter for the path.
The default ON_Extrusion constructor sets m_bTransposed = false which corresponds to the 1 = PathParameter().
ON_3dPoint ON_Extrusion::PathStart | ( | ) | const |
ON_3dVector ON_Extrusion::PathTangent | ( | ) | const |
|
static |
Get an ON_Exrusion form of a pipe.
cylinder | [in] cylinder.IsFinite() must be true The cylinder can be either the inner or outer wall of the pipe. |
other_radius | in If cylinder.Radius() < other_radius, then the cylinder will be the inside of the pipe. If cylinder.Radius() > other_radius, then the cylinder will be the outside of the pipe. |
bCapBottom | [in] if true, the end at cylinder.m_height[0] will be capped |
bCapTop | [in] if true, the end at cylinder.m_height[1] will be capped |
extrusion | [in] If the input extrusion pointer is null, one will be allocated on the heap and it is the caller's responsibility to delte it at an appropriate time. If the input pointer is not null, this extrusion will be used and the same pointer will be returned, provided the input is valid. |
const ON_PolyCurve* ON_Extrusion::PolyProfile | ( | ) | const |
const ON_Curve* ON_Extrusion::Profile | ( | int | profile_index | ) | const |
ON_Curve* ON_Extrusion::Profile3d | ( | int | profile_index, |
double | s | ||
) | const |
ON_Curve* ON_Extrusion::Profile3d | ( | ON_COMPONENT_INDEX | ci | ) | const |
int ON_Extrusion::ProfileCount | ( | ) | const |
int ON_Extrusion::ProfileIndex | ( | double | profile_parameter | ) | const |
bool ON_Extrusion::ProfileIsKinked | ( | int | profile_index | ) | const |
profile_index | [in] |
int ON_Extrusion::ProfileParameter | ( | ) | const |
Get the surface parameter for the profile.
The default ON_Extrusion constructor sets m_bTransposed = false which corresponds to the 0 = ProfileParameter().
int ON_Extrusion::ProfileSmoothSegmentCount | ( | int | profile_index | ) | const |
|
overridevirtual |
Low level archive writing tool used by ON_BinaryArchive::ReadObject().
binary_archive | archive to read from |
Use ON_BinaryArchive::ReadObject() to read objects. This Read() function should read the objects definition back into its data members.
The default implementation of this virtual function returns false and does nothing.
Reimplemented from ON_Object.
|
overridevirtual |
Implements ON_Surface.
|
overridevirtual |
Reimplemented from ON_Surface.
bool ON_Extrusion::SetMesh | ( | ON::mesh_type | mt, |
ON_Mesh * | mesh | ||
) |
Attach a mesh to the ON_Extrusion.
mt | [in] type of mesh that is being attached. If mt is ON::render_mesh, ON::analysis_mesh or ON::preview_mesh, the mesh is attached as that type of mesh. If mt is ON::default_mesh or ON::any_mesh, then nothing is done and false is returned. |
mesh | [in]
|
DEPRECATED. Use ON_Extrusion.m_mesh_cache to managed chached meshes.
bool ON_Extrusion::SetMiterPlaneNormal | ( | ON_3dVector | N, |
int | end | ||
) |
Set miter plane normal.
N | [in] If N = ON_3dVector::UnsetVector or N is parallel to the z-axis, then the miter plane is the default plane perpendicular to the path. If N is valid and the z coordinate of a unitized N is greater than m_Nz_tol, then the miter plane normal is set. |
end | [in] 0 = set miter plane at the start of the path. 1 = set miter plane at the end of the path. |
bool ON_Extrusion::SetOuterProfile | ( | ON_Curve * | outer_profile, |
bool | bCap | ||
) |
Set the outer profile of the extrusion. Paramters: outer_profile - [in] curve in the xy plane or a 2d curve. bCap - [in] If outer_profile is a closed curve, then bCap determines if the extrusion has end caps. If outer_profile is an open curve, bCap is ignored.
If needed, outer_profile will be converted to a 2d curve. If outer_curve is closed but not correctly oriented, it will reversed so it has a counter-clockwise orientation.
bool ON_Extrusion::SetPath | ( | ON_3dPoint | A, |
ON_3dPoint | B | ||
) |
Sets m_path to (A,B), m_path_domain to [0,Length(AB)], and m_t to [0,1].
A | [in] path start |
B | [in] path end |
bool ON_Extrusion::SetPathAndUp | ( | ON_3dPoint | A, |
ON_3dPoint | B, | ||
ON_3dVector | up | ||
) |
Sets m_path to (A,B), m_path_domain to [0,Length(AB)], m_t to [0,1], and m_up.
A | [in] path start |
B | [in] path end |
up | [in] up direction If up is a unit vector and perpendicular to the line segment from A to B, then m_up is set to up. Otherwise up will be adjusted so it is perpendicular to the line segment from A to B and unitized. |
|
overridevirtual |
Reimplemented from ON_Object.
|
overridevirtual |
Implements ON_Surface.
|
overridevirtual |
Splits (divides) the surface into two parts at the specified parameter.
dir | [in] 0 The surface is split vertically. The "west" side is returned in "west_or_south_side" and the "east" side is returned in "east_or_north_side". 1 The surface is split horizontally. The "south" side is returned in "west_or_south_side" and the "north" side is returned in "east_or_north_side". |
c | [in] value of constant parameter in interval returned by Domain(dir) |
west_or_south_side | [out] west/south portion of surface returned here |
east_or_north_side | [out] east/north portion of surface returned here |
Reimplemented from ON_Surface.
ON_SumSurface* ON_Extrusion::SumSurfaceForm | ( | ON_SumSurface * | sum_surface | ) | const |
Build a sum surface form of the extrusion.
sum_surface | [in] If the sum_surface pointer is not null, then the sum surface form is constructed in sum_surface. If the sum_surface pointer is null, then an ON_SumSurface is allocated on the heap. |
|
overridevirtual |
Transforms the object.
xform | [in] transformation to apply to object. If xform.IsSimilarity() is zero, then you may want to call MakeSquishy() before calling Transform. |
Classes derived from ON_Geometry should call ON_Geometry::Transform() to handle user data transformations and then transform their definition.
Reimplemented from ON_Geometry.
|
overridevirtual |
Implements ON_Surface.
|
overridevirtual |
Removes the portions of the surface outside of the specified interval.
dir | [in] 0 The domain specifies an sub-interval of Domain(0) (the first surface parameter). 1 The domain specifies an sub-interval of Domain(1) (the second surface parameter). |
domain | [in] interval of the surface to keep. If dir is 0, then the portions of the surface with parameters (s,t) satisfying s < Domain(0).Min() or s > Domain(0).Max() are trimmed away. If dir is 1, then the portions of the surface with parameters (s,t) satisfying t < Domain(1).Min() or t > Domain(1).Max() are trimmed away. |
Reimplemented from ON_Surface.
ON_Curve* ON_Extrusion::WallEdge | ( | ON_COMPONENT_INDEX | ci | ) | const |
ON_Surface* ON_Extrusion::WallSurface | ( | ON_COMPONENT_INDEX | ci | ) | const |
|
overridevirtual |
Low level archive writing tool used by ON_BinaryArchive::WriteObject().
binary_archive | archive to write to |
Use ON_BinaryArchive::WriteObject() to write objects. This Write() function should just write the specific definition of this object. It should not write and any chunk typecode or length information.
The default implementation of this virtual function returns false and does nothing.
Reimplemented from ON_Object.
bool ON_Extrusion::m_bCap[2] |
bool ON_Extrusion::m_bHaveN[2] |
bool ON_Extrusion::m_bTransposed |
|
mutable |
Cached meshes used for rendering, analysis, ...
ON_3dVector ON_Extrusion::m_N[2] |
|
static |
ON_Line ON_Extrusion::m_path |
ON_Interval ON_Extrusion::m_path_domain |
Surface parameterization information.
|
static |
ON_Curve* ON_Extrusion::m_profile |
int ON_Extrusion::m_profile_count |
ON_Interval ON_Extrusion::m_t |
ON_3dVector ON_Extrusion::m_up |