diff --git a/EXE_GdbModifyCurve.cpp b/EXE_GdbModifyCurve.cpp index f245e9a..691c594 100644 --- a/EXE_GdbModifyCurve.cpp +++ b/EXE_GdbModifyCurve.cpp @@ -1776,38 +1776,33 @@ ExeAddCurveCompoLine( int nId, const Point3d& ptP, bool bEndVsStart, int nRefTyp IGeomDB* pGeomDB = GetCurrGeomDB() ; VERIFY_GEOMDB( pGeomDB, false) bool bOk = true ; - // se punto geometrico (è lo start) + // recupero il riferimento locale + Frame3d frLoc ; + bOk = bOk && pGeomDB->GetGlobFrame( nId, frLoc) ; + // porto in locale il nuovo punto + Point3d ptPL = GetPointLocal( pGeomDB, ptP, nRefType, frLoc) ; + // se l'entità da modificare è un punto geometrico if ( pGeomDB->GetGeoType( nId) == GEO_PNT3D) { // creo la curva composita PtrOwner pCompo( CreateCurveComposite()) ; bOk = bOk && ( ! IsNull( pCompo)) ; - // recupero il riferimento locale - Frame3d frLoc ; - bOk = bOk && pGeomDB->GetGlobFrame( nId, frLoc) ; // recupero il punto di start Point3d ptStart = GetGeoPoint3d( pGeomDB->GetGeoObj( nId))->GetPoint() ; - // porto in locale il nuovo punto - Point3d ptPL = GetPointLocal( pGeomDB, ptP, nRefType, frLoc) ; // sistemo la curva composita bOk = bOk && pCompo->AddPoint( ptStart) && pCompo->AddLine( ptPL, bEndVsStart) ; // la sostituisco al GeoPoint originale bOk = bOk && pGeomDB->ReplaceGeoObj( nId, Release( pCompo)) ; - ExeSetModified() ; } // altrimenti deve essere curva composita else { // recupero la curva composita ICurveComposite* pCompo = GetCurveComposite( pGeomDB->GetGeoObj( nId)) ; bOk = bOk && ( pCompo != nullptr) ; - // recupero il riferimento locale - Frame3d frLoc ; - bOk = bOk && pGeomDB->GetGlobFrame( nId, frLoc) ; - // porto in locale il nuovo punto - Point3d ptPL = GetPointLocal( pGeomDB, ptP, nRefType, frLoc) ; // eseguo la modifica bOk = bOk && pCompo->AddLine( ptPL, bEndVsStart) ; - ExeSetModified() ; } + // dichiaro modificato progetto + ExeSetModified() ; // se richiesto, salvo il comando Lua equivalente if ( IsCmdLog()) { string sLua = "EgtAddCurveCompoLine(" + ToString( nId) + ",{" + @@ -1853,17 +1848,32 @@ ExeAddCurveCompoArc2P( int nId, const Point3d& ptMid, const Point3d& ptP, bool b IGeomDB* pGeomDB = GetCurrGeomDB() ; VERIFY_GEOMDB( pGeomDB, false) bool bOk = true ; - // recupero la curva composita - ICurveComposite* pCompo = GetCurveComposite( pGeomDB->GetGeoObj( nId)) ; - bOk = bOk && ( pCompo != nullptr) ; // recupero il riferimento locale Frame3d frLoc ; bOk = bOk && pGeomDB->GetGlobFrame( nId, frLoc) ; // porto in locale i punti Point3d ptMidL = GetPointLocal( pGeomDB, ptMid, nRefType, frLoc) ; Point3d ptPL = GetPointLocal( pGeomDB, ptP, nRefType, frLoc) ; - // eseguo la modifica - bOk = bOk && pCompo->AddArc2P( ptMidL, ptPL, bEndVsStart) ; + // se l'entità da modificare è un punto geometrico + if ( pGeomDB->GetGeoType( nId) == GEO_PNT3D) { + // creo la curva composita + PtrOwner pCompo( CreateCurveComposite()) ; + bOk = bOk && ( ! IsNull( pCompo)) ; + // recupero il punto di start + Point3d ptStart = GetGeoPoint3d( pGeomDB->GetGeoObj( nId))->GetPoint() ; + // sistemo la curva composita + bOk = bOk && pCompo->AddPoint( ptStart) && pCompo->AddArc2P( ptMidL, ptPL, bEndVsStart) ; + // la sostituisco al GeoPoint originale + bOk = bOk && pGeomDB->ReplaceGeoObj( nId, Release( pCompo)) ; + } + // altrimenti deve essere curva composita + else { + // recupero la curva composita + ICurveComposite* pCompo = GetCurveComposite( pGeomDB->GetGeoObj( nId)) ; + bOk = bOk && ( pCompo != nullptr) ; + // eseguo la modifica + bOk = bOk && pCompo->AddArc2P( ptMidL, ptPL, bEndVsStart) ; + } ExeSetModified() ; // se richiesto, salvo il comando Lua equivalente if ( IsCmdLog()) {