diff --git a/EgtGeomKernel.rc b/EgtGeomKernel.rc index b4acb7d..e39fb9e 100644 Binary files a/EgtGeomKernel.rc and b/EgtGeomKernel.rc differ diff --git a/SfrCreate.cpp b/SfrCreate.cpp index 752d7a0..afe0871 100644 --- a/SfrCreate.cpp +++ b/SfrCreate.cpp @@ -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 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 ;