EgtInterface 1.6b6 :

- aggiornamenti vari
- introdotto comando per merge (cucitura) di superfici
- migliorata gestione oggetti selezionati in comandi.
This commit is contained in:
Dario Sassi
2015-03-11 09:06:35 +00:00
parent 5e3c729190
commit b0389f3fda
28 changed files with 1168 additions and 614 deletions
+95 -214
View File
@@ -45,18 +45,13 @@ EgtMove( INTVECTOR& vIds, const Vector3d& vtMove, int nRefType)
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() ;
}
int nId = (( vIds[i] != GDB_ID_SEL) ? vIds[i] : pGeomDB->GetFirstSelectedObj()) ;
while ( nId != GDB_ID_NULL) {
// eseguo traslazione
if ( ! pGeomDB->Translate( nId, vtMove))
bOk = false ;
// passo alla successiva
nId = (( vIds[i] != GDB_ID_SEL) ? GDB_ID_NULL : pGeomDB->GetNextSelectedObj()) ;
}
}
}
@@ -68,18 +63,13 @@ EgtMove( INTVECTOR& vIds, const Vector3d& vtMove, int nRefType)
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() ;
}
int nId = (( vIds[i] != GDB_ID_SEL) ? vIds[i] : pGeomDB->GetFirstSelectedObj()) ;
while ( nId != GDB_ID_NULL) {
// eseguo traslazione
if ( ! pGeomDB->TranslateGlob( nId, vtMoveG))
bOk = false ;
// passo alla successiva
nId = (( vIds[i] != GDB_ID_SEL) ? GDB_ID_NULL : pGeomDB->GetNextSelectedObj()) ;
}
}
}
@@ -87,11 +77,9 @@ EgtMove( INTVECTOR& vIds, const Vector3d& vtMove, int nRefType)
// 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") ;
}
for ( size_t i = 0 ; i < vIds.size() ; ++ i)
sIds += ( vIds[i] != GDB_ID_SEL ? ToString( vIds[i]) : "GDB_ID_SEL") + "," ;
sIds.pop_back() ;
string sLua = "EgtMove({" + sIds + "},{" +
ToString( vtMove) + "}," +
RefTypeToString( nRefType) + ")" +
@@ -124,18 +112,13 @@ EgtRotate( INTVECTOR& vIds, const Point3d& ptAx, const Vector3d& vtAx, double dA
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() ;
}
int nId = (( vIds[i] != GDB_ID_SEL) ? vIds[i] : pGeomDB->GetFirstSelectedObj()) ;
while ( nId != GDB_ID_NULL) {
// eseguo rotazione
if ( ! pGeomDB->Rotate( nId, ptAx, vtAx, dAngRotDeg))
bOk = false ;
// passo alla successiva
nId = (( vIds[i] != GDB_ID_SEL) ? GDB_ID_NULL : pGeomDB->GetNextSelectedObj()) ;
}
}
}
@@ -150,18 +133,13 @@ EgtRotate( INTVECTOR& vIds, const Point3d& ptAx, const Vector3d& vtAx, double dA
}
// 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() ;
}
int nId = (( vIds[i] != GDB_ID_SEL) ? vIds[i] : pGeomDB->GetFirstSelectedObj()) ;
while ( nId != GDB_ID_NULL) {
// eseguo rotazione
if ( ! pGeomDB->RotateGlob( nId, ptAxG, vtAxG, dAngRotDeg))
bOk = false ;
// passo alla successiva
nId = (( vIds[i] != GDB_ID_SEL) ? GDB_ID_NULL : pGeomDB->GetNextSelectedObj()) ;
}
}
}
@@ -169,11 +147,9 @@ EgtRotate( INTVECTOR& vIds, const Point3d& ptAx, const Vector3d& vtAx, double dA
// 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") ;
}
for ( size_t i = 0 ; i < vIds.size() ; ++ i)
sIds += ( vIds[i] != GDB_ID_SEL ? ToString( vIds[i]) : "GDB_ID_SEL") + "," ;
sIds.pop_back() ;
string sLua = "EgtRotate({" + sIds + "},{" +
ToString( ptAx) + "},{" +
ToString( vtAx) + "}," +
@@ -216,18 +192,13 @@ EgtScale( INTVECTOR& vIds, const Frame3d& frRef,
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() ;
}
int nId = (( vIds[i] != GDB_ID_SEL) ? vIds[i] : pGeomDB->GetFirstSelectedObj()) ;
while ( nId != GDB_ID_NULL) {
// eseguo scalature
if ( ! pGeomDB->Scale( nId, frRef, dCoeffX, dCoeffY, dCoeffZ))
bOk = false ;
// passo alla successiva
nId = (( vIds[i] != GDB_ID_SEL) ? GDB_ID_NULL : pGeomDB->GetNextSelectedObj()) ;
}
}
}
@@ -239,18 +210,13 @@ EgtScale( INTVECTOR& vIds, const Frame3d& frRef,
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() ;
}
int nId = (( vIds[i] != GDB_ID_SEL) ? vIds[i] : pGeomDB->GetFirstSelectedObj()) ;
while ( nId != GDB_ID_NULL) {
// eseguo scalature
if ( ! pGeomDB->ScaleGlob( nId, frRefG, dCoeffX, dCoeffY, dCoeffZ))
bOk = false ;
// passo alla successiva
nId = (( vIds[i] != GDB_ID_SEL) ? GDB_ID_NULL : pGeomDB->GetNextSelectedObj()) ;
}
}
}
@@ -258,11 +224,9 @@ EgtScale( INTVECTOR& vIds, const Frame3d& frRef,
// 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") ;
}
for ( size_t i = 0 ; i < vIds.size() ; ++ i)
sIds += ( vIds[i] != GDB_ID_SEL ? ToString( vIds[i]) : "GDB_ID_SEL") + "," ;
sIds.pop_back() ;
string sLua = "EgtScale({" + sIds + "},{{" +
ToString( frRef.Orig()) + "},{" +
ToString( frRef.VersX()) + "},{" +
@@ -301,18 +265,13 @@ EgtMirror( INTVECTOR& vIds, const Point3d& ptP, const Vector3d& vtN, int nRefTyp
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() ;
}
int nId = (( vIds[i] != GDB_ID_SEL) ? vIds[i] : pGeomDB->GetFirstSelectedObj()) ;
while ( nId != GDB_ID_NULL) {
// eseguo riflessione
if ( ! pGeomDB->Mirror( nId, ptP, vtN))
bOk = false ;
// passo alla successiva
nId = (( vIds[i] != GDB_ID_SEL) ? GDB_ID_NULL : pGeomDB->GetNextSelectedObj()) ;
}
}
}
@@ -327,18 +286,13 @@ EgtMirror( INTVECTOR& vIds, const Point3d& ptP, const Vector3d& vtN, int nRefTyp
}
// 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() ;
}
int nId = (( vIds[i] != GDB_ID_SEL) ? vIds[i] : pGeomDB->GetFirstSelectedObj()) ;
while ( nId != GDB_ID_NULL) {
// eseguo riflessione
if ( ! pGeomDB->MirrorGlob( nId, ptPG, vtNG))
bOk = false ;
// passo alla successiva
nId = (( vIds[i] != GDB_ID_SEL) ? GDB_ID_NULL : pGeomDB->GetNextSelectedObj()) ;
}
}
}
@@ -346,11 +300,9 @@ EgtMirror( INTVECTOR& vIds, const Point3d& ptP, const Vector3d& vtN, int nRefTyp
// 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") ;
}
for ( size_t i = 0 ; i < vIds.size() ; ++ i)
sIds += ( vIds[i] != GDB_ID_SEL ? ToString( vIds[i]) : "GDB_ID_SEL") + "," ;
sIds.pop_back() ;
string sLua = "EgtMirror({" + sIds + "},{" +
ToString( ptP) + "},{" +
ToString( vtN) + "}," +
@@ -386,18 +338,13 @@ EgtShear( INTVECTOR& vIds, const Point3d& ptP, const Vector3d& vtN,
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() ;
}
int nId = (( vIds[i] != GDB_ID_SEL) ? vIds[i] : pGeomDB->GetFirstSelectedObj()) ;
while ( nId != GDB_ID_NULL) {
// eseguo stiramento
if ( ! pGeomDB->Shear( nId, ptP, vtN, vtDir, dCoeff))
bOk = false ;
// passo alla successiva
nId = (( vIds[i] != GDB_ID_SEL) ? GDB_ID_NULL : pGeomDB->GetNextSelectedObj()) ;
}
}
}
@@ -414,18 +361,13 @@ EgtShear( INTVECTOR& vIds, const Point3d& ptP, const Vector3d& vtN,
}
// 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() ;
}
int nId = (( vIds[i] != GDB_ID_SEL) ? vIds[i] : pGeomDB->GetFirstSelectedObj()) ;
while ( nId != GDB_ID_NULL) {
// eseguo stiramento
if ( ! pGeomDB->ShearGlob( nId, ptPG, vtNG, vtDirG, dCoeff))
bOk = false ;
// passo alla successiva
nId = (( vIds[i] != GDB_ID_SEL) ? GDB_ID_NULL : pGeomDB->GetNextSelectedObj()) ;
}
}
}
@@ -433,11 +375,9 @@ EgtShear( INTVECTOR& vIds, const Point3d& ptP, const Vector3d& vtN,
// 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") ;
}
for ( size_t i = 0 ; i < vIds.size() ; ++ i)
sIds += ( vIds[i] != GDB_ID_SEL ? ToString( vIds[i]) : "GDB_ID_SEL") + "," ;
sIds.pop_back() ;
string sLua = "EgtShear({" + sIds + "},{" +
ToString( ptP) + "},{" +
ToString( vtN) + "},{" +
@@ -457,20 +397,8 @@ __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() ;
}
}
// eseguo traslazione ( solo singola)
bool bOk = pGeomDB->TranslateGroup( nId, vVtMove) ;
EgtSetModified() ;
// restituisco risultato
return ( bOk ? TRUE : FALSE) ;
@@ -482,20 +410,8 @@ __stdcall EgtRotateGroup( int nId, double vPtAx[3], double vVtAx[3], double dAng
{
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() ;
}
}
// eseguo rotazione ( solo singola)
bool bOk = pGeomDB->RotateGroup( nId, vPtAx, vVtAx, dAngRotDeg) ;
EgtSetModified() ;
// restituisco risultato
return ( bOk ? TRUE : FALSE) ;
@@ -514,19 +430,8 @@ __stdcall EgtScaleGroup( int nId, const double vOrig[3],
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() ;
}
}
// eseguo scalatura ( solo singola)
bOk = bOk && pGeomDB->ScaleGroup( nId, frFrame, dCoeffX, dCoeffY, dCoeffZ) ;
EgtSetModified() ;
// restituisco risultato
return ( bOk ? TRUE : FALSE) ;
@@ -538,20 +443,8 @@ __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() ;
}
}
// eseguo riflessione ( solo singola)
bool bOk = pGeomDB->MirrorGroup( nId, vPnt, vN) ;
EgtSetModified() ;
// restituisco risultato
return ( bOk ? TRUE : FALSE) ;
@@ -564,20 +457,8 @@ __stdcall EgtShearGroup( int nId, const double vPnt[3], const double vN[3],
{
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() ;
}
}
// eseguo stiramento ( solo singolo)
bool bOk = pGeomDB->ShearGroup( nId, vPnt, vN, vDir, dCoeff) ;
EgtSetModified() ;
// restituisco risultato
return ( bOk ? TRUE : FALSE) ;