- resa pubblica la funzione CurveType.
This commit is contained in:
Daniele Bariletti
2023-10-10 12:45:26 +02:00
parent 39f78670d0
commit c2b02aeeae
2 changed files with 11 additions and 9 deletions
+9 -9
View File
@@ -1413,11 +1413,11 @@ bool ON_Curve::Ev2Der( // returns false if unable to evaluate
//
static
ON::eCurveType ON_CurveType( const ON_Curve* curve )
ON::eCurveType ON_Curve::ON_CurveType() const
{
const ON_ClassId* curve_id = &ON_CLASS_RTTI(ON_Curve);
const ON_ClassId* id = curve->ClassId();
const ON_ClassId* id = this->ClassId();
// "fake virtual" handling of fast/easy special cases
while (0 != id && curve_id != id )
@@ -1496,7 +1496,7 @@ bool ON_MatchCurveEnds( ON_Curve* curve0,
ON_3dPoint Q0 = ON_3dPoint::UnsetPoint;
ON_3dPoint Q1 = ON_3dPoint::UnsetPoint;
ON_Curve* c = i ? curve1 : curve0;
ON::eCurveType ct = ON_CurveType(c);
ON::eCurveType ct = c->ON_CurveType();
int e = i ? end1 : end0;
while ( ON::ctPolycurve == ct )
{
@@ -1507,7 +1507,7 @@ bool ON_MatchCurveEnds( ON_Curve* curve0,
c = polycurve->SegmentCurve(e?(polycurve->Count()-1):0);
if( 0 == c )
return false;
ct = ON_CurveType(c);
ct = c->ON_CurveType();
}
seg[i] = c;
switch(ct)
@@ -1714,7 +1714,7 @@ bool ON_ForceMatchCurveEnds(ON_Curve& Crv0, int end0, ON_Curve& Crv1, int end1)
for ( i = 0; i<2; i++ )
{
ON_Curve* c = i ? &Crv1 : &Crv0;
ct[i] = ON_CurveType(c);
ct[i] = c->ON_CurveType();
int e = i ? end1 : end0;
while ( ON::ctPolycurve == ct[i] )
{
@@ -1725,7 +1725,7 @@ bool ON_ForceMatchCurveEnds(ON_Curve& Crv0, int end0, ON_Curve& Crv1, int end1)
c = polycurve->SegmentCurve(e?(polycurve->Count()-1):0);
if( 0 == c )
return false;
ct[i] = ON_CurveType(c);
ct[i] = c->ON_CurveType();
}
if (c->IsClosed())
return false;
@@ -1778,7 +1778,7 @@ bool ON_ForceMatchCurveEnds(ON_Curve& Crv0, int end0, ON_Curve& Crv1, int end1)
else {
//23 Jan 2018 - Chuck - If yanking a polycurve segment at the join causes
//that seg to be tiny, remove it and try again. See RH-43661
if (ON_CurveType(&Crv0) == ON::ctPolycurve){
if (Crv0.ON_CurveType() == ON::ctPolycurve){
ON_PolyCurve* polycurve = ON_PolyCurve::Cast(&Crv0);
if (polycurve->Count() > 1 && FastIsShort(*seg[0], 10.0*ON_ZERO_TOLERANCE))
bTryAgain = (end0) ? polycurve->Remove() : polycurve->Remove(0);
@@ -1792,7 +1792,7 @@ bool ON_ForceMatchCurveEnds(ON_Curve& Crv0, int end0, ON_Curve& Crv1, int end1)
else {
//23 Jan 2018 - Chuck - If yanking a polycurve segment at the join causes
//that seg to be tiny, remove it and try again. See RH-43661
if (ON_CurveType(&Crv1) == ON::ctPolycurve){
if (Crv1.ON_CurveType() == ON::ctPolycurve){
ON_PolyCurve* polycurve = ON_PolyCurve::Cast(&Crv1);
if (polycurve->Count() > 1 && FastIsShort(*seg[1], 10.0*ON_ZERO_TOLERANCE)){
bool bRem = (end1) ? polycurve->Remove() : polycurve->Remove(0);
+2
View File
@@ -140,6 +140,8 @@ public:
// ON::curve_object
ON::object_type ObjectType() const override;
ON::eCurveType ON_Curve::ON_CurveType() const ;
// virtual ON_Geometry GetTightBoundingBox override
bool GetTightBoundingBox( class ON_BoundingBox& tight_bbox, bool bGrowBox = false, const class ON_Xform* xform = nullptr ) const override;