Merge branch 'Bezier_trim&mesh' into 3dm_import
This commit is contained in:
@@ -924,3 +924,47 @@ ExeSurfTmCut( int nId, int nCutterId, bool bInVsOut, bool bSaveOnEq)
|
||||
}
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static bool
|
||||
MySurfBzTrim( int nId, int nTrimmerId)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la superficie Bezier da trimmare
|
||||
ISurfBezier* pSrfBz = GetSurfBezier( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pSrfBz == nullptr)
|
||||
return false ;
|
||||
// recupero il riferimento della superficie
|
||||
Frame3d frSurf ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nId, frSurf))
|
||||
return false ;
|
||||
// recupero la superficie TriMesh divisore in locale alla prima
|
||||
|
||||
SurfLocal SurfCLoc( pGeomDB, nTrimmerId, frSurf) ;
|
||||
//const ISurfTriMesh* pStmCLoc = GetSurfTriMesh( SurfCLoc) ;
|
||||
const ISurfFlatRegion* pSrfFr = GetSurfFlatRegion( SurfCLoc) ;
|
||||
if ( pSrfFr == nullptr)
|
||||
return false ;
|
||||
PtrOwner<ISurfFlatRegion> pSrfFrCopy( pSrfFr->Clone()) ;
|
||||
if ( ! pSrfFr->GetNormVersor().IsZplus())
|
||||
pSrfFrCopy->Invert() ;
|
||||
// eseguo il taglio
|
||||
return pSrfBz->SetTrimRegion( *pSrfFrCopy) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfBzTrim( int nId, int nCutterId)
|
||||
{
|
||||
bool bOk = MySurfBzTrim( nId, nCutterId) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmCut(" + ToString( nId) + "," +
|
||||
ToString( nCutterId) + "," +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user