Merge branch 'master' into ExtDimension_angular
This commit is contained in:
+8
-1
@@ -45,8 +45,15 @@ HMODULE s_hENs = nullptr ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
LoadNestingDll( ILogger* pLogger, const string& sKey, const string& sKey2)
|
||||
LoadNestingDll( ILogger* pLogger, const string& sKey, const string& sKey2, bool bNetHwKey)
|
||||
{
|
||||
// non ammessa con chiave di rete
|
||||
if ( bNetHwKey) {
|
||||
std::string sErr = "Warning on Key (ENS/NET)" ;
|
||||
LOG_ERROR( pLogger, sErr.c_str()) ;
|
||||
FreeNestingDll() ;
|
||||
return false ;
|
||||
}
|
||||
// verifico la chiave
|
||||
if ( ! TestKeyForENs( sKey, 0, pLogger)) {
|
||||
FreeNestingDll() ;
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ class ILogger ;
|
||||
class IAutoNester ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool LoadNestingDll( ILogger* pLogger, const std::string& sKey, const std::string& sKey2) ;
|
||||
bool LoadNestingDll( ILogger* pLogger, const std::string& sKey, const std::string& sKey2, bool bNetHwKey) ;
|
||||
bool FreeNestingDll( void) ;
|
||||
bool IsLoadedNestingDll( void) ;
|
||||
void MySetENsLogger( ILogger* pLogger) ;
|
||||
|
||||
@@ -25,6 +25,7 @@ const std::string& ExeGetIniFile( void) ;
|
||||
//----------------------------------------------------------------------------
|
||||
const std::string& ExeGetKey( void) ;
|
||||
const std::string& ExeGetNestKey( void) ;
|
||||
const std::string& ExeGetLockId( void) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
ILogger* GetLogger( void) ;
|
||||
|
||||
+75
-5
@@ -25,7 +25,9 @@
|
||||
#include "/EgtDev/Include/EGkCDeCylClosedSurfTm.h"
|
||||
#include "/EgtDev/Include/EGkCDeConeFrustumClosedSurfTm.h"
|
||||
#include "/EgtDev/Include/EGkCDeSpheClosedSurfTm.h"
|
||||
#include "/EgtDev/Include/EGkCDeClosedSurfTmClosedSurfTm.h"
|
||||
#include "/EgtDev/Include/EGkVolZmap.h"
|
||||
#include "/EgtDev/Include/EGkSurfLocal.h"
|
||||
#include "/EgtDev/Include/EGkStringUtils3d.h"
|
||||
|
||||
using namespace std ;
|
||||
@@ -67,7 +69,7 @@ MyCDeBoxVolZmap( const Frame3d& frBox, const Vector3d& vtDiag, int nZmapId, doub
|
||||
// porto in locale il riferimento (il vettore è già in locale a questo stesso riferimento)
|
||||
Frame3d frBoxL = GetFrameLocal( pGeomDB, frBox, nRefType, frLoc) ;
|
||||
// verifico la collisione
|
||||
return ( pVZM->AvoidBox( frBoxL, vtDiag, dSafeDist) ? 0 : 1) ;
|
||||
return ( pVZM->AvoidBox( frBoxL, vtDiag, dSafeDist, false) ? 0 : 1) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -138,7 +140,7 @@ MyCDeRectPrismoidVolZmap( const Frame3d& frPrismoid, double dBaseLenX, double dB
|
||||
// porto in locale il riferimento (il vettore è già in locale a questo stesso riferimento)
|
||||
Frame3d frPrismoidL = GetFrameLocal( pGeomDB, frPrismoid, nRefType, frLoc) ;
|
||||
// verifico la collisione
|
||||
return ( pVZM->AvoidRectPrismoid( frPrismoidL, dBaseLenX, dBaseLenY, dTopLenX, dTopLenY, dHeight, dSafeDist) ? 0 : 1) ;
|
||||
return ( pVZM->AvoidRectPrismoid( frPrismoidL, dBaseLenX, dBaseLenY, dTopLenX, dTopLenY, dHeight, dSafeDist, false) ? 0 : 1) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -211,7 +213,7 @@ MyCDeCylVolZmap( const Frame3d& frCyl, double dR, double dH, int nZmapId, double
|
||||
// porto in locale il riferimento
|
||||
Frame3d frCylL = GetFrameLocal( pGeomDB, frCyl, nRefType, frLoc) ;
|
||||
// verifico la collisione
|
||||
return ( pVZM->AvoidCylinder( frCylL, dR, dH, dSafeDist) ? 0 : 1) ;
|
||||
return ( pVZM->AvoidCylinder( frCylL, dR, dH, dSafeDist, false) ? 0 : 1) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -279,7 +281,7 @@ MyCDeConeVolZmap( const Frame3d& frCone, double dR1, double dR2, double dH, int
|
||||
// porto in locale il riferimento
|
||||
Frame3d frConeL = GetFrameLocal( pGeomDB, frCone, nRefType, frLoc) ;
|
||||
// verifico la collisione
|
||||
return ( pVZM->AvoidConeFrustum( frConeL, dR1, dR2, dH, dSafeDist) ? 0 : 1) ;
|
||||
return ( pVZM->AvoidConeFrustum( frConeL, dR1, dR2, dH, dSafeDist, false) ? 0 : 1) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -348,7 +350,7 @@ MyCDeSpheVolZmap( const Point3d& ptCen, double dRad, int nZmapId, double dSafeDi
|
||||
// porto in locale il centro della sfera
|
||||
Point3d ptCenL = GetPointLocal( pGeomDB, ptCen, nRefType, frLoc) ;
|
||||
// verifico la collisione
|
||||
return ( pVZM->AvoidSphere( ptCenL, dRad, dSafeDist) ? 0 : 1) ;
|
||||
return ( pVZM->AvoidSphere( ptCenL, dRad, dSafeDist, false) ? 0 : 1) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -374,3 +376,71 @@ ExeCDeSpheSolid( const Point3d& ptCen, double dR, int nSolidId, double dSafeDist
|
||||
// restituisco risultato
|
||||
return nRes ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
MyCDeClosedSurfTmClosedSurfTm( int nSurfTm1Id, int nSurfTm2Id, double dSafeDist)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, -1)
|
||||
// recupero il riferimento della seconda superficie
|
||||
Frame3d frSurf2 ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nSurfTm2Id, frSurf2))
|
||||
return -1 ;
|
||||
// recupero la prima superficie in locale alla seconda
|
||||
SurfLocal Surf1Loc( pGeomDB, nSurfTm1Id, frSurf2) ;
|
||||
const ISurfTriMesh* pStm1 = GetSurfTriMesh( Surf1Loc) ;
|
||||
if ( pStm1 == nullptr)
|
||||
return -1 ;
|
||||
// recupero la seconda superficie TriMesh
|
||||
const ISurfTriMesh* pStm2 = GetSurfTriMesh( pGeomDB->GetGeoObj( nSurfTm2Id)) ;
|
||||
if ( pStm2 == nullptr)
|
||||
return -1 ;
|
||||
// verifico la collisione
|
||||
return ( CDeClosedSurfTmClosedSurfTm( *pStm1, *pStm2, dSafeDist) ? 1 : 0) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
MyCDeClosedSurfTmVolZmap( int nSurfTmId, int nZmapId, double dSafeDist)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, -1)
|
||||
// recupero il riferimento dello Zmap
|
||||
Frame3d frZmap ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nZmapId, frZmap))
|
||||
return -1 ;
|
||||
// recupero la superficie in locale allo Zmap
|
||||
SurfLocal SurfLoc( pGeomDB, nSurfTmId, frZmap) ;
|
||||
const ISurfTriMesh* pStm = GetSurfTriMesh( SurfLoc) ;
|
||||
if ( pStm == nullptr)
|
||||
return -1 ;
|
||||
// recupero lo Zmap
|
||||
const IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( nZmapId)) ;
|
||||
if ( pVZM == nullptr)
|
||||
return -1 ;
|
||||
// verifico la collisione
|
||||
return ( pVZM->AvoidSurfTm( *pStm, dSafeDist, false) ? 0 : 1) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeCDeSolidSolid( int nSolid1Id, int nSolid2Id, double dSafeDist)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
int nRes = -1 ;
|
||||
if ( pGeomDB != nullptr && pGeomDB->GetGeoType( nSolid1Id) == SRF_TRIMESH && pGeomDB->GetGeoType( nSolid2Id) == SRF_TRIMESH)
|
||||
nRes = MyCDeClosedSurfTmClosedSurfTm( nSolid1Id, nSolid2Id, dSafeDist) ;
|
||||
else if ( pGeomDB != nullptr && pGeomDB->GetGeoType( nSolid1Id) == SRF_TRIMESH && pGeomDB->GetGeoType( nSolid2Id) == VOL_ZMAP)
|
||||
nRes = MyCDeClosedSurfTmVolZmap( nSolid1Id, nSolid2Id, dSafeDist) ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtCDeSolidSolid({" + IdToString( nSolid1Id) + "," +
|
||||
IdToString( nSolid2Id) + "," +
|
||||
ToString( dSafeDist) + ")" +
|
||||
" -- Res=" + ToString( nRes) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return nRes ;
|
||||
}
|
||||
|
||||
+2
-1
@@ -413,7 +413,8 @@ ExeAdvancedImport( const string& sFilePath, double dToler)
|
||||
sExec = "EgtConverterR32.exe" ;
|
||||
#endif
|
||||
string sCmdLine = "\"" + sExec + "\" \"" + sFilePath + "\" \"" + sFileOut + "\" \"" +
|
||||
ToString( dToler, 3) + "\" \"" + ToString( ExeGetDebugLevel()) +"\" \"" + ExeGetKey() + "\"" ;
|
||||
ToString( dToler, 3) + "\" \"" + ToString( ExeGetDebugLevel()) + "\" \"" +
|
||||
ExeGetKey() + "\" \"" + ExeGetLockId() + "\"" ;
|
||||
STARTUPINFO si ;
|
||||
PROCESS_INFORMATION pi ;
|
||||
ZeroMemory( &si, sizeof( si)) ;
|
||||
|
||||
+3
-4
@@ -131,7 +131,7 @@ ExeCreateGeoVector( int nParentId, const Vector3d& vtV, const Point3d& ptB, int
|
||||
Point3d ptBL = GetPointLocal( pGeomDB, ptB, nRefType, frLoc) ;
|
||||
// creo il vettore
|
||||
PtrOwner<IGeoVector3d> pGeoVct( CreateGeoVector3d()) ;
|
||||
bOk = bOk && !IsNull( pGeoVct) ;
|
||||
bOk = bOk && ! IsNull( pGeoVct) ;
|
||||
// setto il vettore (con il punto base)
|
||||
bOk = bOk && pGeoVct->Set( vtVL, ptBL) ;
|
||||
// inserisco il vettore nel DB
|
||||
@@ -759,15 +759,14 @@ MyCreateAngularDimensionFromLines( int nParentId, INTVECTOR vLineIds, const Poin
|
||||
return false ;
|
||||
if ( abs(( ptDim1 - ptP1L).Len() + ( ptCenL - ptDim1).Len() - ( ptCenL - ptP1L).Len()) < EPS_SMALL ||
|
||||
abs(( ptDim1 - ptP1L).Len() + ( ptCenL - ptP1L ).Len() - ( ptDim1 - ptCenL).Len()) < EPS_SMALL)
|
||||
// ptDim è dal lato di ptP1L
|
||||
ptP1L = ptP1L ;
|
||||
// ptDim è dal lato di ptP1L, quindi tengo ptP1L
|
||||
;
|
||||
else
|
||||
// ptDim è dal lato di ptP2L
|
||||
ptP1L = ptP2L ;
|
||||
if ( abs(( ptDim2 - ptP3L).Len() + ( ptCenL - ptDim2).Len() - ( ptCenL - ptP3L).Len()) < EPS_SMALL ||
|
||||
abs(( ptDim2 - ptP3L).Len() + ( ptCenL - ptP3L).Len() - ( ptDim2 - ptCenL).Len()) < EPS_SMALL)
|
||||
// ptDim è dal lato di ptP1L
|
||||
ptP3L = ptP3L ;
|
||||
else
|
||||
// ptDim è dal lato di ptP2L
|
||||
ptP3L = ptP4L ;
|
||||
|
||||
+42
-7
@@ -1091,6 +1091,44 @@ ExeCreateArc3P( int nParentId, const Point3d& ptP1,
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeCreateArc2PB( int nParentId, const Point3d& ptStart, const Point3d& ptEnd,
|
||||
double dBulge, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
bool bOk = pGeomDB->GetGroupGlobFrame( nParentId, frLoc) ;
|
||||
// porto in locale i punti, il versore normale e quelloe estrusione
|
||||
Point3d ptStartL = GetPointLocal( pGeomDB, ptStart, nRefType, frLoc) ;
|
||||
Point3d ptEndL = GetPointLocal( pGeomDB, ptEnd, nRefType, frLoc) ;
|
||||
Vector3d vtNormL = GetVectorLocal( pGeomDB, Z_AX, nRefType, frLoc) ;
|
||||
Vector3d vtExtrL = GetVectorLocal( pGeomDB, Z_AX, nRefType, frLoc) ;
|
||||
// creo l'arco (in casi particolari retta)
|
||||
PtrOwner<ICurve> pCrv( bOk ? GetArc2PNB( ptStartL, ptEndL, vtNormL, dBulge) : nullptr) ;
|
||||
bOk = bOk && ! IsNull( pCrv) ;
|
||||
// assegno il versore estrusione
|
||||
bOk = bOk && pCrv->SetExtrusion( vtExtrL) ;
|
||||
// inserisco l'arco nel DB
|
||||
int nId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrv)) : GDB_ID_NULL) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtArc2PB(" + IdToString( nParentId) + ",{" +
|
||||
ToString( ptStart) + "},{" +
|
||||
ToString( ptEnd) + "}," +
|
||||
ToString( dBulge) + "," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Id=" + ToString( nId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo della nuova entità
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeCreateArc2PD( int nParentId, const Point3d& ptStart, const Point3d& ptEnd,
|
||||
@@ -1099,20 +1137,17 @@ ExeCreateArc2PD( int nParentId, const Point3d& ptStart, const Point3d& ptEnd,
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
// creo l'arco (in casi particolari retta)
|
||||
PtrOwner<ICurve> pCrv ;
|
||||
bool bOk = true ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
bOk = bOk && pGeomDB->GetGroupGlobFrame( nParentId, frLoc) ;
|
||||
bool bOk = pGeomDB->GetGroupGlobFrame( nParentId, frLoc) ;
|
||||
// porto in locale i punti, il versore iniziale, quello normale e il versore estrusione
|
||||
Point3d ptStartL = GetPointLocal( pGeomDB, ptStart, nRefType, frLoc) ;
|
||||
Point3d ptEndL = GetPointLocal( pGeomDB, ptEnd, nRefType, frLoc) ;
|
||||
Vector3d vtDirSL = GetVectorLocal( pGeomDB, FromPolar( 1, dDirSDeg), nRefType, frLoc) ;
|
||||
Vector3d vtNormL = GetVectorLocal( pGeomDB, Z_AX, nRefType, frLoc) ;
|
||||
Vector3d vtExtrL = GetVectorLocal( pGeomDB, Z_AX, nRefType, frLoc) ;
|
||||
// setto l'arco
|
||||
pCrv.Set( GetArc2PVN( ptStartL, ptEndL, vtDirSL, vtNormL)) ;
|
||||
// creo l'arco (in casi particolari retta)
|
||||
PtrOwner<ICurve> pCrv( bOk ? GetArc2PVN( ptStartL, ptEndL, vtDirSL, vtNormL) : nullptr) ;
|
||||
bOk = bOk && ! IsNull( pCrv) ;
|
||||
// assegno il versore estrusione
|
||||
bOk = bOk && pCrv->SetExtrusion( vtExtrL) ;
|
||||
@@ -1948,7 +1983,7 @@ ExeCreateCurveCompoByInterpolation( int nParentId, const PolyLine& PL, int nType
|
||||
bFound ;
|
||||
bFound = PL.GetNextPoint( ptP))
|
||||
crvByInterp.AddPoint( ptP) ;
|
||||
PtrOwner<ICurve> pCrvCompo( crvByInterp.GetCurve( nMethod, nType)) ;
|
||||
PtrOwner<ICurve> pCrvCompo( crvByInterp.GetCurve( nMethod, nCrvType)) ;
|
||||
bOk = bOk && ! IsNull( pCrvCompo) ;
|
||||
// assegno il versore estrusione
|
||||
bOk = bOk && pCrvCompo->SetExtrusion( Z_AX) ;
|
||||
|
||||
+92
-2
@@ -56,8 +56,7 @@ ExeCreateSurfFrRectangle( int nParentId, const Point3d& ptIni, const Point3d& pt
|
||||
if ( ( frEnt.VersZ() * vtZL) < 0)
|
||||
frEnt.PseudoMirror( frEnt.Orig(), frEnt.VersZ()) ;
|
||||
// ricavo le dimensioni della base
|
||||
Point3d ptCrossI = ptCrossL ;
|
||||
ptCrossI.ToLoc( frEnt) ;
|
||||
Point3d ptCrossI = GetToLoc( ptCrossL, frEnt) ;
|
||||
double dWidth = ptCrossI.x ;
|
||||
double dLen = ptCrossI.y ;
|
||||
// creo il rettangolo nel suo riferimento intrinseco
|
||||
@@ -863,6 +862,97 @@ ExeCreateSurfTmSphere( int nParentId, const Point3d& ptOrig,
|
||||
return nNewId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeCreateSurfTmTriangle( int nParentId, const Point3d& ptP1, const Point3d& ptP2, const Point3d& ptP3, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
bool bOk = pGeomDB->GetGroupGlobFrame( nParentId, frLoc) ;
|
||||
// porto in locale i punti
|
||||
Point3d ptP1L = GetPointLocal( pGeomDB, ptP1, nRefType, frLoc) ;
|
||||
Point3d ptP2L = GetPointLocal( pGeomDB, ptP2, nRefType, frLoc) ;
|
||||
Point3d ptP3L = GetPointLocal( pGeomDB, ptP3, nRefType, frLoc) ;
|
||||
// creo la superficie trimesh
|
||||
PtrOwner<ISurfTriMesh> pStm( CreateSurfTriMesh()) ;
|
||||
bOk = bOk && ! IsNull( pStm) ;
|
||||
// assegno il triangolo
|
||||
if ( bOk) {
|
||||
pStm->Init( 3, 1, 1) ;
|
||||
int vV[3]{ pStm->AddVertex( ptP1L),
|
||||
pStm->AddVertex( ptP2L),
|
||||
pStm->AddVertex( ptP3L)} ;
|
||||
bOk = ( pStm->AddTriangle( vV) != SVT_NULL) && pStm->AdjustTopology() ;
|
||||
}
|
||||
// inserisco la superficie nel DB
|
||||
int nNewId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pStm)) : GDB_ID_NULL) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmTriangle(" + IdToString( nParentId) + ",{" +
|
||||
ToString( ptP1) + "},{" +
|
||||
ToString( ptP2) + "},{" +
|
||||
ToString( ptP3) + "}," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Id=" + ToString( nNewId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo della nuova entità
|
||||
return nNewId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeCreateSurfTmRectangle( int nParentId, const Point3d& ptO, const Point3d& ptL, const Point3d& ptT, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
bool bOk = pGeomDB->GetGroupGlobFrame( nParentId, frLoc) ;
|
||||
// porto in locale i punti
|
||||
Point3d ptOL = GetPointLocal( pGeomDB, ptO, nRefType, frLoc) ;
|
||||
Point3d ptLL = GetPointLocal( pGeomDB, ptL, nRefType, frLoc) ;
|
||||
Point3d ptTL = GetPointLocal( pGeomDB, ptT, nRefType, frLoc) ;
|
||||
// modifico il punto trasversale per metterlo perpendicolare al lato Lungo
|
||||
ptTL -= ParallCompo( ptTL - ptOL, ptLL - ptOL) ;
|
||||
// calcolo il quarto punto
|
||||
Point3d ptVL = ptTL + ( ptLL - ptOL) ;
|
||||
// creo la superficie trimesh
|
||||
PtrOwner<ISurfTriMesh> pStm( CreateSurfTriMesh()) ;
|
||||
bOk = bOk && ! IsNull( pStm) ;
|
||||
// assegno il triangolo
|
||||
if ( bOk) {
|
||||
pStm->Init( 4, 2, 1) ;
|
||||
int vV[4]{ pStm->AddVertex( ptOL),
|
||||
pStm->AddVertex( ptLL),
|
||||
pStm->AddVertex( ptTL),
|
||||
pStm->AddVertex( ptVL)} ;
|
||||
int vV1[3]{ vV[0], vV[1], vV[2] } ;
|
||||
int vV2[3]{ vV[2], vV[1], vV[3] } ;
|
||||
bOk = ( pStm->AddTriangle( vV1) != SVT_NULL) && ( pStm->AddTriangle( vV2) != SVT_NULL) && pStm->AdjustTopology() ;
|
||||
}
|
||||
// inserisco la superficie nel DB
|
||||
int nNewId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pStm)) : GDB_ID_NULL) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmRectangle(" + IdToString( nParentId) + ",{" +
|
||||
ToString( ptO) + "},{" +
|
||||
ToString( ptL) + "},{" +
|
||||
ToString( ptT) + "}," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Id=" + ToString( nNewId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo della nuova entità
|
||||
return nNewId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeCreateSurfTmByFlatContour( int nParentId, int nCrvId, double dLinTol)
|
||||
|
||||
@@ -188,6 +188,8 @@ ExeCurveIsACircle( int nId, Point3d& ptCen, Vector3d& vtN, double& dRad, bool& b
|
||||
bCCW = ( pArc->GetAngCenter() > 0) ;
|
||||
return true ;
|
||||
}
|
||||
else
|
||||
return false ;
|
||||
}
|
||||
case CRV_COMPO :
|
||||
{ ICurveComposite* pCompo = GetCurveComposite( pGObj) ;
|
||||
|
||||
+74
-6
@@ -28,6 +28,7 @@
|
||||
#include "/EgtDev/Include/EGkSurfFlatRegion.h"
|
||||
#include "/EgtDev/Include/EGkSurfTriMesh.h"
|
||||
#include "/EgtDev/Include/EGkSurfBezier.h"
|
||||
#include "/EgtDev/Include/EGkDistPointSurfTm.h"
|
||||
#include "/EgtDev/Include/EGkSurfLocal.h"
|
||||
#include "/EgtDev/Include/EGkStringUtils3d.h"
|
||||
|
||||
@@ -367,16 +368,16 @@ ExeSurfFrGetZigZagInfill( int nId, int nDestGrpId, double dStep, double dAng, bo
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeSurfTmPartCount( int nId)
|
||||
ExeSurfTmVertexCount( int nId)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, -1)
|
||||
VERIFY_GEOMDB( pGeomDB, 0)
|
||||
// recupero la superficie trimesh
|
||||
const ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pStm == nullptr)
|
||||
return -1 ;
|
||||
// recupero il numero di parti
|
||||
return pStm->GetPartCount() ;
|
||||
return 0 ;
|
||||
// recupero il numero di vertici
|
||||
return pStm->GetVertexCount() ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -393,6 +394,59 @@ ExeSurfTmFacetCount( int nId)
|
||||
return pStm->GetFacetCount() ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeSurfTmPartCount( int nId)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, -1)
|
||||
// recupero la superficie trimesh
|
||||
const ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pStm == nullptr)
|
||||
return -1 ;
|
||||
// recupero il numero di parti
|
||||
return pStm->GetPartCount() ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfTmGetVertex( int nId, int nVert, int nRefId, Point3d& ptVert)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la superficie trimesh
|
||||
const ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pStm == nullptr)
|
||||
return false ;
|
||||
// recupero il vertice di indice dato
|
||||
if ( ! pStm->GetVertex( nVert, ptVert))
|
||||
return false ;
|
||||
// gestione trasformazioni ( eventuali)
|
||||
return TransformPoint( pGeomDB, nId, nRefId, ptVert) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfTmGetNearestVertex( int nId, const Point3d& ptNear, int nRefId, int& nVert, Point3d& ptVert)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la superficie trimesh
|
||||
const ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pStm == nullptr)
|
||||
return false ;
|
||||
// porto il punto Near nel riferimento dell'entità
|
||||
Point3d ptNearL = ptNear ;
|
||||
if ( ! InvTransformPoint( pGeomDB, nId, nRefId, ptNearL))
|
||||
return false ;
|
||||
// recupero il vertice più vicino della superficie
|
||||
nVert = GetSurfTmNearestVertex( ptNearL, *pStm) ;
|
||||
if ( ! pStm->GetVertex( nVert, ptVert))
|
||||
return false ;
|
||||
// gestione trasformazioni ( eventuali)
|
||||
return TransformPoint( pGeomDB, nId, nRefId, ptVert) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeSurfTmFacetFromTria( int nId, int nT)
|
||||
@@ -936,6 +990,20 @@ ExeCopySurfTmFacet( int nId, int nFacet, int nDestGrpId)
|
||||
return nFacId ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfTmGetAllVertInFacet( int nId, int nFacet, INTVECTOR& vVert)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la superficie TriMesh
|
||||
const ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pStm == nullptr)
|
||||
return false ;
|
||||
// recupero l'elenco dei vertici nella faccia
|
||||
return pStm->GetAllVertInFacet( nFacet, vVert) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfTmGetFacetBBox( int nId, int nFacet, int nFlag, BBox3d& b3Box)
|
||||
@@ -1344,4 +1412,4 @@ ExeExtractSurfBezierLoops( int nId, int nDestGrpId, int* pnCount)
|
||||
if ( pnCount != nullptr)
|
||||
*pnCount = nCount ;
|
||||
return nFirstId ;
|
||||
}
|
||||
}
|
||||
|
||||
+101
-12
@@ -31,12 +31,14 @@
|
||||
#include "/EgtDev/Include/EGkOffsetCurve.h"
|
||||
#include "/EgtDev/Include/EGkMedialAxis.h"
|
||||
#include "/EgtDev/Include/EGkChainCurves.h"
|
||||
#include "/EgtDev/Include/EGkProjectCurveSurfTm.h"
|
||||
#include "/EgtDev/Include/EGkSurfFlatRegion.h"
|
||||
#include "/EgtDev/Include/EGkExtTExt.h"
|
||||
#include "/EgtDev/Include/EGkGdbIterator.h"
|
||||
#include "/EgtDev/Include/EGkStringUtils3d.h"
|
||||
#include "/EgtDev/Include/EGkIntervals.h"
|
||||
#include "/EgtDev/Include/EGkPolygon3d.h"
|
||||
#include "/EgtDev/Include/EGkGeoVector3d.h"
|
||||
#include "/EgtDev/Include/EgtPointerOwner.h"
|
||||
#include <functional>
|
||||
|
||||
@@ -186,7 +188,7 @@ ExeApproxCurve( int nId, int nApprType, double dLinTol)
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
// recupero la curva
|
||||
ICurve* pCurve = GetCurve( pGeomDB->GetGeoObj( nId)) ;
|
||||
const ICurve* pCurve = GetCurve( pGeomDB->GetGeoObj( nId)) ;
|
||||
bool bOk = ( pCurve != nullptr) ;
|
||||
// eseguo l'approssimazione
|
||||
PtrOwner<ICurveComposite> pCC( CreateCurveComposite()) ;
|
||||
@@ -292,9 +294,9 @@ ExeChangeClosedCurveStart( int nId, double dU)
|
||||
bOk = bOk && ( pCurve != nullptr) ;
|
||||
// cambio il punto iniziale
|
||||
if ( bOk && pCurve->GetType() == CRV_ARC)
|
||||
bOk = bOk && dynamic_cast<ICurveArc*>(pCurve)->ChangeStartPoint(dU) ;
|
||||
bOk = bOk && GetCurveArc( pCurve)->ChangeStartPoint(dU) ;
|
||||
else if ( bOk && pCurve->GetType() == CRV_COMPO)
|
||||
bOk = bOk && dynamic_cast<ICurveComposite*>(pCurve)->ChangeStartPoint(dU) ;
|
||||
bOk = bOk && GetCurveComposite( pCurve)->ChangeStartPoint(dU) ;
|
||||
else
|
||||
bOk = false ;
|
||||
ExeSetModified() ;
|
||||
@@ -331,9 +333,9 @@ ExeChangeClosedCurveStartPoint( int nId, const Point3d& ptP, int nRefType)
|
||||
bOk = bOk && distPC.GetParamAtMinDistPoint( 0, dPar, nFlag) ;
|
||||
// cambio il punto iniziale
|
||||
if ( bOk && pCurve->GetType() == CRV_ARC)
|
||||
bOk = bOk && dynamic_cast<ICurveArc*>(pCurve)->ChangeStartPoint(dPar) ;
|
||||
bOk = bOk && GetCurveArc(pCurve)->ChangeStartPoint(dPar) ;
|
||||
else if ( bOk && pCurve->GetType() == CRV_COMPO)
|
||||
bOk = bOk && dynamic_cast<ICurveComposite*>(pCurve)->ChangeStartPoint(dPar) ;
|
||||
bOk = bOk && GetCurveComposite( pCurve)->ChangeStartPoint(dPar) ;
|
||||
else
|
||||
bOk = false ;
|
||||
ExeSetModified() ;
|
||||
@@ -2135,7 +2137,7 @@ bool
|
||||
ExeMergeCurvesInCurveCompo( int nId, double dLinTol, bool bStartEnd)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la curva composita
|
||||
ICurveComposite* pCompo = GetCurveComposite( pGeomDB->GetGeoObj( nId)) ;
|
||||
bool bOk = ( pCompo != nullptr) ;
|
||||
@@ -2158,7 +2160,7 @@ bool
|
||||
ExeRemoveCurveCompoUndercutOnY( int nId, double dLinTol)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la curva composita
|
||||
ICurveComposite* pCompo = GetCurveComposite( pGeomDB->GetGeoObj( nId)) ;
|
||||
bool bOk = ( pCompo != nullptr) ;
|
||||
@@ -2180,7 +2182,7 @@ static bool
|
||||
MyChainCurvesInGroup( int nGroupId, const Point3d& ptNear, bool bAllowInvert, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
nGroupId = AdjustId( nGroupId) ;
|
||||
// recupero il riferimento del gruppo
|
||||
Frame3d frGrp ;
|
||||
@@ -2233,11 +2235,11 @@ MyChainCurvesInGroup( int nGroupId, const Point3d& ptNear, bool bAllowInvert, in
|
||||
bool
|
||||
ExeChainCurvesInGroup( int nGroupId, const Point3d& ptNear, int nRefType)
|
||||
{
|
||||
bool bOk = MyChainCurvesInGroup(nGroupId, ptNear, true, nRefType) ;
|
||||
bool bOk = MyChainCurvesInGroup( nGroupId, ptNear, true, nRefType) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtChainCurvesInGroup(" + ToString( nGroupId) + "," +
|
||||
string sLua = "EgtChainCurvesInGroup(" + ToString( nGroupId) + ",{" +
|
||||
ToString( ptNear) + "}," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
@@ -2250,11 +2252,11 @@ ExeChainCurvesInGroup( int nGroupId, const Point3d& ptNear, int nRefType)
|
||||
bool
|
||||
ExeReorderCurvesInGroup( int nGroupId, const Point3d& ptNear, int nRefType)
|
||||
{
|
||||
bool bOk = MyChainCurvesInGroup(nGroupId, ptNear, false, nRefType) ;
|
||||
bool bOk = MyChainCurvesInGroup( nGroupId, ptNear, false, nRefType) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtReorderCurvesInGroup(" + ToString( nGroupId) + "," +
|
||||
string sLua = "EgtReorderCurvesInGroup(" + ToString( nGroupId) + ",{" +
|
||||
ToString( ptNear) + "}," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
@@ -2262,3 +2264,90 @@ ExeReorderCurvesInGroup( int nGroupId, const Point3d& ptNear, int nRefType)
|
||||
}
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static bool
|
||||
MyProjectCurveOnSurfTm( int nCurveId, int nSurfTmId, const Vector3d& vtDir, int nDestGrpId, double dLinTol, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la curva e il suo riferimento
|
||||
const ICurve* pCrv = GetCurve( pGeomDB->GetGeoObj( nCurveId)) ;
|
||||
if ( pCrv == nullptr)
|
||||
return false ;
|
||||
Frame3d frCrv ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nCurveId, frCrv))
|
||||
return false ;
|
||||
// recupero la superficie trimesh e il suo riferimento
|
||||
const ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nSurfTmId)) ;
|
||||
if ( pStm == nullptr)
|
||||
return false ;
|
||||
Frame3d frStm ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nSurfTmId, frStm))
|
||||
return false ;
|
||||
// recupero il riferimento del gruppo di destinazione
|
||||
nDestGrpId = AdjustId( nDestGrpId) ;
|
||||
Frame3d frDest ;
|
||||
if ( ! pGeomDB->GetGroupGlobFrame( nDestGrpId, frDest))
|
||||
return false ;
|
||||
// porto la curva e il vettore nel riferimento della superficie
|
||||
CurveLocal CrvLoc( pCrv, frCrv, frStm) ;
|
||||
if ( CrvLoc.Get() == nullptr)
|
||||
return false ;
|
||||
Vector3d vtDirL = GetVectorLocal( pGeomDB, vtDir, nRefType, frCrv) ;
|
||||
vtDirL.LocToLoc( frCrv, frStm) ;
|
||||
// eseguo la proiezione
|
||||
PNT5AXVECTOR vPt5ax ;
|
||||
if ( ! ProjectCurveOnSurfTm( *CrvLoc.Get(), *pStm, vtDirL, dLinTol, vPt5ax))
|
||||
return false ;
|
||||
// inserisco la composita nel gruppo destinazione
|
||||
PtrOwner<ICurveComposite> pCompo ;
|
||||
for ( const auto& Pt5ax : vPt5ax) {
|
||||
if ( IsNull( pCompo)) {
|
||||
pCompo.Set( CreateCurveComposite()) ;
|
||||
if ( IsNull( pCompo))
|
||||
return false ;
|
||||
pCompo->AddPoint( GetLocToLoc( Pt5ax.ptP, frStm, frDest)) ;
|
||||
}
|
||||
else
|
||||
pCompo->AddLine( GetLocToLoc( Pt5ax.ptP, frStm, frDest)) ;
|
||||
}
|
||||
int nCompoId = pGeomDB->AddGeoObj( GDB_ID_NULL, nDestGrpId, Release( pCompo)) ;
|
||||
if ( nCompoId == GDB_ID_NULL)
|
||||
return false ;
|
||||
// aggiungo i versori nel gruppo destinazione
|
||||
for ( const auto& Pt5ax : vPt5ax) {
|
||||
PtrOwner<IGeoVector3d> pGeoVct( CreateGeoVector3d()) ;
|
||||
if ( IsNull( pGeoVct))
|
||||
return false ;
|
||||
pGeoVct->Set( 10 * GetLocToLoc( Pt5ax.vtDir, frStm, frDest), GetLocToLoc( Pt5ax.ptP, frStm, frDest)) ;
|
||||
int nNewId = pGeomDB->AddGeoObj( GDB_ID_NULL, nDestGrpId, Release( pGeoVct)) ;
|
||||
if ( nNewId == GDB_ID_NULL)
|
||||
return false ;
|
||||
pGeomDB->SetInfo( nNewId, "Par", Pt5ax.dPar) ;
|
||||
pGeomDB->SetInfo( nNewId, "Flag", Pt5ax.nFlag) ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
ExeProjectCurveOnSurfTm( int nCurveId, int nSurfTmId, const Vector3d& vtDir, int nDestGrpId, double dLinTol, int nRefType)
|
||||
{
|
||||
bool bOk = MyProjectCurveOnSurfTm( nCurveId, nSurfTmId, vtDir, nDestGrpId, dLinTol, nRefType) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtProjectCurveOnSurfTm(" + ToString( nCurveId) + "," +
|
||||
ToString( nSurfTmId) + ",{" +
|
||||
ToString( vtDir) + "}," +
|
||||
ToString( nDestGrpId) + "," +
|
||||
ToString( dLinTol) + "," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
return bOk ;
|
||||
|
||||
}
|
||||
|
||||
+42
-5
@@ -410,6 +410,43 @@ ExeSurfFrRotateSimpleNoCollision( int nId1, int nId2, const Point3d& ptCen, doub
|
||||
return ( bOk && CAvSimpleSurfFrMove( *pSfr1, *pSfr2L).Rotate(ptCenL, dAngDeg)) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfTmMoveVertex( int nId, int nVert, const Point3d& ptNewVert, int nRefType, bool bUpdate)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
// recupero la superficie
|
||||
ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ;
|
||||
bool bOk = ( pStm != nullptr) ;
|
||||
// recupero il riferimento in cui è immersa la superficie
|
||||
Frame3d frStm ;
|
||||
bOk = bOk && pGeomDB->GetGlobFrame( nId, frStm) ;
|
||||
// eseguo la modifica
|
||||
if ( bOk) {
|
||||
// porto il nuovo vertice nel riferimento della superficie
|
||||
Point3d ptNewVertL = GetPointLocal( pGeomDB, ptNewVert, nRefType, frStm) ;
|
||||
// eseguo la modifica
|
||||
bOk = pStm->MoveVertex( nVert, ptNewVertL) ;
|
||||
// se richiesto, semplificazione della trimesh
|
||||
if ( bUpdate)
|
||||
bOk = bOk && pStm->DoCompacting() ;
|
||||
}
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmMoveVertex(" + IdToString( nId) + "," +
|
||||
ToString( nVert) + ",{" +
|
||||
ToString( ptNewVert) + "}," +
|
||||
RefTypeToString( nRefType) + "," +
|
||||
( bUpdate ? "true" : "false") + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
MySurfTmToTriangles( int nId, int& nCount)
|
||||
@@ -468,7 +505,7 @@ ExeSurfTmToTriangles( int nId, int* pnCount)
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmToTriangles(" + ToString( nId) + ")" +
|
||||
string sLua = "EgtSurfTmToTriangles(" + IdToString( nId) + ")" +
|
||||
" -- Id1=" + ToString( nFirstId) + ",Nbr=" + ToString( nCount) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
@@ -492,7 +529,7 @@ ExeSurfTmRemoveFacet( int nId, int nFacet)
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmRemoveFacet(" + ToString( nId) + "," +
|
||||
string sLua = "EgtSurfTmRemoveFacet(" + IdToString( nId) + "," +
|
||||
ToString( nFacet) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
@@ -515,7 +552,7 @@ ExeSurfTmSwapFacets( int nId, int nFacet1, int nFacet2)
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmSwapFacets(" + ToString( nId) + "," +
|
||||
string sLua = "EgtSurfTmSwapFacets(" + IdToString( nId) + "," +
|
||||
ToString( nFacet1) + "," +
|
||||
ToString( nFacet2) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
@@ -539,7 +576,7 @@ ExeSurfTmRemovePart( int nId, int nPart)
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmRemovePart(" + ToString( nId) + "," +
|
||||
string sLua = "EgtSurfTmRemovePart(" + IdToString( nId) + "," +
|
||||
ToString( nPart) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
@@ -571,7 +608,7 @@ ExeCutSurfTmPlane( int nId, const Point3d& ptOn, const Vector3d& vtN, bool bSave
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtCutSurfTmPlane(" + ToString( nId) + ",{" +
|
||||
string sLua = "EgtCutSurfTmPlane(" + IdToString( nId) + ",{" +
|
||||
ToString( ptOn) + "},{" +
|
||||
ToString( vtN) + "}," +
|
||||
( bSaveOnEq ? "true" : "false") + "," +
|
||||
|
||||
+15
-8
@@ -15,6 +15,7 @@
|
||||
#include "stdafx.h"
|
||||
#include "EXE.h"
|
||||
#include "EXE_Macro.h"
|
||||
#include "GeoTools.h"
|
||||
#include "AuxTools.h"
|
||||
#include "/EgtDev/Include/EXeExecutor.h"
|
||||
#include "/EgtDev/Include/EGkStringUtils3d.h"
|
||||
@@ -254,6 +255,7 @@ ExeCopy( int nSouId, int nRefId, int nSonBeforeAfter)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nRefId = AdjustId( nRefId) ;
|
||||
// eseguo la copia
|
||||
int nNewId = pGeomDB->Copy( nSouId, GDB_ID_NULL, nRefId, nSonBeforeAfter) ;
|
||||
pGeomDB->RemoveInfo( nNewId, GDB_SI_LIST) ;
|
||||
@@ -264,11 +266,11 @@ ExeCopy( int nSouId, int nRefId, int nSonBeforeAfter)
|
||||
string sLua ;
|
||||
if ( nSonBeforeAfter == GDB_LAST_SON)
|
||||
sLua = "EgtCopy(" + ToString( nSouId) + "," +
|
||||
ToString( nRefId) + ")" +
|
||||
IdToString( nRefId) + ")" +
|
||||
" -- Id=" + ToString( nNewId) ;
|
||||
else
|
||||
sLua = "EgtCopy(" + ToString( nSouId) + "," +
|
||||
ToString( nRefId) + "," +
|
||||
IdToString( nRefId) + "," +
|
||||
InsToString( nSonBeforeAfter) + ")" +
|
||||
" -- Id=" + ToString( nNewId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
@@ -283,6 +285,7 @@ ExeCopyGlob( int nSouId, int nRefId, int nSonBeforeAfter)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nRefId = AdjustId( nRefId) ;
|
||||
// eseguo la copia mantenendo la posizione in globale
|
||||
int nNewId = pGeomDB->CopyGlob( nSouId, GDB_ID_NULL, nRefId, nSonBeforeAfter) ;
|
||||
pGeomDB->RemoveInfo( nNewId, GDB_SI_LIST) ;
|
||||
@@ -293,11 +296,11 @@ ExeCopyGlob( int nSouId, int nRefId, int nSonBeforeAfter)
|
||||
string sLua ;
|
||||
if ( nSonBeforeAfter == GDB_LAST_SON)
|
||||
sLua = "EgtCopyGlob(" + ToString( nSouId) + "," +
|
||||
ToString( nRefId) + ")" +
|
||||
IdToString( nRefId) + ")" +
|
||||
" -- Id=" + ToString( nNewId) ;
|
||||
else
|
||||
sLua = "EgtCopyGlob(" + ToString( nSouId) + "," +
|
||||
ToString( nRefId) + "," +
|
||||
IdToString( nRefId) + "," +
|
||||
InsToString( nSonBeforeAfter) + ")" +
|
||||
" -- Id=" + ToString( nNewId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
@@ -312,6 +315,7 @@ ExeRelocate( int nSouId, int nRefId, int nSonBeforeAfter)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
nRefId = AdjustId( nRefId) ;
|
||||
// eseguo la rilocazione
|
||||
bool bOk = pGeomDB->Relocate( nSouId, nRefId, nSonBeforeAfter) ;
|
||||
ExeSetModified() ;
|
||||
@@ -320,11 +324,11 @@ ExeRelocate( int nSouId, int nRefId, int nSonBeforeAfter)
|
||||
string sLua ;
|
||||
if ( nSonBeforeAfter == GDB_LAST_SON)
|
||||
sLua = "EgtRelocate(" + ToString( nSouId) + "," +
|
||||
ToString( nRefId) + ")" +
|
||||
IdToString( nRefId) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
else
|
||||
sLua = "EgtRelocate(" + ToString( nSouId) + "," +
|
||||
ToString( nRefId) + "," +
|
||||
IdToString( nRefId) + "," +
|
||||
InsToString( nSonBeforeAfter) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
@@ -339,6 +343,7 @@ ExeRelocateGlob( int nSouId, int nRefId, int nSonBeforeAfter)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
nRefId = AdjustId( nRefId) ;
|
||||
// eseguo la rilocazione mantenendo la posizione in globale
|
||||
bool bOk = pGeomDB->RelocateGlob( nSouId, nRefId, nSonBeforeAfter) ;
|
||||
ExeSetModified() ;
|
||||
@@ -347,11 +352,11 @@ ExeRelocateGlob( int nSouId, int nRefId, int nSonBeforeAfter)
|
||||
string sLua ;
|
||||
if ( nSonBeforeAfter == GDB_LAST_SON)
|
||||
sLua = "EgtRelocateGlob(" + ToString( nSouId) + "," +
|
||||
ToString( nRefId) + ")" +
|
||||
IdToString( nRefId) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
else
|
||||
sLua = "EgtRelocateGlob(" + ToString( nSouId) + "," +
|
||||
ToString( nRefId) + "," +
|
||||
IdToString( nRefId) + "," +
|
||||
InsToString( nSonBeforeAfter) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
@@ -594,6 +599,8 @@ ExeGeoObjDump( int nId, string& sDump)
|
||||
sDump = pGeoObj->GetTitle() + " " + ToString( nId) + "\r\n" ;
|
||||
// preparo gli attributi
|
||||
pGeomDB->DumpAttributes( nId, sDump, bMM, "\r\n") ;
|
||||
// preparo stipple
|
||||
pGeomDB->DumpStipple( nId, sDump, bMM, "\r\n") ;
|
||||
// preparo TextureData
|
||||
pGeomDB->DumpTextureData( nId, sDump, bMM, "\r\n") ;
|
||||
// preparo UserObj
|
||||
|
||||
+54
-4
@@ -29,6 +29,7 @@
|
||||
#include "/EgtDev/Include/EGnFileUtils.h"
|
||||
#include "/EgtDev/Include/EGnGetModuleVer.h"
|
||||
#include "/EgtDev/Include/EGnPcInfo.h"
|
||||
#include "/EgtDev/Include/EGnGetKeyData.h"
|
||||
#include "/EgtDev/Include/EgtIniFile.h"
|
||||
#include "/EgtDev/Include/EgtLogger.h"
|
||||
#include "/EgtDev/Include/EgtStringConverter.h"
|
||||
@@ -51,6 +52,7 @@ static bool s_bNetHwKey = false ;
|
||||
static int s_nKeyExpDays = 0 ;
|
||||
static int s_nKeyOptExpDays = 0 ;
|
||||
static string s_sNestKey ;
|
||||
static string s_sLockId ;
|
||||
static string s_sIniFile ;
|
||||
static bool s_bEnableUI = true ;
|
||||
static pfProcEvents s_pFunProcEvents = nullptr ;
|
||||
@@ -115,7 +117,7 @@ ExeInit( int nDebug, const string& sLogFile, const string& sLogMsg)
|
||||
LOG_INFO( s_pGenLog, MyGetEMkVersion())
|
||||
|
||||
// carico libreria nesting opzionale (non può usare la chiave di rete)
|
||||
if ( LoadNestingDll( s_pGenLog, s_sKey, s_sNestKey))
|
||||
if ( LoadNestingDll( s_pGenLog, s_sKey, s_sNestKey, s_bNetHwKey))
|
||||
LOG_INFO( s_pGenLog, MyGetENsVersion())
|
||||
|
||||
// Info sulla protezione e sul sistema
|
||||
@@ -188,6 +190,10 @@ ExeExit( void)
|
||||
s_pGenLog = nullptr ;
|
||||
}
|
||||
|
||||
// libero eventuale chiave di rete
|
||||
if ( s_bNetHwKey)
|
||||
CloseNetHwKey() ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -218,6 +224,7 @@ bool
|
||||
ExeSetKey( const string& sKey)
|
||||
{
|
||||
s_sKey = sKey ;
|
||||
SetEGnKey( s_sKey) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -248,15 +255,56 @@ bool
|
||||
ExeSetLockType( int nType)
|
||||
{
|
||||
s_nKeyType = nType ;
|
||||
SetEGnKeyType( s_nKeyType) ;
|
||||
return SetLockType( nType) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetNetHwKey( bool bNetHwKey)
|
||||
ExeSetLockId( const string& sLockId)
|
||||
{
|
||||
int nKeyType ;
|
||||
bool bNetKey ;
|
||||
int nUserId ;
|
||||
GetLockIdStringInfo( sLockId, nKeyType, bNetKey, nUserId) ;
|
||||
bool bOk ;
|
||||
switch ( nKeyType) {
|
||||
default :
|
||||
ExeSetNetHwKey( false) ;
|
||||
bOk = false ;
|
||||
break ;
|
||||
case KEY_LOCK_TYPE_SW :
|
||||
ExeSetNetHwKey( false) ;
|
||||
bOk = ( s_nKeyType != KEY_LOCK_TYPE_HW) ;
|
||||
break ;
|
||||
case KEY_LOCK_TYPE_HW :
|
||||
ExeSetNetHwKey( bNetKey, nUserId) ;
|
||||
bOk = true ;
|
||||
break ;
|
||||
}
|
||||
if ( bOk)
|
||||
s_sLockId = sLockId ;
|
||||
else
|
||||
s_sLockId = "" ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
const string&
|
||||
ExeGetLockId( void)
|
||||
{
|
||||
if ( s_sLockId.empty())
|
||||
GetLockId( s_sLockId) ;
|
||||
return s_sLockId ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetNetHwKey( bool bNetHwKey, int nUserId)
|
||||
{
|
||||
s_bNetHwKey = bNetHwKey ;
|
||||
return SetNetHwKey( bNetHwKey) ;
|
||||
SetEGnNetHwKey( s_bNetHwKey) ;
|
||||
return SetNetHwKey( s_bNetHwKey, nUserId) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -411,7 +459,7 @@ ExeGetKeyInfo( string& sKey)
|
||||
sLockId = sLockId.substr( 7, 6) ;
|
||||
if ( sLockId.empty())
|
||||
return false ;
|
||||
int nLockSN ;
|
||||
int nLockSN = 0 ;
|
||||
if ( GetLockSN( nLockSN))
|
||||
sLockId += " (" + ToString( nLockSN) + ")" ;
|
||||
}
|
||||
@@ -431,6 +479,7 @@ ExeGetKeyLevel( int nProd, int nVer, int nLev, int& nKLev)
|
||||
{
|
||||
// verifico la chiave e il livello
|
||||
int nRet = GetKeyLevel( s_sKey, nProd, nVer, nLev, nKLev, s_nKeyExpDays) ;
|
||||
SetEGnKeyLevel( nRet, nKLev, s_nKeyExpDays) ;
|
||||
if ( nRet != KEY_OK) {
|
||||
string sErr = "Error on Key (EGKL/" + ToString( nRet) + ")" ;
|
||||
LOG_ERROR( s_pGenLog, sErr.c_str()) ;
|
||||
@@ -448,6 +497,7 @@ ExeGetKeyOptions( int nProd, int nVer, int nLev, unsigned int& nOpt2)
|
||||
// verifico la chiave e le opzioni
|
||||
unsigned int nOpt1 ;
|
||||
int nRet = GetKeyOptions( s_sKey, nProd, nVer, nLev, nOpt1, nOpt2, s_nKeyOptExpDays) ;
|
||||
SetEGnKeyOptions( nRet, nOpt1, nOpt2, s_nKeyOptExpDays) ;
|
||||
if ( nRet != KEY_OK) {
|
||||
nOpt2 = 0 ;
|
||||
string sErr = "Error on Key (EGKO/" + ToString( nRet) + ")" ;
|
||||
|
||||
@@ -245,6 +245,26 @@ ExeAddMachGroup( const string& sName, const string& sMachineName)
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
int
|
||||
ExeCopyMachGroup( const string& sSouName, const string& sName)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, GDB_ID_NULL)
|
||||
// copio la macchinata (gruppo di lavorazione)
|
||||
int nId = pMachMgr->CopyMachGroup( sSouName, sName) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtCopyMachGroup('" + sSouName + "','" +
|
||||
sName + "')" +
|
||||
" -- Id=" + ToString( nId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeRemoveMachGroup( int nMGroupId)
|
||||
|
||||
+5
-3
@@ -212,11 +212,13 @@ ExeResize( int nW, int nH)
|
||||
bool
|
||||
ExeDraw( void)
|
||||
{
|
||||
// se interfaccia disabilitata, esco subito
|
||||
if ( ! ExeGetEnableUI())
|
||||
return true ;
|
||||
GseContext* pGseCtx = GetCurrGseContext() ;
|
||||
VERIFY_CTX_SCENE( pGseCtx, false)
|
||||
// se abilitato, eseguo disegno
|
||||
if ( ExeGetEnableUI())
|
||||
pGseCtx->m_pScene->Draw() ;
|
||||
// eseguo disegno
|
||||
pGseCtx->m_pScene->Draw() ;
|
||||
// valido la finestra disegnata
|
||||
ValidateRgn( pGseCtx->m_hWnd, NULL) ;
|
||||
return true ;
|
||||
|
||||
Binary file not shown.
@@ -165,6 +165,28 @@ LuaCDeSpheSolid( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCDeSolidSolid( lua_State* L)
|
||||
{
|
||||
// 3 parametri : nSolid1Id, nSolid2Id, dSafeDist
|
||||
int nSolid1Id ;
|
||||
LuaCheckParam( L, 1, nSolid1Id)
|
||||
int nSolid2Id ;
|
||||
LuaCheckParam( L, 2, nSolid2Id)
|
||||
double dSafeDist ;
|
||||
LuaCheckParam( L, 3, dSafeDist)
|
||||
LuaClearStack( L) ;
|
||||
// eseguo verifica di collisione
|
||||
int nRes = ExeCDeSolidSolid( nSolid1Id, nSolid2Id, dSafeDist) ;
|
||||
// restituisco il risultato
|
||||
if ( nRes >= 0)
|
||||
LuaSetParam( L, ( nRes != 0)) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallCDeObjSolid( LuaMgr& luaMgr)
|
||||
@@ -175,5 +197,6 @@ LuaInstallCDeObjSolid( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCDeCylSolid", LuaCDeCylSolid) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCDeConeSolid", LuaCDeConeSolid) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCDeSpheSolid", LuaCDeSpheSolid) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCDeSolidSolid", LuaCDeSolidSolid) ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
@@ -425,6 +425,32 @@ LuaCreateArc3P( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateArc2PB( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : ParentId, PtStart, PtEnd, dBulge [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
Point3d ptStart ;
|
||||
LuaCheckParam( L, 2, ptStart)
|
||||
Point3d ptEnd ;
|
||||
LuaCheckParam( L, 3, ptEnd)
|
||||
double dBulge ;
|
||||
LuaCheckParam( L, 4, dBulge)
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo l'arco
|
||||
int nId = ExeCreateArc2PB( nParentId, ptStart, ptEnd, dBulge, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateArc2PD( lua_State* L)
|
||||
@@ -1057,6 +1083,7 @@ LuaInstallGdbCreateCurve( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtArcC2P", LuaCreateArcC2P) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtArcC2PEx", LuaCreateArcC2PEx) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtArc3P", LuaCreateArc3P) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtArc2PB", LuaCreateArc2PB) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtArc2PD", LuaCreateArc2PD) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtArc2PDEx", LuaCreateArc2PDEx) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtArc2PV", LuaCreateArc2PV) ;
|
||||
|
||||
+55
-1
@@ -385,7 +385,7 @@ LuaCreateSurfTmSphere( lua_State* L)
|
||||
else
|
||||
LuaGetParam( L, 4, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo STM cilindro
|
||||
// creo STM sfera
|
||||
int nId = ExeCreateSurfTmSphere( nParentId, ptOrig, dRad, dLinTol, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
@@ -395,6 +395,58 @@ LuaCreateSurfTmSphere( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfTmTriangle( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : ParentId, PtP1, PtP2, PtP3 [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
Point3d PtP1 ;
|
||||
LuaCheckParam( L, 2, PtP1)
|
||||
Point3d PtP2 ;
|
||||
LuaCheckParam( L, 3, PtP2)
|
||||
Point3d PtP3 ;
|
||||
LuaCheckParam( L, 4, PtP3)
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo STM triangolo
|
||||
int nId = ExeCreateSurfTmTriangle( nParentId, PtP1, PtP2, PtP3, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfTmRectangle( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : ParentId, PtO, PtL, PtT [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
Point3d ptO ;
|
||||
LuaCheckParam( L, 2, ptO)
|
||||
Point3d ptL ;
|
||||
LuaCheckParam( L, 3, ptL)
|
||||
Point3d ptT ;
|
||||
LuaCheckParam( L, 4, ptT)
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo STM rettangolo
|
||||
int nId = ExeCreateSurfTmRectangle( nParentId, ptO, ptL, ptT, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfTmByFlatContour( lua_State* L)
|
||||
@@ -835,6 +887,8 @@ LuaInstallGdbCreateSurf( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmCylinder", LuaCreateSurfTmCylinder) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmCone", LuaCreateSurfTmCone) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmSphere", LuaCreateSurfTmSphere) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmTriangle", LuaCreateSurfTmTriangle) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmRectangle", LuaCreateSurfTmRectangle) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmByFlatContour", LuaCreateSurfTmByFlatContour) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmByRegion", LuaCreateSurfTmByRegion) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmByExtrusion", LuaCreateSurfTmByExtrusion) ;
|
||||
|
||||
+96
-8
@@ -270,18 +270,15 @@ LuaSurfFrGetZigZagInfill( lua_State* L)
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmPartCount( lua_State* L)
|
||||
LuaSurfTmVertexCount( lua_State* L)
|
||||
{
|
||||
// 1 parametro : Id
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
LuaClearStack( L) ;
|
||||
// recupero il numero di parti della superficie trimesh
|
||||
int nParts = ExeSurfTmPartCount( nId) ;
|
||||
if ( nParts >= 0)
|
||||
LuaSetParam( L, nParts) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
// recupero il numero di vertici della superficie trimesh
|
||||
int nNbr = ExeSurfTmVertexCount( nId) ;
|
||||
LuaSetParam( L, nNbr) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
@@ -299,6 +296,72 @@ LuaSurfTmFacetCount( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmPartCount( lua_State* L)
|
||||
{
|
||||
// 1 parametro : Id
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
LuaClearStack( L) ;
|
||||
// recupero il numero di parti della superficie trimesh
|
||||
int nParts = ExeSurfTmPartCount( nId) ;
|
||||
if ( nParts >= 0)
|
||||
LuaSetParam( L, nParts) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmGetVertex( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : Id, nVert, [, nRefId]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nVert ;
|
||||
LuaCheckParam( L, 2, nVert)
|
||||
int nRefId = nId ;
|
||||
LuaGetParam( L, 3, nRefId) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero il vertice di indice dato (0-based)
|
||||
Point3d ptVert ;
|
||||
bool bOk = ExeSurfTmGetVertex( nId, nVert, nRefId, ptVert) ;
|
||||
if ( bOk)
|
||||
LuaSetParam( L, ptVert) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmGetNearestVertex( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : Id, ptNear [, nRefId]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
Point3d ptNear ;
|
||||
LuaCheckParam( L, 2, ptNear)
|
||||
int nRefId = nId ;
|
||||
LuaGetParam( L, 3, nRefId) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero il vertice più vicino della superficie
|
||||
int nVert ;
|
||||
Point3d ptVert ;
|
||||
bool bOk = ExeSurfTmGetNearestVertex( nId, ptNear, nRefId, nVert, ptVert) ;
|
||||
if ( bOk) {
|
||||
LuaSetParam( L, nVert) ;
|
||||
LuaSetParam( L, ptVert) ;
|
||||
}
|
||||
else {
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L) ;
|
||||
}
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmFacetFromTria( lua_State* L)
|
||||
@@ -319,6 +382,27 @@ LuaSurfTmFacetFromTria( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmGetAllVertInFacet( lua_State* L)
|
||||
{
|
||||
// 2 parametri : nId, nFacet
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nFacet ;
|
||||
LuaCheckParam( L, 2, nFacet)
|
||||
LuaClearStack( L) ;
|
||||
// recupero l'elenco dei vertici nella faccia
|
||||
INTVECTOR vVert ;
|
||||
bool bOk = ExeSurfTmGetAllVertInFacet( nId, nFacet, vVert) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk)
|
||||
LuaSetParam( L, vVert) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmGetFacetBBox( lua_State* L)
|
||||
@@ -961,9 +1045,13 @@ LuaInstallGdbGetSurf( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrMoveSimpleNoCollision", LuaSurfFrMoveSimpleNoCollision) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrRotateSimpleNoCollision", LuaSurfFrRotateSimpleNoCollision) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetSurfFrZigZagInfill", LuaSurfFrGetZigZagInfill) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmPartCount", LuaSurfTmPartCount) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmVertexCount", LuaSurfTmVertexCount) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmFacetCount", LuaSurfTmFacetCount) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmPartCount", LuaSurfTmPartCount) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetVertex", LuaSurfTmGetVertex) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetNearestVertex", LuaSurfTmGetNearestVertex) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmFacetFromTria", LuaSurfTmFacetFromTria) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetAllVertInFacet", LuaSurfTmGetAllVertInFacet) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetFacetBBox", LuaSurfTmGetFacetBBox) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetFacetBBoxGlob", LuaSurfTmGetFacetBBoxGlob) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetFacetBBoxRef", LuaSurfTmGetFacetBBoxRef) ;
|
||||
|
||||
@@ -944,6 +944,30 @@ LuaReorderCurvesInGroup( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaProjectCurveOnSurfTm( lua_State* L)
|
||||
{
|
||||
// 4, 5 o 6 parametri : nCurveId, nSurfTmId, vtDir, nDestGrpId [, dLinTol [, nRefType]]
|
||||
int nCurveId ;
|
||||
LuaCheckParam( L, 1, nCurveId)
|
||||
int nSurfTmId ;
|
||||
LuaCheckParam( L, 2, nSurfTmId)
|
||||
Vector3d vtDir ;
|
||||
LuaCheckParam( L, 3, vtDir)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 4, nDestGrpId)
|
||||
double dLinTol = 0.01 ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
if ( LuaGetParam( L, 5, dLinTol))
|
||||
LuaGetParam( L, 6, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// proietto la curva su una trimesh secondo la direzione data
|
||||
bool bOk = ExeProjectCurveOnSurfTm( nCurveId, nSurfTmId, vtDir, nDestGrpId, dLinTol, nRefType) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallGdbModifyCurve( LuaMgr& luaMgr)
|
||||
@@ -999,5 +1023,6 @@ LuaInstallGdbModifyCurve( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRemoveCurveCompoUndercutOnY", LuaRemoveCurveCompoUndercutOnY) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtChainCurvesInGroup", LuaChainCurvesInGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtReorderCurvesInGroup", LuaReorderCurvesInGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtProjectCurveOnSurfTm", LuaProjectCurveOnSurfTm) ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
@@ -141,6 +141,30 @@ LuaSurfFrOffset( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmMoveVertex( lua_State* L)
|
||||
{
|
||||
// 3 o 4 o 5 parametri : nId, nVert, ptNewVert [, nRefId] [, bUpdate]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nVert ;
|
||||
LuaCheckParam( L, 2, nVert)
|
||||
Point3d ptNewVert ;
|
||||
LuaCheckParam( L, 3, ptNewVert)
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
bool bUpdate = true ;
|
||||
if ( LuaGetParam( L, 4, nRefType))
|
||||
LuaGetParam( L, 5, bUpdate) ;
|
||||
else
|
||||
LuaGetParam( L, 4, bUpdate) ;
|
||||
LuaClearStack( L) ;
|
||||
// sposto il vertice di indice dato della trimesh
|
||||
bool bOk = ExeSurfTmMoveVertex( nId, nVert, ptNewVert, nRefType, bUpdate) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmToTriangles( lua_State* L)
|
||||
@@ -376,6 +400,7 @@ LuaInstallGdbModifySurf( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrSubtract", LuaSurfFrSubtract) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrIntersect", LuaSurfFrIntersect) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrOffset", LuaSurfFrOffset) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmMoveVertex", LuaSurfTmMoveVertex) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmToTriangles", LuaSurfTmToTriangles) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmRemoveFacet", LuaSurfTmRemoveFacet) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmSwapFacets", LuaSurfTmSwapFacets) ;
|
||||
|
||||
+4
-1
@@ -256,7 +256,10 @@ LuaSetVal( lua_State* L)
|
||||
} break ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, sNotes) ;
|
||||
if ( bOk)
|
||||
LuaSetParam( L, sNotes) ;
|
||||
else
|
||||
LuaSetParam(L, "") ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
|
||||
@@ -49,6 +49,38 @@ LuaPointCurveDist( lua_State* L)
|
||||
return 3 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaPointCurveDistSide( lua_State* L)
|
||||
{
|
||||
// 3 o 4 parametri : ptP, nCrvId, vtN [, nRefId]
|
||||
Point3d ptP ;
|
||||
LuaCheckParam( L, 1, ptP)
|
||||
int nId ;
|
||||
LuaCheckParam( L, 2, nId)
|
||||
Vector3d vtN ;
|
||||
LuaCheckParam( L, 3, vtN)
|
||||
int nRefType = nId ;
|
||||
LuaGetParam( L, 4, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// calcolo la distanza
|
||||
int nSide ;
|
||||
double dDist ;
|
||||
Point3d ptMin ;
|
||||
bool bOk = ExePointCurveDistSide( ptP, nId, vtN, nRefType, &dDist, ptMin, &nSide) ;
|
||||
if ( bOk) {
|
||||
LuaSetParam( L, dDist) ;
|
||||
LuaSetParam( L, ptMin) ;
|
||||
LuaSetParam( L, nSide) ;
|
||||
}
|
||||
else {
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L) ;
|
||||
}
|
||||
return 3 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaPointSurfTmDist( lua_State* L)
|
||||
@@ -85,6 +117,7 @@ LuaInstallGeoDist( LuaMgr& luaMgr)
|
||||
{
|
||||
bool bOk = ( &luaMgr != nullptr) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtPointCurveDist", LuaPointCurveDist) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtPointCurveDistSide", LuaPointCurveDistSide) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtPointSurfTmDist", LuaPointSurfTmDist) ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
@@ -227,6 +227,26 @@ LuaAddMachGroup( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCopyMachGroup( lua_State* L)
|
||||
{
|
||||
// 2 parametri : nome del gruppo sorgente, nome del nuovo gruppo
|
||||
string sSouName ;
|
||||
LuaCheckParam( L, 1, sSouName)
|
||||
string sName ;
|
||||
LuaCheckParam( L, 2, sName) ;
|
||||
LuaClearStack( L) ;
|
||||
// copio la macchinata
|
||||
int nId = ExeCopyMachGroup( sSouName, sName) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaRemoveMachGroup( lua_State* L)
|
||||
@@ -3983,6 +4003,7 @@ LuaInstallMachMgr( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetPrevMachGroup", LuaGetPrevMachGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetMachGroupNewName", LuaGetMachGroupNewName) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtAddMachGroup", LuaAddMachGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCopyMachGroup", LuaCopyMachGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRemoveMachGroup", LuaRemoveMachGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetMachGroupName", LuaGetMachGroupName) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetMachGroupMachineName", LuaGetMachGroupMachineName) ;
|
||||
|
||||
Reference in New Issue
Block a user