diff --git a/SfrCreate.cpp b/SfrCreate.cpp index f118932..c8502c8 100644 --- a/SfrCreate.cpp +++ b/SfrCreate.cpp @@ -143,9 +143,20 @@ GetSurfFlatRegionFromFatCurve( ICurve* pCrv, double dRadius, bool bSquareEnds, b pCompo1->ModifyEnd( ptNew) ; } else { - double dAngEnd ; vtEnd.ToSpherical( nullptr, nullptr, &dAngEnd) ; - double dAngStart ; vtStart.ToSpherical( nullptr, nullptr, &dAngStart) ; + Frame3d frLoc ; + if ( ! AreSameVectorApprox( vtExtr, Z_AX)) + frLoc.Set( ORIG, vtExtr) ; + + // costruisco il biarco nel piano della curva + ptStart.ToLoc( frLoc) ; + ptEnd.ToLoc( frLoc) ; + Vector3d vtELoc( vtEnd) ; vtELoc.ToLoc( frLoc) ; + Vector3d vtSLoc( vtStart) ; vtSLoc.ToLoc( frLoc) ; + double dAngEnd ; vtELoc.ToSpherical( nullptr, nullptr, &dAngEnd) ; + double dAngStart ; vtSLoc.ToSpherical( nullptr, nullptr, &dAngStart) ; PtrOwner pClose( GetBiArc( ptEnd, dAngEnd, ptStart, dAngStart, 0.5)) ; + // porto il biarco in globale + pClose->ToGlob( frLoc) ; if ( ! IsNull( pClose)) pCompo1->AddCurve( Release( pClose)) ; else