EgtExecutor 1.6p1 :

- piccole migliorie ed aggiustamenti.
This commit is contained in:
Dario Sassi
2016-04-13 06:33:55 +00:00
parent bb5feba6c4
commit 4ec6568db1
11 changed files with 199 additions and 52 deletions
+12 -12
View File
@@ -370,7 +370,7 @@ CreateLineTgTwoCurves( IGeomDB* pGeomDB, int nParentId,
ptN2loc.LocToLoc( frDest, frCrv1) ;
// calcolo la retta tangente alle due curve
PtrOwner<ICurveLine> pCrvLine ;
pCrvLine.Set( GetLineTgTwoCurves( *pCrv1, ptN1loc, *Get( pCrv2Loc), ptN2loc)) ;
pCrvLine.Set( GetLineTgTwoCurves( *pCrv1, ptN1loc, *pCrv2Loc, ptN2loc)) ;
if ( IsNull( pCrvLine))
return nullptr ;
// porto la linea nel riferimento del gruppo destinazione
@@ -420,7 +420,7 @@ CreateLinePerpTwoCurves( IGeomDB* pGeomDB, int nParentId,
ptN2loc.LocToLoc( frDest, frCrv1) ;
// calcolo la retta perpendicolare alle due curve
PtrOwner<ICurveLine> pCrvLine ;
pCrvLine.Set( GetLinePerpTwoCurves( *pCrv1, ptN1loc, *Get(pCrv2Loc), ptN2loc)) ;
pCrvLine.Set( GetLinePerpTwoCurves( *pCrv1, ptN1loc, *pCrv2Loc, ptN2loc)) ;
if ( IsNull( pCrvLine))
return nullptr ;
// porto la linea nel riferimento del gruppo destinazione
@@ -470,7 +470,7 @@ CreateLineTgCurvePerpCurve( IGeomDB* pGeomDB, int nParentId,
ptN2loc.LocToLoc( frDest, frCrv1) ;
// calcolo la retta perpendicolare alle due curve
PtrOwner<ICurveLine> pCrvLine ;
pCrvLine.Set( GetLineTgCurvePerpCurve( *pCrv1, ptN1loc, *Get( pCrv2Loc), ptN2loc)) ;
pCrvLine.Set( GetLineTgCurvePerpCurve( *pCrv1, ptN1loc, *pCrv2Loc, ptN2loc)) ;
if ( IsNull( pCrvLine))
return nullptr ;
// porto la linea nel riferimento del gruppo destinazione
@@ -737,7 +737,7 @@ ExeCreateCircleCPEx( int nParentId, const Point3d& ptCen,
// recupero la curva di tangenza in locale
CurveLocal CrvTgLoc( pGeomDB, nIdO, frLoc) ;
// calcolo la circonferenza tangente a questa curva
pCrvArc.Set( GetCircleCenTgCurve( ptCenL, vtNL, *CrvTgLoc.Get(), ptOnL)) ;
pCrvArc.Set( GetCircleCenTgCurve( ptCenL, vtNL, *CrvTgLoc, ptOnL)) ;
bOk = bOk && ! IsNull( pCrvArc) ;
}
// altrimenti errore
@@ -973,7 +973,7 @@ ExeCreateArcC2PEx( int nParentId, const Point3d& ptCen,
// recupero la curva di tangenza in locale
CurveLocal CrvTgLoc( pGeomDB, nIdS, frLoc) ;
// calcolo l'arco tangente a questa curva
pCrvArc.Set( GetArcCenTgCurvePnt( ptCenL, *CrvTgLoc.Get(), ptStartL, ptNearEndL, vtNormL)) ;
pCrvArc.Set( GetArcCenTgCurvePnt( ptCenL, *CrvTgLoc, ptStartL, ptNearEndL, vtNormL)) ;
bOk = bOk && ! IsNull( pCrvArc) ;
}
// altrimenti errore
@@ -1026,7 +1026,7 @@ ExeCreateArc3P( int nParentId, const Point3d& ptP1,
bOk = bOk && pCrv->SetExtrusion( vtExtrL) ;
// se arco, verifico che normale al suo piano e versore estrusione non siano controversi
if ( bOk && pCrv->GetType() == CRV_ARC) {
ICurveArc* pArc = GetCurveArc( Get( pCrv)) ;
ICurveArc* pArc = GetCurveArc( pCrv) ;
if ( ( pArc->GetNormVersor() * vtExtrL) < 0)
pArc->InvertN() ;
}
@@ -1117,14 +1117,14 @@ ExeCreateArc2PDEx( int nParentId, const Point3d& ptStart,
bOk = bOk && ! IsNull( pCrv) ;
if ( bOk) {
// imposto l'arco
if ( (dynamic_cast<ICurveArc*>(Get(pCrv)))->Set2PVN( ptStartL, ptEndL, vtDirSL, vtNormL))
if ( GetCurveArc( pCrv)->Set2PVN( ptStartL, ptEndL, vtDirSL, vtNormL))
;
// non riuscito, provo se risulta essere una retta
else if ( ( ptEndL - ptStartL) * vtDirSL > EPS_ZERO) {
// creo e setto la retta
pCrv.Set( CreateCurveLine()) ;
bOk = bOk && ! IsNull( pCrv) ;
bOk = bOk && (dynamic_cast<ICurveLine*>(Get(pCrv)))->Set( ptStartL, ptEndL) ;
bOk = bOk && GetCurveLine( pCrv)->Set( ptStartL, ptEndL) ;
}
// impossibile
else
@@ -1136,7 +1136,7 @@ ExeCreateArc2PDEx( int nParentId, const Point3d& ptStart,
// recupero la curva di tangenza in locale
CurveLocal CrvTgLoc( pGeomDB, nId, frLoc) ;
// calcolo l'arco tangente a questa curva
pCrv.Set( GetArcPntDirTgCurve( ptStartL, vtDirSL, *CrvTgLoc.Get(), ptEndL, vtNormL)) ;
pCrv.Set( GetArcPntDirTgCurve( ptStartL, vtDirSL, *CrvTgLoc, ptEndL, vtNormL)) ;
bOk = bOk && ! IsNull( pCrv) ;
}
// altrimenti errore
@@ -1278,7 +1278,7 @@ ExeCreateCurveFillet( int nParentId, int nCrv1, const Point3d& ptNear1,
CurveLocal CrvLoc2( pGeomDB, nCrv2, frLoc) ;
// calcolo il raccordo
double dTrim1, dTrim2 ;
pArc.Set( CreateFillet( *CrvLoc1.Get(), ptNear1L, *CrvLoc2.Get(), ptNear2L, vtNormL, dRad, dTrim1, dTrim2)) ;
pArc.Set( CreateFillet( *CrvLoc1, ptNear1L, *CrvLoc2, ptNear2L, vtNormL, dRad, dTrim1, dTrim2)) ;
bOk = bOk && ! IsNull( pArc) ;
// assegno il versore estrusione
bOk = bOk && pArc->SetExtrusion( vtExtrL) ;
@@ -1341,7 +1341,7 @@ ExeCreateCurveChamfer( int nParentId, int nCrv1, const Point3d& ptNear1,
CurveLocal CrvLoc2( pGeomDB, nCrv2, frLoc) ;
// calcolo lo smusso
double dTrim1, dTrim2 ;
pLine.Set( CreateChamfer( *CrvLoc1.Get(), ptNear1L, *CrvLoc2.Get(), ptNear2L, vtNormL, dDist, dTrim1, dTrim2)) ;
pLine.Set( CreateChamfer( *CrvLoc1, ptNear1L, *CrvLoc2, ptNear2L, vtNormL, dDist, dTrim1, dTrim2)) ;
bOk = bOk && ! IsNull( pLine) ;
// assegno il versore estrusione
bOk = bOk && pLine->SetExtrusion( vtExtrL) ;
@@ -2294,7 +2294,7 @@ MyCreateCirclesAlongCurve( int nParentId, int nCrvId, double dOffset, double dOv
}
// eseguo l'offset
OffsetCurve OffsCrv ;
if ( ! OffsCrv.Make( Get( pCopy), dOffset, ICurve::OFF_FILLET))
if ( ! OffsCrv.Make( pCopy, dOffset, ICurve::OFF_FILLET))
return GDB_ID_NULL ;
// ciclo sulle curve di offset
int nCount = 0 ;
+6 -6
View File
@@ -635,7 +635,7 @@ ExeCreateSurfTmByFlatContour( int nParentId, int nCrvId, double dLinTol)
CurveLocal CrvLoc( pGeomDB, nCrvId, frLoc) ;
bOk = bOk && ( CrvLoc.Get() != nullptr) ;
// calcolo la superficie
ISurfTriMesh* pSTM = ( bOk ? GetSurfTriMeshByFlatContour( CrvLoc.Get(), dLinTol) : nullptr) ;
ISurfTriMesh* pSTM = ( bOk ? GetSurfTriMeshByFlatContour( CrvLoc, dLinTol) : nullptr) ;
// inserisco la superficie nel DB
int nNewId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, pSTM) : GDB_ID_NULL) ;
ExeSetModified() ;
@@ -820,7 +820,7 @@ ExeCreateSurfTmByRevolve( int nParentId, int nCrvId,
Point3d ptAxL = GetPointLocal( pGeomDB, ptAx, nRefType, frLoc) ;
Vector3d vtAxL = GetVectorLocal( pGeomDB, vtAx, nRefType, frLoc) ;
// calcolo la superficie
ISurfTriMesh* pSTM = ( bOk ? GetSurfTriMeshByRevolve( CrvLoc.Get(), ptAxL, vtAxL, bCapEnds, dLinTol) : nullptr) ;
ISurfTriMesh* pSTM = ( bOk ? GetSurfTriMeshByRevolve( CrvLoc, ptAxL, vtAxL, bCapEnds, dLinTol) : nullptr) ;
// inserisco la superficie nel DB
int nNewId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, pSTM) : GDB_ID_NULL) ;
ExeSetModified() ;
@@ -860,7 +860,7 @@ ExeCreateSurfTmByScrewing( int nParentId, int nCrvId,
Point3d ptAxL = GetPointLocal( pGeomDB, ptAx, nRefType, frLoc) ;
Vector3d vtAxL = GetVectorLocal( pGeomDB, vtAx, nRefType, frLoc) ;
// calcolo la superficie
ISurfTriMesh* pSTM = ( bOk ? GetSurfTriMeshByScrewing( CrvLoc.Get(), ptAxL, vtAxL, dAngRotDeg, dMove, dLinTol) : nullptr) ;
ISurfTriMesh* pSTM = ( bOk ? GetSurfTriMeshByScrewing( CrvLoc, ptAxL, vtAxL, dAngRotDeg, dMove, dLinTol) : nullptr) ;
// inserisco la superficie nel DB
int nNewId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, pSTM) : GDB_ID_NULL) ;
ExeSetModified() ;
@@ -908,7 +908,7 @@ ExeCreateSurfTmRuled( int nParentId, int nPtOrCrvId1, int nPtOrCrvId2, double dL
CurveLocal CrvLoc( pGeomDB, nPtOrCrvId2, frLoc) ;
bOk = bOk && ( CrvLoc.Get() != nullptr) ;
// calcolo la superficie
pSTM = ( bOk ? GetSurfTriMeshRuled( ptP, CrvLoc.Get(), dLinTol) : nullptr) ;
pSTM = ( bOk ? GetSurfTriMeshRuled( ptP, CrvLoc, dLinTol) : nullptr) ;
}
// se la prima entità è una curva e la seconda un punto
else if ( ( pGeomDB->GetGeoType( nPtOrCrvId1) & GEO_CURVE) != 0 &&
@@ -924,7 +924,7 @@ ExeCreateSurfTmRuled( int nParentId, int nPtOrCrvId1, int nPtOrCrvId2, double dL
Point3d ptP = GetGeoPoint3d( pGeomDB->GetGeoObj( nPtOrCrvId2))->GetPoint() ;
bOk = bOk && ptP.LocToLoc( frPnt, frLoc) ;
// calcolo la superficie
pSTM = ( bOk ? GetSurfTriMeshRuled( ptP, CrvLoc.Get(), dLinTol) : nullptr) ;
pSTM = ( bOk ? GetSurfTriMeshRuled( ptP, CrvLoc, dLinTol) : nullptr) ;
}
// se entrambe curve
else if ( ( pGeomDB->GetGeoType( nPtOrCrvId1) & GEO_CURVE) != 0 &&
@@ -936,7 +936,7 @@ ExeCreateSurfTmRuled( int nParentId, int nPtOrCrvId1, int nPtOrCrvId2, double dL
CurveLocal CrvLoc2( pGeomDB, nPtOrCrvId2, frLoc) ;
bOk = bOk && ( CrvLoc2.Get() != nullptr) ;
// calcolo la superficie
pSTM = ( bOk ? GetSurfTriMeshRuled( CrvLoc1.Get(), CrvLoc2.Get(), dLinTol) : nullptr) ;
pSTM = ( bOk ? GetSurfTriMeshRuled( CrvLoc1, CrvLoc2, dLinTol) : nullptr) ;
}
// altrimenti errore
else
+27 -3
View File
@@ -563,7 +563,7 @@ MyTrimCurveWithRegion( int nCrvId, int nRegId, bool bInVsOut, bool bOn, int& nCo
return GDB_ID_NULL ;
// calcolo la classificazione della curva rispetto alla regione
CRVCVECTOR ccClass ;
if ( ! pSFR->GetCurveClassification( *CrvLoc.Get(), ccClass))
if ( ! pSFR->GetCurveClassification( *CrvLoc, ccClass))
return GDB_ID_NULL ;
// determino gli intervalli di curva da conservare
Intervals inOk ;
@@ -571,7 +571,7 @@ MyTrimCurveWithRegion( int nCrvId, int nRegId, bool bInVsOut, bool bOn, int& nCo
if ( ( bInVsOut && ccOne.nClass == CRVC_IN) ||
( ! bInVsOut && ccOne.nClass == CRVC_OUT) ||
( bOn && ( ccOne.nClass == CRVC_ON_P || ccOne.nClass == CRVC_ON_M)))
inOk.Add( ccOne.dParE, ccOne.dParS) ;
inOk.Add( ccOne.dParS, ccOne.dParE) ;
}
// recupero un intervallo di id contigui per tutte le parti
int nFirstId = pGeomDB->GetNewId() ;
@@ -1333,7 +1333,31 @@ ExeMergeCurvesInCurveCompo( int nId, double dLinTol)
ExeSetModified() ;
// se richiesto, salvo il comando Lua equivalente
if ( IsCmdLog()) {
string sLua = "EgtMergeCurvesInCurveCompo(" + ToString( nId) + ")" +
string sLua = "EgtMergeCurvesInCurveCompo(" + ToString( nId) + "," +
ToString( dLinTol) + ")" +
" -- Ok=" + ToString( bOk) ;
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
}
return bOk ;
}
//-------------------------------------------------------------------------------
bool
ExeRemoveCurveCompoUndercutOnY( int nId, double dLinTol)
{
IGeomDB* pGeomDB = GetCurrGeomDB() ;
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
// recupero la curva composita
ICurveComposite* pCompo = GetCurveComposite( pGeomDB->GetGeoObj( nId)) ;
bool bOk = ( pCompo != nullptr) ;
// lancio l'eliminazione delle parti sotto rispetto alla direzione Y+
const double ANG_TOL_STD_DEG = 15 ;
bOk = bOk && pCompo->RemoveUndercutOnY( dLinTol, ANG_TOL_STD_DEG) ;
ExeSetModified() ;
// se richiesto, salvo il comando Lua equivalente
if ( IsCmdLog()) {
string sLua = "EgtRemoveCurveCompoUndercutOnY(" + ToString( nId) + "," +
ToString( dLinTol) + ")" +
" -- Ok=" + ToString( bOk) ;
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
}
+5 -5
View File
@@ -189,7 +189,7 @@ ExeSurfFrAdd( int nId1, int nId2)
pTmp.Set( CloneSurfFlatRegion( pSfr2)) ;
bOk = bOk && ! IsNull( pTmp) ;
bOk = bOk && pTmp->LocToLoc( frSurf2, frSurf1) ;
pSfr2L = Get( pTmp) ;
pSfr2L = pTmp ;
}
// eseguo l'unione tra le due superfici
bOk = bOk && pSfr1->Add( *pSfr2L) ;
@@ -229,7 +229,7 @@ ExeSurfFrSubtract( int nId1, int nId2)
pTmp.Set( CloneSurfFlatRegion( pSfr2)) ;
bOk = bOk && ! IsNull( pTmp) ;
bOk = bOk && pTmp->LocToLoc( frSurf2, frSurf1) ;
pSfr2L = Get( pTmp) ;
pSfr2L = pTmp ;
}
// eseguo la sottrazione della seconda superficie dalla prima
bOk = bOk && pSfr1->Subtract( *pSfr2L) ;
@@ -272,7 +272,7 @@ ExeSurfFrIntersect( int nId1, int nId2)
pTmp.Set( CloneSurfFlatRegion( pSfr2)) ;
bOk = bOk && ! IsNull( pTmp) ;
bOk = bOk && pTmp->LocToLoc( frSurf2, frSurf1) ;
pSfr2L = Get( pTmp) ;
pSfr2L = pTmp ;
}
// eseguo l'intersezione tra le due superfici
bOk = bOk && pSfr1->Intersect( *pSfr2L) ;
@@ -393,7 +393,7 @@ ExeSurfFrMoveSimpleNoCollision( int nId1, int nId2, const Vector3d& vtDir, doubl
pTmp.Set( CloneSurfFlatRegion( pSfr2)) ;
bOk = bOk && ! IsNull( pTmp) ;
bOk = bOk && pTmp->LocToLoc( frSurf2, frSurf1) ;
pSfr2L = Get( pTmp) ;
pSfr2L = pTmp ;
}
// porto in locale alla prima superficie il versore di movimento
Vector3d vtDirL = GetVectorLocal( pGeomDB, vtDir, nRefType, frSurf1) ;
@@ -426,7 +426,7 @@ ExeSurfFrRotateSimpleNoCollision( int nId1, int nId2, const Point3d& ptCen, doub
pTmp.Set( CloneSurfFlatRegion( pSfr2)) ;
bOk = bOk && ! IsNull( pTmp) ;
bOk = bOk && pTmp->LocToLoc( frSurf2, frSurf1) ;
pSfr2L = Get( pTmp) ;
pSfr2L = pTmp ;
}
// porto in locale alla prima superficie il versore di movimento
Point3d ptCenL = GetPointLocal( pGeomDB, ptCen, nRefType, frSurf1) ;
+7 -7
View File
@@ -337,13 +337,13 @@ ExeIntersectionPoint( int nId1, int nId2, const Point3d& ptNear, int nRefId, Poi
if ( ! pGeomDB->GetGlobFrame( nId2, frEnt2))
return false ;
// se il riferimento della seconda curva è diverso da quello della prima entità, devo trasformarla
PtrOwner<ICurve> crvTrans( nullptr) ;
PtrOwner<ICurve> pcrvTrans ;
if ( ! AreSameFrame( frEnt1, frEnt2)) {
crvTrans.Set( pCrv2->Clone()) ;
if ( IsNull( crvTrans))
pcrvTrans.Set( pCrv2->Clone()) ;
if ( IsNull( pcrvTrans))
return false ;
crvTrans->LocToLoc( frEnt2, frEnt1) ;
pCrv2 = ::Get( crvTrans) ;
pcrvTrans->LocToLoc( frEnt2, frEnt1) ;
pCrv2 = pcrvTrans ;
}
// porto il punto Near nel riferimento della prima entità
Point3d ptNearL = ptNear ;
@@ -875,12 +875,12 @@ ExeSurfFrChunkSimpleClassify( int nId1, int nChunk1, int nId2, int nChunk2)
bOk = bOk && pGeomDB->GetGlobFrame( nId2, frSurf2) ;
// se riferimenti diversi, porto una copia della seconda nel riferimento della prima
const ISurfFlatRegion* pSfr2L = pSfr2 ;
PtrOwner<ISurfFlatRegion>pTmp ;
PtrOwner<ISurfFlatRegion> pTmp ;
if ( ! AreSameFrame( frSurf1, frSurf2)) {
pTmp.Set( CloneSurfFlatRegion( pSfr2)) ;
bOk = bOk && ! IsNull( pTmp) ;
bOk = bOk && pTmp->LocToLoc( frSurf2, frSurf1) ;
pSfr2L = Get( pTmp) ;
pSfr2L = pTmp ;
}
// classifico il chunk della prima regione rispetto a quello della seconda
return pSfr1->GetChunkSimpleClassification( nChunk1, *pSfr2L, nChunk2) ;
+75 -8
View File
@@ -1244,7 +1244,15 @@ ExeRemoveOperation( int nId)
GseContext* pGseCtx = GetCurrGseContext() ;
VERIFY_CTX_MACHMGR( pGseCtx, false)
// elimino l'operazione indicata della macchinata corrente
return pGseCtx->m_pMachMgr->RemoveOperation( nId) ;
bool bOk = pGseCtx->m_pMachMgr->RemoveOperation( nId) ;
ExeSetModified() ;
// se richiesto, salvo il comando Lua equivalente
if ( IsCmdLog()) {
string sLua = "EgtRemoveOperation(" + ToString( nId) + ")" +
" -- Ok=" + ToString( bOk) ;
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
}
return bOk ;
}
//-----------------------------------------------------------------------------
@@ -1254,7 +1262,15 @@ ExeRemoveAllPhaseOperations( int nPhase)
GseContext* pGseCtx = GetCurrGseContext() ;
VERIFY_CTX_MACHMGR( pGseCtx, false)
// elimino tutte le operazioni (tranne la disposizione) della fase indicata della macchinata corrente
return pGseCtx->m_pMachMgr->RemoveAllPhaseOperations( nPhase) ;
bool bOk = pGseCtx->m_pMachMgr->RemoveAllPhaseOperations( nPhase) ;
ExeSetModified() ;
// se richiesto, salvo il comando Lua equivalente
if ( IsCmdLog()) {
string sLua = "EgtRemoveAllPhaseOperations(" + ToString( nPhase) + ")" +
" -- Ok=" + ToString( bOk) ;
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
}
return bOk ;
}
//-----------------------------------------------------------------------------
@@ -1264,7 +1280,15 @@ ExeRemoveAllOperations( void)
GseContext* pGseCtx = GetCurrGseContext() ;
VERIFY_CTX_MACHMGR( pGseCtx, false)
// elimino tutte le operazioni e le fasi della macchinata corrente tranne la prima disposizione
return pGseCtx->m_pMachMgr->RemoveAllOperations() ;
bool bOk = pGseCtx->m_pMachMgr->RemoveAllOperations() ;
ExeSetModified() ;
// se richiesto, salvo il comando Lua equivalente
if ( IsCmdLog()) {
string sLua = "EgtRemoveAllOperations()"
" -- Ok=" + ToString( bOk) ;
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
}
return bOk ;
}
//-----------------------------------------------------------------------------
@@ -1274,7 +1298,16 @@ ExeSetOperationMode( int nId, bool bActive)
GseContext* pGseCtx = GetCurrGseContext() ;
VERIFY_CTX_MACHMGR( pGseCtx, false)
// imposto lo stato dell'operazione
return pGseCtx->m_pMachMgr->SetOperationMode( nId, bActive) ;
bool bOk = pGseCtx->m_pMachMgr->SetOperationMode( nId, bActive) ;
ExeSetModified() ;
// se richiesto, salvo il comando Lua equivalente
if ( IsCmdLog()) {
string sLua = "EgtSetOperationMode(" + ToString( nId) + "," +
( bActive ? "true" : "false") + ")" +
" -- Ok=" + ToString( bOk) ;
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
}
return bOk ;
}
//-----------------------------------------------------------------------------
@@ -1294,7 +1327,15 @@ ExeSetAllOperationsMode( bool bActive)
GseContext* pGseCtx = GetCurrGseContext() ;
VERIFY_CTX_MACHMGR( pGseCtx, false)
// imposto lo stato di tutte le operazioni
return pGseCtx->m_pMachMgr->SetAllOperationsMode( true, bActive) ;
bool bOk = pGseCtx->m_pMachMgr->SetAllOperationsMode( true, bActive) ;
ExeSetModified() ;
// se richiesto, salvo il comando Lua equivalente
if ( IsCmdLog()) {
string sLua = "EgtSetAllOperationsMode(" + string( bActive ? "true" : "false") + ")" +
" -- Ok=" + ToString( bOk) ;
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
}
return bOk ;
}
//-----------------------------------------------------------------------------
@@ -1304,7 +1345,16 @@ ExeSetOperationStatus( int nId, bool bShow)
GseContext* pGseCtx = GetCurrGseContext() ;
VERIFY_CTX_MACHMGR( pGseCtx, false)
// imposto lo stato di visualizzazione dell'operazione
return pGseCtx->m_pMachMgr->SetOperationStatus( nId, bShow) ;
bool bOk = pGseCtx->m_pMachMgr->SetOperationStatus( nId, bShow) ;
// non cambia lo stato di modificato del progetto
// se richiesto, salvo il comando Lua equivalente
if ( IsCmdLog()) {
string sLua = "EgtSetOperationStatus(" + ToString( nId) + "," +
( bShow ? "true" : "false") + ")" +
" -- Ok=" + ToString( bOk) ;
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
}
return bOk ;
}
//-----------------------------------------------------------------------------
@@ -1324,7 +1374,15 @@ ExeSetAllOperationsStatus( bool bShow)
GseContext* pGseCtx = GetCurrGseContext() ;
VERIFY_CTX_MACHMGR( pGseCtx, false)
// imposto lo stato di visualizzazione di tutte le operazioni
return pGseCtx->m_pMachMgr->SetAllOperationsStatus( true, bShow) ;
bool bOk = pGseCtx->m_pMachMgr->SetAllOperationsStatus( true, bShow) ;
// non cambia lo stato di modificato del progetto
// se richiesto, salvo il comando Lua equivalente
if ( IsCmdLog()) {
string sLua = "EgtSetAllOperationsStatus(" + string( bShow ? "true" : "false") + ")" +
" -- Ok=" + ToString( bOk) ;
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
}
return bOk ;
}
//-----------------------------------------------------------------------------
@@ -1334,7 +1392,16 @@ ExeChangeOperationPhase( int nId, int nNewPhase)
GseContext* pGseCtx = GetCurrGseContext() ;
VERIFY_CTX_MACHMGR( pGseCtx, false)
// cambio la fase dell'operazione e la sposto in fondo alle lavorazioni della stessa fase
return pGseCtx->m_pMachMgr->ChangeOperationPhase( nId, nNewPhase) ;
bool bOk = pGseCtx->m_pMachMgr->ChangeOperationPhase( nId, nNewPhase) ;
ExeSetModified() ;
// se richiesto, salvo il comando Lua equivalente
if ( IsCmdLog()) {
string sLua = "EgtChangeOperationPhase(" + ToString( nId) + "," +
ToString( nNewPhase) + ")" +
" -- Ok=" + ToString( bOk) ;
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
}
return bOk ;
}
//-----------------------------------------------------------------------------
+7 -7
View File
@@ -95,7 +95,7 @@ FilterAndApprox( void)
continue ;
}
// ciclo su tutti gli oggetti del pezzo
bool bLok = pLay->GoToFirstInGroup( *Get( pPar)) ;
bool bLok = pLay->GoToFirstInGroup( *pPar) ;
while ( bLok) {
// sotto ogni pezzo sono ammessi solo gruppi di livello User -> Layer
int nLev ;
@@ -105,7 +105,7 @@ FilterAndApprox( void)
continue ;
}
// ciclo su tutti gli oggetti del layer
bool bEok = pEnt->GoToFirstInGroup( *Get( pLay)) ;
bool bEok = pEnt->GoToFirstInGroup( *pLay) ;
while ( bEok) {
// sotto ogni layer sono ammesse solo curve di livello User
int nLev ;
@@ -115,7 +115,7 @@ FilterAndApprox( void)
continue ;
}
// eventuale approx della curva se Bezier o Composita con molti piccoli segmenti
ApproxCurveIfNeeded( Get( pEnt)) ;
ApproxCurveIfNeeded( pEnt) ;
// passo alla successiva entità
bEok = pEnt->GoToNext() ;
}
@@ -299,7 +299,7 @@ CreateFlatPartsByLayers( void)
int nFirstId = pPar->GetId() ;
while ( bPok) {
// ciclo su tutti i sottogruppi (layer)
bool bLok = pLay->GoToFirstGroupInGroup( *Get( pPar)) ;
bool bLok = pLay->GoToFirstGroupInGroup( *pPar) ;
while ( bLok) {
// creo pezzo con questa geometria
int nPartId = pGeomDB->InsertGroup( GDB_ID_NULL, nFirstId, GDB_BEFORE, Frame3d()) ;
@@ -313,7 +313,7 @@ CreateFlatPartsByLayers( void)
if ( ! pGeomDB->RelocateGlob( pLay->GetId(), nPartId))
return false ;
// altro layer del gruppo originale
bLok = pLay->GoToFirstGroupInGroup( *Get( pPar)) ;
bLok = pLay->GoToFirstGroupInGroup( *pPar) ;
}
// passo al successivo
bPok = pPar->GoToNextGroup() ;
@@ -342,10 +342,10 @@ CreateFlatPartsByClosedCurves( void)
int nFirstId = pPar->GetId() ;
while ( bPok) {
// ciclo su tutti i sottogruppi (layer)
bool bLok = pLay->GoToFirstGroupInGroup( *Get( pPar)) ;
bool bLok = pLay->GoToFirstGroupInGroup( *pPar) ;
while ( bLok) {
// ciclo su tutte le entità
bool bEok = pEnt->GoToFirstInGroup( *Get( pLay)) ;
bool bEok = pEnt->GoToFirstInGroup( *pLay) ;
while ( bEok) {
// se curva chiusa
if ( ( pEnt->GetGeoType() & GEO_CURVE) != 0 &&
+3 -3
View File
@@ -190,7 +190,7 @@ ExeCreateOutRegion( int nParentId, int nOutCrvId)
// determino il punto più vicino al massimo del box e lo faccio diventare il nuovo inizio
int nFlag ;
double dU ;
DistPointCurve distPC( b3Box.GetMax(), *Get( pCompo)) ;
DistPointCurve distPC( b3Box.GetMax(), *pCompo) ;
if ( ! distPC.GetParamAtMinDistPoint( 0, dU, nFlag) ||
! pCompo->ChangeStartPoint( dU))
return false ;
@@ -799,12 +799,12 @@ MySurfFrMoveSimpleNoCollision( int nId1, int nId2, const Vector3d& vtDir, double
bOk = bOk && pGeomDB->GetGlobFrame( nId2, frSurf2) ;
// se riferimenti diversi, porto una copia della seconda nel riferimento della prima
const ISurfFlatRegion* pSfr2L = pSfr2 ;
PtrOwner<ISurfFlatRegion>pTmp ;
PtrOwner<ISurfFlatRegion> pTmp ;
if ( ! AreSameFrame( frSurf1, frSurf2)) {
pTmp.Set( CloneSurfFlatRegion( pSfr2)) ;
bOk = bOk && ! IsNull( pTmp) ;
bOk = bOk && pTmp->LocToLoc( frSurf2, frSurf1) ;
pSfr2L = Get( pTmp) ;
pSfr2L = pTmp ;
}
// porto in locale alla prima superficie il versore di movimento
Vector3d vtDirL = vtDir ;
BIN
View File
Binary file not shown.
+17
View File
@@ -635,6 +635,22 @@ LuaMergeCurvesInCurveCompo( lua_State* L)
return 1 ;
}
//-------------------------------------------------------------------------------
static int
LuaRemoveCurveCompoUndercutOnY( lua_State* L)
{
// 1 o 2 parametri : Id [, dLinTol]
int nId ;
LuaCheckParam( L, 1, nId)
double dLinTol = 0.01 ;
LuaGetParam( L, 2, dLinTol) ;
LuaClearStack( L) ;
// eliminazioni delle parti sotto rispetto alla direzione Y+
bool bOk = ExeRemoveCurveCompoUndercutOnY( nId, dLinTol) ;
LuaSetParam( L, bOk) ;
return 1 ;
}
//-------------------------------------------------------------------------------
bool
LuaInstallGdbModifyCurve( LuaMgr& luaMgr)
@@ -674,5 +690,6 @@ LuaInstallGdbModifyCurve( LuaMgr& luaMgr)
bOk = bOk && luaMgr.RegisterFunction( "EgtRemoveCurveCompoJoint", LuaRemoveCurveCompoJoint) ;
bOk = bOk && luaMgr.RegisterFunction( "EgtExplodeCurveCompo", LuaExplodeCurveCompo) ;
bOk = bOk && luaMgr.RegisterFunction( "EgtMergeCurvesInCurveCompo", LuaMergeCurvesInCurveCompo) ;
bOk = bOk && luaMgr.RegisterFunction( "EgtRemoveCurveCompoUndercutOnY", LuaRemoveCurveCompoUndercutOnY) ;
return bOk ;
}
+40 -1
View File
@@ -1370,6 +1370,43 @@ LuaGetOperationPhase( lua_State* L)
return 1 ;
}
//-------------------------------------------------------------------------------
static int
LuaGetOperationName( lua_State* L)
{
// 1 parametro : nId
int nId ;
LuaCheckParam( L, 1, nId)
LuaClearStack( L) ;
// restituisco il nome dell'operazione indicata della macchinata corrente
string sName ;
bool bOk = ExeGetOperationName( nId, sName) ;
// restituisco il risultato
if ( bOk)
LuaSetParam( L, sName) ;
else
LuaSetParam( L) ;
return 1 ;
}
//-------------------------------------------------------------------------------
static int
LuaGetOperationId( lua_State* L)
{
// 1 parametro : sName
string sName ;
LuaCheckParam( L, 1, sName)
LuaClearStack( L) ;
// restituisco l'identificativo dell'operazione nominata della macchinata corrente
int nId = ExeGetOperationId( sName) ;
// restituisco il risultato
if ( nId != GDB_ID_NULL)
LuaSetParam( L, nId) ;
else
LuaSetParam( L) ;
return 1 ;
}
//-------------------------------------------------------------------------------
static int
LuaRemoveOperation( lua_State* L)
@@ -1487,7 +1524,7 @@ LuaChangeOperationPhase( lua_State* L)
int nNewPhase ;
LuaCheckParam( L, 2, nNewPhase)
LuaClearStack( L) ;
// imposto lo stato di visualizzazione di tutte le operazioni
// cambio la fase dell'operazione e la sposto in fondo alle lavorazioni della stessa fase
bool bOk = ExeChangeOperationPhase( nId, nNewPhase) ;
// restituisco il risultato
LuaSetParam( L, bOk) ;
@@ -2285,6 +2322,8 @@ LuaInstallMachMgr( LuaMgr& luaMgr)
bOk = bOk && luaMgr.RegisterFunction( "EgtGetNextOperation", LuaGetNextOperation) ;
bOk = bOk && luaMgr.RegisterFunction( "EgtGetOperationType", LuaGetOperationType) ;
bOk = bOk && luaMgr.RegisterFunction( "EgtGetOperationPhase", LuaGetOperationPhase) ;
bOk = bOk && luaMgr.RegisterFunction( "EgtGetOperationName", LuaGetOperationName) ;
bOk = bOk && luaMgr.RegisterFunction( "EgtGetOperationId", LuaGetOperationId) ;
bOk = bOk && luaMgr.RegisterFunction( "EgtRemoveOperation", LuaRemoveOperation) ;
bOk = bOk && luaMgr.RegisterFunction( "EgtRemoveAllPhaseOperations", LuaRemoveAllPhaseOperations) ;
bOk = bOk && luaMgr.RegisterFunction( "EgtRemoveAllOperations", LuaRemoveAllOperations) ;