EgtExecutor :

- anche a exe/lua AddCurveCompoArc2P aggiunta possibilità di partire da una entità GeoPoint3d per trasformarla in composita con un arco.
This commit is contained in:
Dario Sassi
2025-06-01 10:04:33 +02:00
parent 7279684119
commit bc99212f79
+28 -18
View File
@@ -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<ICurveComposite> 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<ICurveComposite> 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()) {