e23999b6a3
- numerose modifiche e correzioni - aggiunta registrazione comandi in formato lua - aggiunto valutatore di espressioni.
497 lines
18 KiB
C++
497 lines
18 KiB
C++
//----------------------------------------------------------------------------
|
|
// EgalTech 2014-2014
|
|
//----------------------------------------------------------------------------
|
|
// File : API_GeoTransform.cpp Data : 30.09.14 Versione : 1.5i5
|
|
// Contenuto : Funzioni di trasformazione geometrica per API.
|
|
//
|
|
//
|
|
//
|
|
// Modifiche : 30.09.14 DS Creazione modulo.
|
|
//
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
//--------------------------- Include ----------------------------------------
|
|
#include "stdafx.h"
|
|
#include "API.h"
|
|
#include "API_Macro.h"
|
|
#include "/EgtDev/Include/EInAPI.h"
|
|
#include "/EgtDev/Include/EGkStringUtils3d.h"
|
|
|
|
using namespace std ;
|
|
|
|
//-------------------------------------------------------------------------------
|
|
BOOL
|
|
__stdcall EgtMove( int nId, double vVtMove[3])
|
|
{
|
|
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
|
VERIFY_GEOMDB( pGeomDB, FALSE)
|
|
bool bOk = true ;
|
|
// eseguo traslazione singola
|
|
if ( nId != GDB_ID_SEL) {
|
|
bOk = pGeomDB->Translate( nId, vVtMove) ;
|
|
}
|
|
// eseguo traslazione dei selezionati
|
|
else {
|
|
int nI = pGeomDB->GetFirstSelectedObj() ;
|
|
while ( nI != GDB_ID_NULL && bOk) {
|
|
if ( ! pGeomDB->Translate( nI, vVtMove))
|
|
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)) + "})" +
|
|
" -- Ok=" + ToString( bOk) ;
|
|
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
|
}
|
|
// restituisco risultato
|
|
return ( bOk ? TRUE : FALSE) ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
BOOL
|
|
__stdcall EgtMoveGlob( int nId, double vVtMove[3])
|
|
{
|
|
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
|
VERIFY_GEOMDB( pGeomDB, FALSE)
|
|
bool bOk = true ;
|
|
// eseguo traslazione singola
|
|
if ( nId != GDB_ID_SEL) {
|
|
bOk = pGeomDB->TranslateGlob( nId, vVtMove) ;
|
|
}
|
|
// eseguo traslazione dei selezionati
|
|
else {
|
|
int nI = pGeomDB->GetFirstSelectedObj() ;
|
|
while ( nI != GDB_ID_NULL && bOk) {
|
|
if ( ! pGeomDB->TranslateGlob( nI, vVtMove))
|
|
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)) + "})" +
|
|
" -- Ok=" + ToString( bOk) ;
|
|
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
|
}
|
|
// restituisco risultato
|
|
return ( bOk ? TRUE : FALSE) ;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------------
|
|
BOOL
|
|
__stdcall EgtMoveGroup( int nId, double vVtMove[3])
|
|
{
|
|
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
|
VERIFY_GEOMDB( pGeomDB, FALSE)
|
|
bool bOk = true ;
|
|
// eseguo traslazione singola
|
|
if ( nId != GDB_ID_SEL) {
|
|
bOk = pGeomDB->TranslateGroup( nId, vVtMove) ;
|
|
}
|
|
// eseguo traslazione dei selezionati
|
|
else {
|
|
int nI = pGeomDB->GetFirstSelectedObj() ;
|
|
while ( nI != GDB_ID_NULL && bOk) {
|
|
if ( ! pGeomDB->TranslateGroup( nI, vVtMove))
|
|
bOk = false ;
|
|
nI = pGeomDB->GetNextSelectedObj() ;
|
|
}
|
|
}
|
|
// restituisco risultato
|
|
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)
|
|
{
|
|
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
|
VERIFY_GEOMDB( pGeomDB, FALSE)
|
|
bool bOk = true ;
|
|
// eseguo rotazione singola
|
|
if ( nId != GDB_ID_SEL) {
|
|
bOk = pGeomDB->RotateGroup( nId, vPtAx, vVtAx, dAngRotDeg) ;
|
|
}
|
|
// eseguo rotazione dei selezionati
|
|
else {
|
|
int nI = pGeomDB->GetFirstSelectedObj() ;
|
|
while ( nI != GDB_ID_NULL && bOk) {
|
|
if ( ! pGeomDB->RotateGroup( nI, vPtAx, vVtAx, dAngRotDeg))
|
|
bOk = false ;
|
|
nI = pGeomDB->GetNextSelectedObj() ;
|
|
}
|
|
}
|
|
// restituisco risultato
|
|
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],
|
|
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->ScaleGroup( nId, frFrame, dCoeffX, dCoeffY, dCoeffZ) ;
|
|
}
|
|
// eseguo scalatura dei selezionati
|
|
else {
|
|
int nI = pGeomDB->GetFirstSelectedObj() ;
|
|
while ( nI != GDB_ID_NULL && bOk) {
|
|
if ( ! pGeomDB->ScaleGroup( nI, frFrame, dCoeffX, dCoeffY, dCoeffZ))
|
|
bOk = false ;
|
|
nI = pGeomDB->GetNextSelectedObj() ;
|
|
}
|
|
}
|
|
// restituisco risultato
|
|
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])
|
|
{
|
|
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
|
VERIFY_GEOMDB( pGeomDB, FALSE)
|
|
bool bOk = true ;
|
|
// eseguo specularità singola
|
|
if ( nId != GDB_ID_SEL) {
|
|
bOk = pGeomDB->MirrorGroup( nId, vPnt, vN) ;
|
|
}
|
|
// eseguo specularità dei selezionati
|
|
else {
|
|
int nI = pGeomDB->GetFirstSelectedObj() ;
|
|
while ( nI != GDB_ID_NULL && bOk) {
|
|
if ( ! pGeomDB->MirrorGroup( nI, vPnt, vN))
|
|
bOk = false ;
|
|
nI = pGeomDB->GetNextSelectedObj() ;
|
|
}
|
|
}
|
|
// restituisco risultato
|
|
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],
|
|
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->ShearGroup( nId, vPnt, vN, vDir, dCoeff) ;
|
|
}
|
|
// eseguo stiramento dei selezionati
|
|
else {
|
|
int nI = pGeomDB->GetFirstSelectedObj() ;
|
|
while ( nI != GDB_ID_NULL && bOk) {
|
|
if ( ! pGeomDB->ShearGroup( nI, vPnt, vN, vDir, dCoeff))
|
|
bOk = false ;
|
|
nI = pGeomDB->GetNextSelectedObj() ;
|
|
}
|
|
}
|
|
// restituisco risultato
|
|
return ( bOk ? TRUE : FALSE) ;
|
|
}
|