| Rhino C++ API
    8.24
    | 
#include <opennurbs_plus_sil.h>
| Public Types | |
| enum | END_TYPE : unsigned int { kEndUnknown = 0, kEndBoundary = 1, kEndEdge = 2, kEndLoop = 3, kEndCusp = 4, kEndProjected = 5, kEndSection = 6, kEndSngularity = 7 } | 
| enum | SIDE_FILL : unsigned int { kSideUnset = 0, kSideSurface = 1, kSideVoid = 2, kSideOtherSurface = 3 } | 
| enum | TYPE : unsigned int { kNoSilEvent = 0, kSilProjecting = 1, kSilTanProject = 2, kSilTangent = 4, kSilCrease = 8, kSilBoundary = 16, kNonSilCrease = 256, kNonSilTangent = 512, kNonSilSeam = 1024, kSectionCut = 4096, kMiscFeature = 8192, kDraftCurve = 32768 } | 
| Public Member Functions | |
| enum TYPE unsigned int enum END_TYPE unsigned int | ON_SIL_EVENT () ON_NOEXCEPT | 
| ON_SIL_EVENT (const ON_SIL_EVENT &rhs) | |
| ON_SIL_EVENT (TYPE ttype, ON_COMPONENT_INDEX cci, END_TYPE etype0, ON_COMPONENT_INDEX eci0, double p0, END_TYPE etype1, ON_COMPONENT_INDEX eci1, double p1, ON_Curve *c3d=nullptr, ON_Curve *c2d=nullptr) ON_NOEXCEPT | |
| ~ON_SIL_EVENT () | |
| void | Dump (ON_TextLog &text_log) const | 
| bool | IsSilhouetteType () const | 
| bool | IsTangentSilhouetteType () const | 
| ON_SIL_EVENT & | operator= (const ON_SIL_EVENT &rhs) | 
| Static Public Member Functions | |
| static bool | IsSilhouetteType (TYPE) | 
| static bool | IsTangentSilhouetteType (TYPE) | 
| returns true for kSilProjecting through kSilTangent  More... | |
| Public Attributes | |
| ON_COMPONENT_INDEX | m_ci | 
| ON_Curve * | m_curve2d | 
| parameter space curve if available or nullptr  More... | |
| ON_Curve * | m_curve3d | 
| These are deleted by ~ON_SIL_EVENT()  More... | |
| ON_COMPONENT_INDEX | m_end_ci [2] | 
| double | m_end_parameter [2] | 
| END_TYPE | m_end_type [2] | 
| SIDE_FILL | m_side_fill [2] | 
| TYPE | m_type | 
The ON_SIL_EVENT class is used to report silhouettes from functions such as ON_Brep::GetSilhouette(..)
| enum ON_SIL_EVENT::END_TYPE : unsigned int | 
END_TYPE describes the endpoint of an ON_SIL_EVENT
| enum ON_SIL_EVENT::SIDE_FILL : unsigned int | 
When a silhouette is projected on the image plane ( determined by the camera location or direction), and projects to a curve (not a point), the image area to the left or right of a projected silhouette curve is filled with either the surface or a void.
| Enumerator | |
|---|---|
| kSideUnset | |
| kSideSurface | |
| kSideVoid | |
| kSideOtherSurface | Not used for silhouette results but for .... | 
| enum ON_SIL_EVENT::TYPE : unsigned int | 
Description: The types are ordered. The type of a ON_SIL_EVENT is reported as the lowest valued type that applies. For example, a boundary that is a tangent silhouette will be reported as kSilTangent type not a kSilBoundary.
| ON_SIL_EVENT::ON_SIL_EVENT | ( | TYPE | ttype, | 
| ON_COMPONENT_INDEX | cci, | ||
| END_TYPE | etype0, | ||
| ON_COMPONENT_INDEX | eci0, | ||
| double | p0, | ||
| END_TYPE | etype1, | ||
| ON_COMPONENT_INDEX | eci1, | ||
| double | p1, | ||
| ON_Curve * | c3d = nullptr, | ||
| ON_Curve * | c2d = nullptr | ||
| ) | 
This constructor leaves m_side_fill[i]=unset but initializes all other fields. The lifetimes of c3d and/or c2d are managed by the ON_SIL_EVENT class. 
 
| ON_SIL_EVENT::ON_SIL_EVENT | ( | const ON_SIL_EVENT & | rhs | ) | 
An ON_SIL_EVENT can own a pair of ON_Curves pointed to by m_curve2d and m_curve3d. So the copy constructor and operator= makes copies of these curves. And destructor ~ON_SIL_EVENT() deletes these curves.
| ON_SIL_EVENT::~ON_SIL_EVENT | ( | ) | 
| void ON_SIL_EVENT::Dump | ( | ON_TextLog & | text_log | ) | const | 
| bool ON_SIL_EVENT::IsSilhouetteType | ( | ) | const | 
| 
 | static | 
IsSilhouetteType() returns true for types kSilProjecting through kSilBoundary.
| bool ON_SIL_EVENT::IsTangentSilhouetteType | ( | ) | const | 
| 
 | static | 
returns true for kSilProjecting through kSilTangent
IsTangentSilhouetteType() returns true for types kSilProjecting through kSilTangent.
| ON_SIL_EVENT& ON_SIL_EVENT::operator= | ( | const ON_SIL_EVENT & | rhs | ) | 
| ON_COMPONENT_INDEX ON_SIL_EVENT::m_ci | 
m_ci if valid, is the component index of geometry containing entire silhouette curve. A typical example is ON_SIL_EVENT that starts and ends on ON_BrepEdges and goes across the interior of face. In this case m_ci will be the component index of the face, m_end_ci[0] and m_end_ci[1] will be the component indices of the edges on which the ON_SIL_EVENT terminates, m_end_type[0] and m_end_type[1] will be either END_TYPE::kEndBoundary or END_TYPE::kEndEdge.
| ON_Curve* ON_SIL_EVENT::m_curve2d | 
parameter space curve if available or nullptr
| ON_Curve* ON_SIL_EVENT::m_curve3d | 
These are deleted by ~ON_SIL_EVENT()
| ON_COMPONENT_INDEX ON_SIL_EVENT::m_end_ci[2] | 
m_end_ci[0], if valid, is the component index of geometry containing the ON_SIL_EVENT start point. Similarly m_end_ci[0] applies to the ON_SIL_EVENT end point.
| double ON_SIL_EVENT::m_end_parameter[2] | 
m_end_parameter[0] is the ON_Brep::Edge parameter of the ON_SIL_EVENT start point when m_end_type[0] = END_TYPE::kEndBoundary, or m_end_type[0] = END_TYPE::kEndEdge. m_end_parameter[0] similarly applies to the end point. 
 
| END_TYPE ON_SIL_EVENT::m_end_type[2] | 
m_end_type[0] is the END_TYPE of the curve start and and m_end_type[1] is the END_TYPE of the curve end.
| SIDE_FILL ON_SIL_EVENT::m_side_fill[2] | 
m_side_fill[0] defines how the region in the image plane to the left (or right for m_side_fill[1]) of the projected silhouette curve is filled.
Example: generally the surface locally lies to either the left or the right of the projected silhouette curve in the image plane. The basic degenerate cases are that of a projecting surface or the case of a silhouette with the surface on both sides of the silhouette locally m_side_fill[0] m_side_fill[1] Left Side side_surface side_void Right side_void side_surface
projecting side_void side_void degenerate side_surface side_surface
| TYPE ON_SIL_EVENT::m_type | 
 1.8.17
 1.8.17