EgtInterface 1.6a4 :
- completamento modifiche per registrazione comandi in lua e per gestione RefType e RefId.
This commit is contained in:
+390
-313
@@ -15,66 +15,429 @@
|
||||
#include "stdafx.h"
|
||||
#include "API.h"
|
||||
#include "API_Macro.h"
|
||||
#include "AuxTools.h"
|
||||
#include "/EgtDev/Include/EInAPI.h"
|
||||
#include "/EgtDev/Include/EInConst.h"
|
||||
#include "/EgtDev/Include/EGkStringUtils3d.h"
|
||||
|
||||
using namespace std ;
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
BOOL
|
||||
__stdcall EgtMove( int nId, double vVtMove[3])
|
||||
__stdcall EgtMove( int nId, double vVtMove[3], int nRefType)
|
||||
{
|
||||
INTVECTOR vIds ;
|
||||
vIds.push_back( nId) ;
|
||||
return ( EgtMove( vIds, vVtMove, nRefType) ? TRUE : FALSE) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
EgtMove( INTVECTOR& vIds, const Vector3d& vtMove, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, FALSE)
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
bool bOk = true ;
|
||||
// eseguo traslazione singola
|
||||
if ( nId != GDB_ID_SEL) {
|
||||
bOk = pGeomDB->Translate( nId, vVtMove) ;
|
||||
// se traslazione espressa in locale
|
||||
if ( nRefType == RTY_LOC) {
|
||||
// verifico che tutti gli oggetti siano nello stesso riferimento
|
||||
bOk = bOk && VerifySameFrame( pGeomDB, vIds) ;
|
||||
// ciclo sul vettore degli identificativi
|
||||
for ( size_t i = 0 ; i < vIds.size() && bOk ; ++ i) {
|
||||
// eseguo traslazione singola
|
||||
if ( vIds[i] != GDB_ID_SEL) {
|
||||
bOk = pGeomDB->Translate( vIds[i], vtMove) ;
|
||||
}
|
||||
// eseguo traslazione dei selezionati
|
||||
else {
|
||||
int nI = pGeomDB->GetFirstSelectedObj() ;
|
||||
while ( nI != GDB_ID_NULL && bOk) {
|
||||
if ( ! pGeomDB->Translate( nI, vtMove))
|
||||
bOk = false ;
|
||||
nI = pGeomDB->GetNextSelectedObj() ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// eseguo traslazione dei selezionati
|
||||
// altrimenti in globale o in griglia
|
||||
else {
|
||||
int nI = pGeomDB->GetFirstSelectedObj() ;
|
||||
while ( nI != GDB_ID_NULL && bOk) {
|
||||
if ( ! pGeomDB->Translate( nI, vVtMove))
|
||||
bOk = false ;
|
||||
nI = pGeomDB->GetNextSelectedObj() ;
|
||||
Vector3d vtMoveG = vtMove ;
|
||||
// se griglia, porto il vettore in globale
|
||||
if ( nRefType == RTY_GRID)
|
||||
vtMoveG.ToGlob( pGeomDB->GetGridFrame()) ;
|
||||
// ciclo sul vettore degli identificativi
|
||||
for ( size_t i = 0 ; i < vIds.size() && bOk ; ++ i) {
|
||||
// eseguo traslazione singola
|
||||
if ( vIds[i] != GDB_ID_SEL) {
|
||||
bOk = pGeomDB->TranslateGlob( vIds[i], vtMoveG) ;
|
||||
}
|
||||
// eseguo traslazione dei selezionati
|
||||
else {
|
||||
int nI = pGeomDB->GetFirstSelectedObj() ;
|
||||
while ( nI != GDB_ID_NULL && bOk) {
|
||||
if ( ! pGeomDB->TranslateGlob( nI, vtMoveG))
|
||||
bOk = false ;
|
||||
nI = pGeomDB->GetNextSelectedObj() ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtMove(" + ( nId != GDB_ID_SEL ? ToString( nId) : "GDB_ID_SEL") + ",{" +
|
||||
ToString( Vector3d( vVtMove)) + "})" +
|
||||
string sIds ;
|
||||
for ( size_t i = 0 ; i < vIds.size() ; ++ i) {
|
||||
if ( i > 0)
|
||||
sIds += "," ;
|
||||
sIds += ( vIds[i] != GDB_ID_SEL ? ToString( vIds[i]) : "GDB_ID_SEL") ;
|
||||
}
|
||||
string sLua = "EgtMove({" + sIds + "},{" +
|
||||
ToString( vtMove) + "}," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return ( bOk ? TRUE : FALSE) ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
BOOL
|
||||
__stdcall EgtMoveGlob( int nId, double vVtMove[3])
|
||||
__stdcall EgtRotate( int nId, double vPtAx[3], double vVtAx[3], double dAngRotDeg, int nRefType)
|
||||
{
|
||||
INTVECTOR vIds ;
|
||||
vIds.push_back( nId) ;
|
||||
return ( EgtRotate( vIds, vPtAx, vVtAx, dAngRotDeg, nRefType) ? TRUE : FALSE) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
EgtRotate( INTVECTOR& vIds, const Point3d& ptAx, const Vector3d& vtAx, double dAngRotDeg, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, FALSE)
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
bool bOk = true ;
|
||||
// eseguo traslazione singola
|
||||
if ( nId != GDB_ID_SEL) {
|
||||
bOk = pGeomDB->TranslateGlob( nId, vVtMove) ;
|
||||
// se rotazione espressa in locale
|
||||
if ( nRefType == RTY_LOC) {
|
||||
// verifico che tutti gli oggetti siano nello stesso riferimento
|
||||
bOk = bOk && VerifySameFrame( pGeomDB, vIds) ;
|
||||
// ciclo sul vettore degli identificativi
|
||||
for ( size_t i = 0 ; i < vIds.size() && bOk ; ++ i) {
|
||||
// eseguo rotazione singola
|
||||
if ( vIds[i] != GDB_ID_SEL) {
|
||||
bOk = pGeomDB->Rotate( vIds[i], ptAx, vtAx, dAngRotDeg) ;
|
||||
}
|
||||
// eseguo rotazione dei selezionati
|
||||
else {
|
||||
int nI = pGeomDB->GetFirstSelectedObj() ;
|
||||
while ( nI != GDB_ID_NULL && bOk) {
|
||||
if ( ! pGeomDB->Rotate( nI, ptAx, vtAx, dAngRotDeg))
|
||||
bOk = false ;
|
||||
nI = pGeomDB->GetNextSelectedObj() ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// eseguo traslazione dei selezionati
|
||||
// altrimenti in globale o in griglia
|
||||
else {
|
||||
int nI = pGeomDB->GetFirstSelectedObj() ;
|
||||
while ( nI != GDB_ID_NULL && bOk) {
|
||||
if ( ! pGeomDB->TranslateGlob( nI, vVtMove))
|
||||
bOk = false ;
|
||||
nI = pGeomDB->GetNextSelectedObj() ;
|
||||
Point3d ptAxG = ptAx ;
|
||||
Vector3d vtAxG = vtAx ;
|
||||
// se griglia, porto punto e vettore in globale
|
||||
if ( nRefType == RTY_GRID) {
|
||||
ptAxG.ToGlob( pGeomDB->GetGridFrame()) ;
|
||||
vtAxG.ToGlob( pGeomDB->GetGridFrame()) ;
|
||||
}
|
||||
// ciclo sul vettore degli identificativi
|
||||
for ( size_t i = 0 ; i < vIds.size() && bOk ; ++ i) {
|
||||
// eseguo rotazione singola
|
||||
if ( vIds[i] != GDB_ID_SEL) {
|
||||
bOk = pGeomDB->RotateGlob( vIds[i], ptAxG, vtAxG, dAngRotDeg) ;
|
||||
}
|
||||
// eseguo rotazione dei selezionati
|
||||
else {
|
||||
int nI = pGeomDB->GetFirstSelectedObj() ;
|
||||
while ( nI != GDB_ID_NULL && bOk) {
|
||||
if ( ! pGeomDB->RotateGlob( nI, ptAxG, vtAxG, dAngRotDeg))
|
||||
bOk = false ;
|
||||
nI = pGeomDB->GetNextSelectedObj() ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtMoveGlob(" + ( nId != GDB_ID_SEL ? ToString( nId) : "GDB_ID_SEL") + ",{" +
|
||||
ToString( Vector3d( vVtMove)) + "})" +
|
||||
string sIds ;
|
||||
for ( size_t i = 0 ; i < vIds.size() ; ++ i) {
|
||||
if ( i > 0)
|
||||
sIds += "," ;
|
||||
sIds += ( vIds[i] != GDB_ID_SEL ? ToString( vIds[i]) : "GDB_ID_SEL") ;
|
||||
}
|
||||
string sLua = "EgtRotate({" + sIds + "},{" +
|
||||
ToString( ptAx) + "},{" +
|
||||
ToString( vtAx) + "}," +
|
||||
ToString( dAngRotDeg) + "," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
BOOL
|
||||
__stdcall EgtScale( int nId, const double vOrig[3],
|
||||
const double vX[3], const double vY[3], const double vZ[3],
|
||||
double dCoeffX, double dCoeffY, double dCoeffZ, int nRefType)
|
||||
{
|
||||
INTVECTOR vIds ;
|
||||
vIds.push_back( nId) ;
|
||||
// costruisco il riferimento di scalatura
|
||||
Frame3d frFrame ;
|
||||
if ( ! frFrame.Set( vOrig, vX, vY, vZ))
|
||||
return FALSE ;
|
||||
// eseguo
|
||||
return ( EgtScale( vIds, frFrame, dCoeffX, dCoeffY, dCoeffZ, nRefType) ? TRUE : FALSE) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
EgtScale( INTVECTOR& vIds, const Frame3d& frRef,
|
||||
double dCoeffX, double dCoeffY, double dCoeffZ, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
bool bOk = true ;
|
||||
// se scalatura espressa in locale
|
||||
if ( nRefType == RTY_LOC) {
|
||||
// verifico che tutti gli oggetti siano nello stesso riferimento
|
||||
bOk = bOk && VerifySameFrame( pGeomDB, vIds) ;
|
||||
// ciclo sul vettore degli identificativi
|
||||
for ( size_t i = 0 ; i < vIds.size() && bOk ; ++ i) {
|
||||
// eseguo scalatura singola
|
||||
if ( vIds[i] != GDB_ID_SEL) {
|
||||
bOk = bOk && pGeomDB->Scale( vIds[i], frRef, dCoeffX, dCoeffY, dCoeffZ) ;
|
||||
}
|
||||
// eseguo scalatura dei selezionati
|
||||
else {
|
||||
int nI = pGeomDB->GetFirstSelectedObj() ;
|
||||
while ( nI != GDB_ID_NULL && bOk) {
|
||||
if ( ! pGeomDB->Scale( nI, frRef, dCoeffX, dCoeffY, dCoeffZ))
|
||||
bOk = false ;
|
||||
nI = pGeomDB->GetNextSelectedObj() ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// altrimenti in globale o in griglia
|
||||
else {
|
||||
Frame3d frRefG = frRef ;
|
||||
// se griglia, porto riferimento in globale
|
||||
if ( nRefType == RTY_GRID)
|
||||
frRefG.ToGlob( pGeomDB->GetGridFrame()) ;
|
||||
// ciclo sul vettore degli identificativi
|
||||
for ( size_t i = 0 ; i < vIds.size() && bOk ; ++ i) {
|
||||
// eseguo scalatura singola
|
||||
if ( vIds[i] != GDB_ID_SEL) {
|
||||
bOk = bOk && pGeomDB->ScaleGlob( vIds[i], frRefG, dCoeffX, dCoeffY, dCoeffZ) ;
|
||||
}
|
||||
// eseguo scalatura dei selezionati
|
||||
else {
|
||||
int nI = pGeomDB->GetFirstSelectedObj() ;
|
||||
while ( nI != GDB_ID_NULL && bOk) {
|
||||
if ( ! pGeomDB->ScaleGlob( nI, frRefG, dCoeffX, dCoeffY, dCoeffZ))
|
||||
bOk = false ;
|
||||
nI = pGeomDB->GetNextSelectedObj() ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sIds ;
|
||||
for ( size_t i = 0 ; i < vIds.size() ; ++ i) {
|
||||
if ( i > 0)
|
||||
sIds += "," ;
|
||||
sIds += ( vIds[i] != GDB_ID_SEL ? ToString( vIds[i]) : "GDB_ID_SEL") ;
|
||||
}
|
||||
string sLua = "EgtScale({" + sIds + "},{{" +
|
||||
ToString( frRef.Orig()) + "},{" +
|
||||
ToString( frRef.VersX()) + "},{" +
|
||||
ToString( frRef.VersY()) + "},{" +
|
||||
ToString( frRef.VersZ()) + "}}," +
|
||||
ToString( dCoeffX) + "," +
|
||||
ToString( dCoeffY) + "," +
|
||||
ToString( dCoeffZ) + "," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
BOOL
|
||||
__stdcall EgtMirror( int nId, const double vPnt[3], const double vN[3], int nRefType)
|
||||
{
|
||||
INTVECTOR vIds ;
|
||||
vIds.push_back( nId) ;
|
||||
return ( EgtMirror( vIds, vPnt, vN, nRefType) ? TRUE : FALSE) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
EgtMirror( INTVECTOR& vIds, const Point3d& ptP, const Vector3d& vtN, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, FALSE)
|
||||
bool bOk = true ;
|
||||
// se specularità espressa in locale
|
||||
if ( nRefType == RTY_LOC) {
|
||||
// verifico che tutti gli oggetti siano nello stesso riferimento
|
||||
bOk = bOk && VerifySameFrame( pGeomDB, vIds) ;
|
||||
// ciclo sul vettore degli identificativi
|
||||
for ( size_t i = 0 ; i < vIds.size() && bOk ; ++ i) {
|
||||
// eseguo specularità singola
|
||||
if ( vIds[i] != GDB_ID_SEL) {
|
||||
bOk = pGeomDB->Mirror( vIds[i], ptP, vtN) ;
|
||||
}
|
||||
// eseguo specularità dei selezionati
|
||||
else {
|
||||
int nI = pGeomDB->GetFirstSelectedObj() ;
|
||||
while ( nI != GDB_ID_NULL && bOk) {
|
||||
if ( ! pGeomDB->Mirror( nI, ptP, vtN))
|
||||
bOk = false ;
|
||||
nI = pGeomDB->GetNextSelectedObj() ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// altrimenti in globale o in griglia
|
||||
else {
|
||||
Point3d ptPG = ptP ;
|
||||
Vector3d vtNG = vtN ;
|
||||
// se griglia, porto riferimento in globale
|
||||
if ( nRefType == RTY_GRID) {
|
||||
ptPG.ToGlob( pGeomDB->GetGridFrame()) ;
|
||||
vtNG.ToGlob( pGeomDB->GetGridFrame()) ;
|
||||
}
|
||||
// ciclo sul vettore degli identificativi
|
||||
for ( size_t i = 0 ; i < vIds.size() && bOk ; ++ i) {
|
||||
// eseguo specularità singola
|
||||
if ( vIds[i] != GDB_ID_SEL) {
|
||||
bOk = pGeomDB->MirrorGlob( vIds[i], ptPG, vtNG) ;
|
||||
}
|
||||
// eseguo specularità dei selezionati
|
||||
else {
|
||||
int nI = pGeomDB->GetFirstSelectedObj() ;
|
||||
while ( nI != GDB_ID_NULL && bOk) {
|
||||
if ( ! pGeomDB->MirrorGlob( nI, ptPG, vtNG))
|
||||
bOk = false ;
|
||||
nI = pGeomDB->GetNextSelectedObj() ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sIds ;
|
||||
for ( size_t i = 0 ; i < vIds.size() ; ++ i) {
|
||||
if ( i > 0)
|
||||
sIds += "," ;
|
||||
sIds += ( vIds[i] != GDB_ID_SEL ? ToString( vIds[i]) : "GDB_ID_SEL") ;
|
||||
}
|
||||
string sLua = "EgtMirror({" + sIds + "},{" +
|
||||
ToString( ptP) + "},{" +
|
||||
ToString( vtN) + "}," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
BOOL
|
||||
__stdcall EgtShear( int nId, const double vPnt[3], const double vN[3],
|
||||
const double vDir[3], double dCoeff, int nRefType)
|
||||
{
|
||||
INTVECTOR vIds ;
|
||||
vIds.push_back( nId) ;
|
||||
return ( EgtShear( vIds, vPnt, vN, vDir, dCoeff, nRefType) ? TRUE : FALSE) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
EgtShear( INTVECTOR& vIds, const Point3d& ptP, const Vector3d& vtN,
|
||||
const Vector3d& vtDir, double dCoeff, int nRefType)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, FALSE)
|
||||
bool bOk = true ;
|
||||
// se stiramento espresso in locale
|
||||
if ( nRefType == RTY_LOC) {
|
||||
// verifico che tutti gli oggetti siano nello stesso riferimento
|
||||
bOk = bOk && VerifySameFrame( pGeomDB, vIds) ;
|
||||
// ciclo sul vettore degli identificativi
|
||||
for ( size_t i = 0 ; i < vIds.size() && bOk ; ++ i) {
|
||||
// eseguo stiramento singolo
|
||||
if ( vIds[i] != GDB_ID_SEL) {
|
||||
bOk = pGeomDB->Shear( vIds[i], ptP, vtN, vtDir, dCoeff) ;
|
||||
}
|
||||
// eseguo stiramento dei selezionati
|
||||
else {
|
||||
int nI = pGeomDB->GetFirstSelectedObj() ;
|
||||
while ( nI != GDB_ID_NULL && bOk) {
|
||||
if ( ! pGeomDB->Shear( nI, ptP, vtN, vtDir, dCoeff))
|
||||
bOk = false ;
|
||||
nI = pGeomDB->GetNextSelectedObj() ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// altrimenti in globale o in griglia
|
||||
else {
|
||||
Point3d ptPG = ptP ;
|
||||
Vector3d vtNG = vtN ;
|
||||
Vector3d vtDirG = vtDir ;
|
||||
// se griglia, porto riferimento in globale
|
||||
if ( nRefType == RTY_GRID) {
|
||||
ptPG.ToGlob( pGeomDB->GetGridFrame()) ;
|
||||
vtNG.ToGlob( pGeomDB->GetGridFrame()) ;
|
||||
vtDirG.ToGlob( pGeomDB->GetGridFrame()) ;
|
||||
}
|
||||
// ciclo sul vettore degli identificativi
|
||||
for ( size_t i = 0 ; i < vIds.size() && bOk ; ++ i) {
|
||||
// eseguo stiramento singolo
|
||||
if ( vIds[i] != GDB_ID_SEL) {
|
||||
bOk = pGeomDB->ShearGlob( vIds[i], ptPG, vtNG, vtDirG, dCoeff) ;
|
||||
}
|
||||
// eseguo stiramento dei selezionati
|
||||
else {
|
||||
int nI = pGeomDB->GetFirstSelectedObj() ;
|
||||
while ( nI != GDB_ID_NULL && bOk) {
|
||||
if ( ! pGeomDB->ShearGlob( nI, ptPG, vtNG, vtDirG, dCoeff))
|
||||
bOk = false ;
|
||||
nI = pGeomDB->GetNextSelectedObj() ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sIds ;
|
||||
for ( size_t i = 0 ; i < vIds.size() ; ++ i) {
|
||||
if ( i > 0)
|
||||
sIds += "," ;
|
||||
sIds += ( vIds[i] != GDB_ID_SEL ? ToString( vIds[i]) : "GDB_ID_SEL") ;
|
||||
}
|
||||
string sLua = "EgtShear({" + sIds + "},{" +
|
||||
ToString( ptP) + "},{" +
|
||||
ToString( vtN) + "},{" +
|
||||
ToString( vtDir) + "}," +
|
||||
ToString( dCoeff) + "," +
|
||||
RefTypeToString( nRefType) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
@@ -106,72 +469,6 @@ __stdcall EgtMoveGroup( int nId, double vVtMove[3])
|
||||
return ( bOk ? TRUE : FALSE) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
BOOL
|
||||
__stdcall EgtRotate( int nId, double vPtAx[3], double vVtAx[3], double dAngRotDeg)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, FALSE)
|
||||
bool bOk = true ;
|
||||
// eseguo rotazione singola
|
||||
if ( nId != GDB_ID_SEL) {
|
||||
bOk = pGeomDB->Rotate( nId, vPtAx, vVtAx, dAngRotDeg) ;
|
||||
}
|
||||
// eseguo rotazione dei selezionati
|
||||
else {
|
||||
int nI = pGeomDB->GetFirstSelectedObj() ;
|
||||
while ( nI != GDB_ID_NULL && bOk) {
|
||||
if ( ! pGeomDB->Rotate( nI, vPtAx, vVtAx, dAngRotDeg))
|
||||
bOk = false ;
|
||||
nI = pGeomDB->GetNextSelectedObj() ;
|
||||
}
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtRotate(" + ( nId != GDB_ID_SEL ? ToString( nId) : "GDB_ID_SEL") + ",{" +
|
||||
ToString( Point3d( vPtAx)) + "},{" +
|
||||
ToString( Vector3d( vVtAx)) + "}," +
|
||||
ToString( dAngRotDeg) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return ( bOk ? TRUE : FALSE) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
BOOL
|
||||
__stdcall EgtRotateGlob( int nId, double vPtAx[3], double vVtAx[3], double dAngRotDeg)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, FALSE)
|
||||
bool bOk = true ;
|
||||
// eseguo rotazione singola
|
||||
if ( nId != GDB_ID_SEL) {
|
||||
bOk = pGeomDB->RotateGlob( nId, vPtAx, vVtAx, dAngRotDeg) ;
|
||||
}
|
||||
// eseguo rotazione dei selezionati
|
||||
else {
|
||||
int nI = pGeomDB->GetFirstSelectedObj() ;
|
||||
while ( nI != GDB_ID_NULL && bOk) {
|
||||
if ( ! pGeomDB->RotateGlob( nI, vPtAx, vVtAx, dAngRotDeg))
|
||||
bOk = false ;
|
||||
nI = pGeomDB->GetNextSelectedObj() ;
|
||||
}
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtRotateGlob(" + ( nId != GDB_ID_SEL ? ToString( nId) : "GDB_ID_SEL") + ",{" +
|
||||
ToString( Point3d( vPtAx)) + "},{" +
|
||||
ToString( Vector3d( vVtAx)) + "}," +
|
||||
ToString( dAngRotDeg) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return ( bOk ? TRUE : FALSE) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
BOOL
|
||||
__stdcall EgtRotateGroup( int nId, double vPtAx[3], double vVtAx[3], double dAngRotDeg)
|
||||
@@ -196,92 +493,6 @@ __stdcall EgtRotateGroup( int nId, double vPtAx[3], double vVtAx[3], double dAng
|
||||
return ( bOk ? TRUE : FALSE) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
BOOL
|
||||
__stdcall EgtScale( int nId, const double vOrig[3],
|
||||
const double vX[3], const double vY[3], const double vZ[3],
|
||||
double dCoeffX, double dCoeffY, double dCoeffZ)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, FALSE)
|
||||
bool bOk = true ;
|
||||
// costruisco il riferimento di scalatura
|
||||
Frame3d frFrame ;
|
||||
if ( ! frFrame.Set( vOrig, vX, vY, vZ))
|
||||
bOk = false ;
|
||||
// eseguo scalatura singola
|
||||
if ( nId != GDB_ID_SEL) {
|
||||
bOk = bOk && pGeomDB->Scale( nId, frFrame, dCoeffX, dCoeffY, dCoeffZ) ;
|
||||
}
|
||||
// eseguo scalatura dei selezionati
|
||||
else {
|
||||
int nI = pGeomDB->GetFirstSelectedObj() ;
|
||||
while ( nI != GDB_ID_NULL && bOk) {
|
||||
if ( ! pGeomDB->Scale( nI, frFrame, dCoeffX, dCoeffY, dCoeffZ))
|
||||
bOk = false ;
|
||||
nI = pGeomDB->GetNextSelectedObj() ;
|
||||
}
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtScale(" + ( nId != GDB_ID_SEL ? ToString( nId) : "GDB_ID_SEL") + ",{{" +
|
||||
ToString( frFrame.Orig()) + "},{" +
|
||||
ToString( frFrame.VersX()) + "},{" +
|
||||
ToString( frFrame.VersY()) + "},{" +
|
||||
ToString( frFrame.VersZ()) + "}}," +
|
||||
ToString( dCoeffX) + "," +
|
||||
ToString( dCoeffY) + "," +
|
||||
ToString( dCoeffZ) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return ( bOk ? TRUE : FALSE) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
BOOL
|
||||
__stdcall EgtScaleGlob( int nId, const double vOrig[3],
|
||||
const double vX[3], const double vY[3], const double vZ[3],
|
||||
double dCoeffX, double dCoeffY, double dCoeffZ)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, FALSE)
|
||||
bool bOk = true ;
|
||||
// costruisco il riferimento di scalatura
|
||||
Frame3d frFrame ;
|
||||
if ( ! frFrame.Set( vOrig, vX, vY, vZ))
|
||||
bOk = false ;
|
||||
// eseguo scalatura singola
|
||||
if ( nId != GDB_ID_SEL) {
|
||||
bOk = bOk && pGeomDB->ScaleGlob( nId, frFrame, dCoeffX, dCoeffY, dCoeffZ) ;
|
||||
}
|
||||
// eseguo scalatura dei selezionati
|
||||
else {
|
||||
int nI = pGeomDB->GetFirstSelectedObj() ;
|
||||
while ( nI != GDB_ID_NULL && bOk) {
|
||||
if ( ! pGeomDB->ScaleGlob( nI, frFrame, dCoeffX, dCoeffY, dCoeffZ))
|
||||
bOk = false ;
|
||||
nI = pGeomDB->GetNextSelectedObj() ;
|
||||
}
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtScaleGlob(" + ( nId != GDB_ID_SEL ? ToString( nId) : "GDB_ID_SEL") + ",{{" +
|
||||
ToString( frFrame.Orig()) + "},{" +
|
||||
ToString( frFrame.VersX()) + "},{" +
|
||||
ToString( frFrame.VersY()) + "},{" +
|
||||
ToString( frFrame.VersZ()) + "}}," +
|
||||
ToString( dCoeffX) + "," +
|
||||
ToString( dCoeffY) + "," +
|
||||
ToString( dCoeffZ) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return ( bOk ? TRUE : FALSE) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
BOOL
|
||||
__stdcall EgtScaleGroup( int nId, const double vOrig[3],
|
||||
@@ -312,70 +523,6 @@ __stdcall EgtScaleGroup( int nId, const double vOrig[3],
|
||||
return ( bOk ? TRUE : FALSE) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
BOOL
|
||||
__stdcall EgtMirror( int nId, const double vPnt[3], const double vN[3])
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, FALSE)
|
||||
bool bOk = true ;
|
||||
// eseguo specularità singola
|
||||
if ( nId != GDB_ID_SEL) {
|
||||
bOk = pGeomDB->Mirror( nId, vPnt, vN) ;
|
||||
}
|
||||
// eseguo specularità dei selezionati
|
||||
else {
|
||||
int nI = pGeomDB->GetFirstSelectedObj() ;
|
||||
while ( nI != GDB_ID_NULL && bOk) {
|
||||
if ( ! pGeomDB->Mirror( nI, vPnt, vN))
|
||||
bOk = false ;
|
||||
nI = pGeomDB->GetNextSelectedObj() ;
|
||||
}
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtMirror(" + ( nId != GDB_ID_SEL ? ToString( nId) : "GDB_ID_SEL") + ",{" +
|
||||
ToString( Point3d( vPnt)) + "},{" +
|
||||
ToString( Vector3d( vN)) + "})" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return ( bOk ? TRUE : FALSE) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
BOOL
|
||||
__stdcall EgtMirrorGlob( int nId, const double vPnt[3], const double vN[3])
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, FALSE)
|
||||
bool bOk = true ;
|
||||
// eseguo specularità singola
|
||||
if ( nId != GDB_ID_SEL) {
|
||||
bOk = pGeomDB->MirrorGlob( nId, vPnt, vN) ;
|
||||
}
|
||||
// eseguo specularità dei selezionati
|
||||
else {
|
||||
int nI = pGeomDB->GetFirstSelectedObj() ;
|
||||
while ( nI != GDB_ID_NULL && bOk) {
|
||||
if ( ! pGeomDB->MirrorGlob( nI, vPnt, vN))
|
||||
bOk = false ;
|
||||
nI = pGeomDB->GetNextSelectedObj() ;
|
||||
}
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtMirrorGlob(" + ( nId != GDB_ID_SEL ? ToString( nId) : "GDB_ID_SEL") + ",{" +
|
||||
ToString( Point3d( vPnt)) + "},{" +
|
||||
ToString( Vector3d( vN)) + "})" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return ( bOk ? TRUE : FALSE) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
BOOL
|
||||
__stdcall EgtMirrorGroup( int nId, const double vPnt[3], const double vN[3])
|
||||
@@ -400,76 +547,6 @@ __stdcall EgtMirrorGroup( int nId, const double vPnt[3], const double vN[3])
|
||||
return ( bOk ? TRUE : FALSE) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
BOOL
|
||||
__stdcall EgtShear( int nId, const double vPnt[3], const double vN[3],
|
||||
const double vDir[3], double dCoeff)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, FALSE)
|
||||
bool bOk = true ;
|
||||
// eseguo stiramento singolo
|
||||
if ( nId != GDB_ID_SEL) {
|
||||
bOk = pGeomDB->Shear( nId, vPnt, vN, vDir, dCoeff) ;
|
||||
}
|
||||
// eseguo stiramento dei selezionati
|
||||
else {
|
||||
int nI = pGeomDB->GetFirstSelectedObj() ;
|
||||
while ( nI != GDB_ID_NULL && bOk) {
|
||||
if ( ! pGeomDB->Shear( nI, vPnt, vN, vDir, dCoeff))
|
||||
bOk = false ;
|
||||
nI = pGeomDB->GetNextSelectedObj() ;
|
||||
}
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtShear(" + ( nId != GDB_ID_SEL ? ToString( nId) : "GDB_ID_SEL") + ",{" +
|
||||
ToString( Point3d( vPnt)) + "},{" +
|
||||
ToString( Vector3d( vN)) + "},{" +
|
||||
ToString( Vector3d( vDir)) + "}," +
|
||||
ToString( dCoeff) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return ( bOk ? TRUE : FALSE) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
BOOL
|
||||
__stdcall EgtShearGlob( int nId, const double vPnt[3], const double vN[3],
|
||||
const double vDir[3], double dCoeff)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, FALSE)
|
||||
bool bOk = true ;
|
||||
// eseguo stiramento singolo
|
||||
if ( nId != GDB_ID_SEL) {
|
||||
bOk = pGeomDB->ShearGlob( nId, vPnt, vN, vDir, dCoeff) ;
|
||||
}
|
||||
// eseguo stiramento dei selezionati
|
||||
else {
|
||||
int nI = pGeomDB->GetFirstSelectedObj() ;
|
||||
while ( nI != GDB_ID_NULL && bOk) {
|
||||
if ( ! pGeomDB->ShearGlob( nI, vPnt, vN, vDir, dCoeff))
|
||||
bOk = false ;
|
||||
nI = pGeomDB->GetNextSelectedObj() ;
|
||||
}
|
||||
}
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtShearGlob(" + ( nId != GDB_ID_SEL ? ToString( nId) : "GDB_ID_SEL") + ",{" +
|
||||
ToString( Point3d( vPnt)) + "},{" +
|
||||
ToString( Vector3d( vN)) + "},{" +
|
||||
ToString( Vector3d( vDir)) + "}," +
|
||||
ToString( dCoeff) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
// restituisco risultato
|
||||
return ( bOk ? TRUE : FALSE) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
BOOL
|
||||
__stdcall EgtShearGroup( int nId, const double vPnt[3], const double vN[3],
|
||||
|
||||
Reference in New Issue
Block a user