EgtMachKernel 2.7i3 :

- nella verifica collisione della simulazione negli oggetti sorgente è possibile indicare il nome degli oggetti bersaglio da ignorare (CollSkip=Name).
This commit is contained in:
Dario Sassi
2025-09-24 17:21:29 +02:00
parent f2a70b9fe0
commit d78003437d
3 changed files with 16 additions and 4 deletions
+8 -2
View File
@@ -1527,6 +1527,8 @@ SimulatorSP::ExecCollisionCheck( int& nCdInd, int& nObjInd, int nMoveType)
continue ;
// recupero il riferimento
Frame3d frCd ; m_pGeomDB->GetGlobFrame( m_CdId[i], frCd) ;
// recupero il nome
string sCdName ; m_pGeomDB->GetName( m_CdId[i], sCdName) ;
// ciclo sugli oggetti con cui verificare
for ( int j = 0 ; j < int( m_CollObj.size()) ; ++ j) {
// se modo hidden è da saltare
@@ -1541,6 +1543,10 @@ SimulatorSP::ExecCollisionCheck( int& nCdInd, int& nObjInd, int nMoveType)
// se utensile attivo su grezzo in lavoro e non è rapido, salto
if ( bIsTool && bIsRaw && nMoveType != 0)
continue ;
// se contiene info con nome da saltare, verifico se è il caso
string sCollSkip ;
if ( m_pGeomDB->GetInfo( m_CollObj[j].nFrameId, "CollSkip", sCollSkip) && sCollSkip == sCdName)
continue ;
// esecuzione controlli di collisione
bool bOk = true ;
// oggetti che richiedono frame associato (Box, Cylinder, Sphere, Cone)
@@ -1614,8 +1620,8 @@ FindCollisionMarkId( const IGeomDB* pGeomDB, int nCollId)
int nCollParId = pGeomDB->GetParentId( nCollId) ;
string sCollParName = "COLLISION" ;
pGeomDB->GetName( nCollParId, sCollParName) ;
// COLLISION per parti generiche di macchina, BASE e MOBILE per fixtures
if ( sCollParName != "COLLISION" && sCollParName != "BASE" && sCollParName != "MOBILE")
// COLLISION* per parti generiche di macchina, BASE e MOBILE per fixtures
if ( sCollParName.rfind( "COLLISION", 0) != 0 && sCollParName != "BASE" && sCollParName != "MOBILE")
return nCollParId ;
else {
int nCollGprId = pGeomDB->GetParentId( nCollParId) ;