#include <opennurbs_brep.h>

Inheritance diagram for ON_BrepEdge:
ON_CurveProxy ON_Curve ON_Geometry ON_Object

Public Member Functions

 ON_BrepEdge ()
 
 ON_BrepEdge (int)
 edge index More...
 
ON_BrepBrep () const
 
bool ChangeEdgeCurve (int c3i)
 
ON_COMPONENT_INDEX ComponentIndex () const override
 virtual ON_Geometry::ComponentIndex() override More...
 
ON__UINT32 DataCRC (ON__UINT32 current_remainder) const override
 virtual ON_Object::DataCRC override More...
 
void Dump (ON_TextLog &) const override
 virtual ON_Object::Dump() override More...
 
int EdgeCurveIndexOf () const
 Implementation. More...
 
const ON_CurveEdgeCurveOf () const
 
bool IsClosed () const override
 virtual ON_Curve::IsClosed override More...
 
bool IsValid (class ON_TextLog *text_log=nullptr) const override
 
ON::object_type ObjectType () const override
 
ON_BrepEdgeoperator= (const ON_BrepEdge &)
 
bool Read (ON_BinaryArchive &) override
 virtual ON_Object::Read() override More...
 
bool Reverse () override
 virtual ON_Curve::Reverse override More...
 
unsigned int SizeOf () const override
 virtual ON_Object::SizeOf override More...
 
ON_BrepTrimTrim (int eti) const
 
int TrimCount () const
 
void UnsetPlineEdgeParameters ()
 
ON_BrepVertexVertex (int evi) const
 
bool Write (ON_BinaryArchive &) const override
 virtual ON_Object::Write() override More...
 
- Public Member Functions inherited from ON_CurveProxy
 ON_CurveProxy () ON_NOEXCEPT
 
 ON_CurveProxy (const ON_CurveProxy &)
 
 ON_CurveProxy (const ON_Curve *)
 
 ON_CurveProxy (const ON_Curve *, ON_Interval)
 
virtual ~ON_CurveProxy ()
 
ON__UINT32 DataCRC (ON__UINT32 current_remainder) const override
 virtual ON_Object::DataCRC override More...
 
int Degree () const override
 
void DestroyRuntimeCache (bool bDelete=true) override
 virtual ON_Object::DestroyRuntimeCache override More...
 
int Dimension () const override
 ON_Geometry overrides. More...
 
ON_Interval Domain () const override
 ON_Curve overrides. More...
 
void Dump (ON_TextLog &) const override
 for debugging More...
 
ON_CurveDuplicateCurve () const override
 
bool Evaluate (double, int, int, double *, int=0, int *=0) const override
 Domain changes from [a,b] to [-b,-a]. More...
 
bool GetBBox (double *boxmin, double *boxmax, bool bGrowBox=false) const override
 virtual ON_Geometry GetBBox override More...
 
bool GetCurveParameterFromNurbFormParameter (double, double *) const override
 virtual ON_Curve::GetCurveParameterFromNurbFormParameter override More...
 
bool GetNextDiscontinuity (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
 
int GetNurbForm (ON_NurbsCurve &, double=0.0, const ON_Interval *=nullptr) const override
 
bool GetNurbFormParameterFromCurveParameter (double, double *) const override
 virtual ON_Curve::GetNurbFormParameterFromCurveParameter override More...
 
bool GetParameterTolerance (double, double *, double *) const override
 (optional - override if curve is piecewise smooth) More...
 
bool GetSpanVector (double *) const override
 
int HasNurbForm () const override
 
bool IsArc (const ON_Plane *=nullptr, ON_Arc *=nullptr, double=ON_ZERO_TOLERANCE) const override
 
bool IsClosed (void) const override
 
bool IsContinuous (ON::continuity c, 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
 
bool IsInPlane (const ON_Plane &, double=ON_ZERO_TOLERANCE) const override
 
bool IsLinear (double=ON_ZERO_TOLERANCE) const override
 
bool IsPeriodic (void) const override
 periodic.) More...
 
bool IsPlanar (ON_Plane *=nullptr, double=ON_ZERO_TOLERANCE) const override
 
int IsPolyline (ON_SimpleArray< ON_3dPoint > *pline_points=nullptr, ON_SimpleArray< double > *pline_t=nullptr) const override
 virtual override of ON_Curve::IsPolyline More...
 
bool IsValid (class ON_TextLog *text_log=nullptr) const override
 ON_Object overrides. More...
 
ON_CurveProxyoperator= (const ON_CurveProxy &)
 
const ON_CurveProxyCurve () const
 
ON_Interval ProxyCurveDomain () const
 
bool ProxyCurveIsReversed () const
 
bool Read (ON_BinaryArchive &) override
 
double RealCurveParameter (double t) const
 
bool Reverse () override
 
bool SetDomain (double t0, double t1) override
 
bool SetDomain (ON_Interval domain)
 
void SetProxyCurve (const ON_Curve *real_curve)
 
void SetProxyCurve (const ON_Curve *real_curve, ON_Interval real_curve_subdomain)
 
bool SetProxyCurveDomain (ON_Interval proxy_curve_subdomain)
 
unsigned int SizeOf () const override
 virtual ON_Object::SizeOf override More...
 
int SpanCount () const override
 number of smooth spans in curve More...
 
bool Split (double t, ON_Curve *&left_side, ON_Curve *&right_side) const override
 override of virtual ON_Curve::Split More...
 
double ThisCurveParameter (double real_curve_parameter) const
 
bool Transform (const ON_Xform &) override
 
bool Trim (const ON_Interval &domain) override
 override of virtual ON_Curve::Trim More...
 
bool Write (ON_BinaryArchive &) const override
 
- Public Member Functions inherited from ON_Curve
 ON_Curve () ON_NOEXCEPT
 
 ON_Curve (const ON_Curve &)
 
virtual ~ON_Curve ()
 
virtual bool ChangeClosedCurveSeam (double t)
 
virtual bool ChangeDimension (int desired_dimension)
 
ON_3dVector CurvatureAt (double t) const
 
ON_3dVector DerivativeAt (double t) const
 
void DestroyCurveTree ()
 
bool Ev1Der (double t, ON_3dPoint &point, ON_3dVector &first_derivative, int side=0, int *hint=0) const
 
bool Ev2Der (double t, ON_3dPoint &point, ON_3dVector &first_derivative, ON_3dVector &second_derivative, int side=0, int *hint=0) const
 
bool EvaluatePoint (const class ON_ObjRef &objref, ON_3dPoint &P) const override
 virtual ON_Geometry override More...
 
bool EvCurvature (double t, ON_3dPoint &point, ON_3dVector &tangent, ON_3dVector &kappa, int side=0, int *hint=0) const
 
bool EvPoint (double t, ON_3dPoint &point, int side=0, int *hint=0) const
 
bool EvTangent (double t, ON_3dPoint &point, ON_3dVector &tangent, int side=0, int *hint=0) const
 
virtual bool Extend (const ON_Interval &domain)
 
bool FirstSpanIsLinear (double min_length, double tolerance) const
 
bool FirstSpanIsLinear (double min_length, double tolerance, ON_Line *span_line) const
 
bool FrameAt (double t, ON_Plane &plane) const
 
bool GetDomain (double *t0, double *t1) const
 curve interface More...
 
virtual bool GetSpanVectorIndex (double t, int side, int *span_vector_index, ON_Interval *span_domain) const
 
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 IsArcAt (double t, const ON_Plane *plane=0, ON_Arc *arc=0, double tolerance=ON_ZERO_TOLERANCE, double *t0=0, double *t1=0) const
 
bool IsClosable (double tolerance, double min_abs_size=0.0, double min_rel_size=10.0) const
 
virtual bool IsEllipse (const ON_Plane *plane=nullptr, ON_Ellipse *ellipse=nullptr, double tolerance=ON_ZERO_TOLERANCE) const
 
bool LastSpanIsLinear (double min_length, double tolerance) const
 
bool LastSpanIsLinear (double min_length, double tolerance, ON_Line *span_line) const
 
ON_NurbsCurveNurbsCurve (ON_NurbsCurve *pNurbsCurve=nullptr, double tolerance=0.0, const ON_Interval *subdomain=nullptr) const
 
ON::object_type ObjectType () const override
 
ON_Curveoperator= (const ON_Curve &)
 
ON_3dPoint PointAt (double t) const
 
ON_3dPoint PointAtEnd () const
 
ON_3dPoint PointAtStart () const
 
bool SetDomain (ON_Interval domain)
 
virtual bool SetEndPoint (ON_3dPoint end_point)
 
virtual bool SetStartPoint (ON_3dPoint start_point)
 
ON_3dVector TangentAt (double t) const
 
- Public Member Functions inherited from ON_Geometry
 ON_Geometry ()=default
 
 ON_Geometry (const ON_Geometry &)=default
 
 ~ON_Geometry ()=default
 
ON_BoundingBox BoundingBox () const
 
virtual class ON_BrepBrepForm (class ON_Brep *brep=nullptr) const
 
virtual void ClearBoundingBox ()
 
bool GetBoundingBox (ON_BoundingBox &bbox, bool bGrowBox=false) const
 
bool GetBoundingBox (ON_3dPoint &bbox_min, ON_3dPoint &bbox_max, bool bGrowBox=false) const
 
virtual bool HasBrepForm () const
 
virtual bool IsDeformable () const
 
bool IsValid (class ON_TextLog *text_log=nullptr) const override
 
virtual bool MakeDeformable ()
 
ON_Geometryoperator= (const ON_Geometry &)=default
 
bool Rotate (double sin_angle, double cos_angle, const ON_3dVector &rotation_axis, const ON_3dPoint &rotation_center)
 
bool Rotate (double rotation_angle, const ON_3dVector &rotation_axis, const ON_3dPoint &rotation_center)
 
bool Scale (double scale_factor)
 
virtual bool SwapCoordinates (int i, int j)
 
bool Translate (const ON_3dVector &translation_vector)
 
- Public Member Functions inherited from ON_Object
 ON_Object () ON_NOEXCEPT
 
 ON_Object (const ON_Object &)
 
virtual ~ON_Object ()
 
virtual ON_AggregateComponentStatus AggregateComponentStatus () const
 
bool AttachUserData (class ON_UserData *pUserData)
 
unsigned int ClearAllComponentStates () const
 
virtual unsigned int ClearComponentStates (ON_ComponentStatus states_to_clear) const
 
virtual unsigned int ClearComponentStates (ON_COMPONENT_INDEX component_index, ON_ComponentStatus states_to_clear) const
 
unsigned int CopyUserData (const ON_Object &source_object, ON_UUID source_userdata_item_id, ON_Object::UserDataConflictResolution userdata_conflict_resolution)
 
void CopyUserData (const ON_Object &source_object)
 
virtual bool DeleteComponents (const ON_COMPONENT_INDEX *ci_list, size_t ci_count)
 
bool DetachUserData (class ON_UserData *pUserData)
 
void EmergencyDestroy ()
 
class ON_UserDataFirstUserData () const
 
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
 
bool GetUserString (const wchar_t *key, ON_wString &string_value) const
 
int GetUserStringKeys (ON_ClassArray< ON_wString > &user_string_keys) const
 
int GetUserStrings (ON_ClassArray< ON_UserString > &user_strings) const
 
bool IsKindOf (const ON_ClassId *pClassId) const
 
virtual void MarkAggregateComponentStatusAsNotCurrent () const
 
virtual void MemoryRelocate ()
 
virtual ON_UUID ModelObjectId () const
 
unsigned int MoveUserData (ON_Object &source_object, ON_UUID source_userdata_item_id, ON_Object::UserDataConflictResolution userdata_conflict_resolution, bool bDeleteAllSourceItems)
 
void MoveUserData (ON_Object &source_object)
 
ON_Objectoperator= (const ON_Object &)
 
void PurgeUserData ()
 
virtual unsigned int SetComponentStates (ON_COMPONENT_INDEX component_index, ON_ComponentStatus states_to_set) const
 
virtual unsigned int SetComponentStatus (ON_COMPONENT_INDEX component_index, ON_ComponentStatus status_to_copy) const
 
bool SetUserString (const wchar_t *key, const wchar_t *string_value)
 
int SetUserStrings (int count, const ON_UserString *user_strings, bool bReplace)
 
void TransformUserData (const class ON_Xform &xform)
 
virtual bool UpdateReferencedComponents (const class ON_ComponentManifest &source_manifest, const class ON_ComponentManifest &destination_manifest, const class ON_ManifestMap &manifest_map)
 
int UserStringCount () const
 

Public Attributes

int m_c3i = -1
 
int m_edge_index = -1
 index of edge in ON_Brep.m_E[] array More...
 
ON_U m_edge_user
 
ON_ComponentStatus m_status = ON_ComponentStatus::NoneSet
 
ON_SimpleArray< int > m_ti
 indices of Trims that use this edge More...
 
double m_tolerance = ON_UNSET_VALUE
 
int m_vi [2]
 

Friends

class ON_Brep
 

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
}
 
- Static Public Attributes inherited from ON_Geometry
static const ON_Geometry Unset
 
- Protected Member Functions inherited from ON_CurveProxy
void SetProxyCurveIsReversed (bool bReversed)
 
- Protected Member Functions inherited from ON_Curve
bool ParameterSearch (double t, int &index, bool bEnableSnap, const ON_SimpleArray< double > &m_t, double RelTol=ON_SQRT_EPSILON) const
 

Detailed Description

Description: Brep edge information is stored in ON_BrepEdge classes. ON_Brep.m_E[] is an array of all the edges in the brep.

An ON_BrepEdge is derived from ON_CurveProxy so the the edge can supply easy to use evaluation tools via the ON_Curve virtual member functions.

Note well that the domains and orientations of the curve m_C3[edge.m_c3i] and the edge as a curve may not agree.April 24, 2017 Dale Lear ON_Curve::Trim(const ON_Interval&) is a virtual function and ON_BrepEdge derives from ON_CurveProxy which derives from ON_Curve. The ON_Brep::Trim(int) function was added and mistakenly named "Trim". This all happened about twenty years ago.

Both the virtual ON_Curve::Trim(const ON_Interval&) and ON_BrepEdge::Trim(int) functions are widely used. At some point the functionON_Brep::Trim() will be deprecated and the 4263 warning ON_Brep::Trim(int) generates will be disabled for the definition of class ON_BrepEdge. In version 7, ON_Brep::Trim(int) will be deleted and the warning will no longer be disabled.

Constructor & Destructor Documentation

◆ ON_BrepEdge() [1/2]

ON_BrepEdge::ON_BrepEdge ( )

Construction

In general, you should not directly create ON_BrepEdge classes. Use ON_Brep::NewVertex instead.

◆ ON_BrepEdge() [2/2]

ON_BrepEdge::ON_BrepEdge ( int  )

edge index

Member Function Documentation

◆ Brep()

ON_Brep* ON_BrepEdge::Brep ( ) const

Returns: Brep this edge belongs to.

◆ ChangeEdgeCurve()

bool ON_BrepEdge::ChangeEdgeCurve ( int  c3i)

Description: Expert user tool that replaces the 3d curve geometry of an edge Parameters; c3i - [in] brep 3d curve index of new curve Returns: True if successful. Example:

      ON_Curve* pCurve = ...;
      int c3i = brep.AddEdgeCurve(pCurve);
      edge.ChangeEdgeCurve(c3i);

Remarks: Sets m_c3i, calls SetProxyCurve, cleans runtime caches.

◆ ComponentIndex()

ON_COMPONENT_INDEX ON_BrepEdge::ComponentIndex ( ) const
overridevirtual

virtual ON_Geometry::ComponentIndex() override

Reimplemented from ON_Geometry.

◆ DataCRC()

ON__UINT32 ON_BrepEdge::DataCRC ( ON__UINT32  current_remainder) const
overridevirtual

virtual ON_Object::DataCRC override

Reimplemented from ON_Object.

◆ Dump()

void ON_BrepEdge::Dump ( ON_TextLog ) const
overridevirtual

virtual ON_Object::Dump() override

for debugging

Reimplemented from ON_Object.

◆ EdgeCurveIndexOf()

int ON_BrepEdge::EdgeCurveIndexOf ( ) const

Implementation.

Not necessary. Base class does the right thing. ON_CurveProxy does not have an override. / virtual ON_Curve::SetStartPoint override bool SetStartPoint( ON_3dPoint start_point );

/ virtual ON_Curve::SetEndPoint override bool SetEndPoint( ON_3dPoint end_point ); Returns: brep.m_C3[] index of the 3d curve geometry used by this edge or -1.

◆ EdgeCurveOf()

const ON_Curve* ON_BrepEdge::EdgeCurveOf ( ) const

Returns: 3d curve geometry used by this edge or nullptr.

◆ IsClosed()

bool ON_BrepEdge::IsClosed ( ) const
overridevirtual

virtual ON_Curve::IsClosed override

Reimplemented from ON_Curve.

◆ IsValid()

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

Description: Tests an object to see if its data members are correctly initialized. Parameters: 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. Returns: table true object is valid false object is invalid, uninitialized, etc.

Reimplemented from ON_Object.

◆ ObjectType()

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

virtual ON_Object function The ON_BrepEdge override returns ON::curve_object.

Reimplemented from ON_Object.

◆ operator=()

ON_BrepEdge& ON_BrepEdge::operator= ( const ON_BrepEdge )

◆ Read()

bool ON_BrepEdge::Read ( ON_BinaryArchive )
overridevirtual

virtual ON_Object::Read() override

Reimplemented from ON_Object.

◆ Reverse()

bool ON_BrepEdge::Reverse ( )
overridevirtual

virtual ON_Curve::Reverse override

Implements ON_Curve.

◆ SizeOf()

unsigned int ON_BrepEdge::SizeOf ( ) const
overridevirtual

virtual ON_Object::SizeOf override

Reimplemented from ON_Object.

◆ Trim()

ON_BrepTrim* ON_BrepEdge::Trim ( int  eti) const

Parameters: eti - [in] index into the edge's m_ti[] array. Returns: The trim brep.m_T[edge.m_ti[eti]]; Remarks: This version of "Trim" hides the virtual function ON_CurveProxy::Trim(const ON_Interval&), which is a good thing. Special care must be takend when changing the geometry of a brep edge to insure vertex, trim, and edge information remains valid.

◆ TrimCount()

int ON_BrepEdge::TrimCount ( ) const

Returns: Number of trims attached to this edge.

◆ UnsetPlineEdgeParameters()

void ON_BrepEdge::UnsetPlineEdgeParameters ( )

Description: When an edge is modified, the m_pline[].e values need to be set to ON_UNSET_VALUE by calling UnsetPlineEdgeParameters().

◆ Vertex()

ON_BrepVertex* ON_BrepEdge::Vertex ( int  evi) const

Parameters: evi - [in] 0 or 1 Returns: Brep vertex at specified end of the edge.

◆ Write()

bool ON_BrepEdge::Write ( ON_BinaryArchive ) const
overridevirtual

virtual ON_Object::Write() override

Reimplemented from ON_Object.

Friends And Related Function Documentation

◆ ON_Brep

friend class ON_Brep
friend

Member Data Documentation

◆ m_c3i

int ON_BrepEdge::m_c3i = -1

index of 3d curve in m_C3[] array (edge.m_curve also points to m_C3[m_c3i])

◆ m_edge_index

int ON_BrepEdge::m_edge_index = -1

index of edge in ON_Brep.m_E[] array

◆ m_edge_user

ON_U ON_BrepEdge::m_edge_user
mutable

Union available for application use. The constructor zeros m_edge_user. The value is of m_edge_user is not saved in 3DM archives and may be changed by some computations.

◆ m_status

ON_ComponentStatus ON_BrepEdge::m_status = ON_ComponentStatus::NoneSet
mutable

◆ m_ti

ON_SimpleArray<int> ON_BrepEdge::m_ti

indices of Trims that use this edge

◆ m_tolerance

double ON_BrepEdge::m_tolerance = ON_UNSET_VALUE

accuracy of edge curve (>=0.0 or ON_UNSET_VALUE)

A value of ON_UNSET_VALUE indicates that the tolerance should be computed.

The maximum distance from the edge's 3d curve to any surface of a face that has this edge as a portion of its boundary must be <= this tolerance.

◆ m_vi

int ON_BrepEdge::m_vi[2]

indices of starting/ending vertex

For closed edges, m_vi[0] = m_vi[1] and m_edge_index appears twice in the m_V[m_vi[0]].m_ei[] array. The first occurance of m_edge_index in m_V[m_vi[0]].m_ei[] is for the closed edge starting the vertex. The second occurance of m_edge_index in m_V[m_vi[0]].m_ei[] is for the closed edge edge ending at the vertex. C.f. ON_Brep::Next/PrevEdge().