From f9cedf70a60ede85aec2ac92b9f78bd6cb13b50d Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Fri, 7 Aug 2015 10:46:20 +0000 Subject: [PATCH] EgtGraphics 1.6h2 : - modifiche per gestire Region. --- EgtGraphics.rc | Bin 11604 -> 11604 bytes SceneGeom.cpp | 40 +++++++++++++++++++++++++++++++++------- SceneSelect.cpp | 2 +- 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/EgtGraphics.rc b/EgtGraphics.rc index 8d8eec577c7d8eb2ef8263566c2a0d4bbc5beb02..b82830ac273cc591a64702b5278bb463cfcff766 100644 GIT binary patch delta 103 zcmcZ-btP)UFE&P_%?J7RGfm>rnVhGn#%MJ8ptSDhKaxI-o7=dpn8C8TKng4@BhrnVhGn#%MVCptSDhKaxI-o7=dpn8C8TKng4@BhGetAuxSurf() ; break ; + } if ( pSTM != nullptr && pSTM->GetTriangleNum() > N_MIN_TRIA_NEWWAY) bNewWay = true ; } @@ -268,10 +273,14 @@ Scene::DrawGeoObj( const IGdbIterator& iIter, int nPass, const MdStMkCol& siObj) pGraphics->AddPolyLine( PL) ; } } - // se superficie trimesh - else if ( nGeoType == SRF_TRIMESH) { - // recupero la superficie - const ISurfTriMesh* pSTM = GetSurfTriMesh( pGeoObj) ; + // se superficie + else if ( ( nGeoType & GEO_SURF) != 0) { + // recupero la trimesh da visualizzare + const ISurfTriMesh* pSTM = nullptr ; + switch (nGeoType) { + case SRF_TRIMESH : pSTM = GetSurfTriMesh( pGeoObj) ; break ; + case SRF_FLATRGN : pSTM = GetSurfFlatRegion( pGeoObj)->GetAuxSurf() ; break ; + } if ( pSTM == nullptr) return false ; // recupero il materiale @@ -284,8 +293,8 @@ Scene::DrawGeoObj( const IGdbIterator& iIter, int nPass, const MdStMkCol& siObj) pGraphics->AddMaterial( mMat.GetAmbient(), mMat.GetDiffuse(), mMat.GetSpecular(), mMat.GetShininess()) ; pGraphics->AddBackMaterial( GetSurfBackColor( mMat.GetDiffuse())) ; - pGraphics->StartTriangles( pSTM->GetTriangleNum()) ; // ciclo sui triangoli della superficie + pGraphics->StartTriangles( pSTM->GetTriangleNum()) ; Triangle3d Tria ; TriFlags3d TFlags ; TriNormals3d TNrms ; @@ -308,6 +317,23 @@ Scene::DrawGeoObj( const IGdbIterator& iIter, int nPass, const MdStMkCol& siObj) } pGraphics->EndTriangles() ; } + // se superficie FlatRegion + else if ( nGeoType == SRF_FLATRGN) { + // recupero la superficie + const ISurfFlatRegion* pSFR = GetSurfFlatRegion( pGeoObj) ; + if ( pSFR == nullptr) + return false ; + // recupero il materiale + Material mMat ; + if ( ! iIter.GetCalcMaterial( mMat)) + mMat.Set( m_colDef) ; + // impostazioni iniziali + pGraphics->Clear() ; + pGraphics->AddColor( siObj.colObj) ; // per wireframe + pGraphics->AddMaterial( mMat.GetAmbient(), mMat.GetDiffuse(), + mMat.GetSpecular(), mMat.GetShininess()) ; + pGraphics->AddBackMaterial( GetSurfBackColor( mMat.GetDiffuse())) ; + } // se testo else if ( nGeoType == EXT_TEXT) { // recupero il testo diff --git a/SceneSelect.cpp b/SceneSelect.cpp index 64cabb5..c35049b 100644 --- a/SceneSelect.cpp +++ b/SceneSelect.cpp @@ -237,7 +237,7 @@ Scene::GetPointFromSelect( int nSelId, const Point3d& ptView, Point3d& ptSel, in { // recupera il punto di mira proiettato sull'oggetto appena selezionato // (va eseguito subito dopo la Select da cui si è derivato l'Id) - // è simile a GetSelectedSnapPoint + // è simile a FindSelectedSnapPoint // verifico parametri di ritorno if ( &ptSel == nullptr || &nAux == nullptr)