#include <opennurbs_hatch.h>

Inheritance diagram for ON_Hatch:
ON_Geometry ON_Object

Public Member Functions

 ON_Hatch ()=default
 Default constructor. More...
 
 ON_Hatch (const ON_Hatch &)
 
 ~ON_Hatch ()
 
void AddLoop (ON_HatchLoop *loop)
 Add a loop to the hatch More...
 
ON_3dPoint BasePoint () const
 Return 3d WCS point that lies on hatch's plane used for pattern origin. More...
 
ON_2dPoint BasePoint2d () const
 Return 2d ECS point used for pattern origin. More...
 
class ON_BrepBrepForm (class ON_Brep *brep=nullptr) const override
 If possible, BrepForm() creates a brep form of the ON_Geometry. More...
 
bool Create (const ON_Plane &plane, const ON_SimpleArray< const ON_Curve *> loops, int pattern_index, double pattern_rotation, double pattern_scale)
 Interface. More...
 
int Dimension () const override
 ON_Geometry overrides ////////////////////////////////////////////////////////////// Returns the geometric dimension of the object ( usually 3) More...
 
void Dump (ON_TextLog &) const override
 Creates a text dump of the object. More...
 
virtual ON_HatchDuplicateHatch () const
 
bool GetBBox (double *boxmin, double *boxmax, bool bGrowBox=false) const override
 virtual ON_Geometry GetBBox override 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...
 
bool InsertLoop (int index, ON_HatchLoop *loop)
 Insert a loop to the hatch at the specified index More...
 
bool IsValid (class ON_TextLog *text_log=nullptr) const override
 ON_Object overrides. More...
 
const ON_HatchLoopLoop (int index) const
 Get the loop at index More...
 
int LoopCount () const
 Get the number of loops used by this hatch More...
 
ON_CurveLoopCurve3d (int index) const
 Get the 3d curve corresponding to loop[index] 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_Hatchoperator= (const ON_Hatch &)
 
int PatternIndex () const
 Get the index of the hatch's pattern More...
 
double PatternRotation () const
 Gets the rotation applied to the hatch pattern when it is mapped to the hatch's plane More...
 
double PatternScale () const
 Gets the scale applied to the hatch pattern when it is mapped to the hatch's plane More...
 
const ON_PlanePlane () const
 Get the plane defining the hatch's coordinate system More...
 
bool Read (ON_BinaryArchive &) override
 Low level archive writing tool used by ON_BinaryArchive::ReadObject(). More...
 
bool RemoveLoop (int index)
 Remove a loop in the hatch More...
 
bool ReplaceLoops (ON_SimpleArray< const ON_Curve *> &loops)
 Remove all of the loops on the hatch and add the curves in 'loops' as new loops More...
 
void SetBasePoint (ON_2dPoint basepoint)
 Set 2d Base point for hatch pattern alignment. More...
 
void SetBasePoint (ON_3dPoint point)
 Set 3d Base point for hatch pattern alignment. More...
 
void SetPatternIndex (int index)
 Set the index of the hatch's pattern More...
 
void SetPatternRotation (double rotation)
 Sets the rotation applied to the hatch pattern when it is mapped to the hatch's plane More...
 
void SetPatternScale (double scale)
 Sets the scale applied to the hatch pattern when it is mapped to the hatch's plane More...
 
void SetPlane (const ON_Plane &plane)
 Set the plane defining the hatch's coordinate system More...
 
bool Transform (const ON_Xform &) override
 Transform the object by a 4x4 xform matrix More...
 
bool Write (ON_BinaryArchive &) const override
 Low level archive writing tool used by ON_BinaryArchive::WriteObject(). 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...
 
virtual bool EvaluatePoint (const class ON_ObjRef &objref, ON_3dPoint &P) const
 Evaluate the location of a point from the object reference. 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 HasBrepForm () const
 Query an object to see if it has an ON_Brep form. Result: Returns true if the virtual ON_Geometry::BrepForm can compute an ON_Brep representation of this object. More...
 
virtual bool IsDeformable () const
 
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_Geometryoperator= (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 ON__UINT32 DataCRC (ON__UINT32 current_remainder) const
 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...
 
virtual bool DeleteComponents (const ON_COMPONENT_INDEX *ci_list, size_t ci_count)
 Delete the portions of the object identified in ci_list[]. More...
 
virtual void DestroyRuntimeCache (bool bDelete=true)
 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...
 
bool DetachUserData (class ON_UserData *pUserData)
 Remove user data from an object. More...
 
void EmergencyDestroy ()
 Sets m_user_data_list = 0. More...
 
class ON_UserDataFirstUserData () 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_UserDataGetUserData (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_Objectoperator= (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...
 
virtual unsigned int SizeOf () const
 
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 ON_HatchHatchFromBrep (ON_Hatch *use_this_hatch, const ON_Brep *brep, int face_index, int pattern_index, double pattern_rotation_radians, double pattern_scale, ON_3dPoint basepoint)
 

Additional Inherited Members

- 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...
 
- Static Public Attributes inherited from ON_Geometry
static const ON_Geometry Unset
 

Constructor & Destructor Documentation

◆ ON_Hatch() [1/2]

ON_Hatch::ON_Hatch ( )
default

Default constructor.

◆ ~ON_Hatch()

ON_Hatch::~ON_Hatch ( )

◆ ON_Hatch() [2/2]

ON_Hatch::ON_Hatch ( const ON_Hatch )

Member Function Documentation

◆ AddLoop()

void ON_Hatch::AddLoop ( ON_HatchLoop loop)

Add a loop to the hatch

Parameters
loop[in] the loop to add. Memory management for the loop is managed by this class.
Returns

◆ BasePoint()

ON_3dPoint ON_Hatch::BasePoint ( ) const

Return 3d WCS point that lies on hatch's plane used for pattern origin.

◆ BasePoint2d()

ON_2dPoint ON_Hatch::BasePoint2d ( ) const

Return 2d ECS point used for pattern origin.

◆ BrepForm()

class ON_Brep* ON_Hatch::BrepForm ( class ON_Brep brep = nullptr) const
overridevirtual

If possible, BrepForm() creates a brep form of the ON_Geometry.

Parameters
brep[in] if not nullptr, brep is used to store the brep form of the geometry. Result: Returns a pointer to on ON_Brep or nullptr. If the brep parameter is not nullptr, then brep is returned if the geometry has a brep form and nullptr is returned if the geometry does not have a brep form.

The caller is responsible for managing the brep memory. See Also ON_Geometry::HasBrepForm

Reimplemented from ON_Geometry.

◆ Create()

bool ON_Hatch::Create ( const ON_Plane plane,
const ON_SimpleArray< const ON_Curve *>  loops,
int  pattern_index,
double  pattern_rotation,
double  pattern_scale 
)

Interface.

Create a hatch from input geometry and parameters

TODODOC: plane [I] - ON_Plane to make the hatch on TODODOC: loops [I] - Array of boundary loops with the outer one first TODODOC: pattern_index [I] - Index into the hatch table TODODOC: pattern_rotation [I] - ccw in radians about plane origin TODODOC: pattern_scale [I] - Scale factor for pattern definition

Returns
true = success, false = failure

◆ Dimension()

int ON_Hatch::Dimension ( ) const
overridevirtual

ON_Geometry overrides ////////////////////////////////////////////////////////////// Returns the geometric dimension of the object ( usually 3)

Reimplemented from ON_Geometry.

◆ Dump()

void ON_Hatch::Dump ( ON_TextLog ) const
overridevirtual

Creates a text dump of the object.

Dump() is intended for debugging and is not suitable for creating high quality text descriptions of an object.

The default implementations of this virtual function prints the class's name.

Reimplemented from ON_Object.

◆ DuplicateHatch()

virtual ON_Hatch* ON_Hatch::DuplicateHatch ( ) const
virtual

◆ GetBBox()

bool ON_Hatch::GetBBox ( double *  boxmin,
double *  boxmax,
bool  bGrowBox = false 
) const
overridevirtual

virtual ON_Geometry GetBBox override

Reimplemented from ON_Geometry.

◆ GetTightBoundingBox()

bool ON_Hatch::GetTightBoundingBox ( class ON_BoundingBox tight_bbox,
bool  bGrowBox = false,
const class ON_Xform xform = nullptr 
) const
overridevirtual

virtual ON_Geometry GetTightBoundingBox override

Reimplemented from ON_Geometry.

◆ HatchFromBrep()

static ON_Hatch* ON_Hatch::HatchFromBrep ( ON_Hatch use_this_hatch,
const ON_Brep brep,
int  face_index,
int  pattern_index,
double  pattern_rotation_radians,
double  pattern_scale,
ON_3dPoint  basepoint 
)
static

◆ InsertLoop()

bool ON_Hatch::InsertLoop ( int  index,
ON_HatchLoop loop 
)

Insert a loop to the hatch at the specified index

Parameters
index[in] zero based index of the position where insert the loop to.
loop[in] the loop to insert. Memory management for the loop is managed by this class on success.
Returns
true if success false if index is lower than 0 or greater than current loop count.

◆ IsValid()

bool ON_Hatch::IsValid ( class ON_TextLog text_log = nullptr) const
overridevirtual

ON_Object overrides.

Reimplemented from ON_Geometry.

◆ Loop()

const ON_HatchLoop* ON_Hatch::Loop ( int  index) const

Get the loop at index

Parameters
index[in] which loop to get
Returns
pointer to loop at index nullptr if index is out of range

◆ LoopCount()

int ON_Hatch::LoopCount ( ) const

Get the number of loops used by this hatch

Returns
the number of loops

◆ LoopCurve3d()

ON_Curve* ON_Hatch::LoopCurve3d ( int  index) const

Get the 3d curve corresponding to loop[index]

Parameters
index[in] which loop to get
Returns
pointer to 3d curve of loop at index nullptr if index is out of range or curve can't be made Caller deletes the returned curve

◆ ObjectType()

ON::object_type ON_Hatch::ObjectType ( ) const
overridevirtual

Useful for switch statements that need to differentiate between basic object types like points, curves, surfaces, and so on.

Returns

ON::object_type enum value.

The default implementation of this virtual function returns ON::unknown_object_type

Reimplemented from ON_Object.

◆ operator=()

ON_Hatch& ON_Hatch::operator= ( const ON_Hatch )

◆ PatternIndex()

int ON_Hatch::PatternIndex ( ) const

Get the index of the hatch's pattern

Returns
index of the pattern

◆ PatternRotation()

double ON_Hatch::PatternRotation ( ) const

Gets the rotation applied to the hatch pattern when it is mapped to the hatch's plane

Returns
The rotation in radians

The pattern is rotated counter-clockwise around the hatch's plane origin by this value

◆ PatternScale()

double ON_Hatch::PatternScale ( ) const

Gets the scale applied to the hatch pattern when it is mapped to the hatch's plane

Returns
The scale

The pattern is scaled around the hatch's plane origin by this value

◆ Plane()

const ON_Plane& ON_Hatch::Plane ( ) const

Get the plane defining the hatch's coordinate system

Returns
the plane

◆ Read()

bool ON_Hatch::Read ( ON_BinaryArchive binary_archive)
overridevirtual

Low level archive writing tool used by ON_BinaryArchive::ReadObject().

Parameters
binary_archivearchive to read from
Returns
Returns true if the read is successful.

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.

◆ RemoveLoop()

bool ON_Hatch::RemoveLoop ( int  index)

Remove a loop in the hatch

Parameters
loop[in] zero based index of the loop to remove.
Returns
true if success

◆ ReplaceLoops()

bool ON_Hatch::ReplaceLoops ( ON_SimpleArray< const ON_Curve *> &  loops)

Remove all of the loops on the hatch and add the curves in 'loops' as new loops

Parameters
loops[in] An array of pointers to 2d or 3d curves If the curves are 2d, add them to the hatch directly If they are 3d, project them to the hatch's plane first
Returns
true - success false - no loops in input array or an error adding them

◆ SetBasePoint() [1/2]

void ON_Hatch::SetBasePoint ( ON_2dPoint  basepoint)

Set 2d Base point for hatch pattern alignment.

Basepoint functions added March 23, 2008 -LW

Parameters
basepoint2d point in hatch's ECS

◆ SetBasePoint() [2/2]

void ON_Hatch::SetBasePoint ( ON_3dPoint  point)

Set 3d Base point for hatch pattern alignment.

Parameters
point3d WCS point

Projects point to hatch's plane and sets 2d point

◆ SetPatternIndex()

void ON_Hatch::SetPatternIndex ( int  index)

Set the index of the hatch's pattern

Parameters
index[in] pattern index to set
Returns

◆ SetPatternRotation()

void ON_Hatch::SetPatternRotation ( double  rotation)

Sets the rotation applied to the hatch pattern when it is mapped to the hatch's plane

Parameters
rotation[in] The rotation in radians

The pattern is rotated counter-clockwise around the hatch's plane origin by this value

◆ SetPatternScale()

void ON_Hatch::SetPatternScale ( double  scale)

Sets the scale applied to the hatch pattern when it is mapped to the hatch's plane

Parameters
scale[in] The scale

The pattern is scaled around the hatch's plane origin by this value

◆ SetPlane()

void ON_Hatch::SetPlane ( const ON_Plane plane)

Set the plane defining the hatch's coordinate system

Parameters
plane[in] the plane to set
Returns

◆ Transform()

bool ON_Hatch::Transform ( const ON_Xform )
overridevirtual

Transform the object by a 4x4 xform matrix

TODODOC: [in] xform - An ON_Xform with the transformation information

Returns
true = Success false = Failure

The object has been transformed when the function returns.

Reimplemented from ON_Geometry.

◆ Write()

bool ON_Hatch::Write ( ON_BinaryArchive binary_archive) const
overridevirtual

Low level archive writing tool used by ON_BinaryArchive::WriteObject().

Parameters
binary_archivearchive to write to
Returns
Returns true if the write is successful.

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.