EgtExchange :

- in import BTL/BTLx migliorata gestione FreeContour con Pocket
- in import BTLx fatte piccole sistemazioni.
This commit is contained in:
Dario Sassi
2021-01-09 19:23:33 +00:00
parent cfa1c23917
commit 0368a42292
2 changed files with 31 additions and 23 deletions
+27 -17
View File
@@ -6399,10 +6399,15 @@ BtlGeom::CreateFreeContours( void)
PtrOwner<ISurfTriMesh> pPocket( CreateSurfTriMesh()) ;
if ( IsNull( pPocket) || ! pPocket->CreateByFlatContour( PL))
continue ;
// la oriento correttamente
// se necessario, inverto l'orientamento del fondo
Vector3d vtN ;
if ( pPocket->GetFacetNormal( 0, vtN) && vtExtr * vtN < 0)
pPocket->Invert() ;
// altrimenti ...
else if ( nGroup == 4) {
pStm->Invert() ;
pCrv->Invert() ;
}
// la porto in posizione corretta
pPocket->Translate( vtExtr * dThick) ;
// la unisco alla parte laterale
@@ -6449,11 +6454,16 @@ BtlGeom::CreateFreeContours( void)
PtrOwner<ISurfTriMesh> pPocket( CreateSurfTriMesh()) ;
if ( IsNull( pPocket) || ! pPocket->CreateByFlatContour( ( ! bTwoBottom ? PL : PL2)))
continue ;
// la oriento correttamente
// se necessario, inverto l'orientamento del fondo
Vector3d vtExtr ; pCrv->GetExtrusion( vtExtr) ;
Vector3d vtN ;
if ( pPocket->GetFacetNormal( 0, vtN) && vtExtr * vtN < 0)
pPocket->Invert() ;
// altrimenti...
else if ( ( nGroup == 4 && bTwoBottom) || ( nGroup != 4 && ! bTwoBottom)) {
pStm->Invert() ;
pCrv->Invert() ;
}
// la unisco alla parte laterale
pStm->DoSewing( *pPocket) ;
}
@@ -7221,9 +7231,9 @@ BtlGeom::AddTenonBTLX( int nGroup, int nProc, int nSide, const string& sDes, int
return true ;
}
IGeoFrame3d * geofr = CreateGeoFrame3d() ;
geofr->Set( GetSideFrame( nSide)) ;
m_pGDB->AddGeoObj(GDB_ID_NULL, m_nProcsId,geofr);
//IGeoFrame3d * geofr = CreateGeoFrame3d() ;
//geofr->Set( GetSideFrame( nSide)) ;
//m_pGDB->AddGeoObj(GDB_ID_NULL, m_nProcsId,geofr);
string s = to_string( ptP.x) + " " +to_string(ptP.y) + " " + to_string( ptP.z) ;
LOG_ERROR( GetEExLogger() , s.c_str()) ;
@@ -7464,9 +7474,9 @@ BtlGeom::AddTenonBTLX2( int nGroup, int nProc, int nSide, const string& sDes, in
frTen.Rotate( ptP, vtN, ( nGroup != 1 ? 90 - dRot : dRot - 90)) ;
frTen.ToGlob( GetSideFrame( nSide)) ;
IGeoFrame3d * geofr = CreateGeoFrame3d() ;
geofr->Set( GetSideFrame( nSide)) ;
m_pGDB->AddGeoObj(GDB_ID_NULL, m_nProcsId,geofr);
//IGeoFrame3d * geofr = CreateGeoFrame3d() ;
//geofr->Set( GetSideFrame( nSide)) ;
//m_pGDB->AddGeoObj(GDB_ID_NULL, m_nProcsId,geofr);
// lunghezza del tenone
double dThick = GetSideHeight( nSide) ;
@@ -7651,9 +7661,9 @@ BtlGeom::AddDovetailTenonBTLX( int nGroup, int nProc, int nSide, const string& s
}
IGeoFrame3d * geofr = CreateGeoFrame3d() ;
geofr->Set( frTen) ;
m_pGDB->AddGeoObj(GDB_ID_NULL, m_nProcsId,geofr);
//IGeoFrame3d * geofr = CreateGeoFrame3d() ;
//geofr->Set( frTen) ;
//m_pGDB->AddGeoObj(GDB_ID_NULL, m_nProcsId,geofr);
// calcolo il centro del tenone
Point3d ptCen( 0, 0.5 * dTenL, dTenH) ;
@@ -8041,9 +8051,9 @@ BtlGeom::AddDovetailMortiseBTLX( int nGroup, int nProc, int nSide, const string&
frMort.ChangeOrig( ptP) ;
frMort.ToGlob( GetSideFrame( nSide)) ;
IGeoFrame3d * geofr = CreateGeoFrame3d() ;
geofr->Set( frMort) ;
m_pGDB->AddGeoObj(GDB_ID_NULL, m_nProcsId,geofr);
//IGeoFrame3d * geofr = CreateGeoFrame3d() ;
//geofr->Set( frMort) ;
//m_pGDB->AddGeoObj(GDB_ID_NULL, m_nProcsId,geofr);
// calcolo il centro del fondo della mortasa
Point3d ptCen( 0, - 0.5 * dMortL, - dMortD) ;
@@ -8299,9 +8309,9 @@ BtlGeom::AddMortiseBTLX( int nGroup, int nProc, int nSide, const string& sDes, i
double dCosA = frMort.VersY() * GetSideVersN( nSide) ;
double dL = dThick / dCosA ; //lunghezza lato faccia taglio
IGeoFrame3d * geofr = CreateGeoFrame3d() ;
geofr->Set( frMort) ;
m_pGDB->AddGeoObj(GDB_ID_NULL, m_nProcsId, geofr);
//IGeoFrame3d * geofr = CreateGeoFrame3d() ;
//geofr->Set( frMort) ;
//m_pGDB->AddGeoObj(GDB_ID_NULL, m_nProcsId, geofr);
Point3d point( ptP) ;
point.ToGlob( GetSideFrame( nSide));
+4 -6
View File
@@ -61,12 +61,10 @@ ImportBtlx::ImportBtlx( void)
bool
ImportBtlx::Import( const string& sFile, IGeomDB* pGDB, int nFlag)
{
// log di informazioni
// log di informazioni
LOG_INFO( GetEExLogger(), ( "ImportBtlx : " + sFile).c_str())
// string s5 = "nFlag " + to_string( nFlag) ;
// LOG_ERROR( GetEExLogger(), s5.c_str()) ;
nFlag= 56 ;
// inizializzo il gestore geometria pezzi Btl
// inizializzo il gestore geometria pezzi Btl
int nFlatVertPos = 0 ;
if (( nFlag & EIBFLAG_TS3_POS) != 0)
nFlatVertPos = 3 ;
@@ -81,7 +79,7 @@ ImportBtlx::Import( const string& sFile, IGeomDB* pGDB, int nFlag)
return false ;
}
// scrivo nel progetto path del file
m_BtlGeom.SetUserAttribute( UATD_INFO, IKEY_BTL_PATH + ":" + sFile) ;
// inizializzo il documento