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; }
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; }