EgtExecutor :
- piccole aggiunte alla chiamata delle funzioni per le bezier - aggiunta della chiamata alla funzione SurfBzByPointCurve.
This commit is contained in:
@@ -1174,6 +1174,43 @@ ExeCreateSurfTmByRevolve( int nParentId, int nCrvId,
|
||||
return nNewId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeCreateSurfBzByPointCurve( int nParentId, int nCrvId, const Point3d& ptTop,
|
||||
bool bCapEnds, double dLinTol, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
bool bOk = true ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
bOk = bOk && pGeomDB->GetGroupGlobFrame( nParentId, frLoc) ;
|
||||
// recupero la curva in locale
|
||||
CurveLocal CrvLoc( pGeomDB, nCrvId, frLoc) ;
|
||||
bOk = bOk && ( CrvLoc.Get() != nullptr) ;
|
||||
// porto in locale punto e vettore asse
|
||||
Point3d ptAxL = GetPointLocal( pGeomDB, ptTop, nRefType, frLoc) ;
|
||||
// calcolo la superficie
|
||||
ISurfBezier* pSTM = ( bOk ? GetSurfBezierRuled( ptTop, CrvLoc, dLinTol) : nullptr) ;
|
||||
// inserisco la superficie nel DB
|
||||
int nNewId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, pSTM) : GDB_ID_NULL) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfBzByPointCurve(" + IdToString( nParentId) + "," +
|
||||
ToString( nCrvId) + ",{" +
|
||||
ToString( ptTop) + "},{" +
|
||||
( bCapEnds ? "true" : "false") + "," +
|
||||
ToString( dLinTol) + "," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Id=" + ToString( nNewId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo della nuova entità
|
||||
return nNewId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeCreateSurfTmByScrewing( int nParentId, int nCrvId,
|
||||
|
||||
+14
-1
@@ -739,12 +739,23 @@ ExeCurveCompoGetTempParam( int nId, DBLVECTOR& vParam, int nParamInd)
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeShowCurveBezierControlPoints( int nCrvId, int* pnCount)
|
||||
ExeShowCurveBezierControlPoints( int nCrvId, int nDestGrpId, int* pnCount)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la curva di bezier
|
||||
IGeoObj* pGeoObj = pGeomDB->GetGeoObj( nCrvId) ;
|
||||
if ( pGeoObj->GetType() != CRV_BEZIER)
|
||||
return GDB_ID_NULL ;
|
||||
// recupero il riferimento della curva
|
||||
Frame3d frCrv ;
|
||||
bool bOk = true ;
|
||||
bOk = bOk && pGeomDB->GetGlobFrame( nCrvId, frCrv) ;
|
||||
// recupero il riferimento di destinazione
|
||||
Frame3d frDest ;
|
||||
bOk = bOk && pGeomDB->GetGroupGlobFrame( nDestGrpId, frDest) ;
|
||||
if ( ! bOk)
|
||||
return GDB_ID_NULL ;
|
||||
int nType = pGeoObj->GetType() ;
|
||||
if ( nType == CRV_COMPO) {
|
||||
const ICurveComposite* pCrvCompo = GetCurveComposite( pGeoObj) ;
|
||||
@@ -769,6 +780,7 @@ ExeShowCurveBezierControlPoints( int nCrvId, int* pnCount)
|
||||
//else
|
||||
// pGeoPt->Set( pCrvBezier->GetControlPoint( i) * pCrvBezier->GetControlWeight( i)) ;
|
||||
pGeoPt->Set( pCrvBezier->GetControlPoint( i)) ;
|
||||
pGeoPt->LocToLoc( frCrv, frDest) ;
|
||||
int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nParent, pGeoPt) ;
|
||||
if ( nFirstId == GDB_ID_NULL)
|
||||
nFirstId = nId ;
|
||||
@@ -797,6 +809,7 @@ ExeShowCurveBezierControlPoints( int nCrvId, int* pnCount)
|
||||
//else
|
||||
// pGeoPt->Set( pCrvBezier->GetControlPoint( i) * pCrvBezier->GetControlWeight( i)) ;
|
||||
pGeoPt->Set( pCrvBezier->GetControlPoint( i)) ;
|
||||
pGeoPt->LocToLoc( frCrv, frDest) ;
|
||||
int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nParent, pGeoPt) ;
|
||||
if ( nFirstId == GDB_ID_NULL)
|
||||
nFirstId = nId ;
|
||||
|
||||
+12
-3
@@ -1727,7 +1727,7 @@ ExeExtractSurfBezierLoops( int nId, int nDestGrpId, int* pnCount)
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeShowSurfBezierControlPoints( int nSrfId, int* pnCount)
|
||||
ExeShowSurfBezierControlPoints( int nSrfId, int nDestGrpId, int* pnCount)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
@@ -1736,6 +1736,15 @@ ExeShowSurfBezierControlPoints( int nSrfId, int* pnCount)
|
||||
IGeoObj* pGeoObj = pGeomDB->GetGeoObj( nSrfId) ;
|
||||
if ( pGeoObj->GetType() != SRF_BEZIER)
|
||||
return GDB_ID_NULL ;
|
||||
// recupero il riferimento della superficie
|
||||
Frame3d frSurf ;
|
||||
bool bOk = true ;
|
||||
bOk = bOk && pGeomDB->GetGlobFrame( nSrfId, frSurf) ;
|
||||
// recupero il riferimento di destinazione
|
||||
Frame3d frDest ;
|
||||
bOk = bOk && pGeomDB->GetGroupGlobFrame( nDestGrpId, frDest) ;
|
||||
if ( ! bOk)
|
||||
return GDB_ID_NULL ;
|
||||
int nDegU = - 1, nDegV = - 1, nSpanU = - 1, nSpanV = - 1 ;
|
||||
bool bRat = false, bTrimmed = false ;
|
||||
ISurfBezier* pSrfBez = GetSurfBezier( pGeoObj) ;
|
||||
@@ -1743,10 +1752,10 @@ ExeShowSurfBezierControlPoints( int nSrfId, int* pnCount)
|
||||
int nFirstId = -1 ;
|
||||
int nCount = 0 ;
|
||||
for ( int i = 0 ; i < (nDegU * nSpanU + 1) * ( nDegV * nSpanV + 1) ; ++i) {
|
||||
bool bOk = true ;
|
||||
IGeoPoint3d* pGeoPt( CreateGeoPoint3d()) ;
|
||||
pGeoPt->Set( pSrfBez->GetControlPoint( i, &bOk)) ;
|
||||
int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nParent, pGeoPt) ;
|
||||
pGeoPt->LocToLoc( frSurf, frDest) ;
|
||||
int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nDestGrpId, pGeoPt) ;
|
||||
if ( nFirstId == GDB_ID_NULL)
|
||||
nFirstId = nId ;
|
||||
if ( nId != GDB_ID_NULL)
|
||||
|
||||
@@ -2921,7 +2921,7 @@ ExeCurveBezierIncreaseDegree( int nCrvId)
|
||||
// recupero la curva
|
||||
const ICurve* pCrv = GetCurve( pGeomDB->GetGeoObj( nCrvId)) ;
|
||||
if ( pCrv == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
return false ;
|
||||
//// recupero il riferimento della curva
|
||||
//Frame3d frCrv ;
|
||||
//if ( ! pGeomDB->GetGlobFrame( nCrvId, frCrv))
|
||||
@@ -2961,7 +2961,7 @@ ExeCurveBezierDecreaseDegree( int nCrvId, double dTol)
|
||||
// recupero la curva
|
||||
const ICurve* pCrv = GetCurve( pGeomDB->GetGeoObj( nCrvId)) ;
|
||||
if ( pCrv == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
return false ;
|
||||
//// recupero il riferimento della curva
|
||||
//Frame3d frCrv ;
|
||||
//if ( ! pGeomDB->GetGlobFrame( nCrvId, frCrv))
|
||||
|
||||
@@ -1128,16 +1128,14 @@ LuaCreateSurfBzByRevolve( lua_State* L)
|
||||
static int
|
||||
LuaCreateSurfBzByPointCurve( lua_State* L)
|
||||
{
|
||||
// 4 o 5 o 6 o 7 parametri : ParentId, CrvId, ptAx, vtAx [, bCapEnds] [, dTol] [, nRefType]
|
||||
// 3 o 4 o 5 o 6 parametri : ParentId, CrvId, ptAx, vtAx [, bCapEnds] [, dTol] [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
int nCrvId ;
|
||||
LuaCheckParam( L, 2, nCrvId)
|
||||
Point3d ptAx ;
|
||||
LuaCheckParam( L, 3, ptAx)
|
||||
Vector3d vtAx ;
|
||||
LuaCheckParam( L, 4, vtAx)
|
||||
int nPar = 5 ;
|
||||
Point3d ptTop ;
|
||||
LuaCheckParam( L, 3, ptTop)
|
||||
int nPar = 4 ;
|
||||
bool bCapEnds = false ;
|
||||
if ( LuaGetParam( L, nPar, bCapEnds))
|
||||
++ nPar ;
|
||||
@@ -1149,7 +1147,7 @@ LuaCreateSurfBzByPointCurve( lua_State* L)
|
||||
++ nPar ;
|
||||
LuaClearStack( L) ;
|
||||
// creo STM riempiendo un contorno piano
|
||||
int nId = ExeCreateSurfBzByRevolve( nParentId, nCrvId, ptAx, vtAx, bCapEnds, dLinTol, nRefType) ;
|
||||
int nId = ExeCreateSurfBzByPointCurve( nParentId, nCrvId, ptTop, bCapEnds, dLinTol, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
@@ -1228,6 +1226,7 @@ LuaInstallGdbCreateSurf( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBzByExtrusion", LuaCreateSurfBzByExtrusion) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBzByScrewing", LuaCreateSurfBzByScrewing) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBzByRevolve", LuaCreateSurfBzByRevolve) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBzByPointCurve", LuaCreateSurfBzByPointCurve) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBzRuled", LuaCreateSurfBzRuled) ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
+5
-3
@@ -588,12 +588,14 @@ LuaCurveCompoGetTempParam( lua_State* L)
|
||||
static int
|
||||
LuaShowCurveBezierControlPoints( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nCrvId
|
||||
// 2 parametri : nCrvId, nDestGrpId
|
||||
int nCrvId ;
|
||||
LuaCheckParam( L, 1, nCrvId)
|
||||
LuaClearStack( L) ;
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 2, nDestGrpId)
|
||||
LuaClearStack( L) ;
|
||||
int nCount = 0 ;
|
||||
int nId = ExeShowCurveBezierControlPoints( nCrvId, &nCount) ;
|
||||
int nId = ExeShowCurveBezierControlPoints( nCrvId, nDestGrpId, &nCount) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL) {
|
||||
LuaSetParam( L, nId) ;
|
||||
|
||||
+5
-3
@@ -1192,12 +1192,14 @@ LuaExtractSurfBezierLoops( lua_State* L)
|
||||
static int
|
||||
LuaShowSurfBezierControlPoints( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nCrvId
|
||||
// 2 parametri : nCrvId, nDestGrpId
|
||||
int nCrvId ;
|
||||
LuaCheckParam( L, 1, nCrvId)
|
||||
LuaClearStack( L) ;
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 2, nDestGrpId)
|
||||
LuaClearStack( L) ;
|
||||
int nCount = 0 ;
|
||||
int nId = ExeShowSurfBezierControlPoints( nCrvId, &nCount) ;
|
||||
int nId = ExeShowSurfBezierControlPoints( nCrvId, nDestGrpId, &nCount) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL) {
|
||||
LuaSetParam( L, nId) ;
|
||||
|
||||
Reference in New Issue
Block a user