Rhino C++ API  7.22
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | List of all members
ON_SubDEdgePtr Class Reference

#include <opennurbs_subd.h>

Public Member Functions

bool ClearMark () const
 
ON__UINT8 ClearMarkBits () const
 
void ClearSavedSubdivisionPoints () const
 
void ClearSavedSubdivisionPoints (bool bClearNeighborhood) const
 
class ON_SubDEdgeEdge () const
 
ON__UINT_PTR EdgeDirection () const
 
unsigned int EdgeFaceCount () const
 
unsigned int EdgeId () const
 
bool EdgeIsCrease () const
 
bool EdgeIsDartCrease () const
 
bool EdgeIsHardCrease () const
 
bool EdgeIsSmooth () const
 
ON_NurbsCurveEdgeSurfaceCurve (bool bClampEndKnots, ON_NurbsCurve *destination) const
 
unsigned int GetEdgeSurfaceCurveControlPoints (ON_3dPoint *cvs, size_t cv_capacity) const
 
bool HasInteriorEdgeTopology (bool bRequireOppositeFaceDirections) const
 
bool IsActive () const
 
bool IsNotNull () const
 
bool IsNotNullAndVerticesAreNotNull () const
 
bool IsNull () const
 
bool Mark () const
 
ON__UINT8 MarkBits () const
 
const ON_3dVector RelativeControlNetDirection () const
 
const ON_Line RelativeControlNetLine () const
 
const ON_3dPoint RelativeControlNetPoint (int relative_vertex_index) const
 
const ON_3dVector RelativeDirection () const
 
const class ON_SubDFaceRelativeFace (int relative_face_index) const
 
bool RelativeFaceMark (int relative_face_index, bool missing_face_return_value) const
 
ON__UINT8 RelativeFaceMarkBits (int relative_face_index, ON__UINT8 missing_face_return_value) const
 
double RelativeSectorCoefficient (int relative_vertex_index) const
 
const class ON_SubDVertexRelativeVertex (int relative_vertex_index) const
 
unsigned RelativeVertexId (int relative_vertex_index) const
 
bool RelativeVertexMark (int relative_vertex_index, bool missing_vertex_return_value) const
 
ON__UINT8 RelativeVertexMarkBits (int relative_vertex_index, ON__UINT8 missing_vertex_return_value) const
 
const ON_SubDEdgePtr Reversed () const
 
bool SetMark () const
 
bool SetMark (bool bMark) const
 
ON__UINT8 SetMarkBits (ON__UINT8 mark_bits) const
 
const ON_ComponentStatus Status () const
 

Static Public Member Functions

static const ON_SubDEdgePtr Create (const class ON_SubDComponentPtr &edge_component)
 
static const ON_SubDEdgePtr Create (const class ON_SubDEdge *edge)
 
static const ON_SubDEdgePtr Create (const class ON_SubDEdge *edge, ON__UINT_PTR direction)
 
static const ON_SubDEdgePtr CreateFromEndVertex (const class ON_SubDEdge *edge, const ON_SubDVertex *end_vertex)
 
static const ON_SubDEdgePtr CreateFromStartVertex (const class ON_SubDEdge *edge, const ON_SubDVertex *start_vertex)
 

Public Attributes

ON__UINT_PTR m_ptr
 

Static Public Attributes

static const ON_SubDEdgePtr Null
 

Member Function Documentation

◆ ClearMark()

bool ON_SubDEdgePtr::ClearMark ( ) const

Description: Clears (sets to false) the value of the component mark. Remarks: SubD components have a mutable runtime mark that can be used in any context where a single thread cares about the marks. It is widely used in many calculations to keep track of sets of components that are in a certain context specfic state. Returns: Input value of Mark().

◆ ClearMarkBits()

ON__UINT8 ON_SubDEdgePtr::ClearMarkBits ( ) const

◆ ClearSavedSubdivisionPoints() [1/2]

void ON_SubDEdgePtr::ClearSavedSubdivisionPoints ( ) const

◆ ClearSavedSubdivisionPoints() [2/2]

void ON_SubDEdgePtr::ClearSavedSubdivisionPoints ( bool  bClearNeighborhood) const

Description: Clears saved subdivision and limit surface information for this component. Parameters: bClearNeighborhood - [in] If true, all components attached to this component are also cleared.

◆ Create() [1/3]

static const ON_SubDEdgePtr ON_SubDEdgePtr::Create ( const class ON_SubDComponentPtr edge_component)
static

◆ Create() [2/3]

static const ON_SubDEdgePtr ON_SubDEdgePtr::Create ( const class ON_SubDEdge edge)
static

Parameters: edge - [in] Returns: An ON_SubDEdgePtr pointing at edge with direction = 0 (not reversed).

◆ Create() [3/3]

static const ON_SubDEdgePtr ON_SubDEdgePtr::Create ( const class ON_SubDEdge edge,
ON__UINT_PTR  direction 
)
static

Parameters: edge - [in] direction - [in] 0: not reversed 1: reversed Returns: An ON_SubDEdgePtr pointing at edge with the specified direction.

◆ CreateFromEndVertex()

static const ON_SubDEdgePtr ON_SubDEdgePtr::CreateFromEndVertex ( const class ON_SubDEdge edge,
const ON_SubDVertex end_vertex 
)
static

Parameters: edge - [in] end_vertex - [in] One of the edge's vertices. Returns: An ON_SubDEdgePtr pointing at edge with RelativeVertex(1) = end_vertex.

◆ CreateFromStartVertex()

static const ON_SubDEdgePtr ON_SubDEdgePtr::CreateFromStartVertex ( const class ON_SubDEdge edge,
const ON_SubDVertex start_vertex 
)
static

Parameters: edge - [in] start_vertex - [in] One of the edge's vertices. Returns: An ON_SubDEdgePtr pointing at edge with RelativeVertex(0) = start_vertex.

◆ Edge()

class ON_SubDEdge* ON_SubDEdgePtr::Edge ( ) const

Returns: The ON_SubDEdge this points at.

◆ EdgeDirection()

ON__UINT_PTR ON_SubDEdgePtr::EdgeDirection ( ) const

Returns: 0: this ON_SubDEdgePtr is oriented from Edge()->Vertex(0) to Edge()->Vertex(1). 1: this ON_SubDEdgePtr is oriented from Edge()->Vertex(1) to Edge()->Vertex(0).

◆ EdgeFaceCount()

unsigned int ON_SubDEdgePtr::EdgeFaceCount ( ) const

Returns: If Edge() is not nullptr, Edge()->FaceCount() is returned. Otherwise, 0 is returned.

◆ EdgeId()

unsigned int ON_SubDEdgePtr::EdgeId ( ) const

Returns: If Edge() is not nullptr, Edge()->m_id is returned. Otherwise, 0 is returned.

◆ EdgeIsCrease()

bool ON_SubDEdgePtr::EdgeIsCrease ( ) const

Returns: If Edge() is not nullptr, Edge()->IsCrease() is returned. Otherwise, false is returned.

◆ EdgeIsDartCrease()

bool ON_SubDEdgePtr::EdgeIsDartCrease ( ) const

Returns: If Edge() is not nullptr, Edge()->IsDartCrease() is returned. Otherwise, false is returned.

◆ EdgeIsHardCrease()

bool ON_SubDEdgePtr::EdgeIsHardCrease ( ) const

Returns: If Edge() is not nullptr, Edge()->IsHardCrease() is returned. Otherwise, false is returned.

◆ EdgeIsSmooth()

bool ON_SubDEdgePtr::EdgeIsSmooth ( ) const

Returns: If Edge() is not nullptr, Edge()->IsSmooth() is returned. Otherwise, false is returned.

◆ EdgeSurfaceCurve()

ON_NurbsCurve* ON_SubDEdgePtr::EdgeSurfaceCurve ( bool  bClampEndKnots,
ON_NurbsCurve destination 
) const

Description: Get a cubic, uniform, nonrational, NURBS curve that is on the edge's limit curve with this->EdgeDirection() taken into account. Parameters: bClampEndKnots - [] If true, the end knots are clamped. Otherwise the end knots are (-2,-1,0,....,k1,k1+1,k1+2). destination - [in] If not nullptr, then the curve is created in this instance. Returns: A pointer to the curve or nullptr if the edge is not valid.

◆ GetEdgeSurfaceCurveControlPoints()

unsigned int ON_SubDEdgePtr::GetEdgeSurfaceCurveControlPoints ( ON_3dPoint cvs,
size_t  cv_capacity 
) const

Description: Get limit curve control points with this->EdgeDirection() taken into account. Returns: 0 - failed. 4, 5, 7, 11: Number of cvs for a cubic uniform nonrational NURBS curve with (cv_count+2) knots = (-2,-1,0,1,2,3,4,5,6,7,8,9,10). Remarks: For exceptional cases,

◆ HasInteriorEdgeTopology()

bool ON_SubDEdgePtr::HasInteriorEdgeTopology ( bool  bRequireOppositeFaceDirections) const

Returns: If Edge() is not nullptr, Edge()->HasInteriorEdgeTopology(bRequireOppositeFaceDirections) is returned. Otherwise, false is returned.

◆ IsActive()

bool ON_SubDEdgePtr::IsActive ( ) const

Returns: True if this edge is active in its parent subd or other relevent context. Remarks: When a component is in use, IsActive() = true. If was used and then deleted, IsActive() is false.

◆ IsNotNull()

bool ON_SubDEdgePtr::IsNotNull ( ) const

Returns: True if this->Edge() is not nullptr.

◆ IsNotNullAndVerticesAreNotNull()

bool ON_SubDEdgePtr::IsNotNullAndVerticesAreNotNull ( ) const

Returns: True if this->Edge() is not nullptr and both vertex pointers are not null as well.

◆ IsNull()

bool ON_SubDEdgePtr::IsNull ( ) const

Returns: True if this->Edge() is nullptr.

◆ Mark()

bool ON_SubDEdgePtr::Mark ( ) const

Returns: The current value of the component mark ( m_status->RuntimeMark() ). Remarks: SubD components have a mutable runtime mark that can be used in any context where a single thread cares about the marks. It is widely used in many calculations to keep track of sets of components that are in a certain context specfic state.

◆ MarkBits()

ON__UINT8 ON_SubDEdgePtr::MarkBits ( ) const

◆ RelativeControlNetDirection()

const ON_3dVector ON_SubDEdgePtr::RelativeControlNetDirection ( ) const

◆ RelativeControlNetLine()

const ON_Line ON_SubDEdgePtr::RelativeControlNetLine ( ) const

◆ RelativeControlNetPoint()

const ON_3dPoint ON_SubDEdgePtr::RelativeControlNetPoint ( int  relative_vertex_index) const

Parameters: relative_vertex_index - [in] 0: return Edge()->Vertex(EdgeDirection()) 1: return Edge()->Vertex(1-EdgeDirection()) Returns: The requested vertex control net point EdgeDirection() taken into account. ON_3dPoint::NanPoint if relative_vertex_index, Edge() is nullptr, or Edge()->Vertex() is nullptr.

◆ RelativeDirection()

const ON_3dVector ON_SubDEdgePtr::RelativeDirection ( ) const

Returns: The vector from RelativeVertex(0)->ControlNetPoint() to RelativeVertex(1)->ControlNetPoint(), or ON_3dVector::NanVector if the relative vertex pointers are nullptr.

◆ RelativeFace()

const class ON_SubDFace* ON_SubDEdgePtr::RelativeFace ( int  relative_face_index) const

Description: Get the face on the left or right side of an oriented manifold or boundary edge. A face is on the "left side" if this ON_SubDEdgePtr is oriented so it points in the same direction as the face's oriented boundary. A face is on the "right side" if this ON_SubDEdgePtr is oriented so it points in the opposite direction as the face's oriented boundary. If an edge is nonmanifold (3 or more faces), then nullptr is always returned. If an edge has two faces that do not attach to this edge with opposite orientations (nonoriented manifold edge), then nullptr is returned.
Parameters: relative_face_index - [in] 0: return face on the left side of the edge with respect to EdgeOrientation(). 1: return face on the right side of the edge with respect to EdgeOrientation(). Returns: The requested face.

◆ RelativeFaceMark()

bool ON_SubDEdgePtr::RelativeFaceMark ( int  relative_face_index,
bool  missing_face_return_value 
) const

Returns: this->RelativeFace(relative_face_index)->Mark();

◆ RelativeFaceMarkBits()

ON__UINT8 ON_SubDEdgePtr::RelativeFaceMarkBits ( int  relative_face_index,
ON__UINT8  missing_face_return_value 
) const

Returns: this->RelativeFace(relative_face_index)->MarkBits();

◆ RelativeSectorCoefficient()

double ON_SubDEdgePtr::RelativeSectorCoefficient ( int  relative_vertex_index) const

Parameters: relative_vertex_index - [in] Returns: If Edge() not nullptr, then If (relative_vertex_index = 0), returns Edge()->m_sector_coefficient(EdgeDirection()) If (relative_vertex_index = 0), returns Edge()->m_sector_coefficient(1-EdgeDirection()) Otherwise ON_SubDSectorType::ErrorSectorCoefficient is returned. Remarks: The name "sector coefficient" is used because is is a property of the vertex's sector (every edge in vertex sector has the same value at the tagged vertex). The sector coefficient does not change when a subdivision is applied.

◆ RelativeVertex()

const class ON_SubDVertex* ON_SubDEdgePtr::RelativeVertex ( int  relative_vertex_index) const

Parameters: relative_vertex_index - [in] 0: return Edge()->Vertex(EdgeDirection()) 1: return Edge()->Vertex(1-EdgeDirection()) Returns: The requested vertex with EdgeDirection() taken into account. nullptr if relative_vertex_index, Edge() is nullptr, or Edge()->Vertex() is nullptr.

◆ RelativeVertexId()

unsigned ON_SubDEdgePtr::RelativeVertexId ( int  relative_vertex_index) const

Parameters: relative_vertex_index - [in] 0: return Edge()->Vertex(EdgeDirection()) 1: return Edge()->Vertex(1-EdgeDirection()) Returns: The requested id of the vertex with EdgeDirection() taken into account. 0 if relative_vertex_index, Edge() is nullptr, or Edge()->Vertex() is nullptr.

◆ RelativeVertexMark()

bool ON_SubDEdgePtr::RelativeVertexMark ( int  relative_vertex_index,
bool  missing_vertex_return_value 
) const

◆ RelativeVertexMarkBits()

ON__UINT8 ON_SubDEdgePtr::RelativeVertexMarkBits ( int  relative_vertex_index,
ON__UINT8  missing_vertex_return_value 
) const

◆ Reversed()

const ON_SubDEdgePtr ON_SubDEdgePtr::Reversed ( ) const

Returns: A ON_SubDEdgePtr pointing at the same edge with the direction reversed from this.

◆ SetMark() [1/2]

bool ON_SubDEdgePtr::SetMark ( ) const

Description: Sets (sets to true) the value of the component mark. Remarks: SubD components have a mutable runtime mark that can be used in any context where a single thread cares about the marks. It is widely used in many calculations to keep track of sets of components that are in a certain context specfic state. Returns: Input value of Mark().

◆ SetMark() [2/2]

bool ON_SubDEdgePtr::SetMark ( bool  bMark) const

Description: Sets the value of the component mark to bMark. Parameter: bMark - [in] Remarks: SubD components have a mutable runtime mark that can be used in any context where a single thread cares about the marks. It is widely used in many calculations to keep track of sets of components that are in a certain context specfic state. Returns: Input value of Mark().

◆ SetMarkBits()

ON__UINT8 ON_SubDEdgePtr::SetMarkBits ( ON__UINT8  mark_bits) const

◆ Status()

const ON_ComponentStatus ON_SubDEdgePtr::Status ( ) const

Returns: this->Edge()->m_status.

Member Data Documentation

◆ m_ptr

ON__UINT_PTR ON_SubDEdgePtr::m_ptr

For performance reasons, m_ptr is not initialized and no constructors are declared or implemented. If you require initialization, then use x = ON_SubDEdgePtr::Null or x = ON_SubDEdgePtr::Create(...).

◆ Null

const ON_SubDEdgePtr ON_SubDEdgePtr::Null
static