EgtExecutor 1.6p1 :
- piccole migliorie ed aggiustamenti.
This commit is contained in:
+12
-12
@@ -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 ;
|
||||
|
||||
@@ -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
@@ -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()) ;
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
@@ -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 ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
@@ -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 &&
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
Binary file not shown.
@@ -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
@@ -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) ;
|
||||
|
||||
Reference in New Issue
Block a user