Merge branch 'master' into ExtDimension_angular
This commit is contained in:
+181
@@ -0,0 +1,181 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2023-2023
|
||||
//----------------------------------------------------------------------------
|
||||
// File : DllExch3dm.cpp Data : 14.11.23 Versione : 2.5k2
|
||||
// Contenuto : Funzioni di gestione della libreria opzionale EgtExch3dme.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 14.11.23 DS Creazione modulo.
|
||||
//
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
//--------------------------- Include ----------------------------------------
|
||||
#include "stdafx.h"
|
||||
#include "EXE.h"
|
||||
#include "DllExch3dm.h"
|
||||
#include "/EgtDev/Include/EE3DllMain.h"
|
||||
#define NOMINMAX
|
||||
#include <windows.h>
|
||||
|
||||
using namespace std ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Nome della libreria
|
||||
#if defined( _WIN64) && defined( _DEBUG)
|
||||
static const wchar_t* EE3_NAME = L"EgtExch3dmD64.dll" ;
|
||||
#elif defined( _WIN64)
|
||||
static const wchar_t* EE3_NAME = L"EgtExch3dmR64.dll" ;
|
||||
#elif defined( _WIN32) && defined( _DEBUG)
|
||||
static const wchar_t* EE3_NAME = L"EgtExch3dmD32.dll" ;
|
||||
#else
|
||||
static const wchar_t* EE3_NAME = L"EgtExch3dmR32.dll" ;
|
||||
#endif
|
||||
// Nome delle funzioni caricate
|
||||
static const char* EE3_SETEE3LOGGER = "SetEE3Logger" ;
|
||||
static const char* EE3_GETEE3VERSION = "GetEE3Version" ;
|
||||
static const char* EE3_SETEE3KEY = "SetEE3Key" ;
|
||||
static const char* EE3_SETEE3NETHWKEY = "SetEE3NetHwKey" ;
|
||||
static const char* EE3_CREATEIMPORT3DM = "CreateImport3dm" ;
|
||||
static const char* EE3_CREATEEXPORT3DM = "CreateExport3dm" ;
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
HMODULE s_hEE3 = nullptr ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
LoadExch3dmDll( ILogger* pLogger, const string& sKey, bool bNetHwKey)
|
||||
{
|
||||
// verifico la chiave
|
||||
if ( ! TestKeyForEE3( sKey, 0, pLogger)) {
|
||||
FreeExch3dmDll() ;
|
||||
return false ;
|
||||
}
|
||||
// se già caricata
|
||||
if ( s_hEE3 != nullptr)
|
||||
return true ;
|
||||
// carico la libreria EgtExch3dm
|
||||
s_hEE3 = LoadLibrary( EE3_NAME) ;
|
||||
if ( s_hEE3 == nullptr)
|
||||
return false ;
|
||||
// imposto logger
|
||||
MySetEE3Logger( pLogger) ;
|
||||
// imposto i codici della chiave
|
||||
MySetEE3Key( sKey) ;
|
||||
// imposto eventuale chiave di rete
|
||||
MySetEE3NetHwKey( bNetHwKey) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
FreeExch3dmDll( void)
|
||||
{
|
||||
// se non è già caricata
|
||||
if ( s_hEE3 == nullptr)
|
||||
return true ;
|
||||
// libero la libreria EgtExch3dm
|
||||
FreeLibrary( s_hEE3) ;
|
||||
s_hEE3 = nullptr ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
IsLoadedExch3dmDll( void)
|
||||
{
|
||||
return ( s_hEE3 != nullptr) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void
|
||||
MySetEE3Logger( ILogger* pLogger)
|
||||
{
|
||||
// verifico caricamento libreria EgtExch3dm
|
||||
if ( s_hEE3 == nullptr)
|
||||
return ;
|
||||
// recupero funzione che imposta il logger
|
||||
typedef void (* PF_SetEE3Logger) ( ILogger* pLogger) ;
|
||||
PF_SetEE3Logger pFun = (PF_SetEE3Logger)GetProcAddress( s_hEE3, EE3_SETEE3LOGGER) ;
|
||||
if ( pFun == nullptr)
|
||||
return ;
|
||||
pFun( pLogger) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
const char*
|
||||
MyGetEE3Version( void)
|
||||
{
|
||||
// verifico caricamento libreria EgtExch3dm
|
||||
if ( s_hEE3 == nullptr)
|
||||
return "" ;
|
||||
// recupero funzione che restituisce la versione della libreria
|
||||
typedef const char* (* PF_GetEE3Version) ( void) ;
|
||||
PF_GetEE3Version pFun = (PF_GetEE3Version)GetProcAddress( s_hEE3, EE3_GETEE3VERSION) ;
|
||||
if ( pFun == nullptr)
|
||||
return "" ;
|
||||
return pFun() ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void
|
||||
MySetEE3Key( const string& sKey)
|
||||
{
|
||||
// verifico caricamento libreria EgtExch3dm
|
||||
if ( s_hEE3 == nullptr)
|
||||
return ;
|
||||
// recupero funzione che imposta i codici di protezione
|
||||
typedef void (* PF_SetEE3Key) ( const string& sKey) ;
|
||||
PF_SetEE3Key pFun = (PF_SetEE3Key)GetProcAddress( s_hEE3, EE3_SETEE3KEY) ;
|
||||
if ( pFun == nullptr)
|
||||
return ;
|
||||
pFun( sKey) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void
|
||||
MySetEE3NetHwKey( bool bNetHwKey)
|
||||
{
|
||||
// verifico caricamento libreria EgtExch3dm
|
||||
if ( s_hEE3 == nullptr)
|
||||
return ;
|
||||
// recupero funzione che imposta il flag per chiave di rete
|
||||
typedef void (* PF_SetEE3NetHwKey) ( bool bNetHwKey) ;
|
||||
PF_SetEE3NetHwKey pFun = (PF_SetEE3NetHwKey)GetProcAddress( s_hEE3, EE3_SETEE3NETHWKEY) ;
|
||||
if ( pFun == nullptr)
|
||||
return ;
|
||||
pFun( bNetHwKey) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
IImport3dm*
|
||||
MyCreateImport3dm( void)
|
||||
{
|
||||
// verifico caricamento libreria EgtExch3dm
|
||||
if ( s_hEE3 == nullptr)
|
||||
return nullptr ;
|
||||
// recupero funzione creazione oggetto
|
||||
typedef IImport3dm* (* PF_CreateImport3dm) ( void) ;
|
||||
PF_CreateImport3dm pFun = (PF_CreateImport3dm)GetProcAddress( s_hEE3, EE3_CREATEIMPORT3DM) ;
|
||||
if ( pFun == nullptr)
|
||||
return nullptr ;
|
||||
return pFun() ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
IExport3dm*
|
||||
MyCreateExport3dm( void)
|
||||
{
|
||||
// verifico caricamento libreria EgtExch3dm
|
||||
if ( s_hEE3 == nullptr)
|
||||
return nullptr ;
|
||||
// recupero funzione creazione oggetto
|
||||
typedef IExport3dm* (* PF_CreateExport3dm) ( void) ;
|
||||
PF_CreateExport3dm pFun = (PF_CreateExport3dm)GetProcAddress( s_hEE3, EE3_CREATEEXPORT3DM) ;
|
||||
if ( pFun == nullptr)
|
||||
return nullptr ;
|
||||
return pFun() ;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2023-2023
|
||||
//----------------------------------------------------------------------------
|
||||
// File : DllExch3dm.h Data : 14.11.23 Versione : 2.5k3
|
||||
// Contenuto : Dichiarazioni funzioni per libreria opzionale EgtExchange.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 14.11.23 DS Creazione modulo.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
|
||||
class ILogger ;
|
||||
class IImport3dm ;
|
||||
class IExport3dm ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool LoadExch3dmDll( ILogger* pLogger, const std::string& sKey, bool bNetHwKey) ;
|
||||
bool FreeExch3dmDll( void) ;
|
||||
bool IsLoadedExch3dmDll( void) ;
|
||||
void MySetEE3Logger( ILogger* pLogger) ;
|
||||
void MySetEE3Key( const std::string& sKey) ;
|
||||
void MySetEE3NetHwKey( bool bNetHwKey) ;
|
||||
const char* MyGetEE3Version( void) ;
|
||||
IImport3dm* MyCreateImport3dm( void) ;
|
||||
IExport3dm* MyCreateExport3dm( void) ;
|
||||
+4
-2
@@ -10,6 +10,8 @@
|
||||
// 03.07.18 DS Aggiunto ImportPnt.
|
||||
// 15.09.19 DS Aggiunto ExportSvg.
|
||||
// 14.12.20 DS Aggiunto ImportBtlx.
|
||||
// 23.10.23 DB Aggiunto Export3dm.
|
||||
// 07.11.23 DB Aggiunto Import3dm.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
@@ -70,7 +72,7 @@ LoadExchangeDll( ILogger* pLogger, const string& sKey, bool bNetHwKey)
|
||||
FreeExchangeDll() ;
|
||||
return false ;
|
||||
}
|
||||
// se già caricata
|
||||
// se già caricata
|
||||
if ( s_hEEx != nullptr)
|
||||
return true ;
|
||||
// carico la libreria EgtExchange
|
||||
@@ -90,7 +92,7 @@ LoadExchangeDll( ILogger* pLogger, const string& sKey, bool bNetHwKey)
|
||||
bool
|
||||
FreeExchangeDll( void)
|
||||
{
|
||||
// se non è già caricata
|
||||
// se non è già caricata
|
||||
if ( s_hEEx == nullptr)
|
||||
return true ;
|
||||
// libero la libreria EgtExchange
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "/EgtDev/Include/EXeConst.h"
|
||||
#include "/EgtDev/Include/EGkCurve.h"
|
||||
#include "/EgtDev/Include/EGkCurveComposite.h"
|
||||
#include "/EgtDev/Include/EGkStmStandard.h"
|
||||
#include "/EgtDev/Include/EGkCAvToolSurfTm.h"
|
||||
#include "/EgtDev/Include/EgtNumUtils.h"
|
||||
#include "/EgtDev/Include/EgtPointerOwner.h"
|
||||
@@ -98,6 +99,28 @@ ExeCAvGetToolOutline( int nDestGrpId, bool bApprox)
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
double
|
||||
ExeCAvToolPosBox( const Point3d& ptP, const Vector3d& vtAx, const BBox3d& b3Box, const Vector3d& vtMove)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// creo la superficie TriMesh
|
||||
PtrOwner<ISurfTriMesh> pStm( GetSurfTriMeshBox( b3Box.GetDimX(), b3Box.GetDimY(), b3Box.GetDimZ())) ;
|
||||
if ( IsNull( pStm))
|
||||
return -1 ;
|
||||
pStm->Translate( b3Box.GetMin() - ORIG) ;
|
||||
// verifico oggetto per evitare collisioni
|
||||
if ( IsNull( s_pCAvTlStm))
|
||||
return -1 ;
|
||||
// imposto dati
|
||||
s_pCAvTlStm->SetSurfTm( *pStm) ;
|
||||
double dMove ;
|
||||
if ( ! s_pCAvTlStm->TestPosition( ptP, vtAx, vtMove, dMove))
|
||||
return -1 ;
|
||||
return dMove ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
double
|
||||
ExeCAvToolPosStm( const Point3d& ptP, const Vector3d& vtAx, int nSurfTmId, const Vector3d& vtMove, int nRefType)
|
||||
|
||||
+137
-17
@@ -17,6 +17,7 @@
|
||||
#include "EXE_Macro.h"
|
||||
#include "AuxTools.h"
|
||||
#include "DllExchange.h"
|
||||
#include "DllExch3dm.h"
|
||||
#include "/EgtDev/Include/EXeExecutor.h"
|
||||
#include "/EgtDev/Include/EXeConst.h"
|
||||
#include "/EgtDev/Include/EXeCmdLogOff.h"
|
||||
@@ -33,6 +34,8 @@
|
||||
#include "/EgtDev/Include/EExExport3MF.h"
|
||||
#include "/EgtDev/Include/EExExportSvg.h"
|
||||
#include "/EgtDev/Include/EExExportThreeJS.h"
|
||||
#include "/EgtDev/Include/EE3Import3dm.h"
|
||||
#include "/EgtDev/Include/EE3Export3dm.h"
|
||||
#include "/EgtDev/Include/EGnStringUtils.h"
|
||||
#include "/EgtDev/Include/EGnFileUtils.h"
|
||||
#include "/EgtDev/Include/EgtStringConverter.h"
|
||||
@@ -70,6 +73,8 @@ ExeGetFileType( const string& sFilePath)
|
||||
return FT_STL ;
|
||||
else if ( sFileExt == "3MF")
|
||||
return FT_3MF ;
|
||||
else if ( sFileExt == "3DM")
|
||||
return FT_3DM ;
|
||||
else if ( sFileExt == "OBJ")
|
||||
return FT_OBJ ;
|
||||
else if ( sFileExt == "CNC" || sFileExt == "XPI" || sFileExt == "MPF" || sFileExt == "ISO" || sFileExt == "EIA")
|
||||
@@ -80,6 +85,8 @@ ExeGetFileType( const string& sFilePath)
|
||||
return FT_BTL ;
|
||||
else if ( sFileExt == "BTLX")
|
||||
return FT_BTLX ;
|
||||
else if ( sFileExt == "3DM")
|
||||
return FT_3DM ;
|
||||
else if ( sFileExt == "PNG" || sFileExt == "JPG" || sFileExt == "JPEG" || sFileExt == "BMP")
|
||||
return FT_IMG ;
|
||||
else if ( sFileExt == "PNT" || sFileExt == "XYZ")
|
||||
@@ -145,6 +152,11 @@ ExeImportBtl( const string& sFilePath, int nFlag)
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// scrivo il log
|
||||
if ( ! IsNull( pImpBtl)) {
|
||||
string sLog = "Import File " + sFilePath ;
|
||||
LOG_INFO( GetLogger(), sLog.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
}
|
||||
@@ -173,6 +185,11 @@ ExeImportBtlx( const string& sFilePath, int nFlag)
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// scrivo il log
|
||||
if ( ! IsNull( pImpBtlx)) {
|
||||
string sLog = "Import File " + sFilePath ;
|
||||
LOG_INFO( GetLogger(), sLog.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
}
|
||||
@@ -203,6 +220,11 @@ ExeImportCnc( const string& sFilePath, int nFlag)
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// scrivo il log
|
||||
if ( ! IsNull( pImpCnc)) {
|
||||
string sLog = "Import File " + sFilePath ;
|
||||
LOG_INFO( GetLogger(), sLog.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
}
|
||||
@@ -230,6 +252,11 @@ ExeImportCsf( const string& sFilePath)
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// scrivo il log
|
||||
if ( ! IsNull( pImpCsf)) {
|
||||
string sLog = "Import File " + sFilePath ;
|
||||
LOG_INFO( GetLogger(), sLog.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
}
|
||||
@@ -260,6 +287,11 @@ ExeImportDxf( const string& sFilePath, double dScaleFactor)
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// scrivo il log
|
||||
if ( ! IsNull( pImpDxf)) {
|
||||
string sLog = "Import File " + sFilePath ;
|
||||
LOG_INFO( GetLogger(), sLog.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
}
|
||||
@@ -290,6 +322,11 @@ ExeImportPnt( const string& sFilePath, int nFlag)
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// scrivo il log
|
||||
if ( ! IsNull( pImpPnt)) {
|
||||
string sLog = "Import File " + sFilePath ;
|
||||
LOG_INFO( GetLogger(), sLog.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
}
|
||||
@@ -305,10 +342,10 @@ ExeImportStl( const string& sFilePath, double dScaleFactor)
|
||||
// aggiungo un gruppo pezzo e un gruppo layer
|
||||
int nPartId = pGseCtx->m_pGeomDB->AddGroup( GDB_ID_NULL, GDB_ID_ROOT, Frame3d()) ;
|
||||
int nLayerId = pGseCtx->m_pGeomDB->AddGroup( GDB_ID_NULL, nPartId, Frame3d()) ;
|
||||
// preparo l'importatore
|
||||
// preparo l'importatore
|
||||
PtrOwner<IImportStl> pImpStl( MyCreateImportStl()) ;
|
||||
bOk = bOk && ! IsNull( pImpStl) ;
|
||||
// eseguo l'importazione
|
||||
// eseguo l'importazione
|
||||
bOk = bOk && pImpStl->Import( sFilePath, pGseCtx->m_pGeomDB, nLayerId, dScaleFactor) ;
|
||||
// aggiorno stato file corrente
|
||||
if ( pGseCtx->m_sFilePath.empty())
|
||||
@@ -321,6 +358,11 @@ ExeImportStl( const string& sFilePath, double dScaleFactor)
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// scrivo il log
|
||||
if ( ! IsNull( pImpStl)) {
|
||||
string sLog = "Import File " + sFilePath ;
|
||||
LOG_INFO( GetLogger(), sLog.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
}
|
||||
@@ -333,13 +375,13 @@ ExeImport3MF( const string& sFilePath)
|
||||
VERIFY_CTX_GEOMDB( pGseCtx, false)
|
||||
bool bOk = true ;
|
||||
// importo il file 3MF
|
||||
// aggiungo un gruppo pezzo e un gruppo layer
|
||||
// aggiungo un gruppo pezzo e un gruppo layer
|
||||
int nPartId = pGseCtx->m_pGeomDB->AddGroup( GDB_ID_NULL, GDB_ID_ROOT, Frame3d()) ;
|
||||
int nLayerId = pGseCtx->m_pGeomDB->AddGroup( GDB_ID_NULL, nPartId, Frame3d()) ;
|
||||
// preparo l'importatore
|
||||
// preparo l'importatore
|
||||
PtrOwner<IImport3MF> pImp3MF( MyCreateImport3MF()) ;
|
||||
bOk = bOk && ! IsNull( pImp3MF) ;
|
||||
// eseguo l'importazione
|
||||
// eseguo l'importazione
|
||||
bOk = bOk && pImp3MF->Import( sFilePath, pGseCtx->m_pGeomDB, nLayerId) ;
|
||||
// aggiorno stato file corrente
|
||||
if ( pGseCtx->m_sFilePath.empty())
|
||||
@@ -351,6 +393,54 @@ ExeImport3MF( const string& sFilePath)
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// scrivo il log
|
||||
if ( ! IsNull( pImp3MF)) {
|
||||
string sLog = "Import File " + sFilePath ;
|
||||
LOG_INFO( GetLogger(), sLog.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeImport3dm( const string& sFilePath)
|
||||
{
|
||||
GseContext* pGseCtx = GetCurrGseContext() ;
|
||||
VERIFY_CTX_GEOMDB( pGseCtx, false)
|
||||
bool bOk = true ;
|
||||
// importo il file 3dm
|
||||
// aggiungo un gruppo pezzo e un gruppo layer
|
||||
int nPartId = pGseCtx->m_pGeomDB->AddGroup( GDB_ID_NULL, GDB_ID_ROOT, Frame3d()) ;
|
||||
// preparo l'importatore
|
||||
PtrOwner<IImport3dm> pImp3dm( MyCreateImport3dm()) ;
|
||||
bOk = bOk && ! IsNull( pImp3dm) ;
|
||||
// eseguo l'importazione
|
||||
const DimensionStyle& DimSt = pGseCtx->m_dsCurr ;
|
||||
double dExtLine = DimSt.dExtLineLen ;
|
||||
double dArrLen = DimSt.dArrowLen ;
|
||||
double dTextDist = DimSt.dTextDist ;
|
||||
bool bLenIsMM = ( DimSt.nLenIsMM == 2 ? ExeUiUnitsAreMM() : ( DimSt.nLenIsMM != 0 )) ;
|
||||
int nDecDig = DimSt.nDecDigit ;
|
||||
string sFont = DimSt.sFont ;
|
||||
double dTextHeight = DimSt.dTextHeight ;
|
||||
bOk = bOk && pImp3dm->Import( sFilePath, pGseCtx->m_pGeomDB, nPartId,
|
||||
dTextHeight, dExtLine, dArrLen, dTextDist, bLenIsMM, nDecDig, sFont) ;
|
||||
// aggiorno stato file corrente
|
||||
if ( pGseCtx->m_sFilePath.empty())
|
||||
pGseCtx->m_sFilePath = sFilePath ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtImport3dm('" + StringToLuaString( sFilePath) + "')" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// scrivo il log
|
||||
if ( ! IsNull( pImp3dm)) {
|
||||
string sLog = "Import File " + sFilePath ;
|
||||
LOG_INFO( GetLogger(), sLog.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
}
|
||||
@@ -458,6 +548,11 @@ ExeAdvancedImport( const string& sFilePath, double dToler)
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// scrivo il log
|
||||
{
|
||||
string sLog = "Advanced Import File " + sFilePath ;
|
||||
LOG_INFO( GetLogger(), sLog.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
}
|
||||
@@ -470,11 +565,11 @@ ExeExportDxf( int nId, const string& sFilePath, int nFlag, int nFilter)
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
bool bOk = true ;
|
||||
// esporto il file DXF
|
||||
// preparo l'esportatore
|
||||
// preparo l'esportatore
|
||||
PtrOwner<IExportDxf> pExpDxf( MyCreateExportDxf()) ;
|
||||
bOk = bOk && ! IsNull( pExpDxf) ;
|
||||
// eseguo l'esportazione
|
||||
pExpDxf->SetOptions( nFilter, nFlag) ;
|
||||
bOk = bOk && pExpDxf->SetOptions( nFilter, nFlag) ;
|
||||
bOk = bOk && pExpDxf->Export( pGeomDB, nId, sFilePath) ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
@@ -496,11 +591,11 @@ ExeExportStl( int nId, const string& sFilePath, int nFilter)
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
bool bOk = true ;
|
||||
// esporto il file STL
|
||||
// preparo l'esportatore
|
||||
// preparo l'esportatore
|
||||
PtrOwner<IExportStl> pExpStl( MyCreateExportStl()) ;
|
||||
bOk = bOk && ! IsNull( pExpStl) ;
|
||||
// eseguo l'esportazione
|
||||
pExpStl->SetOptions( nFilter) ;
|
||||
bOk = bOk && pExpStl->SetOptions( nFilter) ;
|
||||
bOk = bOk && pExpStl->Export( pGeomDB, nId, sFilePath) ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
@@ -520,12 +615,12 @@ ExeExport3MF( int nId, const string& sFilePath, int nFilter)
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
bool bOk = true ;
|
||||
// esporto il file STL
|
||||
// preparo l'esportatore
|
||||
// esporto il file 3MF
|
||||
// preparo l'esportatore
|
||||
PtrOwner<IExport3MF> pExp3MF( MyCreateExport3MF()) ;
|
||||
bOk = bOk && ! IsNull( pExp3MF) ;
|
||||
// eseguo l'esportazione
|
||||
pExp3MF->SetOptions( nFilter) ;
|
||||
// eseguo l'esportazione
|
||||
bOk = bOk && pExp3MF->SetOptions( nFilter) ;
|
||||
bOk = bOk && pExp3MF->Export( pGeomDB, nId, sFilePath) ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
@@ -538,6 +633,31 @@ ExeExport3MF( int nId, const string& sFilePath, int nFilter)
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeExport3dm( int nId, const string& sFilePath, int nFilter)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
bool bOk = true ;
|
||||
// esporto il file 3dm
|
||||
// preparo l'esportatore
|
||||
PtrOwner<IExport3dm> pExp3dm( MyCreateExport3dm()) ;
|
||||
bOk = bOk && ! IsNull( pExp3dm) ;
|
||||
// eseguo l'esportazione
|
||||
bOk = bOk && pExp3dm->SetOptions( nFilter) ;
|
||||
bOk = bOk && pExp3dm->Export( pGeomDB, nId, sFilePath) ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtExport3dm(" + ToString( nId) + ",'" +
|
||||
StringToLuaString( sFilePath) + "')" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeExportSvg( int nId, const string& sFilePath, int nFilter)
|
||||
@@ -545,12 +665,12 @@ ExeExportSvg( int nId, const string& sFilePath, int nFilter)
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
bool bOk = true ;
|
||||
// esporto il file SVG
|
||||
// preparo l'esportatore
|
||||
// esporto il file SVG
|
||||
// preparo l'esportatore
|
||||
PtrOwner<IExportSvg> pExpSvg( MyCreateExportSvg()) ;
|
||||
bOk = bOk && ! IsNull( pExpSvg) ;
|
||||
// eseguo l'esportazione
|
||||
pExpSvg->SetOptions( nFilter) ;
|
||||
// eseguo l'esportazione
|
||||
bOk = bOk && pExpSvg->SetOptions( nFilter) ;
|
||||
bOk = bOk && pExpSvg->Export( pGeomDB, nId, sFilePath) ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
|
||||
@@ -362,16 +362,13 @@ CreateLineTgTwoCurves( IGeomDB* pGeomDB, int nParentId,
|
||||
if ( pCrv2 == nullptr)
|
||||
return nullptr ;
|
||||
// porto la seconda curva nel riferimento della prima
|
||||
PtrOwner<ICurve> pCrv2Loc( pCrv2->Clone()) ;
|
||||
if ( IsNull( pCrv2Loc))
|
||||
return nullptr ;
|
||||
pCrv2Loc->LocToLoc( frCrv2, frCrv1) ;
|
||||
CurveLocal Crv2Loc( pGeomDB, nIdF, frCrv1) ;
|
||||
// porto il punto vicino al finale nel riferimento della prima curva
|
||||
Point3d ptN2loc( ptFin) ;
|
||||
ptN2loc.LocToLoc( frDest, frCrv1) ;
|
||||
// calcolo la retta tangente alle due curve
|
||||
PtrOwner<ICurveLine> pCrvLine ;
|
||||
pCrvLine.Set( GetLineTgTwoCurves( *pCrv1, ptN1loc, *pCrv2Loc, ptN2loc)) ;
|
||||
pCrvLine.Set( GetLineTgTwoCurves( *pCrv1, ptN1loc, *Crv2Loc, ptN2loc)) ;
|
||||
if ( IsNull( pCrvLine))
|
||||
return nullptr ;
|
||||
// porto la linea nel riferimento del gruppo destinazione
|
||||
|
||||
+73
-4
@@ -32,7 +32,7 @@
|
||||
#include "/EgtDev/Include/EGkGeoPoint3d.h"
|
||||
#include "/EgtDev/Include/EGkCurveLocal.h"
|
||||
#include "/EgtDev/Include/EgtPointerOwner.h"
|
||||
|
||||
#include "/EgtDev/Include/EGkExtText.h"
|
||||
using namespace std ;
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
@@ -222,7 +222,7 @@ ExeCreateSurfFrDisk( int nParentId, const Point3d& ptOrig, double dRad, int nRef
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeCreateSurfFrFatCurve( int nParentId, int nCrvId, double dRad, bool bSquared)
|
||||
ExeCreateSurfFrFatCurve( int nParentId, int nCrvId, double dRad, bool bSquaredEnds, bool bSquaredMids, double dLinTol)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
@@ -245,7 +245,7 @@ ExeCreateSurfFrFatCurve( int nParentId, int nCrvId, double dRad, bool bSquared)
|
||||
// eseguo la trasformazione (viene eseguita solo se i riferimenti sono diversi
|
||||
pCopCrv->LocToLoc( frCrv, frLoc) ;
|
||||
// creo la regione
|
||||
PtrOwner<ISurfFlatRegion> pSfr( GetSurfFlatRegionFromFatCurve( Release( pCopCrv), dRad, bSquared, bSquared)) ;
|
||||
PtrOwner<ISurfFlatRegion> pSfr( GetSurfFlatRegionFromFatCurve( Release( pCopCrv), dRad, bSquaredEnds, bSquaredMids, dLinTol)) ;
|
||||
bOk = bOk && ! IsNull( pSfr) ;
|
||||
// inserisco la superficie nel DB
|
||||
int nNewId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pSfr)) : GDB_ID_NULL) ;
|
||||
@@ -255,7 +255,8 @@ ExeCreateSurfFrFatCurve( int nParentId, int nCrvId, double dRad, bool bSquared)
|
||||
string sLua = "EgtSurfFrFatCurve(" + IdToString( nParentId) + "," +
|
||||
ToString( nCrvId) + "," +
|
||||
ToString( dRad) + "," +
|
||||
ToString( bSquared) + ")" +
|
||||
ToString( bSquaredEnds) + "," +
|
||||
ToString( bSquaredMids) + ")" +
|
||||
" -- Id=" + ToString( nNewId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
@@ -1713,3 +1714,71 @@ ExeCreateSurfBezierRational( int nParentId, int nDegU, int nDegV, int nSpanU, in
|
||||
// restituisco l'identificativo della nuova entità
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeCreateSurfBezierLeaves( int nParentId, int nSurfBzId, int nTextHeight, bool bShowTrim, int* pnCount)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
// recupero la superficie
|
||||
const ISurfBezier* pSurfBez = GetSurfBezier( pGeomDB->GetGeoObj( nSurfBzId)) ;
|
||||
if ( pSurfBez == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
// disegno le foglie
|
||||
vector<tuple<int,Point3d,Point3d>> vLeaves ;
|
||||
pSurfBez->GetLeaves( vLeaves) ;
|
||||
double dFactor = 1 ;
|
||||
int nFirstId = GDB_ID_NULL ;
|
||||
int nCount = 0 ;
|
||||
for ( int k = 0 ; k < (int)vLeaves.size() ; ++ k) {
|
||||
Point3d ptBL = get<1>( vLeaves[k]) * dFactor ;
|
||||
Point3d ptTR = get<2>( vLeaves[k]) * dFactor ;
|
||||
Point3d ptBR( ptTR.x, ptBL.y) ;
|
||||
Point3d ptTL( ptBL.x, ptTR.y) ;
|
||||
PolyLine PL ;
|
||||
PL.AddUPoint( 0, ptBL) ;
|
||||
PL.AddUPoint( 1, ptBR) ;
|
||||
PL.AddUPoint( 2, ptTR) ;
|
||||
PL.AddUPoint( 3, ptTL) ;
|
||||
PL.Close() ;
|
||||
// creo la curva e la inserisco nel GDB
|
||||
PtrOwner<ICurveComposite> pCrvCompo( CreateCurveComposite()) ;
|
||||
if ( IsNull( pCrvCompo) || ! pCrvCompo->FromPolyLine( PL) || ! pCrvCompo->SetExtrusion( Z_AX))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco la curva composita nel DB
|
||||
int nCrvId = pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrvCompo)) ;
|
||||
if ( nCrvId == GDB_ID_NULL)
|
||||
return GDB_ID_NULL ;
|
||||
++ nCount ;
|
||||
if ( nFirstId == GDB_ID_NULL)
|
||||
nFirstId = nCrvId ;
|
||||
// creo il testo e lo riempio
|
||||
string sText = ToString( get<0>( vLeaves[k])) ;
|
||||
Point3d ptCenter( ( ptBL + ptTR) / 2) ;
|
||||
PtrOwner<IExtText> pTXT( CreateExtText()) ;
|
||||
if ( IsNull( pTXT) || ! pTXT->Set( ptCenter, Z_AX, X_AX, sText, "", false, nTextHeight))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco il testo nel DB
|
||||
int nTxtId = pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pTXT)) ;
|
||||
if ( nTxtId == GDB_ID_NULL)
|
||||
return GDB_ID_NULL ;
|
||||
++ nCount ;
|
||||
}
|
||||
// se richiesto disegno la regione di trim
|
||||
const ISurfFlatRegion* pSfr = pSurfBez->GetTrimRegion() ;
|
||||
if ( bShowTrim && pSfr != nullptr) {
|
||||
PtrOwner<ISurfFlatRegion> pTrimReg( pSfr->Clone()) ;
|
||||
if ( ! IsNull( pTrimReg)) {
|
||||
int nTrimId = pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pTrimReg)) ;
|
||||
if ( nTrimId == GDB_ID_NULL)
|
||||
return GDB_ID_NULL ;
|
||||
++ nCount ;
|
||||
}
|
||||
}
|
||||
// restituisco i risultati
|
||||
if ( pnCount != nullptr)
|
||||
*pnCount = nCount ;
|
||||
return nFirstId ;
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include "/EgtDev/Include/EGkCurveArc.h"
|
||||
#include "/EgtDev/Include/EGkCurveBezier.h"
|
||||
#include "/EgtDev/Include/EGkCurveComposite.h"
|
||||
#include "/EgtDev/Include/EGkCurveAux.h"
|
||||
#include "/EgtDev/Include/EGkDistPointCurve.h"
|
||||
#include "/EgtDev/Include/EGkIntersCurves.h"
|
||||
#include "/EgtDev/Include/EGkSurfFlatRegion.h"
|
||||
|
||||
@@ -0,0 +1,150 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2023-2023
|
||||
//----------------------------------------------------------------------------
|
||||
// File : Exe_GdbGetPocketing.cpp Data : 28.11.23 Versione : 2.5k6
|
||||
// Contenuto : Funzioni di interrogazione di regioni piane del DBG per EXE.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 29.11.23 RE Creazione modulo.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
//--------------------------- Include ----------------------------------------
|
||||
#include "stdafx.h"
|
||||
#include "EXE.h"
|
||||
#include "EXE_Macro.h"
|
||||
#include "/EgtDev/Include/EXeExecutor.h"
|
||||
#include "/EgtDev/Include/EGkCalcPocketing.h"
|
||||
|
||||
using namespace std ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExePocketing( const int nId, double dRad, double dStep, double dAngle, int nType, bool bSmooth, int nDestGrpId,
|
||||
int& nFirstId, int& nCrvCount)
|
||||
{
|
||||
// databse geometrico
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false) ;
|
||||
|
||||
// recupero la FlatRegion per i percorsi
|
||||
const ISurfFlatRegion* pSfr = GetSurfFlatRegion( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pSfr == nullptr)
|
||||
return false ;
|
||||
|
||||
// recupero il suo frame
|
||||
Frame3d frSfr ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nId, frSfr))
|
||||
return false ;
|
||||
|
||||
// recupero il riferimento del gruppo di destinazione
|
||||
Frame3d frDest ;
|
||||
if ( ! pGeomDB->GetGroupGlobFrame( nDestGrpId, frDest))
|
||||
return false ;
|
||||
|
||||
// costruzione vettori di curve per Pocketing
|
||||
ICRVCOMPOPOVECTOR vCrvCompoRes ;
|
||||
|
||||
// eseguo Pocketing
|
||||
bool bOk = CalcPocketing( pSfr, dRad, dStep, dAngle, nType, bSmooth, vCrvCompoRes) ;
|
||||
nFirstId = GDB_ID_NULL ; // primo Id da restituire
|
||||
nCrvCount = int( vCrvCompoRes.size()) ;
|
||||
if ( bOk && int( vCrvCompoRes.size()) > 0) {
|
||||
// scorro le curve di Pocketing ottenute
|
||||
for ( int u = 0 ; u < int( vCrvCompoRes.size()) ; ++ u) {
|
||||
vCrvCompoRes[u]->LocToLoc( frSfr, frDest) ;
|
||||
// inserisco la curva nel DB Geometrico
|
||||
int nCurrId = pGeomDB->AddGeoObj( GDB_ID_NULL, nDestGrpId, Release( vCrvCompoRes[u])) ;
|
||||
if ( nCurrId == GDB_ID_NULL)
|
||||
return false ;
|
||||
if ( u == 0)
|
||||
nFirstId = nCurrId ; // memorizzo il primo Id da restituire
|
||||
}
|
||||
ExeSetModified() ;
|
||||
}
|
||||
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtPocketing(" + ToString( nId) + "," +
|
||||
ToString( dRad) + "," +
|
||||
ToString( dStep) + "," +
|
||||
ToString( dAngle) + "," +
|
||||
ToString( nType) + "," +
|
||||
ToString( bSmooth) + "," +
|
||||
ToString( nDestGrpId) + ")" +
|
||||
" -- Ok=" + ToString( bOk) + " FirstId=" + ToString( nFirstId) + " CurveCount=" + ToString( nCrvCount) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeSurfFrGetZigZagInfill( int nId, int nDestGrpId, double dStep, double dAng, bool bSmooth, bool bRemoveOverlapLink,
|
||||
int* pnCount)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
|
||||
// recupero la superficie FlatRegion
|
||||
ISurfFlatRegion* pOrigSrf = GetSurfFlatRegion( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pOrigSrf == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
PtrOwner<ISurfFlatRegion> pSfr( pOrigSrf->Clone()) ;
|
||||
bool bOk = ( ! IsNull( pSfr)) ;
|
||||
|
||||
// recupero il riferimento della superficie
|
||||
Frame3d frSurf ;
|
||||
bOk = bOk && pGeomDB->GetGlobFrame( nId, frSurf) ;
|
||||
// recupero il riferimento di destinazione
|
||||
Frame3d frDest ;
|
||||
bOk = bOk && pGeomDB->GetGroupGlobFrame( nDestGrpId, frDest) ;
|
||||
|
||||
// creo il riferimento per il calcolo del percorso a zigzag
|
||||
Vector3d vtN ;
|
||||
if ( bOk)
|
||||
vtN = pSfr->GetNormVersor() ;
|
||||
bOk = bOk && vtN.ToGlob( frSurf) ;
|
||||
Frame3d frRef ;
|
||||
bOk = bOk && frRef.Set( ORIG, vtN) ;
|
||||
bOk = bOk && frRef.Rotate( ORIG, vtN, dAng) ;
|
||||
|
||||
// calcolo il percorso a zigzag
|
||||
bOk = bOk && pSfr->LocToLoc( frSurf, frRef) ;
|
||||
ICRVCOMPOPOVECTOR vpCrvs ;
|
||||
bOk = bOk && CalcZigZagInfill( pSfr, dStep, bSmooth, bRemoveOverlapLink, vpCrvs) ;
|
||||
|
||||
// inserisco le curve risultanti nel DB
|
||||
int nFirstId = GDB_ID_NULL ;
|
||||
int nCount = 0 ;
|
||||
for ( int i = 0 ; bOk && i < ( int) vpCrvs.size() ; i ++) {
|
||||
// porto la curva nel riferimento di destinazione
|
||||
bOk = bOk && vpCrvs[i]->LocToLoc( frRef, frDest) ;
|
||||
// la inserisco nel DB geometrico
|
||||
int nNewId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nDestGrpId, Release( vpCrvs[i])) : GDB_ID_NULL) ;
|
||||
bOk = bOk && ( nNewId != GDB_ID_NULL) ;
|
||||
// aggiorno contatori
|
||||
if ( bOk && nFirstId == GDB_ID_NULL)
|
||||
nFirstId = nNewId ;
|
||||
if ( bOk)
|
||||
++ nCount ;
|
||||
}
|
||||
ExeSetModified() ;
|
||||
|
||||
// restituisco risultati
|
||||
if ( pnCount != nullptr)
|
||||
*pnCount = nCount ;
|
||||
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtGetSurfFrZigZagInfill(" + ToString( nId) + "," +
|
||||
ToString( dStep) + "," +
|
||||
ToString( dAng) + "," +
|
||||
ToString( bSmooth) + "," +
|
||||
ToString( bRemoveOverlapLink) + "," +
|
||||
" -- Ok=" + ToString( bOk) + " FirstId=" + ToString( nFirstId) + " CurveCount=" + ToString( nCount) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
|
||||
return nFirstId ;
|
||||
}
|
||||
+147
-66
@@ -21,6 +21,7 @@
|
||||
#include "/EgtDev/Include/EXeExecutor.h"
|
||||
#include "/EgtDev/Include/EXeConst.h"
|
||||
#include "/EgtDev/Include/EGkGeoPoint3d.h"
|
||||
#include "/EgtDev/Include/EGkCurveLine.h"
|
||||
#include "/EgtDev/Include/EGkCurveBezier.h"
|
||||
#include "/EgtDev/Include/EGkCurveComposite.h"
|
||||
#include "/EgtDev/Include/EGkCurveLocal.h"
|
||||
@@ -29,6 +30,11 @@
|
||||
#include "/EgtDev/Include/EGkSurfTriMesh.h"
|
||||
#include "/EgtDev/Include/EGkSurfBezier.h"
|
||||
#include "/EgtDev/Include/EGkDistPointSurfTm.h"
|
||||
#include "/EgtDev/Include/EGkIntersCurves.h"
|
||||
#include "/EgtDev/Include/EGkIntersLineBox.h"
|
||||
#include "/EgtDev/Include/EGkIntersLineSurfTm.h"
|
||||
#include "/EgtDev/Include/EGkCalcPocketing.h"
|
||||
#include "/EgtDev/Include/EGkPolygonElevation.h"
|
||||
#include "/EgtDev/Include/EGkSurfLocal.h"
|
||||
#include "/EgtDev/Include/EGkStringUtils3d.h"
|
||||
|
||||
@@ -305,67 +311,6 @@ ExeExtractSurfFrChunkLoops( int nId, int nChunk, int nDestGrpId, int* pnCount)
|
||||
return nFirstId ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeSurfFrGetZigZagInfill( int nId, int nDestGrpId, double dStep, double dAng, bool bStepCorrection, bool bInvert, int* pnCount)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
|
||||
// recupero la superficie FlatRegion
|
||||
ISurfFlatRegion * pOrigSrf = GetSurfFlatRegion( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pOrigSrf == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
PtrOwner<ISurfFlatRegion> pSfr( pOrigSrf->Clone()) ;
|
||||
bool bOk = ( ! IsNull( pSfr)) ;
|
||||
|
||||
// recupero il riferimento della superficie
|
||||
Frame3d frSurf ;
|
||||
bOk = bOk && pGeomDB->GetGlobFrame( nId, frSurf) ;
|
||||
// recupero il riferimento di destinazione
|
||||
Frame3d frDest ;
|
||||
bOk = bOk && pGeomDB->GetGroupGlobFrame( nDestGrpId, frDest) ;
|
||||
|
||||
// creo il riferimento per il calcolo del percorso a zigzag
|
||||
Vector3d vtN ;
|
||||
if ( bOk)
|
||||
vtN = pSfr->GetNormVersor() ;
|
||||
bOk = bOk && vtN.ToGlob( frSurf) ;
|
||||
Frame3d frRef ;
|
||||
bOk = bOk && frRef.Set( ORIG, vtN) ;
|
||||
bOk = bOk && frRef.Rotate( ORIG, vtN, dAng) ;
|
||||
|
||||
// calcolo il percorso a zigzag
|
||||
bOk = bOk && pSfr->LocToLoc( frSurf, frRef) ;
|
||||
ICRVCOMPOPOVECTOR vpCrvs ;
|
||||
bOk = bOk && pSfr->GetZigZagInfill( dStep, bStepCorrection, bInvert, vpCrvs) ;
|
||||
|
||||
// inserisco le curve risultanti nel DB
|
||||
int nFirstId = GDB_ID_NULL ;
|
||||
int nCount = 0 ;
|
||||
for ( int i = 0 ; bOk && i < ( int) vpCrvs.size() ; i ++) {
|
||||
// porto la curva nel riferimento di destinazione
|
||||
bOk = bOk && vpCrvs[i]->LocToLoc( frRef, frDest) ;
|
||||
// la inserisco nel DB geometrico
|
||||
int nNewId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nDestGrpId, Release( vpCrvs[i])) : GDB_ID_NULL) ;
|
||||
bOk = bOk && ( nNewId != GDB_ID_NULL) ;
|
||||
// copio il materiale
|
||||
if ( ! pGeomDB->CopyMaterial( nId, nNewId))
|
||||
return GDB_ID_NULL ;
|
||||
// aggiorno contatori
|
||||
if ( bOk && nFirstId == GDB_ID_NULL)
|
||||
nFirstId = nNewId ;
|
||||
if ( bOk)
|
||||
++ nCount ;
|
||||
}
|
||||
ExeSetModified() ;
|
||||
|
||||
// restituisco risultati
|
||||
if ( pnCount != nullptr)
|
||||
*pnCount = nCount ;
|
||||
return nFirstId ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeSurfTmVertexCount( int nId)
|
||||
@@ -587,6 +532,83 @@ ExeSurfTmFacetMinAreaRectangle( int nId, int nFacet, int nRefId, Frame3d& frRect
|
||||
return TransformFrame( pGeomDB, nId, nRefId, frRect) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfTmFacetElevationInBBox( int nId, int nFacet, const BBox3d& b3Box, bool bAcceptOutFacet, int nRefId, double& dElev)
|
||||
{
|
||||
// La faccia deve essere tutta contenuta nel Box
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la superficie trimesh e il suo riferimento
|
||||
const ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pStm == nullptr)
|
||||
return false ;
|
||||
Frame3d frStm ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nId, frStm))
|
||||
return false ;
|
||||
// verifico il box e ne recupero il riferimento
|
||||
if ( b3Box.IsEmpty())
|
||||
return false ;
|
||||
Frame3d frBox ;
|
||||
if ( nRefId == GDB_ID_ROOT)
|
||||
frBox = GLOB_FRM ;
|
||||
else if ( nRefId == GDB_ID_GRID)
|
||||
frBox = pGeomDB->GetGridFrame() ;
|
||||
else {
|
||||
// nRefId può essere un gruppo o una entità
|
||||
if ( ! pGeomDB->GetGroupGlobFrame( nRefId, frBox) &&
|
||||
! pGeomDB->GetGlobFrame( nRefId, frBox))
|
||||
return false ;
|
||||
}
|
||||
// recupero il contorno esterno della faccia e lo porto nel riferimento del box
|
||||
POLYLINEVECTOR vPL ;
|
||||
pStm->GetFacetLoops( nFacet, vPL) ;
|
||||
if ( vPL.empty())
|
||||
return false ;
|
||||
vPL[0].LocToLoc( frStm, frBox) ;
|
||||
// ne derivo il poligono
|
||||
Polygon3d pgFacet ;
|
||||
if ( ! pgFacet.FromPolyLine( vPL[0]))
|
||||
return false ;
|
||||
// calcolo l'elevazione
|
||||
return PolygonElevationInBBox( pgFacet, b3Box, bAcceptOutFacet, dElev) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfTmFacetElevationInClosedSurfTm( int nFacetStmId, int nFacet, int nClosedStmId, bool bAcceptOutFacet, double& dElev)
|
||||
{
|
||||
// La faccia deve essere tutta contenuta nel Box
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la superficie trimesh della faccia e il suo riferimento
|
||||
const ISurfTriMesh* pFacStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nFacetStmId)) ;
|
||||
if ( pFacStm == nullptr)
|
||||
return false ;
|
||||
Frame3d frFacStm ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nFacetStmId, frFacStm))
|
||||
return false ;
|
||||
// recupero la superficie trimesh chiusa (volume)
|
||||
const ISurfTriMesh* pCldStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nClosedStmId)) ;
|
||||
if ( pCldStm == nullptr)
|
||||
return false ;
|
||||
Frame3d frCldStm ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nClosedStmId, frCldStm))
|
||||
return false ;
|
||||
// recupero il contorno esterno della faccia e lo porto nel riferimento della superficie chiusa
|
||||
POLYLINEVECTOR vPL ;
|
||||
pFacStm->GetFacetLoops( nFacet, vPL) ;
|
||||
if ( vPL.empty())
|
||||
return false ;
|
||||
vPL[0].LocToLoc( frFacStm, frCldStm) ;
|
||||
// ne derivo il poligono
|
||||
Polygon3d pgFacet ;
|
||||
if ( ! pgFacet.FromPolyLine( vPL[0]))
|
||||
return false ;
|
||||
// calcolo l'elevazione
|
||||
return PolygonElevationInClosedSurfTm( pgFacet, *pCldStm, bAcceptOutFacet, dElev) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfTmFacetOppositeSide( int nId, int nFacet, const Vector3d& vtDir, int nRefId,
|
||||
@@ -834,7 +856,8 @@ ExeExtractSurfTmLoops( int nId, int nDestGrpId, int* pnCount)
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeGetSurfTmSilhouette( int nId, const Vector3d& vtDir, double dToler, int nDestGrpId, int nRefType, int* pnCount)
|
||||
ExeGetSurfTmSilhouette( int nId, const Vector3d& vtDir, double dToler, int nDestGrpId, int nRefType,
|
||||
int* pnCount, bool bAllTria)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
@@ -851,7 +874,7 @@ ExeGetSurfTmSilhouette( int nId, const Vector3d& vtDir, double dToler, int nDest
|
||||
Vector3d vtDirL = GetVectorLocal( pGeomDB, vtDir, nRefType, frSurf) ;
|
||||
// recupero i loop come polilinee
|
||||
POLYLINEVECTOR vPL ;
|
||||
bOk = bOk && pStm->GetSilhouette( vtDirL, dToler, vPL) ;
|
||||
bOk = bOk && pStm->GetSilhouette( vtDirL, dToler, vPL, bAllTria) ;
|
||||
// dalle polilinee creo le curve e le inserisco nel DB
|
||||
int nFirstId = GDB_ID_NULL ;
|
||||
int nCount = 0 ;
|
||||
@@ -879,7 +902,8 @@ ExeGetSurfTmSilhouette( int nId, const Vector3d& vtDir, double dToler, int nDest
|
||||
string sLua = "EgtGetSurfTmSilhouette(" + ToString( nId) + ",{" +
|
||||
ToString( vtDir) + "}," +
|
||||
ToString( nDestGrpId) + "," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
RefTypeToString( nRefType) + "," +
|
||||
ToString( bAllTria) + ")" +
|
||||
" -- Id1=" + ToString( nFirstId) + ",Nbr=" + ToString( nCount) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
@@ -1030,7 +1054,7 @@ ExeSurfTmGetFacetBBoxGlob( int nId, int nFacet, int nFlag, BBox3d& b3Box)
|
||||
return false ;
|
||||
// recupero il riferimento globale del gruppo cui appartiene
|
||||
Frame3d frGlob ;
|
||||
if ( nId != GDB_ID_ROOT && ! pGeomDB->GetGroupGlobFrame( pGeomDB->GetParentId( nId), frGlob))
|
||||
if ( ! pGeomDB->GetGlobFrame( nId, frGlob))
|
||||
return false ;
|
||||
// recupero il bounding box della faccia dell'oggetto in globale
|
||||
return pStm->GetFacetBBox( nFacet, frGlob, b3Box, nFlag) ;
|
||||
@@ -1048,7 +1072,7 @@ ExeSurfTmGetFacetBBoxRef( int nId, int nFacet, int nFlag, const Frame3d& frRef,
|
||||
return false ;
|
||||
// recupero il riferimento globale del gruppo cui appartiene
|
||||
Frame3d frGlob ;
|
||||
if ( nId != GDB_ID_ROOT && ! pGeomDB->GetGroupGlobFrame( pGeomDB->GetParentId( nId), frGlob))
|
||||
if ( ! pGeomDB->GetGlobFrame( nId, frGlob))
|
||||
return false ;
|
||||
// porto il riferimento di espressione in quello della superficie
|
||||
Frame3d frGlobL = frGlob ;
|
||||
@@ -1057,6 +1081,63 @@ ExeSurfTmGetFacetBBoxRef( int nId, int nFacet, int nFlag, const Frame3d& frRef,
|
||||
return pStm->GetFacetBBox( nFacet, frGlobL, b3Box, nFlag) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeSurfTmGetEdges( int nId, int nDestGrpId, bool bSmoothAng, int* pnCount)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
// recupero la superficie TriMesh
|
||||
const ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ;
|
||||
bool bOk = ( pStm != nullptr) ;
|
||||
// recupero il riferimento globale del gruppo cui appartiene
|
||||
Frame3d frSurf ;
|
||||
bOk = bOk && pGeomDB->GetGlobFrame( nId, frSurf) ;
|
||||
// recupero il riferimento di destinazione
|
||||
Frame3d frDest ;
|
||||
bOk = bOk && pGeomDB->GetGroupGlobFrame( nDestGrpId, frDest) ;
|
||||
// ne determino gli spigoli
|
||||
ICURVEPOVECTOR vpCurve ;
|
||||
bOk = bOk && pStm->GetEdges( vpCurve) ;
|
||||
// inserisco gli spigoli come curve nel DB
|
||||
int nFirstId = GDB_ID_NULL ;
|
||||
int nCount = 0 ;
|
||||
for ( int i = 0 ; i < int( vpCurve.size()) ; ++ i) {
|
||||
// se richiesto, verifico l'angolo tra le facce adiacenti (0=allineate)
|
||||
if ( bSmoothAng) {
|
||||
double dAngInt = vpCurve[i]->GetTempParam() ;
|
||||
if ( abs( dAngInt) < pStm->GetSmoothAngle())
|
||||
continue ;
|
||||
}
|
||||
// lo porto nel riferimento destinazione
|
||||
bOk = bOk && vpCurve[i]->LocToLoc( frSurf, frDest) ;
|
||||
// lo inserisco nel DB geometrico
|
||||
int nNewId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nDestGrpId, Release( vpCurve[i])) : GDB_ID_NULL) ;
|
||||
bOk = bOk && ( nNewId != GDB_ID_NULL) ;
|
||||
// copio il materiale
|
||||
bOk = bOk && pGeomDB->CopyMaterial( nId, nNewId) ;
|
||||
// aggiorno contatori
|
||||
if ( bOk && nFirstId == GDB_ID_NULL)
|
||||
nFirstId = nNewId ;
|
||||
if ( bOk)
|
||||
++ nCount ;
|
||||
}
|
||||
if ( ! bOk)
|
||||
nCount = -1 ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmGetEdges(" + ToString( nId) + ",{" +
|
||||
ToString( nDestGrpId) + ")" +
|
||||
" -- Id1=" + ToString( nFirstId) + ",Nbr=" + ToString( nCount) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultati
|
||||
if ( pnCount != nullptr)
|
||||
*pnCount = nCount ;
|
||||
return nFirstId ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfBezierGetPoint( int nSurfId, double dU, double dV, int nRefId, Point3d& ptP)
|
||||
|
||||
+2
-2
@@ -250,8 +250,8 @@ ExeVolZmapGetEdges( int nId, int nDestGrpId, int* pnCount)
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtGetSurfTmSilhouette(" + ToString( nId) + ",{" +
|
||||
ToString( nDestGrpId) + ")" +
|
||||
string sLua = "EgtVolZmapGetEdges(" + ToString( nId) + ",{" +
|
||||
ToString( nDestGrpId) + ")" +
|
||||
" -- Id1=" + ToString( nFirstId) + ",Nbr=" + ToString( nCount) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
|
||||
+158
-2
@@ -40,8 +40,11 @@
|
||||
#include "/EgtDev/Include/EGkPolygon3d.h"
|
||||
#include "/EgtDev/Include/EGkGeoVector3d.h"
|
||||
#include "/EgtDev/Include/EgtPointerOwner.h"
|
||||
#include "/EgtDev/Include/EGkCalcPocketing.h"
|
||||
#include <EgtDev/Include/EGkSfrCreate.h>
|
||||
#include <functional>
|
||||
|
||||
|
||||
using namespace std ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -99,14 +102,14 @@ ExeOffsetCurve( int nId, double dDist, int nType)
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeOffsetCurveAdv( int nId, double dDist, int nType, int* pnCount)
|
||||
ExeOffsetCurveAdv( int nId, double dDist, int nType, int* pnCount, double dLinTol)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
// recupero la curva
|
||||
const ICurve* pCurve = GetCurve( pGeomDB->GetGeoObj( nId)) ;
|
||||
// eseguo l'offset
|
||||
OffsetCurve OffsCrv ;
|
||||
OffsetCurve OffsCrv( dLinTol) ;
|
||||
bool bOk = OffsCrv.Make( pCurve, dDist, nType) ;
|
||||
// salvo le curve di offset
|
||||
int nRefId = nId ;
|
||||
@@ -2316,6 +2319,7 @@ MyProjectCurveOnSurfTm( int nCurveId, int nSurfTmId, const Vector3d& vtDir, int
|
||||
if ( nCompoId == GDB_ID_NULL)
|
||||
return false ;
|
||||
// aggiungo i versori nel gruppo destinazione
|
||||
int nInd = 0 ;
|
||||
for ( const auto& Pt5ax : vPt5ax) {
|
||||
PtrOwner<IGeoVector3d> pGeoVct( CreateGeoVector3d()) ;
|
||||
if ( IsNull( pGeoVct))
|
||||
@@ -2324,6 +2328,7 @@ MyProjectCurveOnSurfTm( int nCurveId, int nSurfTmId, const Vector3d& vtDir, int
|
||||
int nNewId = pGeomDB->AddGeoObj( GDB_ID_NULL, nDestGrpId, Release( pGeoVct)) ;
|
||||
if ( nNewId == GDB_ID_NULL)
|
||||
return false ;
|
||||
pGeomDB->SetInfo( nNewId, "Ind", nInd ++) ;
|
||||
pGeomDB->SetInfo( nNewId, "Par", Pt5ax.dPar) ;
|
||||
pGeomDB->SetInfo( nNewId, "Flag", Pt5ax.nFlag) ;
|
||||
}
|
||||
@@ -2351,3 +2356,154 @@ ExeProjectCurveOnSurfTm( int nCurveId, int nSurfTmId, const Vector3d& vtDir, int
|
||||
return bOk ;
|
||||
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeCurveGetVoronoi( int nId, int nDestGrpId, int nBound, int* pnCount)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
// recupero la curva
|
||||
const ICurve* pCrv = GetCurve( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pCrv == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
// recupero il riferimento della curva
|
||||
Frame3d frCrv ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nId, frCrv))
|
||||
return GDB_ID_NULL ;
|
||||
// recupero il riferimento di destinazione
|
||||
Frame3d frDest ;
|
||||
if ( ! pGeomDB->GetGroupGlobFrame( nDestGrpId, frDest))
|
||||
return GDB_ID_NULL ;
|
||||
|
||||
// Calcolo diagramma di Voronoi
|
||||
ICURVEPOVECTOR vCrv ;
|
||||
CalcCurveVoronoiDiagram( *pCrv, vCrv, nBound) ;
|
||||
|
||||
// inserisco i risultati nel DB geometrico
|
||||
int nFirstId = GDB_ID_NULL ;
|
||||
int nCount = 0 ;
|
||||
for ( int i = 0 ; i < int( vCrv.size()) ; i++) {
|
||||
vCrv[i]->LocToLoc( frCrv, frDest) ;
|
||||
int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nDestGrpId, Release( vCrv[i])) ;
|
||||
if ( nId != GDB_ID_NULL) {
|
||||
nCount ++ ;
|
||||
if ( nFirstId == GDB_ID_NULL)
|
||||
nFirstId = nId ;
|
||||
}
|
||||
}
|
||||
ExeSetModified() ;
|
||||
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtCurveGetVoronoi(" + ToString( nId) + "," +
|
||||
ToString( nDestGrpId) + ")" +
|
||||
" FirstId=" + ToString( nFirstId) + " nCurveCount=" + ToString( nCount) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
|
||||
// restituisco risultati
|
||||
if ( pnCount != nullptr)
|
||||
*pnCount = nCount ;
|
||||
return nFirstId ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeCurveGetMedialAxis( int nId, int nDestGrpId, int nSide, int* pnCount)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
// recupero la curva
|
||||
const ICurve* pCrv = GetCurve( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pCrv == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
// recupero il riferimento della curva
|
||||
Frame3d frCrv ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nId, frCrv))
|
||||
return GDB_ID_NULL ;
|
||||
// recupero il riferimento di destinazione
|
||||
Frame3d frDest ;
|
||||
if ( ! pGeomDB->GetGroupGlobFrame( nDestGrpId, frDest))
|
||||
return GDB_ID_NULL ;
|
||||
|
||||
// Calcolo il Medial Axis
|
||||
ICURVEPOVECTOR vCrv ;
|
||||
CalcCurveMedialAxis( *pCrv, vCrv, nSide) ;
|
||||
|
||||
// inserisco i risultati nel DB geometrico
|
||||
int nFirstId = GDB_ID_NULL ;
|
||||
int nCount = 0 ;
|
||||
for ( int i = 0 ; i < int( vCrv.size()) ; i++) {
|
||||
vCrv[i]->LocToLoc( frCrv, frDest) ;
|
||||
int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nDestGrpId, Release( vCrv[i])) ;
|
||||
if ( nId != GDB_ID_NULL) {
|
||||
nCount ++ ;
|
||||
if ( nFirstId == GDB_ID_NULL)
|
||||
nFirstId = nId ;
|
||||
}
|
||||
}
|
||||
ExeSetModified() ;
|
||||
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtCurveMedialAxisAdv(" + ToString( nId) + "," +
|
||||
ToString( nSide) + "," +
|
||||
ToString( nDestGrpId) + ")" +
|
||||
" FirstId=" + ToString( nFirstId) + " nCurveCount=" + ToString( nCount) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
|
||||
// restituisco risultati
|
||||
if ( pnCount != nullptr)
|
||||
*pnCount = nCount ;
|
||||
return nFirstId ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeCurveGetFatCurve( int nId, int nDestGrpId, double dRad, bool bSquareEnds, bool bSquareMids, int* pnCount)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
// recupero la curva
|
||||
const ICurve* pCrv = GetCurve( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pCrv == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
// recupero il riferimento della curva
|
||||
Frame3d frCrv ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nId, frCrv))
|
||||
return GDB_ID_NULL ;
|
||||
// recupero il riferimento di destinazione
|
||||
Frame3d frDest ;
|
||||
if ( ! pGeomDB->GetGroupGlobFrame( nDestGrpId, frDest))
|
||||
return GDB_ID_NULL ;
|
||||
|
||||
// Calcolo la curva ingrossata
|
||||
ICURVEPOVECTOR vCrv ;
|
||||
CalcCurveFatCurve( *pCrv, vCrv, dRad, bSquareEnds, bSquareMids) ;
|
||||
|
||||
// inserisco i risultati nel DB geometrico
|
||||
int nFirstId = GDB_ID_NULL ;
|
||||
int nCount = 0 ;
|
||||
for ( int i = 0 ; i < int( vCrv.size()) ; i++) {
|
||||
vCrv[i]->LocToLoc( frCrv, frDest) ;
|
||||
int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nDestGrpId, Release( vCrv[i])) ;
|
||||
if ( nId != GDB_ID_NULL) {
|
||||
nCount ++ ;
|
||||
if ( nFirstId == GDB_ID_NULL)
|
||||
nFirstId = nId ;
|
||||
}
|
||||
}
|
||||
ExeSetModified() ;
|
||||
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtCurveGetFatCurve(" + ToString( nId) + "," +
|
||||
ToString( nDestGrpId) + ")" +
|
||||
" FirstId=" + ToString( nFirstId) + " nCurveCount=" + ToString( nCount) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
|
||||
// restituisco risultati
|
||||
if ( pnCount != nullptr)
|
||||
*pnCount = nCount ;
|
||||
return nFirstId ;
|
||||
}
|
||||
|
||||
+148
-12
@@ -29,8 +29,10 @@
|
||||
#include "/EgtDev/Include/EGkStmFromTriangleSoup.h"
|
||||
#include "/EgtDev/Include/EGkCAvSimpleSurfFrMove.h"
|
||||
#include "/EgtDev/Include/EGkStringUtils3d.h"
|
||||
#include "/EgtDev/Include/EGkSubtractProjectedFacesOnStmFace.h"
|
||||
#include "/EgtDev/Include/EgtPointerOwner.h"
|
||||
|
||||
|
||||
using namespace std ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -75,7 +77,7 @@ MyExplodeSurfTriMesh( int nId, int& nCount)
|
||||
return GDB_ID_NULL ;
|
||||
// recupero il numero di componenti connesse
|
||||
int nParts = pStm->GetPartCount() ;
|
||||
// se ci sono più parti, separo queste
|
||||
// se ci sono pi� parti, separo queste
|
||||
if ( nParts > 1) {
|
||||
int nFirstId = GDB_ID_NULL ;
|
||||
nCount = 0 ;
|
||||
@@ -102,7 +104,7 @@ MyExplodeSurfTriMesh( int nId, int& nCount)
|
||||
}
|
||||
// recupero il numero di facce
|
||||
int nFacets = pStm->GetFacetCount() ;
|
||||
// se ci sono più facce, separo queste
|
||||
// se ci sono pi� facce, separo queste
|
||||
if ( nFacets > 1) {
|
||||
// copio tutte le facce
|
||||
int nFirstId = GDB_ID_NULL ;
|
||||
@@ -128,7 +130,7 @@ MyExplodeSurfTriMesh( int nId, int& nCount)
|
||||
// restituisco risultati
|
||||
return nFirstId ;
|
||||
}
|
||||
// non devo fare alcunché
|
||||
// non devo fare alcunch�
|
||||
nCount = 1 ;
|
||||
return nId ;
|
||||
}
|
||||
@@ -145,7 +147,7 @@ MyExplodeSurfFlatRegion( int nId, int& nCount)
|
||||
return GDB_ID_NULL ;
|
||||
// recupero il numero di componenti connessi (chunk)
|
||||
int nChunk = pSfr->GetChunkCount() ;
|
||||
// se c'è un solo componente, non devo fare alcunché
|
||||
// se c'� un solo componente, non devo fare alcunch�
|
||||
if ( nChunk == 1) {
|
||||
nCount = 1 ;
|
||||
return nId ;
|
||||
@@ -294,7 +296,7 @@ ExeSurfFrSubtract( int nId1, int nId2)
|
||||
bOk = bOk && ( pSfr2L != nullptr) ;
|
||||
// eseguo la sottrazione della seconda superficie dalla prima
|
||||
bOk = bOk && pSfr1->Subtract( *pSfr2L) ;
|
||||
// se il risultato è vuoto, cancello la FlatRegion
|
||||
// se il risultato � vuoto, cancello la FlatRegion
|
||||
if ( bOk && ! pSfr1->IsValid())
|
||||
pGeomDB->Erase( nId1) ;
|
||||
ExeSetModified() ;
|
||||
@@ -326,7 +328,7 @@ ExeSurfFrIntersect( int nId1, int nId2)
|
||||
bOk = bOk && ( pSfr2L != nullptr) ;
|
||||
// eseguo l'intersezione tra le due superfici
|
||||
bOk = bOk && pSfr1->Intersect( *pSfr2L) ;
|
||||
// se il risultato è vuoto, cancello la FlatRegion
|
||||
// se il risultato � vuoto, cancello la FlatRegion
|
||||
if ( bOk && ! pSfr1->IsValid())
|
||||
pGeomDB->Erase( nId1) ;
|
||||
ExeSetModified() ;
|
||||
@@ -351,7 +353,7 @@ ExeSurfFrOffset( int nId, double dDist, int nType)
|
||||
bool bOk = ( pSfr != nullptr) ;
|
||||
// eseguo l'offset
|
||||
bOk = bOk && pSfr->Offset( dDist, nType) ;
|
||||
// se il risultato è vuoto, cancello la FlatRegion
|
||||
// se il risultato � vuoto, cancello la FlatRegion
|
||||
if ( bOk && ! pSfr->IsValid())
|
||||
pGeomDB->Erase( nId) ;
|
||||
ExeSetModified() ;
|
||||
@@ -366,6 +368,32 @@ ExeSurfFrOffset( int nId, double dDist, int nType)
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfFrOffsetAdv( int nId, double dDist, int nType, int& nNewId)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
// recupero la superficie FlatRegion
|
||||
ISurfFlatRegion* pSfr = GetSurfFlatRegion( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pSfr == nullptr)
|
||||
return false ;
|
||||
// eseguo l'offset
|
||||
PtrOwner<ISurfFlatRegion> pSfrOffs( pSfr->CreateOffsetSurf( dDist, nType)) ;
|
||||
if ( IsNull( pSfrOffs))
|
||||
return false ;
|
||||
// salvo la superficie di offset
|
||||
nNewId = GDB_ID_NULL ;
|
||||
if ( pSfr->GetChunkCount() > 0) {
|
||||
// inserisco nel DB geometrico
|
||||
nNewId = pGeomDB->InsertGeoObj( GDB_ID_NULL, nId, GDB_AFTER, Release( pSfrOffs)) ;
|
||||
// copio gli attributi
|
||||
pGeomDB->CopyAttributes( nId, nNewId) ;
|
||||
ExeSetModified() ;
|
||||
}
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfFrMoveSimpleNoCollision( int nId1, int nId2, const Vector3d& vtDir, double& dLen, int nRefType)
|
||||
@@ -419,7 +447,7 @@ ExeSurfTmMoveVertex( int nId, int nVert, const Point3d& ptNewVert, int nRefType,
|
||||
// recupero la superficie
|
||||
ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ;
|
||||
bool bOk = ( pStm != nullptr) ;
|
||||
// recupero il riferimento in cui è immersa la superficie
|
||||
// recupero il riferimento in cui � immersa la superficie
|
||||
Frame3d frStm ;
|
||||
bOk = bOk && pGeomDB->GetGlobFrame( nId, frStm) ;
|
||||
// eseguo la modifica
|
||||
@@ -459,7 +487,7 @@ MySurfTmToTriangles( int nId, int& nCount)
|
||||
return GDB_ID_NULL ;
|
||||
// recupero il numero di triangoli
|
||||
int nTria = pStm->GetTriangleCount() ;
|
||||
// se ci sono più triangoli, li separo
|
||||
// se ci sono pi� triangoli, li separo
|
||||
if ( nTria > 1) {
|
||||
// copio tutti triangoli
|
||||
int nFirstId = GDB_ID_NULL ;
|
||||
@@ -485,7 +513,7 @@ MySurfTmToTriangles( int nId, int& nCount)
|
||||
// restituisco risultati
|
||||
return nFirstId ;
|
||||
}
|
||||
// non devo fare alcunché
|
||||
// non devo fare alcunch�
|
||||
nCount = 1 ;
|
||||
return nId ;
|
||||
}
|
||||
@@ -700,7 +728,7 @@ ExeSurfTmSubtract( int nId1, int nId2, bool bTwoColors)
|
||||
bOk = bOk && ( pStm2L != nullptr) ;
|
||||
// eseguo la sottrazione tra le due superfici
|
||||
bOk = bOk && pStm1->Subtract( *pStm2L) ;
|
||||
// se il risultato è vuoto, cancello la superficie
|
||||
// se il risultato � vuoto, cancello la superficie
|
||||
if ( bOk && ! pStm1->IsValid()) {
|
||||
pGeomDB->Erase( nId1) ;
|
||||
pStm1 = nullptr ;
|
||||
@@ -737,7 +765,7 @@ ExeSurfTmIntersect( int nId1, int nId2, bool bTwoColors)
|
||||
bOk = bOk && ( pStm2L != nullptr) ;
|
||||
// eseguo l'intersezione tra le due superfici
|
||||
bOk = bOk && pStm1->Intersect( *pStm2L) ;
|
||||
// se il risultato è vuoto, cancello la superficie
|
||||
// se il risultato � vuoto, cancello la superficie
|
||||
if ( bOk && ! pStm1->IsValid()) {
|
||||
pGeomDB->Erase( nId1) ;
|
||||
pStm1 = nullptr ;
|
||||
@@ -924,3 +952,111 @@ ExeSurfTmCut( int nId, int nCutterId, bool bInVsOut, bool bSaveOnEq)
|
||||
}
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfTmSubtractProjectedFacesOnFace( int nSurfId, int nFaceInd, int nDestGrpId,
|
||||
INTVECTOR vSurfsId, bool bOCFlag,
|
||||
bool& bExistProjection, int& nNewId, int& nNewFaceNbr)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la superficie TriMesh su cui proiettare
|
||||
ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nSurfId)) ;
|
||||
if ( pStm == nullptr)
|
||||
return false ;
|
||||
// recupero il riferimento della superficie
|
||||
Frame3d frSurf ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nSurfId, frSurf))
|
||||
return false ;
|
||||
// recupero il riferimento del gruppo di destinazione
|
||||
Frame3d frDest ;
|
||||
if ( ! pGeomDB->GetGroupGlobFrame( nDestGrpId, frDest))
|
||||
return false ;
|
||||
// costruzione vettori di superfici e indici delle facce per proiezione
|
||||
ISURFTMPOVECTOR vpStmOthers ;
|
||||
vector<SurfLocal> vSurfCLoc ;
|
||||
// recupero le altre superfici e le porto nel sistema di riferimento della prima
|
||||
for ( int i = 0 ; i < int( vSurfsId.size()) ; ++ i) {
|
||||
if ( pGeomDB->GetGeoType( vSurfsId[i]) != SRF_TRIMESH)
|
||||
return false ;
|
||||
vSurfCLoc.emplace_back( pGeomDB, vSurfsId[i], frSurf) ;
|
||||
const ISurfTriMesh* pStmCurr = GetSurfTriMesh( vSurfCLoc.back().Get()) ;
|
||||
vpStmOthers.emplace_back( pStmCurr->Clone()) ;
|
||||
}
|
||||
// eseguo la proiezione
|
||||
ISurfTriMesh* pStmRes = nullptr ;
|
||||
bool bOk = SubtractProjectedFacesOnStmFace( *pStm, nFaceInd, vpStmOthers, bOCFlag,
|
||||
bExistProjection, pStmRes, nNewFaceNbr) ;
|
||||
if ( ! bOk) {
|
||||
delete( pStmRes) ;
|
||||
pStmRes = nullptr ;
|
||||
}
|
||||
|
||||
nNewId = GDB_ID_NULL ;
|
||||
if ( bOk && pStmRes != nullptr) {
|
||||
// porto nel sistema di riferimento destinazione
|
||||
pStmRes->LocToLoc( frSurf, frDest) ;
|
||||
// la inserisco nel DB geometrico
|
||||
nNewId = pGeomDB->AddGeoObj( GDB_ID_NULL, nDestGrpId, pStmRes) ;
|
||||
if ( nNewId == GDB_ID_NULL)
|
||||
return false ;
|
||||
ExeSetModified() ;
|
||||
}
|
||||
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSubtractProjectedFacesOnStmFace(" + ToString( nSurfId) + "," +
|
||||
ToString( nFaceInd) + "," +
|
||||
ToString( nDestGrpId) + "," +
|
||||
ToString( vSurfsId) + "," +
|
||||
ToString( bOCFlag) + ")" +
|
||||
" -- Ok=" + ToString( bOk) + " Id=" + ToString( nNewId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static bool
|
||||
MySurfBzTrim( int nId, int nTrimmerId)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la superficie Bezier da trimmare
|
||||
ISurfBezier* pSrfBz = GetSurfBezier( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pSrfBz == nullptr)
|
||||
return false ;
|
||||
// recupero il riferimento della superficie
|
||||
Frame3d frSurf ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nId, frSurf))
|
||||
return false ;
|
||||
// recupero la superficie TriMesh divisore in locale alla prima
|
||||
|
||||
SurfLocal SurfCLoc( pGeomDB, nTrimmerId, frSurf) ;
|
||||
//const ISurfTriMesh* pStmCLoc = GetSurfTriMesh( SurfCLoc) ;
|
||||
const ISurfFlatRegion* pSrfFr = GetSurfFlatRegion( SurfCLoc) ;
|
||||
if ( pSrfFr == nullptr)
|
||||
return false ;
|
||||
PtrOwner<ISurfFlatRegion> pSrfFrCopy( pSrfFr->Clone()) ;
|
||||
if ( ! pSrfFr->GetNormVersor().IsZplus())
|
||||
pSrfFrCopy->Invert() ;
|
||||
// eseguo il taglio
|
||||
return pSrfBz->SetTrimRegion( *pSrfFrCopy) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfBzTrim( int nId, int nCutterId)
|
||||
{
|
||||
bool bOk = MySurfBzTrim( nId, nCutterId) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmCut(" + ToString( nId) + "," +
|
||||
ToString( nCutterId) + "," +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
+150
-14
@@ -344,6 +344,26 @@ ExeGetPrevLayer( int nId, bool bOnlyVisible)
|
||||
return ExeVerifyOrPrev( pGeomDB, nLayerId, bOnlyVisible) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
ExeIsGhostPart( int nGhostId)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// verifico sia il segnaposto di un pezzo (Ghost)
|
||||
if ( pGeomDB->GetGdbType( nGhostId) == GDB_TY_GROUP &&
|
||||
pGeomDB->GetParentId( nGhostId) == GDB_ID_ROOT &&
|
||||
ExeIsSystemObj( pGeomDB, nGhostId) &&
|
||||
pGeomDB->ExistsInfo( nGhostId, GDB_SI_SOURCE)) {
|
||||
int nPartId = GDB_ID_NULL ;
|
||||
pGeomDB->GetInfo( nGhostId, GDB_SI_SOURCE, nPartId) ;
|
||||
int nRawId = pGeomDB->GetParentId( nPartId) ;
|
||||
if ( ExeIsRawPart( nRawId))
|
||||
return true ;
|
||||
}
|
||||
return false ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeGetFirstGhostPart( void)
|
||||
@@ -677,6 +697,32 @@ IsPartForDuplo( IGeomDB* pGeomDB, int nPartId)
|
||||
return false ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
static bool
|
||||
IsDuplo( IGeomDB* pGeomDB, int nDupId, bool& bInDuploGroup)
|
||||
{
|
||||
// verifica collegamento a DB geometrico
|
||||
if ( pGeomDB == nullptr)
|
||||
return false ;
|
||||
// Recupero il gruppo base dei duplicati
|
||||
int nDuploBaseId = GetDuploBase( pGeomDB) ;
|
||||
if ( nDuploBaseId == GDB_ID_NULL)
|
||||
return false ;
|
||||
// Verifico sia un duplicato (gruppo sotto quello dei duplicati con riferimento a originale)
|
||||
int nBaseId ;
|
||||
if ( pGeomDB->GetGdbType( nDupId) == GDB_TY_GROUP && pGeomDB->ExistsInfo( nDupId, GDB_SI_DUPSOU)) {
|
||||
if ( pGeomDB->GetParentId( nDupId) == nDuploBaseId) {
|
||||
bInDuploGroup = true ;
|
||||
return true ;
|
||||
}
|
||||
else if ( pGeomDB->GetInfo( nDupId, GDB_SI_BASE, nBaseId) && pGeomDB->GetParentId( nBaseId) == nDuploBaseId) {
|
||||
bInDuploGroup = false ;
|
||||
return true ;
|
||||
}
|
||||
}
|
||||
return false ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
int
|
||||
ExeDuploNew( int nSouId)
|
||||
@@ -729,7 +775,8 @@ ExeDuploCount( int nSouId, int& nCount)
|
||||
// Conto i reali duplo
|
||||
nCount = 0 ;
|
||||
for ( int i = 0 ; i < int( vnRef.size()) ; ++ i) {
|
||||
if ( ExeIsDuplo( vnRef[i]))
|
||||
bool bInDuploGroup ;
|
||||
if ( IsDuplo( pGeomDB, vnRef[i], bInDuploGroup))
|
||||
++ nCount ;
|
||||
}
|
||||
return true ;
|
||||
@@ -754,6 +801,105 @@ ExeDuploList( int nSouId, INTVECTOR& vnRef)
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeDuploInRawCount( int nSouId, int& nCount)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// Verifico sia un pezzo
|
||||
if ( ! IsPartForDuplo( pGeomDB, nSouId))
|
||||
return false ;
|
||||
// Recupero info del sorgente
|
||||
INTVECTOR vnRef ;
|
||||
pGeomDB->GetInfo( nSouId, GDB_SI_DUPLIST, vnRef) ;
|
||||
// Conto i reali duplo che sono riferiti o che stanno in un grezzo
|
||||
nCount = 0 ;
|
||||
for ( int i = 0 ; i < int( vnRef.size()) ; ++ i) {
|
||||
// verifico sia un duplo
|
||||
int nDupId = vnRef[i] ;
|
||||
bool bInDuploGroup ;
|
||||
if ( ! IsDuplo( pGeomDB, nDupId, bInDuploGroup))
|
||||
continue ;
|
||||
// se nel gruppo dei duplo
|
||||
if ( bInDuploGroup) {
|
||||
// verifico sia incluso in un grezzo di un gruppo di lavoro
|
||||
INTVECTOR vnRef ;
|
||||
if ( ! pGeomDB->GetInfo( nDupId, GDB_SI_LIST, vnRef))
|
||||
continue ;
|
||||
for ( auto& nId : vnRef) {
|
||||
// verifico esista
|
||||
if ( ! pGeomDB->ExistsObj( nId))
|
||||
continue ;
|
||||
// verifico sia in un grezzo (previsto solo in uno come massimo)
|
||||
int nMachGrpId = pGeomDB->GetParentId( pGeomDB->GetParentId( pGeomDB->GetParentId( nId))) ;
|
||||
string sMachGrpName ;
|
||||
if ( ExeGetMachGroupName( nMachGrpId, sMachGrpName)) {
|
||||
++ nCount ;
|
||||
break ;
|
||||
}
|
||||
}
|
||||
}
|
||||
// se in altro gruppo
|
||||
else {
|
||||
// verifico se incluso nel grezzo del gruppo di lavoro corrente (previsto solo in un gruppo)
|
||||
if ( ExeIsRawPart( pGeomDB->GetParentId( nDupId)))
|
||||
++ nCount ;
|
||||
}
|
||||
}
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeDuploWithoutRawList( INTVECTOR& vnDup)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// Reset del risultato
|
||||
vnDup.clear() ;
|
||||
// Recupero gruppo dei duplo
|
||||
int nDuploBaseId = GetDuploBase( pGeomDB) ;
|
||||
if ( nDuploBaseId == GDB_ID_NULL)
|
||||
return true ;
|
||||
// Ciclo sui duplo
|
||||
for ( int nDuploId = pGeomDB->GetFirstGroupInGroup( nDuploBaseId) ;
|
||||
nDuploId != GDB_ID_NULL ;
|
||||
nDuploId = pGeomDB->GetNextGroup( nDuploId)) {
|
||||
// se marcatore
|
||||
if ( pGeomDB->ExistsInfo( nDuploId, GDB_SI_SOURCE)) {
|
||||
int nPartId = GDB_ID_NULL ;
|
||||
pGeomDB->GetInfo( nDuploId, GDB_SI_SOURCE, nPartId) ;
|
||||
int nMachGrpId = pGeomDB->GetParentId( pGeomDB->GetParentId( pGeomDB->GetParentId( nPartId))) ;
|
||||
string sMachGrpName ;
|
||||
if ( pGeomDB->ExistsInfo( nPartId, GDB_SI_DUPSOU) && ExeGetMachGroupName( nMachGrpId, sMachGrpName))
|
||||
continue ;
|
||||
}
|
||||
// se vero duplo
|
||||
else if ( pGeomDB->ExistsInfo( nDuploId, GDB_SI_DUPSOU) && pGeomDB->ExistsInfo( nDuploId, GDB_SI_LIST)) {
|
||||
// verifico sia incluso in un grezzo di un gruppo di lavoro
|
||||
bool bFound = false ;
|
||||
INTVECTOR vnRef ;
|
||||
pGeomDB->GetInfo( nDuploId, GDB_SI_LIST, vnRef) ;
|
||||
for ( auto& nId : vnRef) {
|
||||
// verifico sia in un grezzo (previsto solo in uno come massimo)
|
||||
int nMachGrpId = pGeomDB->GetParentId( pGeomDB->GetParentId( pGeomDB->GetParentId( nId))) ;
|
||||
string sMachGrpName ;
|
||||
if ( ExeGetMachGroupName( nMachGrpId, sMachGrpName)) {
|
||||
bFound = true ;
|
||||
break ;
|
||||
}
|
||||
}
|
||||
if ( bFound)
|
||||
continue ;
|
||||
}
|
||||
// inserisco nella lista dei duplo senza grezzo
|
||||
vnDup.emplace_back( nDuploId) ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeDuploSetModified( int nSouId)
|
||||
@@ -955,19 +1101,9 @@ ExeIsDuplo( int nDupId)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// Recupero il gruppo base dei duplicati
|
||||
int nDuploBaseId = GetDuploBase( pGeomDB) ;
|
||||
if ( nDuploBaseId == GDB_ID_NULL)
|
||||
return false ;
|
||||
// Verifico sia un duplicato (gruppo sotto quello dei duplicati con riferimento a originale)
|
||||
int nBaseId ;
|
||||
if ( pGeomDB->GetGdbType( nDupId) == GDB_TY_GROUP &&
|
||||
( pGeomDB->GetParentId( nDupId) == nDuploBaseId ||
|
||||
( pGeomDB->GetInfo( nDupId, GDB_SI_BASE, nBaseId) && pGeomDB->GetParentId( nBaseId) == nDuploBaseId)) &&
|
||||
pGeomDB->ExistsInfo( nDupId, GDB_SI_DUPSOU))
|
||||
return true ;
|
||||
else
|
||||
return false ;
|
||||
// Verifico sia un duplicato
|
||||
bool bPartVsGhost ;
|
||||
return IsDuplo( pGeomDB, nDupId, bPartVsGhost) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
+61
-11
@@ -1,13 +1,14 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2014-2015
|
||||
// EgalTech 2014-2023
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EXE_General.cpp Data : 01.09.14 Versione : 1.5i1
|
||||
// File : EXE_General.cpp Data : 14.11.23 Versione : 2.5k2
|
||||
// Contenuto : Funzioni generali per EXE.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 01.09.14 DS Creazione modulo.
|
||||
// 28.11.19 DS Aggiunto caricamento opzionale del Nesting.
|
||||
// 28.11.19 DS Aggiunto caricamento opzionale di Nesting.
|
||||
// 14.11.23 DS Aggiunto caricamento opzionale di Exchange 3dm.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
@@ -17,6 +18,7 @@
|
||||
#include "LUA_Base.h"
|
||||
#include "DllGraphics.h"
|
||||
#include "DllExchange.h"
|
||||
#include "DllExch3dm.h"
|
||||
#include "DllMachKernel.h"
|
||||
#include "DllNesting.h"
|
||||
#include "/EgtDev/Include/EXeExecutor.h"
|
||||
@@ -50,11 +52,13 @@ static string s_sKey ;
|
||||
static int s_nKeyType = KEY_LOCK_TYPE_ANY ;
|
||||
static bool s_bNetHwKey = false ;
|
||||
static int s_nKeyExpDays = 0 ;
|
||||
static int s_nKeyAssExpDays = 0 ;
|
||||
static int s_nKeyOptExpDays = 0 ;
|
||||
static string s_sNestKey ;
|
||||
static string s_sLockId ;
|
||||
static string s_sIniFile ;
|
||||
static bool s_bEnableUI = true ;
|
||||
static pfOnTerminateProcess s_pFunOnTerminateProcess = nullptr ;
|
||||
static pfProcEvents s_pFunProcEvents = nullptr ;
|
||||
static pfOutText s_pFunOutText = nullptr ;
|
||||
static HWND s_hMainWnd = nullptr ;
|
||||
@@ -70,6 +74,7 @@ ExeInit( int nDebug, const string& sLogFile, const string& sLogMsg)
|
||||
if ( s_pGenLog != nullptr)
|
||||
delete s_pGenLog ;
|
||||
// cancello riferimenti a funzioni installate
|
||||
s_pFunOnTerminateProcess = nullptr ;
|
||||
s_pFunProcEvents = nullptr ;
|
||||
s_pFunOutText = nullptr ;
|
||||
s_bEnableUI = true ;
|
||||
@@ -112,6 +117,10 @@ ExeInit( int nDebug, const string& sLogFile, const string& sLogMsg)
|
||||
if ( LoadExchangeDll( s_pGenLog, s_sKey, s_bNetHwKey))
|
||||
LOG_INFO( s_pGenLog, MyGetEExVersion())
|
||||
|
||||
// carico libreria exchange 3dm opzionale
|
||||
if ( LoadExch3dmDll( s_pGenLog, s_sKey, s_bNetHwKey))
|
||||
LOG_INFO( s_pGenLog, MyGetEE3Version())
|
||||
|
||||
// carico libreria di lavorazione opzionale
|
||||
if ( LoadMachKernelDll( s_pGenLog, s_sKey, s_bNetHwKey))
|
||||
LOG_INFO( s_pGenLog, MyGetEMkVersion())
|
||||
@@ -168,9 +177,11 @@ ExeExit( void)
|
||||
// libero le librerie opzionali
|
||||
FreeMachKernelDll() ;
|
||||
FreeExchangeDll() ;
|
||||
FreeExch3dmDll() ;
|
||||
FreeGraphicsDll() ;
|
||||
|
||||
// cancello riferimenti a funzioni installate
|
||||
s_pFunOnTerminateProcess = nullptr ;
|
||||
s_pFunProcEvents = nullptr ;
|
||||
s_pFunOutText = nullptr ;
|
||||
s_bEnableUI = true ;
|
||||
@@ -197,6 +208,30 @@ ExeExit( void)
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetOnTerminateProcess( pfOnTerminateProcess pFun)
|
||||
{
|
||||
s_pFunOnTerminateProcess = pFun ;
|
||||
return ( pFun != nullptr) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeOnTerminateProcess( int nExitCode)
|
||||
{
|
||||
// lancio eventuale callback
|
||||
bool bTerminate = true ;
|
||||
if ( s_pFunOnTerminateProcess != nullptr)
|
||||
bTerminate = s_pFunOnTerminateProcess( nExitCode) ;
|
||||
|
||||
// se confermata chiusura, libero eventuale chiave di rete
|
||||
if ( bTerminate && s_bNetHwKey)
|
||||
CloseNetHwKey() ;
|
||||
|
||||
return bTerminate ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
int
|
||||
ExeGetDebugLevel( void)
|
||||
@@ -278,9 +313,12 @@ ExeSetLockId( const string& sLockId)
|
||||
bOk = ( s_nKeyType != KEY_LOCK_TYPE_HW) ;
|
||||
break ;
|
||||
case KEY_LOCK_TYPE_HW :
|
||||
ExeSetNetHwKey( bNetKey, nUserId) ;
|
||||
bOk = true ;
|
||||
break ;
|
||||
{ string sAddrPort ;
|
||||
GetLockIdStringNetData( sLockId, sAddrPort) ;
|
||||
ExeSetNetHwKey( bNetKey, nUserId, sAddrPort) ;
|
||||
bOk = true ;
|
||||
break ;
|
||||
}
|
||||
}
|
||||
if ( bOk)
|
||||
s_sLockId = sLockId ;
|
||||
@@ -300,11 +338,11 @@ ExeGetLockId( void)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetNetHwKey( bool bNetHwKey, int nUserId)
|
||||
ExeSetNetHwKey( bool bNetHwKey, int nUserId, const string& sAddrPort)
|
||||
{
|
||||
s_bNetHwKey = bNetHwKey ;
|
||||
SetEGnNetHwKey( s_bNetHwKey) ;
|
||||
return SetNetHwKey( s_bNetHwKey, nUserId) ;
|
||||
return SetNetHwKey( s_bNetHwKey, nUserId, sAddrPort) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -435,6 +473,10 @@ ExeGetVersionInfo( string& sVer, const char* szNewLine)
|
||||
sVer += szNewLine ;
|
||||
sVer += MyGetEExVersion() ;
|
||||
}
|
||||
if ( IsLoadedExch3dmDll()) {
|
||||
sVer += szNewLine ;
|
||||
sVer += MyGetEE3Version() ;
|
||||
}
|
||||
if ( IsLoadedMachKernelDll()) {
|
||||
sVer += szNewLine ;
|
||||
sVer += MyGetEMkVersion() ;
|
||||
@@ -478,7 +520,7 @@ bool
|
||||
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) ;
|
||||
int nRet = GetKeyLevelEx( s_sKey, nProd, nVer, nLev, nKLev, s_nKeyExpDays, s_nKeyAssExpDays) ;
|
||||
SetEGnKeyLevel( nRet, nKLev, s_nKeyExpDays) ;
|
||||
if ( nRet != KEY_OK) {
|
||||
string sErr = "Error on Key (EGKL/" + ToString( nRet) + ")" ;
|
||||
@@ -486,7 +528,6 @@ ExeGetKeyLevel( int nProd, int nVer, int nLev, int& nKLev)
|
||||
nKLev = - nRet ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -510,7 +551,6 @@ ExeGetKeyOptions( int nProd, int nVer, int nLev, unsigned int& nOpt2)
|
||||
LOG_ERROR( s_pGenLog, sErr.c_str()) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -524,6 +564,16 @@ ExeGetKeyLeftDays( int& nLeftDays)
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetKeyAssLeftDays( int& nAssLeftDays)
|
||||
{
|
||||
if ( s_nKeyAssExpDays == 0)
|
||||
return false ;
|
||||
nAssLeftDays = s_nKeyAssExpDays - GetCurrDay() ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetKeyOptLeftDays( int& nOptLeftDays)
|
||||
|
||||
+735
-634
File diff suppressed because it is too large
Load Diff
@@ -277,6 +277,8 @@ ExeNewFile( void)
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// scrivo il log
|
||||
LOG_INFO( GetLogger(), "New File") ;
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
}
|
||||
@@ -316,6 +318,11 @@ ExeOpenFile( const string& sFilePath)
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// scrivo il log
|
||||
{
|
||||
string sLog = "Open File " + sFilePath ;
|
||||
LOG_INFO( GetLogger(), sLog.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
}
|
||||
@@ -447,6 +454,11 @@ ExeSaveFile( const string& sFilePath, int nFlag)
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// scrivo il log
|
||||
{
|
||||
string sLog = "Saved File " + sFilePath ;
|
||||
LOG_INFO( GetLogger(), sLog.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
+59
-9
@@ -284,6 +284,26 @@ ExeRemoveMachGroup( int nMGroupId)
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeChangeMachGroupName( int nId, const string& sNewName)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// cambia il nome della macchinata
|
||||
bool bOk = pMachMgr->ChangeMachGroupName( nId, sNewName) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtChangeMachGroupName(" + ToString( nId) + ",'" +
|
||||
sNewName + "')" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetMachGroupName( int nId, string& sName)
|
||||
@@ -311,8 +331,8 @@ int
|
||||
ExeGetMachGroupId( const string& sName)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// recupero l'indice della macchinata
|
||||
VERIFY_MACHMGR( pMachMgr, GDB_ID_NULL)
|
||||
// recupero l'identificativo della macchinata
|
||||
return pMachMgr->GetMachGroupId( sName) ;
|
||||
}
|
||||
|
||||
@@ -373,16 +393,16 @@ ExeAddPhase( void)
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, 0)
|
||||
// aggiungo una nuova fase di lavorazione alla macchinata corrente
|
||||
int nId = pMachMgr->AddPhase() ;
|
||||
int nInd = pMachMgr->AddPhase() ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtAddPhase()"
|
||||
" -- Id=" + ToString( nId) ;
|
||||
" -- Ind=" + ToString( nInd) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return nId ;
|
||||
return nInd ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -471,7 +491,7 @@ bool
|
||||
ExeIsRawPart( int nRawId)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, GDB_ID_NULL)
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// verifico se è un grezzo della macchinata corrente
|
||||
return pMachMgr->IsRawPart( nRawId) ;
|
||||
}
|
||||
@@ -1585,6 +1605,16 @@ ExeFindToolInCurrSetup( const string& sTool)
|
||||
return pMachMgr->FindToolInCurrSetup( sTool) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetToolSetupPosInCurrSetup( const string& sTool, string& sTcPos)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// eseguo la verifica
|
||||
return pMachMgr->GetToolSetupPosInCurrSetup( sTool, sTcPos) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetToolsInCurrSetupPos( const string& sTcPos, STRVECTOR& vsTools)
|
||||
@@ -2866,12 +2896,12 @@ ExeGetClEntMove( int nEntId, int& nMove)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetClEntFlag( int nEntId, int& nFlag)
|
||||
ExeGetClEntFlag( int nEntId, int& nFlag, int& nFlag2)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// recupero il flag
|
||||
return pMachMgr->GetClEntFlag( nEntId, nFlag) ;
|
||||
// recupero i flag
|
||||
return pMachMgr->GetClEntFlag( nEntId, nFlag, nFlag2) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -2884,6 +2914,16 @@ ExeGetClEntIndex( int nEntId, int& nIndex)
|
||||
return pMachMgr->GetClEntIndex( nEntId, nIndex) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetClEntAxesVal( int nEntId, DBLVECTOR& vAxes)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// recupero il valore degli assi
|
||||
return pMachMgr->GetClEntAxesVal( nEntId, vAxes) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Simulazione
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -3162,6 +3202,16 @@ ExeSetCalcTool( const string& sTool, const string& sHead, int nExit)
|
||||
return pMachMgr->SetCalcTool( sTool, sHead, nExit) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetAllCurrAxesName( STRVECTOR& vAxName)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// recupero gli assi correnti derivanti dalla scelta di tavola e utensile
|
||||
return pMachMgr->GetAllCurrAxesName( vAxName) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetRotAxisBlock( const string& sAxis, double dVal)
|
||||
|
||||
@@ -183,10 +183,23 @@ ExeSetGridGeo( double dSnapStep, int nMinLineSstep, int nMajLineSstep, int nExtS
|
||||
{
|
||||
IEGrScene* pScene = GetCurrScene() ;
|
||||
VERIFY_SCENE( pScene, false)
|
||||
|
||||
// imposto i parametri geometrici di griglia
|
||||
return pScene->SetGridGeo( dSnapStep, nMinLineSstep, nMajLineSstep, nExtSstep) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetGridGeoAdv( double dSnapStep, int nMinLineSstep, int nMajLineSstep,
|
||||
double dXmin, double dXmax, double dYmin, double dYmax)
|
||||
{
|
||||
IEGrScene* pScene = GetCurrScene() ;
|
||||
VERIFY_SCENE( pScene, false)
|
||||
|
||||
// imposto i parametri geometrici di griglia
|
||||
return pScene->SetGridGeoAdv( dSnapStep, nMinLineSstep, nMajLineSstep, dXmin, dXmax, dYmin, dYmax) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetGridColor( Color colMin, Color colMaj)
|
||||
|
||||
Binary file not shown.
+5
-1
@@ -200,7 +200,7 @@ copy $(TargetPath) \EgtProg\Dll32</Command>
|
||||
<OpenMPSupport>false</OpenMPSupport>
|
||||
<EnableFiberSafeOptimizations>false</EnableFiberSafeOptimizations>
|
||||
<EnableParallelCodeGeneration>true</EnableParallelCodeGeneration>
|
||||
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
|
||||
<EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
<AdditionalOptions>-Wno-tautological-undefined-compare</AdditionalOptions>
|
||||
</ClCompile>
|
||||
@@ -228,6 +228,7 @@ copy $(TargetPath) \EgtProg\Dll64</Command>
|
||||
<ClInclude Include="..\Include\EXeConst.h" />
|
||||
<ClInclude Include="..\Include\EXeDllMain.h" />
|
||||
<ClInclude Include="..\Include\EXeExecutor.h" />
|
||||
<ClInclude Include="DllExch3dm.h" />
|
||||
<ClInclude Include="DllMain.h" />
|
||||
<ClInclude Include="DllNesting.h" />
|
||||
<ClInclude Include="EXE.h" />
|
||||
@@ -248,6 +249,7 @@ copy $(TargetPath) \EgtProg\Dll64</Command>
|
||||
<ClInclude Include="stdafx.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="DllExch3dm.cpp" />
|
||||
<ClCompile Include="DllNesting.cpp" />
|
||||
<ClCompile Include="EXE_BeamMgr.cpp" />
|
||||
<ClCompile Include="EXE_CAvTool.cpp" />
|
||||
@@ -255,6 +257,7 @@ copy $(TargetPath) \EgtProg\Dll64</Command>
|
||||
<ClCompile Include="EXE_GdbCreateVol.cpp" />
|
||||
<ClCompile Include="EXE_GdbGet.cpp" />
|
||||
<ClCompile Include="EXE_GdbGetCurve.cpp" />
|
||||
<ClCompile Include="EXE_GdbGetPocketing.cpp" />
|
||||
<ClCompile Include="EXE_GdbGetSurf.cpp" />
|
||||
<ClCompile Include="EXE_GdbGetVol.cpp" />
|
||||
<ClCompile Include="EXE_GdbModifyVol.cpp" />
|
||||
@@ -305,6 +308,7 @@ copy $(TargetPath) \EgtProg\Dll64</Command>
|
||||
<ClCompile Include="LUA_CDeObjSolid.cpp" />
|
||||
<ClCompile Include="LUA_GdbGet.cpp" />
|
||||
<ClCompile Include="LUA_GdbGetCurve.cpp" />
|
||||
<ClCompile Include="LUA_GdbGetPocketing.cpp" />
|
||||
<ClCompile Include="LUA_GdbGetSurf.cpp" />
|
||||
<ClCompile Include="LUA_GdbGetVol.cpp" />
|
||||
<ClCompile Include="LUA_GeoDist.cpp" />
|
||||
|
||||
@@ -108,6 +108,9 @@
|
||||
<ClInclude Include="DllNesting.h">
|
||||
<Filter>File di intestazione</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="DllExch3dm.h">
|
||||
<Filter>File di intestazione</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="LUA_Exchange.cpp">
|
||||
@@ -389,6 +392,15 @@
|
||||
<ClCompile Include="EXE_Mutex.cpp">
|
||||
<Filter>File di origine\EXE</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="DllExch3dm.cpp">
|
||||
<Filter>File di origine\Optional Dll</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="EXE_GdbGetPocketing.cpp">
|
||||
<Filter>File di origine\EXE</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="LUA_GdbGetPocketing.cpp">
|
||||
<Filter>File di origine\LUA</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="EgtExecutor.rc">
|
||||
|
||||
@@ -54,6 +54,9 @@ bool LuaInstallGdbModifyVol( LuaMgr& luaMgr) ;
|
||||
//-------------------------- GdbGet ------------------------------------------
|
||||
bool LuaInstallGdbGet( LuaMgr& luaMgr) ;
|
||||
|
||||
//-------------------------- GdbGetPocketing ---------------------------------
|
||||
bool LuaInstallGdbGetPocketing( LuaMgr& luaMgr) ;
|
||||
|
||||
//-------------------------- GdbGetCurve -------------------------------------
|
||||
bool LuaInstallGdbGetCurve( LuaMgr& luaMgr) ;
|
||||
|
||||
@@ -62,7 +65,7 @@ bool LuaInstallGdbGetSurf( LuaMgr& luaMgr) ;
|
||||
|
||||
//-------------------------- GdbGetVol ---------------------------------------
|
||||
bool LuaInstallGdbGetVol( LuaMgr& luaMgr) ;
|
||||
|
||||
|
||||
//-------------------------- GdbPartLayer ------------------------------------
|
||||
bool LuaInstallGdbPartLayer( LuaMgr& luaMgr) ;
|
||||
|
||||
|
||||
@@ -78,6 +78,10 @@ LuaInstallEgtFunctions( LuaMgr& LuaMgr)
|
||||
LOG_ERROR( GetLogger(), "Error in LuaInstallGdbGet (LuaInstallEgtFunctions)")
|
||||
return false ;
|
||||
}
|
||||
if ( ! LuaInstallGdbGetPocketing( LuaMgr)) {
|
||||
LOG_ERROR( GetLogger(), "Error in LuaInstallGdbGetPocketing (LuaInstallEgtFunctions)")
|
||||
return false ;
|
||||
}
|
||||
if ( ! LuaInstallGdbGetCurve( LuaMgr)) {
|
||||
LOG_ERROR( GetLogger(), "Error in LuaInstallGdbGetCurve (LuaInstallEgtFunctions)")
|
||||
return false ;
|
||||
|
||||
@@ -118,6 +118,27 @@ LuaCAvGetToolOutline( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCAvToolPosBox( lua_State* L)
|
||||
{
|
||||
// 4 parametri : ptP, vtAx, b3Box, vtMove
|
||||
Point3d ptP ;
|
||||
LuaCheckParam( L, 1, ptP)
|
||||
Vector3d vtAx ;
|
||||
LuaCheckParam( L, 2, vtAx)
|
||||
BBox3d b3Box ;
|
||||
LuaCheckParam( L, 3, b3Box)
|
||||
Vector3d vtMove ;
|
||||
LuaCheckParam( L, 4, vtMove)
|
||||
LuaClearStack( L) ;
|
||||
// determino il movimento da dare all'utensile per evitare la collisione con il parallelepipedo
|
||||
double dMove = ExeCAvToolPosBox( ptP, vtAx, b3Box, vtMove) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, dMove) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCAvToolPosStm( lua_State* L)
|
||||
@@ -176,6 +197,7 @@ LuaInstallCAvTool( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCAvSetSawTool", LuaCAvSetSawTool) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCAvSetGenTool", LuaCAvSetGenTool) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCAvGetToolOutline", LuaCAvGetToolOutline) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCAvToolPosBox", LuaCAvToolPosBox) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCAvToolPosStm", LuaCAvToolPosStm) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCAvToolPathStm", LuaCAvToolPathStm) ;
|
||||
return bOk ;
|
||||
|
||||
+37
-1
@@ -169,6 +169,21 @@ LuaImport3MF( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaImport3dm( lua_State* L)
|
||||
{
|
||||
// 1 parametro : path del file da importare
|
||||
string sFilePath ;
|
||||
LuaCheckParam( L, 1, sFilePath)
|
||||
LuaClearStack( L) ;
|
||||
// apro il file
|
||||
bool bOk = ExeImport3dm( sFilePath) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaAdvancedImport( lua_State* L)
|
||||
@@ -239,7 +254,26 @@ LuaExport3MF( lua_State* L)
|
||||
LuaGetParam( L, 3, nFilter) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo il file
|
||||
bool bOk = ExeExport3MF( nGroupId, sFilePath) ;
|
||||
bool bOk = ExeExport3MF( nGroupId, sFilePath, nFilter) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaExport3dm( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : GroupId e path del file da esportare [, Filter]
|
||||
int nGroupId ;
|
||||
LuaCheckParam( L, 1, nGroupId)
|
||||
string sFilePath ;
|
||||
LuaCheckParam( L, 2, sFilePath)
|
||||
int nFilter = EEXFLT_DEFAULT ;
|
||||
LuaGetParam( L, 3, nFilter) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo il file
|
||||
bool bOk = ExeExport3dm( nGroupId, sFilePath, nFilter) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
@@ -297,10 +331,12 @@ LuaInstallExchange( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtImportPnt", LuaImportPnt) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtImportStl", LuaImportStl) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtImport3MF", LuaImport3MF) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtImport3dm", LuaImport3dm) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtAdvancedImport", LuaAdvancedImport) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtExportDxf", LuaExportDxf) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtExportStl", LuaExportStl) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtExport3MF", LuaExport3MF) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtExport3dm", LuaExport3dm) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtExportSvg", LuaExportSvg) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtExportThreeJS", LuaExportThreeJS) ;
|
||||
return bOk ;
|
||||
|
||||
+38
-2
@@ -147,7 +147,7 @@ LuaCreateSurfFlatRegion( lua_State* L)
|
||||
static int
|
||||
LuaCreateSurfFrFatCurve( lua_State* L)
|
||||
{
|
||||
// 4 parametri : ParentId, nCrvId, dRad, bSquared
|
||||
// 4 o 5 o 6 parametri : ParentId, nCrvId, dRad, bSquared [, bSquaredMids] [, dLinTol]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
int nCrvId ;
|
||||
@@ -156,9 +156,13 @@ LuaCreateSurfFrFatCurve( lua_State* L)
|
||||
LuaCheckParam( L, 3, dRad)
|
||||
bool bSquared ;
|
||||
LuaCheckParam( L, 4, bSquared)
|
||||
bool bSquaredMids = bSquared ;
|
||||
LuaGetParam( L, 5, bSquaredMids) ;
|
||||
double dLinTol = 10 * EPS_SMALL ;
|
||||
LuaGetParam( L, 6, dLinTol) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo una regione piana
|
||||
int nId = ExeCreateSurfFrFatCurve( nParentId, nCrvId, dRad, bSquared) ;
|
||||
int nId = ExeCreateSurfFrFatCurve( nParentId, nCrvId, dRad, bSquared, bSquaredMids, dLinTol) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
@@ -868,6 +872,37 @@ LuaCreateSurfBezierRational( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfBezierLeaves( lua_State* L)
|
||||
{
|
||||
// 2, 3 o 4 parametri : ParentId, nId [, nTextHeight] [, bShowTrim]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
int nSurfBzId ;
|
||||
LuaCheckParam( L, 2, nSurfBzId)
|
||||
int nTextHeight = 50 ;
|
||||
bool bShowTrim = false ;
|
||||
if ( LuaGetParam( L, 3, nTextHeight))
|
||||
LuaGetParam( L, 4, bShowTrim) ;
|
||||
else
|
||||
LuaGetParam( L, 3, bShowTrim) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo la superficie
|
||||
int nCount = 0 ;
|
||||
int nId = ExeCreateSurfBezierLeaves( nParentId, nSurfBzId, nTextHeight, bShowTrim, &nCount) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL) {
|
||||
LuaSetParam( L, nId) ;
|
||||
LuaSetParam( L, nCount) ;
|
||||
}
|
||||
else {
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L) ;
|
||||
}
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallGdbCreateSurf( LuaMgr& luaMgr)
|
||||
@@ -904,5 +939,6 @@ LuaInstallGdbCreateSurf( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmByVolZmap", LuaCreateSurfTmByVolZmap) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBezier", LuaCreateSurfBezier) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBezierRat", LuaCreateSurfBezierRational) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBezierLeaves", LuaCreateSurfBezierLeaves) ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2023-2023
|
||||
//----------------------------------------------------------------------------
|
||||
// File : LUA_GdbGetPocketing.cpp Data : 28.11.23 Versione : 2.5k6
|
||||
// Contenuto : Funzioni di creazione percorsi di svuotatura o infill per LUA.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 29.11.23 RE Creazione modulo.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
//--------------------------- Include ----------------------------------------
|
||||
#include "stdafx.h"
|
||||
#include "LUA.h"
|
||||
#include "/EgtDev/Include/EXeExecutor.h"
|
||||
|
||||
using namespace std ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaPocketing( lua_State* L) {
|
||||
// 7 parametri : vId, dRad, dStep, dAngle, nType, bSmooth, nDestGrpId
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId) ;
|
||||
double dRad ;
|
||||
LuaCheckParam( L, 2, dRad) ;
|
||||
double dStep ;
|
||||
LuaCheckParam( L, 3, dStep) ;
|
||||
double dAngle ;
|
||||
LuaCheckParam( L, 4, dAngle) ;
|
||||
int nType ;
|
||||
LuaCheckParam( L, 5, nType) ;
|
||||
bool bSmooth ;
|
||||
LuaCheckParam( L, 6, bSmooth) ;
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 7, nDestGrpId) ;
|
||||
LuaClearStack( L) ;
|
||||
// calcolo delle curve elementari di svuotatura
|
||||
int nFirstId = GDB_ID_NULL ;
|
||||
int nCrvCount = 0 ;
|
||||
bool bOk = ExePocketing( nId, dRad, dStep, dAngle, nType, bSmooth, nDestGrpId, nFirstId, nCrvCount) ;
|
||||
if ( ! bOk)
|
||||
LuaSetParam( L) ;
|
||||
else
|
||||
LuaSetParam( L, nFirstId) ;
|
||||
LuaSetParam( L, nCrvCount) ;
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfFrGetZigZagInfill( lua_State* L)
|
||||
{
|
||||
// 6 parametri : nId, nDestGrpId, dSideStep, dAng, bSmooth, bRemoveOverlapLink
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 2, nDestGrpId)
|
||||
double dStep ;
|
||||
LuaCheckParam( L, 3, dStep)
|
||||
double dAng ;
|
||||
LuaCheckParam( L, 4, dAng) ;
|
||||
bool bSmooth ;
|
||||
LuaCheckParam( L, 5, bSmooth) ;
|
||||
bool bRemoveOverlapLink ;
|
||||
LuaCheckParam( L, 6, bRemoveOverlapLink) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero i contorni della superficie
|
||||
int nCount = 0 ;
|
||||
int nNewId = ExeSurfFrGetZigZagInfill( nId, nDestGrpId, dStep, dAng, bSmooth, bRemoveOverlapLink, &nCount) ;
|
||||
// restituisco il risultato
|
||||
if ( nNewId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nNewId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L, nCount) ;
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallGdbGetPocketing( LuaMgr& luaMgr)
|
||||
{
|
||||
bool bOk = ( &luaMgr != nullptr) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtPocketing", LuaPocketing) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetSurfFrZigZagInfill", LuaSurfFrGetZigZagInfill) ;
|
||||
return bOk ;
|
||||
}
|
||||
+89
-35
@@ -237,37 +237,6 @@ LuaSurfFrRotateSimpleNoCollision( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfFrGetZigZagInfill( lua_State* L)
|
||||
{
|
||||
// 6 parametri : nId, nDestGrpId, dSideStep, dAng, bAllowStepCorrection, bInvert
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 2, nDestGrpId)
|
||||
double dStep ;
|
||||
LuaCheckParam( L, 3, dStep)
|
||||
double dAng ;
|
||||
LuaCheckParam( L, 4, dAng) ;
|
||||
bool bStepCorrection ;
|
||||
LuaCheckParam( L, 5, bStepCorrection)
|
||||
bool bInvert ;
|
||||
LuaCheckParam( L, 6, bInvert)
|
||||
LuaClearStack( L) ;
|
||||
// recupero i contorni della superficie
|
||||
int nCount = 0 ;
|
||||
int nNewId = ExeSurfFrGetZigZagInfill( nId, nDestGrpId, dStep, dAng, bStepCorrection, bInvert, &nCount) ;
|
||||
// restituisco il risultato
|
||||
if ( nNewId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nNewId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L, nCount) ;
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmVertexCount( lua_State* L)
|
||||
@@ -625,6 +594,58 @@ LuaSurfTmFacetMinAreaRectangle( lua_State* L)
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmFacetElevationInBBox( lua_State* L)
|
||||
{
|
||||
// 3 o 4 o 5 parametri : Id, nFacet, b3Box [, bAcceptOutFacet] [, nRefId]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nFacet ;
|
||||
LuaCheckParam( L, 2, nFacet)
|
||||
BBox3d b3Box ;
|
||||
LuaCheckParam( L, 3, b3Box)
|
||||
bool bAcceptOutFacet = false ;
|
||||
int nRefId = nId ;
|
||||
if ( ! LuaGetParam( L, 4, nRefId)) {
|
||||
LuaGetParam( L, 4, bAcceptOutFacet) ;
|
||||
LuaGetParam( L, 5, nRefId) ;
|
||||
}
|
||||
LuaClearStack( L) ;
|
||||
// calcolo elevazione
|
||||
double dElev ;
|
||||
bool bOk = ExeSurfTmFacetElevationInBBox( nId, nFacet, b3Box, bAcceptOutFacet, nRefId, dElev) ;
|
||||
if ( bOk)
|
||||
LuaSetParam( L, dElev) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmFacetElevationInClosedSurfTm( lua_State* L)
|
||||
{
|
||||
// 3 o 4 parametri : nFacetStmId, nFacet, nClosedStmId [, bAcceptOutFacet]
|
||||
int nFacetStmId ;
|
||||
LuaCheckParam( L, 1, nFacetStmId)
|
||||
int nFacet ;
|
||||
LuaCheckParam( L, 2, nFacet)
|
||||
int nClosedStmId ;
|
||||
LuaCheckParam( L, 3, nClosedStmId)
|
||||
bool bAcceptOutFacet = false ;
|
||||
LuaGetParam( L, 4, bAcceptOutFacet) ;
|
||||
LuaClearStack( L) ;
|
||||
// calcolo elevazione
|
||||
double dElev ;
|
||||
bool bOk = ExeSurfTmFacetElevationInClosedSurfTm( nFacetStmId, nFacet, nClosedStmId, bAcceptOutFacet, dElev) ;
|
||||
if ( bOk)
|
||||
LuaSetParam( L, dElev) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmFacetOppositeSide( lua_State* L)
|
||||
@@ -723,7 +744,7 @@ LuaExtractSurfTmLoops( lua_State* L)
|
||||
static int
|
||||
LuaGetSurfTmSilhouette( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : nId, vtDir, dToler, nDestGrpId [, nRefType]
|
||||
// 4 o 5 o 6 parametri : nId, vtDir, dToler, nDestGrpId [, nRefType [, bAllTria]]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
Vector3d vtDir ;
|
||||
@@ -733,11 +754,15 @@ LuaGetSurfTmSilhouette( lua_State* L)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 4, nDestGrpId)
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
bool bAllTria = false ;
|
||||
if ( LuaGetParam( L, 5, nRefType))
|
||||
LuaGetParam( L, 6, bAllTria) ;
|
||||
else
|
||||
LuaGetParam( L, 5, bAllTria) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero i contorni della superficie
|
||||
int nCount = 0 ;
|
||||
int nNewId = ExeGetSurfTmSilhouette( nId, vtDir, dToler, nDestGrpId, nRefType, &nCount) ;
|
||||
int nNewId = ExeGetSurfTmSilhouette( nId, vtDir, dToler, nDestGrpId, nRefType, &nCount, bAllTria) ;
|
||||
// restituisco il risultato
|
||||
if ( nNewId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nNewId) ;
|
||||
@@ -793,6 +818,33 @@ LuaCopySurfTmFacet( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmGetEdges( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : nId, nDestGrpId [, bSmoothAng]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 2, nDestGrpId)
|
||||
bool bSmoothAng = true ;
|
||||
LuaGetParam( L, 3, bSmoothAng) ;
|
||||
LuaClearStack( L) ;
|
||||
// calcolo gli spigoli della superficie
|
||||
int nCount ;
|
||||
int nFirstId = ExeSurfTmGetEdges( nId, nDestGrpId, bSmoothAng, &nCount) ;
|
||||
// restituisco il risultato
|
||||
if ( nFirstId != GDB_ID_NULL || nCount != -1) {
|
||||
LuaSetParam( L, nFirstId) ;
|
||||
LuaSetParam( L, nCount) ;
|
||||
}
|
||||
else {
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L) ;
|
||||
}
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfBezierGetPoint( lua_State* L)
|
||||
@@ -1044,7 +1096,6 @@ LuaInstallGdbGetSurf( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtExtractSurfFrChunkLoops", LuaExtractSurfFrChunkLoops) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrMoveSimpleNoCollision", LuaSurfFrMoveSimpleNoCollision) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrRotateSimpleNoCollision", LuaSurfFrRotateSimpleNoCollision) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetSurfFrZigZagInfill", LuaSurfFrGetZigZagInfill) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmVertexCount", LuaSurfTmVertexCount) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmFacetCount", LuaSurfTmFacetCount) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmPartCount", LuaSurfTmPartCount) ;
|
||||
@@ -1061,12 +1112,15 @@ LuaInstallGdbGetSurf( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmFacetCenter", LuaSurfTmFacetCenter) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmFacetNormVersor", LuaSurfTmFacetNormVersor) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmFacetMinAreaRectangle", LuaSurfTmFacetMinAreaRectangle) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmFacetElevationInBBox", LuaSurfTmFacetElevationInBBox) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmFacetElevationInClosedSurfTm", LuaSurfTmFacetElevationInClosedSurfTm) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmFacetOppositeSide", LuaSurfTmFacetOppositeSide) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmFacetsContact", LuaSurfTmFacetsContact) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtExtractSurfTmLoops", LuaExtractSurfTmLoops) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetSurfTmSilhouette", LuaGetSurfTmSilhouette) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtExtractSurfTmFacetLoops", LuaExtractSurfTmFacetLoops) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCopySurfTmFacet", LuaCopySurfTmFacet) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetEdges", LuaSurfTmGetEdges) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBezierGetPoint", LuaSurfBezierGetPoint) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBezierGetPointD1", LuaSurfBezierGetPointD1) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBezierGetPointNrmD1", LuaSurfBezierGetPointNrmD1) ;
|
||||
|
||||
+2
-1
@@ -211,6 +211,7 @@ LuaVolZmapGetDepth( lua_State* L)
|
||||
}
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaVolZmapGetEdges( lua_State* L)
|
||||
@@ -221,7 +222,7 @@ LuaVolZmapGetEdges( lua_State* L)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 2, nDestGrpId)
|
||||
LuaClearStack( L) ;
|
||||
// eseguo calcolo profondità dal punto lungo la direzione
|
||||
// calcolo gli spigoli del solido
|
||||
int nCount ;
|
||||
int nFirstId = ExeVolZmapGetEdges( nId, nDestGrpId, &nCount) ;
|
||||
// restituisco il risultato
|
||||
|
||||
+84
-2
@@ -19,6 +19,7 @@
|
||||
#include "/EgtDev/Include/EXeConst.h"
|
||||
#include "/EgtDev/Include/EGkCurve.h"
|
||||
#include "/EgtDev/Include/EGkLuaAux.h"
|
||||
#include "/EgtDev/Include/EGkCalcPocketing.h"
|
||||
|
||||
using namespace std ;
|
||||
|
||||
@@ -59,17 +60,19 @@ LuaOffsetCurve( lua_State* L)
|
||||
static int
|
||||
LuaOffsetCurveAdv( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : Id, dDist [, nType]
|
||||
// 2 o 3 o 4 parametri : Id, dDist [, nType] [, dLinTol]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
double dDist ;
|
||||
LuaCheckParam( L, 2, dDist)
|
||||
int nType = ICurve::OFF_FILLET ;
|
||||
LuaGetParam( L, 3, nType) ;
|
||||
double dLinTol = 10 * EPS_SMALL ;
|
||||
LuaGetParam( L, 4, dLinTol) ;
|
||||
LuaClearStack( L) ;
|
||||
// offset della curva
|
||||
int nCount ;
|
||||
int nNewId = ExeOffsetCurveAdv( nId, dDist, nType, &nCount) ;
|
||||
int nNewId = ExeOffsetCurveAdv( nId, dDist, nType, &nCount, dLinTol) ;
|
||||
if ( nCount >= 0) {
|
||||
LuaSetParam( L, nNewId) ;
|
||||
LuaSetParam( L, nCount) ;
|
||||
@@ -968,6 +971,82 @@ LuaProjectCurveOnSurfTm( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCurveGetVoronoi( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : Id, nDestGrpId [, nBound]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 2, nDestGrpId)
|
||||
int nBound = 3 ; // VORONOI_STD_BOUND
|
||||
LuaGetParam( L, 3, nBound) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo
|
||||
int nCount = 0 ;
|
||||
int nNewId = ExeCurveGetVoronoi( nId, nDestGrpId, nBound, &nCount) ;
|
||||
if ( nNewId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nNewId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L, nCount) ;
|
||||
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCurveMedialAxisAdv( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : Id, nDestGrpId [, nSide]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 2, nDestGrpId)
|
||||
int nSide = 1 ; // WMAT_LEFT
|
||||
LuaGetParam( L, 3, nSide) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo
|
||||
int nCount = 0 ;
|
||||
int nNewId = ExeCurveGetMedialAxis( nId, nDestGrpId, nSide, &nCount) ;
|
||||
if ( nNewId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nNewId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L, nCount) ;
|
||||
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCurveGetFatCurve( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : Id, nDestGrpId, dRad, bSquare [, bSquareMids]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 2, nDestGrpId)
|
||||
double dRad ;
|
||||
LuaCheckParam( L, 3, dRad)
|
||||
bool bSquareEnds ;
|
||||
LuaCheckParam( L, 4, bSquareEnds)
|
||||
bool bSquareMids = bSquareEnds ;
|
||||
LuaGetParam( L, 5, bSquareMids) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo
|
||||
int nCount = 0 ;
|
||||
int nNewId = ExeCurveGetFatCurve( nId, nDestGrpId, dRad, bSquareEnds, bSquareMids, &nCount) ;
|
||||
if ( nNewId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nNewId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L, nCount) ;
|
||||
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallGdbModifyCurve( LuaMgr& luaMgr)
|
||||
@@ -1024,5 +1103,8 @@ LuaInstallGdbModifyCurve( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtChainCurvesInGroup", LuaChainCurvesInGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtReorderCurvesInGroup", LuaReorderCurvesInGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtProjectCurveOnSurfTm", LuaProjectCurveOnSurfTm) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveGetVoronoi", LuaCurveGetVoronoi) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveMedialAxisAdv", LuaCurveMedialAxisAdv) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveGetFatCurve", LuaCurveGetFatCurve) ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
@@ -141,6 +141,29 @@ LuaSurfFrOffset( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfFrOffsetAdv( lua_State* L)
|
||||
{
|
||||
// 3 parametri : Id, dDist, nType
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
double dDist ;
|
||||
LuaCheckParam( L, 2, dDist)
|
||||
int nType = ICurve::OFF_FILLET ;
|
||||
LuaGetParam( L, 3, nType) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo l'offset della regione
|
||||
int nNewId = GDB_ID_NULL ;
|
||||
bool bOk = ExeSurfFrOffsetAdv( nId, dDist, nType, nNewId) ;
|
||||
if ( bOk)
|
||||
LuaSetParam( L, nNewId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmMoveVertex( lua_State* L)
|
||||
@@ -388,6 +411,57 @@ LuaSurfTmCut( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmSubtractProjectedFacesOnFace( lua_State* L)
|
||||
{
|
||||
// 3 o 4 o 5 parametri : nSurfId, nFaceInd, nDestGrpId [, vSurfsId] [, bOCFlag]
|
||||
int nSurfId ;
|
||||
LuaCheckParam( L, 1, nSurfId) ;
|
||||
int nFaceInd ;
|
||||
LuaCheckParam( L, 2, nFaceInd) ;
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 3, nDestGrpId) ;
|
||||
INTVECTOR vSurfsId ;
|
||||
bool bOCFlag = true ;
|
||||
if ( LuaGetParam( L, 4, vSurfsId))
|
||||
LuaGetParam( L, 5, bOCFlag) ;
|
||||
else
|
||||
LuaGetParam( L, 4, bOCFlag) ;
|
||||
LuaClearStack( L) ;
|
||||
// sottraggo alla faccia scelta la proiezione delle altre TriMesh
|
||||
int nNewId = GDB_ID_NULL;
|
||||
bool bExistProjection = false ;
|
||||
int nNewFaceNbr = 0 ;
|
||||
bool bOk = ExeSurfTmSubtractProjectedFacesOnFace( nSurfId, nFaceInd, nDestGrpId, vSurfsId,
|
||||
bOCFlag, bExistProjection, nNewId, nNewFaceNbr) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
LuaSetParam( L, bExistProjection) ;
|
||||
if ( nNewId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nNewId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L, nNewFaceNbr) ;
|
||||
return 4 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfBzTrim( lua_State* L)
|
||||
{
|
||||
// 2 parametri : nId, nCutterId
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nCutterId ;
|
||||
LuaCheckParam( L, 2, nCutterId)
|
||||
LuaClearStack( L) ;
|
||||
// taglio la prima superficie in base alla seconda
|
||||
//bool bOk = ExeSurfTmCut( nId, nCutterId, bInVsOut, bOn) ;
|
||||
bool bOk = ExeSurfBzTrim( nId, nCutterId) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallGdbModifySurf( LuaMgr& luaMgr)
|
||||
@@ -400,6 +474,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( "EgtSurfFrOffsetAdv", LuaSurfFrOffsetAdv) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmMoveVertex", LuaSurfTmMoveVertex) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmToTriangles", LuaSurfTmToTriangles) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmRemoveFacet", LuaSurfTmRemoveFacet) ;
|
||||
@@ -413,5 +488,7 @@ LuaInstallGdbModifySurf( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmResetTwoColors", LuaSurfTmResetTwoColors) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmSplit", LuaSurfTmSplit) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmCut", LuaSurfTmCut) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmSubtractProjectedFacesOnFace", LuaSurfTmSubtractProjectedFacesOnFace) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBzTrim", LuaSurfBzTrim) ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
+3
-13
@@ -519,10 +519,8 @@ LuaSetInfo( lua_State* L)
|
||||
} break ;
|
||||
case LUA_TTABLE :
|
||||
{ Frame3d frVal ;
|
||||
BBox3d b3Val ;
|
||||
Vector3d vtVal ; // va bene anche per Point3d
|
||||
INTVECTOR vnVal ;
|
||||
DBLVECTOR vdVal ;
|
||||
BBox3d b3Val ;
|
||||
DBLVECTOR vdVal ; // va bene anche per Vector3d, Point3d, vnVal
|
||||
STRVECTOR vsVal ;
|
||||
if ( LuaGetParam( L, 3, frVal)) {
|
||||
LuaClearStack( L) ;
|
||||
@@ -531,15 +529,7 @@ LuaSetInfo( lua_State* L)
|
||||
else if ( LuaGetParam( L, 3, b3Val)) {
|
||||
LuaClearStack( L) ;
|
||||
bOk = ExeSetInfo( nId, sKey, b3Val) ;
|
||||
}
|
||||
else if ( LuaGetParam( L, 3, vtVal)) {
|
||||
LuaClearStack( L) ;
|
||||
bOk = ExeSetInfo( nId, sKey, vtVal) ;
|
||||
}
|
||||
else if ( LuaGetParam( L, 3, vnVal)) {
|
||||
LuaClearStack( L) ;
|
||||
bOk = ExeSetInfo( nId, sKey, vnVal) ;
|
||||
}
|
||||
}
|
||||
else if ( LuaGetParam( L, 3, vdVal)) {
|
||||
LuaClearStack( L) ;
|
||||
bOk = ExeSetInfo( nId, sKey, vdVal) ;
|
||||
|
||||
@@ -277,6 +277,21 @@ LuaGetPrevLayer( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaIsGhostPart( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nGhostId
|
||||
int nGhostId ;
|
||||
LuaCheckParam( L, 1, nGhostId)
|
||||
LuaClearStack( L) ;
|
||||
// verifico sia un segnaposto di pezzo messo in grezzo
|
||||
bool bOk = ExeIsGhostPart( nGhostId) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetFirstGhostPart( lua_State* L)
|
||||
@@ -454,6 +469,42 @@ LuaDuploList( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaDuploInRawCount( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nSouId
|
||||
int nSouId ;
|
||||
LuaCheckParam( L, 1, nSouId)
|
||||
LuaClearStack( L) ;
|
||||
// recupero il numero di duplicati che sono riferiti da grezzi nei vari gruppi di lavoro del progetto
|
||||
int nCount ;
|
||||
bool bOk = ExeDuploInRawCount( nSouId, nCount) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk)
|
||||
LuaSetParam( L, nCount) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaDuploWithoutRawList( lua_State* L)
|
||||
{
|
||||
// nessun parametro
|
||||
LuaClearStack( L) ;
|
||||
// recupero l'elenco dei duplicati
|
||||
INTVECTOR vnDup ;
|
||||
bool bOk = ExeDuploWithoutRawList( vnDup) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk)
|
||||
LuaSetParam( L, vnDup) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaDuploSetModified( lua_State* L)
|
||||
@@ -605,6 +656,7 @@ LuaInstallGdbPartLayer( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetNextLayer", LuaGetNextLayer) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetLastLayer", LuaGetLastLayer) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetPrevLayer", LuaGetPrevLayer) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtIsGhostPart", LuaIsGhostPart) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetFirstGhostPart", LuaGetFirstGhostPart) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetNextGhostPart", LuaGetNextGhostPart) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtEraseEmptyParts", LuaEraseEmptyParts) ;
|
||||
@@ -616,6 +668,8 @@ LuaInstallGdbPartLayer( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtDuploNew", LuaDuploNew) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtDuploCount", LuaDuploCount) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtDuploList", LuaDuploList) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtDuploInRawCount", LuaDuploInRawCount) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtDuploWithoutRawList", LuaDuploWithoutRawList) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtDuploSetModified", LuaDuploSetModified) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtDuploGetModified", LuaDuploGetModified) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtDuploSetLocked", LuaDuploSetLocked) ;
|
||||
|
||||
+28
-7
@@ -178,11 +178,11 @@ LuaSplitStringPlus( lua_State* L)
|
||||
// 2 parametri : sVal, sHea
|
||||
string sVal ;
|
||||
string sHea ;
|
||||
bool bFound = LuaGetParam( L, 1, sVal) ;
|
||||
LuaCheckParam( L, 2, sHea)
|
||||
bool bOk = LuaGetParam( L, 1, sVal) &&
|
||||
LuaGetParam( L, 2, sHea) ;
|
||||
LuaClearStack( L) ;
|
||||
// se ricevuta stringa, la divido in parti conservandone le intestazioni
|
||||
if ( bFound) {
|
||||
// se ricevute stringhe, divido la prima in parti con intestazioni della seconda (che conservo)
|
||||
if ( bOk) {
|
||||
STRVECTOR vsVal ;
|
||||
TokenizePlus( sVal, sHea, vsVal) ;
|
||||
// ritorno il risultato
|
||||
@@ -194,6 +194,25 @@ LuaSplitStringPlus( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaReplaceString( lua_State* L)
|
||||
{
|
||||
// 3 parametri : sVal, sOld, sNew
|
||||
string sVal ;
|
||||
LuaCheckParam( L, 1, sVal)
|
||||
string sOld ;
|
||||
LuaCheckParam( L, 2, sOld)
|
||||
string sNew ;
|
||||
LuaCheckParam( L, 3, sNew)
|
||||
LuaClearStack( L) ;
|
||||
// eseguo sostituzione nella stringa della sequenza indicata dal secondo parametro con quella del terzo
|
||||
int nRes = ReplaceString( sVal, sOld, sNew) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, sVal) ;
|
||||
LuaSetParam( L, nRes) ;
|
||||
return 2 ;
|
||||
}
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSetVal( lua_State* L)
|
||||
@@ -1015,9 +1034,10 @@ LuaCloseExe( lua_State* L)
|
||||
LuaGetParam( L, 1, nExitCode) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo chiusura forzata
|
||||
bool bOk = ( TerminateProcess( GetCurrentProcess(), abs( nExitCode)) != FALSE) ;
|
||||
// restituisco il risultato (in realtà il programma si è già concluso)
|
||||
LuaSetParam( L, bOk) ;
|
||||
if ( ExeOnTerminateProcess( nExitCode))
|
||||
TerminateProcess( GetCurrentProcess(), abs( nExitCode)) ;
|
||||
// restituisco il risultato (se arrivo qui vuol dire che non è consnetito terminare l'esecuzione)
|
||||
LuaSetParam( L, false) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
@@ -1245,6 +1265,7 @@ LuaInstallGeneral( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtNumToString", LuaNumToString) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSplitString", LuaSplitString) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSplitStringPlus", LuaSplitStringPlus) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtReplaceString", LuaReplaceString) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSetVal", LuaSetVal) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetVal", LuaGetVal) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetUUID", LuaGetUUID) ;
|
||||
|
||||
+173
-137
@@ -20,6 +20,41 @@
|
||||
|
||||
using namespace std ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaLineCurveInters( lua_State* L)
|
||||
{
|
||||
// 3 o 4 parametri : ptP, vtDir, Id, [, nRefId]
|
||||
Point3d ptP ;
|
||||
LuaCheckParam( L, 1, ptP)
|
||||
Vector3d vtDir ;
|
||||
LuaCheckParam( L, 2, vtDir)
|
||||
int nId ;
|
||||
LuaCheckParam( L, 3, nId)
|
||||
int nRefType = nId ;
|
||||
LuaGetParam( L, 4, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero i punti di intersezione tra linea e curva
|
||||
INTDBLVECTOR vInters ;
|
||||
if ( ExeLineCurveInters( ptP, vtDir, nId, nRefType, vInters)) {
|
||||
LuaSetParam( L, true) ;
|
||||
INTVECTOR vType( vInters.size()) ;
|
||||
DBLVECTOR vPar( vInters.size()) ;
|
||||
for ( size_t i = 0 ; i < vInters.size() ; ++ i) {
|
||||
vType[i] = vInters[i].first ;
|
||||
vPar[i] = vInters[i].second ;
|
||||
}
|
||||
LuaSetParam( L, vType) ;
|
||||
LuaSetParam( L, vPar) ;
|
||||
}
|
||||
else {
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L) ;
|
||||
}
|
||||
return 3 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaLineBoxInters( lua_State* L)
|
||||
@@ -53,38 +88,6 @@ LuaLineBoxInters( lua_State* L)
|
||||
return 3 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaPlaneBoxInters( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : ptOn, vtN, b3Box, nDestGrpId [, nRefType]
|
||||
Point3d ptOn ;
|
||||
LuaCheckParam( L, 1, ptOn)
|
||||
Vector3d vtN ;
|
||||
LuaCheckParam( L, 2, vtN)
|
||||
BBox3d b3Box ;
|
||||
LuaCheckParam( L, 3, b3Box)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 4, nDestGrpId) ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo l'intersezione
|
||||
int nPntCount = 0 ;
|
||||
int nCrvCount = 0 ;
|
||||
int nSrfCount = 0 ;
|
||||
int nNewId = ExePlaneBoxInters( ptOn, vtN, b3Box, nDestGrpId, nRefType, &nPntCount, &nCrvCount, &nSrfCount) ;
|
||||
// restituisco il risultato
|
||||
if ( nNewId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nNewId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L, nPntCount) ;
|
||||
LuaSetParam( L, nCrvCount) ;
|
||||
LuaSetParam( L, nSrfCount) ;
|
||||
return 4 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaLineSurfTmInters( lua_State* L)
|
||||
@@ -120,6 +123,101 @@ LuaLineSurfTmInters( lua_State* L)
|
||||
return 3 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaLineVolZmapInters( lua_State* L)
|
||||
{
|
||||
// 3 o 4 parametri : ptP, vtDir, Id, [, nRefId]
|
||||
Point3d ptP ;
|
||||
LuaCheckParam( L, 1, ptP)
|
||||
Vector3d vtDir ;
|
||||
LuaCheckParam( L, 2, vtDir)
|
||||
int nId ;
|
||||
LuaCheckParam( L, 3, nId)
|
||||
int nRefType = nId ;
|
||||
LuaGetParam( L, 4, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo calcolo intersezione
|
||||
INTDBLVECTOR vInters ;
|
||||
if ( ExeLineVolZmapInters( ptP, vtDir, nId, nRefType, vInters)) {
|
||||
LuaSetParam( L, true) ;
|
||||
INTVECTOR vType( vInters.size()) ;
|
||||
DBLVECTOR vPar( vInters.size()) ;
|
||||
for ( size_t i = 0 ; i < vInters.size() ; ++ i) {
|
||||
vType[i] = vInters[i].first ;
|
||||
vPar[i] = vInters[i].second ;
|
||||
}
|
||||
LuaSetParam( L, vType) ;
|
||||
LuaSetParam( L, vPar) ;
|
||||
}
|
||||
else {
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L) ;
|
||||
}
|
||||
return 3 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaPlaneCurveInters( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : ptOn, vtN, nId, nDestGrpId [, nRefType]
|
||||
Point3d ptOn ;
|
||||
LuaCheckParam( L, 1, ptOn)
|
||||
Vector3d vtN ;
|
||||
LuaCheckParam( L, 2, vtN)
|
||||
int nId ;
|
||||
LuaCheckParam( L, 3, nId)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 4, nDestGrpId) ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo l'intersezione
|
||||
int nCount = 0 ;
|
||||
int nNewId = ExePlaneCurveInters( ptOn, vtN, nId, nDestGrpId, nRefType, &nCount) ;
|
||||
// restituisco il risultato
|
||||
if ( nNewId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nNewId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L, nCount) ;
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaPlaneBoxInters( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : ptOn, vtN, b3Box, nDestGrpId [, nRefType]
|
||||
Point3d ptOn ;
|
||||
LuaCheckParam( L, 1, ptOn)
|
||||
Vector3d vtN ;
|
||||
LuaCheckParam( L, 2, vtN)
|
||||
BBox3d b3Box ;
|
||||
LuaCheckParam( L, 3, b3Box)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 4, nDestGrpId) ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo l'intersezione
|
||||
int nPntCount = 0 ;
|
||||
int nCrvCount = 0 ;
|
||||
int nSrfCount = 0 ;
|
||||
int nNewId = ExePlaneBoxInters( ptOn, vtN, b3Box, nDestGrpId, nRefType, &nPntCount, &nCrvCount, &nSrfCount) ;
|
||||
// restituisco il risultato
|
||||
if ( nNewId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nNewId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L, nPntCount) ;
|
||||
LuaSetParam( L, nCrvCount) ;
|
||||
LuaSetParam( L, nSrfCount) ;
|
||||
return 4 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaPlaneSurfTmInters( lua_State* L)
|
||||
@@ -188,59 +286,32 @@ LuaParPlanesSurfTmInters( lua_State* L)
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmSurfTmInters( lua_State* L)
|
||||
LuaPlaneVolZmapInters( lua_State* L)
|
||||
{
|
||||
// 3 o 4 parametri : Id1, nId2, nDestGrpId [, dToler]
|
||||
int nId1 ;
|
||||
LuaCheckParam( L, 1, nId1)
|
||||
int nId2 ;
|
||||
LuaCheckParam( L, 2, nId2)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 3, nDestGrpId) ;
|
||||
double dToler = 20 * EPS_SMALL ;
|
||||
LuaGetParam( L, 4, dToler) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo l'intersezione
|
||||
int nPntCount = 0 ;
|
||||
int nCrvCount = 0 ;
|
||||
int nSrfCount = 0 ;
|
||||
int nNewId = ExeSurfTmSurfTmInters( nId1, nId2, nDestGrpId, dToler, &nPntCount, &nCrvCount, &nSrfCount) ;
|
||||
// restituisco il risultato
|
||||
if ( nNewId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nNewId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L, nPntCount) ;
|
||||
LuaSetParam( L, nCrvCount) ;
|
||||
LuaSetParam( L, nSrfCount) ;
|
||||
return 4 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaPlaneCurveInters( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : ptOn, vtN, nId, nDestGrpId [, nRefType]
|
||||
Point3d ptOn ;
|
||||
LuaCheckParam( L, 1, ptOn)
|
||||
// 4 o 5 parametri : ptP, vtN, nId, nDestGrpId [, nRefType]
|
||||
Point3d ptP ;
|
||||
LuaCheckParam( L, 1, ptP)
|
||||
Vector3d vtN ;
|
||||
LuaCheckParam( L, 2, vtN)
|
||||
int nId ;
|
||||
LuaCheckParam( L, 3, nId)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 4, nDestGrpId) ;
|
||||
LuaCheckParam( L, 4, nDestGrpId)
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo l'intersezione
|
||||
int nCount = 0 ;
|
||||
int nNewId = ExePlaneCurveInters( ptOn, vtN, nId, nDestGrpId, nRefType, &nCount) ;
|
||||
// eseguo calcolo intersezione
|
||||
int nCount ;
|
||||
int nFirstId = ExePlaneVolZmapInters( ptP, vtN, nId, nDestGrpId, nRefType, &nCount) ;
|
||||
// restituisco il risultato
|
||||
if ( nNewId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nNewId) ;
|
||||
else
|
||||
if ( nFirstId != GDB_ID_NULL) {
|
||||
LuaSetParam( L, nFirstId) ;
|
||||
LuaSetParam( L, nCount) ;
|
||||
}
|
||||
else {
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L, nCount) ;
|
||||
LuaSetParam( L) ;
|
||||
}
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
@@ -272,68 +343,32 @@ LuaCurveCurveInters( lua_State* L)
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaLineVolZmapInters( lua_State* L)
|
||||
LuaSurfTmSurfTmInters( lua_State* L)
|
||||
{
|
||||
// 3 o 4 parametri : ptP, vtDir, Id, [, nRefId]
|
||||
Point3d ptP ;
|
||||
LuaCheckParam( L, 1, ptP)
|
||||
Vector3d vtDir ;
|
||||
LuaCheckParam( L, 2, vtDir)
|
||||
int nId ;
|
||||
LuaCheckParam( L, 3, nId)
|
||||
int nRefType = nId ;
|
||||
LuaGetParam( L, 4, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo calcolo intersezione
|
||||
INTDBLVECTOR vInters ;
|
||||
if ( ExeLineVolZmapInters( ptP, vtDir, nId, nRefType, vInters)) {
|
||||
LuaSetParam( L, true) ;
|
||||
INTVECTOR vType( vInters.size()) ;
|
||||
DBLVECTOR vPar( vInters.size()) ;
|
||||
for ( size_t i = 0 ; i < vInters.size() ; ++ i) {
|
||||
vType[i] = vInters[i].first ;
|
||||
vPar[i] = vInters[i].second ;
|
||||
}
|
||||
LuaSetParam( L, vType) ;
|
||||
LuaSetParam( L, vPar) ;
|
||||
}
|
||||
else {
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L) ;
|
||||
}
|
||||
return 3 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaPlaneVolZmapInters( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : ptP, vtN, nId, nDestGrpId [, nRefType]
|
||||
Point3d ptP ;
|
||||
LuaCheckParam( L, 1, ptP)
|
||||
Vector3d vtN ;
|
||||
LuaCheckParam( L, 2, vtN)
|
||||
int nId ;
|
||||
LuaCheckParam( L, 3, nId)
|
||||
// 3 o 4 parametri : Id1, nId2, nDestGrpId [, dToler]
|
||||
int nId1 ;
|
||||
LuaCheckParam( L, 1, nId1)
|
||||
int nId2 ;
|
||||
LuaCheckParam( L, 2, nId2)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 4, nDestGrpId)
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
LuaCheckParam( L, 3, nDestGrpId) ;
|
||||
double dToler = 20 * EPS_SMALL ;
|
||||
LuaGetParam( L, 4, dToler) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo calcolo intersezione
|
||||
int nCount ;
|
||||
int nFirstId = ExePlaneVolZmapInters( ptP, vtN, nId, nDestGrpId, nRefType, &nCount) ;
|
||||
// eseguo l'intersezione
|
||||
int nPntCount = 0 ;
|
||||
int nCrvCount = 0 ;
|
||||
int nSrfCount = 0 ;
|
||||
int nNewId = ExeSurfTmSurfTmInters( nId1, nId2, nDestGrpId, dToler, &nPntCount, &nCrvCount, &nSrfCount) ;
|
||||
// restituisco il risultato
|
||||
if ( nFirstId != GDB_ID_NULL) {
|
||||
LuaSetParam( L, nFirstId) ;
|
||||
LuaSetParam( L, nCount) ;
|
||||
}
|
||||
else {
|
||||
if ( nNewId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nNewId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L) ;
|
||||
}
|
||||
return 2 ;
|
||||
LuaSetParam( L, nPntCount) ;
|
||||
LuaSetParam( L, nCrvCount) ;
|
||||
LuaSetParam( L, nSrfCount) ;
|
||||
return 4 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
@@ -341,15 +376,16 @@ bool
|
||||
LuaInstallGeoInters( LuaMgr& luaMgr)
|
||||
{
|
||||
bool bOk = ( &luaMgr != nullptr) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtLineCurveInters", LuaLineCurveInters) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtLineBoxInters", LuaLineBoxInters) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtPlaneBoxInters", LuaPlaneBoxInters) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtLineSurfTmInters", LuaLineSurfTmInters) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtLineVolZmapInters", LuaLineVolZmapInters) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtPlaneCurveInters", LuaPlaneCurveInters) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtPlaneBoxInters", LuaPlaneBoxInters) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtPlaneSurfTmInters", LuaPlaneSurfTmInters) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtParPlanesSurfTmInters", LuaParPlanesSurfTmInters) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmSurfTmInters", LuaSurfTmSurfTmInters) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtPlaneCurveInters", LuaPlaneCurveInters) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCurveInters", LuaCurveCurveInters) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtLineVolZmapInters", LuaLineVolZmapInters) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtPlaneVolZmapInters", LuaPlaneVolZmapInters) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCurveInters", LuaCurveCurveInters) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmSurfTmInters", LuaSurfTmSurfTmInters) ;
|
||||
return bOk ;
|
||||
}
|
||||
}
|
||||
|
||||
+71
-8
@@ -262,6 +262,24 @@ LuaRemoveMachGroup( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaChangeMachGroupName( lua_State* L)
|
||||
{
|
||||
// 2 parametri : identificativo del gruppo, nuovo nome
|
||||
int nMGroupInd ;
|
||||
LuaCheckParam( L, 1, nMGroupInd)
|
||||
string sNewName ;
|
||||
LuaCheckParam( L, 2, sNewName)
|
||||
LuaClearStack( L) ;
|
||||
// cambio il nome della macchinata
|
||||
string sName ;
|
||||
bool bOk = ExeChangeMachGroupName( nMGroupInd, sNewName) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetMachGroupName( lua_State* L)
|
||||
@@ -1734,10 +1752,12 @@ LuaFindToolInCurrSetup( lua_State* L)
|
||||
string sTool ;
|
||||
LuaGetParam( L, 1, sTool) ;
|
||||
LuaClearStack( L) ;
|
||||
// verifico l'attrezzaggio della macchinata corrente
|
||||
bool bOk = ExeFindToolInCurrSetup( sTool) ;
|
||||
// verifico attrezzaggio utensile e ne recupero l'eventuale posizione
|
||||
string sTcPos ;
|
||||
bool bOk = ExeGetToolSetupPosInCurrSetup( sTool, sTcPos) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
LuaSetParam( L, sTcPos) ;
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -2977,14 +2997,18 @@ LuaGetClEntFlag( lua_State* L)
|
||||
LuaGetParam( L, 1, nEntId) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero il flag
|
||||
int nFlag ;
|
||||
bool bOk = ExeGetClEntFlag( nEntId, nFlag) ;
|
||||
int nFlag, nFlag2 ;
|
||||
bool bOk = ExeGetClEntFlag( nEntId, nFlag, nFlag2) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk)
|
||||
if ( bOk) {
|
||||
LuaSetParam( L, nFlag) ;
|
||||
else
|
||||
LuaSetParam( L, nFlag2) ;
|
||||
}
|
||||
else {
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
LuaSetParam( L) ;
|
||||
}
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -3006,6 +3030,25 @@ LuaGetClEntIndex( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetClEntAxesVal( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nEntId
|
||||
int nEntId ;
|
||||
LuaGetParam( L, 1, nEntId) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero il valore degli assi
|
||||
DBLVECTOR vAxes ;
|
||||
bool bOk = ExeGetClEntAxesVal( nEntId, vAxes) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk)
|
||||
LuaSetParam( L, vAxes) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
// Simulation
|
||||
//-------------------------------------------------------------------------------
|
||||
@@ -3292,6 +3335,23 @@ LuaSetCalcTool( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetAllCurrAxesName( lua_State* L)
|
||||
{
|
||||
// nessun parametro
|
||||
LuaClearStack( L) ;
|
||||
// imposto l'utensile corrente per il calcolo
|
||||
STRVECTOR vAxName ;
|
||||
bool bOk = ExeGetAllCurrAxesName( vAxName) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk)
|
||||
LuaSetParam( L, vAxName) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSetRotAxisBlock( lua_State* L)
|
||||
@@ -4005,6 +4065,7 @@ LuaInstallMachMgr( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtAddMachGroup", LuaAddMachGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCopyMachGroup", LuaCopyMachGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRemoveMachGroup", LuaRemoveMachGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtChangeMachGroupName", LuaChangeMachGroupName) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetMachGroupName", LuaGetMachGroupName) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetMachGroupMachineName", LuaGetMachGroupMachineName) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetMachGroupId", LuaGetMachGroupId) ;
|
||||
@@ -4161,6 +4222,7 @@ LuaInstallMachMgr( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetClEntMove", LuaGetClEntMove) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetClEntFlag", LuaGetClEntFlag) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetClEntIndex", LuaGetClEntIndex) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetClEntAxesVal", LuaGetClEntAxesVal) ;
|
||||
// Simulation
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSimInit", LuaSimInit) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSimStart", LuaSimStart) ;
|
||||
@@ -4194,6 +4256,7 @@ LuaInstallMachMgr( LuaMgr& luaMgr)
|
||||
// Machine Calc
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSetCalcTable", LuaSetCalcTable) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSetCalcTool", LuaSetCalcTool) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetAllCurrAxesName", LuaGetAllCurrAxesName) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSetRotAxisBlock", LuaSetRotAxisBlock) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetRotAxisBlocked", LuaGetRotAxisBlocked) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetCalcTool", LuaGetCalcTool) ;
|
||||
|
||||
Reference in New Issue
Block a user