diff --git a/EgtExch3dm.rc b/EgtExch3dm.rc index 710a43a..dc65dd6 100644 Binary files a/EgtExch3dm.rc and b/EgtExch3dm.rc differ diff --git a/Export3dm.cpp b/Export3dm.cpp index 9f8a7a4..ee1bbdc 100644 --- a/Export3dm.cpp +++ b/Export3dm.cpp @@ -507,16 +507,29 @@ Export3dm::ExportSTM( const string& sName, const IGdbIterator& iIter, const Fram // lo porto nel frame globale pSrfTm->ToGlob( frFrame) ; - int nVertices = pSrfTm->GetVertexCount() ; - int nTriangles = pSrfTm->GetTriangleCount() ; + int nVertices = pSrfTm->GetVertexSize() ; + int nTriangles = pSrfTm->GetTriangleSize() ; ON_Mesh* onMesh = new ON_Mesh ; + + bool bOk = true ; for ( int v = 0 ; v < nVertices ; ++v) { Point3d pt ; pSrfTm->GetVertex( v, pt) ; - onMesh->SetVertex( v, ConvertPoint( pt)) ; + bOk = onMesh->SetVertex( v, ConvertPoint( pt)) ; + if ( ! bOk) { + LOG_ERROR( GetEE3Logger(), "Export3dm SurfTm: Error adding vertex") + bOk = true ; + } } + bOk = true ; for ( int t = 0 ; t < nTriangles ; ++t) { - int nIdVert[3] ; pSrfTm->GetTriangle( t, nIdVert) ; - onMesh->SetTriangle( t, nIdVert[0], nIdVert[1], nIdVert[2]) ; + int nIdVert[3] ; + if ( ! pSrfTm->GetTriangle( t, nIdVert)) + continue ; + bOk = onMesh->SetTriangle( t, nIdVert[0], nIdVert[1], nIdVert[2]) ; + if ( ! bOk) { + LOG_ERROR( GetEE3Logger(), "Export3dm SurfTm: Error adding triangle") + bOk = true ; + } } ON_MeshVertexFaceMap onMeshVertMap ; onMeshVertMap.SetFromMesh( onMesh, false) ;