EgtExecutor 3.1h4 :
- cambio versione - aggiunti due argomenti per l'interpolazione delle curve si sync per il trimming.
This commit is contained in:
@@ -3096,7 +3096,7 @@ ExeCreateSurfExtensionFromMany( int nParentId, const INTVECTOR& vSurfId, double
|
||||
if ( pnCount != nullptr)
|
||||
++ *pnCount ;
|
||||
}
|
||||
if ( bDrawOffEdge && pOffEdge->IsValid()) {
|
||||
if ( bDrawOffEdge && pOffEdge != nullptr && pOffEdge->IsValid()) {
|
||||
int nEdgeId = pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, pOffEdge) ;
|
||||
if ( nEdgeId != GDB_ID_NULL) {
|
||||
if ( pnCount != nullptr)
|
||||
|
||||
+34
-2
@@ -649,7 +649,7 @@ ExeTrimmingGetRuledBezier( int nParentId, const INTVECTOR& vIds, int nEdge1Id, i
|
||||
// ---------------------------------------------------------------------------
|
||||
bool
|
||||
ExeTrimmingInterpolateSyncLines( int nParentId, int nSync1Id, int nSync2Id, int nBorder1Id,
|
||||
int nBorder2Id, double dEdgeLinTol, double dEdgeAngTol,
|
||||
int nBorder2Id, double dEdgeLinTol, double dEdgeAngTol, bool bShorterSide, bool bEraseOrigLines,
|
||||
int& nFirstId, int& nCount)
|
||||
{
|
||||
// Verifica database geometrico
|
||||
@@ -678,9 +678,41 @@ ExeTrimmingInterpolateSyncLines( int nParentId, int nSync1Id, int nSync2Id, int
|
||||
|
||||
// Calcolo le Curve di sincornizzazione Interpolate
|
||||
BIPNTVECTOR vSyncPoints ;
|
||||
GuideBounds gbGuideBounds ;
|
||||
bOk = bOk && GetTrimmingSyncInterpolation( pCrvEdge1, pCrvEdge2, pSync1, pSync2, dMyEdgeLinTol,
|
||||
dMyEdgeAngTol, vSyncPoints) ;
|
||||
dMyEdgeAngTol, bShorterSide, vSyncPoints, gbGuideBounds) ;
|
||||
if ( bOk && ! vSyncPoints.empty()) {
|
||||
if ( bEraseOrigLines) {
|
||||
// scorro tutte le curve si sync già presenti e le elimino se entro i limiti della zona di interpolazione
|
||||
int nSyncId = pGeomDB->GetFirstInGroup( nParentId) ;
|
||||
while ( nSyncId != GDB_ID_NULL) {
|
||||
double dS, dE ;
|
||||
Point3d ptStart, ptEnd ;
|
||||
ICurve* pSync = GetCurve( pGeomDB->GetGeoObj( nSyncId)) ;
|
||||
pSync->GetStartPoint( ptStart) ;
|
||||
pSync->GetEndPoint( ptEnd) ;
|
||||
if ( ! pCrvEdge1->GetParamAtPoint( ptStart, dS, dMyEdgeLinTol)) {
|
||||
pSync->Invert() ;
|
||||
swap( ptStart, ptEnd) ;
|
||||
if ( ! pCrvEdge1->GetParamAtPoint( ptStart, dS, dMyEdgeLinTol)) {
|
||||
pSync->Invert() ;
|
||||
bOk = false ;
|
||||
break ;
|
||||
}
|
||||
}
|
||||
if ( ! pCrvEdge2->GetParamAtPoint( ptEnd, dE, dMyEdgeLinTol)) {
|
||||
bOk = false ;
|
||||
break ;
|
||||
}
|
||||
int nCurrId = nSyncId ;
|
||||
nSyncId = pGeomDB->GetNext( nSyncId) ;
|
||||
if ( ( gbGuideBounds.bDirect &&
|
||||
(( dS > gbGuideBounds.dS1 && dS < gbGuideBounds.dE1) || ( dE > gbGuideBounds.dS2 && dE < gbGuideBounds.dE2))) ||
|
||||
( ! gbGuideBounds.bDirect &&
|
||||
(( dS < gbGuideBounds.dS1 || dS > gbGuideBounds.dE1) || ( dE < gbGuideBounds.dS2 || dE > gbGuideBounds.dE2))))
|
||||
pGeomDB->Erase( nCurrId) ;
|
||||
}
|
||||
}
|
||||
// Inserisco le curve di sincronizzazione nel DB
|
||||
// [orientate da pCrvEdge1 a pCrvEdge2]
|
||||
for ( int i = 0 ; bOk && i < ssize( vSyncPoints) ; ++ i) {
|
||||
|
||||
Binary file not shown.
+6
-2
@@ -226,7 +226,7 @@ LuaTrimmingGetRuledBezier( lua_State* L)
|
||||
static int
|
||||
LuaTrimmingInterpolateSyncLines( lua_State* L)
|
||||
{
|
||||
// 7 parametri : nParentId, nFirstSyncId, nSecondSyncId, nBorder1Id, nBorder2Id, dEdgeLinTol, dEdgeAngTol
|
||||
// 9 parametri : nParentId, nFirstSyncId, nSecondSyncId, nBorder1Id, nBorder2Id, dEdgeLinTol, dEdgeAngTol, bShorterSide, bEraseOrigLines
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId) ;
|
||||
int nSync1Id ;
|
||||
@@ -241,12 +241,16 @@ LuaTrimmingInterpolateSyncLines( lua_State* L)
|
||||
LuaCheckParam( L, 6, dEdgeLinTol) ;
|
||||
double dEdgeAngTol ;
|
||||
LuaCheckParam( L, 7, dEdgeAngTol) ;
|
||||
bool bShorterSide = true ;
|
||||
LuaCheckParam( L, 8, bShorterSide) ;
|
||||
bool bEraseOrigLines = true ;
|
||||
LuaCheckParam( L, 9, bEraseOrigLines) ;
|
||||
LuaClearStack( L) ;
|
||||
// Interpolo le curve di sincronizzazione
|
||||
int nFirstId = GDB_ID_NULL ;
|
||||
int nCount = 0 ;
|
||||
bool bOk = ExeTrimmingInterpolateSyncLines( nParentId, nSync1Id, nSync2Id, nBorder1Id,
|
||||
nBorder2Id, dEdgeLinTol, dEdgeAngTol, nFirstId, nCount) ;
|
||||
nBorder2Id, dEdgeLinTol, dEdgeAngTol, bShorterSide, bEraseOrigLines, nFirstId, nCount) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
LuaSetParam( L, nFirstId) ;
|
||||
LuaSetParam( L, nCount) ;
|
||||
|
||||
Reference in New Issue
Block a user