Exemple #1
0
MStatus HesperisCmd::writeSelectedCurve(const MSelectionList & selList)
{
	MItSelectionList iter( selList );
	
	MDagPathArray curves;
	MDagPathArray tms;
	
	for(; !iter.isDone(); iter.next()) {								
		MDagPath apath;		
		iter.getDagPath( apath );
		tms.append(apath);
		ASearchHelper::LsAllTypedPaths(curves, apath, MFn::kNurbsCurve);
	}
	
	if(curves.length() < 1) {
		MGlobal::displayInfo(" zero curve selction!");
		return MS::kSuccess;
	}
	
	HesperisFile hesf;
	bool fstat = hesf.create(m_fileName.asChar());
	if(!fstat) {
		MGlobal::displayWarning(MString(" cannot create file ")+ m_fileName);
		return MS::kSuccess;
	}
	
	HesperisIO::WriteTransforms(tms, &hesf);
	HesperisCurveIO::WriteCurves(curves, &hesf);
	
	writeMesh(&hesf);
	
	MGlobal::displayInfo(" done.");
	
	return MS::kSuccess;
}
Exemple #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;
}