From ba05c5307a6740b21579d6e1f2a15504a684aa20 Mon Sep 17 00:00:00 2001 From: DarioS Date: Fri, 21 Jul 2023 15:11:14 +0200 Subject: [PATCH] EgtGeomKernel : - aggiunta funzione inline ConvertCurveToBasicComposite e suo utilizzo. --- CurveComposite.h | 13 +++++++++++++ SfrCreate.cpp | 4 ++-- 2 files changed, 15 insertions(+), 2 deletions(-) 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