EgtGeomKernel 2.2k4 :
- corretta GetSurfFlatRegionFromFatCurve per creazione superficie quando curva non su piano XY.
This commit is contained in:
+8
-4
@@ -119,9 +119,13 @@ GetSurfFlatRegionFromFatCurve( ICurve* pCrv, double dRadius, bool bSquareEnds, b
|
||||
if ( IsNull( pCurve))
|
||||
return nullptr ;
|
||||
// la inserisco in una curva composita
|
||||
Vector3d vtExtr ; pCrv->GetExtrusion( vtExtr) ;
|
||||
if ( vtExtr.IsSmall())
|
||||
vtExtr = Z_AX ;
|
||||
PtrOwner<CurveComposite> pCompo1( CreateBasicCurveComposite()) ;
|
||||
if ( IsNull( pCompo1) || ! pCompo1->AddCurve( Release( pCurve)))
|
||||
return nullptr ;
|
||||
pCompo1->SetExtrusion( vtExtr) ;
|
||||
// se distanza tra gli estremi minore di due volte il raggio la chiudo, purchè curva abbastanza lunga
|
||||
Point3d ptStart, ptEnd, ptMid ;
|
||||
Vector3d vtStart, vtEnd ;
|
||||
@@ -228,12 +232,12 @@ GetSurfFlatRegionFromFatCurve( ICurve* pCrv, double dRadius, bool bSquareEnds, b
|
||||
return nullptr ;
|
||||
// verifico se arco tangente alla prima o alla seconda curva
|
||||
if ( AreSameVectorApprox( vtEnd1, vtEnd)) {
|
||||
if ( ! pArc1->Set2PVN( ptEnd1, ptStart2, vtEnd1, Z_AX) ||
|
||||
if ( ! pArc1->Set2PVN( ptEnd1, ptStart2, vtEnd1, vtExtr) ||
|
||||
! pCompo1->AddCurve( Release( pArc1)))
|
||||
return nullptr ;
|
||||
}
|
||||
else {
|
||||
if ( ! pArc1->Set2PVN( ptStart2, ptEnd1, -vtStart2, Z_AX) ||
|
||||
if ( ! pArc1->Set2PVN( ptStart2, ptEnd1, -vtStart2, vtExtr) ||
|
||||
! pArc1->Invert() ||
|
||||
! pCompo1->AddCurve( Release( pArc1)))
|
||||
return nullptr ;
|
||||
@@ -250,12 +254,12 @@ GetSurfFlatRegionFromFatCurve( ICurve* pCrv, double dRadius, bool bSquareEnds, b
|
||||
return nullptr ;
|
||||
// verifico se arco tangente alla seconda o alla prima curva
|
||||
if ( AreOppositeVectorApprox( vtEnd2, vtStart)) {
|
||||
if ( ! pArc2->Set2PVN( ptEnd2, ptStart1, vtEnd2, Z_AX) ||
|
||||
if ( ! pArc2->Set2PVN( ptEnd2, ptStart1, vtEnd2, vtExtr) ||
|
||||
! pCompo2->AddCurve( Release( pArc2)))
|
||||
return nullptr ;
|
||||
}
|
||||
else {
|
||||
if ( ! pArc2->Set2PVN( ptStart1, ptEnd2, -vtStart1, Z_AX) ||
|
||||
if ( ! pArc2->Set2PVN( ptStart1, ptEnd2, -vtStart1, vtExtr) ||
|
||||
! pArc2->Invert() ||
|
||||
! pCompo2->AddCurve( Release( pArc2)))
|
||||
return nullptr ;
|
||||
|
||||
Reference in New Issue
Block a user