Compare commits
413 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ee55f97b3a | |||
| d41edd344a | |||
| 5a998a5d13 | |||
| 14f471bbf9 | |||
| 6ce68192a2 | |||
| 8010d19c06 | |||
| 2b3574cefc | |||
| 8fcf079126 | |||
| ffcd014ec3 | |||
| 8b23085328 | |||
| 8901525ac8 | |||
| 4247a6893f | |||
| 36572eb1e4 | |||
| 78ad752545 | |||
| 0a5fd7262b | |||
| e450aea667 | |||
| a85ef8fe2d | |||
| f2fa332cc1 | |||
| bb8ef04733 | |||
| 4c7de36ba0 | |||
| 16930e4c4e | |||
| 248aa6f948 | |||
| ab5223c4f5 | |||
| a206a58ffe | |||
| cd5a82324b | |||
| 0ce7384fcc | |||
| 85af19455b | |||
| b1f606e821 | |||
| 55aca40285 | |||
| cc3aab12ec | |||
| 592056897b | |||
| dd423355da | |||
| a4de699814 | |||
| 32f18ca9f7 | |||
| 98bc4fa40c | |||
| bbe59a3d90 | |||
| 3d3098ed0b | |||
| 6c762b1b8e | |||
| e8e8dbbf8d | |||
| 4a98a0a25e | |||
| 04d3af8d62 | |||
| 24d355f08a | |||
| c736496b6a | |||
| 953c9f956e | |||
| 77bded7c68 | |||
| cc75866f3e | |||
| b02a00ef6b | |||
| 8d7fdeb0c2 | |||
| 54c761d722 | |||
| 901d6f7107 | |||
| 0f039b809b | |||
| c36ce0a26f | |||
| 92a6b54666 | |||
| af170b7597 | |||
| 9c5f48be88 | |||
| 362c845ed3 | |||
| 092896750c | |||
| 3ce5ce7a6b | |||
| bc99212f79 | |||
| 7279684119 | |||
| 142091b113 | |||
| 553e2e980d | |||
| c9111ba2ff | |||
| c9f3051cd3 | |||
| fc8ee49c11 | |||
| 028e4af506 | |||
| a3e7d7e372 | |||
| ab9eb54224 | |||
| dbc2365a68 | |||
| 025af8a9aa | |||
| 2c1d4ee259 | |||
| cfedb7de7d | |||
| 3a31abedce | |||
| 1901133b00 | |||
| 0f48db648a | |||
| 6d02a2e6cf | |||
| 9be9b80b8e | |||
| 55e34f9297 | |||
| 784e53f580 | |||
| b0f819dc69 | |||
| 034635ae1d | |||
| 5f8961860a | |||
| ff50f8a808 | |||
| f75fc31c7e | |||
| b1255891c0 | |||
| d4366e214c | |||
| 483dae5c1b | |||
| 719564783e | |||
| 30e483cc05 | |||
| 1ecd5bb756 | |||
| dde9956064 | |||
| 397572fe4b | |||
| 1dc2a65ff9 | |||
| d31c72f4f5 | |||
| 17dcb43683 | |||
| 67fa0dd6f0 | |||
| 6c410ecd95 | |||
| af9ab7ce30 | |||
| 1b0e89fec9 | |||
| 5da9e0a1dd | |||
| 057e9b1169 | |||
| 81d86f99eb | |||
| a55fe51fde | |||
| 0c70756a0f | |||
| 9d12c2bede | |||
| d2ac67e03c | |||
| 2524c3d9a5 | |||
| c3a472473d | |||
| 315cedb3a2 | |||
| 92935c762d | |||
| d43be7f3c0 | |||
| 5019148f9d | |||
| ebefa77e84 | |||
| 7b02f83880 | |||
| e9404b11cf | |||
| 0a645512f2 | |||
| 32565dbc3a | |||
| f7a8981491 | |||
| 1b8b5266f2 | |||
| 9a6482d4cf | |||
| da68acdc6d | |||
| 64b7e47d1c | |||
| 4a2c0904fe | |||
| a5d9ede6ee | |||
| 829961033e | |||
| 1aec3526bf | |||
| 9a62d76115 | |||
| c602a4f2ac | |||
| 9a2a906c96 | |||
| a3f32536d0 | |||
| b87d9ce4dd | |||
| e1b2f0caaf | |||
| 8290f47a80 | |||
| e3213299aa | |||
| 6214ff5926 | |||
| ea83cb985d | |||
| 7e9005a009 | |||
| bcefcc65fd | |||
| 7672783be9 | |||
| bbc7a31157 | |||
| 3faae6b3df | |||
| e463ba5500 | |||
| 5e8004ac4b | |||
| 6f118b80bf | |||
| a3bcc57f31 | |||
| e8b664002e | |||
| 1cc3d4bdbb | |||
| 9135fe039f | |||
| cd6258031f | |||
| b46d3449de | |||
| d6cd16b860 | |||
| 2fc0e4994d | |||
| 9bc89dfc35 | |||
| ddbc2a81e6 | |||
| 560d7af700 | |||
| ee585114fd | |||
| 94814adf67 | |||
| 387c10b72c | |||
| fd5566fceb | |||
| 450097fdca | |||
| 7f4b18567b | |||
| f735b1ea46 | |||
| 5d7206528b | |||
| 9a61f93e7e | |||
| 5420a212aa | |||
| c1dd1cfb53 | |||
| 6d619351e4 | |||
| 9023508027 | |||
| b327853564 | |||
| f7922678ec | |||
| 9bc1f2d55c | |||
| 3de9f5c1c3 | |||
| 40d784806b | |||
| 3d6a6071a9 | |||
| 7d04a27151 | |||
| e138020432 | |||
| 99675027ac | |||
| 517249b59d | |||
| 0d9e35580e | |||
| b3aa7518f8 | |||
| 7a522541da | |||
| b84940378c | |||
| f680c20b18 | |||
| f95caff7d8 | |||
| 8304298122 | |||
| 7b7ca66c6a | |||
| 4be2039c00 | |||
| 717107cc2d | |||
| 00dcccfe24 | |||
| 217ce9b589 | |||
| 8fba665c27 | |||
| dcae61ef24 | |||
| 37c6e26a43 | |||
| 7aeabafeb7 | |||
| 16b7208962 | |||
| 7c6c48b8b8 | |||
| 2f3d1a84ef | |||
| 2eeb25584c | |||
| c65a29fc2b | |||
| fb4b13c258 | |||
| f10cbcca39 | |||
| 41929b4a8b | |||
| d08de0dce8 | |||
| 13e9eea977 | |||
| 2221934f3c | |||
| 0424900a2b | |||
| e4f45df79a | |||
| 868efb69f1 | |||
| 7b991f4526 | |||
| 3d59a7ec24 | |||
| 9219fe9792 | |||
| bf069c7f7a | |||
| f949e39d47 | |||
| 88904db10f | |||
| 429b8d828c | |||
| 1bf59acd00 | |||
| a5a85a6723 | |||
| c523c46670 | |||
| fb0b4f9621 | |||
| 7070032120 | |||
| 0b1461984c | |||
| 4f7f5d97b2 | |||
| 8cd72b2a4c | |||
| 7b3c24c2be | |||
| e5f296e712 | |||
| 9e1f151bbc | |||
| ed6c8fb11d | |||
| 9ef30272b4 | |||
| 22774303af | |||
| a3c905c33a | |||
| 66a72c92b2 | |||
| 8c0b0a97b8 | |||
| f444c189d4 | |||
| 4f79e4baf9 | |||
| e66cfb74c0 | |||
| 2d2954f983 | |||
| bea2a9f938 | |||
| bcc44a5592 | |||
| e587f23dad | |||
| f4542dd7db | |||
| 1f66473764 | |||
| b98e4ea359 | |||
| 504e1d5472 | |||
| f8bc7083a9 | |||
| c4b4a12b9a | |||
| 9473e5813d | |||
| fd9e53711b | |||
| 6c153c3db4 | |||
| 841c0f6cfc | |||
| 3990934446 | |||
| 399556a9a6 | |||
| 69f2c3d029 | |||
| f1f23a3cf4 | |||
| 73db521008 | |||
| 82d1465ecd | |||
| 824e6e3ba1 | |||
| 88fa7ef54c | |||
| 047bff2f11 | |||
| 611c08bb4c | |||
| 82633bf725 | |||
| c69036ef2c | |||
| b0c1ba14e8 | |||
| a27dfd2b54 | |||
| 2a106c4263 | |||
| 66a232a6a0 | |||
| 89e8b02316 | |||
| d1cb3d7de7 | |||
| 6c640b902f | |||
| 49d2600cc7 | |||
| ce92c8f6c9 | |||
| 303b7d8f0e | |||
| 308e50549d | |||
| 5f2c538ab8 | |||
| 8e85070df1 | |||
| 95ec7a83ef | |||
| ed1ba0543b | |||
| 26544984ad | |||
| e82c7417b6 | |||
| a3fa91244d | |||
| e06dd65888 | |||
| abbc5415ab | |||
| 603cb083cc | |||
| d9cfc375a9 | |||
| cce5e6ae76 | |||
| 407ca752ab | |||
| 41c50a776e | |||
| f28da6d9e3 | |||
| c5b2121bd5 | |||
| 03785dcca3 | |||
| b4eccf1f18 | |||
| c169329660 | |||
| 94d76d3a68 | |||
| 511e74a4d9 | |||
| 24616b55b9 | |||
| 1a961a19af | |||
| 80a9b3a7bb | |||
| b7bdbb41a7 | |||
| 6fed5204ca | |||
| 318529688d | |||
| d7711c3ec6 | |||
| 589a58e8db | |||
| 7a0e3ad388 | |||
| 55f695da98 | |||
| cac3224ff8 | |||
| 13bfd1a9ac | |||
| b522f4cea2 | |||
| 7f2a8377bf | |||
| 68af08cf32 | |||
| c200868c89 | |||
| 688fc7ff89 | |||
| b82d9fa522 | |||
| 2a077e9102 | |||
| 7b3f8a02f9 | |||
| de3cdb8a7f | |||
| 16b8763c64 | |||
| 5c4f32a6e8 | |||
| 15633ec6d7 | |||
| e2c401cc4a | |||
| 4f97c95a8d | |||
| 8723dab473 | |||
| af798840a5 | |||
| 51b388db06 | |||
| 246aa6e3ed | |||
| 26111453ee | |||
| 8dd2972a4b | |||
| ef75a2f912 | |||
| 3d564e1be7 | |||
| 91e3e1d370 | |||
| bd1861ade0 | |||
| 01c2b26a1e | |||
| 641566cd42 | |||
| 8c9544595d | |||
| 84993c293a | |||
| af2c3d0e7b | |||
| f69116ea09 | |||
| 29a643e640 | |||
| c0d456b6fb | |||
| 4d038461a1 | |||
| 55184afcb5 | |||
| 854d93eaec | |||
| 8e11114e4f | |||
| 06c5d68d8b | |||
| 5ec4ed439f | |||
| 206f3bdf61 | |||
| 8602b78f21 | |||
| 626e24e150 | |||
| 2b65121551 | |||
| 6b3ab7e9b0 | |||
| 9e725f3feb | |||
| d7db0a2d45 | |||
| 2794f35805 | |||
| 1259955522 | |||
| 7eb557ad32 | |||
| 4de367395a | |||
| d9cf624458 | |||
| eedd2068fa | |||
| cf2b1742a0 | |||
| 29462e9536 | |||
| 7e7975c622 | |||
| 85c4af98ce | |||
| 382138e6c5 | |||
| 749830aba9 | |||
| 90449cad40 | |||
| 3d3900b39a | |||
| e989b88dd4 | |||
| 4b58f4f522 | |||
| 1620054970 | |||
| 7d3bec9f44 | |||
| 150b35bb9e | |||
| 173728605d | |||
| d069b33424 | |||
| 4642188fd6 | |||
| e3530f6e90 | |||
| fb388799ea | |||
| f6915d80fa | |||
| d412ce65cd | |||
| 61824a24ab | |||
| 88fc7e6eee | |||
| 964a02eae4 | |||
| dd5c8ebdd1 | |||
| 34885e1f2a | |||
| 8000a9d3a5 | |||
| 7963b9befe | |||
| 2394dfc404 | |||
| 081c3fcb78 | |||
| 002e736ec4 | |||
| 415a761039 | |||
| 8f596cab5a | |||
| 37dc8b8a7b | |||
| 06e9f85a4b | |||
| 4f42606cd3 | |||
| baa8eb42b6 | |||
| b1a11c4eaf | |||
| 553efdec1b | |||
| bc8171c4ba | |||
| 63b82fe556 | |||
| 9d4b181e1b | |||
| 65cf39c56a | |||
| 2ba94e5dc1 | |||
| 617023edb6 | |||
| e2405d10c5 | |||
| 432810452c | |||
| 0a7369bfcc | |||
| 3c0d89e3ab | |||
| 00c0e216b7 | |||
| a200549542 | |||
| d4cfe31b6f | |||
| ad6673330d | |||
| 00f52ca6ab | |||
| 8dc6cce243 | |||
| 3309939aed | |||
| d646331746 | |||
| 8192bd0feb |
+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) ;
|
||||
+73
-24
@@ -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.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
@@ -40,7 +42,7 @@ static const char* EEX_GETEEXVERSION = "GetEExVersion" ;
|
||||
static const char* EEX_SETEEXKEY = "SetEExKey" ;
|
||||
static const char* EEX_SETEEXNETHWKEY = "SetEExNetHwKey" ;
|
||||
static const char* EEX_SETBTLAUXDIR = "SetBtlAuxDir" ;
|
||||
static const char* EEX_SETTHREEJSAUXDIR = "SetThreeJSAuxDir" ;
|
||||
static const char* EEX_SETBTLLUADATA = "SetBtlLuaData" ;
|
||||
static const char* EEX_CREATEBEAMMGR = "CreateBeamMgr" ;
|
||||
static const char* EEX_CREATEIMPORTBTL = "CreateImportBtl" ;
|
||||
static const char* EEX_CREATEIMPORTBTLX = "CreateImportBtlx" ;
|
||||
@@ -49,12 +51,15 @@ static const char* EEX_CREATEIMPORTCSF = "CreateImportCsf" ;
|
||||
static const char* EEX_CREATEIMPORTDXF = "CreateImportDxf" ;
|
||||
static const char* EEX_CREATEIMPORTPNT = "CreateImportPnt" ;
|
||||
static const char* EEX_CREATEIMPORTSTL = "CreateImportStl" ;
|
||||
static const char* EEX_CREATEIMPORTOFF = "CreateImportOff" ;
|
||||
static const char* EEX_CREATEIMPORTPLY = "CreateImportPly" ;
|
||||
static const char* EEX_CREATEIMPORT3MF = "CreateImport3MF" ;
|
||||
static const char* EEX_CREATEEXPORTDXF = "CreateExportDxf" ;
|
||||
static const char* EEX_CREATEEXPORTSTL = "CreateExportStl" ;
|
||||
static const char* EEX_CREATEEXPORT3MF = "CreateExport3MF" ;
|
||||
static const char* EEX_CREATEEXPORTTHREEJS = "CreateExportThreeJS" ;
|
||||
static const char* EEX_CREATEEXPORTSVG = "CreateExportSvg" ;
|
||||
static const char* EEX_SETTHREEJSLIBDIR = "SetThreeJSLibDir" ;
|
||||
static const char* EEX_CREATEEXPORTTHREEJS = "CreateExportThreeJS" ;
|
||||
static const char* EEX_CREATEEEXEXECUTOR = "CreateExcExecutor" ;
|
||||
|
||||
|
||||
@@ -70,7 +75,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 +95,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
|
||||
@@ -183,20 +188,19 @@ MySetBtlAuxDir( const string& sBtlAuxDir)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
MySetThreeJSAuxDir( const string& sThreeJSAuxDir )
|
||||
MySetBtlLuaData( const string& sLuaLibsDir, const string& sLuaLastRequire)
|
||||
{
|
||||
// verifico caricamento libreria EgtExchange
|
||||
if ( s_hEEx == nullptr)
|
||||
return false ;
|
||||
// recupero funzione creazione oggetto
|
||||
typedef bool ( *PF_SetThreeJSAuxDir)( const string& sThreeJSAuxDir) ;
|
||||
PF_SetThreeJSAuxDir pFun = ( PF_SetThreeJSAuxDir) GetProcAddress( s_hEEx, EEX_SETTHREEJSAUXDIR) ;
|
||||
typedef bool (* PF_SetBtlLuaData) ( const string& sLuaLibsDir, const string& sLuaLastRequire) ;
|
||||
PF_SetBtlLuaData pFun = (PF_SetBtlLuaData)GetProcAddress( s_hEEx, EEX_SETBTLLUADATA) ;
|
||||
if ( pFun == nullptr)
|
||||
return false ;
|
||||
return pFun( sThreeJSAuxDir) ;
|
||||
return pFun( sLuaLibsDir, sLuaLastRequire) ;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
IBeamMgr*
|
||||
MyCreateBeamMgr( void)
|
||||
@@ -317,6 +321,36 @@ MyCreateImportStl( void)
|
||||
return pFun() ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
IImportOff*
|
||||
MyCreateImportOff( void)
|
||||
{
|
||||
// verifico caricamento libreria EgtExchange
|
||||
if ( s_hEEx == nullptr)
|
||||
return nullptr ;
|
||||
// recupero funzione creazione oggetto
|
||||
typedef IImportOff* (* PF_CreateImportOff) ( void) ;
|
||||
PF_CreateImportOff pFun = (PF_CreateImportOff)GetProcAddress( s_hEEx, EEX_CREATEIMPORTOFF) ;
|
||||
if ( pFun == nullptr)
|
||||
return nullptr ;
|
||||
return pFun() ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
IImportPly*
|
||||
MyCreateImportPly( void)
|
||||
{
|
||||
// verifico caricamento libreria EgtExchange
|
||||
if ( s_hEEx == nullptr)
|
||||
return nullptr ;
|
||||
// recupero funzione creazione oggetto
|
||||
typedef IImportPly* (* PF_CreateImportPly) ( void) ;
|
||||
PF_CreateImportPly pFun = (PF_CreateImportPly)GetProcAddress( s_hEEx, EEX_CREATEIMPORTPLY) ;
|
||||
if ( pFun == nullptr)
|
||||
return nullptr ;
|
||||
return pFun() ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
IImport3MF*
|
||||
MyCreateImport3MF( void)
|
||||
@@ -377,21 +411,6 @@ MyCreateExport3MF( void)
|
||||
return pFun() ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
IExportThreeJS*
|
||||
MyCreateExportThreeJS( void)
|
||||
{
|
||||
// verifico caricamento libreria EgtExchange
|
||||
if ( s_hEEx == nullptr)
|
||||
return nullptr ;
|
||||
// recupero funzione creazione oggetto
|
||||
typedef IExportThreeJS* (* PF_CreateExportThreeJS) ( void) ;
|
||||
PF_CreateExportThreeJS pFun = (PF_CreateExportThreeJS)GetProcAddress( s_hEEx, EEX_CREATEEXPORTTHREEJS) ;
|
||||
if ( pFun == nullptr)
|
||||
return nullptr ;
|
||||
return pFun() ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
IExportSvg*
|
||||
MyCreateExportSvg( void)
|
||||
@@ -407,6 +426,36 @@ MyCreateExportSvg( void)
|
||||
return pFun() ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
MySetThreeJSLibDir( const string& sThreeJSLibDir)
|
||||
{
|
||||
// verifico caricamento libreria EgtExchange
|
||||
if ( s_hEEx == nullptr)
|
||||
return false ;
|
||||
// recupero funzione creazione oggetto
|
||||
typedef bool ( *PF_SetThreeJSLibDir)( const string& sThreeJSLibDir) ;
|
||||
PF_SetThreeJSLibDir pFun = ( PF_SetThreeJSLibDir) GetProcAddress( s_hEEx, EEX_SETTHREEJSLIBDIR) ;
|
||||
if ( pFun == nullptr)
|
||||
return false ;
|
||||
return pFun( sThreeJSLibDir) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
IExportThreeJS*
|
||||
MyCreateExportThreeJS( void)
|
||||
{
|
||||
// verifico caricamento libreria EgtExchange
|
||||
if ( s_hEEx == nullptr)
|
||||
return nullptr ;
|
||||
// recupero funzione creazione oggetto
|
||||
typedef IExportThreeJS* (* PF_CreateExportThreeJS) ( void) ;
|
||||
PF_CreateExportThreeJS pFun = (PF_CreateExportThreeJS)GetProcAddress( s_hEEx, EEX_CREATEEXPORTTHREEJS) ;
|
||||
if ( pFun == nullptr)
|
||||
return nullptr ;
|
||||
return pFun() ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
IExcExecutor*
|
||||
MyCreateExcExecutor( void)
|
||||
|
||||
+8
-3
@@ -1,7 +1,7 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2015-2021
|
||||
// EgalTech 2015-2025
|
||||
//----------------------------------------------------------------------------
|
||||
// File : DllExchange.h Data : 27.08.21 Versione : 2.3h2
|
||||
// File : DllExchange.h Data : 28.02.25 Versione : 2.7b2
|
||||
// Contenuto : Dichiarazioni funzioni per libreria opzionale EgtExchange.
|
||||
//
|
||||
//
|
||||
@@ -24,6 +24,8 @@ class IImportCsf ;
|
||||
class IImportDxf ;
|
||||
class IImportPnt ;
|
||||
class IImportStl ;
|
||||
class IImportOff ;
|
||||
class IImportPly ;
|
||||
class IImport3MF ;
|
||||
class IExportDxf ;
|
||||
class IExportStl ;
|
||||
@@ -41,7 +43,7 @@ void MySetEExKey( const std::string& sKey) ;
|
||||
void MySetEExNetHwKey( bool bNetHwKey) ;
|
||||
const char* MyGetEExVersion( void) ;
|
||||
bool MySetBtlAuxDir( const std::string& sBtlAuxDir) ;
|
||||
bool MySetThreeJSAuxDir( const std::string& sThreeJSAuxDir) ;
|
||||
bool MySetBtlLuaData( const std::string& sLuaLibsDir, const std::string& sLuaLastRequire) ;
|
||||
IBeamMgr* MyCreateBeamMgr( void) ;
|
||||
IImportBtl* MyCreateImportBtl( void) ;
|
||||
IImportBtlx* MyCreateImportBtlx( void) ;
|
||||
@@ -50,10 +52,13 @@ IImportCsf* MyCreateImportCsf( void) ;
|
||||
IImportDxf* MyCreateImportDxf( void) ;
|
||||
IImportPnt* MyCreateImportPnt( void) ;
|
||||
IImportStl* MyCreateImportStl( void) ;
|
||||
IImportOff* MyCreateImportOff( void) ;
|
||||
IImportPly* MyCreateImportPly( void) ;
|
||||
IImport3MF* MyCreateImport3MF( void) ;
|
||||
IExportDxf* MyCreateExportDxf( void) ;
|
||||
IExportStl* MyCreateExportStl( void) ;
|
||||
IExport3MF* MyCreateExport3MF( void) ;
|
||||
bool MySetThreeJSLibDir( const std::string& sThreeJSLibDir) ;
|
||||
IExportThreeJS* MyCreateExportThreeJS( void) ;
|
||||
IExportSvg* MyCreateExportSvg( void) ;
|
||||
IExcExecutor* MyCreateExcExecutor(void) ;
|
||||
|
||||
+8
-1
@@ -45,8 +45,15 @@ HMODULE s_hENs = nullptr ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
LoadNestingDll( ILogger* pLogger, const string& sKey, const string& sKey2)
|
||||
LoadNestingDll( ILogger* pLogger, const string& sKey, const string& sKey2, bool bNetHwKey)
|
||||
{
|
||||
// non ammessa con chiave di rete
|
||||
if ( bNetHwKey) {
|
||||
std::string sErr = "Warning on Key (ENS/NET)" ;
|
||||
LOG_ERROR( pLogger, sErr.c_str()) ;
|
||||
FreeNestingDll() ;
|
||||
return false ;
|
||||
}
|
||||
// verifico la chiave
|
||||
if ( ! TestKeyForENs( sKey, 0, pLogger)) {
|
||||
FreeNestingDll() ;
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ class ILogger ;
|
||||
class IAutoNester ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool LoadNestingDll( ILogger* pLogger, const std::string& sKey, const std::string& sKey2) ;
|
||||
bool LoadNestingDll( ILogger* pLogger, const std::string& sKey, const std::string& sKey2, bool bNetHwKey) ;
|
||||
bool FreeNestingDll( void) ;
|
||||
bool IsLoadedNestingDll( void) ;
|
||||
void MySetENsLogger( ILogger* pLogger) ;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2014-2015
|
||||
// EgalTech 2014-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EXE.h Data : 05.05.15 Versione : 1.6e2
|
||||
// File : EXE.h Data : 15.05.24 Versione : 2.6e4
|
||||
// Contenuto : Dichiarazioni locali per moduli EXE.
|
||||
//
|
||||
//
|
||||
@@ -25,6 +25,8 @@ const std::string& ExeGetIniFile( void) ;
|
||||
//----------------------------------------------------------------------------
|
||||
const std::string& ExeGetKey( void) ;
|
||||
const std::string& ExeGetNestKey( void) ;
|
||||
const std::string& ExeGetLockId( void) ;
|
||||
bool ExeVerifyKeyOption( int nOptInd) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
ILogger* GetLogger( void) ;
|
||||
@@ -38,3 +40,10 @@ bool ExeInsertMachMgr( int nInsGrp) ;
|
||||
//----------------------------------------------------------------------------
|
||||
bool ExeIsDuploBase( IGeomDB* pGeomDB, int nId) ;
|
||||
bool ExeInsertDuplo( int nInsGrp) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool ExeCreateMutex( const std::string& sMutexName) ;
|
||||
bool ExeReleaseMutex( void) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool ExeSetModified( int nCtx) ;
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2025-2025
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EXE_Base64.cpp Data : 03.11.25 Versione : 2.7k1
|
||||
// Contenuto : Funzioni per codificare/decodificare in Base64.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 03.11.25 DS Creazione modulo.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
//--------------------------- Include ----------------------------------------
|
||||
#include "stdafx.h"
|
||||
#include "/EgtDev/Include/EXeExecutor.h"
|
||||
#include "/EgtDev/Include/EgtStringConverter.h"
|
||||
#include "/EgtDev/Include/EgtBase64.h"
|
||||
#include <fstream>
|
||||
|
||||
using namespace std ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeBase64Encode( const string& sFile, string& sB64Dest)
|
||||
{
|
||||
// apro il file in modo binario
|
||||
ifstream InFile( stringtoW( sFile), ios::in | ios::binary, _SH_DENYWR) ;
|
||||
if ( InFile.fail()) {
|
||||
if ( InFile.is_open())
|
||||
InFile.close() ;
|
||||
return false ;
|
||||
}
|
||||
// leggo il file
|
||||
string sSou( istreambuf_iterator<char>( InFile), {}) ;
|
||||
// lo chiudo
|
||||
if ( InFile.is_open())
|
||||
InFile.close() ;
|
||||
|
||||
// converto in Base64
|
||||
return B64Encode( sSou, sB64Dest) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeBase64Decode( const string& sB64Sou, const string& sFile)
|
||||
{
|
||||
// converto da Base64
|
||||
string sDest ;
|
||||
if ( ! B64Decode( sB64Sou, sDest))
|
||||
return false ;
|
||||
|
||||
// apro il file in modo binario
|
||||
ofstream OutFile( stringtoW( sFile), ios::out | ios::binary, _SH_DENYWR) ;
|
||||
if ( ! OutFile.good()) {
|
||||
if ( OutFile.is_open())
|
||||
OutFile.close() ;
|
||||
return false ;
|
||||
}
|
||||
// scrivo sul file
|
||||
OutFile.write( sDest.data(), sDest.size()) ;
|
||||
// lo chiudo
|
||||
if ( OutFile.is_open())
|
||||
OutFile.close() ;
|
||||
return true ;
|
||||
}
|
||||
+62
-4
@@ -148,6 +148,26 @@ ExeBeamGetSideData( int nSide, Frame3d& frRef, double& dLength, double& dWidth,
|
||||
return pBeamMgr->GetSideData( nSide, frRef, dLength, dWidth, dHeight) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeBeamShowFacesName( bool bShow)
|
||||
{
|
||||
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
|
||||
VERIFY_BEAMMGR( pBeamMgr, false)
|
||||
// imposto la visualizzazione delle facce sul pezzo corrente
|
||||
return pBeamMgr->ShowFacesName( bShow) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeBeamShowLoadingSide( bool bShow, bool bFromLeft)
|
||||
{
|
||||
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
|
||||
VERIFY_BEAMMGR( pBeamMgr, false)
|
||||
// imposto la visualizzazione del lato di carico sotto il pezzo corrente
|
||||
return pBeamMgr->ShowLoadingSide( bShow, bFromLeft) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
int
|
||||
ExeBeamAddProcess( int nGroup, int nProc, int nSide, const string& sDes, int nProcId,
|
||||
@@ -196,6 +216,44 @@ ExeBeamEnableProcess( int nGeomId, bool bEnable, bool bUpdate)
|
||||
return pBeamMgr->EnableProcess( nGeomId, bEnable, bUpdate) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeBeamCalcAllSolids( bool bShow, bool bRecalc)
|
||||
{
|
||||
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
|
||||
VERIFY_BEAMMGR( pBeamMgr, false)
|
||||
// disabilito possibilità di alterare il flag di modifica
|
||||
bool bOldEnabModif = ExeGetEnableModified() ;
|
||||
if ( bOldEnabModif)
|
||||
ExeDisableModified() ;
|
||||
// calcolo i solidi di tutte le travi
|
||||
bool bOk = pBeamMgr->CalcAllSolids( bShow, bRecalc, ExeProcessEvents) ;
|
||||
// ripristino possibilità di alterare il flag di modifica
|
||||
if ( bOldEnabModif)
|
||||
ExeEnableModified() ;
|
||||
// risultato
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeBeamShowAllSolids( bool bShow)
|
||||
{
|
||||
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
|
||||
VERIFY_BEAMMGR( pBeamMgr, false)
|
||||
// disabilito possibilità di alterare il flag di modifica
|
||||
bool bOldEnabModif = ExeGetEnableModified() ;
|
||||
if ( bOldEnabModif)
|
||||
ExeDisableModified() ;
|
||||
// aggiorno stato di visualizzazione dei solidi di tutte le travi
|
||||
bool bOk = pBeamMgr->ShowAllSolids( bShow, ExeProcessEvents) ;
|
||||
// ripristino possibilità di alterare il flag di modifica
|
||||
if ( bOldEnabModif)
|
||||
ExeEnableModified() ;
|
||||
// risultato
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeBeamCalcSolid( int nPartId, bool bRecalc)
|
||||
@@ -246,17 +304,17 @@ ExeBeamShowSolid( int nPartId, bool bShow)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeBeamGetBuildingIsOn( void)
|
||||
ExeBeamGetBuildingIsOn( int nAssGrpId)
|
||||
{
|
||||
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
|
||||
VERIFY_BEAMMGR( pBeamMgr, false)
|
||||
// verifico se assemblaggio attivato
|
||||
return pBeamMgr->GetBuildingIsOn() ;
|
||||
return pBeamMgr->GetBuildingIsOn( nAssGrpId) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeBeamShowBuilding( bool bShow)
|
||||
ExeBeamShowBuilding( int nAssGrpId, bool bShow)
|
||||
{
|
||||
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
|
||||
VERIFY_BEAMMGR( pBeamMgr, false)
|
||||
@@ -265,7 +323,7 @@ ExeBeamShowBuilding( bool bShow)
|
||||
if ( bOldEnabModif)
|
||||
ExeDisableModified() ;
|
||||
// attivo o disattivo la visualizzazione l'assemblaggio
|
||||
bool bOk = pBeamMgr->ShowBuilding( bShow) ;
|
||||
bool bOk = pBeamMgr->ShowBuilding( nAssGrpId, bShow) ;
|
||||
// ripristino possibilità di alterare il flag di modifica
|
||||
if ( bOldEnabModif)
|
||||
ExeEnableModified() ;
|
||||
|
||||
+37
-6
@@ -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)
|
||||
@@ -152,16 +175,23 @@ ExeCAvToolPathStm( int nCrvId, const Vector3d& vtAx, int nSurfTmId, const Vector
|
||||
// verifico oggetto per evitare collisioni
|
||||
if ( IsNull( s_pCAvTlStm))
|
||||
return false ;
|
||||
// Controllo la tolleranza lineare (se negativa non vanno fatti controlli sui punti medi)
|
||||
if ( dLinTol > -EPS_ZERO)
|
||||
dLinTol = max( dLinTol, EPS_SMALL) ;
|
||||
else
|
||||
dLinTol = -1 ;
|
||||
// approssimo la curva con una polilinea
|
||||
PolyLine PL ;
|
||||
if ( ! pCrv->ApproxWithLines( dLinTol, ANG_TOL_STD_DEG, ICurve::APL_SPECIAL, PL))
|
||||
return false ;
|
||||
// eventuale aggiunta di punti per garantire max distanza
|
||||
const double MIN_DIST = 1. ;
|
||||
const double MAX_DIST = 50. ;
|
||||
double dDist = Clamp( s_pCAvTlStm->GetToolRadius(), MIN_DIST, MAX_DIST) ;
|
||||
if ( ! PL.AdjustForMaxSegmentLen( dDist))
|
||||
return false ;
|
||||
if ( dLinTol > 0) {
|
||||
const double MIN_DIST = 1. ;
|
||||
const double MAX_DIST = 50. ;
|
||||
double dDist = Clamp( s_pCAvTlStm->GetToolRadius(), MIN_DIST, MAX_DIST) ;
|
||||
if ( ! PL.AdjustForMaxSegmentLen( dDist))
|
||||
return false ;
|
||||
}
|
||||
// porto nel riferimento della superficie
|
||||
PL.LocToLoc( frCrv, frSurf) ;
|
||||
// porto i dati geometrici in locale alla superficie
|
||||
@@ -175,7 +205,8 @@ ExeCAvToolPathStm( int nCrvId, const Vector3d& vtAx, int nSurfTmId, const Vector
|
||||
// riporto la polilinea nel riferimento della curva
|
||||
PL.LocToLoc( frSurf, frCrv) ;
|
||||
// elimino i punti allineati
|
||||
PL.RemoveAlignedPoints( 0.8 * dLinTol) ;
|
||||
if ( dLinTol > 0)
|
||||
PL.RemoveAlignedPoints( 0.8 * dLinTol) ;
|
||||
// creo una curva composita a partire dalla polilinea
|
||||
PtrOwner< ICurveComposite> pCompo( CreateCurveComposite()) ;
|
||||
if ( IsNull( pCompo) || ! pCompo->FromPolyLine( PL))
|
||||
|
||||
+86
-12
@@ -1,9 +1,9 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2020-2020
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EXE_CDeObjClosedSurfTm.cpp Data : 09.01.20 Versione : 2.2a2
|
||||
// File : EXE_CDeObjSolid.cpp Data : 09.01.20 Versione : 2.2a2
|
||||
// Contenuto : Funzioni per verificare collisioni tra
|
||||
// Objects e Closed SurftriMesh.
|
||||
// Objects e Solidi (Closed SurftriMesh e Zmap).
|
||||
//
|
||||
//
|
||||
// Modifiche : 09.01.20 DS Creazione modulo.
|
||||
@@ -25,7 +25,9 @@
|
||||
#include "/EgtDev/Include/EGkCDeCylClosedSurfTm.h"
|
||||
#include "/EgtDev/Include/EGkCDeConeFrustumClosedSurfTm.h"
|
||||
#include "/EgtDev/Include/EGkCDeSpheClosedSurfTm.h"
|
||||
#include "/EgtDev/Include/EGkCDeClosedSurfTmClosedSurfTm.h"
|
||||
#include "/EgtDev/Include/EGkVolZmap.h"
|
||||
#include "/EgtDev/Include/EGkSurfLocal.h"
|
||||
#include "/EgtDev/Include/EGkStringUtils3d.h"
|
||||
|
||||
using namespace std ;
|
||||
@@ -47,7 +49,7 @@ MyCDeBoxClosedSurfTm( const Frame3d& frBox, const Vector3d& vtDiag, int nSurfTmI
|
||||
// porto in locale alla superficie il riferimento del box (il vettore è già in questo stesso riferimento)
|
||||
Frame3d frBoxL = GetFrameLocal( pGeomDB, frBox, nRefType, frSurf) ;
|
||||
// verifico la collisione
|
||||
return ( CDeBoxClosedSurfTm( frBoxL, vtDiag, dSafeDist, *pStm) ? 1 : 0) ;
|
||||
return ( CDeBoxClosedSurfTm( frBoxL, vtDiag, *pStm, dSafeDist) ? 1 : 0) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -67,7 +69,7 @@ MyCDeBoxVolZmap( const Frame3d& frBox, const Vector3d& vtDiag, int nZmapId, doub
|
||||
// porto in locale il riferimento (il vettore è già in locale a questo stesso riferimento)
|
||||
Frame3d frBoxL = GetFrameLocal( pGeomDB, frBox, nRefType, frLoc) ;
|
||||
// verifico la collisione
|
||||
return ( pVZM->AvoidBox( frBoxL, vtDiag, dSafeDist) ? 0 : 1) ;
|
||||
return ( pVZM->CDeBox( frBoxL, vtDiag, dSafeDist, false) ? 1 : 0) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -116,7 +118,7 @@ MyCDeRectPrismoidClosedSurfTm( const Frame3d& frPrismoid, double dBaseLenX, doub
|
||||
// porto in locale alla superficie il riferimento del prismoide rettangolare
|
||||
Frame3d frPrismoidL = GetFrameLocal( pGeomDB, frPrismoid, nRefType, frSurf) ;
|
||||
// verifico la collisione
|
||||
return ( CDeRectPrismoidClosedSurfTm( frPrismoidL, dBaseLenX, dBaseLenY, dTopLenX, dTopLenY, dHeight, dSafeDist, *pStm) ? 1 : 0) ;
|
||||
return ( CDeRectPrismoidClosedSurfTm( frPrismoidL, dBaseLenX, dBaseLenY, dTopLenX, dTopLenY, dHeight, *pStm, dSafeDist) ? 1 : 0) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -138,7 +140,7 @@ MyCDeRectPrismoidVolZmap( const Frame3d& frPrismoid, double dBaseLenX, double dB
|
||||
// porto in locale il riferimento (il vettore è già in locale a questo stesso riferimento)
|
||||
Frame3d frPrismoidL = GetFrameLocal( pGeomDB, frPrismoid, nRefType, frLoc) ;
|
||||
// verifico la collisione
|
||||
return ( pVZM->AvoidRectPrismoid( frPrismoidL, dBaseLenX, dBaseLenY, dTopLenX, dTopLenY, dHeight, dSafeDist) ? 0 : 1) ;
|
||||
return ( pVZM->CDeRectPrismoid( frPrismoidL, dBaseLenX, dBaseLenY, dTopLenX, dTopLenY, dHeight, dSafeDist, false) ? 1 : 0) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -191,7 +193,7 @@ MyCDeCylClosedSurfTm( const Frame3d& frCyl, double dR, double dH, int nSurfTmId,
|
||||
// porto in locale alla superficie il riferimento del cilindro
|
||||
Frame3d frCylL = GetFrameLocal( pGeomDB, frCyl, nRefType, frSurf) ;
|
||||
// verifico la collisione
|
||||
return ( CDeCylClosedSurfTm( frCylL, dR, dH, dSafeDist, *pStm) ? 1 : 0) ;
|
||||
return ( CDeCylClosedSurfTm( frCylL, dR, dH, *pStm, dSafeDist) ? 1 : 0) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -211,7 +213,7 @@ MyCDeCylVolZmap( const Frame3d& frCyl, double dR, double dH, int nZmapId, double
|
||||
// porto in locale il riferimento
|
||||
Frame3d frCylL = GetFrameLocal( pGeomDB, frCyl, nRefType, frLoc) ;
|
||||
// verifico la collisione
|
||||
return ( pVZM->AvoidCylinder( frCylL, dR, dH, dSafeDist) ? 0 : 1) ;
|
||||
return ( pVZM->CDeCylinder( frCylL, dR, dH, dSafeDist, false) ? 1 : 0) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -259,7 +261,7 @@ MyCDeConeClosedSurfTm( const Frame3d& frCone, double dR1, double dR2, double dH,
|
||||
// porto in locale alla superficie il riferimento del cilindro
|
||||
Frame3d frConeL = GetFrameLocal( pGeomDB, frCone, nRefType, frSurf) ;
|
||||
// verifico la collisione
|
||||
return ( CDeConeFrustumClosedSurfTm( frConeL, dR1, dR2, dH, dSafeDist, *pStm) ? 1 : 0) ;
|
||||
return ( CDeConeFrustumClosedSurfTm( frConeL, dR1, dR2, dH, *pStm, dSafeDist) ? 1 : 0) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -279,7 +281,7 @@ MyCDeConeVolZmap( const Frame3d& frCone, double dR1, double dR2, double dH, int
|
||||
// porto in locale il riferimento
|
||||
Frame3d frConeL = GetFrameLocal( pGeomDB, frCone, nRefType, frLoc) ;
|
||||
// verifico la collisione
|
||||
return ( pVZM->AvoidConeFrustum( frConeL, dR1, dR2, dH, dSafeDist) ? 0 : 1) ;
|
||||
return ( pVZM->CDeConeFrustum( frConeL, dR1, dR2, dH, dSafeDist, false) ? 1 : 0) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -328,7 +330,7 @@ MyCDeSpheClosedSurfTm( const Point3d& ptCen, double dR, int nSurfTmId, double dS
|
||||
// porto in locale alla superficie il centro della sfera
|
||||
Point3d ptCenL = GetPointLocal( pGeomDB, ptCen, nRefType, frSurf) ;
|
||||
// verifico la collisione
|
||||
return ( CDeSpheClosedSurfTm( ptCenL, dR, dSafeDist, *pStm) ? 1 : 0) ;
|
||||
return ( CDeSpheClosedSurfTm( ptCenL, dR, *pStm, dSafeDist) ? 1 : 0) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -348,7 +350,7 @@ MyCDeSpheVolZmap( const Point3d& ptCen, double dRad, int nZmapId, double dSafeDi
|
||||
// porto in locale il centro della sfera
|
||||
Point3d ptCenL = GetPointLocal( pGeomDB, ptCen, nRefType, frLoc) ;
|
||||
// verifico la collisione
|
||||
return ( pVZM->AvoidSphere( ptCenL, dRad, dSafeDist) ? 0 : 1) ;
|
||||
return ( pVZM->CDeSphere( ptCenL, dRad, dSafeDist, false) ? 1 : 0) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -374,3 +376,75 @@ ExeCDeSpheSolid( const Point3d& ptCen, double dR, int nSolidId, double dSafeDist
|
||||
// restituisco risultato
|
||||
return nRes ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
MyCDeClosedSurfTmClosedSurfTm( int nSurfTm1Id, int nSurfTm2Id, double dSafeDist)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, -1)
|
||||
// recupero il riferimento della seconda superficie
|
||||
Frame3d frSurf2 ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nSurfTm2Id, frSurf2))
|
||||
return -1 ;
|
||||
// recupero la prima superficie in locale alla seconda
|
||||
SurfLocal Surf1Loc( pGeomDB, nSurfTm1Id, frSurf2) ;
|
||||
const ISurfTriMesh* pStm1 = GetSurfTriMesh( Surf1Loc) ;
|
||||
if ( pStm1 == nullptr)
|
||||
return -1 ;
|
||||
// recupero la seconda superficie TriMesh
|
||||
const ISurfTriMesh* pStm2 = GetSurfTriMesh( pGeomDB->GetGeoObj( nSurfTm2Id)) ;
|
||||
if ( pStm2 == nullptr)
|
||||
return -1 ;
|
||||
// verifico la collisione
|
||||
return ( CDeClosedSurfTmClosedSurfTm( *pStm1, *pStm2, dSafeDist) ? 1 : 0) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
MyCDeClosedSurfTmVolZmap( int nSurfTmId, int nZmapId, double dSafeDist)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, -1)
|
||||
// recupero il riferimento dello Zmap
|
||||
Frame3d frZmap ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nZmapId, frZmap))
|
||||
return -1 ;
|
||||
// recupero la superficie in locale allo Zmap
|
||||
SurfLocal SurfLoc( pGeomDB, nSurfTmId, frZmap) ;
|
||||
const ISurfTriMesh* pStm = GetSurfTriMesh( SurfLoc) ;
|
||||
if ( pStm == nullptr)
|
||||
return -1 ;
|
||||
// recupero lo Zmap
|
||||
const IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( nZmapId)) ;
|
||||
if ( pVZM == nullptr)
|
||||
return -1 ;
|
||||
// verifico la collisione
|
||||
return ( pVZM->CDeSurfTm( *pStm, dSafeDist, false) ? 1 : 0) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeCDeSolidSolid( int nSolid1Id, int nSolid2Id, double dSafeDist)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
int nRes = -1 ;
|
||||
if ( pGeomDB != nullptr) {
|
||||
if ( pGeomDB->GetGeoType( nSolid1Id) == SRF_TRIMESH && pGeomDB->GetGeoType( nSolid2Id) == SRF_TRIMESH)
|
||||
nRes = MyCDeClosedSurfTmClosedSurfTm( nSolid1Id, nSolid2Id, dSafeDist) ;
|
||||
else if ( pGeomDB->GetGeoType( nSolid1Id) == SRF_TRIMESH && pGeomDB->GetGeoType( nSolid2Id) == VOL_ZMAP)
|
||||
nRes = MyCDeClosedSurfTmVolZmap( nSolid1Id, nSolid2Id, dSafeDist) ;
|
||||
else if ( pGeomDB->GetGeoType( nSolid1Id) == VOL_ZMAP && pGeomDB->GetGeoType( nSolid2Id) == SRF_TRIMESH)
|
||||
nRes = MyCDeClosedSurfTmVolZmap( nSolid2Id, nSolid1Id, dSafeDist) ;
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtCDeSolidSolid({" + IdToString( nSolid1Id) + "," +
|
||||
IdToString( nSolid2Id) + "," +
|
||||
ToString( dSafeDist) + ")" +
|
||||
" -- Res=" + ToString( nRes) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return nRes ;
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// Costanti per tolleranze di appossimazione
|
||||
const double LIN_TOL_STD = 0.1 ;
|
||||
const double LIN_TOL_SRF = 0.05 ;
|
||||
const double LIN_TOL_FINE = 0.01 ;
|
||||
const double LIN_FEA_STD = 20 ;
|
||||
const double LIN_FEA_MAX = 400 ;
|
||||
|
||||
+251
-39
@@ -15,24 +15,30 @@
|
||||
#include "stdafx.h"
|
||||
#include "EXE.h"
|
||||
#include "EXE_Macro.h"
|
||||
#include "LUA_Base.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"
|
||||
#include "/EgtDev/Include/EExImportDxf.h"
|
||||
#include "/EgtDev/Include/EExImportStl.h"
|
||||
#include "/EgtDev/Include/EExImport3MF.h"
|
||||
#include "/EgtDev/Include/EExExportThreeJS.h"
|
||||
#include "/EgtDev/Include/EExImportCnc.h"
|
||||
#include "/EgtDev/Include/EExImportCsf.h"
|
||||
#include "/EgtDev/Include/EExImportPnt.h"
|
||||
#include "/EgtDev/Include/EExImportBtl.h"
|
||||
#include "/EgtDev/Include/EExImportBtlx.h"
|
||||
#include "/EgtDev/Include/EExImportOff.h"
|
||||
#include "/EgtDev/Include/EExImportPly.h"
|
||||
#include "/EgtDev/Include/EExExportDxf.h"
|
||||
#include "/EgtDev/Include/EExExportStl.h"
|
||||
#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"
|
||||
@@ -60,7 +66,7 @@ ExeGetFileType( const string& sFilePath)
|
||||
SplitLast( sFileName, ".", sFileTitle, sFileExt) ;
|
||||
ToUpper( sFileExt) ;
|
||||
|
||||
if ( sFileExt == "NGE" || sFileExt == "VME" || sFileExt == "NHE" || sFileExt == "BWE")
|
||||
if ( sFileExt == "NGE" || sFileExt == "VME" || sFileExt == "NHE" || sFileExt == "BWE" || sFileExt == "ICRS")
|
||||
return FT_NGE ;
|
||||
else if ( sFileExt == "NFE")
|
||||
return FT_NFE ;
|
||||
@@ -70,8 +76,14 @@ 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 == "OFF")
|
||||
return FT_OFF ;
|
||||
else if ( sFileExt == "PLY")
|
||||
return FT_PLY ;
|
||||
else if ( sFileExt == "CNC" || sFileExt == "XPI" || sFileExt == "MPF" || sFileExt == "ISO" || sFileExt == "EIA")
|
||||
return FT_CNC ;
|
||||
else if ( sFileExt == "HED" || sFileExt == "ENT" || sFileExt == "ENS")
|
||||
@@ -100,6 +112,8 @@ ExeGetFileType( const string& sFilePath)
|
||||
return FT_VRML ;
|
||||
else if ( sFileExt == "C3D")
|
||||
return FT_C3D ;
|
||||
else if ( sFileExt == "HTML")
|
||||
return FT_HTML ;
|
||||
else if ( sFileExt == "TSC")
|
||||
return FT_TSC ;
|
||||
else if ( sFileExt == "LUA")
|
||||
@@ -116,17 +130,11 @@ ExeGetFileType( const string& sFilePath)
|
||||
bool
|
||||
ExeSetBtlAuxDir( const string& sBtlAuxDir)
|
||||
{
|
||||
return MySetBtlAuxDir( sBtlAuxDir) ;
|
||||
bool bOk1 = MySetBtlAuxDir( sBtlAuxDir) ;
|
||||
bool bOk2 = MySetBtlLuaData( LuaGetLuaLibsDir(), LuaGetLastRequire()) ;
|
||||
return ( bOk1 && bOk2) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetThreeJSAuxDir( const string & sThreeJSAuxDir )
|
||||
{
|
||||
return MySetThreeJSAuxDir( sThreeJSAuxDir) ;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeImportBtl( const string& sFilePath, int nFlag)
|
||||
@@ -151,6 +159,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 ;
|
||||
}
|
||||
@@ -179,6 +192,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 ;
|
||||
}
|
||||
@@ -209,6 +227,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 ;
|
||||
}
|
||||
@@ -236,6 +259,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 ;
|
||||
}
|
||||
@@ -266,6 +294,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 ;
|
||||
}
|
||||
@@ -296,6 +329,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 ;
|
||||
}
|
||||
@@ -311,10 +349,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())
|
||||
@@ -327,26 +365,106 @@ 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 ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeImport3MF( const string& sFilePath)
|
||||
ExeImportOff( const string& sFilePath, double dScaleFactor)
|
||||
{
|
||||
GseContext* pGseCtx = GetCurrGseContext() ;
|
||||
VERIFY_CTX_GEOMDB( pGseCtx, false)
|
||||
bool bOk = true ;
|
||||
// importo il file OFF
|
||||
// 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
|
||||
PtrOwner<IImportOff> pImpOff( MyCreateImportOff()) ;
|
||||
bOk = bOk && ! IsNull( pImpOff) ;
|
||||
// eseguo l'importazione
|
||||
bOk = bOk && pImpOff->Import( sFilePath, pGseCtx->m_pGeomDB, nLayerId, dScaleFactor) ;
|
||||
// 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 = "EgtImportOff('" + StringToLuaString( sFilePath) + "'," +
|
||||
ToString( dScaleFactor) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// scrivo il log
|
||||
if ( ! IsNull( pImpOff)) {
|
||||
string sLog = "Import File " + sFilePath ;
|
||||
LOG_INFO( GetLogger(), sLog.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeImportPly( const string& sFilePath, double dScaleFactor)
|
||||
{
|
||||
GseContext* pGseCtx = GetCurrGseContext() ;
|
||||
VERIFY_CTX_GEOMDB( pGseCtx, false)
|
||||
bool bOk = true ;
|
||||
// importo il file PLY
|
||||
// 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
|
||||
PtrOwner<IImportPly> pImpPly( MyCreateImportPly()) ;
|
||||
bOk = bOk && ! IsNull( pImpPly) ;
|
||||
// eseguo l'importazione
|
||||
bOk = bOk && pImpPly->Import( sFilePath, pGseCtx->m_pGeomDB, nLayerId, dScaleFactor) ;
|
||||
// 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 = "EgtImportPly('" + StringToLuaString( sFilePath) + "'," +
|
||||
ToString( dScaleFactor) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// scrivo il log
|
||||
if ( ! IsNull( pImpPly)) {
|
||||
string sLog = "Import File " + sFilePath ;
|
||||
LOG_INFO( GetLogger(), sLog.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeImport3MF( const string& sFilePath, int nFlag)
|
||||
{
|
||||
GseContext* pGseCtx = GetCurrGseContext() ;
|
||||
VERIFY_CTX_GEOMDB( pGseCtx, false)
|
||||
bool bOk = true ;
|
||||
// importo il file 3MF
|
||||
// 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
|
||||
int nLayerId = GDB_ID_ROOT ;
|
||||
// aggiungo un gruppo pezzo e un gruppo layer se non devo conservare la gerarchia del file
|
||||
if ( ( nFlag & EI3FLAG_KEEP_GROUPS) == 0) {
|
||||
int nPartId = pGseCtx->m_pGeomDB->AddGroup( GDB_ID_NULL, GDB_ID_ROOT, Frame3d()) ;
|
||||
nLayerId = pGseCtx->m_pGeomDB->AddGroup( GDB_ID_NULL, nPartId, Frame3d()) ;
|
||||
}
|
||||
// preparo l'importatore
|
||||
PtrOwner<IImport3MF> pImp3MF( MyCreateImport3MF()) ;
|
||||
bOk = bOk && ! IsNull( pImp3MF) ;
|
||||
// eseguo l'importazione
|
||||
bOk = bOk && pImp3MF->Import( sFilePath, pGseCtx->m_pGeomDB, nLayerId) ;
|
||||
// eseguo l'importazione
|
||||
bOk = bOk && pImp3MF->Import( sFilePath, pGseCtx->m_pGeomDB, nLayerId, nFlag) ;
|
||||
// aggiorno stato file corrente
|
||||
if ( pGseCtx->m_sFilePath.empty())
|
||||
pGseCtx->m_sFilePath = sFilePath ;
|
||||
@@ -357,6 +475,55 @@ 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)
|
||||
// se necessario, carico libreria exchange 3dm opzionale
|
||||
if ( ! IsLoadedExch3dmDll() && LoadExch3dmDll( GetLogger(), ExeGetKey(), ExeGetNetHwKey()))
|
||||
LOG_INFO( GetLogger(), MyGetEE3Version())
|
||||
// importo il file 3dm
|
||||
bool bOk = true ;
|
||||
// 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, GDB_ID_ROOT,
|
||||
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 ;
|
||||
}
|
||||
@@ -386,7 +553,7 @@ ExeAdvancedImportIsEnabled( void)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeAdvancedImport( const string& sFilePath, double dToler)
|
||||
ExeAdvancedImport( const string& sFilePath, double dToler, int nFlag)
|
||||
{
|
||||
GseContext* pGseCtx = GetCurrGseContext() ;
|
||||
VERIFY_CTX_GEOMDB( pGseCtx, false)
|
||||
@@ -419,7 +586,8 @@ ExeAdvancedImport( const string& sFilePath, double dToler)
|
||||
sExec = "EgtConverterR32.exe" ;
|
||||
#endif
|
||||
string sCmdLine = "\"" + sExec + "\" \"" + sFilePath + "\" \"" + sFileOut + "\" \"" +
|
||||
ToString( dToler, 3) + "\" \"" + ToString( ExeGetDebugLevel()) +"\" \"" + ExeGetKey() + "\"" ;
|
||||
ToString( dToler, 3) + "\" \"" + ToString( ExeGetDebugLevel()) + "\" \"" +
|
||||
ExeGetKey() + "\" \"" + ExeGetLockId() + "\" \"" + ToString( nFlag) + "\"" ;
|
||||
STARTUPINFO si ;
|
||||
PROCESS_INFORMATION pi ;
|
||||
ZeroMemory( &si, sizeof( si)) ;
|
||||
@@ -453,7 +621,8 @@ ExeAdvancedImport( const string& sFilePath, double dToler)
|
||||
if ( ExeGetDebugLevel() < 5)
|
||||
EraseFile( sFileOut) ;
|
||||
// aggiorno stato file corrente
|
||||
pGseCtx->m_sFilePath = sFilePath ;
|
||||
if ( pGseCtx->m_sFilePath.empty())
|
||||
pGseCtx->m_sFilePath = sFilePath ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
@@ -462,23 +631,28 @@ 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 ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeExportDxf( int nId, const string& sFilePath, int nFlag)
|
||||
ExeExportDxf( int nId, const string& sFilePath, int nFlag, int nFilter)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
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( EEXFLT_DEFAULT, nFlag) ;
|
||||
bOk = bOk && pExpDxf->SetOptions( nFilter, nFlag) ;
|
||||
bOk = bOk && pExpDxf->Export( pGeomDB, nId, sFilePath) ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
@@ -494,16 +668,17 @@ ExeExportDxf( int nId, const string& sFilePath, int nFlag)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeExportStl( int nId, const string& sFilePath)
|
||||
ExeExportStl( int nId, const string& sFilePath, int nFilter)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
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
|
||||
bOk = bOk && pExpStl->SetOptions( nFilter) ;
|
||||
bOk = bOk && pExpStl->Export( pGeomDB, nId, sFilePath) ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
@@ -518,16 +693,17 @@ ExeExportStl( int nId, const string& sFilePath)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeExport3MF( int nId, const string& sFilePath)
|
||||
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
|
||||
// eseguo l'esportazione
|
||||
bOk = bOk && pExp3MF->SetOptions( nFilter) ;
|
||||
bOk = bOk && pExp3MF->Export( pGeomDB, nId, sFilePath) ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
@@ -540,6 +716,34 @@ ExeExport3MF( int nId, const string& sFilePath)
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeExport3dm( int nId, const string& sFilePath, int nFilter)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// se necessario, carico libreria exchange 3dm opzionale
|
||||
if ( ! IsLoadedExch3dmDll() && LoadExch3dmDll( GetLogger(), ExeGetKey(), ExeGetNetHwKey()))
|
||||
LOG_INFO( GetLogger(), MyGetEE3Version())
|
||||
// esporto il file 3dm
|
||||
bool bOk = true ;
|
||||
// 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)
|
||||
@@ -547,12 +751,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()) {
|
||||
@@ -566,6 +770,13 @@ ExeExportSvg( int nId, const string& sFilePath, int nFilter)
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetThreeJSLibDir( const string& sThreeJSLibDir)
|
||||
{
|
||||
return MySetThreeJSLibDir( sThreeJSLibDir) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeExportThreeJS( int nId, const string& sFilePath, int nFilter)
|
||||
@@ -582,12 +793,13 @@ ExeExportThreeJS( int nId, const string& sFilePath, int nFilter)
|
||||
|
||||
// eseguo l'esportazione
|
||||
bOk = bOk && pExpThreeJS->SetOptions( nFilter) ;
|
||||
bOk = bOk && pExpThreeJS->Export( pGeomDB, nId, sFilePath, pScene, ExeUiUnitsAreMM()) ;
|
||||
bOk = bOk && pExpThreeJS->Export( pGeomDB, nId, pScene, ExeUiUnitsAreMM(), sFilePath) ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtExportThreeJS(" + ToString( nId) + ",'" +
|
||||
StringToLuaString( sFilePath) + "')" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
StringToLuaString( sFilePath) + "'," +
|
||||
ToString( nFilter) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
|
||||
+530
-42
@@ -26,6 +26,11 @@
|
||||
#include "/EgtDev/Include/EGkStringUtils3d.h"
|
||||
#include "/EgtDev/Include/EgtStringConverter.h"
|
||||
#include "/EgtDev/Include/EgtPointerOwner.h"
|
||||
#include "/EgtDev/Include/EGkIntersCurves.h"
|
||||
#include "/EgtDev/Include/EGkCurveLine.h"
|
||||
#include "/EgtDev/Include/EGkCurveArc.h"
|
||||
#include "/EgtDev/Include/EGkDistPointCurve.h"
|
||||
#include "/EgtDev/Include/EGkCurveComposite.h"
|
||||
|
||||
using namespace std ;
|
||||
|
||||
@@ -35,11 +40,11 @@ ExeCreateGroup( int nParentId, const Frame3d& frFrame, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
bool bOk = true ;
|
||||
// recupero il riferimento locale
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
bOk = bOk && pGeomDB->GetGroupGlobFrame( nParentId, frLoc) ;
|
||||
bOk = bOk && pGeomDB->GetGroupGlobFrame( nParentId, frLoc ) ;
|
||||
// porto in locale l'origine e i versori
|
||||
Point3d ptOrigL = GetPointLocal( pGeomDB, frFrame.Orig(), nRefType, frLoc) ;
|
||||
Vector3d vtXL = GetVectorLocal( pGeomDB, frFrame.VersX(), nRefType, frLoc) ;
|
||||
@@ -73,7 +78,7 @@ ExeCreateGroup( int nParentId, const Frame3d& frFrame, int nRefType)
|
||||
" -- Id=" + ToString( nId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo del nuovo gruppo
|
||||
// restituisco l'identificativo del nuovo gruppo
|
||||
return nId ;
|
||||
}
|
||||
|
||||
@@ -83,7 +88,7 @@ ExeCreateGeoPoint( int nParentId, const Point3d& ptP, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
bool bOk = true ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
@@ -92,9 +97,9 @@ ExeCreateGeoPoint( int nParentId, const Point3d& ptP, int nRefType)
|
||||
Point3d ptPL = GetPointLocal( pGeomDB, ptP, nRefType, frLoc) ;
|
||||
// creo il punto
|
||||
PtrOwner<IGeoPoint3d> pGeoPnt( CreateGeoPoint3d()) ;
|
||||
bOk = bOk && ! IsNull( pGeoPnt) ;
|
||||
bOk = bOk && !IsNull( pGeoPnt) ;
|
||||
// setto il punto
|
||||
bOk = bOk && pGeoPnt->Set( ptPL) ;
|
||||
bOk = bOk && pGeoPnt->Set( ptPL) ;
|
||||
// inserisco il punto nel DB
|
||||
int nId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pGeoPnt)) : GDB_ID_NULL) ;
|
||||
ExeSetModified() ;
|
||||
@@ -106,7 +111,7 @@ ExeCreateGeoPoint( int nParentId, const Point3d& ptP, int nRefType)
|
||||
" -- Id=" + ToString( nId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo della nuova entità
|
||||
// restituisco l'identificativo della nuova entit�
|
||||
return nId ;
|
||||
}
|
||||
|
||||
@@ -116,7 +121,7 @@ ExeCreateGeoVector( int nParentId, const Vector3d& vtV, const Point3d& ptB, int
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
bool bOk = true ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
@@ -128,7 +133,7 @@ ExeCreateGeoVector( int nParentId, const Vector3d& vtV, const Point3d& ptB, int
|
||||
PtrOwner<IGeoVector3d> pGeoVct( CreateGeoVector3d()) ;
|
||||
bOk = bOk && ! IsNull( pGeoVct) ;
|
||||
// setto il vettore (con il punto base)
|
||||
bOk = bOk && pGeoVct->Set( vtVL, ptBL) ;
|
||||
bOk = bOk && pGeoVct->Set( vtVL, ptBL) ;
|
||||
// inserisco il vettore nel DB
|
||||
int nId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pGeoVct)) : GDB_ID_NULL) ;
|
||||
ExeSetModified() ;
|
||||
@@ -148,7 +153,7 @@ ExeCreateGeoVector( int nParentId, const Vector3d& vtV, const Point3d& ptB, int
|
||||
" -- Id=" + ToString( nId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo della nuova entità
|
||||
// restituisco l'identificativo della nuova entit�
|
||||
return nId ;
|
||||
}
|
||||
|
||||
@@ -158,11 +163,11 @@ ExeCreateGeoFrame( int nParentId, const Frame3d& frFrame, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
bool bOk = true ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
bOk = bOk && pGeomDB->GetGroupGlobFrame( nParentId, frLoc) ;
|
||||
bOk = bOk && pGeomDB->GetGroupGlobFrame( nParentId, frLoc ) ;
|
||||
// porto in locale l'origine e i versori
|
||||
Point3d ptOrigL = GetPointLocal( pGeomDB, frFrame.Orig(), nRefType, frLoc) ;
|
||||
Vector3d vtXL = GetVectorLocal( pGeomDB, frFrame.VersX(), nRefType, frLoc) ;
|
||||
@@ -170,8 +175,8 @@ ExeCreateGeoFrame( int nParentId, const Frame3d& frFrame, int nRefType)
|
||||
Vector3d vtZL = GetVectorLocal( pGeomDB, frFrame.VersZ(), nRefType, frLoc) ;
|
||||
// creo e setto il riferimento
|
||||
PtrOwner<IGeoFrame3d> pGeoFrm( CreateGeoFrame3d()) ;
|
||||
bOk = bOk && ! IsNull( pGeoFrm) ;
|
||||
bOk = bOk && pGeoFrm->Set( ptOrigL, vtXL, vtYL, vtZL) ;
|
||||
bOk = bOk && !IsNull( pGeoFrm) ;
|
||||
bOk = bOk && pGeoFrm->Set( ptOrigL, vtXL, vtYL, vtZL) ;
|
||||
// inserisco il riferimento nel DB
|
||||
int nId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pGeoFrm)) : GDB_ID_NULL) ;
|
||||
ExeSetModified() ;
|
||||
@@ -183,7 +188,7 @@ ExeCreateGeoFrame( int nParentId, const Frame3d& frFrame, int nRefType)
|
||||
ToString( frFrame.VersY()) + "},{" +
|
||||
ToString( frFrame.VersZ()) + "}}," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Id=" + ToString( nId) ;
|
||||
" -- Id=" + ToString( nId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo del nuovo gruppo
|
||||
@@ -197,7 +202,7 @@ ExeCreateText( int nParentId, const Point3d& ptP,
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
bool bOk = true ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
@@ -208,7 +213,7 @@ ExeCreateText( int nParentId, const Point3d& ptP,
|
||||
Vector3d vtDL = GetVectorLocal( pGeomDB, X_AX, nRefType, frLoc) ;
|
||||
// creo il testo e lo riempio
|
||||
PtrOwner<IExtText> pTXT( CreateExtText()) ;
|
||||
bOk = bOk && ! IsNull( pTXT) ;
|
||||
bOk = bOk && !IsNull( pTXT) ;
|
||||
bOk = bOk && pTXT->Set( ptPL, vtNL, vtDL, sText, "", false, dH) ;
|
||||
// inserisco il testo nel DB
|
||||
int nId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pTXT)) : GDB_ID_NULL) ;
|
||||
@@ -234,7 +239,7 @@ ExeCreateTextEx( int nParentId, const Point3d& ptP, double dAngRotDeg,
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
bool bOk = true ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
@@ -242,10 +247,10 @@ ExeCreateTextEx( int nParentId, const Point3d& ptP, double dAngRotDeg,
|
||||
// porto in locale l'origine e i versori
|
||||
Point3d ptPL = GetPointLocal( pGeomDB, ptP, nRefType, frLoc) ;
|
||||
Vector3d vtNL = GetVectorLocal( pGeomDB, Z_AX, nRefType, frLoc) ;
|
||||
Vector3d vtDL = GetVectorLocal( pGeomDB, FromPolar(1, dAngRotDeg), nRefType, frLoc) ;
|
||||
Vector3d vtDL = GetVectorLocal( pGeomDB, FromPolar( 1, dAngRotDeg), nRefType, frLoc) ;
|
||||
// creo il testo e lo riempio
|
||||
PtrOwner<IExtText> pTXT( CreateExtText()) ;
|
||||
bOk = bOk && ! IsNull( pTXT) ;
|
||||
bOk = bOk && !IsNull( pTXT) ;
|
||||
bOk = bOk && pTXT->Set( ptPL, vtNL, vtDL, sText, sFont, bItalic, dH) ;
|
||||
// inserisco il testo nel DB
|
||||
int nId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pTXT)) : GDB_ID_NULL) ;
|
||||
@@ -263,7 +268,7 @@ ExeCreateTextEx( int nParentId, const Point3d& ptP, double dAngRotDeg,
|
||||
" -- Id=" + ToString( nId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo del oggetto
|
||||
// restituisco l'identificativo del oggetto
|
||||
return nId ;
|
||||
}
|
||||
|
||||
@@ -275,7 +280,7 @@ ExeCreateTextAdv( int nParentId, const Point3d& ptP, double dAngRotDeg,
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
bool bOk = true ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
@@ -283,10 +288,10 @@ ExeCreateTextAdv( int nParentId, const Point3d& ptP, double dAngRotDeg,
|
||||
// porto in locale l'origine e i versori
|
||||
Point3d ptPL = GetPointLocal( pGeomDB, ptP, nRefType, frLoc) ;
|
||||
Vector3d vtNL = GetVectorLocal( pGeomDB, Z_AX, nRefType, frLoc) ;
|
||||
Vector3d vtDL = GetVectorLocal( pGeomDB, FromPolar(1, dAngRotDeg), nRefType, frLoc) ;
|
||||
Vector3d vtDL = GetVectorLocal( pGeomDB, FromPolar( 1, dAngRotDeg), nRefType, frLoc) ;
|
||||
// creo il testo e lo imposto
|
||||
PtrOwner<IExtText> pTXT( CreateExtText()) ;
|
||||
bOk = bOk && ! IsNull( pTXT) ;
|
||||
bOk = bOk && !IsNull( pTXT) ;
|
||||
bOk = bOk && pTXT->Set( ptPL, vtNL, vtDL, sText, sFont, nW, bItalic, dH, dRat, dAddAdv, nInsPos) ;
|
||||
// inserisco il testo nel DB
|
||||
int nId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pTXT)) : GDB_ID_NULL) ;
|
||||
@@ -315,12 +320,12 @@ ExeCreateTextAdv( int nParentId, const Point3d& ptP, double dAngRotDeg,
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetCurrDimensionStyle( double dExtLineLen, double dArrowLen, double dTextDist,
|
||||
int nLenIsMM, int nDecDigit, const string& sFont, double dTextHeight)
|
||||
int nLenIsMM, int nDecDigit, const string& sFont, double dTextHeight)
|
||||
{
|
||||
GseContext* pGseCtx = GetCurrGseContext() ;
|
||||
VERIFY_CTX( pGseCtx, false)
|
||||
// aggiorno lo stile di quotatura corrente
|
||||
pGseCtx->m_dsCurr.Set( dExtLineLen, dArrowLen, dTextDist, nLenIsMM, nDecDigit, sFont, dTextHeight) ;
|
||||
// aggiorno lo stile di quotatura corrente
|
||||
pGseCtx->m_dsCurr.Set( dExtLineLen, dArrowLen, dTextDist, nLenIsMM, nDecDigit, sFont, dTextHeight) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -330,8 +335,8 @@ ExeResetCurrDimensionStyle( void)
|
||||
{
|
||||
GseContext* pGseCtx = GetCurrGseContext() ;
|
||||
VERIFY_CTX( pGseCtx, false)
|
||||
// aggiorno lo stile di quotatura corrente
|
||||
pGseCtx->m_dsCurr.Reset() ;
|
||||
// aggiorno lo stile di quotatura corrente
|
||||
pGseCtx->m_dsCurr.Reset() ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -341,16 +346,16 @@ MySetDimensionStyle( IExtDimension* pDim)
|
||||
{
|
||||
GseContext* pGseCtx = GetCurrGseContext() ;
|
||||
VERIFY_CTX( pGseCtx, false)
|
||||
// verifico validità quotatura
|
||||
if ( pDim == nullptr)
|
||||
return false ;
|
||||
// verifico validit� quotatura
|
||||
if ( pDim == nullptr)
|
||||
return false ;
|
||||
// recupero lo stile di quotatura
|
||||
const DimensionStyle& DimSt = pGseCtx->m_dsCurr ;
|
||||
// recupero l'unità di misura lineare per la quotatura
|
||||
bool bLenIsMM = ( DimSt.nLenIsMM == 2 ? ExeUiUnitsAreMM() : ( DimSt.nLenIsMM != 0)) ;
|
||||
// recupero l'unit� di misura lineare per la quotatura
|
||||
bool bLenIsMM = ( DimSt.nLenIsMM == 2 ? ExeUiUnitsAreMM() : ( DimSt.nLenIsMM != 0 )) ;
|
||||
// imposto lo stile
|
||||
return pDim->SetStyle( DimSt.dExtLineLen, DimSt.dArrowLen, DimSt.dTextDist,
|
||||
bLenIsMM, DimSt.nDecDigit, DimSt.sFont, DimSt.dTextHeight) ;
|
||||
bLenIsMM, DimSt.nDecDigit, DimSt.sFont, DimSt.dTextHeight) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
@@ -360,10 +365,10 @@ MyCreateLinearDimension( int nParentId, const Point3d& ptP1, const Point3d& ptP2
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
if ( ! pGeomDB->GetGroupGlobFrame( nParentId, frLoc))
|
||||
if ( ! pGeomDB->GetGroupGlobFrame( nParentId, frLoc ))
|
||||
return GDB_ID_NULL ;
|
||||
// porto in locale i punti e assegno i versori
|
||||
Point3d ptP1L = GetPointLocal( pGeomDB, ptP1, nRefType, frLoc) ;
|
||||
@@ -373,9 +378,9 @@ MyCreateLinearDimension( int nParentId, const Point3d& ptP1, const Point3d& ptP2
|
||||
Vector3d vtDL = GetVectorLocal( pGeomDB, vtDir, nRefType, frLoc) ;
|
||||
// creo la quota
|
||||
PtrOwner<IExtDimension> pDim( CreateExtDimension()) ;
|
||||
if ( IsNull( pDim) ||
|
||||
! MySetDimensionStyle( pDim) ||
|
||||
! pDim->SetLinear( ptP1L, ptP2L, ptDimL, vtNL, vtDL, sText))
|
||||
if ( IsNull( pDim ) ||
|
||||
! MySetDimensionStyle( pDim ) ||
|
||||
! pDim->SetLinear( ptP1L, ptP2L, ptDimL, vtNL, vtDL, sText ))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco la quota nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pDim)) ;
|
||||
@@ -414,7 +419,7 @@ ExeCreateVerticalDimension( int nParentId, const Point3d& ptP1, const Point3d& p
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtVerticalDimension(" + IdToString( nParentId) + ",{" +
|
||||
string sLua = "EgtVerticalDimension(" + IdToString( nParentId ) + ",{" +
|
||||
ToString( ptP1) + "},{" +
|
||||
ToString( ptP2) + "},{" +
|
||||
ToString( ptDim) + "},'" +
|
||||
@@ -449,3 +454,486 @@ ExeCreateAlignedDimension( int nParentId, const Point3d& ptP1, const Point3d& pt
|
||||
// restituisco l'identificativo del oggetto
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
MyCreateRadialDimension( int nParentId, int nCrvId, const Point3d& ptDim,
|
||||
const string& sText, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
if ( ! pGeomDB->GetGroupGlobFrame( nParentId, frLoc))
|
||||
return GDB_ID_NULL ;
|
||||
// recupero l'arco di circonferenza e il suo frame
|
||||
ICurveArc* pArc = GetCurveArc( pGeomDB->GetGeoObj( nCrvId)) ;
|
||||
if ( pArc == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
Frame3d frArc ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nCrvId, frArc))
|
||||
return GDB_ID_NULL ;
|
||||
// porto il punto nel riferimento locale
|
||||
Point3d ptDimL = GetPointLocal( pGeomDB, ptDim, nRefType, frLoc) ;
|
||||
// recupero il centro e la normale e li porto nel riferimento locale
|
||||
Point3d ptCenL = pArc->GetCenter() ;
|
||||
ptCenL.LocToLoc( frArc, frLoc) ;
|
||||
Vector3d vtNL = pArc->GetNormVersor() ;
|
||||
vtNL.LocToLoc( frArc, frLoc) ;
|
||||
// porto ptDimL sulla circonferenza cui appartiene l'arco
|
||||
Vector3d vtDir = ptDimL - ptCenL ;
|
||||
if ( ! vtDir.Normalize())
|
||||
return GDB_ID_NULL ;
|
||||
ptDimL = ptCenL + pArc->GetRadius() * vtDir ;
|
||||
// creo la quota
|
||||
PtrOwner<IExtDimension> pDim( CreateExtDimension()) ;
|
||||
if ( IsNull( pDim) ||
|
||||
! MySetDimensionStyle( pDim) ||
|
||||
! pDim->SetRadial( ptCenL, ptDimL, vtNL, sText))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco la quota nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pDim)) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeCreateRadialDimension( int nParentId, int nCrvId, const Point3d& ptDim,
|
||||
const string& sText, int nRefType)
|
||||
{
|
||||
// eseguo
|
||||
int nId = MyCreateRadialDimension( nParentId, nCrvId, ptDim, sText, nRefType) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtRadialDimension(" + IdToString( nParentId) + "," +
|
||||
IdToString( nCrvId) + ",{" +
|
||||
ToString( ptDim) + "},'" +
|
||||
StringToLuaString( sText) + "'," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Id=" + ToString( nId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo del oggetto
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
MyCreateDiametralDimension( int nParentId, int nCrvId, const Point3d& ptDim,
|
||||
const string& sText, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
if ( ! pGeomDB->GetGroupGlobFrame( nParentId, frLoc))
|
||||
return GDB_ID_NULL ;
|
||||
// recupero l'arco e il suo frame
|
||||
ICurveArc* pArc = GetCurveArc( pGeomDB->GetGeoObj( nCrvId)) ;
|
||||
if ( pArc == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
Frame3d frArc ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nCrvId, frArc))
|
||||
return GDB_ID_NULL ;
|
||||
// porto il punto nel riferimento locale
|
||||
Point3d ptDimL = GetPointLocal( pGeomDB, ptDim, nRefType, frLoc) ;
|
||||
// recupero il centro e la normale e li porto nel riferimento locale
|
||||
Point3d ptCenL = pArc->GetCenter() ;
|
||||
ptCenL.LocToLoc( frArc, frLoc) ;
|
||||
Vector3d vtNL = pArc->GetNormVersor() ;
|
||||
vtNL.LocToLoc( frArc, frLoc) ;
|
||||
// porto ptDimL sulla circonferenza
|
||||
Vector3d vtDir = ptDimL - ptCenL ;
|
||||
if ( ! vtDir.Normalize())
|
||||
return GDB_ID_NULL ;
|
||||
ptDimL = ptCenL + pArc->GetRadius() * vtDir ;
|
||||
// creo la quota
|
||||
PtrOwner<IExtDimension> pDim( CreateExtDimension()) ;
|
||||
if ( IsNull( pDim) ||
|
||||
! MySetDimensionStyle( pDim) ||
|
||||
! pDim->SetDiametral( ptCenL, ptDimL, vtNL, sText))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco la quota nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pDim)) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeCreateDiametralDimension( int nParentId, int nCrvId, const Point3d& ptDim,
|
||||
const string& sText, int nRefType)
|
||||
{
|
||||
// eseguo
|
||||
int nId = MyCreateDiametralDimension( nParentId, nCrvId, ptDim, sText, nRefType) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtDiametralDimension(" + IdToString( nParentId) + "," +
|
||||
IdToString( nCrvId) + ",{" +
|
||||
ToString( ptDim) + "},'" +
|
||||
StringToLuaString( sText) + "'," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Id=" + ToString( nId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo del oggetto
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
MyCreateAngularDimension( int nParentId, const Point3d& ptV, const Point3d& ptP1, const Point3d& ptP2,
|
||||
const Point3d& ptDim, const string& sText, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
if ( ! pGeomDB->GetGroupGlobFrame( nParentId, frLoc))
|
||||
return GDB_ID_NULL ;
|
||||
// porto in locale i punti e assegno i versori
|
||||
Point3d ptVL = GetPointLocal( pGeomDB, ptV, nRefType, frLoc) ;
|
||||
Point3d ptP1L = GetPointLocal( pGeomDB, ptP1, nRefType, frLoc) ;
|
||||
Point3d ptP2L = GetPointLocal( pGeomDB, ptP2, nRefType, frLoc) ;
|
||||
Point3d ptDimL = GetPointLocal( pGeomDB, ptDim, nRefType, frLoc) ;
|
||||
Vector3d vtNL = GetVectorLocal( pGeomDB, Z_AX, nRefType, frLoc) ;
|
||||
// creo la quota
|
||||
PtrOwner<IExtDimension> pDim( CreateExtDimension()) ;
|
||||
if ( IsNull( pDim) ||
|
||||
! MySetDimensionStyle( pDim ) ||
|
||||
! pDim->SetAngular( ptVL, ptP1L, ptP2L, ptDimL, vtNL, sText))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco la quota nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pDim)) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeCreateAngularDimension( int nParentId, const Point3d& ptV, const Point3d& ptP1, const Point3d& ptP2,
|
||||
const Point3d& ptDim, const string& sText, int nRefType)
|
||||
{
|
||||
// eseguo
|
||||
int nId = MyCreateAngularDimension( nParentId, ptV, ptP1, ptP2, ptDim, sText, nRefType) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtAngularDimension(" + IdToString( nParentId) + ",{" +
|
||||
ToString( ptV) + "},{" +
|
||||
ToString( ptP1) + "},{" +
|
||||
ToString( ptP2) + "},{" +
|
||||
ToString( ptDim) + "},'" +
|
||||
StringToLuaString( sText) + "'," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Id=" + ToString( nId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo del oggetto
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
MyCreateAngularDimensionEx( int nParentId, const Point3d& ptV1, const Point3d& ptP1,
|
||||
const Point3d& ptV2,const Point3d& ptP2, const Point3d& ptDim,
|
||||
const string& sText, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
if ( ! pGeomDB->GetGroupGlobFrame( nParentId, frLoc))
|
||||
return GDB_ID_NULL ;
|
||||
// porto in locale i punti e assegno i versori
|
||||
Point3d ptV1L = GetPointLocal( pGeomDB, ptV1, nRefType, frLoc) ;
|
||||
Point3d ptP1L = GetPointLocal( pGeomDB, ptP1, nRefType, frLoc) ;
|
||||
Point3d ptV2L = GetPointLocal( pGeomDB, ptV2, nRefType, frLoc) ;
|
||||
Point3d ptP2L = GetPointLocal( pGeomDB, ptP2, nRefType, frLoc) ;
|
||||
Point3d ptDimL = GetPointLocal( pGeomDB, ptDim, nRefType, frLoc) ;
|
||||
Vector3d vtNL = GetVectorLocal( pGeomDB, Z_AX, nRefType, frLoc) ;
|
||||
// creo la quota
|
||||
PtrOwner<IExtDimension> pDim( CreateExtDimension()) ;
|
||||
if ( IsNull( pDim) ||
|
||||
! MySetDimensionStyle( pDim ) ||
|
||||
! pDim->SetAngularEx( ptV1L, ptP1L, ptV2L, ptP2L, ptDimL, vtNL, sText))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco la quota nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pDim)) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeCreateAngularDimensionEx( int nParentId, const Point3d& ptV1, const Point3d& ptP1,
|
||||
const Point3d& ptV2, const Point3d& ptP2, const Point3d& ptDim,
|
||||
const string& sText, int nRefType)
|
||||
{
|
||||
// eseguo
|
||||
int nId = MyCreateAngularDimensionEx( nParentId, ptV1, ptP1, ptV2, ptP2, ptDim, sText, nRefType) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtAngularDimensionEx(" + IdToString( nParentId) + ",{" +
|
||||
ToString( ptV1) + "},{" +
|
||||
ToString( ptP1) + "},{" +
|
||||
ToString( ptV2) + "},{" +
|
||||
ToString( ptP2) + "},{" +
|
||||
ToString( ptDim) + "},'" +
|
||||
StringToLuaString( sText) + "'," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Id=" + ToString( nId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo del oggetto
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
MyCreateAngularDimensionFromLines( int nParentId, INTVECTOR vLineIds, const Point3d& ptDim,
|
||||
const string& sText, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
if ( ! pGeomDB->GetGroupGlobFrame( nParentId, frLoc))
|
||||
return GDB_ID_NULL ;
|
||||
// recupero le linee
|
||||
ICurveLine* pCrv1 = GetCurveLine( pGeomDB->GetGeoObj( vLineIds[0])) ;
|
||||
ICurveLine* pCrv2 = GetCurveLine( pGeomDB->GetGeoObj( vLineIds[1])) ;
|
||||
if ( pCrv1 == nullptr || pCrv2 == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
PtrOwner<ICurveLine> pL1( pCrv1->Clone()) ;
|
||||
PtrOwner<ICurveLine> pL2( pCrv2->Clone()) ;
|
||||
if ( IsNull( pL1 ) || ! pL1->IsValid() || IsNull( pL2) || ! pL2->IsValid())
|
||||
return GDB_ID_NULL ;
|
||||
// porto tutto nel frLoc
|
||||
Frame3d frL1, frL2 ;
|
||||
if ( ! pGeomDB->GetGlobFrame( vLineIds[0], frL1) || ! pGeomDB->GetGlobFrame( vLineIds[1], frL2))
|
||||
return GDB_ID_NULL ;
|
||||
pL1->LocToLoc( frL1, frLoc) ;
|
||||
pL2->LocToLoc( frL2, frLoc) ;
|
||||
// recupero il punto lo porto nel riferimento locale
|
||||
Point3d ptDimL = GetPointLocal( pGeomDB, ptDim, nRefType, frLoc) ;
|
||||
// recupero i punti e le direzioni
|
||||
Point3d ptP1L, ptP2L, ptP3L, ptP4L ;
|
||||
Vector3d vtL1, vtL2 ;
|
||||
pL1->GetStartPoint( ptP1L) ;
|
||||
pL1->GetEndPoint( ptP2L) ;
|
||||
pL2->GetStartPoint( ptP3L) ;
|
||||
pL2->GetEndPoint( ptP4L) ;
|
||||
pL1->GetStartDir( vtL1) ;
|
||||
pL2->GetStartDir( vtL2) ;
|
||||
// controllo se le rette sono coincidenti o parallele
|
||||
if ( AreSameOrOppositeVectorApprox( vtL1, vtL2))
|
||||
return GDB_ID_NULL ;
|
||||
// verifico se le rette si intersecano già
|
||||
Point3d ptCenL ;
|
||||
IntersCurveCurve pInters( *pL1, *pL2) ;
|
||||
int nNumeroInters = pInters.GetIntersCount() ;
|
||||
// se non ho intersezioni estendo
|
||||
if ( nNumeroInters == 0) {
|
||||
double dLen = pow( 10, 5) ;
|
||||
pL1->ExtendStartByLen( dLen) ;
|
||||
pL2->ExtendStartByLen( dLen) ;
|
||||
pL1->ExtendEndByLen( dLen) ;
|
||||
pL2->ExtendEndByLen( dLen) ;
|
||||
// faccio intersezione
|
||||
IntersCurveCurve pIntersExt( *pL1, *pL2) ;
|
||||
nNumeroInters = pIntersExt.GetIntersCount() ;
|
||||
// le linee estese non si intersecano, quindi vuol dire che sono quasi parallele e lontanissime
|
||||
if ( nNumeroInters == 0 )
|
||||
return GDB_ID_NULL ;
|
||||
else {
|
||||
IntCrvCrvInfo Info ;
|
||||
pIntersExt.GetIntCrvCrvInfo( 0, Info) ;
|
||||
// controllo che non siano coincidenti
|
||||
if ( Info.bOverlap)
|
||||
return false ;
|
||||
else
|
||||
ptCenL = Info.IciA->ptI ;
|
||||
}
|
||||
// seleziono i punti necessari
|
||||
// se ptDimL è più vicino a ptCenL rispetto agli estremi esterni delle linee, allora tengo gli estremi interni
|
||||
double dP1Cen = ( ptP1L - ptCenL).Len() ;
|
||||
double dP2Cen = ( ptP2L - ptCenL).Len() ;
|
||||
double dDimCen = ( ptDimL - ptCenL).Len() ;
|
||||
if ( ( dDimCen < dP1Cen || dDimCen < dP2Cen))
|
||||
// se uno dei due punti è più vicino a ptCenL rispetto a ptDimL, allora tengo il punto più vicino a ptDimL
|
||||
ptP1L = ( ( ptDimL - ptP1L ).Len() < ( ptDimL - ptP2L ).Len() ? ptP1L : ptP2L) ;
|
||||
else
|
||||
ptP1L = ( dP1Cen < dP2Cen ? ptP2L : ptP1L ) ;
|
||||
// rifaccio anche per l'altro lato
|
||||
double dP3Cen = ( ptP3L - ptCenL).Len() ;
|
||||
double dP4Cen = ( ptP4L - ptCenL).Len() ;
|
||||
if ( dDimCen < dP3Cen || dDimCen < dP4Cen)
|
||||
ptP3L = ( ( ptDimL - ptP3L).Len() < ( ptDimL - ptP4L).Len() ? ptP3L : ptP4L) ;
|
||||
else
|
||||
ptP3L = ( dP3Cen < dP4Cen ? ptP4L : ptP3L) ;
|
||||
}
|
||||
// se ho già intesezioni devo capire in quale quadrante si trova ptDim
|
||||
else {
|
||||
// recupero l'intersezione
|
||||
IntCrvCrvInfo Info ;
|
||||
pInters.GetIntCrvCrvInfo( 0, Info) ;
|
||||
// controllo che non siano coincidenti
|
||||
if ( Info.bOverlap)
|
||||
return false ;
|
||||
// se non coincidono restituisco l'intersezione
|
||||
else
|
||||
ptCenL = Info.IciA->ptI ;
|
||||
// se le due linee hanno un estremo in comune, estendo le linee da quel lato
|
||||
if ( ( AreSamePointApprox( ptCenL, ptP1L) || AreSamePointApprox( ptCenL, ptP2L)) &&
|
||||
( AreSamePointApprox( ptCenL, ptP3L) || AreSamePointApprox( ptCenL, ptP4L))) {
|
||||
if ( AreSamePointApprox( ptCenL, ptP1L)) {
|
||||
pL1->ExtendStartByLen(Dist( ptP1L, ptP2L) / 2) ;
|
||||
pL1->GetStartPoint( ptP1L) ;
|
||||
}
|
||||
else {
|
||||
pL1->ExtendEndByLen(Dist( ptP1L, ptP2L) / 2) ;
|
||||
pL1->GetEndPoint( ptP2L) ;
|
||||
}
|
||||
if ( AreSamePointApprox( ptCenL, ptP3L)) {
|
||||
pL2->ExtendStartByLen( Dist( ptP3L, ptP4L) / 2);
|
||||
pL2->GetStartPoint( ptP3L) ;
|
||||
}
|
||||
else {
|
||||
pL2->ExtendEndByLen(Dist( ptP3L, ptP4L) / 2);
|
||||
pL2->GetEndPoint( ptP4L) ;
|
||||
}
|
||||
}
|
||||
// seleziono i punti necessari
|
||||
// proietto pdDim su vtLine1 e su vtLine2
|
||||
Point3d ptDim1, ptDim2 ;
|
||||
DistPointCurve distPL1( ptDimL, *pL1, true) ;
|
||||
DistPointCurve distPL2( ptDimL, *pL2, true) ;
|
||||
int nFlag1, nFlag2 ;
|
||||
if ( ! distPL1.GetMinDistPoint( 0, ptDim1, nFlag1) || ! distPL2.GetMinDistPoint( 0, ptDim2, nFlag2) )
|
||||
return false ;
|
||||
if ( abs(( ptDim1 - ptP1L).Len() + ( ptCenL - ptDim1).Len() - ( ptCenL - ptP1L).Len()) < EPS_SMALL ||
|
||||
abs(( ptDim1 - ptP1L).Len() + ( ptCenL - ptP1L ).Len() - ( ptDim1 - ptCenL).Len()) < EPS_SMALL)
|
||||
// ptDim è dal lato di ptP1L, quindi tengo ptP1L
|
||||
;
|
||||
else
|
||||
// ptDim è dal lato di ptP2L
|
||||
ptP1L = ptP2L ;
|
||||
if ( abs(( ptDim2 - ptP3L).Len() + ( ptCenL - ptDim2).Len() - ( ptCenL - ptP3L).Len()) < EPS_SMALL ||
|
||||
abs(( ptDim2 - ptP3L).Len() + ( ptCenL - ptP3L).Len() - ( ptDim2 - ptCenL).Len()) < EPS_SMALL)
|
||||
// ptDim è dal lato di ptP1L
|
||||
;
|
||||
else
|
||||
// ptDim è dal lato di ptP2L
|
||||
ptP3L = ptP4L ;
|
||||
}
|
||||
// recupero la normale al piano dell'angolo da quotare
|
||||
Frame3d frArc;
|
||||
frArc.Set(ptCenL, ptP1L, ptP3L);
|
||||
Vector3d vtNL = frArc.VersZ() ;
|
||||
if ( vtNL * Z_AX < - EPS_SMALL) {
|
||||
frArc.Set(ptCenL, ptP3L, ptP1L);
|
||||
vtNL = frArc.VersZ() ;
|
||||
}
|
||||
// creo la quota
|
||||
PtrOwner<IExtDimension> pDim( CreateExtDimension()) ;
|
||||
if ( IsNull( pDim ) ||
|
||||
! MySetDimensionStyle( pDim ) ||
|
||||
! pDim->SetAngular( ptP1L, ptCenL, ptP3L, ptDimL, vtNL, sText))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco la quota nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pDim)) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeCreateAngularDimensionFromLines( int nParentId, const INTVECTOR vLineIds, const Point3d& ptDim,
|
||||
const string& sText, int nRefType)
|
||||
{
|
||||
// eseguo
|
||||
int nId = MyCreateAngularDimensionFromLines( nParentId, vLineIds, ptDim, sText, nRefType) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtAngularDimensionFromLines(" + IdToString( nParentId) + "," +
|
||||
ToString( vLineIds[0]) + "," +
|
||||
ToString( vLineIds[1]) + ",{" +
|
||||
ToString( ptDim) + "},'" +
|
||||
StringToLuaString( sText) + "'," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Id=" + ToString( nId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo del oggetto
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
MyCreateAngularDimensionFromArc( int nParentId, int nCrvId, const Point3d& ptDim,
|
||||
const string& sText, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
if ( ! pGeomDB->GetGroupGlobFrame( nParentId, frLoc))
|
||||
return GDB_ID_NULL ;
|
||||
// recupero l'arco e il suo frame
|
||||
ICurveArc* pArc = GetCurveArc( pGeomDB->GetGeoObj( nCrvId)) ;
|
||||
if ( pArc == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
Frame3d frArc ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nCrvId, frArc))
|
||||
return GDB_ID_NULL ;
|
||||
// recupero i punti e la normale e li porto nel frame locale
|
||||
Point3d ptDimL = GetPointLocal( pGeomDB, ptDim, nRefType, frLoc) ;
|
||||
Vector3d vtNL = pArc->GetNormVersor() ;
|
||||
vtNL.LocToLoc( frArc, frLoc) ;
|
||||
Point3d ptCenL, ptP1L, ptP2L ;
|
||||
pArc->GetStartPoint( ptP1L) ;
|
||||
ptP1L.LocToLoc( frArc, frLoc) ;
|
||||
pArc->GetEndPoint( ptP2L) ;
|
||||
ptP2L.LocToLoc( frArc, frLoc) ;
|
||||
pArc->GetCenterPoint( ptCenL) ;
|
||||
ptCenL.LocToLoc( frArc, frLoc) ;
|
||||
// porto ptDimL nell'area di influenza dell'arco
|
||||
Point3d ptMid ;
|
||||
pArc->GetMidPoint( ptMid) ;
|
||||
Vector3d vtDir = ( ptMid - ptCenL) ;
|
||||
if ( ! vtDir.Normalize())
|
||||
return GDB_ID_NULL ;
|
||||
ptDimL = ptCenL + Dist( ptDimL, ptCenL) * vtDir ;
|
||||
// creo la quota
|
||||
PtrOwner<IExtDimension> pDim( CreateExtDimension()) ;
|
||||
if ( IsNull( pDim ) ||
|
||||
! MySetDimensionStyle( pDim) ||
|
||||
! pDim->SetAngular( ptP1L, ptCenL, ptP2L, ptDimL, vtNL, sText))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco la quota nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pDim)) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeCreateAngularDimensionFromArc( int nParentId, int nCrvId, const Point3d& ptDim,
|
||||
const string& sText, int nRefType)
|
||||
{
|
||||
// eseguo
|
||||
int nId = MyCreateAngularDimensionFromArc( nParentId, nCrvId, ptDim, sText, nRefType) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtAngularDimensionFromArc(" + IdToString( nParentId) + "," +
|
||||
IdToString( nCrvId) + ",{" +
|
||||
ToString( ptDim) + "},'" +
|
||||
StringToLuaString( sText) + "'," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Id=" + ToString( nId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo del oggetto
|
||||
return nId ;
|
||||
}
|
||||
+137
-16
@@ -40,11 +40,12 @@
|
||||
#include "/EgtDev/Include/EGkChainCurves.h"
|
||||
#include "/EgtDev/Include/EGkCurveByInterp.h"
|
||||
#include "/EgtDev/Include/EGkCurveByApprox.h"
|
||||
#include "/EgtDev/Include/EGkCurveAux.h"
|
||||
#include "/EgtDev/Include/EGkOffsetCurve.h"
|
||||
#include "/EgtDev/Include/EGkCurveLocal.h"
|
||||
#include "/EgtDev/Include/EGkSurfTriMesh.h"
|
||||
#include "/EgtDev/Include/EGkDistPointCurve.h"
|
||||
#include "/EgtDev/Include/EGkStringUtils3d.h"
|
||||
#include "/EgtDev/Include/EGkCurveLocal.h"
|
||||
#include "/EgtDev/Include/EgtPointerOwner.h"
|
||||
|
||||
using namespace std ;
|
||||
@@ -362,16 +363,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
|
||||
@@ -1091,6 +1089,83 @@ ExeCreateArc3P( int nParentId, const Point3d& ptP1,
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeCreateArc2PR( int nParentId, const Point3d& ptStart, const Point3d& ptEnd,
|
||||
double dRad, bool bCCW, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
bool bOk = pGeomDB->GetGroupGlobFrame( nParentId, frLoc) ;
|
||||
// porto in locale i punti, il versore normale e quelloe estrusione
|
||||
Point3d ptStartL = GetPointLocal( pGeomDB, ptStart, nRefType, frLoc) ;
|
||||
Point3d ptEndL = GetPointLocal( pGeomDB, ptEnd, nRefType, frLoc) ;
|
||||
Vector3d vtNormL = GetVectorLocal( pGeomDB, Z_AX, nRefType, frLoc) ;
|
||||
Vector3d vtExtrL = GetVectorLocal( pGeomDB, Z_AX, nRefType, frLoc) ;
|
||||
// creo l'arco
|
||||
PtrOwner<ICurveArc> pCrvArc( CreateCurveArc()) ;
|
||||
bOk = bOk && ( ! IsNull( pCrvArc) &&
|
||||
pCrvArc->Set2PNRS( ptStartL, ptEndL, vtNormL, dRad, bCCW)) ;
|
||||
// assegno il versore estrusione
|
||||
bOk = bOk && pCrvArc->SetExtrusion( vtExtrL) ;
|
||||
// inserisco l'arco nel DB
|
||||
int nId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrvArc)) : GDB_ID_NULL) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtArc2PR(" + IdToString( nParentId) + ",{" +
|
||||
ToString( ptStart) + "},{" +
|
||||
ToString( ptEnd) + "}," +
|
||||
ToString( dRad) + "," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Id=" + ToString( nId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo della nuova entità
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeCreateArc2PB( int nParentId, const Point3d& ptStart, const Point3d& ptEnd,
|
||||
double dBulge, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
bool bOk = pGeomDB->GetGroupGlobFrame( nParentId, frLoc) ;
|
||||
// porto in locale i punti, il versore normale e quelloe estrusione
|
||||
Point3d ptStartL = GetPointLocal( pGeomDB, ptStart, nRefType, frLoc) ;
|
||||
Point3d ptEndL = GetPointLocal( pGeomDB, ptEnd, nRefType, frLoc) ;
|
||||
Vector3d vtNormL = GetVectorLocal( pGeomDB, Z_AX, nRefType, frLoc) ;
|
||||
Vector3d vtExtrL = GetVectorLocal( pGeomDB, Z_AX, nRefType, frLoc) ;
|
||||
// creo l'arco (in casi particolari retta)
|
||||
PtrOwner<ICurve> pCrv( bOk ? GetArc2PNB( ptStartL, ptEndL, vtNormL, dBulge) : nullptr) ;
|
||||
bOk = bOk && ! IsNull( pCrv) ;
|
||||
// assegno il versore estrusione
|
||||
bOk = bOk && pCrv->SetExtrusion( vtExtrL) ;
|
||||
// inserisco l'arco nel DB
|
||||
int nId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrv)) : GDB_ID_NULL) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtArc2PB(" + IdToString( nParentId) + ",{" +
|
||||
ToString( ptStart) + "},{" +
|
||||
ToString( ptEnd) + "}," +
|
||||
ToString( dBulge) + "," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Id=" + ToString( nId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo della nuova entità
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeCreateArc2PD( int nParentId, const Point3d& ptStart, const Point3d& ptEnd,
|
||||
@@ -1099,20 +1174,17 @@ ExeCreateArc2PD( int nParentId, const Point3d& ptStart, const Point3d& ptEnd,
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
// creo l'arco (in casi particolari retta)
|
||||
PtrOwner<ICurve> pCrv ;
|
||||
bool bOk = true ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
bOk = bOk && pGeomDB->GetGroupGlobFrame( nParentId, frLoc) ;
|
||||
bool bOk = pGeomDB->GetGroupGlobFrame( nParentId, frLoc) ;
|
||||
// porto in locale i punti, il versore iniziale, quello normale e il versore estrusione
|
||||
Point3d ptStartL = GetPointLocal( pGeomDB, ptStart, nRefType, frLoc) ;
|
||||
Point3d ptEndL = GetPointLocal( pGeomDB, ptEnd, nRefType, frLoc) ;
|
||||
Vector3d vtDirSL = GetVectorLocal( pGeomDB, FromPolar( 1, dDirSDeg), nRefType, frLoc) ;
|
||||
Vector3d vtNormL = GetVectorLocal( pGeomDB, Z_AX, nRefType, frLoc) ;
|
||||
Vector3d vtExtrL = GetVectorLocal( pGeomDB, Z_AX, nRefType, frLoc) ;
|
||||
// setto l'arco
|
||||
pCrv.Set( GetArc2PVN( ptStartL, ptEndL, vtDirSL, vtNormL)) ;
|
||||
// creo l'arco (in casi particolari retta)
|
||||
PtrOwner<ICurve> pCrv( bOk ? GetArc2PVN( ptStartL, ptEndL, vtDirSL, vtNormL) : nullptr) ;
|
||||
bOk = bOk && ! IsNull( pCrv) ;
|
||||
// assegno il versore estrusione
|
||||
bOk = bOk && pCrv->SetExtrusion( vtExtrL) ;
|
||||
@@ -1593,6 +1665,55 @@ ExeCreateCurveBezierFromArc( int nParentId, int nArcId, bool bErase)
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
MyCreateCurveBezierFromCurve( int nParentId, int nCrvId, bool bRational)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
// recupero il riferimento della curva
|
||||
Frame3d frCrv ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nCrvId, frCrv))
|
||||
return GDB_ID_NULL ;
|
||||
// recupero il riferimento di destinazione
|
||||
Frame3d frLoc ;
|
||||
if ( ! pGeomDB->GetGroupGlobFrame( nParentId, frLoc))
|
||||
return GDB_ID_NULL ;
|
||||
// recupero la curva
|
||||
const ICurve* pCurve = GetCurve( pGeomDB->GetGeoObj( nCrvId)) ;
|
||||
if ( pCurve == nullptr || ! pCurve->IsValid())
|
||||
return GDB_ID_NULL ;
|
||||
// recupero il vettore estrusione della curva e lo porto in locale al gruppo destinazione
|
||||
Vector3d vtExtr ;
|
||||
pCurve->GetExtrusion( vtExtr) ;
|
||||
vtExtr.LocToLoc( frCrv, frLoc) ;
|
||||
PtrOwner<ICurve> pCrvBez ( CurveToBezierCurve( pCurve, bRational)) ;
|
||||
// setto l'estrusione
|
||||
pCrvBez->SetExtrusion( vtExtr) ;
|
||||
// aggiungo la curva in forma di Bezier al DB
|
||||
int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrvBez)) ;
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeCreateCurveBezierFromCurve( int nParentId, int nCrvId, bool bRational)
|
||||
{
|
||||
// eseguo
|
||||
int nId = MyCreateCurveBezierFromCurve( nParentId, nCrvId, bRational) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtCurveBezierFromCurve(" + IdToString( nParentId) + "," +
|
||||
IdToString( nCrvId) + ")"
|
||||
" -- Id=" + ToString( nId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo della nuova entità
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
MyCreateCurveCompo( int nParentId, const INTVECTOR& vIds, bool bErase)
|
||||
@@ -1941,14 +2062,14 @@ ExeCreateCurveCompoByInterpolation( int nParentId, const PolyLine& PL, int nType
|
||||
nMethod = CurveByInterp::BESSEL ;
|
||||
nCrvType = CurveByInterp::CUBIC_BEZIERS ;
|
||||
}
|
||||
else if ( nType == ITT_CUBICS_LONG)
|
||||
nCrvType = CurveByInterp::CUBIC_BEZIERS_LONG ;
|
||||
// oggetto interpolatore
|
||||
CurveByInterp crvByInterp ;
|
||||
Point3d ptP ;
|
||||
for ( bool bFound = PL.GetFirstPoint( ptP) ;
|
||||
bFound ;
|
||||
bFound = PL.GetNextPoint( ptP))
|
||||
for ( bool bFound = PL.GetFirstPoint( ptP) ; bFound ; bFound = PL.GetNextPoint( ptP))
|
||||
crvByInterp.AddPoint( ptP) ;
|
||||
PtrOwner<ICurve> pCrvCompo( crvByInterp.GetCurve( nMethod, nType)) ;
|
||||
PtrOwner<ICurve> pCrvCompo( crvByInterp.GetCurve( nMethod, nCrvType)) ;
|
||||
bOk = bOk && ! IsNull( pCrvCompo) ;
|
||||
// assegno il versore estrusione
|
||||
bOk = bOk && pCrvCompo->SetExtrusion( Z_AX) ;
|
||||
|
||||
+1428
-106
File diff suppressed because it is too large
Load Diff
+110
-10
@@ -1,4 +1,4 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2016-2016
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EXE_GdbCreateVol.cpp Data : 27.10.16 Versione : 1.6v7
|
||||
@@ -64,7 +64,50 @@ ExeCreateVolZmap( int nParentId, const Point3d& ptIni, double dDimX, double dDim
|
||||
" -- Id=" + ToString( nNewId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo della nuova entità
|
||||
// restituisco l'identificativo della nuova entità
|
||||
return nNewId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int ExeCreateVolZmapEmpty( int nParentId, const Point3d& ptIni, double dDimX, double dDimY, double dDimZ,
|
||||
double dPrec, bool bTriDex, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
bool bOk = pGeomDB->GetGroupGlobFrame( nParentId, frLoc) ;
|
||||
// porto in locale i punti
|
||||
Point3d ptIniL = GetPointLocal( pGeomDB, ptIni, nRefType, frLoc) ;
|
||||
Point3d ptOnXL = GetPointLocal( pGeomDB, ptIni + X_AX, nRefType, frLoc) ;
|
||||
Point3d ptOnYL = GetPointLocal( pGeomDB, ptIni + Y_AX, nRefType, frLoc) ;
|
||||
// ne ricavo un riferimento intrinseco
|
||||
Frame3d frBox ;
|
||||
bOk = bOk && frBox.Set( ptIniL, ptOnXL, ptOnYL) ;
|
||||
// creo lo Zmap nel suo riferimento intrinseco
|
||||
PtrOwner<IVolZmap> pVZM( CreateVolZmap()) ;
|
||||
bOk = bOk && ! IsNull( pVZM) ;
|
||||
bOk = bOk && pVZM->CreateEmpty( ORIG, dDimX, dDimY, dDimZ, dPrec, bTriDex) ;
|
||||
// lo porto nel riferimento locale
|
||||
bOk = bOk && pVZM->ToGlob( frBox) ;
|
||||
// inserisco lo Zmap nel DB
|
||||
int nNewId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pVZM)) : GDB_ID_NULL) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtVolZmapEmpty(" + IdToString( nParentId) + ",{" +
|
||||
ToString( ptIni) + "}," +
|
||||
ToString( dDimX) + "," +
|
||||
ToString( dDimY) + "," +
|
||||
ToString( dDimZ) + "," +
|
||||
ToString( dPrec) + "," +
|
||||
( bTriDex ? "true" : "false") + "," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Id=" + ToString( nNewId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo della nuova entità
|
||||
return nNewId ;
|
||||
}
|
||||
|
||||
@@ -103,13 +146,13 @@ ExeCreateVolZmapByRegionExtrusion( int nParentId, int nSfrId, double dDimZ, doub
|
||||
" -- Id=" + ToString( nNewId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo della nuova entità
|
||||
// restituisco l'identificativo della nuova entità
|
||||
return nNewId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeCreateVolZmapFromSurfTm( int nParentId, int nStmId, double dPrec, bool bTriDex)
|
||||
ExeCreateVolZmapFromSurfTm( int nParentId, int nStmId, double dPrec, bool bTriDex, double dExtraBox)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
@@ -126,7 +169,7 @@ ExeCreateVolZmapFromSurfTm( int nParentId, int nStmId, double dPrec, bool bTriDe
|
||||
// creo lo Zmap nel suo riferimento intrinseco
|
||||
PtrOwner<IVolZmap> pVZM( CreateVolZmap()) ;
|
||||
bOk = bOk && ! IsNull( pVZM) ;
|
||||
bOk = bOk && pVZM->CreateFromTriMesh( *pStm, dPrec, bTriDex) ;
|
||||
bOk = bOk && pVZM->CreateFromTriMesh( *pStm, dPrec, bTriDex, dExtraBox) ;
|
||||
// lo porto nel riferimento di destinazione
|
||||
bOk = bOk && pVZM->LocToLoc( frStm, frDest) ;
|
||||
// inserisco lo Zmap nel DB
|
||||
@@ -134,13 +177,70 @@ ExeCreateVolZmapFromSurfTm( int nParentId, int nStmId, double dPrec, bool bTriDe
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtVolZmapFromTriMesh(" + IdToString( nParentId) + "," +
|
||||
ToString( nStmId) + "," +
|
||||
ToString( dPrec) + "," +
|
||||
( bTriDex ? "true" : "false") + ")" +
|
||||
string sLua = "EgtVolZmapFromSurfTm(" + IdToString( nParentId) + "," +
|
||||
ToString( nStmId) + "," +
|
||||
ToString( dPrec) + "," +
|
||||
( bTriDex ? "true" : "false") + "," +
|
||||
ToString( dExtraBox) + ")" +
|
||||
" -- Id=" + ToString( nNewId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo della nuova entità
|
||||
// restituisco l'identificativo della nuova entità
|
||||
return nNewId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
ExeUpdateVolZmapByAddingSurfTm( int nVolZmapId, int nStmId)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
// recupero lo Zmap
|
||||
IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( nVolZmapId)) ;
|
||||
bool bOk = ( pVZM != nullptr) ;
|
||||
// recupero la trimesh
|
||||
PtrOwner<ISurfTriMesh> pStm( CloneSurfTriMesh( pGeomDB->GetGeoObj( nStmId))) ;
|
||||
bOk = bOk && !IsNull( pStm) ;
|
||||
// recupero il frame dello Zmap e della Trimesh
|
||||
Frame3d frZmap, frStm ;
|
||||
bOk = bOk && pGeomDB->GetGlobFrame( nVolZmapId, frZmap) &&
|
||||
pGeomDB->GetGlobFrame( nStmId, frStm) ;
|
||||
// porto la Stm nel frame dello Zmap
|
||||
bOk = bOk && pStm->LocToLoc( frStm, frZmap) ;
|
||||
// aggiorno lo Zmap con la nuova superficie
|
||||
bOk = bOk && pVZM->AddSurfTm( pStm) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtUpdateVolZmapByAddingSurfTm(" + ToString( nVolZmapId) + "," +
|
||||
ToString( nStmId) + ")"
|
||||
" -- bOk =" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
ExeUniformVolZmap( int nVolZmapId, double dToler, bool bExtensionFirst, int nToolNum)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
// recupero lo Zmap
|
||||
IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( nVolZmapId)) ;
|
||||
bool bOk = ( pVZM != nullptr) ;
|
||||
// aggiorno lo Zmap
|
||||
dToler = max( dToler, EPS_SMALL) ;
|
||||
bOk = bOk && pVZM->MakeUniform( dToler, bExtensionFirst, nToolNum) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtUniformVolZmap(" + ToString( nVolZmapId) + "," +
|
||||
ToString( dToler) + "," +
|
||||
( bExtensionFirst ? "true" : "false") +
|
||||
ToString( nToolNum) + ")"
|
||||
" -- bOk =" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
+271
-3
@@ -16,17 +16,24 @@
|
||||
#include "EXE.h"
|
||||
#include "EXE_Const.h"
|
||||
#include "EXE_Macro.h"
|
||||
#include "AuxTools.h"
|
||||
#include "GeoTools.h"
|
||||
#include "/EgtDev/Include/EgtNumUtils.h"
|
||||
#include "/EgtDev/Include/EXeExecutor.h"
|
||||
#include "/EgtDev/Include/EXeConst.h"
|
||||
#include "/EgtDev/Include/EGkGeoPoint3d.h"
|
||||
#include "/EgtDev/Include/EGkGeoPoint3d.h"
|
||||
#include "/EgtDev/Include/EGkCurve.h"
|
||||
#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"
|
||||
|
||||
using namespace std ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeCurveDomain( int nId, double* pdStart, double* pdEnd)
|
||||
@@ -57,6 +64,21 @@ ExeCurveLength( int nId, double* pdLen)
|
||||
return ( pCurve != nullptr && pCurve->GetLength( *pdLen)) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeCurveLengthAtParam( int nId, double dPar, double* pdLen)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// verifico il parametro
|
||||
if ( pdLen == nullptr)
|
||||
return false ;
|
||||
// recupero la curva
|
||||
ICurve* pCurve = GetCurve( pGeomDB->GetGeoObj( nId)) ;
|
||||
// recupero la lunghezza
|
||||
return ( pCurve != nullptr && pCurve->GetLengthAtParam( dPar, *pdLen)) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeCurveParamAtLength( int nId, double dLen, double* pdPar)
|
||||
@@ -160,7 +182,7 @@ ExeCurveIsFlat( int nId, Plane3d& Plane, bool bUseExtrusion, double dToler)
|
||||
return false ;
|
||||
// recupero la curva
|
||||
ICurve* pCurve = GetCurve( pGeomDB->GetGeoObj( nId)) ;
|
||||
// ne verifico la planarità
|
||||
// ne verifico la planarit�
|
||||
return ( pCurve != nullptr && pCurve->IsFlat( Plane, bUseExtrusion, dToler)) ;
|
||||
}
|
||||
|
||||
@@ -188,6 +210,8 @@ ExeCurveIsACircle( int nId, Point3d& ptCen, Vector3d& vtN, double& dRad, bool& b
|
||||
bCCW = ( pArc->GetAngCenter() > 0) ;
|
||||
return true ;
|
||||
}
|
||||
else
|
||||
return false ;
|
||||
}
|
||||
case CRV_COMPO :
|
||||
{ ICurveComposite* pCompo = GetCurveComposite( pGObj) ;
|
||||
@@ -203,6 +227,8 @@ ExeCurveIsACircle( int nId, Point3d& ptCen, Vector3d& vtN, double& dRad, bool& b
|
||||
return false ;
|
||||
return pCompo->IsACircle( dToler, ptCen, vtN, dRad, bCCW) ;
|
||||
}
|
||||
default :
|
||||
return false ;
|
||||
}
|
||||
|
||||
return false ;
|
||||
@@ -288,7 +314,7 @@ ExeCurveNearestExtremityToPoint( int nId, const Point3d& ptP, bool& bStart)
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la curva
|
||||
ICurve* pCurve = GetCurve( pGeomDB->GetGeoObj( nId)) ;
|
||||
// recupero quale estremo è più vicino al punto
|
||||
// recupero quale estremo � pi� vicino al punto
|
||||
return ( pCurve != nullptr && pCurve->GetNearestExtremityToPoint( ptP, bStart)) ;
|
||||
}
|
||||
|
||||
@@ -364,7 +390,7 @@ ExeCurveMinAreaRectangleXY( int nId, int nRefId, Frame3d& frRect, double& dDimX,
|
||||
PL.LocToLoc( frCrv, pGeomDB->GetGridFrame()) ;
|
||||
else if ( bOk && nRefId != nId) {
|
||||
Frame3d frDest ;
|
||||
// nRefId può essere un gruppo o una entità
|
||||
// nRefId pu� essere un gruppo o una entit�
|
||||
if ( pGeomDB->GetGroupGlobFrame( nRefId, frDest) ||
|
||||
pGeomDB->GetGlobFrame( nRefId, frDest))
|
||||
PL.LocToLoc( frCrv, frDest) ;
|
||||
@@ -548,6 +574,24 @@ ExeArcNormVersor( int nId, int nRefId, Vector3d& vtNorm)
|
||||
return TransformVector( pGeomDB, nId, nRefId, vtNorm) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeCurveCompoLength( int nId, int nSimpCrv, double& dLen)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la curva composita
|
||||
const ICurveComposite* pCompoCrv = GetCurveComposite( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pCompoCrv == nullptr)
|
||||
return false ;
|
||||
// recupero la curva semplice di indice richiesto
|
||||
const ICurve* pSimpCrv = pCompoCrv->GetCurve( nSimpCrv) ;
|
||||
if ( pSimpCrv == nullptr)
|
||||
return false ;
|
||||
// recupero la sua lunghezza
|
||||
return pSimpCrv->GetLength( dLen) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeCurveCompoCenter( int nId, int nSimpCrv, int nRefId, Point3d& ptCen)
|
||||
@@ -594,6 +638,9 @@ ExeCurveCompoRadius( int nId, int nSimpCrv, double& dRad)
|
||||
case CRV_BEZIER :
|
||||
dRad = -2 ;
|
||||
break ;
|
||||
default :
|
||||
dRad = -3 ;
|
||||
break ;
|
||||
}
|
||||
return true ;
|
||||
}
|
||||
@@ -623,6 +670,9 @@ ExeCurveCompoAngCenter( int nId, int nSimpCrv, double& dAngCen)
|
||||
case CRV_BEZIER :
|
||||
dAngCen = 0 ;
|
||||
break ;
|
||||
default :
|
||||
dAngCen = 0 ;
|
||||
break ;
|
||||
}
|
||||
return true ;
|
||||
}
|
||||
@@ -652,7 +702,225 @@ ExeCurveCompoNormVersor( int nId, int nSimpCrv, int nRefId, Vector3d& vtNorm)
|
||||
case CRV_BEZIER :
|
||||
vtNorm = V_NULL ;
|
||||
break ;
|
||||
default :
|
||||
vtNorm = V_NULL ;
|
||||
break ;
|
||||
}
|
||||
// gestione trasformazione ( eventuale)
|
||||
return TransformVector( pGeomDB, nId, nRefId, vtNorm) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeCurveCompoGetTempProp( int nId, INTVECTOR& vProp, int nPropInd)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la curva composita
|
||||
const ICurveComposite* pCompo = GetCurveComposite( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pCompo == nullptr)
|
||||
return false ;
|
||||
// recupero i valori
|
||||
vProp.clear() ;
|
||||
vProp.reserve( pCompo->GetCurveCount()) ;
|
||||
const ICurve* pSmplCrv = pCompo->GetFirstCurve() ;
|
||||
while ( pSmplCrv != nullptr) {
|
||||
vProp.push_back( pSmplCrv->GetTempProp( nPropInd)) ;
|
||||
pSmplCrv = pCompo->GetNextCurve() ;
|
||||
}
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeCurveCompoGetTempParam( int nId, DBLVECTOR& vParam, int nParamInd)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la curva composita
|
||||
const ICurveComposite* pCompo = GetCurveComposite( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pCompo == nullptr)
|
||||
return false ;
|
||||
// recupero i valori
|
||||
vParam.clear() ;
|
||||
vParam.reserve( pCompo->GetCurveCount()) ;
|
||||
const ICurve* pSmplCrv = pCompo->GetFirstCurve() ;
|
||||
while ( pSmplCrv != nullptr) {
|
||||
vParam.push_back( pSmplCrv->GetTempParam( nParamInd)) ;
|
||||
pSmplCrv = pCompo->GetNextCurve() ;
|
||||
}
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeShowCurveBezierControlPoints( int nCrvId, int nDestGrpId, int* pnCount)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la curva di Bezier
|
||||
IGeoObj* pGeoObj = pGeomDB->GetGeoObj( nCrvId) ;
|
||||
if ( pGeoObj->GetType() != CRV_BEZIER && pGeoObj->GetType() != CRV_COMPO)
|
||||
return GDB_ID_NULL ;
|
||||
// recupero il riferimento della curva
|
||||
Frame3d frCrv ;
|
||||
bool bOk = true ;
|
||||
bOk = bOk && pGeomDB->GetGlobFrame( nCrvId, frCrv) ;
|
||||
// recupero il riferimento di destinazione
|
||||
Frame3d frDest ;
|
||||
bOk = bOk && pGeomDB->GetGroupGlobFrame( nDestGrpId, frDest) ;
|
||||
if ( ! bOk)
|
||||
return GDB_ID_NULL ;
|
||||
int nType = pGeoObj->GetType() ;
|
||||
if ( nType == CRV_COMPO) {
|
||||
const ICurveComposite* pCrvCompo = GetCurveComposite( pGeoObj) ;
|
||||
if ( pCrvCompo == nullptr)
|
||||
return false ;
|
||||
int nFirstId = -1 ;
|
||||
int nCount = 0 ;
|
||||
for ( int i = 0 ; i < pCrvCompo->GetCurveCount() ; ++i) {
|
||||
const ICurveBezier* pCrvBezier = GetCurveBezier( pCrvCompo->GetCurve(i)) ;
|
||||
if ( pCrvBezier == nullptr) {
|
||||
if ( pnCount != nullptr)
|
||||
*pnCount = nCount ;
|
||||
return nFirstId ;
|
||||
}
|
||||
int nDeg = pCrvBezier->GetDegree() ;
|
||||
//bool bRat = pCrvBezier->IsRational() ;
|
||||
for ( int i = 0 ; i < nDeg + 1 ; ++i) {
|
||||
IGeoPoint3d* pGeoPt( CreateGeoPoint3d()) ;
|
||||
//if ( ! bRat)
|
||||
// pGeoPt->Set( pCrvBezier->GetControlPoint( i)) ;
|
||||
//else
|
||||
// pGeoPt->Set( pCrvBezier->GetControlPoint( i) * pCrvBezier->GetControlWeight( i)) ;
|
||||
pGeoPt->Set( pCrvBezier->GetControlPoint( i)) ;
|
||||
pGeoPt->LocToLoc( frCrv, frDest) ;
|
||||
int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nDestGrpId, pGeoPt) ;
|
||||
if ( nFirstId == GDB_ID_NULL)
|
||||
nFirstId = nId ;
|
||||
if ( nId != GDB_ID_NULL)
|
||||
++nCount ;
|
||||
}
|
||||
}
|
||||
// restituisco i risultati
|
||||
if ( pnCount != nullptr)
|
||||
*pnCount = nCount ;
|
||||
return nFirstId ;
|
||||
}
|
||||
else if ( nType == CRV_BEZIER) {
|
||||
const ICurveBezier* pCrvBezier = GetCurveBezier( pGeoObj) ;
|
||||
if ( pCrvBezier == nullptr)
|
||||
return false ;
|
||||
int nDeg = pCrvBezier->GetDegree() ;
|
||||
//bool bRat = pCrvBezier->IsRational() ;
|
||||
int nFirstId = -1 ;
|
||||
int nCount = 0 ;
|
||||
for ( int i = 0 ; i < nDeg + 1 ; ++i) {
|
||||
IGeoPoint3d* pGeoPt( CreateGeoPoint3d()) ;
|
||||
//if ( ! bRat)
|
||||
// pGeoPt->Set( pCrvBezier->GetControlPoint( i)) ;
|
||||
//else
|
||||
// pGeoPt->Set( pCrvBezier->GetControlPoint( i) * pCrvBezier->GetControlWeight( i)) ;
|
||||
pGeoPt->Set( pCrvBezier->GetControlPoint( i)) ;
|
||||
pGeoPt->LocToLoc( frCrv, frDest) ;
|
||||
int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nDestGrpId, pGeoPt) ;
|
||||
if ( nFirstId == GDB_ID_NULL)
|
||||
nFirstId = nId ;
|
||||
if ( nId != GDB_ID_NULL)
|
||||
++nCount ;
|
||||
}
|
||||
// restituisco i risultati
|
||||
if ( pnCount != nullptr)
|
||||
*pnCount = nCount ;
|
||||
return nFirstId ;
|
||||
}
|
||||
else
|
||||
return GDB_ID_NULL ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeCurveMaxOffset( int nId, double& dMaxOffset)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// verifico il parametro
|
||||
if ( &dMaxOffset == nullptr)
|
||||
return false ;
|
||||
// recupero la curva
|
||||
const ICurve* pCrv = GetCurve( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pCrv == nullptr)
|
||||
return false ;
|
||||
return CalcCurveLimitOffset( *pCrv, dMaxOffset) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeCopyCompoSubCurve( int nCrvId, int nSubCrvToCopy, int nDestGrpId)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la curva compo
|
||||
const ICurveComposite* pCompo = GetCurveComposite( pGeomDB->GetGeoObj( nCrvId)) ;
|
||||
if ( pCompo == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
// recupero il riferimento della curva
|
||||
Frame3d frCrv ;
|
||||
bool bOk = true ;
|
||||
bOk = bOk && pGeomDB->GetGlobFrame( nCrvId, frCrv) ;
|
||||
// recupero il riferimento di destinazione
|
||||
Frame3d frDest ;
|
||||
bOk = bOk && pGeomDB->GetGroupGlobFrame( nDestGrpId, frDest) ;
|
||||
if ( ! bOk)
|
||||
return GDB_ID_NULL ;
|
||||
|
||||
// creo una copia e la porto nel frame della destinazione
|
||||
const ICurve* pSubCrv = pCompo->GetCurve( nSubCrvToCopy) ;
|
||||
if ( pSubCrv == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
ICurve* pSubCrvCopy = pSubCrv->Clone() ;
|
||||
if ( pSubCrvCopy == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
pSubCrvCopy->LocToLoc( frCrv, frDest) ;
|
||||
int nSubCrvId = pGeomDB->AddGeoObj( GDB_ID_NULL, nDestGrpId, pSubCrvCopy) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtCopyCompoSubCurve(" + IdToString( nCrvId) + "," +
|
||||
ToString( nSubCrvToCopy) + "," +
|
||||
IdToString( nDestGrpId) + ")" +
|
||||
" -- Id=" + ToString( nSubCrvId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco l'identificativo della nuova entità
|
||||
return nSubCrvId ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeCopyParamRange( int nCrvId, double dUStart, double dUEnd, int nDestGrpId)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la curva
|
||||
const ICurve* pCrv = GetCurve( pGeomDB->GetGeoObj( nCrvId)) ;
|
||||
// recupero il riferimento della curva
|
||||
Frame3d frCrv ;
|
||||
bool bOk = true ;
|
||||
bOk = bOk && pGeomDB->GetGlobFrame( nCrvId, frCrv) ;
|
||||
// recupero il riferimento di destinazione
|
||||
Frame3d frDest ;
|
||||
bOk = bOk && pGeomDB->GetGroupGlobFrame( nDestGrpId, frDest) ;
|
||||
if ( ! bOk)
|
||||
return GDB_ID_NULL ;
|
||||
|
||||
// creo una copia e la porto nel frame della destinazione
|
||||
ICurve* pSubCrvCopy = pCrv->CopyParamRange( dUStart, dUEnd) ;
|
||||
if ( pSubCrvCopy == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
pSubCrvCopy->LocToLoc( frCrv, frDest) ;
|
||||
int nSubCrvId = pGeomDB->AddGeoObj( GDB_ID_NULL, nDestGrpId, pSubCrvCopy) ;
|
||||
ExeSetModified() ;
|
||||
|
||||
return nSubCrvId ;
|
||||
}
|
||||
@@ -0,0 +1,161 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2023-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : Exe_GdbGetPocketing.cpp Data : 02.02.24 Versione : 2.6b1
|
||||
// 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/EGkSfrCreate.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)
|
||||
{
|
||||
// database geometrico
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false) ;
|
||||
|
||||
// recupero la FlatRegion da svuotare
|
||||
PtrOwner<ISurfFlatRegion> pMySfr ;
|
||||
const ISurfFlatRegion* pSfr = GetSurfFlatRegion( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pSfr == nullptr) {
|
||||
// verifico se è una curva chiusa e piana che permette di definire una regione
|
||||
const ICurve* pCrv = GetCurve( pGeomDB->GetGeoObj( nId)) ;
|
||||
Plane3d plPlane ;
|
||||
if ( pCrv == nullptr || ! pCrv->IsFlat( plPlane, true, 10 * EPS_SMALL))
|
||||
return false ;
|
||||
SurfFlatRegionByContours SfrCntr ;
|
||||
SfrCntr.AddCurve( pCrv->Clone()) ;
|
||||
pMySfr.Set( SfrCntr.GetSurf()) ;
|
||||
if ( IsNull( pMySfr))
|
||||
return false ;
|
||||
pSfr = pMySfr ;
|
||||
}
|
||||
|
||||
// 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 ;
|
||||
|
||||
// eseguo Pocketing
|
||||
ICRVCOMPOPOVECTOR vCrvCompoRes ;
|
||||
bool bOk = CalcPocketing( pSfr, dRad, 0, dStep, dAngle, 5., nType, bSmooth, true, false, false, false, true, P_INVALID, nullptr, false, dStep, INFINITO, 0, vCrvCompoRes) ;
|
||||
nFirstId = GDB_ID_NULL ;
|
||||
nCrvCount = int( vCrvCompoRes.size()) ;
|
||||
if ( bOk && nCrvCount > 0) {
|
||||
// scorro le curve di Pocketing ottenute
|
||||
for ( int nI = 0 ; nI < nCrvCount ; ++ nI) {
|
||||
vCrvCompoRes[nI]->LocToLoc( frSfr, frDest) ;
|
||||
// inserisco la curva nel DB Geometrico
|
||||
int nCurrId = pGeomDB->AddGeoObj( GDB_ID_NULL, nDestGrpId, Release( vCrvCompoRes[nI])) ;
|
||||
if ( nCurrId == GDB_ID_NULL)
|
||||
return false ;
|
||||
if ( nI == 0)
|
||||
nFirstId = nCurrId ;
|
||||
}
|
||||
ExeSetModified() ;
|
||||
}
|
||||
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtPocketing(" + ToString( nId) + "," +
|
||||
ToString( dRad) + "," +
|
||||
ToString( dStep) + "," +
|
||||
ToString( dAngle) + "," +
|
||||
ToString( nType) + "," +
|
||||
ToString( bSmooth) + "," +
|
||||
ToString( nDestGrpId) + ")" +
|
||||
" 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 ;
|
||||
}
|
||||
+674
-121
File diff suppressed because it is too large
Load Diff
+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()) ;
|
||||
}
|
||||
|
||||
+1074
-51
File diff suppressed because it is too large
Load Diff
+659
-49
@@ -23,13 +23,16 @@
|
||||
#include "/EgtDev/Include/EGkCurveComposite.h"
|
||||
#include "/EgtDev/Include/EGkCurveLocal.h"
|
||||
#include "/EgtDev/Include/EGkSurfFlatRegion.h"
|
||||
#include "/EgtDev/Include/EGkSurfTriMesh.h"
|
||||
#include "/EgtDev/Include/EGkSurfTriMeshAux.h"
|
||||
#include "/EgtDev/Include/EGkSurfBezier.h"
|
||||
#include "/EgtDev/Include/EGkSurfLocal.h"
|
||||
#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 ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -74,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 ;
|
||||
@@ -99,9 +102,36 @@ MyExplodeSurfTriMesh( int nId, int& nCount)
|
||||
// restituisco risultati
|
||||
return nFirstId ;
|
||||
}
|
||||
// recupero il numero di gusci
|
||||
int nShells = pStm->GetShellCount() ;
|
||||
// se ci sono più gusci, separo questi
|
||||
if ( nShells > 1) {
|
||||
int nFirstId = GDB_ID_NULL ;
|
||||
nCount = 0 ;
|
||||
for ( int i = 0 ; i < nShells ; ++ i) {
|
||||
ISurfTriMesh* pFac = pStm->CloneShell( i) ;
|
||||
if ( pFac == nullptr)
|
||||
continue ;
|
||||
// inserisco la superficie nello stesso gruppo e nello stesso posto del GeomDB
|
||||
int nNewId = pGeomDB->InsertGeoObj( GDB_ID_NULL, nId, GDB_BEFORE, pFac) ;
|
||||
if ( nNewId == GDB_ID_NULL)
|
||||
return GDB_ID_NULL ;
|
||||
// copio gli attributi
|
||||
if ( ! pGeomDB->CopyAttributes( nId, nNewId))
|
||||
return GDB_ID_NULL ;
|
||||
// aggiorno contatori
|
||||
if ( nFirstId == GDB_ID_NULL)
|
||||
nFirstId = nNewId ;
|
||||
++ nCount ;
|
||||
}
|
||||
// elimino la superficie originale
|
||||
pGeomDB->Erase( nId) ;
|
||||
// restituisco risultati
|
||||
return nFirstId ;
|
||||
}
|
||||
// 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 ;
|
||||
@@ -127,7 +157,7 @@ MyExplodeSurfTriMesh( int nId, int& nCount)
|
||||
// restituisco risultati
|
||||
return nFirstId ;
|
||||
}
|
||||
// non devo fare alcunché
|
||||
// non devo fare alcunché
|
||||
nCount = 1 ;
|
||||
return nId ;
|
||||
}
|
||||
@@ -144,7 +174,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 ;
|
||||
@@ -204,12 +234,54 @@ ExeExplodeSurface( int nId, int* pnCount)
|
||||
return nFirstId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
ExeApproxSurface( int nId, double dLinTol, double dTriaMinSide)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// opero secondo il tipo di superficie
|
||||
PtrOwner<ISurfTriMesh> pStm ;
|
||||
int nType = pGeomDB->GetGeoType( nId) ;
|
||||
if ( nType == SRF_TRIMESH) {
|
||||
// copio la superficie
|
||||
const ISurfTriMesh* pStri = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ;
|
||||
pStm.Set( pStri != nullptr ? pStri->Clone() : nullptr) ;
|
||||
}
|
||||
else if ( nType == SRF_FLATRGN) {
|
||||
// recupero la superficie ausiliaria della regione
|
||||
const ISurfFlatRegion* pSfr = GetSurfFlatRegion( pGeomDB->GetGeoObj( nId)) ;
|
||||
const ISurfTriMesh* pAuxSurf = ( pSfr != nullptr ? pSfr->GetAuxSurf() : nullptr) ;
|
||||
pStm.Set( pAuxSurf != nullptr ? pAuxSurf->Clone() : nullptr) ;
|
||||
}
|
||||
else if ( nType == SRF_BEZIER) {
|
||||
// recupero la superficie ausiliaria della Bezier
|
||||
const ISurfBezier* pSbez = GetSurfBezier( pGeomDB->GetGeoObj( nId)) ;
|
||||
pStm.Set( ( pSbez != nullptr ? pSbez->GetApproxSurf( dLinTol, dTriaMinSide) : nullptr)) ;
|
||||
}
|
||||
bool bOk = ( ! IsNull( pStm)) ;
|
||||
// semplificazione della trimesh
|
||||
bOk = bOk && pStm->DoCompacting( dLinTol) ;
|
||||
// sostituisco la vecchia superficie con la nuova
|
||||
bOk = bOk && pGeomDB->ReplaceGeoObj( nId, Release( pStm)) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtApproxSurf(" + ToString( nId) + "," +
|
||||
ToString( dLinTol) + "," +
|
||||
ToString( dTriaMinSide) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfFrAdd( int nId1, int nId2)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la prima superficie FlatRegion
|
||||
ISurfFlatRegion* pSfr1 = GetSurfFlatRegion( pGeomDB->GetGeoObj( nId1)) ;
|
||||
bool bOk = ( pSfr1 != nullptr) ;
|
||||
@@ -238,7 +310,7 @@ bool
|
||||
ExeSurfFrSubtract( int nId1, int nId2)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la prima superficie FlatRegion
|
||||
ISurfFlatRegion* pSfr1 = GetSurfFlatRegion( pGeomDB->GetGeoObj( nId1)) ;
|
||||
bool bOk = ( pSfr1 != nullptr) ;
|
||||
@@ -251,8 +323,8 @@ 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
|
||||
if ( bOk && ! pSfr1->IsValid())
|
||||
// se il risultato è vuoto, cancello la FlatRegion
|
||||
if ( bOk && ! pSfr1->IsValid())
|
||||
pGeomDB->Erase( nId1) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
@@ -270,7 +342,7 @@ bool
|
||||
ExeSurfFrIntersect( int nId1, int nId2)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la prima superficie FlatRegion
|
||||
ISurfFlatRegion* pSfr1 = GetSurfFlatRegion( pGeomDB->GetGeoObj( nId1)) ;
|
||||
bool bOk = ( pSfr1 != nullptr) ;
|
||||
@@ -283,8 +355,8 @@ 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
|
||||
if ( bOk && ! pSfr1->IsValid())
|
||||
// se il risultato è vuoto, cancello la FlatRegion
|
||||
if ( bOk && ! pSfr1->IsValid())
|
||||
pGeomDB->Erase( nId1) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
@@ -302,14 +374,14 @@ bool
|
||||
ExeSurfFrOffset( int nId, double dDist, int nType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la superficie FlatRegion
|
||||
ISurfFlatRegion* pSfr = GetSurfFlatRegion( pGeomDB->GetGeoObj( nId)) ;
|
||||
bool bOk = ( pSfr != nullptr) ;
|
||||
// eseguo l'offset
|
||||
bOk = bOk && pSfr->Offset( dDist, nType) ;
|
||||
// se il risultato è vuoto, cancello la FlatRegion
|
||||
if ( bOk && ! pSfr->IsValid())
|
||||
// se il risultato è vuoto, cancello la FlatRegion
|
||||
if ( bOk && ! pSfr->IsValid())
|
||||
pGeomDB->Erase( nId) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
@@ -323,12 +395,64 @@ 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, false)
|
||||
// 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
|
||||
ExeSurfFrEraseChunk( int nId, int nChunk)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la superficie FlatRegion
|
||||
ISurfFlatRegion* pSfr = GetSurfFlatRegion( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pSfr == nullptr)
|
||||
return false ;
|
||||
// elimino il chunk indicato
|
||||
bool bOk = pSfr->EraseChunk( nChunk) ;
|
||||
// se il risultato è vuoto, cancello la FlatRegion
|
||||
if ( bOk && ! pSfr->IsValid())
|
||||
pGeomDB->Erase( nId) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfFrEraseChunk(" + ToString( nId) + "," +
|
||||
ToString( nChunk) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfFrMoveSimpleNoCollision( int nId1, int nId2, const Vector3d& vtDir, double& dLen, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la prima superficie FlatRegion
|
||||
ISurfFlatRegion* pSfr1 = GetSurfFlatRegion( pGeomDB->GetGeoObj( nId1)) ;
|
||||
bool bOk = ( pSfr1 != nullptr) ;
|
||||
@@ -350,7 +474,7 @@ bool
|
||||
ExeSurfFrRotateSimpleNoCollision( int nId1, int nId2, const Point3d& ptCen, double& dAngDeg, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la prima superficie FlatRegion
|
||||
ISurfFlatRegion* pSfr1 = GetSurfFlatRegion( pGeomDB->GetGeoObj( nId1)) ;
|
||||
bool bOk = ( pSfr1 != nullptr) ;
|
||||
@@ -367,6 +491,155 @@ ExeSurfFrRotateSimpleNoCollision( int nId1, int nId2, const Point3d& ptCen, doub
|
||||
return ( bOk && CAvSimpleSurfFrMove( *pSfr1, *pSfr2L).Rotate(ptCenL, dAngDeg)) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfTmMoveVertex( int nId, int nVert, const Point3d& ptNewVert, int nRefType, bool bUpdate)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la superficie
|
||||
ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ;
|
||||
bool bOk = ( pStm != nullptr) ;
|
||||
// recupero il riferimento in cui è immersa la superficie
|
||||
Frame3d frStm ;
|
||||
bOk = bOk && pGeomDB->GetGlobFrame( nId, frStm) ;
|
||||
// eseguo la modifica
|
||||
if ( bOk) {
|
||||
// porto il nuovo vertice nel riferimento della superficie
|
||||
Point3d ptNewVertL = GetPointLocal( pGeomDB, ptNewVert, nRefType, frStm) ;
|
||||
// eseguo la modifica
|
||||
bOk = pStm->MoveVertex( nVert, ptNewVertL) ;
|
||||
// se richiesto, semplificazione della trimesh
|
||||
if ( bUpdate)
|
||||
bOk = bOk && pStm->DoCompacting() ;
|
||||
}
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmMoveVertex(" + IdToString( nId) + "," +
|
||||
ToString( nVert) + ",{" +
|
||||
ToString( ptNewVert) + "}," +
|
||||
RefTypeToString( nRefType) + "," +
|
||||
( bUpdate ? "true" : "false") + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfTmMoveFacet( int nId, int nFacet, const Vector3d& vtMove, int nRefType, bool bUpdate)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la superficie
|
||||
ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ;
|
||||
bool bOk = ( pStm != nullptr) ;
|
||||
// recupero il riferimento in cui è immersa la superficie
|
||||
Frame3d frStm ;
|
||||
bOk = bOk && pGeomDB->GetGlobFrame( nId, frStm) ;
|
||||
// porto in locale il movimento
|
||||
Vector3d vtMoveL = GetVectorLocal( pGeomDB, vtMove, nRefType, frStm) ;
|
||||
// recupero tutti i vertici della faccia
|
||||
INTVECTOR vVert ;
|
||||
bOk = bOk && pStm->GetAllVertInFacet( nFacet, vVert) ;
|
||||
// sposto tutti i vertici della faccia della quantità desiderata
|
||||
if ( bOk) {
|
||||
for ( const auto nVert : vVert) {
|
||||
// recupero la posizione originale del vertice
|
||||
Point3d ptV ;
|
||||
if ( pStm->GetVertex( nVert, ptV))
|
||||
pStm->MoveVertex( nVert, ptV + vtMoveL) ;
|
||||
}
|
||||
}
|
||||
// se richiesto, semplificazione della trimesh
|
||||
if ( bUpdate)
|
||||
bOk = bOk && pStm->DoCompacting() ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmMoveFacet(" + IdToString( nId) + "," +
|
||||
ToString( nFacet) + ",{" +
|
||||
ToString( vtMove) + "}," +
|
||||
RefTypeToString( nRefType) + "," +
|
||||
( bUpdate ? "true" : "false") + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
MySurfTmToTriangles( int nId, int& nCount)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
// recupero la superficie TriMesh
|
||||
const ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pStm == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
// recupero il numero di triangoli
|
||||
int nTria = pStm->GetTriangleCount() ;
|
||||
// se ci sono più triangoli, li separo
|
||||
if ( nTria > 1) {
|
||||
// copio tutti triangoli
|
||||
int nFirstId = GDB_ID_NULL ;
|
||||
nCount = 0 ;
|
||||
for ( int i = 0 ; i < pStm->GetTriangleSize() ; ++ i) {
|
||||
ISurfTriMesh* pFac = pStm->CloneTriangle( i) ;
|
||||
if ( pFac == nullptr)
|
||||
continue ;
|
||||
// inserisco la superficie nello stesso gruppo e nello stesso posto del GeomDB
|
||||
int nNewId = pGeomDB->InsertGeoObj( GDB_ID_NULL, nId, GDB_BEFORE, pFac) ;
|
||||
if ( nNewId == GDB_ID_NULL)
|
||||
return GDB_ID_NULL ;
|
||||
// copio gli attributi
|
||||
if ( ! pGeomDB->CopyAttributes( nId, nNewId))
|
||||
return GDB_ID_NULL ;
|
||||
// aggiorno contatori
|
||||
if ( nFirstId == GDB_ID_NULL)
|
||||
nFirstId = nNewId ;
|
||||
++ nCount ;
|
||||
}
|
||||
// elimino la superficie originale
|
||||
pGeomDB->Erase( nId) ;
|
||||
// restituisco risultati
|
||||
return nFirstId ;
|
||||
}
|
||||
// non devo fare alcunché
|
||||
nCount = 1 ;
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeSurfTmToTriangles( int nId, int* pnCount)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
// verifico sia una superficie trimesh
|
||||
int nFirstId = GDB_ID_NULL ;
|
||||
int nCount = 0 ;
|
||||
if ( pGeomDB->GetGeoType( nId) == SRF_TRIMESH) {
|
||||
nFirstId = MySurfTmToTriangles( nId, nCount) ;
|
||||
}
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmToTriangles(" + IdToString( nId) + ")" +
|
||||
" -- Id1=" + ToString( nFirstId) + ",Nbr=" + ToString( nCount) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultati
|
||||
if ( pnCount != nullptr)
|
||||
*pnCount = nCount ;
|
||||
return nFirstId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfTmRemoveFacet( int nId, int nFacet)
|
||||
@@ -381,7 +654,7 @@ ExeSurfTmRemoveFacet( int nId, int nFacet)
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmRemoveFacet(" + ToString( nId) + "," +
|
||||
string sLua = "EgtSurfTmRemoveFacet(" + IdToString( nId) + "," +
|
||||
ToString( nFacet) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
@@ -404,7 +677,7 @@ ExeSurfTmSwapFacets( int nId, int nFacet1, int nFacet2)
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmSwapFacets(" + ToString( nId) + "," +
|
||||
string sLua = "EgtSurfTmSwapFacets(" + IdToString( nId) + "," +
|
||||
ToString( nFacet1) + "," +
|
||||
ToString( nFacet2) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
@@ -428,7 +701,7 @@ ExeSurfTmRemovePart( int nId, int nPart)
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmRemovePart(" + ToString( nId) + "," +
|
||||
string sLua = "EgtSurfTmRemovePart(" + IdToString( nId) + "," +
|
||||
ToString( nPart) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
@@ -442,7 +715,7 @@ bool
|
||||
ExeCutSurfTmPlane( int nId, const Point3d& ptOn, const Vector3d& vtN, bool bSaveOnEq, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la superficie TriMesh
|
||||
ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ;
|
||||
bool bOk = ( pStm != nullptr) ;
|
||||
@@ -460,7 +733,7 @@ ExeCutSurfTmPlane( int nId, const Point3d& ptOn, const Vector3d& vtN, bool bSave
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtCutSurfTmPlane(" + ToString( nId) + ",{" +
|
||||
string sLua = "EgtCutSurfTmPlane(" + IdToString( nId) + ",{" +
|
||||
ToString( ptOn) + "},{" +
|
||||
ToString( vtN) + "}," +
|
||||
( bSaveOnEq ? "true" : "false") + "," +
|
||||
@@ -477,7 +750,7 @@ bool
|
||||
ExeCutSurfTmClosedCurve( int nSurfId, int nCurveId, bool bSaveOnEq)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la superficie TriMesh
|
||||
ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nSurfId)) ;
|
||||
bool bOk = ( pStm != nullptr) ;
|
||||
@@ -507,7 +780,7 @@ bool
|
||||
ExeSurfTmAdd( int nId1, int nId2, bool bTwoColors)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la prima superficie TriMesh
|
||||
ISurfTriMesh* pStm1 = GetSurfTriMesh( pGeomDB->GetGeoObj( nId1)) ;
|
||||
bool bOk = ( pStm1 != nullptr) ;
|
||||
@@ -539,7 +812,7 @@ bool
|
||||
ExeSurfTmSubtract( int nId1, int nId2, bool bTwoColors)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la prima superficie TriMesh
|
||||
ISurfTriMesh* pStm1 = GetSurfTriMesh( pGeomDB->GetGeoObj( nId1)) ;
|
||||
bool bOk = ( pStm1 != nullptr) ;
|
||||
@@ -552,7 +825,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 ;
|
||||
@@ -576,7 +849,7 @@ bool
|
||||
ExeSurfTmIntersect( int nId1, int nId2, bool bTwoColors)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la prima superficie TriMesh
|
||||
ISurfTriMesh* pStm1 = GetSurfTriMesh( pGeomDB->GetGeoObj( nId1)) ;
|
||||
bool bOk = ( pStm1 != nullptr) ;
|
||||
@@ -589,7 +862,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 ;
|
||||
@@ -608,27 +881,6 @@ ExeSurfTmIntersect( int nId1, int nId2, bool bTwoColors)
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfTmResetTwoColors( int nId)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
// recupero la superficie TriMesh
|
||||
ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ;
|
||||
bool bOk = ( pStm != nullptr) ;
|
||||
// reset dei flag sui triangoli per i due colori
|
||||
bOk = bOk && pStm->ResetTFlags() ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmResetTwoColors(" + ToString( nId) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static ISurfTriMesh*
|
||||
MyCreateSubSurfTm( const ISurfTriMesh* pStm, const INTVECTOR& vTria, const INTVECTOR& vTria2)
|
||||
@@ -776,3 +1028,361 @@ 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 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfTmSetFaceColor( int nId, int nFacet, int nColor)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la superficie TriMesh
|
||||
ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ;
|
||||
bool bOk = ( pStm != nullptr) ;
|
||||
// recupero tutti i triangoli della faccia e imposto il flag opportuno per il colore
|
||||
INTVECTOR vTria ;
|
||||
bOk = bOk && pStm->GetAllTriaInFacet( nFacet, vTria) ;
|
||||
for ( const auto nT : vTria)
|
||||
pStm->SetTFlag( nT, nColor) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmSetFaceColor(" + ToString( nId) + "," +
|
||||
ToString( nFacet) + "," +
|
||||
ToString( nColor) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfTmGetTriaColor( int nId, int nTria, int& nColor)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la superficie TriMesh
|
||||
ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ;
|
||||
bool bOk = ( pStm != nullptr) ;
|
||||
// recupero il colore del triangolo
|
||||
return ( bOk && pStm->GetTFlag( nTria, nColor)) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfTmResetTwoColors( int nId)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la superficie TriMesh
|
||||
ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ;
|
||||
bool bOk = ( pStm != nullptr) ;
|
||||
// reset dei flag sui triangoli per i due colori
|
||||
bOk = bOk && pStm->ResetTFlags() ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmResetTwoColors(" + ToString( nId) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfTmSetShowEdges( int nId, bool bShow)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la superficie trimesh
|
||||
ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ;
|
||||
bool bOk = ( pStm != nullptr) ;
|
||||
// imposto lo stato di visualizzazione degli spigoli vivi
|
||||
if ( bOk)
|
||||
pStm->SetShowEdges( bShow) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmSetShowEdges(" + ToString( nId) + "," +
|
||||
ToString( bShow) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfTmGetShowEdges( int nId, bool& bShow)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la superficie trimesh
|
||||
ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ;
|
||||
bool bOk = ( pStm != nullptr) ;
|
||||
// recupero lo stato di visualizzazione degli spigoli vivi
|
||||
bShow = ( bOk && pStm->GetShowEdges()) ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSurfTmSetSmoothAng( int nId, double dAngDeg)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la superficie trimseh da trimmare
|
||||
ISurfTriMesh* pSrfTm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pSrfTm == nullptr)
|
||||
return false ;
|
||||
pSrfTm->SetSmoothAngle( dAngDeg) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmSetSmoothAng(" + ToString( nId) + "," +
|
||||
ToString( dAngDeg) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static double
|
||||
GetStmOffsPrec( double dOffs, double dLinTol)
|
||||
{
|
||||
return max( min( abs( dOffs) / 4, 100 * max( dLinTol, EPS_SMALL)), 0.5) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeSurfTmOffset( int nParentId, const INTVECTOR& vStmIds, double dOffs, double dLinTol, int nType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
// se non ci sono superfici non c'è niente da calcolare
|
||||
if ( vStmIds.empty())
|
||||
return GDB_ID_NULL ;
|
||||
// recupero il riferimento del gruppo di inserimento
|
||||
Frame3d frLoc ;
|
||||
if ( ! pGeomDB->GetGroupGlobFrame( nParentId, frLoc))
|
||||
return GDB_ID_NULL ;
|
||||
// recupero le superfici TriMesh e le porto tutte in locale
|
||||
SURFLOCALVECTOR vSurfL ; vSurfL.reserve( vStmIds.size()) ;
|
||||
CISURFTMPVECTOR vpStm ; vpStm.reserve( vStmIds.size()) ;
|
||||
for ( int i = 0 ; i < int( vStmIds.size()) ; ++ i) {
|
||||
vSurfL.emplace_back( pGeomDB, vStmIds[i], frLoc) ;
|
||||
if ( vSurfL[i].Get() == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
vpStm.emplace_back( GetSurfTriMesh( vSurfL[i].Get())) ;
|
||||
}
|
||||
// precisione per Tridexel in funzione dell'offset e della tolleranza lineare
|
||||
double dPrec = GetStmOffsPrec( dOffs, dLinTol) ;
|
||||
// recupero la superficie risultante
|
||||
PtrOwner<ISurfTriMesh> pStmOffs( CreateSurfTriMeshesOffset( vpStm, dOffs, dPrec, nType)) ;
|
||||
bool bOk = ( ! IsNull( pStmOffs) && pStmOffs->IsValid()) ;
|
||||
int nId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pStmOffs)) : GDB_ID_NULL) ;
|
||||
// copio gli attributi
|
||||
pGeomDB->CopyAttributes( vStmIds[0], nId) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmOffset(" + ToString( nParentId) + ")" +
|
||||
ToString( vStmIds) + "," +
|
||||
ToString( dOffs) + "," +
|
||||
ToString( dLinTol) + "," +
|
||||
ToString( nType) + ")" +
|
||||
" -- Id=" + ToString( nId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
ExeSurfTmThickeningOffset( int nParentId, const INTVECTOR& vStmIds, double dOffs, double dLinTol, int nType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nParentId = AdjustId( nParentId) ;
|
||||
// se non ci sono superfici non c'è niente da calcolare
|
||||
if ( vStmIds.empty())
|
||||
return GDB_ID_NULL ;
|
||||
// recupero il riferimento del gruppo di inserimento
|
||||
Frame3d frLoc ;
|
||||
if ( ! pGeomDB->GetGroupGlobFrame( nParentId, frLoc))
|
||||
return GDB_ID_NULL ;
|
||||
// recupero le superfici TriMesh e le porto tutte in locale
|
||||
SURFLOCALVECTOR vSurfL ; vSurfL.reserve( vStmIds.size()) ;
|
||||
CISURFTMPVECTOR vpStm ; vpStm.reserve( vStmIds.size()) ;
|
||||
for ( int i = 0 ; i < int( vStmIds.size()) ; ++ i) {
|
||||
vSurfL.emplace_back( pGeomDB, vStmIds[i], frLoc) ;
|
||||
if ( vSurfL[i].Get() == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
vpStm.emplace_back( GetSurfTriMesh( vSurfL[i].Get())) ;
|
||||
}
|
||||
// precisione per Tridexel in funzione dell'offset e della tolleranza lineare
|
||||
double dPrec = GetStmOffsPrec( dOffs, dLinTol) ;
|
||||
// recupero la superficie risultante
|
||||
PtrOwner<ISurfTriMesh> pStmOffs( CreateSurfTriMeshesThickeningOffset( vpStm, dOffs, dPrec, nType)) ;
|
||||
bool bOk = ( ! IsNull( pStmOffs) && pStmOffs->IsValid()) ;
|
||||
int nId = ( bOk ? pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pStmOffs)) : GDB_ID_NULL) ;
|
||||
// copio gli attributi
|
||||
pGeomDB->CopyAttributes( vStmIds[0], nId) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSurfTmThickeningOffset(" + ToString( nParentId) + ")" +
|
||||
ToString( vStmIds) + "," +
|
||||
ToString( dOffs) + "," +
|
||||
ToString( dLinTol) + "," +
|
||||
ToString( nType) + ")" +
|
||||
" -- Id=" + ToString( nId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
ExeCutSurfBzPlane( int nId, const Point3d& ptOn, const Vector3d& vtN, bool bSaveOnEq, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero la superficie TriMesh
|
||||
ISurfBezier* pSbz = GetSurfBezier( pGeomDB->GetGeoObj( nId)) ;
|
||||
bool bOk = ( pSbz != nullptr) ;
|
||||
// recupero il riferimento locale
|
||||
Frame3d frLoc ;
|
||||
bOk = bOk && pGeomDB->GetGlobFrame( nId, frLoc) ;
|
||||
// porto in locale il punto e la normale del piano
|
||||
Point3d ptOnL = GetPointLocal( pGeomDB, ptOn, nRefType, frLoc) ;
|
||||
Vector3d vtNL = GetVectorLocal( pGeomDB, vtN, nRefType, frLoc) ;
|
||||
// calcolo il piano di taglio
|
||||
Plane3d plPlane ;
|
||||
bOk = bOk && plPlane.Set( ptOnL, vtNL) ;
|
||||
// eseguo il taglio
|
||||
bOk = bOk && pSbz->Cut( plPlane, bSaveOnEq) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtCutSurfBzPlane(" + IdToString( nId) + ",{" +
|
||||
ToString( ptOn) + "},{" +
|
||||
ToString( vtN) + "}," +
|
||||
( bSaveOnEq ? "true" : "false") + "," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
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 = "EgtSurfBzCut(" + ToString( nId) + "," +
|
||||
ToString( nCutterId) + "," +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
+95
-19
@@ -104,10 +104,9 @@ ExeVolZmapChangeResolution( int nId, int nNewRes)
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero lo Zmap
|
||||
IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pVZM == nullptr)
|
||||
return false ;
|
||||
bool bOk = ( pVZM != nullptr) ;
|
||||
// cambio la risoluzione (rapporto Voxel/Dexel, valori ammessi 1 e 2)
|
||||
bool bOk = pVZM->ChangeResolution( nNewRes) ;
|
||||
bOk = bOk && pVZM->ChangeResolution( nNewRes) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
@@ -120,6 +119,29 @@ ExeVolZmapChangeResolution( int nId, int nNewRes)
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeVolZmapSetShowEdges( int nId, bool bShow)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero lo Zmap
|
||||
IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( nId)) ;
|
||||
bool bOk = ( pVZM != nullptr) ;
|
||||
// imposto lo stato di visualizzazione degli spigoli vivi
|
||||
if ( bOk)
|
||||
pVZM->SetShowEdges( bShow) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtVolZmapSetShowEdges(" + ToString( nId) + "," +
|
||||
ToString( bShow) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
ExeRemoveVolZmapPart( int nId, int nPart)
|
||||
@@ -144,7 +166,7 @@ ExeRemoveVolZmapPart( int nId, int nPart)
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeVolZmapSetStdTool( const INTVECTOR& vIds, const string& sToolName,
|
||||
double dLen, double dDiam, double dCornR, double dCutterH, int nFlag)
|
||||
double dLen, double dDiam, double dCornR, double dCutterH, int nFlag, bool bFirst)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
@@ -152,7 +174,7 @@ ExeVolZmapSetStdTool( const INTVECTOR& vIds, const string& sToolName,
|
||||
bool bOk = true ;
|
||||
for ( int i = 0 ; i < int( vIds.size()) ; ++ i) {
|
||||
IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( vIds[i])) ;
|
||||
bOk = ( pVZM != nullptr && pVZM->SetStdTool( sToolName, dLen, 0.5 * dDiam, dCornR, dCutterH, nFlag)) && bOk ;
|
||||
bOk = ( pVZM != nullptr && pVZM->SetStdTool( sToolName, dLen, 0.5 * dDiam, dCornR, dCutterH, nFlag, bFirst)) && bOk ;
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
@@ -173,7 +195,7 @@ ExeVolZmapSetStdTool( const INTVECTOR& vIds, const string& sToolName,
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeVolZmapSetAdvTool( const INTVECTOR& vIds, const string& sToolName,
|
||||
double dLen, double dDiam, double dTipLen, double dTipDiam, double dCornR, double dCutterH, int nFlag)
|
||||
double dLen, double dDiam, double dTipLen, double dTipDiam, double dCornR, double dCutterH, int nFlag, bool bFirst)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
@@ -181,7 +203,7 @@ ExeVolZmapSetAdvTool( const INTVECTOR& vIds, const string& sToolName,
|
||||
bool bOk = true ;
|
||||
for ( int i = 0 ; i < int( vIds.size()) ; ++ i) {
|
||||
IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( vIds[i])) ;
|
||||
bOk = ( pVZM != nullptr && pVZM->SetAdvTool( sToolName, dLen, dDiam / 2, dTipLen, dTipDiam / 2, dCornR, dCutterH, nFlag)) && bOk ;
|
||||
bOk = ( pVZM != nullptr && pVZM->SetAdvTool( sToolName, dLen, dDiam / 2, dTipLen, dTipDiam / 2, dCornR, dCutterH, nFlag, bFirst)) && bOk ;
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
@@ -204,7 +226,7 @@ ExeVolZmapSetAdvTool( const INTVECTOR& vIds, const string& sToolName,
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeVolZmapSetSawTool( const INTVECTOR& vIds, const string& sToolName,
|
||||
double dLen, double dDiam, double dThick, double dStemDiam, double dCornR, int nFlag)
|
||||
double dLen, double dDiam, double dThick, double dStemDiam, double dCornR, int nFlag, bool bFirst)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
@@ -212,7 +234,7 @@ ExeVolZmapSetSawTool( const INTVECTOR& vIds, const string& sToolName,
|
||||
bool bOk = true ;
|
||||
for ( int i = 0 ; i < int( vIds.size()) ; ++ i) {
|
||||
IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( vIds[i])) ;
|
||||
bOk = ( pVZM != nullptr && pVZM->SetSawTool( sToolName, dLen, dDiam / 2, dThick, dStemDiam / 2, dCornR, nFlag)) && bOk ;
|
||||
bOk = ( pVZM != nullptr && pVZM->SetSawTool( sToolName, dLen, dDiam / 2, dThick, dStemDiam / 2, dCornR, nFlag, bFirst)) && bOk ;
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
@@ -233,7 +255,7 @@ ExeVolZmapSetSawTool( const INTVECTOR& vIds, const string& sToolName,
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeVolZmapSetGenTool( const INTVECTOR& vIds, const string& sToolName, int nToolSectId, int nFlag)
|
||||
ExeVolZmapSetGenTool( const INTVECTOR& vIds, const string& sToolName, int nToolSectId, int nFlag, bool bFirst)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
@@ -243,7 +265,7 @@ ExeVolZmapSetGenTool( const INTVECTOR& vIds, const string& sToolName, int nToolS
|
||||
// recupero gli Zmap e assegno i dati dell'utensile
|
||||
for ( int i = 0 ; i < int( vIds.size()) ; ++ i) {
|
||||
IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( vIds[i])) ;
|
||||
bOk = ( pVZM != nullptr && pVZM->SetGenTool( sToolName, pCC, nFlag) && bOk) ;
|
||||
bOk = ( pVZM != nullptr && pVZM->SetGenTool( sToolName, pCC, nFlag, bFirst) && bOk) ;
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
@@ -261,7 +283,7 @@ ExeVolZmapSetGenTool( const INTVECTOR& vIds, const string& sToolName, int nToolS
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeVolZmapSetMortiserTool( const INTVECTOR& vIds, const string& sToolName,
|
||||
double dLen, double dWidth, double dThick, double dCornR, int nFlag)
|
||||
double dLen, double dWidth, double dThick, double dCornR, int nFlag, bool bFirst)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
@@ -269,7 +291,7 @@ ExeVolZmapSetMortiserTool( const INTVECTOR& vIds, const string& sToolName,
|
||||
bool bOk = true ;
|
||||
for ( int i = 0 ; i < int( vIds.size()) ; ++ i) {
|
||||
IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( vIds[i])) ;
|
||||
bOk = ( pVZM != nullptr && pVZM->SetMortiserTool( sToolName, dLen, dWidth, dThick, dCornR, nFlag) && bOk) ;
|
||||
bOk = ( pVZM != nullptr && pVZM->SetMortiserTool( sToolName, dLen, dWidth, dThick, dCornR, nFlag, bFirst) && bOk) ;
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
@@ -290,7 +312,7 @@ ExeVolZmapSetMortiserTool( const INTVECTOR& vIds, const string& sToolName,
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeVolZmapSetChiselTool( const INTVECTOR& vIds, const string& sToolName,
|
||||
double dLen, double dWidth, double dThick, int nFlag)
|
||||
double dLen, double dWidth, double dThick, int nFlag, bool bFirst)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
@@ -298,7 +320,7 @@ ExeVolZmapSetChiselTool( const INTVECTOR& vIds, const string& sToolName,
|
||||
bool bOk = true ;
|
||||
for ( int i = 0 ; i < int( vIds.size()) ; ++ i) {
|
||||
IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( vIds[i])) ;
|
||||
bOk = ( pVZM != nullptr && pVZM->SetChiselTool( sToolName, dLen, dWidth, dThick, nFlag) && bOk) ;
|
||||
bOk = ( pVZM != nullptr && pVZM->SetChiselTool( sToolName, dLen, dWidth, dThick, nFlag, bFirst) && bOk) ;
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
@@ -317,7 +339,8 @@ ExeVolZmapSetChiselTool( const INTVECTOR& vIds, const string& sToolName,
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeVolZmapResetTool( const INTVECTOR& vIds)
|
||||
ExeVolZmapSetAdditiveTool( const INTVECTOR& vIds, const string& sToolName,
|
||||
double dLen, double dDiam, double dCornR, int nFlag, bool bFirst)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
@@ -325,7 +348,34 @@ ExeVolZmapResetTool( const INTVECTOR& vIds)
|
||||
bool bOk = true ;
|
||||
for ( int i = 0 ; i < int( vIds.size()) ; ++ i) {
|
||||
IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( vIds[i])) ;
|
||||
bOk = ( pVZM != nullptr && pVZM->ResetTool() && bOk) ;
|
||||
bOk = ( bOk && pVZM != nullptr && pVZM->SetAdditiveTool( sToolName, dLen, dDiam / 2, dCornR, nFlag, bFirst)) ;
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtVolZmapSetAdditiveTool({" + IdListToString( vIds) + "}," +
|
||||
sToolName + "," +
|
||||
ToString( dLen) + "," +
|
||||
ToString( dDiam) + "," +
|
||||
ToString( dCornR) + "," +
|
||||
ToString( nFlag) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeVolZmapResetTools( const INTVECTOR& vIds)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero gli Zmap e assegno i dati dell'utensile
|
||||
bool bOk = true ;
|
||||
for ( int i = 0 ; i < int( vIds.size()) ; ++ i) {
|
||||
IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( vIds[i])) ;
|
||||
bOk = ( pVZM != nullptr && pVZM->ResetTools() && bOk) ;
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
@@ -397,7 +447,7 @@ ExeVolZmapMillingStep( int nId, const Point3d& ptPs, const Vector3d& vtDs,
|
||||
Vector3d vtDeL = GetVectorLocal( pGeomDB, vtDe, nRefType, frLoc) ;
|
||||
// recupero lo Zmap e eseguo movimento di fresatura con l'utensile già associato
|
||||
IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( nId)) ;
|
||||
bOk = bOk && ( pVZM != nullptr && pVZM->MillingStep( ptPsL, vtDsL, ptPeL, vtDeL)) ;
|
||||
bOk = bOk && ( pVZM != nullptr && pVZM->MillingStep( 0, ptPsL, vtDsL, ptPeL, vtDeL)) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
@@ -433,7 +483,7 @@ ExeVolZmapMillingStep( int nId, const Point3d& ptPs, const Vector3d& vtDs, const
|
||||
Vector3d vtAeL = GetVectorLocal( pGeomDB, vtAe, nRefType, frLoc) ;
|
||||
// recupero lo Zmap e eseguo movimento di fresatura con l'utensile già associato
|
||||
IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( nId)) ;
|
||||
bOk = bOk && ( pVZM != nullptr && pVZM->MillingStep( ptPsL, vtDsL, vtAsL, ptPeL, vtDeL, vtAeL)) ;
|
||||
bOk = bOk && ( pVZM != nullptr && pVZM->MillingStep( 0, ptPsL, vtDsL, vtAsL, ptPeL, vtDeL, vtAeL)) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
@@ -485,3 +535,29 @@ ExeCutVolZmapPlane( int nId, const Point3d& ptOn, const Vector3d& vtN, int nRefT
|
||||
// restituisco risultato
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeVolZMapOffset( int nId, double dDist, int nType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero lo Zmap
|
||||
IVolZmap* pVolZmap = GetVolZmap( pGeomDB->GetGeoObj( nId)) ;
|
||||
bool bOk = ( pVolZmap != nullptr) ;
|
||||
// eseguo l'offset
|
||||
bOk = bOk && pVolZmap->Offset( dDist, nType) ;
|
||||
// se il risultato è vuoto, cancello lo Zmap
|
||||
if ( bOk && ! pVolZmap->IsValid())
|
||||
pGeomDB->Erase( nId) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtVolZmapOffset(" + ToString( nId) + "," +
|
||||
ToString( dDist) + "," +
|
||||
ToString( nType) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
+116
-10
@@ -38,13 +38,56 @@ ExeCopyAttributes( int nSouId, int nDestId)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetLevel( int nId, int nLevel)
|
||||
ExeSetLevel( const INTVECTOR& vIds, int nLevel)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// imposto il livello
|
||||
bool bOk = pGeomDB->SetLevel( nId, nLevel) ;
|
||||
// recupero pezzo e layer correnti
|
||||
bool bCurrPartOff = false ;
|
||||
bool bCurrLayerOff = false ;
|
||||
int nCurrPartId = ExeGetCurrPart() ;
|
||||
int nCurrLayerId = ExeGetCurrLayer() ;
|
||||
// ciclo sul vettore degli identificativi
|
||||
bool bOk = true ;
|
||||
for ( int i = 0 ; i < ssize( vIds) && bOk ; ++ i) {
|
||||
// impostazione livello
|
||||
int nId = (( vIds[i] != GDB_ID_SEL) ? vIds[i] : pGeomDB->GetFirstSelectedObj()) ;
|
||||
while ( nId != GDB_ID_NULL) {
|
||||
// imposto il livello
|
||||
if ( ! pGeomDB->SetLevel( nId, nLevel))
|
||||
bOk = false ;
|
||||
// se nascosto pezzo corrente o layer corrente
|
||||
if ( nLevel != GDB_LV_USER) {
|
||||
if ( nId == nCurrPartId)
|
||||
bCurrPartOff = true ;
|
||||
else if ( nId == nCurrLayerId)
|
||||
bCurrLayerOff = true ;
|
||||
}
|
||||
// passo al successivo
|
||||
nId = (( vIds[i] != GDB_ID_SEL) ? GDB_ID_NULL : pGeomDB->GetNextSelectedObj()) ;
|
||||
}
|
||||
}
|
||||
// se pezzo o layer correnti da rideterminare
|
||||
bool bPrevCmdLog = SetCmdLog( false) ;
|
||||
if ( bCurrPartOff)
|
||||
ExeResetCurrPartLayer() ;
|
||||
else if ( bCurrLayerOff)
|
||||
ExeSetCurrPartLayer( nCurrPartId, ExeGetFirstLayer( nCurrPartId, true)) ;
|
||||
SetCmdLog( bPrevCmdLog) ;
|
||||
// dichiaro progetto modificato
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLevel = "GDB_LV.USER" ;
|
||||
if ( nLevel == GDB_LV_SYSTEM)
|
||||
sLevel = "GDB_LV.SYSTEM" ;
|
||||
else if ( nLevel == GDB_LV_TEMP)
|
||||
sLevel = "GDB_LV.TEMP" ;
|
||||
string sLua = "EgtSetLevel({" + IdListToString( vIds) + "}," +
|
||||
sLevel + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
@@ -88,13 +131,56 @@ ExeGetCalcLevel( int nId, int* pnLevel)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetMode( int nId, int nMode)
|
||||
ExeSetMode( const INTVECTOR& vIds, int nMode)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// imposto il modo
|
||||
bool bOk = pGeomDB->SetMode( nId, nMode) ;
|
||||
// recupero pezzo e layer correnti
|
||||
bool bCurrPartOff = false ;
|
||||
bool bCurrLayerOff = false ;
|
||||
int nCurrPartId = ExeGetCurrPart() ;
|
||||
int nCurrLayerId = ExeGetCurrLayer() ;
|
||||
// ciclo sul vettore degli identificativi
|
||||
bool bOk = true ;
|
||||
for ( int i = 0 ; i < ssize( vIds) && bOk ; ++ i) {
|
||||
// impostazione livello
|
||||
int nId = (( vIds[i] != GDB_ID_SEL) ? vIds[i] : pGeomDB->GetFirstSelectedObj()) ;
|
||||
while ( nId != GDB_ID_NULL) {
|
||||
// imposto il modo
|
||||
if ( ! pGeomDB->SetMode( nId, nMode))
|
||||
bOk = false ;
|
||||
// se nascosto pezzo corrente o layer corrente
|
||||
if ( nMode != GDB_MD_STD) {
|
||||
if ( nId == nCurrPartId)
|
||||
bCurrPartOff = true ;
|
||||
else if ( nId == nCurrLayerId)
|
||||
bCurrLayerOff = true ;
|
||||
}
|
||||
// passo al successivo
|
||||
nId = (( vIds[i] != GDB_ID_SEL) ? GDB_ID_NULL : pGeomDB->GetNextSelectedObj()) ;
|
||||
}
|
||||
}
|
||||
// se pezzo o layer correnti da rideterminare
|
||||
bool bPrevCmdLog = SetCmdLog( false) ;
|
||||
if ( bCurrPartOff)
|
||||
ExeResetCurrPartLayer() ;
|
||||
else if ( bCurrLayerOff)
|
||||
ExeSetCurrPartLayer( nCurrPartId, ExeGetFirstLayer( nCurrPartId, true)) ;
|
||||
SetCmdLog( bPrevCmdLog) ;
|
||||
// dichiaro progetto modificato
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sMode = "GDB_MD.STD" ;
|
||||
if ( nMode == GDB_MD_LOCKED)
|
||||
sMode = "GDB_MD.LOCKED" ;
|
||||
else if ( nMode == GDB_MD_HIDDEN)
|
||||
sMode = "GDB_MD.HIDDEN" ;
|
||||
string sLua = "EgtSetMode({" + IdListToString( vIds) + "}," +
|
||||
sMode + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
@@ -149,11 +235,11 @@ ExeSetStatus( const INTVECTOR& vIds, int nStat)
|
||||
int nCurrLayerId = ExeGetCurrLayer() ;
|
||||
// ciclo sul vettore degli identificativi
|
||||
bool bOk = true ;
|
||||
for ( size_t i = 0 ; i < vIds.size() && bOk ; ++ i) {
|
||||
for ( int i = 0 ; i < ssize( vIds) && bOk ; ++ i) {
|
||||
// impostazione stato
|
||||
int nId = (( vIds[i] != GDB_ID_SEL) ? vIds[i] : pGeomDB->GetFirstSelectedObj()) ;
|
||||
while ( nId != GDB_ID_NULL) {
|
||||
// imposto il modo
|
||||
// imposto lo stato
|
||||
if ( ! pGeomDB->SetStatus( nId, nStat))
|
||||
bOk = false ;
|
||||
// se nascosto pezzo corrente o layer corrente
|
||||
@@ -232,12 +318,12 @@ ExeGetCalcStatus( int nId, int* pnStat)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetMark( int nId)
|
||||
ExeSetMark( int nId, int nMark)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// imposto l'evidenziazione
|
||||
bool bOk = pGeomDB->SetMark( nId) ;
|
||||
bool bOk = pGeomDB->SetMark( nId, nMark) ;
|
||||
// non produce modifica perchè mark ignorato in salvataggio
|
||||
return bOk ;
|
||||
}
|
||||
@@ -746,6 +832,16 @@ ExeRemoveInfo( int nId, const string& sKey)
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetAllInfo( int nId, STRVECTOR& vsInfo)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// recupero tutte le info
|
||||
return pGeomDB->GetAllInfo( nId, vsInfo) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetTextureName( int nId, const string& sTxrName)
|
||||
@@ -816,3 +912,13 @@ ExeGetTextureFrame( int nId, int nRefId, Frame3d& frTxrRef)
|
||||
// gestione trasformazione ( eventuale)
|
||||
return TransformFrame( pGeomDB, nId, nRefId, frTxrRef) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetStipple( int nId, int nFactor, int nPattern)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// setto stipple
|
||||
return pGeomDB->SetStipple( nId, nFactor, nPattern) ;
|
||||
}
|
||||
|
||||
+119
-40
@@ -15,8 +15,10 @@
|
||||
#include "stdafx.h"
|
||||
#include "EXE.h"
|
||||
#include "EXE_Macro.h"
|
||||
#include "GeoTools.h"
|
||||
#include "AuxTools.h"
|
||||
#include "/EgtDev/Include/EXeExecutor.h"
|
||||
#include "/EgtDev/Include/EGkMultiGeomDB.h"
|
||||
#include "/EgtDev/Include/EGkStringUtils3d.h"
|
||||
#include "/EgtDev/Include/EGkUiUnits.h"
|
||||
#include "/EgtDev/Include/EgtStringConverter.h"
|
||||
@@ -218,6 +220,43 @@ ExeGetPrevName( int nId, const string& sName)
|
||||
return pGeomDB->GetPrevName( nId, sName) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetNameInGroup( int nGroupId, const string& sName, INTVECTOR& vIds)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
if ( ! pGeomDB->ExistsObj( nGroupId))
|
||||
return false ;
|
||||
// recupero gli oggetti con il nome desiderato
|
||||
vIds.clear() ;
|
||||
int nId = pGeomDB->GetFirstNameInGroup( nGroupId, sName) ;
|
||||
while ( nId != GDB_ID_NULL) {
|
||||
vIds.push_back( nId) ;
|
||||
nId = pGeomDB->GetNextName( nId, sName) ;
|
||||
}
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetInfoInGroup( int nGroupId, const string& sKey, INTVECTOR& vIds)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
if ( ! pGeomDB->ExistsObj( nGroupId))
|
||||
return false ;
|
||||
// recupero gli oggetti con l'info desiderata
|
||||
vIds.clear() ;
|
||||
int nId = pGeomDB->GetFirstInGroup( nGroupId) ;
|
||||
while ( nId != GDB_ID_NULL) {
|
||||
if ( pGeomDB->ExistsInfo( nId, sKey))
|
||||
vIds.push_back( nId) ;
|
||||
nId = pGeomDB->GetNext( nId) ;
|
||||
}
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetBBox( int nId, int nFlag, BBox3d& b3Box)
|
||||
@@ -254,6 +293,7 @@ ExeCopy( int nSouId, int nRefId, int nSonBeforeAfter)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nRefId = AdjustId( nRefId) ;
|
||||
// eseguo la copia
|
||||
int nNewId = pGeomDB->Copy( nSouId, GDB_ID_NULL, nRefId, nSonBeforeAfter) ;
|
||||
pGeomDB->RemoveInfo( nNewId, GDB_SI_LIST) ;
|
||||
@@ -261,16 +301,39 @@ ExeCopy( int nSouId, int nRefId, int nSonBeforeAfter)
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua ;
|
||||
if ( nSonBeforeAfter == GDB_LAST_SON)
|
||||
sLua = "EgtCopy(" + ToString( nSouId) + "," +
|
||||
ToString( nRefId) + ")" +
|
||||
" -- Id=" + ToString( nNewId) ;
|
||||
else
|
||||
sLua = "EgtCopy(" + ToString( nSouId) + "," +
|
||||
ToString( nRefId) + "," +
|
||||
InsToString( nSonBeforeAfter) + ")" +
|
||||
" -- Id=" + ToString( nNewId) ;
|
||||
string sLua = "EgtCopy(" + ToString( nSouId) + "," +
|
||||
IdToString( nRefId) + "," +
|
||||
InsToString( nSonBeforeAfter) + ")" +
|
||||
" -- Id=" + ToString( nNewId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return nNewId ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
int
|
||||
ExeCopyEx( int nSouCtx, int nSouId, int nDestCtx, int nRefId, int nSonBeforeAfter)
|
||||
{
|
||||
// recupero i due GeomDB
|
||||
IGeomDB* pSouGeomDB = GetGeomDB( nSouCtx) ;
|
||||
VERIFY_GEOMDB( pSouGeomDB, GDB_ID_NULL)
|
||||
IGeomDB* pDstGeomDB = GetGeomDB( nDestCtx) ;
|
||||
VERIFY_GEOMDB( pDstGeomDB, GDB_ID_NULL)
|
||||
// risolvo l'Id di riferimento per destinazione
|
||||
nRefId = AdjustId( nRefId, nDestCtx) ;
|
||||
// eseguo la copia
|
||||
int nNewId = Copy( pSouGeomDB, nSouId, pDstGeomDB, GDB_ID_NULL, nRefId, nSonBeforeAfter) ;
|
||||
pDstGeomDB->RemoveInfo( nNewId, GDB_SI_LIST) ;
|
||||
pDstGeomDB->RemoveInfo( nNewId, GDB_SI_DUPLIST) ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtCopyEx(" + ToString( nSouCtx) + "," +
|
||||
ToString( nSouId) + "," +
|
||||
ToString( nDestCtx) + "," +
|
||||
IdToString( nRefId) + "," +
|
||||
InsToString( nSonBeforeAfter) + ")" +
|
||||
" -- Id=" + ToString( nNewId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
@@ -283,6 +346,7 @@ ExeCopyGlob( int nSouId, int nRefId, int nSonBeforeAfter)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
nRefId = AdjustId( nRefId) ;
|
||||
// eseguo la copia mantenendo la posizione in globale
|
||||
int nNewId = pGeomDB->CopyGlob( nSouId, GDB_ID_NULL, nRefId, nSonBeforeAfter) ;
|
||||
pGeomDB->RemoveInfo( nNewId, GDB_SI_LIST) ;
|
||||
@@ -290,16 +354,39 @@ ExeCopyGlob( int nSouId, int nRefId, int nSonBeforeAfter)
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua ;
|
||||
if ( nSonBeforeAfter == GDB_LAST_SON)
|
||||
sLua = "EgtCopyGlob(" + ToString( nSouId) + "," +
|
||||
ToString( nRefId) + ")" +
|
||||
" -- Id=" + ToString( nNewId) ;
|
||||
else
|
||||
sLua = "EgtCopyGlob(" + ToString( nSouId) + "," +
|
||||
ToString( nRefId) + "," +
|
||||
InsToString( nSonBeforeAfter) + ")" +
|
||||
" -- Id=" + ToString( nNewId) ;
|
||||
string sLua = "EgtCopyGlob(" + ToString( nSouId) + "," +
|
||||
IdToString( nRefId) + "," +
|
||||
InsToString( nSonBeforeAfter) + ")" +
|
||||
" -- Id=" + ToString( nNewId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return nNewId ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
int
|
||||
ExeCopyGlobEx( int nSouCtx, int nSouId, int nDestCtx, int nRefId, int nSonBeforeAfter)
|
||||
{
|
||||
// recupero i due GeomDB
|
||||
IGeomDB* pSouGeomDB = GetGeomDB( nSouCtx) ;
|
||||
VERIFY_GEOMDB( pSouGeomDB, GDB_ID_NULL)
|
||||
IGeomDB* pDstGeomDB = GetGeomDB( nDestCtx) ;
|
||||
VERIFY_GEOMDB( pDstGeomDB, GDB_ID_NULL)
|
||||
// risolvo l'Id di riferimento per destinazione
|
||||
nRefId = AdjustId( nRefId, nDestCtx) ;
|
||||
// eseguo la copia
|
||||
int nNewId = CopyGlob( pSouGeomDB, nSouId, pDstGeomDB, GDB_ID_NULL, nRefId, nSonBeforeAfter) ;
|
||||
pDstGeomDB->RemoveInfo( nNewId, GDB_SI_LIST) ;
|
||||
pDstGeomDB->RemoveInfo( nNewId, GDB_SI_DUPLIST) ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtCopyGlobEx(" + ToString( nSouCtx) + "," +
|
||||
ToString( nSouId) + "," +
|
||||
ToString( nDestCtx) + "," +
|
||||
IdToString( nRefId) + "," +
|
||||
InsToString( nSonBeforeAfter) + ")" +
|
||||
" -- Id=" + ToString( nNewId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
@@ -312,21 +399,16 @@ ExeRelocate( int nSouId, int nRefId, int nSonBeforeAfter)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
nRefId = AdjustId( nRefId) ;
|
||||
// eseguo la rilocazione
|
||||
bool bOk = pGeomDB->Relocate( nSouId, nRefId, nSonBeforeAfter) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua ;
|
||||
if ( nSonBeforeAfter == GDB_LAST_SON)
|
||||
sLua = "EgtRelocate(" + ToString( nSouId) + "," +
|
||||
ToString( nRefId) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
else
|
||||
sLua = "EgtRelocate(" + ToString( nSouId) + "," +
|
||||
ToString( nRefId) + "," +
|
||||
InsToString( nSonBeforeAfter) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
string sLua = "EgtRelocate(" + ToString( nSouId) + "," +
|
||||
IdToString( nRefId) + "," +
|
||||
InsToString( nSonBeforeAfter) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
@@ -339,21 +421,16 @@ ExeRelocateGlob( int nSouId, int nRefId, int nSonBeforeAfter)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
nRefId = AdjustId( nRefId) ;
|
||||
// eseguo la rilocazione mantenendo la posizione in globale
|
||||
bool bOk = pGeomDB->RelocateGlob( nSouId, nRefId, nSonBeforeAfter) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua ;
|
||||
if ( nSonBeforeAfter == GDB_LAST_SON)
|
||||
sLua = "EgtRelocateGlob(" + ToString( nSouId) + "," +
|
||||
ToString( nRefId) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
else
|
||||
sLua = "EgtRelocateGlob(" + ToString( nSouId) + "," +
|
||||
ToString( nRefId) + "," +
|
||||
InsToString( nSonBeforeAfter) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
string sLua = "EgtRelocateGlob(" + ToString( nSouId) + "," +
|
||||
IdToString( nRefId) + "," +
|
||||
InsToString( nSonBeforeAfter) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
@@ -594,6 +671,8 @@ ExeGeoObjDump( int nId, string& sDump)
|
||||
sDump = pGeoObj->GetTitle() + " " + ToString( nId) + "\r\n" ;
|
||||
// preparo gli attributi
|
||||
pGeomDB->DumpAttributes( nId, sDump, bMM, "\r\n") ;
|
||||
// preparo stipple
|
||||
pGeomDB->DumpStipple( nId, sDump, bMM, "\r\n") ;
|
||||
// preparo TextureData
|
||||
pGeomDB->DumpTextureData( nId, sDump, bMM, "\r\n") ;
|
||||
// preparo UserObj
|
||||
|
||||
+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) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
+167
-16
@@ -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"
|
||||
@@ -29,9 +31,11 @@
|
||||
#include "/EgtDev/Include/EGnFileUtils.h"
|
||||
#include "/EgtDev/Include/EGnGetModuleVer.h"
|
||||
#include "/EgtDev/Include/EGnPcInfo.h"
|
||||
#include "/EgtDev/Include/EGnGetKeyData.h"
|
||||
#include "/EgtDev/Include/EgtIniFile.h"
|
||||
#include "/EgtDev/Include/EgtLogger.h"
|
||||
#include "/EgtDev/Include/EgtStringConverter.h"
|
||||
#include "/EgtDev/Include/EgtKeyCodes.h"
|
||||
#include "/EgtDev/Include/SELkLockId.h"
|
||||
#include "/EgtDev/Include/SELkKeyProc.h"
|
||||
#include <fstream>
|
||||
@@ -49,12 +53,15 @@ 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 pfProcEvents s_pFunProcEvents = nullptr ;
|
||||
static pfOutText s_pFunOutText = nullptr ;
|
||||
static psfOnTerminateProcess s_pFunOnTerminateProcess = nullptr ;
|
||||
static psfProcEvents s_pFunProcEvents = nullptr ;
|
||||
static psfOutText s_pFunOutText = nullptr ;
|
||||
static HWND s_hMainWnd = nullptr ;
|
||||
static string s_sTempDir ;
|
||||
|
||||
@@ -68,6 +75,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 ;
|
||||
@@ -110,12 +118,15 @@ ExeInit( int nDebug, const string& sLogFile, const string& sLogMsg)
|
||||
if ( LoadExchangeDll( s_pGenLog, s_sKey, s_bNetHwKey))
|
||||
LOG_INFO( s_pGenLog, MyGetEExVersion())
|
||||
|
||||
// la libreria exchange 3dm opzionale viene caricata solo al momento del bisogno
|
||||
// (è molto lento il caricamento di OpenNurbs)
|
||||
|
||||
// carico libreria di lavorazione opzionale
|
||||
if ( LoadMachKernelDll( s_pGenLog, s_sKey, s_bNetHwKey))
|
||||
LOG_INFO( s_pGenLog, MyGetEMkVersion())
|
||||
|
||||
// carico libreria nesting opzionale (non può usare la chiave di rete)
|
||||
if ( LoadNestingDll( s_pGenLog, s_sKey, s_sNestKey))
|
||||
if ( LoadNestingDll( s_pGenLog, s_sKey, s_sNestKey, s_bNetHwKey))
|
||||
LOG_INFO( s_pGenLog, MyGetENsVersion())
|
||||
|
||||
// Info sulla protezione e sul sistema
|
||||
@@ -166,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 ;
|
||||
@@ -188,9 +201,37 @@ ExeExit( void)
|
||||
s_pGenLog = nullptr ;
|
||||
}
|
||||
|
||||
// libero eventuale chiave di rete
|
||||
if ( s_bNetHwKey)
|
||||
CloseNetHwKey() ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetOnTerminateProcess( psfOnTerminateProcess 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)
|
||||
@@ -218,6 +259,7 @@ bool
|
||||
ExeSetKey( const string& sKey)
|
||||
{
|
||||
s_sKey = sKey ;
|
||||
SetEGnKey( s_sKey) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -248,23 +290,106 @@ bool
|
||||
ExeSetLockType( int nType)
|
||||
{
|
||||
s_nKeyType = nType ;
|
||||
SetEGnKeyType( s_nKeyType) ;
|
||||
return SetLockType( nType) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetNetHwKey( bool bNetHwKey)
|
||||
ExeSetLockId( const string& sLockId)
|
||||
{
|
||||
int nKeyType ;
|
||||
bool bNetKey ;
|
||||
int nUserId ;
|
||||
GetLockIdStringInfo( sLockId, nKeyType, bNetKey, nUserId) ;
|
||||
bool bOk ;
|
||||
switch ( nKeyType) {
|
||||
default :
|
||||
ExeSetNetHwKey( false) ;
|
||||
bOk = false ;
|
||||
break ;
|
||||
case KEY_LOCK_TYPE_SW :
|
||||
ExeSetNetHwKey( false) ;
|
||||
bOk = ( s_nKeyType != KEY_LOCK_TYPE_HW) ;
|
||||
break ;
|
||||
case KEY_LOCK_TYPE_HW :
|
||||
{ string sAddrPort ;
|
||||
GetLockIdStringNetData( sLockId, sAddrPort) ;
|
||||
ExeSetNetHwKey( bNetKey, nUserId, sAddrPort) ;
|
||||
bOk = true ;
|
||||
break ;
|
||||
}
|
||||
}
|
||||
if ( bOk)
|
||||
s_sLockId = sLockId ;
|
||||
else
|
||||
s_sLockId = "" ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
const string&
|
||||
ExeGetLockId( void)
|
||||
{
|
||||
if ( s_sLockId.empty())
|
||||
GetLockId( s_sLockId) ;
|
||||
return s_sLockId ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetNetHwKey( bool bNetHwKey, int nUserId, const string& sAddrPort)
|
||||
{
|
||||
s_bNetHwKey = bNetHwKey ;
|
||||
return SetNetHwKey( bNetHwKey) ;
|
||||
SetEGnNetHwKey( s_bNetHwKey) ;
|
||||
return SetNetHwKey( s_bNetHwKey, nUserId, sAddrPort) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetNetHwKey( void)
|
||||
{
|
||||
return s_bNetHwKey ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeVerifyKeyOption( int nOptInd)
|
||||
{
|
||||
// recupero le opzioni abilitate
|
||||
unsigned int nOpt1, nOpt2 ;
|
||||
int nOptExpDays ;
|
||||
int nRet = GetEGnKeyOptions( KEY_BASELIB_PROD, KEY_BASELIB_VER, KEY_BASELIB_LEV,
|
||||
nOpt1, nOpt2, nOptExpDays) ;
|
||||
if ( ! ExeGetNetHwKey())
|
||||
nRet = GetKeyOptions( ExeGetKey(), KEY_BASELIB_PROD, KEY_BASELIB_VER, KEY_BASELIB_LEV,
|
||||
nOpt1, nOpt2, nOptExpDays) ;
|
||||
// verifico validità chiave con licenza
|
||||
if ( nRet != KEY_OK || nOptExpDays < GetCurrDay())
|
||||
return false ;
|
||||
// verifico le opzioni (nOptInd = 100 -> bit 0 di Opt1 ... = 200 -> bit 0 di Opt2 ... = 231 -> bit 31 di Opt2)
|
||||
if ( nOptInd >= 100 && nOptInd <= 131) {
|
||||
unsigned int nOptVal = ( 1 << ( nOptInd - 100)) ;
|
||||
return ( ( nOpt1 & nOptVal) != 0) ;
|
||||
}
|
||||
else if ( nOptInd >= 200 && nOptInd <= 231) {
|
||||
unsigned int nOptVal = ( 1 << ( nOptInd - 200)) ;
|
||||
return ( ( nOpt2 & nOptVal) != 0) ;
|
||||
}
|
||||
else
|
||||
return false ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetFont( const string& sNfeFontDir, const string& sDefaultFont)
|
||||
{
|
||||
// inizializzazioni gestore font Nfe
|
||||
InitFontManager( sNfeFontDir, sDefaultFont) ;
|
||||
// se definito anche direttorio font Nfe, inizializzazione gestore font
|
||||
if ( ! sNfeFontDir.empty())
|
||||
InitFontManager( sNfeFontDir, sDefaultFont) ;
|
||||
// altrimenti impostazione del solo font di default
|
||||
else
|
||||
SetDefaultFont( sDefaultFont) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -387,6 +512,10 @@ ExeGetVersionInfo( string& sVer, const char* szNewLine)
|
||||
sVer += szNewLine ;
|
||||
sVer += MyGetEExVersion() ;
|
||||
}
|
||||
if ( IsLoadedExch3dmDll()) {
|
||||
sVer += szNewLine ;
|
||||
sVer += MyGetEE3Version() ;
|
||||
}
|
||||
if ( IsLoadedMachKernelDll()) {
|
||||
sVer += szNewLine ;
|
||||
sVer += MyGetEMkVersion() ;
|
||||
@@ -411,7 +540,7 @@ ExeGetKeyInfo( string& sKey)
|
||||
sLockId = sLockId.substr( 7, 6) ;
|
||||
if ( sLockId.empty())
|
||||
return false ;
|
||||
int nLockSN ;
|
||||
int nLockSN = 0 ;
|
||||
if ( GetLockSN( nLockSN))
|
||||
sLockId += " (" + ToString( nLockSN) + ")" ;
|
||||
}
|
||||
@@ -430,14 +559,14 @@ 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) + ")" ;
|
||||
LOG_ERROR( s_pGenLog, sErr.c_str()) ;
|
||||
nKLev = - nRet ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -448,6 +577,7 @@ ExeGetKeyOptions( int nProd, int nVer, int nLev, unsigned int& nOpt2)
|
||||
// verifico la chiave e le opzioni
|
||||
unsigned int nOpt1 ;
|
||||
int nRet = GetKeyOptions( s_sKey, nProd, nVer, nLev, nOpt1, nOpt2, s_nKeyOptExpDays) ;
|
||||
SetEGnKeyOptions( nRet, nOpt1, nOpt2, s_nKeyOptExpDays) ;
|
||||
if ( nRet != KEY_OK) {
|
||||
nOpt2 = 0 ;
|
||||
string sErr = "Error on Key (EGKO/" + ToString( nRet) + ")" ;
|
||||
@@ -460,7 +590,6 @@ ExeGetKeyOptions( int nProd, int nVer, int nLev, unsigned int& nOpt2)
|
||||
LOG_ERROR( s_pGenLog, sErr.c_str()) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -474,6 +603,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)
|
||||
@@ -536,9 +675,21 @@ ExeGetEnableUI( void)
|
||||
return s_bEnableUI ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
int
|
||||
ExeMessageBox( const string& sText, const string& sTitle, int nType)
|
||||
{
|
||||
int nRes = 0 ;
|
||||
if ( ExeGetEnableUI()) {
|
||||
HWND hTopWnd = ExeGetMainWindowHandle() ;
|
||||
nRes = MessageBox( hTopWnd, stringtoW( sText), stringtoW( sTitle), nType | MB_TASKMODAL) ;
|
||||
}
|
||||
return nRes ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetProcessEvents( pfProcEvents pFun)
|
||||
ExeSetProcessEvents( psfProcEvents pFun)
|
||||
{
|
||||
s_pFunProcEvents = pFun ;
|
||||
SetEGkProcessEvents( pFun) ;
|
||||
@@ -557,7 +708,7 @@ ExeProcessEvents( int nProg, int nPause)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetOutText( pfOutText pFun)
|
||||
ExeSetOutText( psfOutText pFun)
|
||||
{
|
||||
s_pFunOutText = pFun ;
|
||||
return ( pFun != nullptr) ;
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include "/EgtDev/Include/EXeExecutor.h"
|
||||
#include "/EgtDev/Include/EGkDistPointCurve.h"
|
||||
#include "/EgtDev/Include/EGkDistPointSurfTm.h"
|
||||
#include "/EgtDev/Include/EGkDistPointSurfBz.h"
|
||||
|
||||
using namespace std ;
|
||||
|
||||
@@ -122,3 +123,38 @@ ExePointSurfTmDist( const Point3d& ptP, int nStmId, int nRefType,
|
||||
ptMin = GetPointInRef( pGeomDB, ptMinL, frStm, nRefType) ;
|
||||
return distPS.GetMinDistTriaIndex( *pnTria) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExePointSurfBzDist( const Point3d& ptP, int nSbzId, int nRefType,
|
||||
double* pdDist, Point3d& ptMin, Vector3d& vtN)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// verifico il primo parametro di ritorno obbligatorio
|
||||
if ( pdDist == nullptr)
|
||||
return false ;
|
||||
// recupero la superficie bezier
|
||||
ISurfBezier* pSbz = GetSurfBezier( pGeomDB->GetGeoObj( nSbzId)) ;
|
||||
if ( pSbz == nullptr)
|
||||
return false ;
|
||||
// recupero il suo riferimento globale
|
||||
Frame3d frSbz ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nSbzId, frSbz))
|
||||
return false ;
|
||||
// porto il punto nel riferimento della superficie
|
||||
Point3d ptPL = GetPointLocal( pGeomDB, ptP, nRefType, frSbz) ;
|
||||
// recupero i risultati
|
||||
DistPointSurfBz distPS( ptPL, *pSbz) ;
|
||||
if ( ! distPS.GetDist( *pdDist))
|
||||
return false ;
|
||||
Point3d ptMinL ;
|
||||
if ( ! distPS.GetMinDistPoint( ptMinL))
|
||||
return false ;
|
||||
ptMin = GetPointInRef( pGeomDB, ptMinL, frSbz, nRefType) ;
|
||||
Vector3d vtNL ;
|
||||
if ( ! distPS.GetNorm( vtNL))
|
||||
return false ;
|
||||
vtN = GetVectorInRef( pGeomDB, vtNL, frSbz, nRefType) ;
|
||||
return true ;
|
||||
}
|
||||
+825
-549
File diff suppressed because it is too large
Load Diff
+28
-21
@@ -32,7 +32,7 @@ ExeStartPoint( int nId, int nRefId, Point3d& ptP)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// se non è entità geometrica
|
||||
// se non è entità geometrica
|
||||
const IGeoObj* pGObj ;
|
||||
if ( ( pGObj = pGeomDB->GetGeoObj( nId)) == nullptr)
|
||||
return false ;
|
||||
@@ -85,12 +85,19 @@ ExeEndPoint( int nId, int nRefId, Point3d& ptP)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// se non è entità geometrica
|
||||
// se non è entità geometrica
|
||||
const IGeoObj* pGObj ;
|
||||
if ( ( pGObj = pGeomDB->GetGeoObj( nId)) == nullptr)
|
||||
return false ;
|
||||
// se punto
|
||||
if ( pGObj->GetType() == GEO_PNT3D) {
|
||||
// recupero il geo-punto
|
||||
const IGeoPoint3d* pGP = GetGeoPoint3d( pGObj) ;
|
||||
// assegno il punto
|
||||
ptP = pGP->GetPoint() ;
|
||||
}
|
||||
// se vettore
|
||||
if ( pGObj->GetType() == GEO_VECT3D) {
|
||||
else if ( pGObj->GetType() == GEO_VECT3D) {
|
||||
// recupero il geo-vettore
|
||||
const IGeoVector3d* pGV = GetGeoVector3d( pGObj) ;
|
||||
// assegno il punto
|
||||
@@ -122,7 +129,7 @@ ExeMidPoint( int nId, int nRefId, Point3d& ptP)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// se non è entità geometrica
|
||||
// se non è entità geometrica
|
||||
const IGeoObj* pGObj ;
|
||||
if ( ( pGObj = pGeomDB->GetGeoObj( nId)) == nullptr)
|
||||
return false ;
|
||||
@@ -154,7 +161,7 @@ ExeCenterPoint( int nId, int nRefId, Point3d& ptP)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// se non è entità geometrica
|
||||
// se non è entità geometrica
|
||||
const IGeoObj* pGObj ;
|
||||
if ( ( pGObj = pGeomDB->GetGeoObj( nId)) == nullptr)
|
||||
return false ;
|
||||
@@ -194,7 +201,7 @@ ExeCentroid( int nId, int nRefId, Point3d& ptP)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// se non è entità geometrica
|
||||
// se non è entità geometrica
|
||||
const IGeoObj* pGObj ;
|
||||
if ( ( pGObj = pGeomDB->GetGeoObj( nId)) == nullptr)
|
||||
return false ;
|
||||
@@ -234,7 +241,7 @@ ExeAtParamPoint( int nId, double dU, int nRefId, Point3d& ptP)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// se non è entità geometrica
|
||||
// se non è entità geometrica
|
||||
const IGeoObj* pGObj ;
|
||||
if ( ( pGObj = pGeomDB->GetGeoObj( nId)) == nullptr)
|
||||
return false ;
|
||||
@@ -257,11 +264,11 @@ ExeNearPoint( int nId, const Point3d& ptNear, int nRefId, Point3d& ptP)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// se non è entità geometrica
|
||||
// se non è entità geometrica
|
||||
const IGeoObj* pGObj = pGeomDB->GetGeoObj( nId) ;
|
||||
if ( pGObj == nullptr)
|
||||
return false ;
|
||||
// porto il punto near nel riferimento dell'entità
|
||||
// porto il punto near nel riferimento dell'entità
|
||||
Point3d ptNearL = ptNear ;
|
||||
if ( ! InvTransformPoint( pGeomDB, nId, nRefId, ptNearL))
|
||||
return false ;
|
||||
@@ -269,7 +276,7 @@ ExeNearPoint( int nId, const Point3d& ptNear, int nRefId, Point3d& ptP)
|
||||
if ( ( pGObj->GetType() & GEO_CURVE) != 0) {
|
||||
// recupero la curva
|
||||
const ICurve* pCrv = GetCurve( pGObj) ;
|
||||
// calcolo il punto della curva più vicino al punto di riferimento
|
||||
// calcolo il punto della curva più vicino al punto di riferimento
|
||||
DistPointCurve dstPC( ptNearL, *pCrv) ;
|
||||
int nFlag ;
|
||||
if ( ! dstPC.GetMinDistPoint( 0, ptP, nFlag))
|
||||
@@ -290,7 +297,7 @@ ExeIntersectionPoint( int nId1, int nId2, const Point3d& ptNear, int nRefId, Poi
|
||||
|
||||
// se auto-intersezione
|
||||
if ( nId1 == nId2) {
|
||||
// deve essere entità geometriche
|
||||
// deve essere entità geometriche
|
||||
const IGeoObj* pGObj1 ;
|
||||
if ( ( pGObj1 = pGeomDB->GetGeoObj( nId1)) == nullptr)
|
||||
return false ;
|
||||
@@ -298,11 +305,11 @@ ExeIntersectionPoint( int nId1, int nId2, const Point3d& ptNear, int nRefId, Poi
|
||||
if ( ( pGObj1->GetType() & GEO_CURVE) != 0) {
|
||||
// recupero la curva
|
||||
const ICurve* pCrv1 = GetCurve( pGObj1) ;
|
||||
// porto il punto Near nel riferimento dell'entità
|
||||
// porto il punto Near nel riferimento dell'entità
|
||||
Point3d ptNearL = ptNear ;
|
||||
if ( ! InvTransformPoint( pGeomDB, nId1, nRefId, ptNearL))
|
||||
return false ;
|
||||
// calcolo il punto di auto-intersezione sulla curva più vicino al punto di riferimento
|
||||
// calcolo il punto di auto-intersezione sulla curva più vicino al punto di riferimento
|
||||
SelfIntersCurve sintC( *pCrv1) ;
|
||||
if ( ! sintC.GetIntersPointNearTo( ptNearL, ptP))
|
||||
return false ;
|
||||
@@ -313,7 +320,7 @@ ExeIntersectionPoint( int nId1, int nId2, const Point3d& ptNear, int nRefId, Poi
|
||||
return TransformPoint( pGeomDB, nId1, nRefId, ptP) ;
|
||||
}
|
||||
|
||||
// devono essere entità geometriche
|
||||
// devono essere entità geometriche
|
||||
const IGeoObj* pGObj1 ;
|
||||
if ( ( pGObj1 = pGeomDB->GetGeoObj( nId1)) == nullptr)
|
||||
return false ;
|
||||
@@ -332,7 +339,7 @@ ExeIntersectionPoint( int nId1, int nId2, const Point3d& ptNear, int nRefId, Poi
|
||||
Frame3d frEnt2 ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nId2, frEnt2))
|
||||
return false ;
|
||||
// se il riferimento della seconda curva è diverso da quello della prima entità, devo trasformarla
|
||||
// se il riferimento della seconda curva è diverso da quello della prima entità, devo trasformarla
|
||||
PtrOwner<ICurve> pcrvTrans ;
|
||||
if ( ! AreSameFrame( frEnt1, frEnt2)) {
|
||||
pcrvTrans.Set( pCrv2->Clone()) ;
|
||||
@@ -341,11 +348,11 @@ ExeIntersectionPoint( int nId1, int nId2, const Point3d& ptNear, int nRefId, Poi
|
||||
pcrvTrans->LocToLoc( frEnt2, frEnt1) ;
|
||||
pCrv2 = pcrvTrans ;
|
||||
}
|
||||
// porto il punto Near nel riferimento della prima entità
|
||||
// porto il punto Near nel riferimento della prima entità
|
||||
Point3d ptNearL = ptNear ;
|
||||
if ( ! InvTransformPoint( pGeomDB, nId1, nRefId, ptNearL))
|
||||
return false ;
|
||||
// calcolo il punto di intersezione sulla prima curva più vicino al punto di riferimento
|
||||
// calcolo il punto di intersezione sulla prima curva più vicino al punto di riferimento
|
||||
IntersCurveCurve intCC( *pCrv1, *pCrv2, true) ;
|
||||
if ( ! intCC.GetIntersPointNearTo( 0, ptNearL, ptP))
|
||||
return false ;
|
||||
@@ -362,7 +369,7 @@ ExeStartVector( int nId, int nRefId, Vector3d& vtV)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// se non è entità geometrica
|
||||
// se non è entità geometrica
|
||||
const IGeoObj* pGObj = pGeomDB->GetGeoObj( nId) ;
|
||||
if ( pGObj == nullptr)
|
||||
return false ;
|
||||
@@ -400,7 +407,7 @@ ExeEndVector( int nId, int nRefId, Vector3d& vtV)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// se non è entità geometrica
|
||||
// se non è entità geometrica
|
||||
const IGeoObj* pGObj = pGeomDB->GetGeoObj( nId) ;
|
||||
if ( pGObj == nullptr)
|
||||
return false ;
|
||||
@@ -424,7 +431,7 @@ ExeMidVector( int nId, int nRefId, Vector3d& vtV)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// se non è entità geometrica
|
||||
// se non è entità geometrica
|
||||
const IGeoObj* pGObj ;
|
||||
if ( ( pGObj = pGeomDB->GetGeoObj( nId)) == nullptr)
|
||||
return false ;
|
||||
@@ -448,7 +455,7 @@ ExeAtParamVector( int nId, double dU, int nSide, int nRefId, Vector3d& vtV)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// se non è entità geometrica
|
||||
// se non è entità geometrica
|
||||
const IGeoObj* pGObj ;
|
||||
if ( ( pGObj = pGeomDB->GetGeoObj( nId)) == nullptr)
|
||||
return false ;
|
||||
|
||||
+88
-21
@@ -226,6 +226,18 @@ ExeSetModified( void)
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetModified( int nCtx)
|
||||
{
|
||||
GseContext* pGseCtx = GetGseContext( nCtx) ;
|
||||
VERIFY_CTX_GEOMDB( pGseCtx, false)
|
||||
// se consentito, imposto il flag
|
||||
if ( pGseCtx->m_bEnableModified)
|
||||
pGseCtx->m_bModified = true ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeResetModified( void)
|
||||
@@ -277,6 +289,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 +330,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 ;
|
||||
}
|
||||
@@ -380,7 +399,7 @@ ExeInsertFile( const string& sFilePath)
|
||||
class CamStatus
|
||||
{
|
||||
public :
|
||||
CamStatus( void) : m_nCurrMachGroup( GDB_ID_NULL), m_nCurrPhase( 0) {
|
||||
CamStatus( void) : m_nCurrMachGroup( GDB_ID_NULL), m_nCurrPhase( 0), m_nCurrMachining( GDB_ID_NULL) {
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
if ( pMachMgr == nullptr)
|
||||
return ;
|
||||
@@ -447,37 +466,71 @@ 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 ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
static bool
|
||||
IsMachGroupOrWithin( int nId, const IGeomDB* pGeomDB, const IMachMgr* pMachMgr, int& nMachGroupId)
|
||||
{
|
||||
// default non definito
|
||||
nMachGroupId = GDB_ID_NULL ;
|
||||
// verifico validità puntatori
|
||||
if ( pGeomDB == nullptr || pMachMgr == nullptr)
|
||||
return false ;
|
||||
// eseguo ricerca
|
||||
int nParentId = pGeomDB->GetParentId( nId) ;
|
||||
int nPrevParId = nId ;
|
||||
while ( nParentId != GDB_ID_NULL && nParentId != GDB_ID_ROOT) {
|
||||
if ( pMachMgr->IsMachBase( nParentId)) {
|
||||
nMachGroupId = nPrevParId ;
|
||||
return true ;
|
||||
}
|
||||
nPrevParId = nParentId ;
|
||||
nParentId = pGeomDB->GetParentId( nParentId) ;
|
||||
}
|
||||
return false ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSaveObjToFile( int nId, const string& sFilePath, int nFlag)
|
||||
ExeSaveObjToFile( const INTVECTOR& vId, const string& sFilePath, int nFlag)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
// se l'oggetto è la base dei gruppi di lavoro, chiamo la funzione di salvataggio di tutto
|
||||
if ( pMachMgr != nullptr && pMachMgr->IsMachBase( nId))
|
||||
return ExeSaveFile( sFilePath, nFlag) ;
|
||||
// se l'oggetto è un gruppo di lavoro o una sua parte, chiamo la appropriata funzione di salvataggio
|
||||
int nParentId = pGeomDB->GetParentId( nId) ;
|
||||
int nPrevParId = nId ;
|
||||
while ( pMachMgr != nullptr && nParentId != GDB_ID_NULL && nParentId != GDB_ID_ROOT) {
|
||||
if ( pMachMgr->IsMachBase( nParentId))
|
||||
return ExeSaveMachGroupToFile( nPrevParId, sFilePath, nFlag) ;
|
||||
nPrevParId = nParentId ;
|
||||
nParentId = pGeomDB->GetParentId( nParentId) ;
|
||||
// se uno degli oggetti è la base dei gruppi di lavoro, chiamo la funzione di salvataggio di tutto
|
||||
for ( int nId : vId) {
|
||||
if ( pMachMgr != nullptr && pMachMgr->IsMachBase( nId))
|
||||
return ExeSaveFile( sFilePath, nFlag) ;
|
||||
}
|
||||
// se uno degli oggetti è un gruppo di lavoro o una sua parte, chiamo la appropriata funzione di salvataggio
|
||||
for ( int nId : vId) {
|
||||
int nMachGroupId ;
|
||||
if ( IsMachGroupOrWithin( nId, pGeomDB, pMachMgr, nMachGroupId)) {
|
||||
INTVECTOR vOthId ;
|
||||
vOthId.reserve( vId.size()) ;
|
||||
for ( int nSouId : vId) {
|
||||
if ( nSouId != nId)
|
||||
vOthId.push_back( nSouId) ;
|
||||
}
|
||||
return ExeSaveMachGroupToFile( nMachGroupId, vOthId, sFilePath, nFlag) ;
|
||||
}
|
||||
}
|
||||
// se ero in CAM, non esco <---
|
||||
// copio l'oggetto nel file
|
||||
bool bOk = pGeomDB->Save( nId, sFilePath, nFlag) ;
|
||||
bool bOk = pGeomDB->Save( vId, sFilePath, nFlag) ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSaveObjToFile(" + ToString( nId) + ",'" +
|
||||
StringToLuaString( sFilePath) + "'," +
|
||||
NgeTypeToString( nFlag) + ")" +
|
||||
string sLua = "EgtSaveObjToFile({" + ToString( vId) + "},'" +
|
||||
StringToLuaString( sFilePath) + "'," +
|
||||
NgeTypeToString( nFlag) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
@@ -487,7 +540,7 @@ ExeSaveObjToFile( int nId, const string& sFilePath, int nFlag)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSaveMachGroupToFile( int nMGroupId, const string& sFilePath, int nFlag)
|
||||
ExeSaveMachGroupToFile( int nMGroupId, const INTVECTOR& vPlusId, const string& sFilePath, int nFlag)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
@@ -502,11 +555,21 @@ ExeSaveMachGroupToFile( int nMGroupId, const string& sFilePath, int nFlag)
|
||||
// se ero in CAM, esco dopo averne salvato lo stato
|
||||
CamStatus CurrCamStatus ;
|
||||
ExeResetCurrMachGroup() ;
|
||||
// verifico che gli oggetti Plus non siano gruppi di lavoro o una loro parte
|
||||
bool bOk = true ;
|
||||
for ( int nPlusId : vPlusId) {
|
||||
int nMGrpPlusId ;
|
||||
if ( IsMachGroupOrWithin( nPlusId, pGeomDB, pMachMgr, nMGrpPlusId)) {
|
||||
bOk = false ;
|
||||
break ;
|
||||
}
|
||||
}
|
||||
// recupero eventuali pezzi e foto del gruppo di lavoro
|
||||
INTVECTOR vId ;
|
||||
int nPhotoId = GDB_ID_NULL ;
|
||||
string sPhotoOriPath = "" ;
|
||||
if ( pMachMgr->SetCurrMachGroup( nMGroupId)) {
|
||||
bOk = bOk && pMachMgr->SetCurrMachGroup( nMGroupId) ;
|
||||
if ( bOk) {
|
||||
// aggiungo gruppo di lavoro
|
||||
vId.emplace_back( nMGroupId) ;
|
||||
// aggiungo pezzi
|
||||
@@ -540,8 +603,11 @@ ExeSaveMachGroupToFile( int nMGroupId, const string& sFilePath, int nFlag)
|
||||
// disattivo gruppo di lavoro
|
||||
pMachMgr->ResetCurrMachGroup() ;
|
||||
}
|
||||
// aggiungo gli oggetti plus
|
||||
if ( bOk)
|
||||
vId.insert( vId.end(), vPlusId.begin(), vPlusId.end()) ;
|
||||
// salvo gli oggetti appena identificati
|
||||
bool bOk = pGeomDB->Save( vId, sFilePath, nFlag) ;
|
||||
bOk = bOk && pGeomDB->Save( vId, sFilePath, nFlag) ;
|
||||
// eventuale ripristino dati fotografia
|
||||
if ( nPhotoId != GDB_ID_NULL)
|
||||
ExeChangePhotoPath( nPhotoId, sPhotoOriPath) ;
|
||||
@@ -554,7 +620,8 @@ ExeSaveMachGroupToFile( int nMGroupId, const string& sFilePath, int nFlag)
|
||||
SetCmdLog( bPrevCmdLog) ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSaveMachGroupToFile(" + ToString( nMGroupId) + ",'" +
|
||||
string sLua = "EgtSaveMachGroupToFile(" + ToString( nMGroupId) + ",{" +
|
||||
ToString( vPlusId) + "},'" +
|
||||
StringToLuaString( sFilePath) + "'," +
|
||||
NgeTypeToString( nFlag) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
|
||||
+5
-3
@@ -262,11 +262,13 @@ ExeLuaExecLine( const string& sLine)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeLuaExecFile( const string& sFilePath)
|
||||
ExeLuaExecFile( const string& sFilePath, bool LogInfo)
|
||||
{
|
||||
// emetto info
|
||||
string sInfo = "Exec File = " + sFilePath ;
|
||||
LOG_INFO( GetLogger(), sInfo.c_str())
|
||||
if ( LogInfo) {
|
||||
string sInfo = "Exec File = " + sFilePath ;
|
||||
LOG_INFO( GetLogger(), sInfo.c_str())
|
||||
}
|
||||
// disabilito il log dei comandi
|
||||
CmdLogOff cmdLogOff ;
|
||||
// esecuzione script
|
||||
|
||||
+349
-44
@@ -21,10 +21,13 @@
|
||||
#include "/EgtDev/Include/EXeExecutor.h"
|
||||
#include "/EgtDev/Include/EXeConst.h"
|
||||
#include "/EgtDev/Include/EGkStringUtils3d.h"
|
||||
#include "/EgtDev/Include/EMkToolConst.h"
|
||||
#include "/EgtDev/Include/EMkOperationConst.h"
|
||||
#include "/EgtDev/Include/EMkSimuGenConst.h"
|
||||
#include "/EgtDev/Include/EGnFileUtils.h"
|
||||
#include "/EgtDev/Include/EGnEgtUUID.h"
|
||||
#include "/EgtDev/Include/EgtStringConverter.h"
|
||||
#include "/EgtDev/Include/EgtIniFile.h"
|
||||
#include "/EgtDev/Include/EgtPointerOwner.h"
|
||||
|
||||
using namespace std ;
|
||||
@@ -245,6 +248,26 @@ ExeAddMachGroup( const string& sName, const string& sMachineName)
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
int
|
||||
ExeCopyMachGroup( const string& sSouName, const string& sName)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, GDB_ID_NULL)
|
||||
// copio la macchinata (gruppo di lavorazione)
|
||||
int nId = pMachMgr->CopyMachGroup( sSouName, sName) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtCopyMachGroup('" + sSouName + "','" +
|
||||
sName + "')" +
|
||||
" -- Id=" + ToString( nId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return nId ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeRemoveMachGroup( int nMGroupId)
|
||||
@@ -264,6 +287,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)
|
||||
@@ -291,8 +334,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) ;
|
||||
}
|
||||
|
||||
@@ -353,16 +396,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 ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -451,7 +494,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) ;
|
||||
}
|
||||
@@ -516,12 +559,12 @@ ExeModifyRawPart( int nRawId, Point3d ptOrig, double dLength, double dWidth, dou
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeModifyRawPart( int nRawId, int nCrvId, double dOverMat, double dZmin, double dHeight, Color cCol)
|
||||
ExeModifyRawPart( int nRawId, int nCrvId, double dOverMat, double dHeight, Color cCol)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// modifico grezzo indicato nella macchinata corrente
|
||||
bool bOk = pMachMgr->ModifyRawPart( nRawId, nCrvId, dOverMat, dZmin, dHeight, cCol) ;
|
||||
bool bOk = pMachMgr->ModifyRawPart( nRawId, nCrvId, dOverMat, dHeight, cCol) ;
|
||||
ExeSetModified() ;
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
@@ -955,7 +998,7 @@ ExeGetTableAreaOffset( int nInd, BBox3d& b3AreaOffs)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// recupero l'estensione dell'area utile con offset della tavola corrente della macchinata corrente
|
||||
// recupero l'estensione dell'area utile con offset della fase corrente della tavola corrente della macchinata corrente
|
||||
return pMachMgr->GetTableAreaOffset( nInd, b3AreaOffs) ;
|
||||
}
|
||||
|
||||
@@ -979,6 +1022,64 @@ ExeShowOnlyTable( bool bVal)
|
||||
return pMachMgr->ShowOnlyTable( bVal) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeMoveDispAxis( const string& sName, double dPos)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, GDB_ID_NULL)
|
||||
// eseguo e registro il movimento dell'asse
|
||||
bool bOk = pMachMgr->MoveDispAxis( sName, dPos) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtMoveDispAxis('" + StringToLuaString( sName) + "'," +
|
||||
ToString( dPos) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeRemoveDispAxis( const string& sName)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, GDB_ID_NULL)
|
||||
// eseguo e registro la rimozione del movimento dell'asse
|
||||
bool bOk = pMachMgr->RemoveDispAxis( sName) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtRemoveDispAxis('" + StringToLuaString( sName) + "')" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeKeepAllDispAxes( int nSouPhase)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// confermo i movimenti degli assi di disposizione nella fase corrente della macchinata corrente
|
||||
bool bOk = pMachMgr->KeepAllDispAxes( nSouPhase) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtKeepAllDispAxes(" + ToString( nSouPhase) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
int
|
||||
ExeAddFixture( const string& sName, const Point3d& ptPos, double dAngRotDeg, double dMov)
|
||||
@@ -990,10 +1091,10 @@ ExeAddFixture( const string& sName, const Point3d& ptPos, double dAngRotDeg, dou
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtAddFixture(" + sName + ",{" +
|
||||
ToString( ptPos) + "}," +
|
||||
ToString( dAngRotDeg) + "," +
|
||||
ToString( dMov) + ")" +
|
||||
string sLua = "EgtAddFixture('" + StringToLuaString( sName) + "',{" +
|
||||
ToString( ptPos) + "}," +
|
||||
ToString( dAngRotDeg) + "," +
|
||||
ToString( dMov) + ")" +
|
||||
" -- Id=" + ToString( nId) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
@@ -1096,13 +1197,33 @@ ExeRotateFixture( int nFxtId, double dDeltaAngDeg)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// ruoto il dispositivo di presa dell'angolo indicato
|
||||
// vario la rotazione del dispositivo di presa dell'angolo indicato
|
||||
bool bOk = pMachMgr->RotateFixture( nFxtId, dDeltaAngDeg) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtRotateFixture(" + ToString( nFxtId) + ",{" +
|
||||
ToString( dDeltaAngDeg) + "})" +
|
||||
string sLua = "EgtRotateFixture(" + ToString( nFxtId) + "," +
|
||||
ToString( dDeltaAngDeg) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetFixtureLink( int nFxtId, const string& sTaLink)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// imposto il collegamento all'asse di tavola indicato
|
||||
bool bOk = pMachMgr->SetFixtureLink( nFxtId, sTaLink) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSetFixtureLink(" + ToString( nFxtId) + ",'" +
|
||||
StringToLuaString( sTaLink) + "')" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
@@ -1116,7 +1237,7 @@ ExeMoveFixtureMobile( int nFxtId, double dDeltaMove)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// ruoto il dispositivo di presa dell'angolo indicato
|
||||
// varia il movimento della parte mobile della morsa della quantità indicata
|
||||
bool bOk = pMachMgr->MoveFixtureMobile( nFxtId, dDeltaMove) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
@@ -1130,6 +1251,26 @@ ExeMoveFixtureMobile( int nFxtId, double dDeltaMove)
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetFixtureMobile( int nFxtId, double dMove)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// imposta il movimento della parte mobile della morsa alla quantità indicata
|
||||
bool bOk = pMachMgr->SetFixtureMobile( nFxtId, dMove) ;
|
||||
ExeSetModified() ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSetFixtureMobile(" + ToString( nFxtId) + "," +
|
||||
ToString( dMove) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// DB utensili
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -1432,6 +1573,21 @@ ExeTdbGetCurrToolThLength( double& dThLen)
|
||||
return pMachMgr->TdbGetCurrToolThLength( dThLen) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeTdbCurrToolIsStandardDraw( bool& bStandard)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// recupero il nome del disegno dell'utensile
|
||||
string sDraw ;
|
||||
if ( ! pMachMgr->TdbGetCurrToolParam( TPA_DRAW, sDraw))
|
||||
return false ;
|
||||
// verifico il tipo
|
||||
bStandard = IsUUID( GetFileTitleEgt( sDraw)) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
int
|
||||
ExeTdbCurrToolDraw( int nGenCtx, int nToolCtx)
|
||||
@@ -1565,6 +1721,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)
|
||||
@@ -1940,42 +2106,42 @@ ExeGetPrevOperation( int nId)
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
int
|
||||
ExeGetFirstActiveOperation( void)
|
||||
ExeGetFirstActiveOperation( bool bNeedMachNotEmpty)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, GDB_ID_NULL)
|
||||
// recupero la prima operazione attiva della macchinata corrente
|
||||
return pMachMgr->GetFirstActiveOperation() ;
|
||||
return pMachMgr->GetFirstActiveOperation( bNeedMachNotEmpty) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
int
|
||||
ExeGetNextActiveOperation( int nId)
|
||||
ExeGetNextActiveOperation( int nId, bool bNeedMachNotEmpty)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, GDB_ID_NULL)
|
||||
// recupero la successiva operazione attiva della macchinata corrente
|
||||
return pMachMgr->GetNextActiveOperation( nId) ;
|
||||
return pMachMgr->GetNextActiveOperation( nId, bNeedMachNotEmpty) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
int
|
||||
ExeGetLastActiveOperation( void)
|
||||
ExeGetLastActiveOperation( bool bNeedMachNotEmpty)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// recupero l'ultima operazione attiva della macchinata corrente
|
||||
return pMachMgr->GetLastActiveOperation() ;
|
||||
return pMachMgr->GetLastActiveOperation( bNeedMachNotEmpty) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
int
|
||||
ExeGetPrevActiveOperation( int nId)
|
||||
ExeGetPrevActiveOperation( int nId, bool bNeedMachNotEmpty)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, GDB_ID_NULL)
|
||||
// recupero la precedente operazione attiva della macchinata corrente
|
||||
return pMachMgr->GetPrevActiveOperation( nId) ;
|
||||
return pMachMgr->GetPrevActiveOperation( nId, bNeedMachNotEmpty) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -2040,12 +2206,12 @@ ExeGetOperationId( const string& sName)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeIsOperationEmpty( int nId)
|
||||
ExeIsOperationEmpty( int nId, int nEmptyType)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// recupero lo stato dell'operazione indicata della macchinata corrente
|
||||
return pMachMgr->IsOperationEmpty( nId) ;
|
||||
return pMachMgr->IsOperationEmpty( nId, nEmptyType) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -2301,6 +2467,16 @@ ExeSpecialUpdateDisposition( int nId)
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetDispositionToolData( int nId, string& sName, string& sHead, int& nExit, string& sTcPos)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// aggiorno assi macchina e collegamento con precedente della disposizione indicata
|
||||
return pMachMgr->GetDispositionToolData( nId, sName, sHead, nExit, sTcPos) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Lavorazioni
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -2584,12 +2760,22 @@ ExeRemovePreviewMachiningTool( void)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
int
|
||||
ExePreviewMachiningTool( int nEntId, int nFlag)
|
||||
ExeGetPreviewMachiningToolStepCount( void)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
VERIFY_MACHMGR( pMachMgr, -1)
|
||||
// restituisce il numero di passi per anteprima utensile presenti nella lavorazione
|
||||
return pMachMgr->GetPreviewMachiningToolStepCount() ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
int
|
||||
ExePreviewMachiningTool( int nEntId, int nStep)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, GDB_ID_NULL)
|
||||
// visualizzazione anteprima utensile su lavorazione
|
||||
return pMachMgr->PreviewMachiningTool( nEntId, nFlag) ;
|
||||
return pMachMgr->PreviewMachiningTool( nEntId, nStep) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -2644,12 +2830,22 @@ ExeGetMachiningGeometry( SELVECTOR& vIds)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeIsMachiningEmpty( void)
|
||||
ExeGetMachiningSkippedGeometry( SELVECTOR& vIds)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// recupero la geometria non lavorata della lavorazione corrente
|
||||
return pMachMgr->GetMachiningSkippedGeometry( vIds) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeIsMachiningEmpty( int nEmptyType)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// restituisco lo stato della lavorazione corrente
|
||||
return pMachMgr->IsMachiningEmpty() ;
|
||||
return pMachMgr->IsMachiningEmpty( nEmptyType) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -2700,7 +2896,7 @@ ExeApplyAllMachiningsEx( bool bRecalc, bool bStopOnFirstErr, string& sErrList, s
|
||||
while ( nOperId != GDB_ID_NULL) {
|
||||
if ( pMachMgr->GetOperationType( nOperId) == OPER_DISP) {
|
||||
pMachMgr->SetCurrPhase( pMachMgr->GetOperationPhase( nOperId)) ;
|
||||
if ( ! pMachMgr->DispositionSpecialApply( nOperId, bRecalc)) {
|
||||
if ( ! pMachMgr->DispositionSpecialApply( nOperId, true)) {
|
||||
bOk = false ;
|
||||
if ( pMachMgr->GetLastErrorId() != 0)
|
||||
sErrList += pMachMgr->GetOperationName( nOperId) + " -> " + pMachMgr->GetLastErrorString() + "\r\n" ;
|
||||
@@ -2846,12 +3042,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) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -2864,6 +3060,36 @@ ExeGetClEntIndex( int nEntId, int& nIndex)
|
||||
return pMachMgr->GetClEntIndex( nEntId, nIndex) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetClEntAxesStatus( int nEntId, int& nStatus)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// recupero lo stato del movimento assi
|
||||
return pMachMgr->GetClEntAxesStatus( nEntId, nStatus) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetClEntAxesMask( int nEntId, int& nMask)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// recupero la mascheratura del movimento assi (valida solo in rapido)
|
||||
return pMachMgr->GetClEntAxesMask( nEntId, nMask) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetClEntAxesVal( int nEntId, DBLVECTOR& vAxes)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// recupero il valore degli assi
|
||||
return pMachMgr->GetClEntAxesVal( nEntId, vAxes) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Simulazione
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -2926,6 +3152,16 @@ ExeSimSetUiStatus( int nUiStatus)
|
||||
return pMachMgr->SimSetUiStatus( nUiStatus) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSimEnableToolTipTrace( bool bEnable)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// imposto abilitazione disegno traccia della punta utensile
|
||||
return pMachMgr->SimEnableToolTipTrace( bEnable) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSimGetAxisInfoPos( int nI, string& sName, string& sToken, bool& bLinear, double& dVal)
|
||||
@@ -2996,8 +3232,13 @@ ExeGenerate( const string& sCncFile, const string& sInfo)
|
||||
ReplaceString( sDir, "/", "\\") ;
|
||||
// recupero il nome
|
||||
string sNcName ;
|
||||
if ( ! ExeGetInfo( ExeGetCurrMachGroup(), GDL_NC_NAME, sNcName))
|
||||
sNcName = GetFileTitleEgt( sProjPath) + ".cnc" ;
|
||||
if ( ! ExeGetInfo( ExeGetCurrMachGroup(), GDL_NC_NAME, sNcName)) {
|
||||
string sCurrMachDir ; pMachMgr->GetCurrMachineDir( sCurrMachDir) ;
|
||||
string sCurrMachName ; pMachMgr->GetCurrMachineName( sCurrMachName) ;
|
||||
string sCurrMachIni = sCurrMachDir + "\\" + sCurrMachName + ".ini" ;
|
||||
string sExt = GetPrivateProfileStringUtf8( "PartProgram", "Extension", ".cnc", sCurrMachIni.c_str()) ;
|
||||
sNcName = ChangeFileExtension( GetFileTitleEgt( sProjPath), sExt) ;
|
||||
}
|
||||
// creo la path completa
|
||||
sMyCncFile = sDir + "\\" + sNcName ;
|
||||
}
|
||||
@@ -3054,7 +3295,9 @@ ExeSimulate( int& nErr, string& sError)
|
||||
nErr = SHE_NONE ;
|
||||
sError = "" ;
|
||||
// disabilito UI
|
||||
ExeSetEnableUI( false) ;
|
||||
bool bPrevEnableUI = ExeGetEnableUI() ;
|
||||
if ( bPrevEnableUI)
|
||||
ExeSetEnableUI( false) ;
|
||||
// avvio simulazione
|
||||
if ( ! pMachMgr->SimInit() || ! pMachMgr->SimStart( true) || ! pMachMgr->SimStart( false)) {
|
||||
// inutile continuare con simulazione se avvio non riuscito
|
||||
@@ -3116,7 +3359,8 @@ ExeSimulate( int& nErr, string& sError)
|
||||
// terminazione simulazione
|
||||
pMachMgr->SimExit() ;
|
||||
// riabilito UI
|
||||
ExeSetEnableUI( true) ;
|
||||
if ( bPrevEnableUI)
|
||||
ExeSetEnableUI( true) ;
|
||||
return ( nErr == 0) ;
|
||||
}
|
||||
|
||||
@@ -3152,6 +3396,16 @@ ExeSetRotAxisBlock( const string& sAxis, double dVal)
|
||||
return pMachMgr->SetRotAxisBlock( sAxis, dVal) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetCalcTable( string& sTable)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// restituisco la tavola corrente per il calcolo sulla macchina della macchinata corrente
|
||||
return pMachMgr->GetCalcTable( sTable) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetCalcTool( string& sTool, string& sHead, int& nExit)
|
||||
@@ -3162,6 +3416,16 @@ ExeGetCalcTool( string& sTool, string& sHead, int& nExit)
|
||||
return ( pMachMgr->GetCalcTool( sTool) && pMachMgr->GetCalcHead( sHead) && pMachMgr->GetCalcExit( nExit)) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetAllCurrAxesNames( STRVECTOR& vAxName)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// recupero gli assi correnti derivanti dalla scelta di tavola e utensile
|
||||
return pMachMgr->GetAllCurrAxesNames( vAxName) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetRotAxisBlocked( int nInd, string& sAxis, double& dVal)
|
||||
@@ -3197,23 +3461,34 @@ ExeGetCalcAngles( const Vector3d& vtDirT, const Vector3d& vtDirA,
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetCalcPositions( const Point3d& ptP, double dAngA, double dAngB,
|
||||
int& nStat, double& dX, double& dY, double& dZ)
|
||||
double& dX, double& dY, double& dZ)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// calcolo gli assi lineari macchina dalla posizione e dagli assi rotanti
|
||||
return pMachMgr->GetCalcPositions( ptP, dAngA, dAngB, nStat, dX, dY, dZ) ;
|
||||
return pMachMgr->GetCalcPositions( ptP, dAngA, dAngB, dX, dY, dZ) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetCalcPositions( const Point3d& ptP, const DBLVECTOR& vAng,
|
||||
int& nStat, double& dX, double& dY, double& dZ)
|
||||
double& dX, double& dY, double& dZ)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// calcolo gli assi lineari macchina dalla posizione e dagli assi rotanti
|
||||
return pMachMgr->GetCalcPositions( ptP, vAng, nStat, dX, dY, dZ) ;
|
||||
return pMachMgr->GetCalcPositions( ptP, vAng, dX, dY, dZ) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetRobotAngles( const Point3d& ptP, const Vector3d& vtDirT, const Vector3d& vtDirA,
|
||||
DBLVECTOR& vAng1, DBLVECTOR& vAng2)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// calcolo gli angoli macchina dalle direzioni fresa e ausiliaria passate
|
||||
return pMachMgr->GetRobotAngles( ptP, vtDirT, vtDirA, vAng1, vAng2) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -3331,6 +3606,16 @@ ExeGetHeadExitCount( const string& sHead)
|
||||
return pMachMgr->GetHeadExitCount( sHead) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
int
|
||||
ExeGetExitId( const string& sHead, int nExit)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, GDB_ID_NULL)
|
||||
// restituisco identificativo dell'uscita della testa indicata nella macchina della macchinata corrente
|
||||
return pMachMgr->GetExitId( sHead, nExit) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
int
|
||||
ExeGetTcPosId( const string& sTcPos)
|
||||
@@ -3361,6 +3646,16 @@ ExeGetAxisType( const string& sAxis, bool& bLinear)
|
||||
return pMachMgr->GetAxisType( sAxis, bLinear) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetAxisDir( const string& sAxis, Vector3d& vtDir)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// recupero la direzione dell'asse
|
||||
return pMachMgr->GetAxisDir( sAxis, vtDir) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetAxisInvert( const string& sAxis, bool& bInvert)
|
||||
@@ -3391,6 +3686,16 @@ ExeGetAllTablesNames( STRVECTOR& vNames)
|
||||
return pMachMgr->GetAllTablesNames( vNames) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetAllAxesNames( STRVECTOR& vNames)
|
||||
{
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
VERIFY_MACHMGR( pMachMgr, false)
|
||||
// recupero l'elenco degli assi
|
||||
return pMachMgr->GetAllAxesNames( vNames) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetAllHeadsNames( STRVECTOR& vNames)
|
||||
|
||||
+158
@@ -0,0 +1,158 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2025-2025
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EXE_MachOpt.cpp Data : 02.04.2025 Versione : 2.7c1
|
||||
// Contenuto : Funzioni per Ottimizzare i tempi tra le lavorazioni.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 02.04.25 RE Creazione modulo.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
//--------------------------- Include ----------------------------------------
|
||||
#include "stdafx.h"
|
||||
#include "EXE.h"
|
||||
#include "EXE_Macro.h"
|
||||
#include "EXE_Const.h"
|
||||
#include "DllNesting.h"
|
||||
#include "/EgtDev/Include/EgtPointerOwner.h"
|
||||
#include "/EgtDev/Include/ENkMachOptimization.h"
|
||||
|
||||
using namespace std ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Static LuaMgr per EgtExecutor
|
||||
//----------------------------------------------------------------------------
|
||||
static PtrOwner<IMachOptimization> s_pMO ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeOptMachInit( void)
|
||||
{
|
||||
// Creo l'oggetto per il calcolo del percorso minimo (ShortestPath)
|
||||
s_pMO.Set( CreateMachOptimization()) ;
|
||||
return ( ! IsNull( s_pMO)) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeOptMachTerminate( void)
|
||||
{
|
||||
// Distruggo l'oggetto
|
||||
s_pMO.Reset() ;
|
||||
return ( IsNull( s_pMO)) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeOptMachAddTool( int nId, double dTCX, double dTCY, double dTCZ, double dTCA,
|
||||
double dTCB, double dTCC, bool bX, bool bY, bool bZ, bool bA,
|
||||
bool bB, bool bC, double dTLoad, double dTUnL)
|
||||
{
|
||||
// Se oggetto non instanziato, errore
|
||||
if ( IsNull( s_pMO))
|
||||
return false ;
|
||||
// Inserisco il Record
|
||||
return ( s_pMO->InsertTool( nId, dTCX, dTCY, dTCZ, dTCA, dTCB, dTCC, bX, bY, bZ, bA,
|
||||
bB, bC, dTLoad, dTUnL)) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeOptMachAddMachining( int nId, int nToolId, int nGroup,
|
||||
double dX_Start, double dY_Start, double dZ_Start,
|
||||
double dA_Start, double dB_Start, double dC_Start,
|
||||
double dX_End, double dY_End, double dZ_End,
|
||||
double dA_End, double dB_End, double dC_End)
|
||||
{
|
||||
// Se oggetto non instanziato, errore
|
||||
if ( IsNull( s_pMO))
|
||||
return false ;
|
||||
// Inserisco il Record
|
||||
return ( s_pMO->InsertMachining( nId, nToolId, nGroup,
|
||||
dX_Start, dY_Start, dZ_Start,
|
||||
dA_Start, dB_Start, dC_Start,
|
||||
dX_End, dY_End, dZ_End,
|
||||
dA_End, dB_End, dC_End)) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeOptMachSetFirstMachining( int nId)
|
||||
{
|
||||
// Se oggetto non instanziato, errore
|
||||
if ( IsNull( s_pMO))
|
||||
return false ;
|
||||
// Imposto la prima lavorazione
|
||||
return ( s_pMO->SetFirstMachining( nId)) ;
|
||||
}
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeOptMachSetLastMachining( int nId)
|
||||
{
|
||||
// Se oggetto non instanziato, errore
|
||||
if ( IsNull( s_pMO))
|
||||
return false ;
|
||||
// Imposto l'ultima lavorazione
|
||||
return ( s_pMO->SetLastMachining( nId)) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeOptMachSetFeeds( double dFeedL, double dFeedA)
|
||||
{
|
||||
// Se oggetto non instanziato, errore
|
||||
if ( IsNull( s_pMO))
|
||||
return false ;
|
||||
// Imposto l'ultima lavorazione
|
||||
return ( s_pMO->SetFeeds( dFeedL, dFeedA)) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeOptMachAddDependence( int nIdPrec, int nIdSucc)
|
||||
{
|
||||
// Se oggetto non instanziato, errore
|
||||
if ( IsNull( s_pMO))
|
||||
return false ;
|
||||
// Inserisco la Dipendenza obbligatoria
|
||||
return ( s_pMO->InsertDependence( nIdPrec, nIdSucc)) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeOptMachAddSuggestedDependence( int nIdPrec, int nIdSucc)
|
||||
{
|
||||
// Se oggetto non instanziato, errore
|
||||
if ( IsNull( s_pMO))
|
||||
return false ;
|
||||
// Inserisco la Dipendenza obbligatoria
|
||||
return ( s_pMO->InsertSuggestedDependences( nIdPrec, nIdSucc)) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeOptMachSetAllGroupDependencesAsMandatory( bool bAllMandatory)
|
||||
{
|
||||
// Se oggetto non instanziato, errore
|
||||
if ( IsNull( s_pMO))
|
||||
return false ;
|
||||
// Imposto il Flag
|
||||
return ( s_pMO->SetAllGroupsAsMandatory( bAllMandatory)) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeOptMachGetResult( INTVECTOR& vIds)
|
||||
{
|
||||
vIds.clear() ;
|
||||
// Se oggetto non instanziato, errore
|
||||
if ( IsNull( s_pMO))
|
||||
return false ;
|
||||
// Recupero i risultati
|
||||
return ( s_pMO->GetResult( vIds)) ;
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2023-2023
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EXE_Mutex.cpp Data : 05.02.23 Versione : 2.5a6
|
||||
// Contenuto : Funzioni per gestione mutex.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 05.02.23 DS Creazione modulo.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
//--------------------------- Include ----------------------------------------
|
||||
#include "stdafx.h"
|
||||
#include "EXE.h"
|
||||
#include "/EgtDev/Include/EgtStringConverter.h"
|
||||
|
||||
using namespace std ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static HANDLE s_hMutex = NULL ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeCreateMutex( const string& sMutexName)
|
||||
{
|
||||
if ( s_hMutex != NULL)
|
||||
return false ;
|
||||
|
||||
HANDLE hMutex = CreateMutex( NULL, TRUE, stringtoW( sMutexName)) ;
|
||||
|
||||
if ( hMutex == NULL)
|
||||
return false ;
|
||||
else if ( GetLastError() == ERROR_ALREADY_EXISTS) {
|
||||
ReleaseMutex( hMutex) ;
|
||||
CloseHandle( hMutex) ;
|
||||
return false ;
|
||||
}
|
||||
else {
|
||||
s_hMutex = hMutex ;
|
||||
return true ;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeReleaseMutex( void)
|
||||
{
|
||||
if ( s_hMutex == NULL)
|
||||
return true ;
|
||||
|
||||
bool bOk = ( ReleaseMutex( s_hMutex) != FALSE) ;
|
||||
CloseHandle( s_hMutex) ;
|
||||
s_hMutex = NULL ;
|
||||
return bOk ;
|
||||
}
|
||||
+18
-1
@@ -19,7 +19,6 @@
|
||||
#include "DllNesting.h"
|
||||
#include "/EgtDev/Include/EGkCurve.h"
|
||||
#include "/EgtDev/Include/EGkCurveComposite.h"
|
||||
#include "/EgtDev/Include/EGkOffsetCurve.h"
|
||||
#include "/EgtDev/Include/EGkSurfFlatRegion.h"
|
||||
#include "/EgtDev/Include/ENsAutoNester.h"
|
||||
#include "/EgtDev/Include/EGnStringUtils.h"
|
||||
@@ -258,6 +257,15 @@ ExeAutoNestSetInterpartGap( double dGap)
|
||||
return s_pAutoNester->SetInterpartGap( dGap) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeAutoNestSetShearGap( double dShearGap)
|
||||
{
|
||||
if ( IsNull( s_pAutoNester))
|
||||
return false ;
|
||||
return s_pAutoNester->SetShearGap( dShearGap) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeAutoNestSetReportFile( const string& sReportFile)
|
||||
@@ -339,3 +347,12 @@ ExeAutoNestGetOneResult( int nInd, int& nType, int& nId, int& nFlag, double& dX,
|
||||
dAngRot = s_vANestInfo[nInd].dAngRot ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeAutoNestCalcShearSequence( int nNesting, PNTVECTOR& vPtStart, PNTVECTOR& vPtEnd)
|
||||
{
|
||||
if ( IsNull( s_pAutoNester))
|
||||
return false ;
|
||||
return s_pAutoNester->CalcShearSequence( nNesting, vPtStart, vPtEnd) ;
|
||||
}
|
||||
|
||||
@@ -89,6 +89,10 @@ ApproxCurveIfNeeded( IGdbIterator* pEnt, double dToler)
|
||||
PolyArc PA ;
|
||||
double dTol = max( dToler, LIN_TOL_FINE) ;
|
||||
bool bOk = pCrv->ApproxWithArcsEx( dTol, ANG_TOL_STD_DEG, LIN_FEA_STD, PA) && pCC->FromPolyArc( PA) ;
|
||||
// eliminazione di small Z
|
||||
bOk = bOk && pCC->RemoveSmallDefects( 0.5 * dTol, ANG_TOL_STD_DEG) ;
|
||||
// merge di archi identici di biarchi
|
||||
bOk = bOk && pCC->MergeCurves( 0.5 * dTol, ANG_TOL_STD_DEG) ;
|
||||
bOk = bOk && pEnt->GetGDB()->ReplaceGeoObj( pEnt->GetId(), Release( pCC)) ;
|
||||
return bOk ;
|
||||
}
|
||||
@@ -1613,6 +1617,50 @@ ExeCalcFlatPartUpRegion( int nPartId, bool bCalc)
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static bool
|
||||
IgnoreOutlineFillet( IGeomDB* pGeomDB, int nCrvId, int nLayId)
|
||||
{
|
||||
// verifico se la curva nCrvId è un raccordo che deve essere ignorato, ovvero se si tratta di un arco non inclinato, in tangenza
|
||||
// e consecutivo ad almeno un lato inclinato
|
||||
|
||||
// verifico se arco
|
||||
if ( pGeomDB->GetGeoType( nCrvId) == CRV_ARC) {
|
||||
// verifico se non inclinato
|
||||
double dSideAng = 0, dSideAng2 = 0 ;
|
||||
pGeomDB->GetInfo( nCrvId, NST_KEY_SIDEANG, dSideAng) ;
|
||||
pGeomDB->GetInfo( nCrvId, NST_KEY_SIDEANG2, dSideAng2) ;
|
||||
if ( abs( dSideAng) < EPS_ANG_SMALL && abs( dSideAng2) < EPS_ANG_SMALL) {
|
||||
// verifico se in tangenza con curve consecutive
|
||||
double dPrevAng = ANG_RIGHT, dNextAng = ANG_RIGHT ;
|
||||
pGeomDB->GetInfo( nCrvId, MCH_KEY_PREVANG, dPrevAng) ;
|
||||
pGeomDB->GetInfo( nCrvId, MCH_KEY_NEXTANG, dNextAng) ;
|
||||
if ( abs( dPrevAng) < EPS_ANG_SMALL && abs( dNextAng) < EPS_ANG_SMALL) {
|
||||
// verifico se è inclinata almeno una tra la curva precedente e quella successiva
|
||||
int nPrevId = pGeomDB->GetPrev( nCrvId) ;
|
||||
if ( nPrevId == GDB_ID_NULL)
|
||||
nPrevId = pGeomDB->GetLastInGroup( nLayId) ;
|
||||
if ( nPrevId == GDB_ID_NULL)
|
||||
return false ;
|
||||
double dSideAng, dSideAng2 ;
|
||||
if ( ( pGeomDB->GetInfo( nPrevId, NST_KEY_SIDEANG, dSideAng) && abs( dSideAng) > EPS_ANG_SMALL) ||
|
||||
( pGeomDB->GetInfo( nPrevId, NST_KEY_SIDEANG2, dSideAng2) && abs( dSideAng2) > EPS_ANG_SMALL))
|
||||
return true ;
|
||||
|
||||
int nNextId = pGeomDB->GetNext( nCrvId) ;
|
||||
if ( nNextId == GDB_ID_NULL)
|
||||
nNextId = pGeomDB->GetFirstInGroup( nLayId) ;
|
||||
if ( nNextId == GDB_ID_NULL)
|
||||
return false ;
|
||||
if ( ( pGeomDB->GetInfo( nNextId, NST_KEY_SIDEANG, dSideAng) && abs( dSideAng) > EPS_ANG_SMALL) ||
|
||||
( pGeomDB->GetInfo( nNextId, NST_KEY_SIDEANG2, dSideAng2) && abs( dSideAng2) > EPS_ANG_SMALL))
|
||||
return true ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static bool
|
||||
AdjustLayerForSideAngle( IGeomDB* pGeomDB, int nLayOrigId, const string& sLayOrig, int nLayReg, double dH)
|
||||
@@ -1683,7 +1731,8 @@ AdjustLayerForSideAngle( IGeomDB* pGeomDB, int nLayOrigId, const string& sLayOri
|
||||
ICurve* pCrv = GetCurve( pGeomDB->GetGeoObj( nNewId)) ;
|
||||
if ( pCrv == nullptr)
|
||||
return false ;
|
||||
pCrv->SimpleOffset( dCalcOffset) ;
|
||||
if ( ! pCrv->SimpleOffset( dCalcOffset))
|
||||
pGeomDB->Erase( nNewId) ;
|
||||
}
|
||||
else if ( pGeomDB->GetInfo( nCrvId, NST_KEY_SIDEANG2, dSideAng2) && abs( dSideAng2) > EPS_ANG_SMALL) {
|
||||
double dOffset2 = 0 ;
|
||||
@@ -1696,8 +1745,12 @@ AdjustLayerForSideAngle( IGeomDB* pGeomDB, int nLayOrigId, const string& sLayOri
|
||||
ICurve* pCrv = GetCurve( pGeomDB->GetGeoObj( nNewId)) ;
|
||||
if ( pCrv == nullptr)
|
||||
return false ;
|
||||
pCrv->SimpleOffset( dCalcOffset) ;
|
||||
if ( ! pCrv->SimpleOffset( dCalcOffset))
|
||||
pGeomDB->Erase( nNewId) ;
|
||||
}
|
||||
// verifico se raccordo da ignorare per poter calcolare la regione
|
||||
else if ( IgnoreOutlineFillet( pGeomDB, nCrvId, nLayId))
|
||||
pGeomDB->Erase( nNewId) ;
|
||||
}
|
||||
// aggiusto tra loro le curve offsettate (allungandole e/o accorciandole)
|
||||
if ( ! AdjustLayerCurves( pGeomDB, nTmpLayId))
|
||||
@@ -1720,7 +1773,7 @@ AdjustLayerForSideAngle( IGeomDB* pGeomDB, int nLayOrigId, const string& sLayOri
|
||||
if ( nNewId == GDB_ID_NULL)
|
||||
return false ;
|
||||
// determino ed eseguo offset
|
||||
double dSideAng ;
|
||||
double dSideAng, dSideAng2 ;
|
||||
if ( pGeomDB->GetInfo( nCrvId, NST_KEY_SIDEANG, dSideAng) && abs( dSideAng) > EPS_ANG_SMALL) {
|
||||
double dOffset = 0 ;
|
||||
pGeomDB->GetInfo( nCrvId, NST_KEY_OFFSET, dOffset) ;
|
||||
@@ -1728,8 +1781,22 @@ AdjustLayerForSideAngle( IGeomDB* pGeomDB, int nLayOrigId, const string& sLayOri
|
||||
ICurve* pCrv = GetCurve( pGeomDB->GetGeoObj( nNewId)) ;
|
||||
if ( pCrv == nullptr)
|
||||
return false ;
|
||||
pCrv->SimpleOffset( dCalcOffset) ;
|
||||
if ( ! pCrv->SimpleOffset( dCalcOffset))
|
||||
pGeomDB->Erase( nNewId) ;
|
||||
}
|
||||
else if ( pGeomDB->GetInfo( nCrvId, NST_KEY_SIDEANG2, dSideAng2) && abs( dSideAng2) > EPS_ANG_SMALL) {
|
||||
double dOffset2 = 0 ;
|
||||
pGeomDB->GetInfo( nCrvId, NST_KEY_OFFSET2, dOffset2) ;
|
||||
double dCalcOffset = dOffset2 ;
|
||||
ICurve* pCrv = GetCurve( pGeomDB->GetGeoObj( nNewId)) ;
|
||||
if ( pCrv == nullptr)
|
||||
return false ;
|
||||
if ( ! pCrv->SimpleOffset( dCalcOffset))
|
||||
pGeomDB->Erase( nNewId) ;
|
||||
}
|
||||
// verifico se raccordo da ignorare per poter calcolare la regione
|
||||
else if ( IgnoreOutlineFillet( pGeomDB, nCrvId, nLayId))
|
||||
pGeomDB->Erase( nNewId) ;
|
||||
}
|
||||
// aggiusto tra loro le curve offsettate (allungandole e/o accorciandole)
|
||||
if ( ! AdjustLayerCurves( pGeomDB, nTmpLay2Id))
|
||||
@@ -1769,10 +1836,13 @@ AdjustLayerForSideAngle( IGeomDB* pGeomDB, int nLayOrigId, const string& sLayOri
|
||||
//if ( dStartProD > EPS_SMALL)
|
||||
// pCrv->ExtendStartByLen( dStartProD) ;
|
||||
double dStartProMin = min( dStartProD, dStartProU) ;
|
||||
if ( dStartProMin < - EPS_SMALL)
|
||||
if ( dStartProMin < - EPS_SMALL) {
|
||||
pCrv->TrimStartAtLen( - dStartProMin) ;
|
||||
if ( abs( dStartProD - dStartProU) > EPS_SMALL)
|
||||
pGeomDB->SetInfo( nCrvId, MCH_KEY_START_WHISKEXT, abs( dStartProD - dStartProU)) ;
|
||||
if ( abs( dStartProD - dStartProU) > EPS_SMALL)
|
||||
pGeomDB->SetInfo( nCrvId, MCH_KEY_START_WHISKEXT, abs( dStartProD - dStartProU)) ;
|
||||
}
|
||||
else
|
||||
pGeomDB->SetInfo( nCrvId, MCH_KEY_START_WHISKEXT, max( dStartProD, dStartProU)) ;
|
||||
}
|
||||
else {
|
||||
if ( dStartProD < - EPS_SMALL)
|
||||
@@ -1799,9 +1869,11 @@ AdjustLayerForSideAngle( IGeomDB* pGeomDB, int nLayOrigId, const string& sLayOri
|
||||
double dLen ;
|
||||
pCrv->GetLength( dLen) ;
|
||||
pCrv->TrimEndAtLen( dLen + dEndProMin) ;
|
||||
if ( abs( dEndProD - dEndProU) > EPS_SMALL)
|
||||
pGeomDB->SetInfo( nCrvId, MCH_KEY_END_WHISKEXT, abs( dEndProD - dEndProU)) ;
|
||||
}
|
||||
if ( abs( dEndProD - dEndProU) > EPS_SMALL)
|
||||
pGeomDB->SetInfo( nCrvId, MCH_KEY_END_WHISKEXT, abs( dEndProD - dEndProU)) ;
|
||||
else
|
||||
pGeomDB->SetInfo( nCrvId, MCH_KEY_END_WHISKEXT, max( dEndProD, dEndProU)) ;
|
||||
}
|
||||
else {
|
||||
if ( dEndProD < - EPS_SMALL) {
|
||||
|
||||
@@ -254,7 +254,7 @@ ExeVerifyCutAsSplitting( int nMchId)
|
||||
pMachMgr->MachiningPreview( true) ;
|
||||
// verifico interferenza
|
||||
int nRes ;
|
||||
if ( ExeVerifyMachining( nMchId, nRes) && nRes == FMI_NONE)
|
||||
if ( ExeVerifyMachining( nMchId, nRes) && ( nRes == FMI_NONE || nRes == FMI_LO))
|
||||
nResult += CAR_LI_OK ;
|
||||
// ripristino attacco originale
|
||||
pMachMgr->SetMachiningParam( MPA_LEADINTYPE, nLiType) ;
|
||||
@@ -265,7 +265,7 @@ ExeVerifyCutAsSplitting( int nMchId)
|
||||
else {
|
||||
// verifico interferenza
|
||||
int nRes ;
|
||||
if ( ExeVerifyMachining( nMchId, nRes) && nRes == FMI_NONE)
|
||||
if ( ExeVerifyMachining( nMchId, nRes) && ( nRes == FMI_NONE || nRes == FMI_LO))
|
||||
nResult += CAR_LI_OK ;
|
||||
}
|
||||
// verifico se posso portare uscita al bordo grezzo
|
||||
@@ -276,7 +276,7 @@ ExeVerifyCutAsSplitting( int nMchId)
|
||||
pMachMgr->MachiningPreview( true) ;
|
||||
// verifico interferenza
|
||||
int nRes ;
|
||||
if ( ExeVerifyMachining( nMchId, nRes) && nRes == FMI_NONE)
|
||||
if ( ExeVerifyMachining( nMchId, nRes) && ( nRes == FMI_NONE || nRes == FMI_LI))
|
||||
nResult += CAR_LO_OK ;
|
||||
// ripristino uscita originale
|
||||
pMachMgr->SetMachiningParam( MPA_LEADOUTTYPE, nLoType) ;
|
||||
@@ -287,7 +287,7 @@ ExeVerifyCutAsSplitting( int nMchId)
|
||||
else {
|
||||
// verifico interferenza
|
||||
int nRes ;
|
||||
if ( ExeVerifyMachining( nMchId, nRes) && nRes == FMI_NONE)
|
||||
if ( ExeVerifyMachining( nMchId, nRes) && ( nRes == FMI_NONE || nRes == FMI_LI))
|
||||
nResult += CAR_LO_OK ;
|
||||
}
|
||||
// verifico se taglio non passante
|
||||
|
||||
+1271
File diff suppressed because it is too large
Load Diff
+236
-12
@@ -16,10 +16,14 @@
|
||||
#include "EXE.h"
|
||||
#include "EXE_Macro.h"
|
||||
#include "DllGraphics.h"
|
||||
#include "DllMain.h"
|
||||
#include "resource.h"
|
||||
#include "/EgtDev/Include/EGkSurfBezier.h"
|
||||
#include "/EgtDev/Include/EXeExecutor.h"
|
||||
#include "/EgtDev/Include/EXeConst.h"
|
||||
#include "/EgtDev/Include/EgtStringConverter.h"
|
||||
#include "/EgtDev/Include/EgtPointerOwner.h"
|
||||
#include <Windowsx.h>
|
||||
|
||||
using namespace std ;
|
||||
|
||||
@@ -109,12 +113,12 @@ ExeSetLineAttribs( int nWidth)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetMarkAttribs( Color MarkCol)
|
||||
ExeSetMarkAttribs( Color MarkCol, Color Mark2Col)
|
||||
{
|
||||
IEGrScene* pScene = GetCurrScene() ;
|
||||
VERIFY_SCENE( pScene, false)
|
||||
// imposto il colore del Mark
|
||||
return pScene->SetMark( MarkCol) ;
|
||||
return ( pScene->SetMark( MarkCol) && pScene->SetMark2( Mark2Col)) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -183,10 +187,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)
|
||||
@@ -197,6 +214,31 @@ ExeSetGridColor( Color colMin, Color colMaj)
|
||||
return pScene->SetGridColor( colMin, colMaj) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetCameraType( bool bOrthoOrPersp, bool bRedraw)
|
||||
{
|
||||
IEGrScene* pScene = GetCurrScene() ;
|
||||
VERIFY_SCENE( pScene, false)
|
||||
pScene->SetCameraType( bOrthoOrPersp) ;
|
||||
if ( bRedraw)
|
||||
pScene->RedrawWindow() ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetZoomType( int nMode, bool bRedraw)
|
||||
{
|
||||
IEGrScene* pScene = GetCurrScene() ;
|
||||
VERIFY_SCENE( pScene, false)
|
||||
if ( ! pScene->SetZoomType( nMode))
|
||||
return false ;
|
||||
if ( bRedraw)
|
||||
pScene->RedrawWindow() ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeResize( int nW, int nH)
|
||||
@@ -212,11 +254,14 @@ ExeResize( int nW, int nH)
|
||||
bool
|
||||
ExeDraw( void)
|
||||
{
|
||||
// se interfaccia disabilitata, esco subito
|
||||
if ( ! ExeGetEnableUI())
|
||||
return true ;
|
||||
|
||||
GseContext* pGseCtx = GetCurrGseContext() ;
|
||||
VERIFY_CTX_SCENE( pGseCtx, false)
|
||||
// se abilitato, eseguo disegno
|
||||
if ( ExeGetEnableUI())
|
||||
pGseCtx->m_pScene->Draw() ;
|
||||
// eseguo disegno
|
||||
pGseCtx->m_pScene->Draw() ;
|
||||
// valido la finestra disegnata
|
||||
ValidateRgn( pGseCtx->m_hWnd, NULL) ;
|
||||
return true ;
|
||||
@@ -415,17 +460,44 @@ ExeGetShowCurveDirection( void)
|
||||
return pScene->GetShowCurveDirection() ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
static bool
|
||||
MyResetGroupObjGraphics( IGeomDB* pGDB, int nGroupId)
|
||||
{
|
||||
if ( pGDB == nullptr)
|
||||
return false ;
|
||||
int nEntId = pGDB->GetFirstInGroup( nGroupId) ;
|
||||
while ( nEntId != GDB_ID_NULL) {
|
||||
if ( pGDB->GetGdbType( nEntId) == GDB_TY_GROUP) {
|
||||
MyResetGroupObjGraphics( pGDB, nEntId) ;
|
||||
}
|
||||
else {
|
||||
IGeoObj* pGeoObj = pGDB->GetGeoObj( nEntId) ;
|
||||
if ( pGeoObj != nullptr)
|
||||
pGeoObj->SetObjGraphics( nullptr) ;
|
||||
}
|
||||
nEntId = pGDB->GetNext( nEntId) ;
|
||||
}
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetShowTriaAdv( bool bAdvanced, bool bRedraw)
|
||||
{
|
||||
IEGrScene* pScene = GetCurrScene() ;
|
||||
VERIFY_SCENE( pScene, false)
|
||||
// imposto stato
|
||||
pScene->SetShowTriaAdvanced( bAdvanced) ;
|
||||
// se cambiato, imposto stato
|
||||
if ( pScene->GetShowTriaAdvanced() != bAdvanced) {
|
||||
// imposto il nuovo stato
|
||||
pScene->SetShowTriaAdvanced( bAdvanced) ;
|
||||
// forzo ricalcolo della grafica di tutti gli oggetti
|
||||
if ( ! MyResetGroupObjGraphics( pScene->GetGeomDB(), GDB_ID_ROOT))
|
||||
return false ;
|
||||
}
|
||||
if ( bRedraw)
|
||||
pScene->RedrawWindow() ;
|
||||
return TRUE ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -438,17 +510,50 @@ ExeGetShowTriaAdv( void)
|
||||
return pScene->GetShowTriaAdvanced() ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetShowSurfBezierTol( double dLinTol, bool bRedraw)
|
||||
{
|
||||
IEGrScene* pScene = GetCurrScene() ;
|
||||
VERIFY_SCENE( pScene, false)
|
||||
// se diverso, imposto il nuovo valore
|
||||
if ( abs( GetSurfBezierAuxSurfTol() - dLinTol) > 10 * EPS_SMALL) {
|
||||
// imposto il nuovo valore di approssimazione
|
||||
SetSurfBezierAuxSurfTol( dLinTol) ;
|
||||
// forzo ricalcolo della grafica di tutti gli oggetti
|
||||
if ( ! MyResetGroupObjGraphics( pScene->GetGeomDB(), GDB_ID_ROOT))
|
||||
return false ;
|
||||
}
|
||||
if ( bRedraw)
|
||||
pScene->RedrawWindow() ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
double
|
||||
ExeGetShowSurfBezierTol( void)
|
||||
{
|
||||
// recupero il valore
|
||||
return GetSurfBezierAuxSurfTol() ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetShowZmap( int nMode, bool bRedraw)
|
||||
{
|
||||
IEGrScene* pScene = GetCurrScene() ;
|
||||
VERIFY_SCENE( pScene, false)
|
||||
// imposto stato
|
||||
pScene->SetShowZmap( nMode) ;
|
||||
// se cambiato, imposto il nuovo stato
|
||||
if ( pScene->GetShowZmap() != nMode) {
|
||||
// imposto il nuovo stato
|
||||
pScene->SetShowZmap( nMode) ;
|
||||
// forzo ricalcolo della grafica di tutti gli oggetti
|
||||
if ( ! MyResetGroupObjGraphics( pScene->GetGeomDB(), GDB_ID_ROOT))
|
||||
return false ;
|
||||
}
|
||||
if ( bRedraw)
|
||||
pScene->RedrawWindow() ;
|
||||
return TRUE ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -456,7 +561,7 @@ int
|
||||
ExeGetShowZmap( void)
|
||||
{
|
||||
IEGrScene* pScene = GetCurrScene() ;
|
||||
VERIFY_SCENE( pScene, false)
|
||||
VERIFY_SCENE( pScene, -1)
|
||||
// recupero lo stato
|
||||
return pScene->GetShowZmap() ;
|
||||
}
|
||||
@@ -478,6 +583,10 @@ ExeZoomRadius( double dRadius, bool bRedraw)
|
||||
bool
|
||||
ExeZoom( int nZoom, bool bRedraw)
|
||||
{
|
||||
// se interfaccia disabilitata, esco subito
|
||||
if ( ! ExeGetEnableUI())
|
||||
return true ;
|
||||
|
||||
IEGrScene* pScene = GetCurrScene() ;
|
||||
VERIFY_SCENE( pScene, false)
|
||||
|
||||
@@ -625,10 +734,23 @@ ExeZoomWin( int nPrevX, int nPrevY, int nCurrX, int nCurrY, bool bRedraw)
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetViewOrizzOffsStep( int nDirOffsStep)
|
||||
{
|
||||
IEGrScene* pScene = GetCurrScene() ;
|
||||
VERIFY_SCENE( pScene, false)
|
||||
return pScene->SetCameraDirOrizzOffset( nDirOffsStep) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSetView( int nDir, bool bRedraw)
|
||||
{
|
||||
// se interfaccia disabilitata, esco subito
|
||||
if ( ! ExeGetEnableUI())
|
||||
return true ;
|
||||
|
||||
IEGrScene* pScene = GetCurrScene() ;
|
||||
VERIFY_SCENE( pScene, false)
|
||||
// imposto vista
|
||||
@@ -694,6 +816,19 @@ ExeRotateView( int nPrevX, int nPrevY, int nCurrX, int nCurrY, bool bRedraw)
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetViewOrizzOffsStep( int* pnDirOffsStep)
|
||||
{
|
||||
IEGrScene* pScene = GetCurrScene() ;
|
||||
VERIFY_SCENE( pScene, false)
|
||||
// recupero offset direzione di vista
|
||||
if ( pnDirOffsStep == nullptr)
|
||||
return false ;
|
||||
*pnDirOffsStep = pScene->GetCameraDirOrizzOffset() ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetView( int* pnDir)
|
||||
@@ -850,3 +985,92 @@ ExeGetImage( int nShowMode, Color colBackTop, Color colBackBottom,
|
||||
// creo e salvo una immagine della scena
|
||||
return pScene->GetImage( nShowMode, colBackTop, colBackBottom, nWidth, nHeight, sFile) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int s_nContext = 0 ;
|
||||
static int s_nDriver = 3 ;
|
||||
static bool s_b2Buff = true ;
|
||||
static int s_nColorBits = 32 ;
|
||||
static int s_nDepthBits = 24 ;
|
||||
static int s_nShowMode = SM_SHADING ;
|
||||
static Color s_colBackTop = WHITE ;
|
||||
static Color s_colBackBottom = WHITE ;
|
||||
static int s_nCameraDir = CT_TOP ;
|
||||
static int s_nWidth = 1024 ;
|
||||
static int s_nHeight = 1024 ;
|
||||
static string s_sImageFile ;
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
BOOL
|
||||
CALLBACK SceneBoxProc( HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch ( message) {
|
||||
case WM_INITDIALOG :
|
||||
{
|
||||
// imposto dimensione box e picture
|
||||
const int WIN_MAX_DIM = 1024 ;
|
||||
int nWinW = ( s_nWidth >= s_nHeight ? WIN_MAX_DIM : ( WIN_MAX_DIM * s_nWidth) / s_nHeight) ;
|
||||
int nWinH = ( s_nHeight >= s_nWidth ? WIN_MAX_DIM : ( WIN_MAX_DIM * s_nHeight) / s_nWidth) ;
|
||||
HWND hPic = GetDlgItem( hwndDlg, IDC_PICTURE1) ;
|
||||
SetWindowPos( hwndDlg, HWND_TOP, 0, 0, nWinW, nWinH, SWP_NOMOVE | SWP_NOREPOSITION) ;
|
||||
SetWindowPos( hPic, HWND_TOP, 0, 0, nWinW, nWinH, SWP_NOMOVE | SWP_NOREPOSITION) ;
|
||||
// imposto scena
|
||||
int nContext = GetIndCurrGseContext() ;
|
||||
GseContext* pGseCtx = GetGseContext( nContext) ;
|
||||
if ( pGseCtx != nullptr && pGseCtx->m_pScene == nullptr) {
|
||||
ExeInitScene( hPic, s_nDriver, s_b2Buff, s_nColorBits, s_nDepthBits) ;
|
||||
if ( pGseCtx->m_pGeomDB != nullptr && pGseCtx->m_pScene != nullptr) {
|
||||
s_nContext = nContext ;
|
||||
pGseCtx->m_pScene->SetCamera( s_nCameraDir) ;
|
||||
pGseCtx->m_pScene->ZoomAll() ;
|
||||
pGseCtx->m_pScene->GetImage( s_nShowMode, s_colBackTop, s_colBackBottom, s_nWidth, s_nHeight, s_sImageFile) ;
|
||||
MyResetGroupObjGraphics( pGseCtx->m_pGeomDB, GDB_ID_ROOT) ;
|
||||
EndDialog( hwndDlg, wParam) ;
|
||||
}
|
||||
}
|
||||
else
|
||||
s_nContext = 0 ;
|
||||
}
|
||||
break ;
|
||||
}
|
||||
return FALSE ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
ExeGetImageEx( int nDriver, bool b2Buff, int nColorBits, int nDepthBits,
|
||||
int nShowMode, Color colBackTop, Color colBackBottom,
|
||||
int nCameraDir, int nWidth, int nHeight, const string& sFile)
|
||||
{
|
||||
// Se il contesto corrente possiede già una scena
|
||||
if ( GetCurrScene() != nullptr) {
|
||||
return ExeGetImage( nShowMode, colBackTop, colBackBottom, nWidth, nHeight, sFile) ;
|
||||
}
|
||||
// altrimenti ne creo una temporanea
|
||||
else {
|
||||
// salvo i parametri
|
||||
s_nDriver = nDriver ;
|
||||
s_b2Buff = b2Buff ;
|
||||
s_nColorBits = nColorBits ;
|
||||
s_nDepthBits = nDepthBits ;
|
||||
s_nShowMode = nShowMode ;
|
||||
s_colBackTop = colBackTop ;
|
||||
s_colBackBottom = colBackBottom ;
|
||||
s_nCameraDir = nCameraDir ;
|
||||
s_nWidth = nWidth ;
|
||||
s_nHeight = nHeight ;
|
||||
s_sImageFile = sFile ;
|
||||
// lancio dialogo
|
||||
HWND hTopWnd = ExeGetMainWindowHandle() ;
|
||||
DialogBox( GetModuleIstance(), MAKEINTRESOURCE( IDD_LUASCENE), hTopWnd, (DLGPROC)SceneBoxProc) ;
|
||||
bool bOk = ( s_nContext != 0) ;
|
||||
// elimino la scena dal contesto
|
||||
GseContext* pGseCtx = GetGseContext( s_nContext) ;
|
||||
if ( pGseCtx != nullptr) {
|
||||
delete pGseCtx->m_pScene ;
|
||||
pGseCtx->m_pScene = nullptr ;
|
||||
}
|
||||
s_nContext = 0 ;
|
||||
return bOk ;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,316 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2024-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EXE_TestObjSurface.cpp Data : 24.03.24 Versione : 2.6c2
|
||||
// Contenuto : Funzioni per verificare collisioni tra
|
||||
// Objects e Superfici (TriMesh).
|
||||
//
|
||||
//
|
||||
// Modifiche : 09.01.20 DS Creazione modulo.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
//--------------------------- Include ----------------------------------------
|
||||
#include "stdafx.h"
|
||||
#include "EXE.h"
|
||||
#include "EXE_Macro.h"
|
||||
#include "EXE_Const.h"
|
||||
#include "AuxTools.h"
|
||||
#include "GeoTools.h"
|
||||
#include "/EgtDev/Include/EXeExecutor.h"
|
||||
#include "/EgtDev/Include/EXeConst.h"
|
||||
#include "/EgtDev/Include/EGkCDeBoxClosedSurfTm.h"
|
||||
#include "/EgtDev/Include/EGkCDeRectPrismoidClosedSurfTm.h"
|
||||
#include "/EgtDev/Include/EGkCDeCylClosedSurfTm.h"
|
||||
#include "/EgtDev/Include/EGkCDeConeFrustumClosedSurfTm.h"
|
||||
#include "/EgtDev/Include/EGkCDeSpheClosedSurfTm.h"
|
||||
#include "/EgtDev/Include/EGkCDeClosedSurfTmClosedSurfTm.h"
|
||||
#include "/EgtDev/Include/EGkSurfLocal.h"
|
||||
#include "/EgtDev/Include/EGkStringUtils3d.h"
|
||||
|
||||
using namespace std ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
MyTestBoxSurfTm( const Frame3d& frBox, const Vector3d& vtDiag, int nSurfTmId, double dSafeDist, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, -1)
|
||||
// recupero la superficie TriMesh
|
||||
const ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nSurfTmId)) ;
|
||||
if ( pStm == nullptr)
|
||||
return -1 ;
|
||||
// recupero il riferimento della superficie
|
||||
Frame3d frSurf ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nSurfTmId, frSurf))
|
||||
return -1 ;
|
||||
// porto in locale alla superficie il riferimento del box (il vettore è già in questo stesso riferimento)
|
||||
Frame3d frBoxL = GetFrameLocal( pGeomDB, frBox, nRefType, frSurf) ;
|
||||
// verifico l'a collisione'interferenza
|
||||
return ( TestBoxSurfTm( frBoxL, vtDiag, *pStm, dSafeDist) ? 1 : 0) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeTestBoxSurface( const Frame3d& frBox, const Vector3d& vtDiag, int nSurfId, double dSafeDist, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
int nRes = -1 ;
|
||||
if ( pGeomDB != nullptr && pGeomDB->GetGeoType( nSurfId) == SRF_TRIMESH)
|
||||
nRes = MyTestBoxSurfTm( frBox, vtDiag, nSurfId, dSafeDist, nRefType) ;
|
||||
// è da aggiungere il test con le superfici di Bezier
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtTestBoxSurface({{" + ToString( frBox.Orig()) + "},{" +
|
||||
ToString( frBox.VersX()) + "},{" +
|
||||
ToString( frBox.VersY()) + "},{" +
|
||||
ToString( frBox.VersZ()) + "}},{" +
|
||||
ToString( vtDiag) + "}," +
|
||||
IdToString( nSurfId) + "," +
|
||||
ToString( dSafeDist) + "," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Res=" + ToString( nRes) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return nRes ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
MyTestRectPrismoidSurfTm( const Frame3d& frPrismoid, double dBaseLenX, double dBaseLenY,
|
||||
double dTopLenX, double dTopLenY, double dHeight,
|
||||
int nSurfTmId, double dSafeDist, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, -1)
|
||||
// recupero la superficie TriMesh
|
||||
const ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nSurfTmId)) ;
|
||||
if ( pStm == nullptr)
|
||||
return -1 ;
|
||||
// recupero il riferimento della superficie
|
||||
Frame3d frSurf ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nSurfTmId, frSurf))
|
||||
return -1 ;
|
||||
// porto in locale alla superficie il riferimento del prismoide rettangolare
|
||||
Frame3d frPrismoidL = GetFrameLocal( pGeomDB, frPrismoid, nRefType, frSurf) ;
|
||||
// verifico l'a collisione'interferenza
|
||||
return ( TestRectPrismoidSurfTm( frPrismoidL, dBaseLenX, dBaseLenY, dTopLenX, dTopLenY, dHeight, *pStm, dSafeDist) ? 1 : 0) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeTestRectPrismoidSurface( const Frame3d& frPrismoid, double dBaseLenX, double dBaseLenY,
|
||||
double dTopLenX, double dTopLenY, double dHeight,
|
||||
int nSurfId, double dSafeDist, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
int nRes = -1 ;
|
||||
if ( pGeomDB != nullptr && pGeomDB->GetGeoType( nSurfId) == SRF_TRIMESH)
|
||||
nRes = MyTestRectPrismoidSurfTm( frPrismoid, dBaseLenX, dBaseLenY, dTopLenX, dTopLenY, dHeight, nSurfId, dSafeDist, nRefType) ;
|
||||
// è da aggiungere il test con le superfici di Bezier
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtTestRectPrismoidSurface({{" + ToString( frPrismoid.Orig()) + "},{" +
|
||||
ToString( frPrismoid.VersX()) + "},{" +
|
||||
ToString( frPrismoid.VersY()) + "},{" +
|
||||
ToString( frPrismoid.VersZ()) + "}}," +
|
||||
ToString( dBaseLenX) + "," +
|
||||
ToString( dBaseLenY) + "," +
|
||||
ToString( dTopLenX) + "," +
|
||||
ToString( dTopLenY) + "," +
|
||||
ToString( dHeight) + "," +
|
||||
IdToString( nSurfId) + "," +
|
||||
ToString( dSafeDist) + "," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Res=" + ToString( nRes) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return nRes ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
MyTestCylSurfTm( const Frame3d& frCyl, double dR, double dH, int nSurfTmId, double dSafeDist, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, -1)
|
||||
// recupero la superficie TriMesh
|
||||
const ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nSurfTmId)) ;
|
||||
if ( pStm == nullptr)
|
||||
return -1 ;
|
||||
// recupero il riferimento della superficie
|
||||
Frame3d frSurf ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nSurfTmId, frSurf))
|
||||
return -1 ;
|
||||
// porto in locale alla superficie il riferimento del cilindro
|
||||
Frame3d frCylL = GetFrameLocal( pGeomDB, frCyl, nRefType, frSurf) ;
|
||||
// verifico l'interferenza
|
||||
return ( TestCylSurfTm( frCylL, dR, dH, *pStm, dSafeDist) ? 1 : 0) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeTestCylSurface( const Frame3d& frCyl, double dR, double dH, int nSurfId, double dSafeDist, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
int nRes = -1 ;
|
||||
if ( pGeomDB != nullptr && pGeomDB->GetGeoType( nSurfId) == SRF_TRIMESH)
|
||||
nRes = MyTestCylSurfTm( frCyl, dR, dH, nSurfId, dSafeDist, nRefType) ;
|
||||
// è da aggiungere il test con le superfici di Bezier
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtTestCylSurface({{" + ToString( frCyl.Orig()) + "},{" +
|
||||
ToString( frCyl.VersX()) + "},{" +
|
||||
ToString( frCyl.VersY()) + "},{" +
|
||||
ToString( frCyl.VersZ()) + "}}," +
|
||||
ToString( dR) + "," +
|
||||
ToString( dH) + "," +
|
||||
IdToString( nSurfId) + "," +
|
||||
ToString( dSafeDist) + "," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Res=" + ToString( nRes) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return nRes ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
MyTestConeSurfTm( const Frame3d& frCone, double dR1, double dR2, double dH, int nSurfTmId, double dSafeDist, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, -1)
|
||||
// recupero la superficie TriMesh
|
||||
const ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nSurfTmId)) ;
|
||||
if ( pStm == nullptr)
|
||||
return -1 ;
|
||||
// recupero il riferimento della superficie
|
||||
Frame3d frSurf ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nSurfTmId, frSurf))
|
||||
return -1 ;
|
||||
// porto in locale alla superficie il riferimento del cilindro
|
||||
Frame3d frConeL = GetFrameLocal( pGeomDB, frCone, nRefType, frSurf) ;
|
||||
// verifico l'interferenza
|
||||
return ( TestConeFrustumSurfTm( frConeL, dR1, dR2, dH, *pStm, dSafeDist) ? 1 : 0) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeTestConeSurface( const Frame3d& frCone, double dR1, double dR2, double dH, int nSurfId, double dSafeDist, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
int nRes = -1 ;
|
||||
if ( pGeomDB != nullptr && pGeomDB->GetGeoType( nSurfId) == SRF_TRIMESH)
|
||||
nRes = MyTestConeSurfTm( frCone, dR1, dR2, dH, nSurfId, dSafeDist, nRefType) ;
|
||||
// è da aggiungere il test con le superfici di Bezier
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtTestConeSurface({{" + ToString( frCone.Orig()) + "},{" +
|
||||
ToString( frCone.VersX()) + "},{" +
|
||||
ToString( frCone.VersY()) + "},{" +
|
||||
ToString( frCone.VersZ()) + "}}," +
|
||||
ToString( dR1) + "," +
|
||||
ToString( dR2) + "," +
|
||||
ToString( dH) + "," +
|
||||
IdToString( nSurfId) + "," +
|
||||
ToString( dSafeDist) + "," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Res=" + ToString( nRes) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return nRes ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
MyTestSpheSurfTm( const Point3d& ptCen, double dR, int nSurfTmId, double dSafeDist, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, -1)
|
||||
// recupero la superficie TriMesh
|
||||
const ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nSurfTmId)) ;
|
||||
if ( pStm == nullptr)
|
||||
return -1 ;
|
||||
// recupero il riferimento della superficie
|
||||
Frame3d frSurf ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nSurfTmId, frSurf))
|
||||
return -1 ;
|
||||
// porto in locale alla superficie il centro della sfera
|
||||
Point3d ptCenL = GetPointLocal( pGeomDB, ptCen, nRefType, frSurf) ;
|
||||
// verifico l'a collisione'interferenza
|
||||
return ( TestSpheSurfTm( ptCenL, dR, *pStm, dSafeDist) ? 1 : 0) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeTestSpheSurface( const Point3d& ptCen, double dR, int nSurfId, double dSafeDist, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
int nRes = -1 ;
|
||||
if ( pGeomDB != nullptr && pGeomDB->GetGeoType( nSurfId) == SRF_TRIMESH)
|
||||
nRes = MyTestSpheSurfTm( ptCen, dR, nSurfId, dSafeDist, nRefType) ;
|
||||
// è da aggiungere il test con le superfici di Bezier
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtTestSpheSurface({" + ToString( ptCen) + "}," +
|
||||
ToString( dR) + "," +
|
||||
IdToString( nSurfId) + "," +
|
||||
ToString( dSafeDist) + "," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Res=" + ToString( nRes) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return nRes ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
MyTestSurfTmSurfTm( int nSurfTm1Id, int nSurfTm2Id, double dSafeDist)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, -1)
|
||||
// recupero il riferimento della seconda superficie
|
||||
Frame3d frSurf2 ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nSurfTm2Id, frSurf2))
|
||||
return -1 ;
|
||||
// recupero la prima superficie in locale alla seconda
|
||||
SurfLocal Surf1Loc( pGeomDB, nSurfTm1Id, frSurf2) ;
|
||||
const ISurfTriMesh* pStm1 = GetSurfTriMesh( Surf1Loc) ;
|
||||
if ( pStm1 == nullptr)
|
||||
return -1 ;
|
||||
// recupero la seconda superficie TriMesh
|
||||
const ISurfTriMesh* pStm2 = GetSurfTriMesh( pGeomDB->GetGeoObj( nSurfTm2Id)) ;
|
||||
if ( pStm2 == nullptr)
|
||||
return -1 ;
|
||||
// verifico l'a collisione'interferenza
|
||||
return ( TestSurfTmSurfTm( *pStm1, *pStm2, dSafeDist) ? 1 : 0) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
ExeTestSurfaceSurface( int nSurf1Id, int nSurf2Id, double dSafeDist)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
int nRes = -1 ;
|
||||
if ( pGeomDB != nullptr) {
|
||||
if ( pGeomDB->GetGeoType( nSurf1Id) == SRF_TRIMESH && pGeomDB->GetGeoType( nSurf2Id) == SRF_TRIMESH)
|
||||
nRes = MyTestSurfTmSurfTm( nSurf1Id, nSurf2Id, dSafeDist) ;
|
||||
// è da aggiungere il test con le superfici di Bezier
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtTestSurfaceSurface({" + IdToString( nSurf1Id) + "," +
|
||||
IdToString( nSurf2Id) + "," +
|
||||
ToString( dSafeDist) + ")" +
|
||||
" -- Res=" + ToString( nRes) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return nRes ;
|
||||
}
|
||||
+6
-5
@@ -36,7 +36,6 @@ const int STR_DIM = 50 ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
static HINSTANCE s_hModule = nullptr ;
|
||||
static char s_szEXeNameVer[STR_DIM] ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
BOOL APIENTRY
|
||||
@@ -71,10 +70,12 @@ DllMain( HMODULE hModule, DWORD dwReason, LPVOID lpReserved)
|
||||
const char*
|
||||
GetEXeVersion( void)
|
||||
{
|
||||
std::string sVer ;
|
||||
|
||||
GetModuleVersion( s_hModule, sVer) ;
|
||||
sprintf_s( s_szEXeNameVer, STR_DIM, "%s%s", EXE_STR, sVer.c_str()) ;
|
||||
static char s_szEXeNameVer[STR_DIM] = "" ;
|
||||
if ( s_szEXeNameVer[0] == '\0') {
|
||||
std::string sVer ;
|
||||
GetModuleVersion( s_hModule, sVer) ;
|
||||
sprintf_s( s_szEXeNameVer, STR_DIM, "%s%s", EXE_STR, sVer.c_str()) ;
|
||||
}
|
||||
|
||||
return s_szEXeNameVer ;
|
||||
}
|
||||
|
||||
Binary file not shown.
+7
-2
@@ -1,6 +1,8 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.13.35919.96 d17.13
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EgtExecutor", "EgtExecutor.vcxproj", "{DF654897-F85B-4108-A621-F2C4AB099A48}"
|
||||
EndProject
|
||||
Global
|
||||
@@ -23,4 +25,7 @@ Global
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {30B63942-DD1D-428A-BFD1-E603299B17B6}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
+22
-6
@@ -22,14 +22,14 @@
|
||||
<ProjectGuid>{DF654897-F85B-4108-A621-F2C4AB099A48}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>EgtExecutor</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141_xp</PlatformToolset>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
@@ -42,7 +42,7 @@
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141_xp</PlatformToolset>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
@@ -104,6 +104,8 @@
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<OpenMPSupport>false</OpenMPSupport>
|
||||
<LanguageStandard>stdcpp20</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@@ -129,7 +131,7 @@ copy $(TargetPath) \EgtProg\DllD32</Command>
|
||||
<OmitFramePointers>false</OmitFramePointers>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
<LanguageStandard>stdcpp20</LanguageStandard>
|
||||
<AdditionalOptions>-Wno-tautological-undefined-compare</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
@@ -164,6 +166,7 @@ copy $(TargetPath) \EgtProg\DllD64</Command>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
|
||||
<EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
|
||||
<EnableParallelCodeGeneration>true</EnableParallelCodeGeneration>
|
||||
<LanguageStandard>stdcpp20</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@@ -197,8 +200,8 @@ copy $(TargetPath) \EgtProg\Dll32</Command>
|
||||
<OpenMPSupport>false</OpenMPSupport>
|
||||
<EnableFiberSafeOptimizations>false</EnableFiberSafeOptimizations>
|
||||
<EnableParallelCodeGeneration>true</EnableParallelCodeGeneration>
|
||||
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
<EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
|
||||
<LanguageStandard>stdcpp20</LanguageStandard>
|
||||
<AdditionalOptions>-Wno-tautological-undefined-compare</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
@@ -225,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" />
|
||||
@@ -245,20 +249,25 @@ copy $(TargetPath) \EgtProg\Dll64</Command>
|
||||
<ClInclude Include="stdafx.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="DllExch3dm.cpp" />
|
||||
<ClCompile Include="DllNesting.cpp" />
|
||||
<ClCompile Include="EXE_Base64.cpp" />
|
||||
<ClCompile Include="EXE_BeamMgr.cpp" />
|
||||
<ClCompile Include="EXE_CAvTool.cpp" />
|
||||
<ClCompile Include="EXE_CDeObjSolid.cpp" />
|
||||
<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" />
|
||||
<ClCompile Include="EXE_GeoDist.cpp" />
|
||||
<ClCompile Include="EXE_GeoInters.cpp" />
|
||||
<ClCompile Include="EXE_Image.cpp" />
|
||||
<ClCompile Include="EXE_MachOpt.cpp" />
|
||||
<ClCompile Include="EXE_MaxFiller.cpp" />
|
||||
<ClCompile Include="EXE_Mutex.cpp" />
|
||||
<ClCompile Include="EXE_NstAutoNesting.cpp" />
|
||||
<ClCompile Include="EXE_NstMachining.cpp" />
|
||||
<ClCompile Include="EXE_NstPartNesting.cpp" />
|
||||
@@ -284,8 +293,10 @@ copy $(TargetPath) \EgtProg\Dll64</Command>
|
||||
<ClCompile Include="EXE_NstCreateFlatParts.cpp" />
|
||||
<ClCompile Include="EXE_Photo.cpp" />
|
||||
<ClCompile Include="EXE_Picture.cpp" />
|
||||
<ClCompile Include="EXE_Redis.cpp" />
|
||||
<ClCompile Include="EXE_Scene.cpp" />
|
||||
<ClCompile Include="EXE_ShortestPath.cpp" />
|
||||
<ClCompile Include="EXE_TestObjSurface.cpp" />
|
||||
<ClCompile Include="EXE_TscExec.cpp" />
|
||||
<ClCompile Include="AuxTools.cpp" />
|
||||
<ClCompile Include="DllExchange.cpp" />
|
||||
@@ -296,18 +307,23 @@ copy $(TargetPath) \EgtProg\Dll64</Command>
|
||||
<ClCompile Include="GenTools.cpp" />
|
||||
<ClCompile Include="GeoTools.cpp" />
|
||||
<ClCompile Include="GseContext.cpp" />
|
||||
<ClCompile Include="LUA_Base64.cpp" />
|
||||
<ClCompile Include="LUA_BeamMgr.cpp" />
|
||||
<ClCompile Include="LUA_CAvTool.cpp" />
|
||||
<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" />
|
||||
<ClCompile Include="LUA_GeoInters.cpp" />
|
||||
<ClCompile Include="LUA_MachOpt.cpp" />
|
||||
<ClCompile Include="LUA_MaxFiller.cpp" />
|
||||
<ClCompile Include="LUA_Picture.cpp" />
|
||||
<ClCompile Include="LUA_PolynomialRoots.cpp" />
|
||||
<ClCompile Include="LUA_Redis.cpp" />
|
||||
<ClCompile Include="LUA_TestObjSurface.cpp" />
|
||||
<ClCompile Include="PictureObj.cpp" />
|
||||
<ClCompile Include="LUA_Base.cpp" />
|
||||
<ClCompile Include="LUA_GdbCreateCurve.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">
|
||||
@@ -386,6 +389,42 @@
|
||||
<ClCompile Include="LUA_BeamMgr.cpp">
|
||||
<Filter>File di origine\LUA</Filter>
|
||||
</ClCompile>
|
||||
<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>
|
||||
<ClCompile Include="EXE_TestObjSurface.cpp">
|
||||
<Filter>File di origine\EXE</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="LUA_TestObjSurface.cpp">
|
||||
<Filter>File di origine\LUA</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="EXE_MachOpt.cpp">
|
||||
<Filter>File di origine\EXE</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="LUA_MachOpt.cpp">
|
||||
<Filter>File di origine\LUA</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="EXE_Redis.cpp">
|
||||
<Filter>File di origine\EXE</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="LUA_Redis.cpp">
|
||||
<Filter>File di origine\LUA</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="EXE_Base64.cpp">
|
||||
<Filter>File di origine\EXE</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="LUA_Base64.cpp">
|
||||
<Filter>File di origine\LUA</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="EgtExecutor.rc">
|
||||
|
||||
+2
-2
@@ -20,9 +20,9 @@
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
AdjustId( int nId)
|
||||
AdjustId( int nId, int nCtx)
|
||||
{
|
||||
GseContext* pCtx = GetCurrGseContext() ;
|
||||
GseContext* pCtx = ( nCtx == 0 ? GetCurrGseContext() : GetGseContext( nCtx));
|
||||
VERIFY_CTX( pCtx, GDB_ID_NULL)
|
||||
if ( nId == GDB_ID_CURRPART)
|
||||
return pCtx->m_nCurrPart ;
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ class IGeomDB ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Sistemo Id per pezzo o layer correnti
|
||||
int AdjustId( int nId) ;
|
||||
int AdjustId( int nId, int nCtx = 0) ;
|
||||
// Vettore espresso nel riferimento desiderato partendo da vettore nel riferimento RefType
|
||||
Vector3d GetVectorLocal( IGeomDB* pGeomDB, const Vector3d& vtV, int nRefType, const Frame3d& frLoc) ;
|
||||
// Vettore espresso nel riferimento RefType partendo da vettore nel riferimento locale
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2014-2015
|
||||
// EgalTech 2014-2025
|
||||
//----------------------------------------------------------------------------
|
||||
// File : LUA.h Data : 16.01.15 Versione : 1.6a3
|
||||
// File : LUA.h Data : 03.11.25 Versione : 2.7k1
|
||||
// Contenuto : Dichiarazioni locali per moduli LUA.
|
||||
//
|
||||
//
|
||||
@@ -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) ;
|
||||
|
||||
@@ -90,6 +93,9 @@ bool LuaInstallGeoInters( LuaMgr& luaMgr) ;
|
||||
//-------------------------- Collision Detection -----------------------------
|
||||
bool LuaInstallCDeObjSolid( LuaMgr& luaMgr) ;
|
||||
|
||||
//-------------------------- Test Interference -------------------------------
|
||||
bool LuaInstallTestObjSurface( LuaMgr& luaMgr) ;
|
||||
|
||||
//-------------------------- MachMgr -----------------------------------------
|
||||
bool LuaInstallMachMgr( LuaMgr& luaMgr) ;
|
||||
|
||||
@@ -123,6 +129,15 @@ bool LuaInstallPolynomialRoots( LuaMgr& luaMgr) ;
|
||||
//-------------------------- Shortest Path -----------------------------------
|
||||
bool LuaInstallShortestPath( LuaMgr& luaMgr) ;
|
||||
|
||||
//----------------------- Machining Time Optimization ------------------------
|
||||
bool LuaInstallMachiningOptimization( LuaMgr& luaMgr) ;
|
||||
|
||||
//-------------------------- Collision Avoidance Tool ------------------------
|
||||
bool LuaInstallCAvTool( LuaMgr& luaMgr) ;
|
||||
|
||||
//---------------------------------- Redis ----------------------------------
|
||||
bool LuaInstallRedis( LuaMgr& luaMgr) ;
|
||||
|
||||
//-------------------------- Base64 ------------------------------------------
|
||||
bool LuaInstallBase64( 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 ;
|
||||
@@ -126,6 +130,10 @@ LuaInstallEgtFunctions( LuaMgr& LuaMgr)
|
||||
LOG_ERROR( GetLogger(), "Error in LuaInstallCDeObjSolid (LuaInstallEgtFunctions)")
|
||||
return false ;
|
||||
}
|
||||
if ( ! LuaInstallTestObjSurface( LuaMgr)) {
|
||||
LOG_ERROR( GetLogger(), "Error in LuaInstallTestObjSurface (LuaInstallEgtFunctions)")
|
||||
return false ;
|
||||
}
|
||||
if ( ! LuaInstallMachMgr( LuaMgr)) {
|
||||
LOG_ERROR( GetLogger(), "Error in LuaInstallMachMgr (LuaInstallEgtFunctions)")
|
||||
return false ;
|
||||
@@ -170,10 +178,23 @@ LuaInstallEgtFunctions( LuaMgr& LuaMgr)
|
||||
LOG_ERROR( GetLogger(), "Error in LuaInstallShortestPath (LuaInstallEgtFunctions)")
|
||||
return false ;
|
||||
}
|
||||
if ( ! LuaInstallMachiningOptimization( LuaMgr)) {
|
||||
LOG_ERROR( GetLogger(), "Error in LuaInstallMachiningOptimization (LuaInstallEgtFunctions)")
|
||||
return false ;
|
||||
}
|
||||
if ( ! LuaInstallCAvTool( LuaMgr)) {
|
||||
LOG_ERROR( GetLogger(), "Error in LuaInstallCAvTool (LuaInstallEgtFunctions)")
|
||||
return false ;
|
||||
}
|
||||
if ( ! LuaInstallRedis( LuaMgr)) {
|
||||
LOG_ERROR( GetLogger(), "Error in LuaInstallRedis (LuaInstallEgtFunctions)")
|
||||
return false ;
|
||||
}
|
||||
if ( ! LuaInstallBase64( LuaMgr)) {
|
||||
LOG_ERROR( GetLogger(), "Error in LuaInstallBase64 (LuaInstallEgtFunctions)")
|
||||
return false ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2025-2025
|
||||
//----------------------------------------------------------------------------
|
||||
// File : LUA_Base64.cpp Data : 03.11.25 Versione : 2.7k1
|
||||
// Contenuto : Funzioni per codificare/decodificare in Base64 per LUA.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 03.11.25 DS Creazione modulo.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
//--------------------------- Include ----------------------------------------
|
||||
#include "stdafx.h"
|
||||
#include "LUA.h"
|
||||
#include "/EgtDev/Include/EXeExecutor.h"
|
||||
|
||||
using namespace std ;
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaBase64Encode( lua_State* L)
|
||||
{
|
||||
// 1 parametro : sFile
|
||||
string sFile ;
|
||||
LuaCheckParam( L, 1, sFile) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo la codifica del contenuto del file
|
||||
string sB64Dest ;
|
||||
bool bOk = ExeBase64Encode( sFile, sB64Dest) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk)
|
||||
LuaSetParam( L, sB64Dest) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaBase64Decode( lua_State* L)
|
||||
{
|
||||
// 2 parametro : sB64Sou, sFile
|
||||
string sB64Sou ;
|
||||
LuaCheckParam( L, 1, sB64Sou) ;
|
||||
string sFile ;
|
||||
LuaCheckParam( L, 2, sFile) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo la decodifica della stringa nel file
|
||||
bool bOk = ExeBase64Decode( sB64Sou, sFile) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallBase64( LuaMgr& luaMgr)
|
||||
{
|
||||
bool bOk = ( &luaMgr != nullptr) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtBase64Encode", LuaBase64Encode) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtBase64Decode", LuaBase64Decode) ;
|
||||
return bOk ;
|
||||
}
|
||||
+66
-8
@@ -21,6 +21,21 @@
|
||||
|
||||
using namespace std ;
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaInitBeamMgr( lua_State* L)
|
||||
{
|
||||
// 1 o nessun parametro : [nFlag]
|
||||
int nFlag = EIB_FLAG_NONE ;
|
||||
LuaGetParam( L, 1, nFlag) ;
|
||||
LuaClearStack( L) ;
|
||||
// inizializzo in gestore di travi e pareti
|
||||
bool bOk = ExeInitBeamMgr( nFlag) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaBeamCreatePart( lua_State* L)
|
||||
@@ -151,7 +166,7 @@ LuaBeamGetSideData( lua_State* L)
|
||||
int nSide ;
|
||||
LuaCheckParam( L, 1, nSide)
|
||||
LuaClearStack( L) ;
|
||||
// imposto le dimensioni al pezzo corrente
|
||||
// restituisce i dati della faccia indicata del pezzo corrente
|
||||
Frame3d frRef ;
|
||||
double dLength, dWidth, dHeight ;
|
||||
bool bOk = ExeBeamGetSideData( nSide, frRef, dLength, dWidth, dHeight) ;
|
||||
@@ -173,7 +188,7 @@ LuaBeamGetSideData( lua_State* L)
|
||||
static int
|
||||
LuaBeamAddProcess( lua_State* L)
|
||||
{
|
||||
// 9 o 10 o 11 o 12 parametri : nGroup, nProc, nSide, sDes, nProcId, vdPar, sPar [, nCrv, nCrv2] [, bUpdate]
|
||||
// 9 o 10 o 11 o 12 parametri : nGroup, nProc, nSide, sDes, nProcId, vdPar, sPar, vsUAtt [, nCrv] [, nCrv2] [, bUpdate]
|
||||
int nGroup ;
|
||||
LuaCheckParam( L, 1, nGroup)
|
||||
int nProc ;
|
||||
@@ -198,6 +213,8 @@ LuaBeamAddProcess( lua_State* L)
|
||||
if ( LuaGetParam( L, 10, nCrvId) &&
|
||||
LuaGetParam( L, 11, nCrv2Id))
|
||||
LuaGetParam( L, 12, bUpdate) ;
|
||||
else if ( LuaGetParam( L, 10, nCrvId))
|
||||
LuaGetParam( L, 11, bUpdate) ;
|
||||
else
|
||||
LuaGetParam( L, 10, bUpdate) ;
|
||||
LuaClearStack( L) ;
|
||||
@@ -215,7 +232,7 @@ LuaBeamAddProcess( lua_State* L)
|
||||
static int
|
||||
LuaBeamModifyProcess( lua_State* L)
|
||||
{
|
||||
// 10 o 11 o 12 o 13 parametri : nGeomId, nGroup, nProc, nSide, sDes, nProcId, vdPar, sPar [, nCrv, nCrv2] [, bUpdate]
|
||||
// 10 o 11 o 12 o 13 parametri : nGeomId, nGroup, nProc, nSide, sDes, nProcId, vdPar, sPar, vsUAtt [, nCrv, nCrv2] [, bUpdate]
|
||||
int nGeomId ;
|
||||
LuaCheckParam( L, 1, nGeomId)
|
||||
int nGroup ;
|
||||
@@ -242,6 +259,8 @@ LuaBeamModifyProcess( lua_State* L)
|
||||
if ( LuaGetParam( L, 11, nCrvId) &&
|
||||
LuaGetParam( L, 12, nCrv2Id))
|
||||
LuaGetParam( L, 13, bUpdate) ;
|
||||
else if ( LuaGetParam( L, 11, nCrvId))
|
||||
LuaGetParam( L, 12, bUpdate) ;
|
||||
else
|
||||
LuaGetParam( L, 11, bUpdate) ;
|
||||
LuaClearStack( L) ;
|
||||
@@ -291,6 +310,38 @@ LuaBeamEnableProcess( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaBeamCalcAllSolids( lua_State* L)
|
||||
{
|
||||
// 1 o 2 parametri : bShow [,bRecalc]
|
||||
bool bShow ;
|
||||
LuaCheckParam( L, 1, bShow)
|
||||
bool bRecalc = false ;
|
||||
LuaGetParam( L, 2, bRecalc) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo calcolo dei solidi di tutte le travi
|
||||
bool bOk = ExeBeamCalcAllSolids( bShow, bRecalc) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaBeamShowAllSolids( lua_State* L)
|
||||
{
|
||||
// 1 parametro : bShow
|
||||
bool bShow ;
|
||||
LuaCheckParam( L, 1, bShow)
|
||||
LuaClearStack( L) ;
|
||||
// aggiorno stato di visualizzazione dei solidi di tutte le travi
|
||||
bool bOk = ExeBeamShowAllSolids( bShow) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaBeamCalcSolid( lua_State* L)
|
||||
@@ -347,10 +398,12 @@ LuaBeamShowSolid( lua_State* L)
|
||||
static int
|
||||
LuaBeamGetBuildingIsOn( lua_State* L)
|
||||
{
|
||||
// Nessun parametro
|
||||
// 1 o nessun parametro : [nAssGrpId]
|
||||
int nAssGrpId = GDB_ID_NULL ;
|
||||
LuaGetParam( L, 1, nAssGrpId) ;
|
||||
LuaClearStack( L) ;
|
||||
// restituisco identificativo del solido della trave
|
||||
bool bOk = ExeBeamGetBuildingIsOn() ;
|
||||
bool bOk = ExeBeamGetBuildingIsOn( nAssGrpId) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
@@ -360,12 +413,14 @@ LuaBeamGetBuildingIsOn( lua_State* L)
|
||||
static int
|
||||
LuaBeamShowBuilding( lua_State* L)
|
||||
{
|
||||
// 1 parametro : bShow
|
||||
// 1 o 2 parametri : [nAssGrpId,] bShow
|
||||
int nAssGrpId = GDB_ID_NULL ;
|
||||
int nPar = ( LuaGetParam( L, 1, nAssGrpId) ? 2 : 1) ;
|
||||
bool bShow ;
|
||||
LuaCheckParam( L, 1, bShow)
|
||||
LuaCheckParam( L, nPar, bShow)
|
||||
LuaClearStack( L) ;
|
||||
// attivo o disattivo la visualizzazione l'assemblaggio
|
||||
bool bOk = ExeBeamShowBuilding( bShow) ;
|
||||
bool bOk = ExeBeamShowBuilding( nAssGrpId, bShow) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
@@ -376,6 +431,7 @@ bool
|
||||
LuaInstallBeamMgr( LuaMgr& luaMgr)
|
||||
{
|
||||
bool bOk = ( &luaMgr != nullptr) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtInitBeamMgr", LuaInitBeamMgr) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtBeamCreatePart", LuaBeamCreatePart) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtBeamSetPart", LuaBeamSetPart) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtBeamErasePart", LuaBeamErasePart) ;
|
||||
@@ -389,6 +445,8 @@ LuaInstallBeamMgr( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtBeamModifyProcess", LuaBeamModifyProcess) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtBeamEraseProcess", LuaBeamEraseProcess) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtBeamEnableProcess", LuaBeamEnableProcess) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtBeamCalcAllSolids", LuaBeamCalcAllSolids) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtBeamShowAllSolids", LuaBeamShowAllSolids) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtBeamCalcSolid", LuaBeamCalcSolid) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtBeamGetSolid", LuaBeamGetSolid) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtBeamShowSolid", LuaBeamShowSolid) ;
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
@@ -165,6 +165,28 @@ LuaCDeSpheSolid( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCDeSolidSolid( lua_State* L)
|
||||
{
|
||||
// 3 parametri : nSolid1Id, nSolid2Id, dSafeDist
|
||||
int nSolid1Id ;
|
||||
LuaCheckParam( L, 1, nSolid1Id)
|
||||
int nSolid2Id ;
|
||||
LuaCheckParam( L, 2, nSolid2Id)
|
||||
double dSafeDist ;
|
||||
LuaCheckParam( L, 3, dSafeDist)
|
||||
LuaClearStack( L) ;
|
||||
// eseguo verifica di collisione
|
||||
int nRes = ExeCDeSolidSolid( nSolid1Id, nSolid2Id, dSafeDist) ;
|
||||
// restituisco il risultato
|
||||
if ( nRes >= 0)
|
||||
LuaSetParam( L, ( nRes != 0)) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallCDeObjSolid( LuaMgr& luaMgr)
|
||||
@@ -175,5 +197,6 @@ LuaInstallCDeObjSolid( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCDeCylSolid", LuaCDeCylSolid) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCDeConeSolid", LuaCDeConeSolid) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCDeSpheSolid", LuaCDeSpheSolid) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCDeSolidSolid", LuaCDeSolidSolid) ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
+102
-20
@@ -154,17 +154,68 @@ LuaImportStl( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaImportOff( lua_State* L)
|
||||
{
|
||||
// 1 o 2 parametri : path del file da importare [, Fattore di scala]
|
||||
string sFilePath ;
|
||||
LuaCheckParam( L, 1, sFilePath)
|
||||
double dScaleFactor = 1.0 ;
|
||||
LuaGetParam( L, 2, dScaleFactor) ;
|
||||
LuaClearStack( L) ;
|
||||
// apro il file
|
||||
bool bOk = ExeImportOff( sFilePath, dScaleFactor) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaImportPly( lua_State* L)
|
||||
{
|
||||
// 1 o 2 parametri : path del file da importare [, Fattore di scala]
|
||||
string sFilePath ;
|
||||
LuaCheckParam( L, 1, sFilePath)
|
||||
double dScaleFactor = 1.0 ;
|
||||
LuaGetParam( L, 2, dScaleFactor) ;
|
||||
LuaClearStack( L) ;
|
||||
// apro il file
|
||||
bool bOk = ExeImportPly( sFilePath, dScaleFactor) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaImport3MF( lua_State* L)
|
||||
{
|
||||
// 1 parametro : path del file da importare
|
||||
// 1 o 2 parametri : path del file da importare [, flag]
|
||||
string sFilePath ;
|
||||
LuaCheckParam( L, 1, sFilePath)
|
||||
int nFlag = 0 ;
|
||||
LuaGetParam( L, 2, nFlag) ;
|
||||
LuaClearStack( L) ;
|
||||
// apro il file
|
||||
bool bOk = ExeImport3MF( sFilePath, nFlag) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
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 = ExeImport3MF( sFilePath) ;
|
||||
// restituisco il risultato
|
||||
// apro il file
|
||||
bool bOk = ExeImport3dm( sFilePath) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
@@ -173,14 +224,16 @@ LuaImport3MF( lua_State* L)
|
||||
static int
|
||||
LuaAdvancedImport( lua_State* L)
|
||||
{
|
||||
// 1 o 2 parametri : path del file da importare [, dLinToler]
|
||||
// 1 o 2 o 3 parametri : path del file da importare [, dLinToler] [, nFlag]
|
||||
string sFilePath ;
|
||||
LuaCheckParam( L, 1, sFilePath)
|
||||
double dLinToler = 0.1 ;
|
||||
LuaGetParam( L, 2, dLinToler) ;
|
||||
int nFlag = 0 ;
|
||||
LuaGetParam( L, 3, nFlag) ;
|
||||
LuaClearStack( L) ;
|
||||
// apro il file
|
||||
bool bOk = ExeAdvancedImport( sFilePath, dLinToler) ;
|
||||
bool bOk = ExeAdvancedImport( sFilePath, dLinToler, nFlag) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
@@ -190,16 +243,18 @@ LuaAdvancedImport( lua_State* L)
|
||||
static int
|
||||
LuaExportDxf( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri, GroupId e path del file da esportare [, Flag]
|
||||
// 2, 3 o 4 parametri : GroupId e path del file da esportare [, Flag] [, Filter]
|
||||
int nGroupId ;
|
||||
LuaCheckParam( L, 1, nGroupId)
|
||||
string sFilePath ;
|
||||
LuaCheckParam( L, 2, sFilePath)
|
||||
int nFlag = EEXFLAG_DEFAULT ;
|
||||
LuaGetParam( L, 3, nFlag) ;
|
||||
int nFilter = EEXFLT_DEFAULT ;
|
||||
LuaGetParam( L, 4, nFilter) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo il file
|
||||
bool bOk = ExeExportDxf( nGroupId, sFilePath, nFlag) ;
|
||||
bool bOk = ExeExportDxf( nGroupId, sFilePath, nFlag, nFilter) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
@@ -209,11 +264,13 @@ LuaExportDxf( lua_State* L)
|
||||
static int
|
||||
LuaExportStl( lua_State* L)
|
||||
{
|
||||
// 2 parametri, GroupId e path del file da esportare
|
||||
// 2 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 = ExeExportStl( nGroupId, sFilePath) ;
|
||||
@@ -226,14 +283,16 @@ LuaExportStl( lua_State* L)
|
||||
static int
|
||||
LuaExport3MF( lua_State* L)
|
||||
{
|
||||
// 2 parametri, GroupId e path del file da esportare
|
||||
// 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 = ExeExport3MF( nGroupId, sFilePath) ;
|
||||
bool bOk = ExeExport3MF( nGroupId, sFilePath, nFilter) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
@@ -241,19 +300,19 @@ LuaExport3MF( lua_State* L)
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaExportThreeJS( lua_State* L)
|
||||
LuaExport3dm( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri, GroupId e path del file da esportare [, Filter]
|
||||
// 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);
|
||||
int nFilter = EEXFLT_DEFAULT ;
|
||||
LuaGetParam( L, 3, nFilter) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo il file
|
||||
bool bOk = ExeExportThreeJS( nGroupId, sFilePath, nFilter) ;
|
||||
// restituisco il risultato
|
||||
// creo il file
|
||||
bool bOk = ExeExport3dm( nGroupId, sFilePath, nFilter) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
@@ -262,7 +321,7 @@ LuaExportThreeJS( lua_State* L)
|
||||
static int
|
||||
LuaExportSvg( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri, GroupId, Path del file da esportare [, Filter]
|
||||
// 2 o 3 parametri : GroupId, Path del file da esportare [, Filter]
|
||||
int nGroupId ;
|
||||
LuaCheckParam( L, 1, nGroupId)
|
||||
string sFilePath ;
|
||||
@@ -277,6 +336,25 @@ LuaExportSvg( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaExportThreeJS( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : GroupId, 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 = ExeExportThreeJS( nGroupId, sFilePath, nFilter) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallExchange( LuaMgr& luaMgr)
|
||||
@@ -290,12 +368,16 @@ LuaInstallExchange( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtImportDxf", LuaImportDxf) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtImportPnt", LuaImportPnt) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtImportStl", LuaImportStl) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtImportOff", LuaImportOff) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtImportPly", LuaImportPly) ;
|
||||
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( "EgtExportThreeJS", LuaExportThreeJS) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtExport3dm", LuaExport3dm) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtExportSvg", LuaExportSvg) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtExportThreeJS", LuaExportThreeJS) ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
@@ -344,6 +344,172 @@ LuaCreateAlignedDimension( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateRadialDimension( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : nParentId, nCrvId, ptDim, Text [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
int nCrvId ;
|
||||
LuaCheckParam( L, 2, nCrvId) ;
|
||||
Point3d ptDim ;
|
||||
LuaCheckParam( L, 3, ptDim) ;
|
||||
string sText ;
|
||||
LuaCheckParam( L, 4, sText) ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
LuaClearStack( L ) ;
|
||||
// creo la quota allineata
|
||||
int nId = ExeCreateRadialDimension( nParentId, nCrvId, ptDim, sText, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateDiametralDimension( lua_State* L )
|
||||
{
|
||||
// 4 o 5 parametri : nParentId, nCrvId, ptDim, Text [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
int nCrvId ;
|
||||
LuaCheckParam( L, 2, nCrvId) ;
|
||||
Point3d ptDim ;
|
||||
LuaCheckParam( L, 3, ptDim) ;
|
||||
string sText ;
|
||||
LuaCheckParam( L, 4, sText) ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo la quota allineata
|
||||
int nId = ExeCreateDiametralDimension( nParentId, nCrvId, ptDim, sText, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateAngularDimension(lua_State* L)
|
||||
{
|
||||
// 6 o 7 parametri : ParentId, ptV, ptP1, ptP2, ptDim, Text [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
Point3d ptV ;
|
||||
LuaCheckParam( L, 2, ptV) ;
|
||||
Point3d ptP1 ;
|
||||
LuaCheckParam( L, 3, ptP1) ;
|
||||
Point3d ptP2 ;
|
||||
LuaCheckParam( L, 4, ptP2) ;
|
||||
Point3d ptDim ;
|
||||
LuaCheckParam( L, 5, ptDim) ;
|
||||
string sText ;
|
||||
LuaCheckParam( L, 6, sText) ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 7, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo la quota angolare
|
||||
int nId = ExeCreateAngularDimension( nParentId, ptV, ptP1, ptP2, ptDim, sText, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateAngularDimensionEx(lua_State* L)
|
||||
{
|
||||
// 7 o 8 parametri : ParentId, ptV1, ptP1, ptV2, ptP2, ptDim, Text [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
Point3d ptV1 ;
|
||||
LuaCheckParam( L, 2, ptV1) ;
|
||||
Point3d ptP1 ;
|
||||
LuaCheckParam( L, 3, ptP1) ;
|
||||
Point3d ptV2 ;
|
||||
LuaCheckParam( L, 4, ptV2) ;
|
||||
Point3d ptP2 ;
|
||||
LuaCheckParam( L, 5, ptP2) ;
|
||||
Point3d ptDim ;
|
||||
LuaCheckParam( L, 6, ptDim) ;
|
||||
string sText ;
|
||||
LuaCheckParam( L, 7, sText) ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 8, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo la quota angolare
|
||||
int nId = ExeCreateAngularDimensionEx( nParentId, ptV1, ptP1, ptV2, ptP2, ptDim, sText, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateAngularDimensionFromLines( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : nParentId, vLineIds, ptDim, Text [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
INTVECTOR vLineIds ;
|
||||
LuaCheckParam( L, 2, vLineIds) ;
|
||||
Point3d ptDim ;
|
||||
LuaCheckParam( L, 3, ptDim) ;
|
||||
string sText ;
|
||||
LuaCheckParam( L, 4, sText) ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
LuaClearStack( L ) ;
|
||||
// creo la quota allineata
|
||||
int nId = ExeCreateAngularDimensionFromLines( nParentId, vLineIds, ptDim, sText, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L ) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateAngularDimensionFromArc( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : nParentId, nCrvId, ptDim, Text [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
int nCrvId ;
|
||||
LuaCheckParam( L, 2, nCrvId) ;
|
||||
Point3d ptDim ;
|
||||
LuaCheckParam( L, 3, ptDim) ;
|
||||
string sText ;
|
||||
LuaCheckParam( L, 4, sText) ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo la quota allineata
|
||||
int nId = ExeCreateAngularDimensionFromArc( nParentId, nCrvId, ptDim, sText, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallGdbCreate( LuaMgr& luaMgr)
|
||||
@@ -361,5 +527,11 @@ LuaInstallGdbCreate( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtHorizontalDimension", LuaCreateHorizontalDimension) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtVerticalDimension", LuaCreateVerticalDimension) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtAlignedDimension", LuaCreateAlignedDimension) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRadialDimension", LuaCreateRadialDimension) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtDiametralDimension", LuaCreateDiametralDimension) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtAngularDimension", LuaCreateAngularDimension) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtAngularDimensionEx", LuaCreateAngularDimensionEx) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtAngularDimensionFromLines", LuaCreateAngularDimensionFromLines) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtAngularDimensionFromArc", LuaCreateAngularDimensionFromArc) ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
@@ -425,6 +425,60 @@ LuaCreateArc3P( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateArc2PR( lua_State* L)
|
||||
{
|
||||
// 5 o 6 parametri : ParentId, PtStart, PtEnd, dRad, bCCW [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
Point3d ptStart ;
|
||||
LuaCheckParam( L, 2, ptStart)
|
||||
Point3d ptEnd ;
|
||||
LuaCheckParam( L, 3, ptEnd)
|
||||
double dRad ;
|
||||
LuaCheckParam( L, 4, dRad)
|
||||
bool bCCW ;
|
||||
LuaCheckParam( L, 5, bCCW) ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 6, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo l'arco
|
||||
int nId = ExeCreateArc2PR( nParentId, ptStart, ptEnd, dRad, bCCW, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateArc2PB( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : ParentId, PtStart, PtEnd, dBulge [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
Point3d ptStart ;
|
||||
LuaCheckParam( L, 2, ptStart)
|
||||
Point3d ptEnd ;
|
||||
LuaCheckParam( L, 3, ptEnd)
|
||||
double dBulge ;
|
||||
LuaCheckParam( L, 4, dBulge)
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo l'arco
|
||||
int nId = ExeCreateArc2PB( nParentId, ptStart, ptEnd, dBulge, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateArc2PD( lua_State* L)
|
||||
@@ -674,6 +728,27 @@ LuaCreateCurveBezierFromArc( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateCurveBezierFromCurve( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : ParentId, nCrvId [, bRat]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
int nCrvId ;
|
||||
LuaCheckParam( L, 2, nCrvId)
|
||||
bool bRat = true ;
|
||||
LuaGetParam( L, 3, bRat) ;
|
||||
// creo la versione bezier della curva
|
||||
int nId = ExeCreateCurveBezierFromCurve( nParentId, nCrvId, bRat) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateCurveCompo( lua_State* L)
|
||||
@@ -1057,6 +1132,8 @@ LuaInstallGdbCreateCurve( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtArcC2P", LuaCreateArcC2P) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtArcC2PEx", LuaCreateArcC2PEx) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtArc3P", LuaCreateArc3P) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtArc2PR", LuaCreateArc2PR) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtArc2PB", LuaCreateArc2PB) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtArc2PD", LuaCreateArc2PD) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtArc2PDEx", LuaCreateArc2PDEx) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtArc2PV", LuaCreateArc2PV) ;
|
||||
@@ -1066,6 +1143,7 @@ LuaInstallGdbCreateCurve( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveBezier", LuaCreateCurveBezier) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveBezierRat", LuaCreateCurveBezierRational) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveBezierFromArc", LuaCreateCurveBezierFromArc) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveBezierFromCurve", LuaCreateCurveBezierFromCurve) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompo", LuaCreateCurveCompo) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoByChain", LuaCreateCurveCompoByChain) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoByReorder", LuaCreateCurveCompoByReorder) ;
|
||||
|
||||
+731
-46
@@ -14,6 +14,8 @@
|
||||
//--------------------------- Include ----------------------------------------
|
||||
#include "stdafx.h"
|
||||
#include "LUA.h"
|
||||
#include "EXE_Const.h"
|
||||
#include "/EgtDev/Include/EGkSurfTriMesh.h"
|
||||
#include "/EgtDev/Include/EXeExecutor.h"
|
||||
#include "/EgtDev/Include/EXeConst.h"
|
||||
#include "/EgtDev/Include/EGkLuaAux.h"
|
||||
@@ -22,9 +24,6 @@
|
||||
|
||||
using namespace std ;
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static const double LIN_TOL_DEF = 0.05 ;
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfFrRectangle( lua_State* L)
|
||||
@@ -149,7 +148,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 ;
|
||||
@@ -158,9 +157,31 @@ 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) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfTmEmpty( lua_State* L)
|
||||
{
|
||||
// 1 parametro : ParentId
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
LuaClearStack( L) ;
|
||||
// creo STM vuoto
|
||||
int nId = ExeCreateSurfTmEmpty( nParentId) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
@@ -320,7 +341,7 @@ LuaCreateSurfTmCylinder( lua_State* L)
|
||||
LuaCheckParam( L, 4, dRad)
|
||||
double dHeight ;
|
||||
LuaCheckParam( L, 5, dHeight)
|
||||
double dLinTol = LIN_TOL_DEF ;
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
if ( LuaGetParam( L, 6, dLinTol))
|
||||
LuaGetParam( L, 7, nRefType) ;
|
||||
@@ -352,7 +373,7 @@ LuaCreateSurfTmCone( lua_State* L)
|
||||
LuaCheckParam( L, 4, dRad)
|
||||
double dHeight ;
|
||||
LuaCheckParam( L, 5, dHeight)
|
||||
double dLinTol = LIN_TOL_DEF ;
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
if ( LuaGetParam( L, 6, dLinTol))
|
||||
LuaGetParam( L, 7, nRefType) ;
|
||||
@@ -380,14 +401,14 @@ LuaCreateSurfTmSphere( lua_State* L)
|
||||
LuaCheckParam( L, 2, ptOrig)
|
||||
double dRad ;
|
||||
LuaCheckParam( L, 3, dRad)
|
||||
double dLinTol = LIN_TOL_DEF ;
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
if ( LuaGetParam( L, 4, dLinTol))
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
else
|
||||
LuaGetParam( L, 4, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo STM cilindro
|
||||
// creo STM sfera
|
||||
int nId = ExeCreateSurfTmSphere( nParentId, ptOrig, dRad, dLinTol, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
@@ -397,6 +418,178 @@ LuaCreateSurfTmSphere( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfTmPyramidFrustum( lua_State* L)
|
||||
{
|
||||
// 6 parametri : ParentId, dBaseDimX, dBaseDimY, dTopDimX, dTopDimY, dHeight
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
double dBaseDimX ;
|
||||
LuaCheckParam( L, 2, dBaseDimX)
|
||||
double dBaseDimY ;
|
||||
LuaCheckParam( L, 3, dBaseDimY)
|
||||
double dTopDimX ;
|
||||
LuaCheckParam( L, 4, dTopDimX)
|
||||
double dTopDimY ;
|
||||
LuaCheckParam( L, 5, dTopDimY)
|
||||
double dHeight ;
|
||||
LuaCheckParam( L, 6, dHeight)
|
||||
LuaClearStack( L) ;
|
||||
// creo STM cilindro
|
||||
int nId = ExeCreateSurfTmPyramidFrustum( nParentId, dBaseDimX, dBaseDimY, dTopDimX, dTopDimY, dHeight) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfTmConeFrustum( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : ParentId, dBaseRad, dTopRad, dHeight [, dTol]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
double dBaseRad ;
|
||||
LuaCheckParam( L, 2, dBaseRad)
|
||||
double dTopRad ;
|
||||
LuaCheckParam( L, 3, dTopRad)
|
||||
double dHeight ;
|
||||
LuaCheckParam( L, 4, dHeight)
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
LuaGetParam( L, 5, dLinTol) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo STM cilindro
|
||||
int nId = ExeCreateSurfTmConeFrustum( nParentId, dBaseRad, dTopRad, dHeight, dLinTol) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfTmTriangle( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : ParentId, PtP1, PtP2, PtP3 [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
Point3d PtP1 ;
|
||||
LuaCheckParam( L, 2, PtP1)
|
||||
Point3d PtP2 ;
|
||||
LuaCheckParam( L, 3, PtP2)
|
||||
Point3d PtP3 ;
|
||||
LuaCheckParam( L, 4, PtP3)
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo STM triangolo
|
||||
int nId = ExeCreateSurfTmTriangle( nParentId, PtP1, PtP2, PtP3, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfTmRectangle( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : ParentId, PtO, PtL, PtT [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
Point3d ptO ;
|
||||
LuaCheckParam( L, 2, ptO)
|
||||
Point3d ptL ;
|
||||
LuaCheckParam( L, 3, ptL)
|
||||
Point3d ptT ;
|
||||
LuaCheckParam( L, 4, ptT)
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo STM rettangolo
|
||||
int nId = ExeCreateSurfTmRectangle( nParentId, ptO, ptL, ptT, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfTmByPolygon( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : ParentId, ptPs [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
PNTVECTOR vPnt ;
|
||||
LuaCheckParam( L, 2, vPnt)
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 3, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo una polilinea a partire dai punti
|
||||
PolyLine PL ;
|
||||
for ( size_t i = 0 ; i < vPnt.size() ; ++ i) {
|
||||
if ( ! vPnt[i].IsValid())
|
||||
break ;
|
||||
PL.AddUPoint( double( i), vPnt[i]) ;
|
||||
}
|
||||
PL.Close() ;
|
||||
// creo la SurfTriMesh del poligono
|
||||
int nId = ExeCreateSurfTmByPolygon( nParentId, PL, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfTmByPolygonWithHoles( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : ParentId, ptPs [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
PNTVECTOR vPnt ;
|
||||
LuaCheckParam( L, 2, vPnt)
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 3, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo un vettore di polilinee a partire dai punti
|
||||
POLYLINEVECTOR vPL ;
|
||||
vPL.push_back( {}) ;
|
||||
for ( size_t i = 0 ; i < vPnt.size() ; ++ i) {
|
||||
if ( vPnt[i].IsValid())
|
||||
vPL.back().AddUPoint( double( i), vPnt[i]) ;
|
||||
else {
|
||||
if ( ! vPL.empty())
|
||||
vPL.back().Close() ;
|
||||
vPL.push_back( {}) ;
|
||||
}
|
||||
}
|
||||
if ( ! vPL.empty())
|
||||
vPL.back().Close() ;
|
||||
// creo la SurfTriMesh del poligono
|
||||
int nId = ExeCreateSurfTmByPolygonWithHoles( nParentId, vPL, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfTmByFlatContour( lua_State* L)
|
||||
@@ -406,7 +599,7 @@ LuaCreateSurfTmByFlatContour( lua_State* L)
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
int nCrvId ;
|
||||
LuaCheckParam( L, 2, nCrvId)
|
||||
double dLinTol = LIN_TOL_DEF ;
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
if ( lua_gettop( L) >= 3)
|
||||
LuaCheckParam( L, 3, dLinTol) ;
|
||||
LuaClearStack( L) ;
|
||||
@@ -429,7 +622,7 @@ LuaCreateSurfTmByRegion( lua_State* L)
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
INTVECTOR vCrvIds ;
|
||||
LuaCheckParam( L, 2, vCrvIds)
|
||||
double dLinTol = LIN_TOL_DEF ;
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
if ( lua_gettop( L) >= 3)
|
||||
LuaCheckParam( L, 3, dLinTol) ;
|
||||
LuaClearStack( L) ;
|
||||
@@ -454,12 +647,10 @@ LuaCreateSurfTmByExtrusion( lua_State* L)
|
||||
LuaCheckParam( L, 2, vCrvIds)
|
||||
Vector3d vtExtr ;
|
||||
LuaCheckParam( L, 3, vtExtr)
|
||||
double dLinTol = LIN_TOL_DEF ;
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
LuaGetParam( L, 4, dLinTol) ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
if ( LuaGetParam( L, 4, dLinTol))
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
else
|
||||
LuaGetParam( L, 4, nRefType) ;
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo STM estrudendo uno o più percorsi, se piani si possono mettere i tappi
|
||||
int nId = ExeCreateSurfTmByExtrusion( nParentId, vCrvIds, vtExtr,
|
||||
@@ -483,7 +674,7 @@ LuaCreateSurfTmByRegionExtrusion( lua_State* L)
|
||||
LuaCheckParam( L, 2, vCrvIds)
|
||||
Vector3d vtExtr ;
|
||||
LuaCheckParam( L, 3, vtExtr)
|
||||
double dLinTol = LIN_TOL_DEF ;
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
if ( LuaGetParam( L, 4, dLinTol))
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
@@ -515,7 +706,7 @@ LuaCreateSurfTmByRevolve( lua_State* L)
|
||||
LuaCheckParam( L, 4, vtAx)
|
||||
bool bCapEnds ;
|
||||
LuaCheckParam( L, 5, bCapEnds)
|
||||
double dLinTol = LIN_TOL_DEF ;
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
if ( LuaGetParam( L, 6, dLinTol))
|
||||
LuaGetParam( L, 7, nRefType) ;
|
||||
@@ -553,7 +744,7 @@ LuaCreateSurfTmByScrewing( lua_State* L)
|
||||
bool bCapEnds = false ;
|
||||
if ( LuaGetParam( L, nPar, bCapEnds))
|
||||
++ nPar ;
|
||||
double dLinTol = LIN_TOL_DEF ;
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
if ( LuaGetParam( L, nPar, dLinTol))
|
||||
++ nPar ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
@@ -570,9 +761,76 @@ LuaCreateSurfTmByScrewing( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfTmRectSwept( lua_State* L)
|
||||
{
|
||||
// 7 o 8 parametri : ParentId, dDimH, dDimV, dBevelH, dBevelV, GuideId, nCapType [, dTol]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
double dDimH ;
|
||||
LuaCheckParam( L, 2, dDimH)
|
||||
double dDimV ;
|
||||
LuaCheckParam( L, 3, dDimV)
|
||||
double dBevelH ;
|
||||
LuaCheckParam( L, 4, dBevelH)
|
||||
double dBevelV ;
|
||||
LuaCheckParam( L, 5, dBevelV)
|
||||
int nGuideId ;
|
||||
LuaCheckParam( L, 6, nGuideId)
|
||||
int nCapType ;
|
||||
LuaCheckParam( L, 7, nCapType)
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
LuaGetParam( L, 8, dLinTol) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo STM rectangular swept
|
||||
int nId = ExeCreateSurfTmRectSwept( nParentId, dDimH, dDimV, dBevelH, dBevelV, nGuideId, nCapType, dLinTol) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfTmSwept( lua_State* L)
|
||||
{
|
||||
// 4, 5, 6 o 7 parametri : ParentId, SectId, GuideId [, vtAx], bCapEnds [, dTol] [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
int nSectId ;
|
||||
LuaCheckParam( L, 2, nSectId)
|
||||
int nGuideId ;
|
||||
LuaCheckParam( L, 3, nGuideId)
|
||||
int nPar = 4 ;
|
||||
Vector3d vtAx = V_NULL ;
|
||||
if ( LuaGetParam( L, nPar, vtAx))
|
||||
++ nPar ;
|
||||
bool bCapEnds ;
|
||||
LuaCheckParam( L, nPar, bCapEnds)
|
||||
++ nPar ;
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
if ( LuaGetParam( L, nPar, dLinTol))
|
||||
++ nPar ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
if ( LuaGetParam( L, nPar, nRefType))
|
||||
++ nPar ;
|
||||
LuaClearStack( L) ;
|
||||
// creo STM swept
|
||||
int nId = ExeCreateSurfTmSwept( nParentId, nSectId, nGuideId, vtAx, bCapEnds, dLinTol, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfTmTransSwept( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : ParentId, SectId, GuideId, bCapEnds [, dTol]
|
||||
int nParentId ;
|
||||
@@ -583,12 +841,11 @@ LuaCreateSurfTmSwept( lua_State* L)
|
||||
LuaCheckParam( L, 3, nGuideId)
|
||||
bool bCapEnds ;
|
||||
LuaCheckParam( L, 4, bCapEnds)
|
||||
double dLinTol = LIN_TOL_DEF ;
|
||||
if ( lua_gettop( L) >= 5)
|
||||
LuaCheckParam( L, 5, dLinTol) ;
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
LuaGetParam( L, 5, dLinTol) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo STM swept
|
||||
int nId = ExeCreateSurfTmSwept( nParentId, nSectId, nGuideId, bCapEnds, dLinTol) ;
|
||||
// creo STM swept di traslazione
|
||||
int nId = ExeCreateSurfTmTransSwept( nParentId, nSectId, nGuideId, bCapEnds, dLinTol) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
@@ -609,7 +866,7 @@ LuaCreateSurfTmRuled( lua_State* L)
|
||||
int nPtOrCrvId2 ;
|
||||
LuaCheckParam( L, 3, nPtOrCrvId2)
|
||||
string sType = "IP" ;
|
||||
double dLinTol = LIN_TOL_DEF ;
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
if ( LuaGetParam( L, 4, sType))
|
||||
LuaGetParam( L, 5, dLinTol) ;
|
||||
else
|
||||
@@ -676,26 +933,6 @@ LuaCreateSurfTmBySewing( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfTmBySurfBezier( lua_State* L)
|
||||
{
|
||||
// 2 parametri : ParentId, nSbezId
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
int nZmapId ;
|
||||
LuaCheckParam( L, 2, nZmapId)
|
||||
LuaClearStack( L) ;
|
||||
// creo STM partendo da superficie di Bezier
|
||||
int nId = ExeCreateSurfTmBySurfBezier( nParentId, nZmapId) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfTmByVolZmap( lua_State* L)
|
||||
@@ -787,6 +1024,432 @@ 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 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfBezierTria2D( 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 = ExeCreateSurfBezierTria2D( 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 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateBezierSphere( lua_State* L)
|
||||
{
|
||||
// 3 o 4 parametri : ParentId, ptCenter, dRad [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
Point3d ptCenter ;
|
||||
LuaCheckParam( L, 2, ptCenter)
|
||||
double dRad ;
|
||||
LuaCheckParam( L, 3, dRad)
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 4, nRefType) ;
|
||||
// creo la superficie
|
||||
int nCount = 0 ;
|
||||
int nId = ExeCreateBezierSphere( nParentId, ptCenter, dRad, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL) {
|
||||
LuaSetParam( L, nId) ;
|
||||
LuaSetParam( L, nCount) ;
|
||||
}
|
||||
else {
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L) ;
|
||||
}
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfBzByFlatContour( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : ParentId, CrvId [, dTol]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
int nCrvId ;
|
||||
LuaCheckParam( L, 2, nCrvId)
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
if ( lua_gettop( L) >= 3)
|
||||
LuaCheckParam( L, 3, dLinTol) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo Sbz piana e la trimmo con il contorno
|
||||
int nId = ExeCreateSurfBzByFlatContour( nParentId, nCrvId, dLinTol) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfBzByRegion( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : ParentId, CrvIds [, dTol]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
INTVECTOR vCrvIds ;
|
||||
LuaCheckParam( L, 2, vCrvIds)
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
if ( lua_gettop( L) >= 3)
|
||||
LuaCheckParam( L, 3, dLinTol) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo una Sbz piana a cui aggiungo le curve come trim
|
||||
int nId = ExeCreateSurfBzByRegion( nParentId, vCrvIds, dLinTol) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfBzByExtrusion( lua_State* L)
|
||||
{
|
||||
// 3 o 4 o 5 o 6 parametri : ParentId, CrvId, vtExtr [, bool bCapEnds] [, dTol] [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
int nCrvId ;
|
||||
LuaCheckParam( L, 2, nCrvId)
|
||||
Vector3d vtExtr ;
|
||||
LuaCheckParam( L, 3, vtExtr)
|
||||
bool bCapEnds = false ;
|
||||
int nPar = 4 ;
|
||||
if ( LuaGetParam( L, nPar, bCapEnds))
|
||||
++ nPar ;
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
if ( LuaGetParam( L, nPar, dLinTol))
|
||||
++ nPar ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, nPar, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo SurfBezier estrudendo un percorso, se piano si possono mettere i tappi
|
||||
int nCount = 0 ;
|
||||
int nId = ExeCreateSurfBzByExtrusion( nParentId, nCrvId, vtExtr, bCapEnds, dLinTol, nRefType, &nCount) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L, nCount) ;
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfBzByRegionExtrusion( lua_State* L)
|
||||
{
|
||||
// 3 o 4 o 5 o 6 parametri : ParentId, CrvIds, vtExtr [, bool bCapEnds] [, dTol] [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
INTVECTOR vCrvIds ;
|
||||
LuaCheckParam( L, 2, vCrvIds)
|
||||
Vector3d vtExtr ;
|
||||
LuaCheckParam( L, 3, vtExtr)
|
||||
bool bCapEnds = false ;
|
||||
int nPar = 4 ;
|
||||
if ( LuaGetParam( L, nPar, bCapEnds))
|
||||
++ nPar ;
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
if ( LuaGetParam( L, nPar, dLinTol))
|
||||
++ nPar ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, nPar, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo STM estrudendo uno o più percorsi, se piani si possono mettere i tappi
|
||||
int nId = ExeCreateSurfBzByRegionExtrusion( nParentId, vCrvIds, vtExtr, bCapEnds, dLinTol, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfBzByScrewing( lua_State* L)
|
||||
{
|
||||
// 6 o 7 o 8 o 9 parametri : ParentId, CrvId, ptAx, vtAx, dAngRotDeg, dMove [, bCapEnds] [, dTol] [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
int nCrvId ;
|
||||
LuaCheckParam( L, 2, nCrvId)
|
||||
Point3d ptAx ;
|
||||
LuaCheckParam( L, 3, ptAx)
|
||||
Vector3d vtAx ;
|
||||
LuaCheckParam( L, 4, vtAx)
|
||||
double dAngRotDeg ;
|
||||
LuaCheckParam( L, 5, dAngRotDeg)
|
||||
double dMove ;
|
||||
LuaCheckParam( L, 6, dMove)
|
||||
int nPar = 7 ;
|
||||
bool bCapEnds = false ;
|
||||
if ( LuaGetParam( L, nPar, bCapEnds))
|
||||
++ nPar ;
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
if ( LuaGetParam( L, nPar, dLinTol))
|
||||
++ nPar ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
if ( LuaGetParam( L, nPar, nRefType))
|
||||
++ nPar ;
|
||||
LuaClearStack( L) ;
|
||||
// creo STM riempiendo un contorno piano
|
||||
int nId = ExeCreateSurfBzByScrewing( nParentId, nCrvId, ptAx, vtAx, dAngRotDeg, dMove, bCapEnds, dLinTol, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfBzByRevolve( lua_State* L)
|
||||
{
|
||||
// 4 o 5 o 6 o 7 parametri : ParentId, CrvId, ptAx, vtAx [, bCapEnds] [, dTol] [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
int nCrvId ;
|
||||
LuaCheckParam( L, 2, nCrvId)
|
||||
Point3d ptAx ;
|
||||
LuaCheckParam( L, 3, ptAx)
|
||||
Vector3d vtAx ;
|
||||
LuaCheckParam( L, 4, vtAx)
|
||||
int nPar = 5 ;
|
||||
bool bCapEnds = false ;
|
||||
if ( LuaGetParam( L, nPar, bCapEnds))
|
||||
++ nPar ;
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
if ( LuaGetParam( L, nPar, dLinTol))
|
||||
++ nPar ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
if ( LuaGetParam( L, nPar, nRefType))
|
||||
++ nPar ;
|
||||
LuaClearStack( L) ;
|
||||
// creo STM riempiendo un contorno piano
|
||||
int nId = ExeCreateSurfBzByRevolve( nParentId, nCrvId, ptAx, vtAx, bCapEnds, dLinTol, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfBzByPointCurve( lua_State* L)
|
||||
{
|
||||
// 4 o 5 o 6 o 7 parametri : ParentId, CrvId, ptAx, vtAx [, bCapEnds] [, dTol] [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
int nCrvId ;
|
||||
LuaCheckParam( L, 2, nCrvId)
|
||||
Point3d ptTop ;
|
||||
LuaCheckParam( L, 3, ptTop)
|
||||
int nPar = 4 ;
|
||||
bool bCapEnds = false ;
|
||||
if ( LuaGetParam( L, nPar, bCapEnds))
|
||||
++ nPar ;
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
if ( LuaGetParam( L, nPar, dLinTol))
|
||||
++ nPar ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
if ( LuaGetParam( L, nPar, nRefType))
|
||||
++ nPar ;
|
||||
LuaClearStack( L) ;
|
||||
// creo STM riempiendo un contorno piano
|
||||
int nId = ExeCreateSurfBzByPointCurve( nParentId, nCrvId, ptTop, bCapEnds, dLinTol, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfBzRuled( lua_State* L)
|
||||
{
|
||||
// 4 o 5 o 6 parametri : ParentId, CrvId1, CrvId2, nRuledType [, bCapEnds] [, dTol]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
int nCrvId1 ;
|
||||
LuaCheckParam( L, 2, nCrvId1)
|
||||
int nCrvId2 ;
|
||||
LuaCheckParam( L, 3, nCrvId2)
|
||||
int nRuledType ;
|
||||
LuaCheckParam( L, 4, nRuledType)
|
||||
bool bCapEnds = false ;
|
||||
int nPar = 5 ;
|
||||
if ( LuaGetParam( L, nPar, bCapEnds))
|
||||
++ nPar ;
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
LuaGetParam( L, nPar, dLinTol) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo una surf bezier come rigata tra le due curve passate
|
||||
int nId = ExeCreateSurfBzRuled( nParentId, nCrvId1, nCrvId2, nRuledType, bCapEnds, dLinTol) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfBzRuledGuided( lua_State* L)
|
||||
{
|
||||
// 4 o 5 o 6 parametri : ParentId, CrvId1, CrvId2 nLayGuides [, bCapEnds] [, dTol]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
int nCrvId1 ;
|
||||
LuaCheckParam( L, 2, nCrvId1)
|
||||
int nCrvId2 ;
|
||||
LuaCheckParam( L, 3, nCrvId2)
|
||||
int nLayGuides ;
|
||||
LuaCheckParam( L, 4, nLayGuides)
|
||||
bool bCapEnds = false ;
|
||||
int nPar = 5 ;
|
||||
if ( LuaGetParam( L, nPar, bCapEnds))
|
||||
++ nPar ;
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
LuaGetParam( L, nPar, dLinTol) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo una surf bezier come rigata tra le due curve passate, usando le isocurve nel layer nLayIso
|
||||
int nId = ExeCreateSurfBzRuledGuided( nParentId, nCrvId1, nCrvId2, nLayGuides, bCapEnds, dLinTol) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfBzSkinned( lua_State* L)
|
||||
{
|
||||
// 2 o 3 o 4 parametri : ParentId, vCrvIds [, bCapEnds] [, dTol]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
INTVECTOR vCrvIds ;
|
||||
LuaCheckParam( L, 2, vCrvIds)
|
||||
bool bCapEnds = false ;
|
||||
int nPar = 3 ;
|
||||
if ( LuaGetParam( L, nPar, bCapEnds))
|
||||
++ nPar ;
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
LuaGetParam( L, nPar, dLinTol) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo STM riempiendo un contorno piano
|
||||
int nId = ExeCreateSurfBzSkinned( nParentId, vCrvIds, bCapEnds, dLinTol) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateSurfBzSwept( lua_State* L)
|
||||
{
|
||||
// 3 o 4 o 5 o 6 o 7 parametri : ParentId, nSectCrvId, nGuideCrvId [, vtAx] [, bCapEnds] [, dTol] [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
int nSectId ;
|
||||
LuaCheckParam( L, 2, nSectId)
|
||||
int nGuideId ;
|
||||
LuaCheckParam( L, 3, nGuideId)
|
||||
Vector3d vtAx = V_NULL ;
|
||||
int nPar = 4 ;
|
||||
if ( LuaGetParam( L, nPar, vtAx))
|
||||
++ nPar ;
|
||||
bool bCapEnds = false ;
|
||||
if ( LuaGetParam( L, nPar, bCapEnds))
|
||||
++ nPar ;
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
if ( LuaGetParam( L, nPar, dLinTol))
|
||||
++ nPar ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
if ( LuaGetParam( L, nPar, dLinTol))
|
||||
++ nPar ;
|
||||
LuaClearStack( L) ;
|
||||
// creo STM riempiendo un contorno piano
|
||||
int nId = ExeCreateSurfBzSwept( nParentId, nSectId, nGuideId, vtAx, bCapEnds, dLinTol, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallGdbCreateSurf( LuaMgr& luaMgr)
|
||||
@@ -798,6 +1461,7 @@ LuaInstallGdbCreateSurf( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrDisk", LuaCreateSurfFrDisk) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrFatCurve", LuaCreateSurfFrFatCurve) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFlatRegion", LuaCreateSurfFlatRegion) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmEmpty", LuaCreateSurfTmEmpty) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmPlaneInBBox", LuaCreateSurfTmPlaneInBBox) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmConvexHullInBBox", LuaCreateSurfTmConvexHullInBBox) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmBBox", LuaCreateSurfTmBBox) ;
|
||||
@@ -806,19 +1470,40 @@ LuaInstallGdbCreateSurf( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmCylinder", LuaCreateSurfTmCylinder) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmCone", LuaCreateSurfTmCone) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmSphere", LuaCreateSurfTmSphere) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmPyramidFrustum", LuaCreateSurfTmPyramidFrustum) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmConeFrustum", LuaCreateSurfTmConeFrustum) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmTriangle", LuaCreateSurfTmTriangle) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmRectangle", LuaCreateSurfTmRectangle) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmByPolygon", LuaCreateSurfTmByPolygon) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmByPolygonWithHoles", LuaCreateSurfTmByPolygonWithHoles) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmByFlatContour", LuaCreateSurfTmByFlatContour) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmByRegion", LuaCreateSurfTmByRegion) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmByExtrusion", LuaCreateSurfTmByExtrusion) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmByRegionExtrusion", LuaCreateSurfTmByRegionExtrusion) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmByRevolve", LuaCreateSurfTmByRevolve) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmByScrewing", LuaCreateSurfTmByScrewing) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmRectSwept", LuaCreateSurfTmRectSwept) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmSwept", LuaCreateSurfTmSwept) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmTransSwept", LuaCreateSurfTmTransSwept) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmRuled", LuaCreateSurfTmRuled) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmByTriangles", LuaCreateSurfTmByTriangles) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmBySewing", LuaCreateSurfTmBySewing) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmBySurfBezier", LuaCreateSurfTmBySurfBezier) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmByVolZmap", LuaCreateSurfTmByVolZmap) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBezier", LuaCreateSurfBezier) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBezierRat", LuaCreateSurfBezierRational) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBezierLeaves", LuaCreateSurfBezierLeaves) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBezierTria2D", LuaCreateSurfBezierTria2D) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBzSphere", LuaCreateBezierSphere) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBzByFlatContour", LuaCreateSurfBzByFlatContour) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBzByRegion", LuaCreateSurfBzByRegion) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBzByExtrusion", LuaCreateSurfBzByExtrusion) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBzByRegionExtrusion", LuaCreateSurfBzByRegionExtrusion) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBzByScrewing", LuaCreateSurfBzByScrewing) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBzByRevolve", LuaCreateSurfBzByRevolve) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBzByPointCurve", LuaCreateSurfBzByPointCurve) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBzRuled", LuaCreateSurfBzRuled) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBzRuledGuided", LuaCreateSurfBzRuledGuided) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBzSkinned", LuaCreateSurfBzSkinned) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBzSwept", LuaCreateSurfBzSwept) ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
+45
-3
@@ -14,6 +14,7 @@
|
||||
//--------------------------- Include ----------------------------------------
|
||||
#include "stdafx.h"
|
||||
#include "LUA.h"
|
||||
#include "/EgtDev/Include/EGkSurfTriMesh.h"
|
||||
#include "/EgtDev/Include/EXeExecutor.h"
|
||||
#include "/EgtDev/Include/EXeConst.h"
|
||||
#include "/EgtDev/Include/EGkLuaAux.h"
|
||||
@@ -54,6 +55,42 @@ LuaCreateVolZmapBox( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateVolZmapEmpty( lua_State* L)
|
||||
{
|
||||
// 6 o 7 o 8 parametri : ParentId, PtIni, dDimX, dDimY, dDimZ, dPrec [, bTriDex] [, nRefType]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
Point3d ptIni ;
|
||||
LuaCheckParam( L, 2, ptIni)
|
||||
double dDimX ;
|
||||
LuaCheckParam( L, 3, dDimX)
|
||||
double dDimY ;
|
||||
LuaCheckParam( L, 4, dDimY)
|
||||
double dDimZ ;
|
||||
LuaCheckParam( L, 5, dDimZ)
|
||||
double dPrec ;
|
||||
LuaCheckParam( L, 6, dPrec)
|
||||
bool bTriDex = true ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
if ( ! LuaGetParam( L, 7, bTriDex))
|
||||
LuaGetParam( L, 7, nRefType) ;
|
||||
else
|
||||
LuaGetParam( L, 8, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo VZM parallelepipedo
|
||||
int nId = ExeCreateVolZmapEmpty( nParentId, ptIni, dDimX, dDimY, dDimZ, dPrec, bTriDex, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateVolZmapByRegionExtrusion( lua_State* L)
|
||||
@@ -84,7 +121,7 @@ LuaCreateVolZmapByRegionExtrusion( lua_State* L)
|
||||
static int
|
||||
LuaCreateVolZmapFromSurfTm( lua_State* L)
|
||||
{
|
||||
// 3 o 4 parametri : ParentId, StmId, dPrec [, bTriDex]
|
||||
// 3 o 4 o 5 parametri : ParentId, StmId, dPrec [, bTriDex] [, dExtraBox]
|
||||
int nParentId ;
|
||||
LuaCheckParam( L, 1, nParentId)
|
||||
int nStmId ;
|
||||
@@ -92,10 +129,14 @@ LuaCreateVolZmapFromSurfTm( lua_State* L)
|
||||
double dPrec ;
|
||||
LuaCheckParam( L, 3, dPrec)
|
||||
bool bTriDex = true ;
|
||||
LuaGetParam( L, 4, bTriDex) ;
|
||||
double dExtraBox = 0 ;
|
||||
if ( LuaGetParam( L, 4, bTriDex))
|
||||
LuaGetParam( L, 5, dExtraBox) ;
|
||||
else
|
||||
LuaGetParam( L, 4, dExtraBox) ;
|
||||
LuaClearStack( L) ;
|
||||
// creo VZM da superficie trimesh
|
||||
int nId = ExeCreateVolZmapFromSurfTm( nParentId, nStmId, dPrec, bTriDex) ;
|
||||
int nId = ExeCreateVolZmapFromSurfTm( nParentId, nStmId, dPrec, bTriDex, dExtraBox) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
@@ -110,6 +151,7 @@ LuaInstallGdbCreateVol( LuaMgr& luaMgr)
|
||||
{
|
||||
bool bOk = ( &luaMgr != nullptr) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapBox", LuaCreateVolZmapBox) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapEmpty", LuaCreateVolZmapEmpty) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapByRegionExtrusion", LuaCreateVolZmapByRegionExtrusion) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapFromSurfTm", LuaCreateVolZmapFromSurfTm) ;
|
||||
return bOk ;
|
||||
|
||||
+173
-4
@@ -57,6 +57,25 @@ LuaCurveLength( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCurveLengthAtParam( lua_State* L)
|
||||
{
|
||||
// 2 parametri : Id, dPar
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
double dPar ;
|
||||
LuaCheckParam( L, 2, dPar) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero la lunghezza della curva
|
||||
double dLen ;
|
||||
if ( ExeCurveLengthAtParam( nId, dPar, &dLen))
|
||||
LuaSetParam( L, dLen) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCurveParamAtLength( lua_State* L)
|
||||
@@ -142,7 +161,7 @@ LuaCurveIsACircle( lua_State* L)
|
||||
double dToler = EPS_SMALL ;
|
||||
LuaGetParam( L, 2, dToler) ;
|
||||
LuaClearStack( L) ;
|
||||
// verifico se curva è equivalente ad una circonferenza
|
||||
// verifico se curva � equivalente ad una circonferenza
|
||||
Point3d ptCen ;
|
||||
Vector3d vtN ;
|
||||
double dRad ;
|
||||
@@ -166,7 +185,7 @@ LuaCurveIsARectangle( lua_State* L)
|
||||
double dToler = EPS_SMALL ;
|
||||
LuaGetParam( L, 2, dToler) ;
|
||||
LuaClearStack( L) ;
|
||||
// verifico se curva è equivalente ad un rettangolo
|
||||
// verifico se curva � equivalente ad un rettangolo
|
||||
Point3d ptP ;
|
||||
Vector3d vtL1 ;
|
||||
Vector3d vtL2 ;
|
||||
@@ -188,7 +207,7 @@ LuaCurveIsATrapezoid( lua_State* L)
|
||||
double dToler = EPS_SMALL ;
|
||||
LuaGetParam( L, 2, dToler) ;
|
||||
LuaClearStack( L) ;
|
||||
// verifico se curva è equivalente ad un trapezio
|
||||
// verifico se curva � equivalente ad un trapezio
|
||||
Point3d ptP ;
|
||||
Vector3d vtB1 ;
|
||||
Vector3d vtL1 ;
|
||||
@@ -242,6 +261,23 @@ LuaCurveArea( lua_State* L)
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCurveMaxOffset( lua_State* L)
|
||||
{
|
||||
// 2 parametri : Id
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
LuaClearStack( L) ;
|
||||
// recupero la sua area senza eventuali buchi
|
||||
double dMaxOffset ;
|
||||
if ( ExeCurveMaxOffset( nId, dMaxOffset))
|
||||
LuaSetParam( L, dMaxOffset) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCurveExtrusion( lua_State* L)
|
||||
@@ -432,6 +468,25 @@ LuaArcNormVersor( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCurveCompoLength( lua_State* L)
|
||||
{
|
||||
// 2 parametri : Id, nCrv
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nCrv ;
|
||||
LuaCheckParam( L, 2, nCrv)
|
||||
LuaClearStack( L) ;
|
||||
// recupero il centro della curva semplice indicizzata
|
||||
double dLen ;
|
||||
if ( ExeCurveCompoLength( nId, nCrv, dLen))
|
||||
LuaSetParam( L, dLen) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCurveCompoCenter( lua_State* L)
|
||||
@@ -503,7 +558,7 @@ LuaCurveCompoNormVersor( lua_State* L)
|
||||
int nRefId = nId ;
|
||||
LuaGetParam( L, 3, nRefId) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero l'angolo al centro della curva semplice indicizzata
|
||||
// recupero il versore normale della curva semplice indicizzata (non nullo solo se arco)
|
||||
Vector3d vtNorm ;
|
||||
if ( ExeCurveCompoNormVersor( nId, nCrv, nRefId, vtNorm))
|
||||
LuaSetParam( L, vtNorm) ;
|
||||
@@ -512,6 +567,112 @@ LuaCurveCompoNormVersor( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCurveCompoGetTempProp( lua_State* L)
|
||||
{
|
||||
// 1 o 2 parametri : Id [, nPropInd]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nPropInd = 0 ;
|
||||
LuaGetParam( L, 2, nPropInd) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero il vettore delle proprietà temporanee di indice dato
|
||||
INTVECTOR vProp ;
|
||||
if ( ExeCurveCompoGetTempProp( nId, vProp, nPropInd))
|
||||
LuaSetParam( L, vProp) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCurveCompoGetTempParam( lua_State* L)
|
||||
{
|
||||
// 1 o 2 parametri : Id [, nParamInd]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nParamInd = 0 ;
|
||||
LuaGetParam( L, 2, nParamInd) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero il vettore dei parametri temporanei di indice dato
|
||||
DBLVECTOR vParam ;
|
||||
if ( ExeCurveCompoGetTempParam( nId, vParam, nParamInd))
|
||||
LuaSetParam( L, vParam) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaShowCurveBezierControlPoints( lua_State* L)
|
||||
{
|
||||
// 2 parametri : nCrvId, nDestGrpId
|
||||
int nCrvId ;
|
||||
LuaCheckParam( L, 1, nCrvId)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 2, nDestGrpId)
|
||||
LuaClearStack( L) ;
|
||||
int nCount = 0 ;
|
||||
int nId = ExeShowCurveBezierControlPoints( nCrvId, nDestGrpId, &nCount) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL) {
|
||||
LuaSetParam( L, nId) ;
|
||||
LuaSetParam( L, nCount) ;
|
||||
}
|
||||
else {
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L) ;
|
||||
}
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCopyCompoSubCurve( lua_State* L)
|
||||
{
|
||||
// 3 parametri : nCrvId, nSubCrvToCopy, nDestGrpId
|
||||
int nCrvId ;
|
||||
LuaCheckParam( L, 1, nCrvId)
|
||||
int nSubCrvToCopy ;
|
||||
LuaCheckParam( L, 2, nSubCrvToCopy)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 3, nDestGrpId)
|
||||
LuaClearStack( L) ;
|
||||
int nId = ExeCopyCompoSubCurve( nCrvId, nSubCrvToCopy, nDestGrpId) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCopyParamRange( lua_State* L)
|
||||
{
|
||||
// 4 parametri : nCrvId, dUStart, dUEnd, nDestGrpId
|
||||
int nCrvId ;
|
||||
LuaCheckParam( L, 1, nCrvId)
|
||||
double dUStart ;
|
||||
LuaCheckParam( L, 2, dUStart)
|
||||
double dUEnd ;
|
||||
LuaCheckParam( L, 3, dUEnd)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 4, nDestGrpId)
|
||||
LuaClearStack( L) ;
|
||||
int nId = ExeCopyParamRange( nCrvId, dUStart, dUEnd, nDestGrpId) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallGdbGetCurve( LuaMgr& luaMgr)
|
||||
@@ -519,6 +680,7 @@ LuaInstallGdbGetCurve( LuaMgr& luaMgr)
|
||||
bool bOk = ( &luaMgr != nullptr) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveDomain", LuaCurveDomain) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveLength", LuaCurveLength) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveLengthAtParam", LuaCurveLengthAtParam) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveParamAtLength", LuaCurveParamAtLength) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveParamAtPoint", LuaCurveParamAtPoint) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveIsClosed", LuaCurveIsClosed) ;
|
||||
@@ -528,6 +690,7 @@ LuaInstallGdbGetCurve( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveIsATrapezoid", LuaCurveIsATrapezoid) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveAreaXY", LuaCurveAreaXY) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveArea", LuaCurveArea) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveMaxOffset", LuaCurveMaxOffset) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveExtrusion", LuaCurveExtrusion) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveThickness", LuaCurveThickness) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveSelfIntersCount", LuaCurveSelfIntersCount) ;
|
||||
@@ -538,9 +701,15 @@ LuaInstallGdbGetCurve( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtArcAngCenter", LuaArcAngCenter) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtArcDeltaN", LuaArcDeltaN) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtArcNormVersor", LuaArcNormVersor) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoLength", LuaCurveCompoLength) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoCenter", LuaCurveCompoCenter) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoRadius", LuaCurveCompoRadius) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoAngCenter", LuaCurveCompoAngCenter) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoNormVersor", LuaCurveCompoNormVersor) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoGetTempProp", LuaCurveCompoGetTempProp) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoGetTempParam", LuaCurveCompoGetTempParam) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtShowCurveBezierControlPoints", LuaShowCurveBezierControlPoints) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCopyCompoSubCurve", LuaCopyCompoSubCurve) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCopyParamRange", LuaCopyParamRange) ;
|
||||
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 : nId, 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 ;
|
||||
}
|
||||
+389
-27
@@ -40,6 +40,20 @@ LuaSurfArea( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfIsClosed( lua_State* L)
|
||||
{
|
||||
// 1 parametro : Id
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
LuaClearStack( L) ;
|
||||
// verifico se è superficie chiusa
|
||||
bool bOk = ExeSurfIsClosed( nId) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfVolume( lua_State* L)
|
||||
@@ -107,6 +121,25 @@ LuaSurfFrChunkCount( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfFrChunkMaxOffset( lua_State* L)
|
||||
{
|
||||
// 2 parametri : Id, nChunk
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nChunk ;
|
||||
LuaCheckParam( L, 2, nChunk)
|
||||
LuaClearStack( L) ;
|
||||
// recupero la sua area senza eventuali buchi
|
||||
double dMaxOffset ;
|
||||
if ( ExeSurfFrChunkMaxOffset( nId, nChunk, dMaxOffset))
|
||||
LuaSetParam( L, dMaxOffset) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfFrChunkSimpleClassify( lua_State* L)
|
||||
@@ -223,35 +256,18 @@ LuaSurfFrRotateSimpleNoCollision( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfFrGetZigZagInfill( lua_State* L)
|
||||
LuaSurfTmVertexCount( lua_State* L)
|
||||
{
|
||||
// 6 parametri : nId, nDestGrpId, dSideStep, dAng, bAllowStepCorrection, bInvert
|
||||
// 1 parametro : Id
|
||||
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 ;
|
||||
// recupero il numero di vertici della superficie trimesh
|
||||
int nNbr = ExeSurfTmVertexCount( nId) ;
|
||||
LuaSetParam( L, nNbr) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -268,6 +284,93 @@ LuaSurfTmFacetCount( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmPartCount( lua_State* L)
|
||||
{
|
||||
// 1 parametro : Id
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
LuaClearStack( L) ;
|
||||
// recupero il numero di parti della superficie trimesh
|
||||
int nParts = ExeSurfTmPartCount( nId) ;
|
||||
if ( nParts >= 0)
|
||||
LuaSetParam( L, nParts) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmGetVertex( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : Id, nVert, [, nRefId]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nVert ;
|
||||
LuaCheckParam( L, 2, nVert)
|
||||
int nRefId = nId ;
|
||||
LuaGetParam( L, 3, nRefId) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero il vertice di indice dato (0-based)
|
||||
Point3d ptVert ;
|
||||
bool bOk = ExeSurfTmGetVertex( nId, nVert, nRefId, ptVert) ;
|
||||
if ( bOk)
|
||||
LuaSetParam( L, ptVert) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmGetNearestVertex( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : Id, ptNear [, nRefId]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
Point3d ptNear ;
|
||||
LuaCheckParam( L, 2, ptNear)
|
||||
int nRefId = nId ;
|
||||
LuaGetParam( L, 3, nRefId) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero il vertice più vicino della superficie
|
||||
int nVert ;
|
||||
Point3d ptVert ;
|
||||
bool bOk = ExeSurfTmGetNearestVertex( nId, ptNear, nRefId, nVert, ptVert) ;
|
||||
if ( bOk) {
|
||||
LuaSetParam( L, nVert) ;
|
||||
LuaSetParam( L, ptVert) ;
|
||||
}
|
||||
else {
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L) ;
|
||||
}
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmTriangleNormVersor( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : nId, nTria [, nRefId]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nTria ;
|
||||
LuaCheckParam( L, 2, nTria)
|
||||
int nRefId = nId ;
|
||||
LuaGetParam( L, 3, nRefId) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero la normale del triangolo della superficie
|
||||
Vector3d vtNorm ;
|
||||
if ( ExeSurfTmTriangleNormVersor( nId, nTria, nRefId, vtNorm))
|
||||
LuaSetParam( L, vtNorm) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmFacetFromTria( lua_State* L)
|
||||
@@ -288,6 +391,27 @@ LuaSurfTmFacetFromTria( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmGetAllVertInFacet( lua_State* L)
|
||||
{
|
||||
// 2 parametri : nId, nFacet
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nFacet ;
|
||||
LuaCheckParam( L, 2, nFacet)
|
||||
LuaClearStack( L) ;
|
||||
// recupero l'elenco dei vertici nella faccia
|
||||
INTVECTOR vVert ;
|
||||
bool bOk = ExeSurfTmGetAllVertInFacet( nId, nFacet, vVert) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk)
|
||||
LuaSetParam( L, vVert) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmGetFacetBBox( lua_State* L)
|
||||
@@ -359,6 +483,44 @@ LuaSurfTmGetFacetBBoxRef( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmGetFacetOutlineInfo( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : Id, nFacet [, nRefId]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nFacet ;
|
||||
LuaCheckParam( L, 2, nFacet)
|
||||
int nRefId = nId ;
|
||||
LuaGetParam( L, 3, nRefId) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero le informazioni
|
||||
int nStatus ;
|
||||
BOOLVECTOR vbOpen ;
|
||||
INTVECTOR vnAdj ;
|
||||
PNTVECTOR vptStart ;
|
||||
VCT3DVECTOR vvtNorm ;
|
||||
DBLVECTOR vdElev ;
|
||||
DBLVECTOR vdLen ;
|
||||
bool bOk = ExeSurfTmGetFacetOutlineInfo( nId, nFacet, nRefId, nStatus, vbOpen, vnAdj, vdLen, vptStart, vvtNorm, vdElev) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk) {
|
||||
LuaSetParam( L, nStatus) ;
|
||||
LuaSetParam( L, vbOpen) ;
|
||||
LuaSetParam( L, vnAdj) ;
|
||||
LuaSetParam( L, vdLen) ;
|
||||
LuaSetParam( L, vptStart) ;
|
||||
LuaSetParam( L, vvtNorm) ;
|
||||
LuaSetParam( L, vdElev) ;
|
||||
return 7 ;
|
||||
}
|
||||
else {
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmFacetAdjacencies( lua_State* L)
|
||||
@@ -510,6 +672,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)
|
||||
@@ -608,7 +822,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 ;
|
||||
@@ -618,11 +832,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) ;
|
||||
@@ -632,6 +850,38 @@ LuaGetSurfTmSilhouette( lua_State* L)
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetSurfTmParSilhouettes( lua_State* L)
|
||||
{
|
||||
// 6 o 7 parametri : vIds, ptOn, vtN, vdDist, dToler, nDestGrpId [, nRefType]
|
||||
INTVECTOR vIds ;
|
||||
LuaCheckParam( L, 1, vIds)
|
||||
Point3d ptOn ;
|
||||
LuaCheckParam( L, 2, ptOn)
|
||||
Vector3d vtN ;
|
||||
LuaCheckParam( L, 3, vtN)
|
||||
DBLVECTOR vdDist ;
|
||||
LuaCheckParam( L, 4, vdDist)
|
||||
double dToler ;
|
||||
LuaCheckParam( L, 5, dToler)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 6, nDestGrpId)
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 7, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero i contorni della superficie
|
||||
int nCount = 0 ;
|
||||
int nNewId = ExeGetSurfTmParSilhouettes( vIds, ptOn, vtN, vdDist, dToler, nDestGrpId, nRefType, &nCount) ;
|
||||
// restituisco il risultato
|
||||
if ( nCount >= 0)
|
||||
LuaSetParam( L, nNewId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L, nCount) ;
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaExtractSurfTmFacetLoops( lua_State* L)
|
||||
@@ -656,6 +906,28 @@ LuaExtractSurfTmFacetLoops( lua_State* L)
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaExtractSurfTmTriaLoop( lua_State* L)
|
||||
{
|
||||
// 3 parametri : nId, nT, nDestGrpId
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nT ;
|
||||
LuaCheckParam( L, 2, nT)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 3, nDestGrpId)
|
||||
LuaClearStack( L) ;
|
||||
// recupero i contorni della superficie
|
||||
int nNewId = ExeExtractSurfTmTriaLoop( nId, nT, nDestGrpId) ;
|
||||
// restituisco il risultato
|
||||
if ( nNewId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nNewId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCopySurfTmFacet( lua_State* L)
|
||||
@@ -678,6 +950,57 @@ 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
|
||||
LuaSurfTmGetCurvature( lua_State* L)
|
||||
{
|
||||
// 2 parametri : nStmId, nIndV
|
||||
int nStmId ;
|
||||
LuaCheckParam( L, 1, nStmId) ;
|
||||
int nIndVertex ;
|
||||
LuaCheckParam( L, 2, nIndVertex) ;
|
||||
LuaClearStack( L) ;
|
||||
double dK1 = 0., dK2 = 0. ;
|
||||
Vector3d vtK1 = V_NULL, vtK2 = V_NULL ;
|
||||
bool bOk = ExeSurfTmGetCurvatures( nStmId, nIndVertex, dK1, vtK1, dK2, vtK2) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
if ( bOk) {
|
||||
LuaSetParam( L, dK1) ;
|
||||
LuaSetParam( L, vtK1) ;
|
||||
LuaSetParam( L, dK2) ;
|
||||
LuaSetParam( L, vtK2) ;
|
||||
return 5 ;
|
||||
}
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfBezierGetPoint( lua_State* L)
|
||||
@@ -913,39 +1236,77 @@ LuaExtractSurfBezierLoops( lua_State* L)
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaShowSurfBezierControlPoints( lua_State* L)
|
||||
{
|
||||
// 2 parametri : nCrvId, nDestGrpId
|
||||
int nCrvId ;
|
||||
LuaCheckParam( L, 1, nCrvId)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 2, nDestGrpId)
|
||||
LuaClearStack( L) ;
|
||||
int nCount = 0 ;
|
||||
int nId = ExeShowSurfBezierControlPoints( nCrvId, nDestGrpId, &nCount) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL) {
|
||||
LuaSetParam( L, nId) ;
|
||||
LuaSetParam( L, nCount) ;
|
||||
}
|
||||
else {
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L) ;
|
||||
}
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallGdbGetSurf( LuaMgr& luaMgr)
|
||||
{
|
||||
bool bOk = ( &luaMgr != nullptr) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfArea", LuaSurfArea) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfIsClosed", LuaSurfIsClosed) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfVolume", LuaSurfVolume) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrNormVersor", LuaSurfFrNormVersor) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrGrossArea", LuaSurfFrGrossArea) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrChunkCount", LuaSurfFrChunkCount) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrChunkMaxOffset", LuaSurfFrChunkMaxOffset) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrChunkSimpleClassify", LuaSurfFrChunkSimpleClassify) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrTestExternal", LuaSurfFrTestExternal) ;
|
||||
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) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetVertex", LuaSurfTmGetVertex) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetNearestVertex", LuaSurfTmGetNearestVertex) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmTriangleNormVersor", LuaSurfTmTriangleNormVersor) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmFacetFromTria", LuaSurfTmFacetFromTria) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetAllVertInFacet", LuaSurfTmGetAllVertInFacet) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetFacetBBox", LuaSurfTmGetFacetBBox) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetFacetBBoxGlob", LuaSurfTmGetFacetBBoxGlob) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetFacetBBoxRef", LuaSurfTmGetFacetBBoxRef) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetFacetOutlineInfo", LuaSurfTmGetFacetOutlineInfo) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmFacetAdjacencies", LuaSurfTmFacetAdjacencies) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmFacetNearestEndPoint", LuaSurfTmFacetNearestEndPoint) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmFacetNearestMidPoint", LuaSurfTmFacetNearestMidPoint) ;
|
||||
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( "EgtGetSurfTmParSilhouettes", LuaGetSurfTmParSilhouettes) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtExtractSurfTmFacetLoops", LuaExtractSurfTmFacetLoops) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtExtractSurfTmTriaLoop", LuaExtractSurfTmTriaLoop) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCopySurfTmFacet", LuaCopySurfTmFacet) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetEdges", LuaSurfTmGetEdges) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetCurvature", LuaSurfTmGetCurvature) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBezierGetPoint", LuaSurfBezierGetPoint) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBezierGetPointD1", LuaSurfBezierGetPointD1) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBezierGetPointNrmD1", LuaSurfBezierGetPointNrmD1) ;
|
||||
@@ -955,5 +1316,6 @@ LuaInstallGdbGetSurf( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBezierGetControlCurveU", LuaSurfBezierGetControlCurveU) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBezierGetControlCurveV", LuaSurfBezierGetControlCurveV) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtExtractSurfBezierLoops", LuaExtractSurfBezierLoops) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtShowSurfBezierControlPoints", LuaShowSurfBezierControlPoints) ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
+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
|
||||
|
||||
+304
-5
@@ -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) ;
|
||||
@@ -102,16 +105,18 @@ LuaCurveMedialAxis( lua_State* L)
|
||||
static int
|
||||
LuaApproxCurve( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : Id, nApprType [, dLinTol]
|
||||
// 2 o 3 o 4 parametri : Id, nApprType [, dLinTol [, dMaxSegmLen]]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nApprType ;
|
||||
LuaCheckParam( L, 2, nApprType)
|
||||
double dLinTol = 0.01 ;
|
||||
LuaGetParam( L, 3, dLinTol) ;
|
||||
double dMaxSegmLen = INFINITO ;
|
||||
if ( LuaGetParam( L, 3, dLinTol))
|
||||
LuaGetParam( L, 4, dMaxSegmLen) ;
|
||||
LuaClearStack( L) ;
|
||||
// approssimazione della curva con rette
|
||||
bool bOk = ExeApproxCurve( nId, nApprType, dLinTol) ;
|
||||
bool bOk = ExeApproxCurve( nId, nApprType, dLinTol, dMaxSegmLen) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
@@ -206,6 +211,40 @@ LuaModifyCurveEndPoint( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSpiralizeCurveAlongExtrusion( lua_State* L)
|
||||
{
|
||||
// 2 parametri : Id, Delta
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
double dDelta ;
|
||||
LuaCheckParam( L, 2, dDelta)
|
||||
LuaClearStack( L) ;
|
||||
// modifico la curva
|
||||
bool bOk = ExeSpiralizeCurveAlongExtrusion( nId, dDelta) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSpiralizeCurveAlongGuide( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : Id, IdGuide, dTol
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nGuideId ;
|
||||
LuaCheckParam( L, 2, nGuideId)
|
||||
double dTol = 10 * EPS_SMALL ;
|
||||
LuaGetParam( L, 3, dTol) ;
|
||||
LuaClearStack( L) ;
|
||||
// modifico la curva
|
||||
bool bOk = ExeSpiralizeCurveAlongGuide( nId, nGuideId, dTol) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaModifyCurveExtrusion( lua_State* L)
|
||||
@@ -547,6 +586,22 @@ LuaModifyArcRadius( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaModifyArcAngCenter( lua_State* L)
|
||||
{
|
||||
// 2 parametri : Id, dNewAngCenter
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
double dNewAngCenter ;
|
||||
LuaCheckParam( L, 2, dNewAngCenter)
|
||||
LuaClearStack( L) ;
|
||||
// modifica dell'angolo al centro
|
||||
bool bOk = ExeModifyArcAngCenter( nId, dNewAngCenter) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaModifyArcToExplementary( lua_State* L)
|
||||
@@ -874,6 +929,42 @@ LuaRemoveCurveCompoUndercutOnY( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCurveCompoSetTempProp( lua_State* L)
|
||||
{
|
||||
// 3 parametri : Id, nCrv, nProp
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nCrv ;
|
||||
LuaCheckParam( L, 2, nCrv)
|
||||
int nProp ;
|
||||
LuaCheckParam( L, 3, nProp)
|
||||
LuaClearStack( L) ;
|
||||
// imposto sulla curva della composita la proprietà temporanea
|
||||
bool bOk = ExeCurveCompoSetTempProp( nId, nCrv, nProp) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCurveCompoSetTempParam( lua_State* L)
|
||||
{
|
||||
// 3 parametri : Id, nCrv, dParam
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nCrv ;
|
||||
LuaCheckParam( L, 2, nCrv)
|
||||
double dParam ;
|
||||
LuaCheckParam( L, 3, dParam)
|
||||
LuaClearStack( L) ;
|
||||
// imposto sulla curva della composita il parametro temporaneo
|
||||
bool bOk = ExeCurveCompoSetTempParam( nId, nCrv, dParam) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaChainCurvesInGroup( lua_State* L)
|
||||
@@ -910,6 +1001,200 @@ LuaReorderCurvesInGroup( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaProjectCurveOnSurf( lua_State* L)
|
||||
{
|
||||
// 4, 5, 6, 7 o 8 parametri : nCurveId, vSurfId, vtDir, nDestGrpId [, dLinTol [, dMaxSegmLen] [, bDirFromProj] [, nRefType]]
|
||||
int nCurveId ;
|
||||
LuaCheckParam( L, 1, nCurveId)
|
||||
INTVECTOR vSurfId ;
|
||||
LuaCheckParam( L, 2, vSurfId)
|
||||
Vector3d vtDir ;
|
||||
LuaCheckParam( L, 3, vtDir)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 4, nDestGrpId)
|
||||
double dLinTol = 0.01 ;
|
||||
double dMaxSegmLen = INFINITO ;
|
||||
bool bDirFromProj = false ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
if ( LuaGetParam( L, 5, dLinTol) &&
|
||||
LuaGetParam( L, 6, dMaxSegmLen) &&
|
||||
LuaGetParam( L, 7, bDirFromProj))
|
||||
LuaGetParam( L, 8, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// proietto la curva su una o più superfici secondo la direzione data
|
||||
bool bOk = ExeProjectCurveOnSurf( nCurveId, vSurfId, vtDir, nDestGrpId, dLinTol, dMaxSegmLen, bDirFromProj, nRefType) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaProjectCurveOnSurfExt( lua_State* L)
|
||||
{
|
||||
// 4, 5, 6 o 7 parametri : nCurveId, vSurfId, nGuideId, nDestGrpId [, dLinTol [, dMaxSegmLen] [, bDirFromGuide]]
|
||||
int nCurveId ;
|
||||
LuaCheckParam( L, 1, nCurveId)
|
||||
INTVECTOR vSurfId ;
|
||||
LuaCheckParam( L, 2, vSurfId)
|
||||
int nGuideId ;
|
||||
LuaCheckParam( L, 3, nGuideId)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 4, nDestGrpId)
|
||||
double dLinTol = 0.01 ;
|
||||
double dMaxSegmLen = INFINITO ;
|
||||
bool bDirFromGuide = false ;
|
||||
if ( LuaGetParam( L, 5, dLinTol) &&
|
||||
LuaGetParam( L, 6, dMaxSegmLen))
|
||||
LuaGetParam( L, 7, bDirFromGuide) ;
|
||||
LuaClearStack( L) ;
|
||||
// proietto la curva su una o più superfici secondo la direzione verso la guida
|
||||
bool bOk = ExeProjectCurveOnSurfExt( nCurveId, vSurfId, nGuideId, nDestGrpId, dLinTol, dMaxSegmLen, bDirFromGuide) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCurveGetVoronoi( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : Id/s, nDestGrpId [, nBound]
|
||||
INTVECTOR vIds ;
|
||||
LuaCheckParam( L, 1, vIds)
|
||||
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( vIds, 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/s, nDestGrpId [, nSide]
|
||||
INTVECTOR vIds ;
|
||||
LuaCheckParam( L, 1, vIds)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 2, nDestGrpId)
|
||||
int nSide = 1 ; // WMAT_LEFT
|
||||
LuaGetParam( L, 3, nSide) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo
|
||||
int nCount = 0 ;
|
||||
int nNewId = ExeCurveGetMedialAxis( vIds, 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 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCurveBezierIncreaseDegree( lua_State* L)
|
||||
{
|
||||
// 1 parametro : CrvId
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
LuaClearStack( L) ;
|
||||
// eseguo
|
||||
bool bOk = ExeCurveBezierIncreaseDegree( nId) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCurveBezierDecreaseDegree( lua_State* L)
|
||||
{
|
||||
// 1 parametro : CrvId
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
LuaClearStack( L) ;
|
||||
// eseguo
|
||||
bool bOk = ExeCurveBezierDecreaseDegree( nId) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCurveBezierApproxToNonRat( lua_State* L)
|
||||
{
|
||||
// 1 o 2 parametri : CrvId [, dTol]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
double dTol = 10 * EPS_SMALL ;
|
||||
LuaGetParam( L, 2, dTol) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo
|
||||
bool bOk = ExeCurveBezierApproxToNonRat( nId, dTol) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCurveBezierApproxWithCubicBeziers( lua_State* L)
|
||||
{
|
||||
// 1 o 2 parametri : CrvId [, dTol]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
double dTol = 10 * EPS_SMALL ;
|
||||
LuaGetParam( L, 2, dTol) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo
|
||||
bool bOk = ExeCurveBezierApproxWithCubicBeziers( nId, dTol) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallGdbModifyCurve( LuaMgr& luaMgr)
|
||||
@@ -925,6 +1210,8 @@ LuaInstallGdbModifyCurve( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtChangeClosedCurveStartPoint", LuaChangeClosedCurveStartPoint) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtModifyCurveStartPoint", LuaModifyCurveStartPoint) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtModifyCurveEndPoint", LuaModifyCurveEndPoint) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSpiralizeCurveAlongExtrusion", LuaSpiralizeCurveAlongExtrusion) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSpiralizeCurveAlongGuide", LuaSpiralizeCurveAlongGuide) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtModifyCurveExtrusion", LuaModifyCurveExtrusion) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtModifyCurveThickness", LuaModifyCurveThickness) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtTrimCurveStartAtLen", LuaTrimCurveStartAtLen) ;
|
||||
@@ -943,6 +1230,7 @@ LuaInstallGdbModifyCurve( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSplitCurveAtCorners", LuaSplitCurveAtCorners) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSplitCurveAtSelfInters", LuaSplitCurveAtSelfInters) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtModifyArcRadius", LuaModifyArcRadius) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtModifyArcAngCenter", LuaModifyArcAngCenter) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtModifyArcToExplementary", LuaModifyArcToExplementary) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtModifyArcByFlip", LuaModifyArcByFlip) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCloseCurveCompo", LuaCloseCurveCompo) ;
|
||||
@@ -961,7 +1249,18 @@ LuaInstallGdbModifyCurve( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtExplodeCurveCompo", LuaExplodeCurveCompo) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtMergeCurvesInCurveCompo", LuaMergeCurvesInCurveCompo) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRemoveCurveCompoUndercutOnY", LuaRemoveCurveCompoUndercutOnY) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoSetTempProp", LuaCurveCompoSetTempProp) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoSetTempParam", LuaCurveCompoSetTempParam) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtChainCurvesInGroup", LuaChainCurvesInGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtReorderCurvesInGroup", LuaReorderCurvesInGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtProjectCurveOnSurf", LuaProjectCurveOnSurf) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtProjectCurveOnSurfExt", LuaProjectCurveOnSurfExt) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveGetVoronoi", LuaCurveGetVoronoi) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveMedialAxisAdv", LuaCurveMedialAxisAdv) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveGetFatCurve", LuaCurveGetFatCurve) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveBezierIncreaseDeg", LuaCurveBezierIncreaseDegree) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveBezierDecreaseDeg", LuaCurveBezierDecreaseDegree) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveBezierApproxToNonRat", LuaCurveBezierApproxToNonRat) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtApproxBezierWithCubics", LuaCurveBezierApproxWithCubicBeziers) ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
+365
-16
@@ -14,15 +14,16 @@
|
||||
//--------------------------- Include ----------------------------------------
|
||||
#include "stdafx.h"
|
||||
#include "LUA.h"
|
||||
#include "EXE_Const.h"
|
||||
#include "/EgtDev/Include/EXeExecutor.h"
|
||||
#include "/EgtDev/Include/EXeConst.h"
|
||||
#include "/EgtDev/Include/EGkCurve.h"
|
||||
#include "/EgtDev/Include/EGkSurfTriMeshAux.h"
|
||||
#include "/EgtDev/Include/EGkGdbConst.h"
|
||||
#include "/EgtDev/Include/EGkLuaAux.h"
|
||||
|
||||
using namespace std ;
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaInvertSurf( lua_State* L)
|
||||
@@ -57,6 +58,25 @@ LuaExplodeSurf( lua_State* L)
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaApproxSurf( lua_State* L)
|
||||
{
|
||||
// 1 o 2 parametri : Id [, dLinTol [, dTriaMinSide]]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
double dLinTol = LIN_TOL_SRF ;
|
||||
double dTriaMinSide = 100 * EPS_SMALL ;
|
||||
if ( LuaGetParam( L, 2, dLinTol))
|
||||
LuaGetParam( L, 3, dTriaMinSide) ;
|
||||
LuaClearStack( L) ;
|
||||
// approssimazione della superficie
|
||||
bool bOk = ExeApproxSurface( nId, dLinTol, dTriaMinSide) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfFrAdd( lua_State* L)
|
||||
@@ -123,6 +143,113 @@ 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
|
||||
LuaSurfFrEraseChunk( lua_State* L)
|
||||
{
|
||||
// 2 parametri : Id, nChunk
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nChunk ;
|
||||
LuaCheckParam( L, 2, nChunk)
|
||||
LuaClearStack( L) ;
|
||||
// eseguo l'offset della regione
|
||||
bool bOk = ExeSurfFrEraseChunk( nId, nChunk) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmMoveVertex( lua_State* L)
|
||||
{
|
||||
// 3 o 4 o 5 parametri : nId, nVert, ptNewVert [, nRefId] [, bUpdate]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nVert ;
|
||||
LuaCheckParam( L, 2, nVert)
|
||||
Point3d ptNewVert ;
|
||||
LuaCheckParam( L, 3, ptNewVert)
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
bool bUpdate = true ;
|
||||
if ( LuaGetParam( L, 4, nRefType))
|
||||
LuaGetParam( L, 5, bUpdate) ;
|
||||
else
|
||||
LuaGetParam( L, 4, bUpdate) ;
|
||||
LuaClearStack( L) ;
|
||||
// sposto il vertice di indice dato della trimesh
|
||||
bool bOk = ExeSurfTmMoveVertex( nId, nVert, ptNewVert, nRefType, bUpdate) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmMoveFacet( lua_State* L)
|
||||
{
|
||||
// 3 o 4 o 5 parametri : nId, nFacet, vtMove [, nRefId] [, bUpdate]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nFacet ;
|
||||
LuaCheckParam( L, 2, nFacet)
|
||||
Vector3d vtMove ;
|
||||
LuaCheckParam( L, 3, vtMove)
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
bool bUpdate = true ;
|
||||
if ( LuaGetParam( L, 4, nRefType))
|
||||
LuaGetParam( L, 5, bUpdate) ;
|
||||
else
|
||||
LuaGetParam( L, 4, bUpdate) ;
|
||||
LuaClearStack( L) ;
|
||||
// sposto la faccia di indice dato della trimesh
|
||||
bool bOk = ExeSurfTmMoveFacet( nId, nFacet, vtMove, nRefType, bUpdate) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmToTriangles( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nId
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
LuaClearStack( L) ;
|
||||
// esplosione della trimesh in triangoli
|
||||
int nCount ;
|
||||
int nFirstId = ExeSurfTmToTriangles( nId, &nCount) ;
|
||||
if ( nFirstId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nFirstId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L, nCount) ;
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmRemoveFacet( lua_State* L)
|
||||
@@ -272,20 +399,6 @@ LuaSurfTmIntersect( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmResetTwoColors( lua_State* L)
|
||||
{
|
||||
// 1 parametro : Id
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
LuaClearStack( L) ;
|
||||
// eseguo reset TFlag per annullare due colori
|
||||
bool bOk = ExeSurfTmResetTwoColors( nId) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmSplit( lua_State* L)
|
||||
@@ -327,6 +440,226 @@ 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
|
||||
LuaSurfTmSetFaceColor( lua_State* L)
|
||||
{
|
||||
// 3 parametri : Id, nFacet, nColor
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nFacet ;
|
||||
LuaCheckParam( L, 2, nFacet)
|
||||
int nColor ;
|
||||
LuaCheckParam( L, 3, nColor)
|
||||
LuaClearStack( L) ;
|
||||
// imposto il colore alla faccia della superficie TM
|
||||
bool bOk = ExeSurfTmSetFaceColor( nId, nFacet, nColor) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmGetTriaColor( lua_State* L)
|
||||
{
|
||||
// 2 parametri : Id, nTria
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nTria ;
|
||||
LuaCheckParam( L, 2, nTria)
|
||||
LuaClearStack( L) ;
|
||||
// recupero il flag di colore del triangolo della superficie TM
|
||||
int nColor ;
|
||||
bool bOk = ExeSurfTmGetTriaColor( nId, nTria, nColor) ;
|
||||
if ( bOk)
|
||||
LuaSetParam( L, nColor) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmResetTwoColors( lua_State* L)
|
||||
{
|
||||
// 1 parametro : Id
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
LuaClearStack( L) ;
|
||||
// eseguo reset TFlag per annullare due colori
|
||||
bool bOk = ExeSurfTmResetTwoColors( nId) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmSetShowEdges( lua_State* L)
|
||||
{
|
||||
// 2 parametri : Id, bShow
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
bool bShow ;
|
||||
LuaCheckParam( L, 2, bShow) ;
|
||||
LuaClearStack( L) ;
|
||||
// imposto flag visualizzazione spigoli vivi
|
||||
bool bOk = ExeSurfTmSetShowEdges( nId, bShow) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmGetShowEdges( lua_State* L)
|
||||
{
|
||||
// 1 parametro : Id
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
LuaClearStack( L) ;
|
||||
// recupero il flag di visualizzazione degli spigoli vivi della superficie TM
|
||||
bool bShow ;
|
||||
bool bOk = ExeSurfTmGetShowEdges( nId, bShow) ;
|
||||
if ( bOk)
|
||||
LuaSetParam( L, bShow) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmSetSmoothAng( lua_State* L)
|
||||
{
|
||||
// 2 parametri : nId, nCutterId
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
double dAngDeg ;
|
||||
LuaCheckParam( L, 2, dAngDeg)
|
||||
LuaClearStack( L) ;
|
||||
// aggiorno lo smooth angle della superficie
|
||||
bool bOk = ExeSurfTmSetSmoothAng( nId, dAngDeg) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmOffset( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : ParentId, vIds, dOffs, dLinTol [, nType]
|
||||
int nParentId ;
|
||||
LuaGetParam( L, 1, nParentId) ;
|
||||
INTVECTOR vIds ;
|
||||
LuaCheckParam( L, 2, vIds)
|
||||
double dOffs ;
|
||||
LuaCheckParam( L, 3, dOffs)
|
||||
double dLinTol ;
|
||||
LuaCheckParam( L, 4, dLinTol) ;
|
||||
int nType = STMOFF_FILLET ;
|
||||
LuaGetParam( L, 5, nType) ;
|
||||
LuaClearStack( L) ;
|
||||
// interseco la prima superficie con la seconda
|
||||
int nId = ExeSurfTmOffset( nParentId, vIds, dOffs, dLinTol, nType) ;
|
||||
LuaSetParam( L, nId) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmThickeningOffset( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : ParentId, vIds, dOffs, dLinTol [, nType]
|
||||
int nParentId ;
|
||||
LuaGetParam( L, 1, nParentId) ;
|
||||
INTVECTOR vIds ;
|
||||
LuaCheckParam( L, 2, vIds)
|
||||
double dOffs ;
|
||||
LuaCheckParam( L, 3, dOffs)
|
||||
double dLinTol ;
|
||||
LuaCheckParam( L, 4, dLinTol) ;
|
||||
int nType = STMOFF_FILLET ;
|
||||
LuaGetParam( L, 5, nType) ;
|
||||
LuaClearStack( L) ;
|
||||
// interseco la prima superficie con la seconda
|
||||
int nId = ExeSurfTmThickeningOffset( nParentId, vIds, dOffs, dLinTol, nType) ;
|
||||
LuaSetParam( L, nId) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCutSurfBzPlane( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : Id, ptOn, vtN, bSaveOnEq [, nRefType]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
Point3d ptOn ;
|
||||
LuaCheckParam( L, 2, ptOn)
|
||||
Vector3d vtN ;
|
||||
LuaCheckParam( L, 3, vtN)
|
||||
bool bSaveOnEq ;
|
||||
LuaGetParam( L, 4, bSaveOnEq) ;
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// taglio la superficie con ilpiano
|
||||
bool bOk = ExeCutSurfBzPlane( nId, ptOn, vtN, bSaveOnEq, nRefType) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
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 = ExeSurfBzTrim( nId, nCutterId) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallGdbModifySurf( LuaMgr& luaMgr)
|
||||
@@ -334,10 +667,16 @@ LuaInstallGdbModifySurf( LuaMgr& luaMgr)
|
||||
bool bOk = ( &luaMgr != nullptr) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtInvertSurf", LuaInvertSurf) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtExplodeSurf", LuaExplodeSurf) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtApproxSurf", LuaApproxSurf) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrAdd", LuaSurfFrAdd) ;
|
||||
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( "EgtSurfFrEraseChunk", LuaSurfFrEraseChunk) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmMoveVertex", LuaSurfTmMoveVertex) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmMoveFacet", LuaSurfTmMoveFacet) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmToTriangles", LuaSurfTmToTriangles) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmRemoveFacet", LuaSurfTmRemoveFacet) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmSwapFacets", LuaSurfTmSwapFacets) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmRemovePart", LuaSurfTmRemovePart) ;
|
||||
@@ -346,8 +685,18 @@ LuaInstallGdbModifySurf( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmAdd", LuaSurfTmAdd) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmSubtract", LuaSurfTmSubtract) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmIntersect", LuaSurfTmIntersect) ;
|
||||
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( "EgtSurfTmSetFaceColor", LuaSurfTmSetFaceColor) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetTriaColor", LuaSurfTmGetTriaColor) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmResetTwoColors", LuaSurfTmResetTwoColors) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmSetShowEdges", LuaSurfTmSetShowEdges) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetShowEdges", LuaSurfTmGetShowEdges) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmSetSmoothAng", LuaSurfTmSetSmoothAng) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmOffset", LuaSurfTmOffset) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmThickeningOffset", LuaSurfTmThickeningOffset) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCutSurfBzPlane", LuaCutSurfBzPlane) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBzTrim", LuaSurfBzTrim) ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
+111
-12
@@ -56,6 +56,23 @@ LuaVolZmapChangeResolution( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaVolZmapSetShowEdges( lua_State* L)
|
||||
{
|
||||
// 2 parametri : Id, bShow
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
bool bShow ;
|
||||
LuaCheckParam( L, 2, bShow) ;
|
||||
LuaClearStack( L) ;
|
||||
// imposto flag visualizzazione spigoli vivi
|
||||
bool bOk = ExeVolZmapSetShowEdges( nId, bShow) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaRemoveVolZmapPart( lua_State* L)
|
||||
@@ -94,7 +111,7 @@ LuaVolZmapSetStdTool( lua_State* L)
|
||||
LuaGetParam( L, 7, nFlag) ;
|
||||
LuaClearStack( L) ;
|
||||
// imposto utensile standard a Zmap indicati
|
||||
bool bOk = ExeVolZmapSetStdTool( vIds, sToolName, dLen, dDiam, dCornR, dCutterH, nFlag) ;
|
||||
bool bOk = ExeVolZmapSetStdTool( vIds, sToolName, dLen, dDiam, dCornR, dCutterH, nFlag, true) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
@@ -125,7 +142,7 @@ LuaVolZmapSetAdvTool( lua_State* L)
|
||||
LuaGetParam( L, 9, nFlag) ;
|
||||
LuaClearStack( L) ;
|
||||
// imposto utensile avanzato a Zmap indicati
|
||||
bool bOk = ExeVolZmapSetAdvTool( vIds, sToolName, dLen, dDiam, dTipLen, dTipDiam, dCornR, dCutterH, nFlag) ;
|
||||
bool bOk = ExeVolZmapSetAdvTool( vIds, sToolName, dLen, dDiam, dTipLen, dTipDiam, dCornR, dCutterH, nFlag, true) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
@@ -135,7 +152,7 @@ LuaVolZmapSetAdvTool( lua_State* L)
|
||||
static int
|
||||
LuaVolZmapSetSawTool( lua_State* L)
|
||||
{
|
||||
// 7 o 8 parametri : vIds, sToolName, dLen, dDiam, dThick, dStemDiam, dCornR, nFlag
|
||||
// 7 o 8 parametri : vIds, sToolName, dLen, dDiam, dThick, dStemDiam, dCornR [, nFlag]
|
||||
INTVECTOR vIds ;
|
||||
LuaCheckParam( L, 1, vIds)
|
||||
string sToolName ;
|
||||
@@ -154,7 +171,7 @@ LuaVolZmapSetSawTool( lua_State* L)
|
||||
LuaGetParam( L, 8, nFlag) ;
|
||||
LuaClearStack( L) ;
|
||||
// imposto utensile avanzato a Zmap indicati
|
||||
bool bOk = ExeVolZmapSetSawTool( vIds, sToolName, dLen, dDiam, dThick, dStemDiam, dCornR, nFlag) ;
|
||||
bool bOk = ExeVolZmapSetSawTool( vIds, sToolName, dLen, dDiam, dThick, dStemDiam, dCornR, nFlag, true) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
@@ -164,7 +181,7 @@ LuaVolZmapSetSawTool( lua_State* L)
|
||||
static int
|
||||
LuaVolZmapSetGenTool( lua_State* L)
|
||||
{
|
||||
// 3 o 4 parametri : vIds, sToolName, ToolSectId, nFlag
|
||||
// 3 o 4 parametri : vIds, sToolName, ToolSectId [, nFlag]
|
||||
INTVECTOR vIds ;
|
||||
LuaCheckParam( L, 1, vIds)
|
||||
string sToolName ;
|
||||
@@ -175,7 +192,7 @@ LuaVolZmapSetGenTool( lua_State* L)
|
||||
LuaGetParam( L, 4, nFlag) ;
|
||||
LuaClearStack( L) ;
|
||||
// imposto utensile generico a Zmap indicati
|
||||
bool bOk = ExeVolZmapSetGenTool( vIds, sToolName, nToolSectId, nFlag) ;
|
||||
bool bOk = ExeVolZmapSetGenTool( vIds, sToolName, nToolSectId, nFlag, true) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
@@ -185,7 +202,7 @@ LuaVolZmapSetGenTool( lua_State* L)
|
||||
static int
|
||||
LuaVolZmapSetMortiserTool( lua_State* L)
|
||||
{
|
||||
// 6 o 7 parametri : Id, sToolName, dLen, dWidth, dThick, dCornR, nFlag
|
||||
// 6 o 7 parametri : Id, sToolName, dLen, dWidth, dThick, dCornR [, nFlag]
|
||||
INTVECTOR vIds ;
|
||||
LuaCheckParam( L, 1, vIds)
|
||||
string sToolName ;
|
||||
@@ -202,7 +219,7 @@ LuaVolZmapSetMortiserTool( lua_State* L)
|
||||
LuaGetParam( L, 7, nFlag) ;
|
||||
LuaClearStack( L) ;
|
||||
// imposto mortasatrice a Zmap indicati
|
||||
bool bOk = ExeVolZmapSetMortiserTool( vIds, sToolName, dLen, dWidth, dThick, dCornR, nFlag) ;
|
||||
bool bOk = ExeVolZmapSetMortiserTool( vIds, sToolName, dLen, dWidth, dThick, dCornR, nFlag, true) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
@@ -212,7 +229,7 @@ LuaVolZmapSetMortiserTool( lua_State* L)
|
||||
static int
|
||||
LuaVolZmapSetChiselTool( lua_State* L)
|
||||
{
|
||||
// 5 o 6 parametri : vIds, sToolName, dLen, dWidth, dThick, nFlag
|
||||
// 5 o 6 parametri : vIds, sToolName, dLen, dWidth, dThick [, nFlag]
|
||||
INTVECTOR vIds ;
|
||||
LuaCheckParam( L, 1, vIds)
|
||||
string sToolName ;
|
||||
@@ -227,7 +244,32 @@ LuaVolZmapSetChiselTool( lua_State* L)
|
||||
LuaGetParam( L, 6, nFlag) ;
|
||||
LuaClearStack( L) ;
|
||||
// imposto scalpello a Zmap indicati
|
||||
bool bOk = ExeVolZmapSetChiselTool( vIds, sToolName, dLen, dWidth, dThick, nFlag) ;
|
||||
bool bOk = ExeVolZmapSetChiselTool( vIds, sToolName, dLen, dWidth, dThick, nFlag, true) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaVolZmapSetAdditiveTool( lua_State* L)
|
||||
{
|
||||
// 5 o 6 parametri : vIds, sToolName, dLen, dDiam, dCornR [, nFlag]
|
||||
INTVECTOR vIds ;
|
||||
LuaCheckParam( L, 1, vIds)
|
||||
string sToolName ;
|
||||
LuaCheckParam( L, 2, sToolName)
|
||||
double dLen ;
|
||||
LuaCheckParam( L, 3, dLen)
|
||||
double dDiam ;
|
||||
LuaCheckParam( L, 4, dDiam)
|
||||
double dCornR ;
|
||||
LuaCheckParam( L, 5, dCornR)
|
||||
int nFlag = 1 ;
|
||||
LuaGetParam( L, 6, nFlag) ;
|
||||
LuaClearStack( L) ;
|
||||
// imposto utensile additivo a Zmap indicati
|
||||
bool bOk = ExeVolZmapSetAdditiveTool( vIds, sToolName, dLen, dDiam, dCornR, nFlag, true) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
@@ -242,7 +284,7 @@ LuaVolZmapResetTool( lua_State* L)
|
||||
LuaCheckParam( L, 1, vIds)
|
||||
LuaClearStack( L) ;
|
||||
// reset utensile a Zmap indicati
|
||||
bool bOk = ExeVolZmapResetTool( vIds) ;
|
||||
bool bOk = ExeVolZmapResetTools( vIds) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
@@ -336,13 +378,65 @@ LuaCutVolZmapPlane( lua_State* L)
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 4, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// taglio la superficie con ilpiano
|
||||
// taglio la superficie con il piano
|
||||
bool bOk = ExeCutVolZmapPlane( nId, ptOn, vtN, nRefType) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaUpdateVolZmapByAddingSurfTm( lua_State* L)
|
||||
{
|
||||
// 2 parametri : nVolZmapId, StmId,
|
||||
int nVolZmapId ;
|
||||
LuaCheckParam( L, 1, nVolZmapId) ;
|
||||
int nStmId ;
|
||||
LuaCheckParam( L, 2, nStmId) ;
|
||||
LuaClearStack( L) ;
|
||||
bool bOk = ExeUpdateVolZmapByAddingSurfTm( nVolZmapId, nStmId) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaUniformVolZmap( lua_State* L)
|
||||
{
|
||||
// 2 o 3 o 4 parametri : nVolZmapId, dToler [, bExtensionFirst] [, nToolNum]
|
||||
int nVolZmapId ;
|
||||
LuaCheckParam( L, 1, nVolZmapId) ;
|
||||
double dToler ;
|
||||
LuaCheckParam( L, 2, dToler) ;
|
||||
bool bExtensionFirst = true ;
|
||||
LuaGetParam( L, 3, bExtensionFirst) ;
|
||||
int nToolNum = 0 ;
|
||||
LuaGetParam( L, 4, nToolNum) ;
|
||||
LuaClearStack( L) ;
|
||||
bool bOk = ExeUniformVolZmap( nVolZmapId, dToler, bExtensionFirst, nToolNum) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaVolZmapOffset( lua_State* L)
|
||||
{
|
||||
// 3 parametri : Id, dDist, nType
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
double dDist ;
|
||||
LuaCheckParam( L, 2, dDist)
|
||||
int nType = VolZmapOffset::FILLET ;
|
||||
LuaGetParam( L, 3, nType) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo l'offset della regione
|
||||
bool bOk = ExeVolZMapOffset( nId, dDist, nType) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallGdbModifyVol( LuaMgr& luaMgr)
|
||||
@@ -350,6 +444,7 @@ LuaInstallGdbModifyVol( LuaMgr& luaMgr)
|
||||
bool bOk = ( &luaMgr != nullptr) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtExplodeVolume", LuaExplodeVolume) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapChangeResolution", LuaVolZmapChangeResolution) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapSetShowEdges", LuaVolZmapSetShowEdges) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRemoveVolZmapPart", LuaRemoveVolZmapPart) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapSetStdTool", LuaVolZmapSetStdTool) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapSetAdvTool", LuaVolZmapSetAdvTool) ;
|
||||
@@ -357,9 +452,13 @@ LuaInstallGdbModifyVol( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapSetGenTool", LuaVolZmapSetGenTool) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapSetMortiserTool", LuaVolZmapSetMortiserTool) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapSetChiselTool", LuaVolZmapSetChiselTool) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapSetAdditiveTool", LuaVolZmapSetAdditiveTool) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapResetTool", LuaVolZmapResetTool) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapGetToolOutline", LuaVolZmapGetToolOutline) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapMillingStep", LuaVolZmapMillingStep) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCutVolZmapPlane", LuaCutVolZmapPlane) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtUpdateVolZmapByAddingSurfTm", LuaUpdateVolZmapByAddingSurfTm ) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtUniformVolZmap", LuaUniformVolZmap) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapOffset", LuaVolZmapOffset) ;
|
||||
return bOk ;
|
||||
}
|
||||
+56
-24
@@ -42,13 +42,13 @@ LuaCopyAttributes( lua_State* L)
|
||||
static int
|
||||
LuaSetLevel( lua_State* L)
|
||||
{
|
||||
// 2 parametri : nId, nLevel
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
// 2 parametri : Ids, nLevel
|
||||
INTVECTOR vId ;
|
||||
LuaCheckParam( L, 1, vId)
|
||||
int nLevel ;
|
||||
LuaCheckParam( L, 2, nLevel)
|
||||
// imposto lo stato
|
||||
bool bOk = ExeSetLevel( nId, nLevel) ;
|
||||
bool bOk = ExeSetLevel( vId, nLevel) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
@@ -111,14 +111,14 @@ LuaGetCalcLevel( lua_State* L)
|
||||
static int
|
||||
LuaSetMode( lua_State* L)
|
||||
{
|
||||
// 2 parametri : nId, nMode
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
// 2 parametri : Ids, nMode
|
||||
INTVECTOR vId ;
|
||||
LuaCheckParam( L, 1, vId)
|
||||
int nMode ;
|
||||
LuaCheckParam( L, 2, nMode)
|
||||
LuaClearStack( L) ;
|
||||
// imposto il modo
|
||||
bool bOk = ExeSetMode( nId, nMode) ;
|
||||
bool bOk = ExeSetMode( vId, nMode) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
@@ -179,7 +179,7 @@ LuaGetCalcMode( lua_State* L)
|
||||
static int
|
||||
LuaSetStatus( lua_State* L)
|
||||
{
|
||||
// 2 parametri : Id, nStatus
|
||||
// 2 parametri : Ids, nStatus
|
||||
INTVECTOR vId ;
|
||||
LuaCheckParam( L, 1, vId)
|
||||
int nStatus ;
|
||||
@@ -247,12 +247,14 @@ LuaGetCalcStatus( lua_State* L)
|
||||
static int
|
||||
LuaSetMark( lua_State* L)
|
||||
{
|
||||
// 1 parametro : Id
|
||||
// 1 o 2 parametri : Id [, nMark]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nMark = 1 ;
|
||||
LuaGetParam( L, 2, nMark) ;
|
||||
LuaClearStack( L) ;
|
||||
// imposto l'evidenziazione
|
||||
bool bOk = ExeSetMark( nId) ;
|
||||
bool bOk = ExeSetMark( nId, nMark) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
@@ -519,10 +521,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 +531,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) ;
|
||||
@@ -682,6 +674,25 @@ LuaRemoveInfo( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetAllInfo( lua_State* L)
|
||||
{
|
||||
// 1 parametro : Id
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
LuaClearStack( L) ;
|
||||
// recupero tutte le info
|
||||
STRVECTOR vsInfo ;
|
||||
bool bOk = ExeGetAllInfo( nId, vsInfo) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk)
|
||||
LuaSetParam( L, vsInfo) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSetTextureName( lua_State* L)
|
||||
@@ -773,6 +784,25 @@ LuaGetTextureFrame( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSetStipple( lua_State* L)
|
||||
{
|
||||
// 3 parametri : Id, nFactor, nPattern
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nFactor ;
|
||||
LuaCheckParam( L, 2, nFactor)
|
||||
int nPattern ;
|
||||
LuaCheckParam( L, 3, nPattern)
|
||||
LuaClearStack( L) ;
|
||||
// setto stipple
|
||||
bool bOk = ExeSetStipple( nId, nFactor, nPattern) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallGdbObjAttribs( LuaMgr& luaMgr)
|
||||
@@ -809,10 +839,12 @@ LuaInstallGdbObjAttribs( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetInfo", LuaGetInfo) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtExistsInfo", LuaExistsInfo) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRemoveInfo", LuaRemoveInfo) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetAllInfo", LuaGetAllInfo) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSetTextureName", LuaSetTextureName) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSetTextureFrame", LuaSetTextureFrame) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRemoveTextureData", LuaRemoveTextureData) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetTextureName", LuaGetTextureName) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetTextureFrame", LuaGetTextureFrame) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSetStipple", LuaSetStipple) ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
+98
-26
@@ -208,31 +208,6 @@ LuaGetPrev( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetNameInGroup( lua_State* L)
|
||||
{
|
||||
// 2 parametri : GroupId, sName
|
||||
int nGroupId = GDB_ID_NULL ;
|
||||
LuaGetParam( L, 1, nGroupId) ;
|
||||
string sName ;
|
||||
LuaGetParam( L, 2, sName) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero tutti gli oggetti del gruppo con il nome o suo inizio desiderato
|
||||
INTVECTOR vId ;
|
||||
int nId = ExeGetFirstNameInGroup( nGroupId, sName) ;
|
||||
while ( nId != GDB_ID_NULL) {
|
||||
vId.push_back ( nId) ;
|
||||
nId = ExeGetNextName( nId, sName) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
if ( ! vId.empty())
|
||||
LuaSetParam( L, vId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetFirstNameInGroup( lua_State* L)
|
||||
@@ -313,6 +288,48 @@ LuaGetPrevName( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetNameInGroup( lua_State* L)
|
||||
{
|
||||
// 2 parametri : GroupId, sName
|
||||
int nGroupId = GDB_ID_NULL ;
|
||||
LuaGetParam( L, 1, nGroupId) ;
|
||||
string sName ;
|
||||
LuaGetParam( L, 2, sName) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero tutti gli oggetti del gruppo con il nome o suo inizio desiderato
|
||||
INTVECTOR vIds ;
|
||||
bool bOk = ExeGetNameInGroup( nGroupId, sName, vIds) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk)
|
||||
LuaSetParam( L, vIds) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetInfoInGroup( lua_State* L)
|
||||
{
|
||||
// 2 parametri : GroupId, sKey
|
||||
int nGroupId = GDB_ID_NULL ;
|
||||
LuaGetParam( L, 1, nGroupId) ;
|
||||
string sKey ;
|
||||
LuaGetParam( L, 2, sKey) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero tutti gli oggetti con l'info richiesta
|
||||
INTVECTOR vIds ;
|
||||
bool bOk = ExeGetInfoInGroup( nGroupId, sKey, vIds) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk)
|
||||
LuaSetParam( L, vIds) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetFirstGroupInGroup( lua_State* L)
|
||||
@@ -472,6 +489,32 @@ LuaCopy( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCopyEx( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : nSouCtx, SouId, nDestCtx, RefId [, nSonBeforeAfter]
|
||||
int nSouCtx ;
|
||||
LuaCheckParam( L, 1, nSouCtx)
|
||||
int nSouId ;
|
||||
LuaCheckParam( L, 2, nSouId)
|
||||
int nDestCtx ;
|
||||
LuaCheckParam( L, 3, nDestCtx)
|
||||
int nRefId ;
|
||||
LuaCheckParam( L, 4, nRefId)
|
||||
int nSonBeforeAfter = GDB_LAST_SON ;
|
||||
LuaGetParam( L, 5, nSonBeforeAfter) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo la copia
|
||||
int nNewId = ExeCopyEx( nSouCtx, nSouId, nDestCtx, nRefId, nSonBeforeAfter) ;
|
||||
// restituisco il risultato
|
||||
if ( nNewId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nNewId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCopyGlob( lua_State* L)
|
||||
@@ -494,6 +537,32 @@ LuaCopyGlob( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCopyGlobEx( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : nSouCtx, SouId, nDestCtx, RefId [, nSonBeforeAfter]
|
||||
int nSouCtx ;
|
||||
LuaCheckParam( L, 1, nSouCtx)
|
||||
int nSouId ;
|
||||
LuaCheckParam( L, 2, nSouId)
|
||||
int nDestCtx ;
|
||||
LuaCheckParam( L, 3, nDestCtx)
|
||||
int nRefId ;
|
||||
LuaCheckParam( L, 4, nRefId)
|
||||
int nSonBeforeAfter = GDB_LAST_SON ;
|
||||
LuaGetParam( L, 5, nSonBeforeAfter) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo la copia
|
||||
int nNewId = ExeCopyGlobEx( nSouCtx, nSouId, nDestCtx, nRefId, nSonBeforeAfter) ;
|
||||
// restituisco il risultato
|
||||
if ( nNewId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nNewId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaRelocate( lua_State* L)
|
||||
@@ -632,11 +701,12 @@ LuaInstallGdbObjects( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetNext", LuaGetNext) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetLastInGroup", LuaGetLastInGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetPrev", LuaGetPrev) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetNameInGroup", LuaGetNameInGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetFirstNameInGroup", LuaGetFirstNameInGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetNextName", LuaGetNextName) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetLastNameInGroup", LuaGetLastNameInGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetPrevName", LuaGetPrevName) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetNameInGroup", LuaGetNameInGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetInfoInGroup", LuaGetInfoInGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetFirstGroupInGroup", LuaGetFirstGroupInGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetNextGroup", LuaGetNextGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetLastGroupInGroup", LuaGetLastGroupInGroup) ;
|
||||
@@ -645,7 +715,9 @@ LuaInstallGdbObjects( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetBBoxGlob", LuaGetBBoxGlob) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetBBoxRef", LuaGetBBoxRef) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCopy", LuaCopy) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCopyEx", LuaCopyEx) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCopyGlob", LuaCopyGlob) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCopyGlobEx", LuaCopyGlobEx) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRelocate", LuaRelocate) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRelocateGlob", LuaRelocateGlob) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGroupSwap", LuaGroupSwap) ;
|
||||
|
||||
@@ -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) ;
|
||||
|
||||
+251
-32
@@ -30,7 +30,8 @@
|
||||
#include "/EgtDev/Include/EgtIniFile.h"
|
||||
#include "/EgtDev/Include/EgtNumUtils.h"
|
||||
#include "/EgtDev/Include/EgtStringConverter.h"
|
||||
#include "Windowsx.h"
|
||||
#include <Windowsx.h>
|
||||
#include <shlobj.h>
|
||||
|
||||
using namespace std ;
|
||||
|
||||
@@ -52,7 +53,7 @@ MyPrint( lua_State* L)
|
||||
s = lua_tostring( L, -1) ; /* get result */
|
||||
if ( s == nullptr)
|
||||
return luaL_error( L,
|
||||
LUA_QL("tostring") " must return a string to " LUA_QL("print")) ;
|
||||
"'tostring' must return a string to 'print'") ;
|
||||
if ( i > 1)
|
||||
sOut += "\t" ;
|
||||
sOut += s ;
|
||||
@@ -87,12 +88,14 @@ LuaEvalNumExpr( lua_State* L)
|
||||
static int
|
||||
LuaPause( lua_State* L)
|
||||
{
|
||||
// 1 parametro : numero di millisecondi
|
||||
// 1 o 2 parametri : numero di millisecondi [, bForced]
|
||||
int nTime ;
|
||||
LuaCheckParam( L, 1, nTime)
|
||||
bool bForced = false ;
|
||||
LuaGetParam( L, 2, bForced) ;
|
||||
LuaClearStack( L) ;
|
||||
// se abilitata UI, controllo la durata della pausa e la eseguo
|
||||
if ( ExeGetEnableUI()) {
|
||||
// se forzata o abilitata UI, controllo la durata della pausa e la eseguo
|
||||
if ( bForced || ExeGetEnableUI()) {
|
||||
const int MIN_TIME = 0 ;
|
||||
const int MAX_TIME = 10000 ;
|
||||
if ( nTime < MIN_TIME)
|
||||
@@ -106,6 +109,24 @@ LuaPause( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetKeyPressed( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nKeyCode
|
||||
int nKeyCode ;
|
||||
LuaCheckParam( L, 1, nKeyCode)
|
||||
LuaClearStack( L) ;
|
||||
// se abilitata UI, controllo se il tasto indicato è premuto
|
||||
bool bPressed = false ;
|
||||
if ( ExeGetEnableUI()) {
|
||||
bPressed = (( GetAsyncKeyState( nKeyCode) & 0x8000) != 0) ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bPressed) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaStartCounter( lua_State* L)
|
||||
@@ -178,11 +199,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 +215,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)
|
||||
@@ -208,19 +248,19 @@ LuaSetVal( lua_State* L)
|
||||
{ bool bVal ;
|
||||
LuaGetParam( L, 2, bVal) ;
|
||||
LuaClearStack( L) ;
|
||||
bOk = SetValInNotes( sKey, bVal, sNotes) ;
|
||||
bOk = SetVal( sKey, bVal, sNotes) ;
|
||||
} break ;
|
||||
case LUA_TNUMBER :
|
||||
{ double dVal ;
|
||||
LuaGetParam( L, 2, dVal) ;
|
||||
LuaClearStack( L) ;
|
||||
bOk = SetValInNotes( sKey, dVal, sNotes) ;
|
||||
bOk = SetVal( sKey, dVal, sNotes) ;
|
||||
} break ;
|
||||
case LUA_TSTRING :
|
||||
{ string sVal ;
|
||||
LuaGetParam( L, 2, sVal) ;
|
||||
LuaClearStack( L) ;
|
||||
bOk = SetValInNotes( sKey, (const string&) sVal, sNotes) ;
|
||||
bOk = SetVal( sKey, (const string&) sVal, sNotes) ;
|
||||
} break ;
|
||||
case LUA_TTABLE :
|
||||
{ Frame3d frVal ;
|
||||
@@ -231,32 +271,35 @@ LuaSetVal( lua_State* L)
|
||||
STRVECTOR vsVal ;
|
||||
if ( LuaGetParam( L, 2, frVal)) {
|
||||
LuaClearStack( L) ;
|
||||
bOk = SetValInNotes( sKey, frVal, sNotes) ;
|
||||
bOk = SetVal( sKey, frVal, sNotes) ;
|
||||
}
|
||||
else if ( LuaGetParam( L, 2, b3Val)) {
|
||||
LuaClearStack( L) ;
|
||||
bOk = SetValInNotes( sKey, b3Val, sNotes) ;
|
||||
bOk = SetVal( sKey, b3Val, sNotes) ;
|
||||
}
|
||||
else if ( LuaGetParam( L, 2, vtVal)) {
|
||||
LuaClearStack( L) ;
|
||||
bOk = SetValInNotes( sKey, vtVal, sNotes) ;
|
||||
bOk = SetVal( sKey, vtVal, sNotes) ;
|
||||
}
|
||||
else if ( LuaGetParam( L, 2, vnVal)) {
|
||||
LuaClearStack( L) ;
|
||||
bOk = SetValInNotes( sKey, vnVal, sNotes) ;
|
||||
bOk = SetVal( sKey, vnVal, sNotes) ;
|
||||
}
|
||||
else if ( LuaGetParam( L, 2, vdVal)) {
|
||||
LuaClearStack( L) ;
|
||||
bOk = SetValInNotes( sKey, vdVal, sNotes) ;
|
||||
bOk = SetVal( sKey, vdVal, sNotes) ;
|
||||
}
|
||||
else if ( LuaGetParam( L, 2, vsVal)) {
|
||||
LuaClearStack( L) ;
|
||||
bOk = SetValInNotes( sKey, vsVal, sNotes) ;
|
||||
bOk = SetVal( sKey, vsVal, sNotes) ;
|
||||
}
|
||||
} break ;
|
||||
}
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, sNotes) ;
|
||||
if ( bOk)
|
||||
LuaSetParam( L, sNotes) ;
|
||||
else
|
||||
LuaSetParam(L, "") ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
@@ -493,7 +536,7 @@ LuaGetEnableUI( lua_State* L)
|
||||
static int
|
||||
LuaOutBox( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : stringa, titolo [, icona]
|
||||
// 2, 3 o 4 parametri : sOut, sTitle [, sIcon] [, sButtons]
|
||||
string sOut ;
|
||||
LuaCheckParam( L, 1, sOut)
|
||||
string sTitle ;
|
||||
@@ -510,16 +553,34 @@ LuaOutBox( lua_State* L)
|
||||
nIcon = MB_ICONINFORMATION ;
|
||||
else if ( sIcon == "QUESTION")
|
||||
nIcon = MB_ICONQUESTION ;
|
||||
string sButtons ;
|
||||
LuaGetParam( L, 4, sButtons) ;
|
||||
int nButtons = MB_OKCANCEL ;
|
||||
ToUpper( sButtons) ;
|
||||
if ( sButtons == "OK")
|
||||
nButtons = MB_OK ;
|
||||
else if ( sButtons == "OKCANCEL")
|
||||
nButtons = MB_OKCANCEL ;
|
||||
else if ( sButtons == "ABORTRETRYIGNORE")
|
||||
nButtons = MB_ABORTRETRYIGNORE ;
|
||||
else if ( sButtons == "YESNOCANCEL")
|
||||
nButtons = MB_YESNOCANCEL ;
|
||||
else if ( sButtons == "YESNO")
|
||||
nButtons = MB_YESNO ;
|
||||
else if ( sButtons == "RETRYCANCEL")
|
||||
nButtons = MB_RETRYCANCEL ;
|
||||
else if ( sButtons == "CANCELTRYCONTINUE")
|
||||
nButtons = MB_CANCELTRYCONTINUE ;
|
||||
LuaClearStack( L) ;
|
||||
// se abilitata UI, emetto la finestra di dialogo
|
||||
int nRes = IDCANCEL ;
|
||||
if ( ExeGetEnableUI()) {
|
||||
HWND hTopWnd = ExeGetMainWindowHandle() ; // FindTopWindow() ;
|
||||
nRes = MessageBox( hTopWnd, stringtoW( sOut), stringtoW( sTitle),
|
||||
MB_OKCANCEL | nIcon | MB_TASKMODAL) ;
|
||||
}
|
||||
// risultato (Ok->true, Cancel->false)
|
||||
LuaSetParam( L, ( nRes == IDOK)) ;
|
||||
// emetto finestra di dialogo (solo se ablitata UI)
|
||||
int nRes = ExeMessageBox( sOut, sTitle, nButtons | nIcon) ;
|
||||
// risultato
|
||||
if ( nRes == IDOK || nRes == IDRETRY || nRes == IDYES || nRes == IDTRYAGAIN)
|
||||
LuaSetParam( L, true) ;
|
||||
else if ( nRes == IDNO || nRes == IDCONTINUE || nRes == IDIGNORE)
|
||||
LuaSetParam( L, false) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
@@ -716,6 +777,67 @@ LuaCompareFilesLastWriteTime( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
CALLBACK DirectoryBoxProc( HWND hwndDlg, UINT uMsg, LPARAM lParam, LPARAM lpData)
|
||||
{
|
||||
if ( uMsg == BFFM_INITIALIZED)
|
||||
SendMessage( hwndDlg, BFFM_SETSELECTION, TRUE, lpData) ;
|
||||
return 0 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaDirectoryDialog( lua_State* L)
|
||||
{
|
||||
// 2 parametri : sText, sDir
|
||||
string sText ;
|
||||
LuaCheckParam( L, 1, sText)
|
||||
string sDir ;
|
||||
LuaCheckParam( L, 2, sDir)
|
||||
LuaClearStack( L) ;
|
||||
// se abilitata UI, emetto la finestra di dialogo
|
||||
if ( ExeGetEnableUI()) {
|
||||
// Converto i parametri nel formato wide
|
||||
AtoWEX<MAX_PATH> wsText( sText.c_str()) ;
|
||||
AtoWEX<MAX_PATH> wsDirName( sDir.c_str()) ;
|
||||
// Converto L'/' in L'\\' nel nome directory proposto
|
||||
for ( wchar_t* pC = wsDirName.m_psz ; *pC != L'\0' ; ++ pC) {
|
||||
if ( *pC == L'/')
|
||||
*pC = L'\\' ;
|
||||
}
|
||||
// Riempio la struttura dati per il dialogo
|
||||
BROWSEINFO bi = { 0} ;
|
||||
bi.hwndOwner = ExeGetMainWindowHandle() ;
|
||||
bi.lpszTitle = LPWSTR( wsText) ;
|
||||
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_USENEWUI ;
|
||||
bi.lpfn = DirectoryBoxProc ;
|
||||
bi.lParam = (LPARAM) LPWSTR( wsDirName) ;
|
||||
// Visualizzo il dialogo
|
||||
LPITEMIDLIST pIdl = SHBrowseForFolder( &bi) ;
|
||||
if ( pIdl != NULL) {
|
||||
// recupero la path della directory
|
||||
WCHAR wPath[MAX_PATH] ;
|
||||
if ( SHGetPathFromIDList( pIdl, wPath) != FALSE)
|
||||
LuaSetParam( L, wstrztoA( wPath)) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
// free memory used
|
||||
IMalloc* pImalloc = NULL ;
|
||||
if ( SUCCEEDED( SHGetMalloc( &pImalloc))) {
|
||||
pImalloc->Free( pIdl) ;
|
||||
pImalloc->Release() ;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
}
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaExistsDirectory( lua_State* L)
|
||||
@@ -963,6 +1085,50 @@ LuaGetMsg( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaVerifyKeyOption( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nOptInd
|
||||
int nOptInd ;
|
||||
LuaCheckParam( L, 1, nOptInd)
|
||||
LuaClearStack( L) ;
|
||||
// verifico l'abilitazione dell'opzione (da chiave + licenza)
|
||||
bool bOk = ExeVerifyKeyOption( nOptInd) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSetDefaultFont( lua_State* L)
|
||||
{
|
||||
// 1 parametro : sDefaultFont
|
||||
string sDefaultFont ;
|
||||
LuaCheckParam( L, 1, sDefaultFont)
|
||||
LuaClearStack( L) ;
|
||||
// imposta il font di default
|
||||
bool bOk = ExeSetFont( "", sDefaultFont) ;
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetDefaultFont( lua_State* L)
|
||||
{
|
||||
// nessun parametro
|
||||
LuaClearStack( L) ;
|
||||
// recupera il font di cefault
|
||||
string sDefaultFont ;
|
||||
bool bOk = ExeGetDefaultFont( sDefaultFont) ;
|
||||
if ( bOk)
|
||||
LuaSetParam( L, sDefaultFont) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaWinExec( lua_State* L)
|
||||
@@ -985,6 +1151,50 @@ LuaWinExec( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCloseExe( lua_State* L)
|
||||
{
|
||||
// 1 parametro opzionale : [nExitCode]
|
||||
int nExitCode = 0 ;
|
||||
LuaGetParam( L, 1, nExitCode) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo chiusura forzata
|
||||
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 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCreateMutex( lua_State* L)
|
||||
{
|
||||
// un solo parametro : sMutexName
|
||||
string sMutexName ;
|
||||
LuaCheckParam( L, 1, sMutexName)
|
||||
LuaClearStack( L) ;
|
||||
// verifico esistenza Mutex con Nome (altrimenti lo creo per bloccare gli altri)
|
||||
bool bOk = ExeCreateMutex( sMutexName) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaReleaseMutex( lua_State* L)
|
||||
{
|
||||
// nessun parametro
|
||||
LuaClearStack( L) ;
|
||||
// rilascio l'eventuale Mutex con Nome attivo
|
||||
bool bOk = ExeReleaseMutex() ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
const int MAX_CTRLS = IDC_TEXT8 -IDC_TEXT1 + 1 ;
|
||||
const int OFFS_CTRLS = 40 ;
|
||||
@@ -1120,7 +1330,7 @@ CALLBACK DialogBoxProc( HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam
|
||||
break ;
|
||||
}
|
||||
}
|
||||
// continua di seguito
|
||||
[[fallthrough]] ;
|
||||
case IDCANCEL :
|
||||
EndDialog( hwndDlg, wParam) ;
|
||||
return TRUE ;
|
||||
@@ -1150,7 +1360,7 @@ LuaDialogBox( lua_State* L)
|
||||
// se abilitata UI, lancio dialogo
|
||||
if ( ExeGetEnableUI()) {
|
||||
// lancio dialogo
|
||||
HWND hTopWnd = ExeGetMainWindowHandle() ; // FindTopWindow() ;
|
||||
HWND hTopWnd = ExeGetMainWindowHandle() ;
|
||||
bool bOk = ( DialogBox( GetModuleIstance(), MAKEINTRESOURCE( IDD_LUADLG), hTopWnd, (DLGPROC)DialogBoxProc) == IDOK) ;
|
||||
// restituzione parametri
|
||||
if ( bOk) {
|
||||
@@ -1176,11 +1386,13 @@ LuaInstallGeneral( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "print", MyPrint) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtEvalNumExpr", LuaEvalNumExpr) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtPause", LuaPause) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetKeyPressed", LuaGetKeyPressed) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtStartCounter", LuaStartCounter) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtStopCounter", LuaStopCounter) ;
|
||||
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) ;
|
||||
@@ -1202,6 +1414,7 @@ LuaInstallGeneral( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtEraseFile", LuaEraseFile) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtFindAllFiles", LuaFindAllFiles) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCompareFilesLastWriteTime", LuaCompareFilesLastWriteTime) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtDirectoryDialog", LuaDirectoryDialog) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtExistsDirectory", LuaExistsDirectory) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCreateDirectory", LuaCreateDirectory) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtEmptyDirectory", LuaEmptyDirectory) ;
|
||||
@@ -1217,8 +1430,14 @@ LuaInstallGeneral( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtIs64bit", LuaIs64bit) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetLanguage", LuaGetLanguage) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtMsg", LuaGetMsg) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtDialogBox", LuaDialogBox) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtVerifyKeyOption", LuaVerifyKeyOption) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSetDefaultFont", LuaSetDefaultFont) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetDefaultFont", LuaGetDefaultFont) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtWinExec", LuaWinExec) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCloseExe", LuaCloseExe) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCreateMutex", LuaCreateMutex) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtReleaseMutex", LuaReleaseMutex) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtDialogBox", LuaDialogBox) ;
|
||||
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
@@ -530,6 +530,83 @@ LuaBBoxLocToLoc( lua_State* L)
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaQuaternionFromAxisAngle( lua_State* L)
|
||||
{
|
||||
// 2 parametri : vtAx, dAngDeg
|
||||
Vector3d vtAx ;
|
||||
LuaCheckParam( L, 1, vtAx)
|
||||
double dAngDeg ;
|
||||
LuaCheckParam( L, 2, dAngDeg)
|
||||
LuaClearStack( L) ;
|
||||
// calcolo il quaternione che produce la rotazione equivalente
|
||||
Quaternion qtQ = FromAxisAngle( vtAx, dAngDeg) ;
|
||||
if ( ! qtQ.IsSmall())
|
||||
LuaSetParam( L, qtQ) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaQuaternionToAxisAngle( lua_State* L)
|
||||
{
|
||||
// 1 parametro : Quaternion
|
||||
Quaternion qtQ ;
|
||||
LuaCheckParam( L, 1, qtQ)
|
||||
LuaClearStack( L) ;
|
||||
// calcolo l'asse e l'angolo di rotazione equivalenti
|
||||
Vector3d vtAx ;
|
||||
double dAngDeg ;
|
||||
bool bOk = ToAxisAngle( qtQ, vtAx, dAngDeg) ;
|
||||
if ( bOk) {
|
||||
LuaSetParam( L, vtAx) ;
|
||||
LuaSetParam( L, dAngDeg) ;
|
||||
return 2 ;
|
||||
}
|
||||
else {
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaQuaternionFromFrame( lua_State* L)
|
||||
{
|
||||
// 1 parametro : Frame
|
||||
Frame3d frFrame ;
|
||||
LuaCheckParam( L, 1, frFrame)
|
||||
LuaClearStack( L) ;
|
||||
// calcolo il quaternione che produce l'orientamento di questo frame tramite rotazione dal globale
|
||||
Quaternion qtQ = FromFrame( frFrame) ;
|
||||
if ( ! qtQ.IsSmall())
|
||||
LuaSetParam( L, qtQ) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaQuaternionToFrame( lua_State* L)
|
||||
{
|
||||
// 1 parametro : Quaternion
|
||||
Quaternion qtQ ;
|
||||
LuaCheckParam( L, 1, qtQ)
|
||||
LuaClearStack( L) ;
|
||||
// calcolo il frame equivalente come orientamento a quello globale ruotato dal quaternione
|
||||
Frame3d frFrame ;
|
||||
bool bOk = ToFrame( qtQ, frFrame) ;
|
||||
if ( bOk)
|
||||
LuaSetParam( L, frFrame) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallGeoBase( LuaMgr& luaMgr)
|
||||
@@ -557,5 +634,9 @@ LuaInstallGeoBase( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtBBoxToGlob", LuaBBoxToGlob) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtBBoxToLoc", LuaBBoxToLoc) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtBBoxLocToLoc", LuaBBoxLocToLoc) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtQuaternionFromAxisAngle", LuaQuaternionFromAxisAngle) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtQuaternionToAxisAngle", LuaQuaternionToAxisAngle) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtQuaternionFromFrame", LuaQuaternionFromFrame) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtQuaternionToFrame", LuaQuaternionToFrame) ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
@@ -49,6 +49,38 @@ LuaPointCurveDist( lua_State* L)
|
||||
return 3 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaPointCurveDistSide( lua_State* L)
|
||||
{
|
||||
// 3 o 4 parametri : ptP, nCrvId, vtN [, nRefId]
|
||||
Point3d ptP ;
|
||||
LuaCheckParam( L, 1, ptP)
|
||||
int nId ;
|
||||
LuaCheckParam( L, 2, nId)
|
||||
Vector3d vtN ;
|
||||
LuaCheckParam( L, 3, vtN)
|
||||
int nRefType = nId ;
|
||||
LuaGetParam( L, 4, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// calcolo la distanza
|
||||
int nSide ;
|
||||
double dDist ;
|
||||
Point3d ptMin ;
|
||||
bool bOk = ExePointCurveDistSide( ptP, nId, vtN, nRefType, &dDist, ptMin, &nSide) ;
|
||||
if ( bOk) {
|
||||
LuaSetParam( L, dDist) ;
|
||||
LuaSetParam( L, ptMin) ;
|
||||
LuaSetParam( L, nSide) ;
|
||||
}
|
||||
else {
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L) ;
|
||||
}
|
||||
return 3 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaPointSurfTmDist( lua_State* L)
|
||||
@@ -79,12 +111,44 @@ LuaPointSurfTmDist( lua_State* L)
|
||||
return 3 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaPointSurfBzDist( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : ptP, nSbzId, [, nRefId]
|
||||
Point3d ptP ;
|
||||
LuaCheckParam( L, 1, ptP)
|
||||
int nId ;
|
||||
LuaCheckParam( L, 2, nId)
|
||||
int nRefType = nId ;
|
||||
LuaGetParam( L, 3, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// calcolo la distanza
|
||||
double dDist ;
|
||||
Point3d ptMin ;
|
||||
Vector3d vtN ;
|
||||
bool bOk = ExePointSurfBzDist( ptP, nId, nRefType, &dDist, ptMin, vtN) ;
|
||||
if ( bOk) {
|
||||
LuaSetParam( L, dDist) ;
|
||||
LuaSetParam( L, ptMin) ;
|
||||
LuaSetParam( L, vtN) ;
|
||||
}
|
||||
else {
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L) ;
|
||||
}
|
||||
return 3 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallGeoDist( LuaMgr& luaMgr)
|
||||
{
|
||||
bool bOk = ( &luaMgr != nullptr) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtPointCurveDist", LuaPointCurveDist) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtPointCurveDistSide", LuaPointCurveDistSide) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtPointSurfTmDist", LuaPointSurfTmDist) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtPointSurfBzDist", LuaPointSurfBzDist) ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
+256
-130
@@ -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,136 @@ LuaLineSurfTmInters( lua_State* L)
|
||||
return 3 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaLineSurfBzInters( 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 superficie trimesh
|
||||
INTDBLVECTOR vInters ;
|
||||
if ( ExeLineSurfBzInters( 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
|
||||
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)
|
||||
@@ -186,99 +319,6 @@ LuaParPlanesSurfTmInters( lua_State* L)
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmSurfTmInters( 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)
|
||||
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
|
||||
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
|
||||
LuaPlaneVolZmapInters( lua_State* L)
|
||||
@@ -310,19 +350,105 @@ LuaPlaneVolZmapInters( lua_State* L)
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCurveCurveInters( lua_State* L)
|
||||
{
|
||||
// 3 parametri : nId1, nId2, nDestGrpId
|
||||
int nId1 ;
|
||||
LuaCheckParam( L, 1, nId1)
|
||||
int nId2 ;
|
||||
LuaCheckParam( L, 2, nId2)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 3, nDestGrpId) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo l'intersezione
|
||||
int nPntCount = 0 ;
|
||||
int nCrvCount = 0 ;
|
||||
int nNewId = ExeCurveCurveInters( nId1, nId2, nDestGrpId, &nPntCount, &nCrvCount) ;
|
||||
// restituisco il risultato
|
||||
if ( nNewId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nNewId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L, nPntCount) ;
|
||||
LuaSetParam( L, nCrvCount) ;
|
||||
return 3 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCurveSurfTmInters( lua_State* L)
|
||||
{
|
||||
// 3 parametri : nCrvId, nStmId, nDestGrpId
|
||||
int nCrvId ;
|
||||
LuaCheckParam( L, 1, nCrvId)
|
||||
int nStmId ;
|
||||
LuaCheckParam( L, 2, nStmId)
|
||||
int nDestGrpId ;
|
||||
LuaCheckParam( L, 3, nDestGrpId) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo l'intersezione
|
||||
int nPntCount = 0 ;
|
||||
int nCrvCount = 0 ;
|
||||
int nNewId = ExeCurveSurfTmInters( nCrvId, nStmId, nDestGrpId, &nPntCount, &nCrvCount) ;
|
||||
// restituisco il risultato
|
||||
if ( nNewId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nNewId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L, nPntCount) ;
|
||||
LuaSetParam( L, nCrvCount) ;
|
||||
return 3 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSurfTmSurfTmInters( 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 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
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( "EgtLineSurfBzInters", LuaLineSurfBzInters) ;
|
||||
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( "EgtLineVolZmapInters", LuaLineVolZmapInters) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtPlaneVolZmapInters", LuaPlaneVolZmapInters) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCurveInters", LuaCurveCurveInters) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCurveSurfTmInters", LuaCurveSurfTmInters) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmSurfTmInters", LuaSurfTmSurfTmInters) ;
|
||||
return bOk ;
|
||||
}
|
||||
}
|
||||
|
||||
+10
-8
@@ -312,16 +312,16 @@ LuaSaveFile( lua_State* L)
|
||||
static int
|
||||
LuaSaveObjToFile( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : nId, path del file [, flag]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
// 2 o 3 parametri : vId, path del file [, flag]
|
||||
INTVECTOR vId ;
|
||||
LuaCheckParam( L, 1, vId)
|
||||
string sFilePath ;
|
||||
LuaCheckParam( L, 2, sFilePath)
|
||||
int nFlag = GDB_SV_CMPTXT ;
|
||||
LuaGetParam( L, 3, nFlag) ;
|
||||
LuaClearStack( L) ;
|
||||
// copio il gruppo nel file
|
||||
bool bOk = ExeSaveObjToFile( nId, sFilePath, nFlag) ;
|
||||
bool bOk = ExeSaveObjToFile( vId, sFilePath, nFlag) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
@@ -331,16 +331,18 @@ LuaSaveObjToFile( lua_State* L)
|
||||
static int
|
||||
LuaSaveMachGroupToFile( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : nMGroupId, path del file [, flag]
|
||||
// 2, 3 o 4 parametri : nMGroupId, [ vPlusId,] sFilePath [, nFlag]
|
||||
int nMGroupId ;
|
||||
LuaCheckParam( L, 1, nMGroupId)
|
||||
INTVECTOR vPlusId ;
|
||||
int nOffs = ( LuaGetParam( L, 2, vPlusId) ?1 : 0) ;
|
||||
string sFilePath ;
|
||||
LuaCheckParam( L, 2, sFilePath)
|
||||
LuaCheckParam( L, 2 + nOffs, sFilePath)
|
||||
int nFlag = GDB_SV_CMPTXT ;
|
||||
LuaGetParam( L, 3, nFlag) ;
|
||||
LuaGetParam( L, 3 + nOffs, nFlag) ;
|
||||
LuaClearStack( L) ;
|
||||
// copio il gruppo nel file
|
||||
bool bOk = ExeSaveMachGroupToFile( nMGroupId, sFilePath, nFlag) ;
|
||||
bool bOk = ExeSaveMachGroupToFile( nMGroupId, vPlusId, sFilePath, nFlag) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
|
||||
+463
-56
@@ -15,6 +15,7 @@
|
||||
#include "stdafx.h"
|
||||
#include "LUA.h"
|
||||
#include "/EgtDev/Include/EXeExecutor.h"
|
||||
#include "/EgtDev/Include/EXeConst.h"
|
||||
#include "/EgtDev/Include/EMkToolConst.h"
|
||||
#include "/EgtDev/Include/EMkMachiningConst.h"
|
||||
#include "/EgtDev/Include/EGkGdbConst.h"
|
||||
@@ -227,6 +228,26 @@ LuaAddMachGroup( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaCopyMachGroup( lua_State* L)
|
||||
{
|
||||
// 2 parametri : nome del gruppo sorgente, nome del nuovo gruppo
|
||||
string sSouName ;
|
||||
LuaCheckParam( L, 1, sSouName)
|
||||
string sName ;
|
||||
LuaCheckParam( L, 2, sName) ;
|
||||
LuaClearStack( L) ;
|
||||
// copio la macchinata
|
||||
int nId = ExeCopyMachGroup( sSouName, sName) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaRemoveMachGroup( lua_State* L)
|
||||
@@ -242,6 +263,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)
|
||||
@@ -519,22 +558,20 @@ LuaAddRawPartWithPart( lua_State* L)
|
||||
static int
|
||||
LuaModifyRawPart( lua_State* L)
|
||||
{
|
||||
// 6 parametri : nRawId, nCrvId, dOverMat, dZmin, dHeight, cCol
|
||||
// 5 parametri : nRawId, nCrvId, dOverMat, dHeight, cCol
|
||||
int nRawId ;
|
||||
LuaCheckParam( L, 1, nRawId)
|
||||
int nCrvId ;
|
||||
LuaCheckParam( L, 2, nCrvId)
|
||||
double dOverMat ;
|
||||
LuaCheckParam( L, 3, dOverMat)
|
||||
double dZmin ;
|
||||
LuaCheckParam( L, 4, dZmin)
|
||||
double dHeight ;
|
||||
LuaCheckParam( L, 5, dHeight)
|
||||
LuaCheckParam( L, 4, dHeight)
|
||||
Color cCol ;
|
||||
LuaCheckParam( L, 6, cCol)
|
||||
LuaCheckParam( L, 5, cCol)
|
||||
LuaClearStack( L) ;
|
||||
// modifico le dimensioni del grezzo
|
||||
bool bOk = ExeModifyRawPart( nRawId, nCrvId, dOverMat, dZmin, dHeight, cCol) ;
|
||||
bool bOk = ExeModifyRawPart( nRawId, nCrvId, dOverMat, dHeight, cCol) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
@@ -1042,6 +1079,53 @@ LuaChangeTable( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaMoveDispAxis( lua_State* L)
|
||||
{
|
||||
// 2 parametri : sName, dPos
|
||||
string sName ;
|
||||
LuaCheckParam( L, 1, sName)
|
||||
double dPos ;
|
||||
LuaCheckParam( L, 2, dPos)
|
||||
LuaClearStack( L) ;
|
||||
// muovo l'asse nella nuova posizione
|
||||
bool bOk = ExeMoveDispAxis( sName, dPos) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaRemoveDispAxis( lua_State* L)
|
||||
{
|
||||
// 1 parametro : sName
|
||||
string sName ;
|
||||
LuaCheckParam( L, 1, sName)
|
||||
LuaClearStack( L) ;
|
||||
// rimuovo il movimento dell'asse
|
||||
bool bOk = ExeRemoveDispAxis( sName) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaKeepAllDispAxes( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nSouPhase
|
||||
int nSouPhase ;
|
||||
LuaCheckParam( L, 1, nSouPhase) ;
|
||||
LuaClearStack( L) ;
|
||||
// confermo i movimenti degli assi di disposizione nella fase corrente della macchinata corrente
|
||||
bool bOk = ExeKeepAllDispAxes( nSouPhase) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaAddFixture( lua_State* L)
|
||||
@@ -1056,7 +1140,7 @@ LuaAddFixture( lua_State* L)
|
||||
if ( LuaGetParam( L, 3, dAngRotDeg))
|
||||
LuaGetParam( L, 4, dMov) ;
|
||||
LuaClearStack( L) ;
|
||||
// metto l'asse nella nuova posizione
|
||||
// aggiungo la ventosa nella posizione indicata
|
||||
int nId = ExeAddFixture( sName, ptPos, dAngRotDeg, dMov) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
@@ -1166,6 +1250,23 @@ LuaRotateFixture( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSetFixtureLink( lua_State* L)
|
||||
{
|
||||
// 2 parametri : nFxtId, sTaLink
|
||||
int nFxtId ;
|
||||
LuaCheckParam( L, 1, nFxtId)
|
||||
string sTaLink ;
|
||||
LuaCheckParam( L, 2, sTaLink)
|
||||
LuaClearStack( L) ;
|
||||
// aggancio il bloccaggio ad asse tavola
|
||||
bool bOk= ExeSetFixtureLink( nFxtId, sTaLink) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaMoveFixtureMobile( lua_State* L)
|
||||
@@ -1183,6 +1284,23 @@ LuaMoveFixtureMobile( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSetFixtureMobile( lua_State* L)
|
||||
{
|
||||
// 2 parametri : nFxtId, dMov
|
||||
int nFxtId ;
|
||||
LuaCheckParam( L, 1, nFxtId)
|
||||
double dMov ;
|
||||
LuaCheckParam( L, 2, dMov)
|
||||
LuaClearStack( L) ;
|
||||
// imposto il movimento della parte mobile del bloccaggio
|
||||
bool bOk= ExeSetFixtureMobile( nFxtId, dMov) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
// Tools database
|
||||
//-------------------------------------------------------------------------------
|
||||
@@ -1591,6 +1709,22 @@ LuaTdbGetCurrToolThLength( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaTdbIsCurrToolStandardDraw( lua_State* L)
|
||||
{
|
||||
// nessun parametro
|
||||
LuaClearStack( L) ;
|
||||
// recupero lo stato
|
||||
bool bStandard ;
|
||||
bool bOk = ExeTdbCurrToolIsStandardDraw( bStandard) ;
|
||||
if ( bOk)
|
||||
LuaSetParam( L, bStandard) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaTdbGetCurrToolDraw( lua_State* L)
|
||||
@@ -1714,10 +1848,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 ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -2149,10 +2285,12 @@ LuaGetPrevOperation( lua_State* L)
|
||||
static int
|
||||
LuaGetFirstActiveOperation( lua_State* L)
|
||||
{
|
||||
// nessun parametro
|
||||
// nessuno o 1 parametro : [bNeedMachNotEmpty]
|
||||
bool bNeedMachNotEmpty = false ;
|
||||
LuaGetParam( L, 1, bNeedMachNotEmpty) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero la prima operazione attiva della macchinata corrente
|
||||
int nId = ExeGetFirstActiveOperation() ;
|
||||
int nId = ExeGetFirstActiveOperation( bNeedMachNotEmpty) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
@@ -2165,12 +2303,14 @@ LuaGetFirstActiveOperation( lua_State* L)
|
||||
static int
|
||||
LuaGetNextActiveOperation( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nId
|
||||
// 1 o 2 parametri : nId [, bNeedMachNotEmpty]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
bool bNeedMachNotEmpty = false ;
|
||||
LuaGetParam( L, 2, bNeedMachNotEmpty) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero la successiva operazione attiva della macchinata corrente
|
||||
int nNextId = ExeGetNextActiveOperation( nId) ;
|
||||
int nNextId = ExeGetNextActiveOperation( nId, bNeedMachNotEmpty) ;
|
||||
// restituisco il risultato
|
||||
if ( nNextId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nNextId) ;
|
||||
@@ -2183,10 +2323,12 @@ LuaGetNextActiveOperation( lua_State* L)
|
||||
static int
|
||||
LuaGetLastActiveOperation( lua_State* L)
|
||||
{
|
||||
// nessun parametro
|
||||
// nessuno o 1 parametro : [bNeedMachNotEmpty]
|
||||
bool bNeedMachNotEmpty = false ;
|
||||
LuaGetParam( L, 1, bNeedMachNotEmpty) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero l'ultima operazione attiva della macchinata corrente
|
||||
int nId = ExeGetLastActiveOperation() ;
|
||||
int nId = ExeGetLastActiveOperation( bNeedMachNotEmpty) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
@@ -2199,12 +2341,14 @@ LuaGetLastActiveOperation( lua_State* L)
|
||||
static int
|
||||
LuaGetPrevActiveOperation( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nId
|
||||
// 1 o 2 parametri : nId [, bNeedMachNotEmpty]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
bool bNeedMachNotEmpty = false ;
|
||||
LuaGetParam( L, 2, bNeedMachNotEmpty) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero la precedente operazione attiva della macchinata corrente
|
||||
int nNextId = ExeGetPrevActiveOperation( nId) ;
|
||||
int nNextId = ExeGetPrevActiveOperation( nId, bNeedMachNotEmpty) ;
|
||||
// restituisco il risultato
|
||||
if ( nNextId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nNextId) ;
|
||||
@@ -2301,12 +2445,14 @@ LuaGetOperationId( lua_State* L)
|
||||
static int
|
||||
LuaIsOperationEmpty( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nId
|
||||
// 1 o 2 parametri : nId [, nEmptyType]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
int nEmptyType = EMP_NEED_GEOM ;
|
||||
LuaGetParam( L, 2, nEmptyType) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero lo stato della operazione indicata della macchinata corrente
|
||||
bool bOk = ExeIsOperationEmpty( nId) ;
|
||||
bool bOk = ExeIsOperationEmpty( nId, nEmptyType) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
@@ -2556,6 +2702,34 @@ LuaSpecialUpdateDisposition( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetDispositionToolData( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nId
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
LuaClearStack( L) ;
|
||||
// recupero dati dell'eventuale utensile associato alla disposizione
|
||||
string sName ;
|
||||
string sHead ;
|
||||
int nExit ;
|
||||
string sTcPos ;
|
||||
bool bOk = ExeGetDispositionToolData( nId, sName, sHead, nExit, sTcPos) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk) {
|
||||
LuaSetParam( L, sName) ;
|
||||
LuaSetParam( L, sHead) ;
|
||||
LuaSetParam( L, nExit) ;
|
||||
LuaSetParam( L, sTcPos) ;
|
||||
return 4 ;
|
||||
}
|
||||
else {
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
// Machinings
|
||||
//-------------------------------------------------------------------------------
|
||||
@@ -2844,12 +3018,31 @@ LuaGetMachiningGeometry( lua_State* L)
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaIsMachiningEmpty( lua_State* L)
|
||||
LuaGetMachiningSkippedGeometry( lua_State* L)
|
||||
{
|
||||
// nessun parametro
|
||||
LuaClearStack( L) ;
|
||||
// recupero gli indici della geometria non lavorata della lavorazione corrente
|
||||
SELVECTOR vSel ;
|
||||
bool bOk = ExeGetMachiningSkippedGeometry( vSel) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk)
|
||||
LuaSetParam( L, vSel) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaIsMachiningEmpty( lua_State* L)
|
||||
{
|
||||
// nessuno o 1 parametro : [nEmptyType]
|
||||
int nEmptyType = EMP_NEED_GEOM ;
|
||||
LuaGetParam( L, 1, nEmptyType) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero lo stato della lavorazione corrente
|
||||
bool bEmpty = ExeIsMachiningEmpty() ;
|
||||
bool bEmpty = ExeIsMachiningEmpty( nEmptyType) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bEmpty) ;
|
||||
return 1 ;
|
||||
@@ -2957,14 +3150,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 ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -2986,6 +3183,63 @@ LuaGetClEntIndex( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetClEntAxesStatus( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nEntId
|
||||
int nEntId ;
|
||||
LuaGetParam( L, 1, nEntId) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero lo stato del movimento assi
|
||||
int nStatus ;
|
||||
bool bOk = ExeGetClEntAxesStatus( nEntId, nStatus) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk)
|
||||
LuaSetParam( L, nStatus) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetClEntAxesMask( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nEntId
|
||||
int nEntId ;
|
||||
LuaGetParam( L, 1, nEntId) ;
|
||||
LuaClearStack( L) ;
|
||||
// recupero la mascheratura del movimento assi (valida solo in rapido)
|
||||
int nMask ;
|
||||
bool bOk = ExeGetClEntAxesMask( nEntId, nMask) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk)
|
||||
LuaSetParam( L, nMask) ;
|
||||
else
|
||||
LuaSetParam( 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
|
||||
//-------------------------------------------------------------------------------
|
||||
@@ -3074,6 +3328,21 @@ LuaSimSetUiStatus( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSimEnableToolTipTrace( lua_State* L)
|
||||
{
|
||||
// 1 parametro : bEnable
|
||||
bool bEnable ;
|
||||
LuaCheckParam( L, 1, bEnable)
|
||||
LuaClearStack( L) ;
|
||||
// imposto abilitazione disegno traccia della punta utensile
|
||||
bool bOk = ExeSimEnableToolTipTrace( bEnable) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSimGetAxisInfoPos( lua_State* L)
|
||||
@@ -3291,26 +3560,19 @@ LuaSetRotAxisBlock( lua_State* L)
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetRotAxisBlocked( lua_State* L)
|
||||
LuaGetCalcTable( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nInd ( 0-based)
|
||||
int nInd ;
|
||||
LuaCheckParam( L, 1, nInd)
|
||||
// nessun parametro
|
||||
LuaClearStack( L) ;
|
||||
// recupero dati bloccaggio asse in posizione nInd
|
||||
string sAxis ;
|
||||
double dVal ;
|
||||
bool bOk = ExeGetRotAxisBlocked( nInd, sAxis, dVal) ;
|
||||
// recupero la tavola correnti
|
||||
string sTable ;
|
||||
bool bOk = ExeGetCalcTable( sTable) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk) {
|
||||
LuaSetParam( L, sAxis) ;
|
||||
LuaSetParam( L, dVal) ;
|
||||
}
|
||||
else {
|
||||
if ( bOk)
|
||||
LuaSetParam( L, sTable) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L) ;
|
||||
}
|
||||
return 2 ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
@@ -3338,6 +3600,47 @@ LuaGetCalcTool( lua_State* L)
|
||||
return 3 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetAllCurrAxesNames( lua_State* L)
|
||||
{
|
||||
// nessun parametro
|
||||
LuaClearStack( L) ;
|
||||
// imposto l'utensile corrente per il calcolo
|
||||
STRVECTOR vAxName ;
|
||||
bool bOk = ExeGetAllCurrAxesNames( vAxName) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk)
|
||||
LuaSetParam( L, vAxName) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetRotAxisBlocked( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nInd ( 0-based)
|
||||
int nInd ;
|
||||
LuaCheckParam( L, 1, nInd)
|
||||
LuaClearStack( L) ;
|
||||
// recupero dati bloccaggio asse in posizione nInd
|
||||
string sAxis ;
|
||||
double dVal ;
|
||||
bool bOk = ExeGetRotAxisBlocked( nInd, sAxis, dVal) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk) {
|
||||
LuaSetParam( L, sAxis) ;
|
||||
LuaSetParam( L, dVal) ;
|
||||
}
|
||||
else {
|
||||
LuaSetParam( L) ;
|
||||
LuaSetParam( L) ;
|
||||
}
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetCalcAngles( lua_State* L)
|
||||
@@ -3383,13 +3686,13 @@ LuaGetCalcPositions( lua_State* L)
|
||||
break ;
|
||||
}
|
||||
LuaClearStack( L) ;
|
||||
// imposto la tavola corrente per il calcolo
|
||||
int nStat ; double dX ; double dY ; double dZ ;
|
||||
bool bOk = ExeGetCalcPositions( ptP, vAng, nStat, dX, dY, dZ) ;
|
||||
// calcolo gli assi lineari dalla posizione e dagli angoli
|
||||
double dX ; double dY ; double dZ ;
|
||||
bool bOk = ExeGetCalcPositions( ptP, vAng, dX, dY, dZ) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk) {
|
||||
LuaSetParam( L, bOk) ;
|
||||
LuaSetParam( L, nStat) ;
|
||||
LuaSetParam( L, 0) ; // assegnato per compatibilità
|
||||
LuaSetParam( L, dX) ;
|
||||
LuaSetParam( L, dY) ;
|
||||
LuaSetParam( L, dZ) ;
|
||||
@@ -3401,11 +3704,39 @@ LuaGetCalcPositions( lua_State* L)
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetRobotAngles( lua_State* L)
|
||||
{
|
||||
// da 3 parametri : ptP, vtTool, vtAux
|
||||
Point3d ptP ;
|
||||
LuaCheckParam( L, 1, ptP)
|
||||
Vector3d vtTool ;
|
||||
LuaCheckParam( L, 2, vtTool)
|
||||
Vector3d vtAux ;
|
||||
LuaCheckParam( L, 3, vtAux)
|
||||
LuaClearStack( L) ;
|
||||
// imposto la tavola corrente per il calcolo
|
||||
DBLVECTOR vAng1, vAng2 ;
|
||||
bool bOk = ExeGetRobotAngles( ptP, vtTool, vtAux, vAng1, vAng2) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk) {
|
||||
LuaSetParam( L, bOk) ;
|
||||
LuaSetParam( L, vAng1) ;
|
||||
LuaSetParam( L, vAng2) ;
|
||||
return 3 ;
|
||||
}
|
||||
else {
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetCalcTipFromPositions( lua_State* L)
|
||||
{
|
||||
// da 5 a 8 parametri : dX, dY, dZ, dAngA [, dAngB] [, dAngC] [, dAngD], bBottom
|
||||
// da 3 a 10 parametri : dX, dY, dZ [, dAngR1] [, dAngR2] [, dAngR3] [, dAngR4] [, dAngR5] [, dAngR6] [, bBottom]
|
||||
double dX ;
|
||||
LuaCheckParam( L, 1, dX)
|
||||
double dY ;
|
||||
@@ -3414,15 +3745,15 @@ LuaGetCalcTipFromPositions( lua_State* L)
|
||||
LuaCheckParam( L, 3, dZ)
|
||||
DBLVECTOR vAng ;
|
||||
int i ;
|
||||
for ( i = 4 ; i <= 7 ; ++ i) {
|
||||
for ( i = 4 ; i <= 9 ; ++ i) {
|
||||
double dAng ;
|
||||
if ( LuaGetParam( L, i, dAng))
|
||||
vAng.emplace_back( dAng) ;
|
||||
else
|
||||
break ;
|
||||
}
|
||||
bool bBottom ;
|
||||
LuaCheckParam( L, i, bBottom)
|
||||
bool bBottom = false ;
|
||||
LuaGetParam( L, i, bBottom) ;
|
||||
LuaClearStack( L) ;
|
||||
// calcolo il tip utensile dagli assi macchina
|
||||
Point3d ptTip ;
|
||||
@@ -3439,9 +3770,9 @@ LuaGetCalcTipFromPositions( lua_State* L)
|
||||
static int
|
||||
LuaGetCalcToolDirFromAngles( lua_State* L)
|
||||
{
|
||||
// da 1 a 4 parametri : dAngA, dAngB, dAngC, dAngD
|
||||
// da 0 a 6 parametri : [dAngR1] [, dAngR2] [, dAngR3] [, dAngR4] [, dAngR5] [, dAngR6]
|
||||
DBLVECTOR vAng ;
|
||||
for ( int i = 1 ; i <= 4 ; ++ i) {
|
||||
for ( int i = 1 ; i <= 6 ; ++ i) {
|
||||
double dAng ;
|
||||
if ( LuaGetParam( L, i, dAng))
|
||||
vAng.emplace_back( dAng) ;
|
||||
@@ -3464,9 +3795,9 @@ LuaGetCalcToolDirFromAngles( lua_State* L)
|
||||
static int
|
||||
LuaGetCalcAuxDirFromAngles( lua_State* L)
|
||||
{
|
||||
// da 1 a 4 parametri : dAngA, dAngB, dAngC, dAngD
|
||||
// da 0 a 6 parametri : [dAngR1] [, dAngR2] [, dAngR3] [, dAngR4] [, dAngR5] [, dAngR6]
|
||||
DBLVECTOR vAng ;
|
||||
for ( int i = 1 ; i <= 4 ; ++ i) {
|
||||
for ( int i = 1 ; i <= 6 ; ++ i) {
|
||||
double dAng ;
|
||||
if ( LuaGetParam( L, i, dAng))
|
||||
vAng.emplace_back( dAng) ;
|
||||
@@ -3621,6 +3952,26 @@ LuaGetHeadExitCount( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetExitId( lua_State* L)
|
||||
{
|
||||
// 2 parametri : sHead, nExit
|
||||
string sHead ;
|
||||
LuaCheckParam( L, 1, sHead)
|
||||
int nExit ;
|
||||
LuaCheckParam( L, 2, nExit)
|
||||
LuaClearStack( L) ;
|
||||
// recupero l'identificativo dell'Uscita della Testa indicata della macchina
|
||||
int nId = ExeGetExitId( sHead, nExit) ;
|
||||
// restituisco il risultato
|
||||
if ( nId != GDB_ID_NULL)
|
||||
LuaSetParam( L, nId) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetTcPosId( lua_State* L)
|
||||
@@ -3677,6 +4028,25 @@ LuaGetAxisType( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetAxisDir( lua_State* L)
|
||||
{
|
||||
// 1 parametro : sAxis
|
||||
string sAxis ;
|
||||
LuaCheckParam( L, 1, sAxis)
|
||||
LuaClearStack( L) ;
|
||||
// recupero la direzione dell'asse
|
||||
Vector3d vtDir ;
|
||||
bool bOk = ExeGetAxisDir( sAxis, vtDir) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk)
|
||||
LuaSetParam( L, vtDir) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetAxisInvert( lua_State* L)
|
||||
@@ -3732,6 +4102,23 @@ LuaGetAllTablesNames( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetAllAxesNames( lua_State* L)
|
||||
{
|
||||
// nessun parametro
|
||||
LuaClearStack( L) ;
|
||||
// recupero l'elenco degli assi della macchina corrente
|
||||
STRVECTOR vNames ;
|
||||
bool bOk = ExeGetAllAxesNames( vNames) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk)
|
||||
LuaSetParam( L, vNames) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetAllHeadsNames( lua_State* L)
|
||||
@@ -3983,7 +4370,9 @@ LuaInstallMachMgr( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetPrevMachGroup", LuaGetPrevMachGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetMachGroupNewName", LuaGetMachGroupNewName) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtAddMachGroup", LuaAddMachGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCopyMachGroup", LuaCopyMachGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRemoveMachGroup", LuaRemoveMachGroup) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtChangeMachGroupName", LuaChangeMachGroupName) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetMachGroupName", LuaGetMachGroupName) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetMachGroupMachineName", LuaGetMachGroupMachineName) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetMachGroupId", LuaGetMachGroupId) ;
|
||||
@@ -4032,6 +4421,9 @@ LuaInstallMachMgr( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetTableArea", LuaGetTableArea) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetTableAreaOffset", LuaGetTableAreaOffset) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtChangeTable", LuaChangeTable) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtMoveDispAxis", LuaMoveDispAxis) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRemoveDispAxis", LuaRemoveDispAxis) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtKeepAllDispAxes", LuaKeepAllDispAxes) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtAddFixture", LuaAddFixture) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtKeepFixture", LuaKeepFixture) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRemoveFixture", LuaRemoveFixture) ;
|
||||
@@ -4039,7 +4431,9 @@ LuaInstallMachMgr( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetNextFixture", LuaGetNextFixture) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtMoveFixture", LuaMoveFixture) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRotateFixture", LuaRotateFixture) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSetFixtureLink", LuaSetFixtureLink) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtMoveFixtureMobile", LuaMoveFixtureMobile) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSetFixtureMobile", LuaSetFixtureMobile) ;
|
||||
// Tools database
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtTdbGetToolNewName", LuaTdbGetToolNewName) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtTdbAddTool", LuaTdbAddTool) ;
|
||||
@@ -4059,6 +4453,7 @@ LuaInstallMachMgr( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtTdbGetCurrToolMaxDepth", LuaTdbGetCurrToolMaxDepth) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtTdbGetCurrToolThDiam", LuaTdbGetCurrToolThDiam) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtTdbGetCurrToolThLength", LuaTdbGetCurrToolThLength) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtTdbIsCurrToolStandardDraw", LuaTdbIsCurrToolStandardDraw) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtTdbGetCurrToolDraw", LuaTdbGetCurrToolDraw) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtTdbReload", LuaTdbReload) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtTdbSave", LuaTdbSave) ;
|
||||
@@ -4117,6 +4512,7 @@ LuaInstallMachMgr( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetPhaseDisposition", LuaGetPhaseDisposition) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSpecialApplyDisposition", LuaSpecialApplyDisposition) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSpecialUpdateDisposition", LuaSpecialUpdateDisposition) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetDispositionToolData", LuaGetDispositionToolData) ;
|
||||
// Machinings
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtAddMachining", LuaAddMachining) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtCreateMachining", LuaCreateMachining) ;
|
||||
@@ -4131,6 +4527,7 @@ LuaInstallMachMgr( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtUpdateMachining", LuaUpdateMachining) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetMachiningParam", LuaGetMachiningParam) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetMachiningGeometry", LuaGetMachiningGeometry) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetMachiningSkippedGeometry", LuaGetMachiningSkippedGeometry) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtIsMachiningEmpty", LuaIsMachiningEmpty) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetMachiningStartPoint", LuaGetMachiningStartPoint) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetMachiningEndPoint", LuaGetMachiningEndPoint) ;
|
||||
@@ -4140,6 +4537,9 @@ 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( "EgtGetClEntAxesStatus", LuaGetClEntAxesStatus) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetClEntAxesMask", LuaGetClEntAxesMask) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetClEntAxesVal", LuaGetClEntAxesVal) ;
|
||||
// Simulation
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSimInit", LuaSimInit) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSimStart", LuaSimStart) ;
|
||||
@@ -4147,6 +4547,7 @@ LuaInstallMachMgr( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSimHome", LuaSimHome) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSimSetStep", LuaSimSetStep) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSimSetUiStatus", LuaSimSetUiStatus) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSimEnableToolTipTrace", LuaSimEnableToolTipTrace) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSimGetAxisInfoPos", LuaSimGetAxisInfoPos) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSimGetToolInfo", LuaSimGetToolInfo) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSimGetOperationInfo", LuaSimGetOperationInfo) ;
|
||||
@@ -4162,22 +4563,28 @@ LuaInstallMachMgr( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetAxisId", LuaGetAxisId) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetHeadId", LuaGetHeadId) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetHeadExitCount", LuaGetHeadExitCount) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetExitId", LuaGetExitId) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetTcPosId", LuaGetTcPosId) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetAxisToken", LuaGetAxisToken) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetAxisType", LuaGetAxisType) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetAxisDir", LuaGetAxisDir) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetAxisInvert", LuaGetAxisInvert) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetAxisOffset", LuaGetAxisOffset) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetAllTablesNames", LuaGetAllTablesNames) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetAllAxesNames", LuaGetAllAxesNames) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetAllHeadsNames", LuaGetAllHeadsNames) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetAllTcPosNames", LuaGetAllTcPosNames) ;
|
||||
// Machine Calc
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSetCalcTable", LuaSetCalcTable) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSetCalcTool", LuaSetCalcTool) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSetRotAxisBlock", LuaSetRotAxisBlock) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetRotAxisBlocked", LuaGetRotAxisBlocked) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetCalcTable", LuaGetCalcTable) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetCalcTool", LuaGetCalcTool) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetAllCurrAxesNames", LuaGetAllCurrAxesNames) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetRotAxisBlocked", LuaGetRotAxisBlocked) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetCalcAngles", LuaGetCalcAngles) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetCalcPositions", LuaGetCalcPositions) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetRobotAngles", LuaGetRobotAngles) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetCalcTipFromPositions", LuaGetCalcTipFromPositions) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetCalcToolDirFromAngles", LuaGetCalcToolDirFromAngles) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetCalcAuxDirFromAngles", LuaGetCalcAuxDirFromAngles) ;
|
||||
|
||||
+240
@@ -0,0 +1,240 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2025-2025
|
||||
//----------------------------------------------------------------------------
|
||||
// File : LUA_MachOpt.cpp Data : 02.04.25 Versione : 2.7c1
|
||||
// Contenuto : Funzioni per Ottimizzare i tempi tra le lavorazioni per LUA.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 02.04.25 RE Creazione modulo.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
//--------------------------- Include ----------------------------------------
|
||||
#include "stdafx.h"
|
||||
#include "LUA.h"
|
||||
#include "/EgtDev/Include/EXeExecutor.h"
|
||||
#include "/EgtDev/Include/EGkLuaAux.h"
|
||||
#include "/EgtDev/Include/EGnStringUtils.h"
|
||||
|
||||
using namespace std ;
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaOptMachInit( lua_State* L)
|
||||
{
|
||||
// Nessun parametro
|
||||
LuaClearStack( L) ;
|
||||
// Inizializzo il calcolatore per minimizzare i tempi tra le lavorazioni
|
||||
bool bOk = ExeOptMachInit() ;
|
||||
// Restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaOptMachTerminate( lua_State* L)
|
||||
{
|
||||
// Nessun parametro
|
||||
LuaClearStack( L) ;
|
||||
// Termino il calcolatore per minimizzare i tempi tra le lavorazioni
|
||||
bool bOk = ExeOptMachTerminate() ;
|
||||
// Restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaOptMachAddTool( lua_State* L)
|
||||
{
|
||||
// Definizione 9 parametri (3 obbligatori)
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId) ;
|
||||
double dTLoad ;
|
||||
LuaCheckParam( L, 2, dTLoad) ;
|
||||
double dTUnload ;
|
||||
LuaCheckParam( L, 3, dTUnload) ;
|
||||
double dTC_X = 0. ;
|
||||
bool bTC_X = LuaGetParam( L, 4, dTC_X) ;
|
||||
double dTC_Y = 0. ;
|
||||
bool bTC_Y = LuaGetParam( L, 5, dTC_Y) ;
|
||||
double dTC_Z = 0. ;
|
||||
bool bTC_Z = LuaGetParam( L, 6, dTC_Z) ;
|
||||
double dTC_A = 0. ;
|
||||
bool bTC_A = LuaGetParam( L, 7, dTC_A) ;
|
||||
double dTC_B = 0. ;
|
||||
bool bTC_B = LuaGetParam( L, 8, dTC_B) ;
|
||||
double dTC_C = 0. ;
|
||||
bool bTC_C = LuaGetParam( L, 9, dTC_C) ;
|
||||
LuaClearStack( L) ;
|
||||
// Aggiungo la Lavorazione
|
||||
bool bOk = ExeOptMachAddTool( nId, dTC_X, dTC_Y, dTC_Z, dTC_A, dTC_B, dTC_C,
|
||||
bTC_X, bTC_Y, bTC_Z, bTC_A, bTC_B, bTC_C,
|
||||
dTLoad, dTUnload) ;
|
||||
// Rstituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaOptMachAddMachining( lua_State* L)
|
||||
{
|
||||
// Definizione 5 parametri
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId) ;
|
||||
int nToolId ;
|
||||
LuaCheckParam( L, 2, nToolId) ;
|
||||
int nGroup ;
|
||||
LuaCheckParam( L, 3, nGroup) ;
|
||||
DBLVECTOR vAxStart ;
|
||||
LuaCheckParam( L, 4, vAxStart) ;
|
||||
DBLVECTOR vAxEnd ;
|
||||
LuaCheckParam( L, 5, vAxEnd) ;
|
||||
LuaClearStack( L) ;
|
||||
// Completamento valori assi
|
||||
while ( vAxStart.size() < 6)
|
||||
vAxStart.push_back( 0) ;
|
||||
while ( vAxEnd.size() < 6)
|
||||
vAxEnd.push_back( 0) ;
|
||||
// Aggiungo la Lavorazione
|
||||
bool bOk = ExeOptMachAddMachining( nId, nToolId, nGroup,
|
||||
vAxStart[0], vAxStart[1], vAxStart[2], vAxStart[3], vAxStart[4], vAxStart[5],
|
||||
vAxEnd[0], vAxEnd[1], vAxEnd[2], vAxEnd[3], vAxEnd[4], vAxEnd[5]) ;
|
||||
// Rstituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaOptMachSetFirstMachining( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nId
|
||||
int nId = 0 ;
|
||||
LuaCheckParam( L, 1, nId) ;
|
||||
LuaClearStack( L) ;
|
||||
// Imposto la prima lavorazione
|
||||
bool bOk = ExeOptMachSetFirstMachining( nId) ;
|
||||
// Restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaOptMachSetLastMachining( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nId
|
||||
int nId = 0 ;
|
||||
LuaCheckParam( L, 1, nId) ;
|
||||
LuaClearStack( L) ;
|
||||
// Imposto la prima lavorazione
|
||||
bool bOk = ExeOptMachSetLastMachining( nId) ;
|
||||
// Restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaOptMachSetFeeds( lua_State* L)
|
||||
{
|
||||
// 2 Parametri : dFeedL, dFeedA
|
||||
double dFeedL = 1. ;
|
||||
LuaCheckParam( L, 1, dFeedL) ;
|
||||
double dFeedA = 1. ;
|
||||
LuaCheckParam( L, 2, dFeedA) ;
|
||||
LuaClearStack( L) ;
|
||||
// Imposto le Feeds
|
||||
bool bOk = ExeOptMachSetFeeds( dFeedL, dFeedA) ;
|
||||
// Restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaOptMachAddDependence( lua_State* L)
|
||||
{
|
||||
// 2 parametri : nIdPrev, nIdSucc
|
||||
int nIdPrev = 0 ; int nIdNext = 0 ;
|
||||
LuaCheckParam( L, 1, nIdPrev) ;
|
||||
LuaCheckParam( L, 2, nIdNext) ;
|
||||
LuaClearStack( L) ;
|
||||
// Imposto Dipendenza obbligatoria
|
||||
bool bOk = ExeOptMachAddDependence( nIdPrev, nIdNext) ;
|
||||
// Restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaOptMachAddSuggestedDependence( lua_State* L)
|
||||
{
|
||||
// 2 parametri : nIdPrev, nIdSucc
|
||||
int nIdPrev = 0 ; int nIdNext = 0 ;
|
||||
LuaCheckParam( L, 1, nIdPrev) ;
|
||||
LuaCheckParam( L, 2, nIdNext) ;
|
||||
LuaClearStack( L) ;
|
||||
// Imposto Dipendenza suggerita
|
||||
bool bOk = ExeOptMachAddSuggestedDependence( nIdPrev, nIdNext) ;
|
||||
// Restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaOptMachSetAllGroupDependencesAsMandatory( lua_State* L)
|
||||
{
|
||||
// 1 Parametro : bAllMendatory
|
||||
bool bAllMendatory = false ;
|
||||
LuaCheckParam( L, 1, bAllMendatory) ;
|
||||
LuaClearStack( L) ;
|
||||
// Imposto il Flag
|
||||
bool bOk = ExeOptMachSetAllGroupDependencesAsMandatory( bAllMendatory) ;
|
||||
// Restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaOptMachGetResult( lua_State* L)
|
||||
{
|
||||
// nessun parametro
|
||||
LuaClearStack( L) ;
|
||||
// eseguo calcolo di minimo percorso
|
||||
INTVECTOR vOrder ;
|
||||
bool bOk = ExeOptMachGetResult( vOrder) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk)
|
||||
LuaSetParam( L, vOrder) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallMachiningOptimization( LuaMgr& luaMgr)
|
||||
{
|
||||
bool bOk = ( &luaMgr != nullptr) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtOptMachInit", LuaOptMachInit) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtOptMachTerminate", LuaOptMachTerminate) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtOptMachAddTool", LuaOptMachAddTool) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtOptMachAddMachining", LuaOptMachAddMachining) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtOptMachSetFirstMachining", LuaOptMachSetFirstMachining) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtOptMachSetLastMachining", LuaOptMachSetLastMachining) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtOptMachSetFeeds", LuaOptMachSetFeeds) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtOptMachAddDependence", LuaOptMachAddDependence) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtOptMachAddSuggestedDependence", LuaOptMachAddSuggestedDependence) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtOptMachSetAllGroupsDependencesAsMandatory", LuaOptMachSetAllGroupDependencesAsMandatory) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtOptMachGetResult", LuaOptMachGetResult) ;
|
||||
return bOk ;
|
||||
}
|
||||
@@ -340,6 +340,21 @@ LuaAutoNestSetInterpartGap( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaAutoNestSetShearGap( lua_State* L)
|
||||
{
|
||||
// 1 parametro : dShearGap
|
||||
double dShearGap ;
|
||||
LuaCheckParam( L, 1, dShearGap)
|
||||
LuaClearStack( L) ;
|
||||
// imposto shear gap
|
||||
bool bOk = ExeAutoNestSetShearGap( dShearGap) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaAutoNestSetReportFile( lua_State* L)
|
||||
@@ -466,6 +481,28 @@ LuaAutoNestGetOneResult( lua_State* L)
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaAutoNestCalcShearSequence( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nNesting
|
||||
int nNesting ;
|
||||
LuaCheckParam( L, 1, nNesting)
|
||||
LuaClearStack( L) ;
|
||||
// calcolo shear sequence
|
||||
PNTVECTOR vPtStart, vPtEnd ;
|
||||
bool bOk = ExeAutoNestCalcShearSequence( nNesting, vPtStart, vPtEnd) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
if ( bOk) {
|
||||
LuaSetParam( L, vPtStart) ;
|
||||
LuaSetParam( L, vPtEnd) ;
|
||||
return 3 ;
|
||||
}
|
||||
else
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallNesting( LuaMgr& luaMgr)
|
||||
@@ -488,6 +525,7 @@ LuaInstallNesting( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtAutoNestSetStripYconstraintToPart", LuaAutoNestSetStripYconstraintToPart) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtAutoNestSetStripXconstraintToPart", LuaAutoNestSetStripXconstraintToPart) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtAutoNestSetInterpartGap", LuaAutoNestSetInterpartGap) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtAutoNestSetShearGap", LuaAutoNestSetShearGap) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtAutoNestSetReportFile", LuaAutoNestSetReportFile) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtAutoNestCompute", LuaAutoNestCompute) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtAutoNestCancelComputation", LuaAutoNestCancelComputation) ;
|
||||
@@ -495,6 +533,7 @@ LuaInstallNesting( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtAutoNestPrintResults", LuaAutoNestPrintResults) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtAutoNestGetResults", LuaAutoNestGetResults) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtAutoNestGetOneResult", LuaAutoNestGetOneResult) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtAutoNestCalcShearSequence", LuaAutoNestCalcShearSequence) ;
|
||||
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
+214
@@ -0,0 +1,214 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2025-2025
|
||||
//----------------------------------------------------------------------------
|
||||
// File : LUA_Redis.cpp Data : 17.09.25 Versione : 2.7i3
|
||||
// Contenuto : Funzioni per interfacciarsi con server Redis.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 17.09.25 RE Creazione modulo.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
//--------------------------- Include ----------------------------------------
|
||||
#include "stdafx.h"
|
||||
#include "LUA.h"
|
||||
#include "/EgtDev/Include/EXeExecutor.h"
|
||||
#include "/EgtDev/Include/EGkLuaAux.h"
|
||||
|
||||
using namespace std ;
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaRedisConnect( lua_State* L)
|
||||
{
|
||||
// 1 parametro : sConnection
|
||||
string sConnection ;
|
||||
LuaCheckParam( L, 1, sConnection)
|
||||
LuaClearStack( L) ;
|
||||
// Imposto la connessione
|
||||
int nIdConnection = 0 ;
|
||||
bool bOk = ExeRedisConnect( sConnection, nIdConnection) ;
|
||||
// Restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
LuaSetParam( L, nIdConnection) ;
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaRedisDisconnect( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nIdConnection
|
||||
int nIdConnection = 0 ;
|
||||
LuaCheckParam( L, 1, nIdConnection) ;
|
||||
LuaClearStack( L) ;
|
||||
// Imposto la connessione
|
||||
bool bOk = ExeRedisDisconnect( nIdConnection) ;
|
||||
// Restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaRedisSetValFromKey( lua_State* L)
|
||||
{
|
||||
// 3 parametri : nIdConnection, sKey, sVal
|
||||
int nIdConnection = 0 ;
|
||||
LuaCheckParam( L, 1, nIdConnection) ;
|
||||
string sKey ;
|
||||
LuaCheckParam( L, 2, sKey) ;
|
||||
string sVal ;
|
||||
LuaCheckParam( L, 3, sVal) ;
|
||||
LuaClearStack( L) ;
|
||||
// Imposto il valore della chiave
|
||||
bool bOk = ExeRedisSetValFromKey( nIdConnection, sKey, sVal) ;
|
||||
// Restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaRedisGetValFromKey( lua_State* L)
|
||||
{
|
||||
// 2 parametri : nIdConnection, sKey
|
||||
int nIdConnection = 0 ;
|
||||
LuaCheckParam( L, 1, nIdConnection) ;
|
||||
string sKey ;
|
||||
LuaCheckParam( L, 2, sKey)
|
||||
LuaClearStack( L) ;
|
||||
// Recupero il valore della chiave
|
||||
string sVal, sType ;
|
||||
bool bOk = ExeRedisGetValFromKey( nIdConnection, sKey, sVal) ;
|
||||
// Restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
LuaSetParam( L, sVal) ;
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaRedisAsyncConnect( lua_State* L)
|
||||
{
|
||||
// 2 parametri : sConnection
|
||||
string sConnection ;
|
||||
LuaCheckParam( L, 1, sConnection)
|
||||
LuaClearStack( L) ;
|
||||
// Imposto la connessione
|
||||
int nIdConnection = -1 ;
|
||||
bool bOk = ExeRedisAsyncConnect( sConnection, nIdConnection) ;
|
||||
// Restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
LuaSetParam( L, nIdConnection) ;
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaRedisAsyncDiconnect( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nIdConnection
|
||||
int nIdConnection = 0 ;
|
||||
LuaCheckParam( L, 1, nIdConnection) ;
|
||||
LuaClearStack( L) ;
|
||||
// Imposto la connessione
|
||||
bool bOK = ExeRedisAsyncDisconnect( nIdConnection) ;
|
||||
// Restituisco il risultato
|
||||
LuaSetParam( L, bOK) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaRedisAsyncPublish( lua_State* L)
|
||||
{
|
||||
// 3 parametri : nIdConnection, sChannel, sMessage
|
||||
int nIdConnection = 0 ;
|
||||
LuaCheckParam( L, 1, nIdConnection) ;
|
||||
string sChannel ;
|
||||
LuaCheckParam( L, 2, sChannel) ;
|
||||
string sMessage ;
|
||||
LuaCheckParam( L, 3, sMessage) ;
|
||||
LuaClearStack( L) ;
|
||||
// Pubblico il messaggio sul canale
|
||||
bool bOk = ExeRedisAsyncPublish( nIdConnection, sChannel, sMessage) ;
|
||||
// Restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaRedisAsyncSubscribe( lua_State* L)
|
||||
{
|
||||
// 2 parametri : nIdConnection, sChannel
|
||||
int nIdConnection = 0 ;
|
||||
LuaCheckParam( L, 1, nIdConnection) ;
|
||||
string sChannel ;
|
||||
LuaCheckParam( L, 2, sChannel) ;
|
||||
LuaClearStack( L) ;
|
||||
// Iscrizione al canale
|
||||
bool bOk = ExeRedisAsyncSubscribe( nIdConnection, sChannel) ;
|
||||
// Restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaRedisAsyncUnsubscribe( lua_State* L)
|
||||
{
|
||||
// 2 parametri : nIdConnection, sChannel
|
||||
int nIdConnection = 0 ;
|
||||
LuaCheckParam( L, 1, nIdConnection) ;
|
||||
string sChannel ;
|
||||
LuaCheckParam( L, 2, sChannel) ;
|
||||
LuaClearStack( L) ;
|
||||
// Disiscrizione
|
||||
bool bOk = ExeRedisAsyncUnsubscribe( nIdConnection, sChannel) ;
|
||||
// Restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaRedisAsyncSubscribeOneMessage( lua_State* L)
|
||||
{
|
||||
// 3 parametri : nIdConnection, sChannel, dMaxTimeOut
|
||||
int nIdConnection = 0 ;
|
||||
LuaCheckParam( L, 1, nIdConnection) ;
|
||||
string sChannel ;
|
||||
LuaCheckParam( L, 2, sChannel) ;
|
||||
double dMaxTimeOut = 0. ;
|
||||
LuaCheckParam( L, 3, dMaxTimeOut) ;
|
||||
LuaClearStack( L) ;
|
||||
// Eseguo funzione speciale di iscrizione - attesa messaggio - disiscrizione
|
||||
string sMessage ;
|
||||
bool bOk = ExeRedisAsyncSubscribeOneMessage( nIdConnection, sChannel, dMaxTimeOut, sMessage) ;
|
||||
// Restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
LuaSetParam( L, sMessage) ;
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallRedis( LuaMgr& luaMgr)
|
||||
{
|
||||
bool bOk = ( &luaMgr != nullptr) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRedisConnect", LuaRedisConnect) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRedisDisconnect", LuaRedisDisconnect) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRedisSetValFromKey", LuaRedisSetValFromKey) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRedisGetValFromKey", LuaRedisGetValFromKey) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRedisAsyncConnect", LuaRedisAsyncConnect) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRedisAsyncDisconnect", LuaRedisAsyncDiconnect) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRedisAsyncPublish", LuaRedisAsyncPublish) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRedisAsyncSubscribe", LuaRedisAsyncSubscribe) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRedisAsyncUnsubscribe", LuaRedisAsyncUnsubscribe) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtRedisAsyncSubscribeOneMessage", LuaRedisAsyncSubscribeOneMessage) ;
|
||||
return bOk ;
|
||||
}
|
||||
+110
@@ -175,6 +175,21 @@ LuaZoomObject( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSetViewOrizzOffsStep( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nDirOffsStep
|
||||
int nDirOffsStep ;
|
||||
LuaCheckParam( L, 1, nDirOffsStep)
|
||||
LuaClearStack( L) ;
|
||||
// imposto offset angolare orizzontale a step di 90° per direzione di vista
|
||||
bool bOk = ExeSetViewOrizzOffsStep( nDirOffsStep) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaSetView( lua_State* L)
|
||||
@@ -228,6 +243,60 @@ LuaSetViewCenter( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetViewOrizzOffsStep( lua_State* L)
|
||||
{
|
||||
// nessun parametro
|
||||
LuaClearStack( L) ;
|
||||
// recupero offset angolare orizzontale a step di 90° per direzione di vista
|
||||
int nDirOffsStep ;
|
||||
bool bOk = ExeGetViewOrizzOffsStep( &nDirOffsStep) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk)
|
||||
LuaSetParam( L, nDirOffsStep) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetView( lua_State* L)
|
||||
{
|
||||
// nessun parametro
|
||||
LuaClearStack( L) ;
|
||||
// recupero direzione di vista
|
||||
int nViewDir ;
|
||||
bool bOk = ExeGetView( &nViewDir) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk)
|
||||
LuaSetParam( L, nViewDir) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetGenericView( lua_State* L)
|
||||
{
|
||||
// nessun parametro
|
||||
LuaClearStack( L) ;
|
||||
// recupero angoli della direzione di vista
|
||||
double dAngVertDeg ;
|
||||
double dAngHorizDeg ;
|
||||
bool bOk = ExeGetGenericView( &dAngVertDeg, &dAngHorizDeg) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk) {
|
||||
LuaSetParam( L, dAngVertDeg) ;
|
||||
LuaSetParam( L, dAngHorizDeg) ;
|
||||
}
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 2 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetImage( lua_State* L)
|
||||
@@ -253,6 +322,42 @@ LuaGetImage( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaGetImageEx( lua_State* L)
|
||||
{
|
||||
// 11 argomenti : nDriver, b2Buff, nColorBits, nDepthBits, nShowMode, colBackTop, colBackBottom, nCameraDir, nWidth, nHeight, sFile
|
||||
int nDriver ;
|
||||
LuaCheckParam( L, 1, nDriver)
|
||||
bool b2Buff ;
|
||||
LuaCheckParam( L, 2, b2Buff)
|
||||
int nColorBits ;
|
||||
LuaCheckParam( L, 3, nColorBits)
|
||||
int nDepthBits ;
|
||||
LuaCheckParam( L, 4, nDepthBits)
|
||||
int nShowMode ;
|
||||
LuaCheckParam( L, 5, nShowMode)
|
||||
Color colBackTop ;
|
||||
LuaCheckParam( L, 6, colBackTop)
|
||||
Color colBackBottom ;
|
||||
LuaCheckParam( L, 7, colBackBottom)
|
||||
int nCameraDir ;
|
||||
LuaCheckParam( L, 8, nCameraDir)
|
||||
int nWidth ;
|
||||
LuaCheckParam( L, 9, nWidth)
|
||||
int nHeight ;
|
||||
LuaCheckParam( L, 10, nHeight)
|
||||
string sFile ;
|
||||
LuaCheckParam( L, 11, sFile)
|
||||
LuaClearStack( L) ;
|
||||
// creo e salvo una immagine della scena
|
||||
bool bOk = ExeGetImageEx( nDriver, b2Buff, nColorBits, nDepthBits, nShowMode,
|
||||
colBackTop, colBackBottom, nCameraDir, nWidth, nHeight, sFile) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallScene( LuaMgr& luaMgr)
|
||||
@@ -267,9 +372,14 @@ LuaInstallScene( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtZoomRadius", LuaZoomRadius) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtZoom", LuaZoom) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtZoomObject", LuaZoomObject) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSetViewOrizzOffsStep", LuaSetViewOrizzOffsStep) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSetView", LuaSetView) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSetGenericView", LuaSetGenericView) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtSetViewCenter", LuaSetViewCenter) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetViewOrizzOffsStep", LuaGetViewOrizzOffsStep) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetView", LuaGetView) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetGenericView", LuaGetGenericView) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetImage", LuaGetImage) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtGetImageEx", LuaGetImageEx) ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
@@ -160,7 +160,7 @@ LuaSpSetZzOwStep( lua_State* L)
|
||||
LuaCheckParam( L, 1, dStep)
|
||||
LuaClearStack( L) ;
|
||||
// imposto lo step per tipologie ZigZag e OneWay
|
||||
bool bOk = ExeSpSetZzOwStep( dStep) ;
|
||||
bool bOk = ExeSpSetZzOwStep( dStep) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
|
||||
@@ -0,0 +1,202 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2024-2024
|
||||
//----------------------------------------------------------------------------
|
||||
// File : LUA_TestObjSurface.cpp Data : 24.03.24 Versione : 2.6c2
|
||||
// Contenuto : Funzioni di verifica intersezione tra oggetti e superfici.
|
||||
// Oggetti = Box, Sfere, Cilindri, Coni, RectPrismoid, SurfTriMesh
|
||||
// Superfici = SurfTriMesh, ( Bezier).
|
||||
//
|
||||
// Modifiche : 24.03.24 DS Creazione modulo.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
//--------------------------- Include ----------------------------------------
|
||||
#include "stdafx.h"
|
||||
#include "LUA.h"
|
||||
#include "/EgtDev/Include/EXeExecutor.h"
|
||||
#include "/EgtDev/Include/EXeConst.h"
|
||||
#include "/EgtDev/Include/EGkLuaAux.h"
|
||||
#include "/EgtDev/Include/EGnStringUtils.h"
|
||||
|
||||
using namespace std ;
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaTestBoxSurface( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : frBox, vtDiag, nSurfId, dSafeDist [, nRefType]
|
||||
Frame3d frBox ;
|
||||
LuaCheckParam( L, 1, frBox)
|
||||
Vector3d vtDiag ;
|
||||
LuaCheckParam( L, 2, vtDiag)
|
||||
int nSurfId ;
|
||||
LuaCheckParam( L, 3, nSurfId)
|
||||
double dSafeDist ;
|
||||
LuaCheckParam( L, 4, dSafeDist)
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo verifica di collisione
|
||||
int nRes = ExeTestBoxSurface( frBox, vtDiag, nSurfId, dSafeDist, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nRes >= 0)
|
||||
LuaSetParam( L, ( nRes != 0)) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaTestRectPrismoidSurface( lua_State* L)
|
||||
{
|
||||
// 8 o 9 parametri : frBox, dBaseLenX, dBaseLenY, dTopLenX, dTopLenY, dHeight, nSurfId, dSafeDist [, nRefType]
|
||||
Frame3d frBox ;
|
||||
LuaCheckParam( L, 1, frBox)
|
||||
double dBaseLenX ;
|
||||
LuaCheckParam( L, 2, dBaseLenX)
|
||||
double dBaseLenY ;
|
||||
LuaCheckParam( L, 3, dBaseLenY)
|
||||
double dTopLenX ;
|
||||
LuaCheckParam( L, 4, dTopLenX)
|
||||
double dTopLenY ;
|
||||
LuaCheckParam( L, 5, dTopLenY)
|
||||
double dHeight ;
|
||||
LuaCheckParam( L, 6, dHeight)
|
||||
int nSurfId ;
|
||||
LuaCheckParam( L, 7, nSurfId)
|
||||
double dSafeDist ;
|
||||
LuaCheckParam( L, 8, dSafeDist)
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 9, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo verifica di collisione
|
||||
int nRes = ExeTestRectPrismoidSurface( frBox, dBaseLenX, dBaseLenY, dTopLenX, dTopLenY, dHeight, nSurfId, dSafeDist, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nRes >= 0)
|
||||
LuaSetParam( L, ( nRes != 0)) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaTestCylSurface( lua_State* L)
|
||||
{
|
||||
// 5 o 6 parametri : frCyl, dR, dH, nSurfId, dSafeDist [, nRefType]
|
||||
Frame3d frCyl ;
|
||||
LuaCheckParam( L, 1, frCyl)
|
||||
double dR ;
|
||||
LuaCheckParam( L, 2, dR)
|
||||
double dH ;
|
||||
LuaCheckParam( L, 3, dH)
|
||||
int nSurfId ;
|
||||
LuaCheckParam( L, 4, nSurfId)
|
||||
double dSafeDist ;
|
||||
LuaCheckParam( L, 5, dSafeDist)
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 6, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo verifica di collisione
|
||||
int nRes = ExeTestCylSurface( frCyl, dR, dH, nSurfId, dSafeDist, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nRes >= 0)
|
||||
LuaSetParam( L, ( nRes != 0)) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaTestConeSurface( lua_State* L)
|
||||
{
|
||||
// 6 o 7 parametri : frCone, dR1, dR2, dH, nSurfId, dSafeDist [, nRefType]
|
||||
Frame3d frCone ;
|
||||
LuaCheckParam( L, 1, frCone)
|
||||
double dR1 ;
|
||||
LuaCheckParam( L, 2, dR1)
|
||||
double dR2 ;
|
||||
LuaCheckParam( L, 3, dR2)
|
||||
double dH ;
|
||||
LuaCheckParam( L, 4, dH)
|
||||
int nSurfId ;
|
||||
LuaCheckParam( L, 5, nSurfId)
|
||||
double dSafeDist ;
|
||||
LuaCheckParam( L, 6, dSafeDist)
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 7, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo verifica di collisione
|
||||
int nRes = ExeTestConeSurface( frCone, dR1, dR2, dH, nSurfId, dSafeDist, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nRes >= 0)
|
||||
LuaSetParam( L, ( nRes != 0)) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaTestSpheSurface( lua_State* L)
|
||||
{
|
||||
// 4 o 5 parametri : ptCen, dRad, nSurfId, dSafeDist [, nRefType]
|
||||
Point3d ptCen ;
|
||||
LuaCheckParam( L, 1, ptCen)
|
||||
double dR ;
|
||||
LuaCheckParam( L, 2, dR)
|
||||
int nSurfId ;
|
||||
LuaCheckParam( L, 3, nSurfId)
|
||||
double dSafeDist ;
|
||||
LuaCheckParam( L, 4, dSafeDist)
|
||||
int nRefType = RTY_DEFAULT ;
|
||||
LuaGetParam( L, 5, nRefType) ;
|
||||
LuaClearStack( L) ;
|
||||
// eseguo verifica di collisione
|
||||
int nRes = ExeTestSpheSurface( ptCen, dR, nSurfId, dSafeDist, nRefType) ;
|
||||
// restituisco il risultato
|
||||
if ( nRes >= 0)
|
||||
LuaSetParam( L, ( nRes != 0)) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
static int
|
||||
LuaTestSurfaceSurface( lua_State* L)
|
||||
{
|
||||
// 3 parametri : nSurf1Id, nSurf2Id, dSafeDist
|
||||
int nSurf1Id ;
|
||||
LuaCheckParam( L, 1, nSurf1Id)
|
||||
int nSurf2Id ;
|
||||
LuaCheckParam( L, 2, nSurf2Id)
|
||||
double dSafeDist ;
|
||||
LuaCheckParam( L, 3, dSafeDist)
|
||||
LuaClearStack( L) ;
|
||||
// eseguo verifica di interferenza
|
||||
int nRes = ExeTestSurfaceSurface( nSurf1Id, nSurf2Id, dSafeDist) ;
|
||||
// restituisco il risultato
|
||||
if ( nRes >= 0)
|
||||
LuaSetParam( L, ( nRes != 0)) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
LuaInstallTestObjSurface( LuaMgr& luaMgr)
|
||||
{
|
||||
bool bOk = ( &luaMgr != nullptr) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtTestBoxSurface", LuaTestBoxSurface) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtTestRectPrismoidSurface", LuaTestRectPrismoidSurface) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtTestCylSurface", LuaTestCylSurface) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtTestConeSurface", LuaTestConeSurface) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtTestSpheSurface", LuaTestSpheSurface) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtTestSurfaceSurface", LuaTestSurfaceSurface) ;
|
||||
return bOk ;
|
||||
}
|
||||
+15
-1
@@ -163,8 +163,22 @@ PictureObj::Load( const STRVECTOR& vString, int nBaseGdbId)
|
||||
string sOut = "Error loading image " + sOtherPath ;
|
||||
LOG_ERROR( GetLogger(), sOut.c_str())
|
||||
}
|
||||
return true ;
|
||||
}
|
||||
else {
|
||||
// provo dalla path della macchina corrente
|
||||
string sMachineDir ;
|
||||
if ( ExeGetCurrMachineDir( sMachineDir)) {
|
||||
string sOtherPath = sMachineDir + "\\" + GetFileName( m_sPath) ;
|
||||
if ( ExistsFile( sOtherPath)) {
|
||||
if ( ! ExeLoadTexture( m_sName, sOtherPath, 0, m_dDimX, m_dDimY, TXR_CLAMP)) {
|
||||
string sOut = "Error loading image " + sOtherPath ;
|
||||
LOG_ERROR( GetLogger(), sOut.c_str())
|
||||
}
|
||||
return true ;
|
||||
}
|
||||
}
|
||||
// altrimenti errore
|
||||
{
|
||||
string sOut = "Error missing image " + sOtherPath ;
|
||||
LOG_ERROR( GetLogger(), sOut.c_str())
|
||||
}
|
||||
|
||||
+3
-1
@@ -4,6 +4,7 @@
|
||||
//
|
||||
#define VS_VERSION_INFO 1
|
||||
#define IDD_LUADLG 101
|
||||
#define IDD_LUASCENE 102
|
||||
#define IDC_TEXT1 1001
|
||||
#define IDC_TEXT2 1002
|
||||
#define IDC_TEXT3 1003
|
||||
@@ -36,6 +37,7 @@
|
||||
#define IDC_CHECK6 1036
|
||||
#define IDC_CHECK7 1037
|
||||
#define IDC_CHECK8 1038
|
||||
#define IDC_PICTURE1 1041
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
@@ -44,6 +46,6 @@
|
||||
#define _APS_NEXT_RESOURCE_VALUE 103
|
||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||
#define _APS_NEXT_CONTROL_VALUE 1030
|
||||
#define _APS_NEXT_SYMED_VALUE 113
|
||||
#define _APS_NEXT_SYMED_VALUE 115
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -28,8 +28,10 @@
|
||||
|
||||
#include "/EgtDev/Include/EgtLibVer.h"
|
||||
|
||||
#pragma comment(lib, EGTLIBDIR "EgtGeneral" EGTLIBVER ".lib")
|
||||
#pragma comment(lib, EGTLIBDIR "EgtNumKernel" EGTLIBVER ".lib")
|
||||
#pragma comment(lib, EGTLIBDIR "EgtGeomKernel" EGTLIBVER ".lib")
|
||||
#pragma comment(lib, EGTEXTDIR "Lua/Lib/Lua53" EGTLIBVER ".lib")
|
||||
#pragma comment(lib, EGTLIBDIR "SEgtLock" EGTLIBVER ".lib")
|
||||
#pragma comment( lib, EGTLIBDIR "EgtGeneral" EGTLIBVER ".lib")
|
||||
#pragma comment( lib, EGTLIBDIR "EgtNumKernel" EGTLIBVER ".lib")
|
||||
#pragma comment( lib, EGTLIBDIR "EgtGeomKernel" EGTLIBVER ".lib")
|
||||
#pragma comment( lib, EGTEXTDIR "Lua/Lib/Lua54" EGTLIBVER ".lib")
|
||||
#pragma comment( lib, EGTEXTDIR "hiredis/Lib/hiredis" EGTLIBVER ".lib")
|
||||
#pragma comment( lib, EGTLIBDIR "SEgtLock" EGTLIBVER ".lib")
|
||||
#pragma comment( lib, "ws2_32.lib")
|
||||
|
||||
Reference in New Issue
Block a user