Esempio n. 1
0
bool BccWorld::save()
{
	if(BaseFile::InvalidFilename(BccGlobal::FileName)) {
		std::cout<<" no specifc file to save\n";
		return false;
	}
	
	HesperisFile hes;
	hes.setWriteComponent(HesperisFile::WTetra);
	
#if 0	
	unsigned i = 0;
	for(; i < m_numMeshes; i++) {
		std::stringstream sst;
		sst<<"tetra_"<<i;
		hes.addTetrahedron(sst.str(), &m_meshes[i]);
	}
#else
	ATetrahedronMesh * cm = combinedTetrahedronMesh();
	hes.addTetrahedron("tetra_c", cm);
#endif	

	if(!hes.open(BccGlobal::FileName)) return false;
	hes.setDirty();
	hes.save();
	hes.close();
	
#if 0
#else
	delete cm;
#endif

	return true;
}
Esempio n. 2
0
bool BccInterface::saveWorld(BccWorld * world)
{
    if(world->numTetrahedronMeshes() < 1) {
        std::cout<<" no tetrahedron mesh to save";
        return false;
    }
    
	HesperisFile hes;
    if(!hes.open(FileName)) {
        
        GeometryArray * gmgeo = world->triangleGeometries();
        if(!gmgeo) {
            std::cout<<" no triangle mesh to save";
            return false;
        }
        
        hes.create(FileName);
        hes.setWriteComponent(HesperisFile::WTri);
        hes.addTriangleMesh("growmesh", (ATriangleMeshGroup *)gmgeo->geometry(0));
        hes.setDirty();
        hes.save();
	}
    
	hes.setWriteComponent(HesperisFile::WTetra);
	
	unsigned ntet, nvert, nstripe, nanchor;
	world->computeTetrahedronMeshStatistics(ntet, nvert, nstripe, nanchor);
	
	ATetrahedronMeshGroup * cm = new ATetrahedronMeshGroup;
	cm->create(nvert, ntet, nstripe);
	
	const unsigned n = world->numTetrahedronMeshes();
	
	ntet = 0;
	nvert = 0;
    nstripe = 0;
	unsigned i = 0;
	for(; i < n; i++) {
		ATetrahedronMeshGroup * imesh = world->tetrahedronMesh(i);
        cm->copyPointDrift(imesh->pointDrifts(), 
                              imesh->numStripes(), 
                              nstripe,
                              nvert);
        cm->copyIndexDrift(imesh->indexDrifts(), 
                              imesh->numStripes(), 
                              nstripe,
                              ntet*4);
        
		cm->copyStripe(imesh, nvert, ntet * 4);
		
		ntet += imesh->numTetrahedrons();
		nvert += imesh->numPoints();
        nstripe += imesh->numStripes();
	}
	float vlm = cm->calculateVolume();
	cm->setVolume(vlm);
	
	std::cout<<"\n combined all for save out ";
	cm->verbose();
	
	hes.addTetrahedron("tetra_c", cm);
	hes.setDirty();
	hes.save();
	hes.close();

	delete cm;
    
	return true;
}