diff --git a/CurveComposite.h b/CurveComposite.h index 2028084..127d665 100644 --- a/CurveComposite.h +++ b/CurveComposite.h @@ -228,3 +228,16 @@ inline CurveComposite* GetBasicCurveComposite( IGeoObj* pGObj) { if ( pGObj == nullptr || pGObj->GetType() != CRV_COMPO) return nullptr ; return ( static_cast( pGObj)) ; } +inline CurveComposite* ConvertCurveToBasicComposite( IGeoObj* pGObj) + { if ( pGObj == nullptr || ( pGObj->GetType() & GEO_CURVE) == 0) { + delete pGObj ; + return nullptr ; + } + CurveComposite* pCrvCo = CreateBasicCurveComposite() ; + if ( pCrvCo == nullptr) { + delete pGObj ; + return nullptr ; + } + pCrvCo->AddCurve( static_cast( pGObj)) ; + return pCrvCo ; + } diff --git a/SfrCreate.cpp b/SfrCreate.cpp index 6e4fb9d..00392cf 100644 --- a/SfrCreate.cpp +++ b/SfrCreate.cpp @@ -124,8 +124,8 @@ GetSurfFlatRegionFromFatCurve( ICurve* pCrv, double dRadius, bool bSquareEnds, b Vector3d vtExtr ; pCrv->GetExtrusion( vtExtr) ; if ( vtExtr.IsSmall()) vtExtr = Z_AX ; - PtrOwner pCompo1( CreateBasicCurveComposite()) ; - if ( IsNull( pCompo1) || ! pCompo1->AddCurve( Release( pCurve))) + PtrOwner pCompo1 ; + if ( ! pCompo1.Set( ConvertCurveToBasicComposite( Release( pCurve)))) return nullptr ; pCompo1->SetExtrusion( vtExtr) ; // se distanza tra gli estremi minore di due volte il raggio la chiudo, purchè curva abbastanza lunga