diff --git a/BtlGeomProc.cpp b/BtlGeomProc.cpp index 68210c7..a0176db 100644 --- a/BtlGeomProc.cpp +++ b/BtlGeomProc.cpp @@ -6399,10 +6399,15 @@ BtlGeom::CreateFreeContours( void) PtrOwner 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 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)); diff --git a/ImportBtlx.cpp b/ImportBtlx.cpp index c533fe9..252b8ad 100644 --- a/ImportBtlx.cpp +++ b/ImportBtlx.cpp @@ -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