EgtInterface 1.6b6 :
- aggiornamenti vari - introdotto comando per merge (cucitura) di superfici - migliorata gestione oggetti selezionati in comandi.
This commit is contained in:
+38
-33
@@ -1216,27 +1216,31 @@ MyCreateCurveCompoByChain( int nParentId, const INTVECTOR& vIds,
|
||||
double dToler = 10 * EPS_SMALL ;
|
||||
ChainCurves chainC ;
|
||||
chainC.Init( true, dToler, int( vIds.size())) ;
|
||||
INTVECTOR::const_iterator Iter ;
|
||||
for ( Iter = vIds.begin() ; Iter != vIds.end() ; ++Iter) {
|
||||
// recupero la curva e il suo riferimento
|
||||
ICurve* pCrv = GetCurve( pGeomDB->GetGeoObj( *Iter)) ;
|
||||
if ( pCrv == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
Frame3d frCrv ;
|
||||
if ( ! pGeomDB->GetGlobFrame( *Iter, frCrv))
|
||||
return GDB_ID_NULL ;
|
||||
// recupero i dati della curva necessari al concatenamento e li assegno
|
||||
Point3d ptStart, ptEnd ;
|
||||
Vector3d vtStart, vtEnd ;
|
||||
if ( ! pCrv->GetStartPoint( ptStart) || ! pCrv->GetStartDir( vtStart) ||
|
||||
! pCrv->GetEndPoint( ptEnd) || ! pCrv->GetEndDir( vtEnd))
|
||||
return GDB_ID_NULL ;
|
||||
ptStart.LocToLoc( frCrv, frDest) ;
|
||||
vtStart.LocToLoc( frCrv, frDest) ;
|
||||
ptEnd.LocToLoc( frCrv, frDest) ;
|
||||
vtEnd.LocToLoc( frCrv, frDest) ;
|
||||
if ( ! chainC.AddCurve( *Iter, ptStart, vtStart, ptEnd, vtEnd))
|
||||
return GDB_ID_NULL ;
|
||||
for ( size_t i = 0 ; i < vIds.size() ; ++ i) {
|
||||
int nId = (( vIds[i] != GDB_ID_SEL) ? vIds[i] : pGeomDB->GetFirstSelectedObj()) ;
|
||||
while ( nId != GDB_ID_NULL) {
|
||||
// recupero la curva e il suo riferimento
|
||||
ICurve* pCrv = GetCurve( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pCrv == nullptr)
|
||||
return GDB_ID_NULL ;
|
||||
Frame3d frCrv ;
|
||||
if ( ! pGeomDB->GetGlobFrame( nId, frCrv))
|
||||
return GDB_ID_NULL ;
|
||||
// recupero i dati della curva necessari al concatenamento e li assegno
|
||||
Point3d ptStart, ptEnd ;
|
||||
Vector3d vtStart, vtEnd ;
|
||||
if ( ! pCrv->GetStartPoint( ptStart) || ! pCrv->GetStartDir( vtStart) ||
|
||||
! pCrv->GetEndPoint( ptEnd) || ! pCrv->GetEndDir( vtEnd))
|
||||
return GDB_ID_NULL ;
|
||||
ptStart.LocToLoc( frCrv, frDest) ;
|
||||
vtStart.LocToLoc( frCrv, frDest) ;
|
||||
ptEnd.LocToLoc( frCrv, frDest) ;
|
||||
vtEnd.LocToLoc( frCrv, frDest) ;
|
||||
if ( ! chainC.AddCurve( nId, ptStart, vtStart, ptEnd, vtEnd))
|
||||
return GDB_ID_NULL ;
|
||||
// passo al successivo
|
||||
nId = (( vIds[i] != GDB_ID_SEL) ? GDB_ID_NULL : pGeomDB->GetNextSelectedObj()) ;
|
||||
}
|
||||
}
|
||||
// recupero i percorsi concatenati
|
||||
int nFirstId = GDB_ID_NULL ;
|
||||
@@ -1251,10 +1255,9 @@ MyCreateCurveCompoByChain( int nParentId, const INTVECTOR& vIds,
|
||||
Vector3d vtExtr = CalcExtrusion( pGeomDB, nParentId, nRefType) ;
|
||||
double dThick = 0 ;
|
||||
// recupero le curve semplici e le inserisco nella curva composita
|
||||
INTVECTOR::iterator Iter ;
|
||||
for ( Iter = vId2s.begin() ; Iter != vId2s.end() ; ++Iter) {
|
||||
int nId = abs( *Iter) ;
|
||||
bool bInvert = ( *Iter < 0) ;
|
||||
for ( size_t i = 0 ; i < vId2s.size() ; ++ i) {
|
||||
int nId = abs( vId2s[i]) ;
|
||||
bool bInvert = ( vId2s[i] < 0) ;
|
||||
// recupero la curva e il suo riferimento
|
||||
ICurve* pCrv = GetCurve( pGeomDB->GetGeoObj( nId)) ;
|
||||
if ( pCrv == nullptr)
|
||||
@@ -1300,9 +1303,13 @@ MyCreateCurveCompoByChain( int nParentId, const INTVECTOR& vIds,
|
||||
}
|
||||
// se richiesto e ok, cancello le curve originali
|
||||
if ( bErase && nFirstId != GDB_ID_NULL) {
|
||||
for ( Iter = vIds.begin() ; Iter != vIds.end() ; ++Iter) {
|
||||
if ( ! pGeomDB->Erase( *Iter))
|
||||
return GDB_ID_NULL ;
|
||||
for ( size_t i = 0 ; i < vIds.size() ; ++ i) {
|
||||
int nId = (( vIds[i] != GDB_ID_SEL) ? vIds[i] : pGeomDB->GetFirstSelectedObj()) ;
|
||||
while ( nId != GDB_ID_NULL) {
|
||||
pGeomDB->Erase( nId) ;
|
||||
// passo al successivo
|
||||
nId = (( vIds[i] != GDB_ID_SEL) ? GDB_ID_NULL : pGeomDB->GetFirstSelectedObj()) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
// restituisco l'identificativo della prima nuova entità
|
||||
@@ -1320,11 +1327,9 @@ EgtCreateCurveCompoByChain( int nParentId, const INTVECTOR& vIds,
|
||||
// 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 += ToString( vIds[i]) ;
|
||||
}
|
||||
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 = "EgtCurveCompoByChain(" + ToString( nParentId) + ",{" +
|
||||
sIds + "},{" +
|
||||
ToString( ptNear) + "}," +
|
||||
|
||||
Reference in New Issue
Block a user