EgtExecutor :
- modificata la chiamata alla GetSurfBezierRuledGuided.
This commit is contained in:
+22
-17
@@ -2770,8 +2770,8 @@ ExeCreateSurfBzRuled( int nParentId, int nCrvId1, int nCrvId2, int nRuledType, b
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeCreateSurfBzRuledGuided( int nParentId, int nCrvId1, int nCrvId2, int nLayGuides, int nLayNewGuides,
|
||||
const INTVECTOR& vShown, const INTINTVECTOR& vNewOrEdited, bool bCapEnds, double dLinTol)
|
||||
ExeCreateSurfBzRuledGuided( int nParentId, int nCrvId1, int nCrvId2, const BIPNTVECTOR& vGuidesCrv, const INTVECTOR& vShown,
|
||||
const INTVECTOR& vEdited, const INTVECTOR& vNew, bool bCapEnds, double dLinTol, int nLayGuides)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
@@ -2785,25 +2785,30 @@ ExeCreateSurfBzRuledGuided( int nParentId, int nCrvId1, int nCrvId2, int nLayGui
|
||||
bOk = bOk && ( CrvLoc1.Get() != nullptr) ;
|
||||
CurveLocal CrvLoc2( pGeomDB, nCrvId2, frLoc) ;
|
||||
bOk = bOk && ( CrvLoc2.Get() != nullptr) ;
|
||||
ICURVEPOVECTOR vCrv ;
|
||||
int nId = pGeomDB->GetFirstInGroup( nLayGuides) ;
|
||||
while( nId != GDB_ID_NULL && bOk) {
|
||||
CurveLocal CrvLocGuide( pGeomDB, nId, frLoc) ;
|
||||
bOk = bOk && ( CrvLocGuide.Get() != nullptr) ;
|
||||
vCrv.emplace_back( CrvLocGuide.Get()->Clone()) ;
|
||||
nId = pGeomDB->GetNext( nId) ;
|
||||
BIPNTVECTOR vCrv ;
|
||||
if( nLayGuides != -1 && vGuidesCrv.empty()) {
|
||||
int nId = pGeomDB->GetFirstInGroup( nLayGuides) ;
|
||||
while( nId != GDB_ID_NULL && bOk) {
|
||||
CurveLocal CrvLocGuide( pGeomDB, nId, frLoc) ;
|
||||
bOk = bOk && ( CrvLocGuide.Get() != nullptr) ;
|
||||
const ICurve* pCrv = CrvLocGuide.Get() ;
|
||||
Point3d ptStart ; pCrv->GetStartPoint( ptStart) ;
|
||||
ptStart.ToLoc( frLoc) ;
|
||||
Point3d ptEnd ; pCrv->GetEndPoint( ptEnd) ;
|
||||
ptEnd.ToLoc( frLoc) ;
|
||||
vCrv.emplace_back( ptStart, ptEnd) ;
|
||||
nId = pGeomDB->GetNext( nId) ;
|
||||
}
|
||||
}
|
||||
ICURVEPOVECTOR vNewCrv ;
|
||||
nId = pGeomDB->GetFirstInGroup( nLayNewGuides) ;
|
||||
while( nId != GDB_ID_NULL && bOk) {
|
||||
CurveLocal CrvLocGuide( pGeomDB, nId, frLoc) ;
|
||||
bOk = bOk && ( CrvLocGuide.Get() != nullptr) ;
|
||||
vNewCrv.emplace_back( CrvLocGuide.Get()->Clone()) ;
|
||||
nId = pGeomDB->GetNext( nId) ;
|
||||
else if( ! vGuidesCrv.empty()) {
|
||||
for( int i = 0 ; i < ssize( vGuidesCrv) ; ++i)
|
||||
vCrv.emplace_back( GetToLoc( vGuidesCrv[i].first, frLoc), GetToLoc( vGuidesCrv[i].second, frLoc)) ;
|
||||
}
|
||||
else
|
||||
return GDB_ID_NULL ;
|
||||
|
||||
// calcolo la superficie
|
||||
PtrOwner<ISurfBezier> pSbz( bOk ? GetSurfBezierRuledGuided( CrvLoc1, CrvLoc2, vCrv, vNewCrv, vShown, vNewOrEdited, dLinTol) : nullptr) ;
|
||||
PtrOwner<ISurfBezier> pSbz( bOk ? GetSurfBezierRuledGuided( CrvLoc1, CrvLoc2, vCrv, vShown, vEdited, vNew, dLinTol) : nullptr) ;
|
||||
bOk = bOk && ! IsNull( pSbz) ;
|
||||
// verifiche per orientamento se con tappi
|
||||
bool bWithCaps = false ;
|
||||
|
||||
+9
-15
@@ -1386,7 +1386,7 @@ LuaCreateSurfBzRuled( lua_State* L)
|
||||
static int
|
||||
LuaCreateSurfBzRuledGuided( lua_State* L)
|
||||
{
|
||||
// 4 o 5 o 6 parametri : ParentId, CrvId1, CrvId2, nLayGuides, nLayNewGuides, vShown, vNewOrEdited [, bCapEnds] [, dTol]
|
||||
// 7 o 8 o 9 parametri : ParentId, CrvId1, CrvId2, nLayGuides, vShown, vEdited, vNew [, bCapEnds] [, dTol]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
int nCrvId1 ;
|
||||
@@ -1395,14 +1395,12 @@ LuaCreateSurfBzRuledGuided( lua_State* L)
|
||||
LuaCheckParam( L, 3, nCrvId2)
|
||||
int nLayGuides ;
|
||||
LuaCheckParam( L, 4, nLayGuides)
|
||||
int nLayNewGuides ;
|
||||
LuaCheckParam( L, 5, nLayNewGuides)
|
||||
INTVECTOR vShown ;
|
||||
LuaCheckParam( L, 6, vShown)
|
||||
INTVECTOR vRespectiveOrigCrv ;
|
||||
LuaCheckParam( L, 7, vRespectiveOrigCrv)
|
||||
INTVECTOR vNewCrv ;
|
||||
LuaCheckParam( L, 8, vNewCrv)
|
||||
LuaCheckParam( L, 5, vShown)
|
||||
INTVECTOR vEdited ;
|
||||
LuaCheckParam( L, 6, vEdited)
|
||||
INTVECTOR vNew ;
|
||||
LuaCheckParam( L, 7, vNew)
|
||||
bool bCapEnds = false ;
|
||||
int nPar = 5 ;
|
||||
if ( LuaGetParam( L, nPar, bCapEnds))
|
||||
@@ -1410,14 +1408,10 @@ LuaCreateSurfBzRuledGuided( lua_State* L)
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
LuaGetParam( L, nPar, dLinTol) ;
|
||||
LuaClearStack( L) ;
|
||||
// compongo il vettore INTINTVECTOR
|
||||
INTINTVECTOR vNewOrEdited ;
|
||||
if( ssize(vRespectiveOrigCrv) != ssize( vNewCrv))
|
||||
return 1 ;
|
||||
for( int i = 0 ; i < ssize(vRespectiveOrigCrv) ; ++i)
|
||||
vNewOrEdited.emplace_back( vRespectiveOrigCrv[i], vNewCrv[i]) ;
|
||||
BIPNTVECTOR vGuides ;
|
||||
|
||||
// creo una surf bezier come rigata tra le due curve passate, usando le isocurve nel layer nLayIso
|
||||
int nId = ExeCreateSurfBzRuledGuided( nParentId, nCrvId1, nCrvId2, nLayGuides, nLayNewGuides, vShown, vNewOrEdited, bCapEnds, dLinTol) ;
|
||||
int nId = ExeCreateSurfBzRuledGuided( nParentId, nCrvId1, nCrvId2, vGuides, vShown, vEdited, vNew, bCapEnds, dLinTol, nLayGuides) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
|
||||
Reference in New Issue
Block a user