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 HesperisInterface::ReadCurveData(CurveGroup * data) { if(!CheckFileExists()) return false; HesperisFile hes; hes.setReadComponent(HesperisFile::RCurve); hes.addCurve("curves", data); if(!hes.open(FileName)) return false; hes.close(); return true; }
bool HesperisInterface::ReadCurveData(GeometryArray * data) { if(!CheckFileExists()) return false; HesperisFile hes; hes.setReadComponent(HesperisFile::RCurve); if(!hes.open(FileName)) return false; hes.close(); hes.extractCurves(data); return data->numGeometries() > 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; }
bool BccWorld::readCurveDataFromFile() { if(BaseFile::InvalidFilename(BccGlobal::FileName)) return false; if(!BaseFile::FileExists(BccGlobal::FileName)) { BccGlobal::FileName = "unknown"; return false; } HesperisFile hes; hes.setReadComponent(HesperisFile::RCurve); hes.addCurve("curves", m_curves); if(!hes.open(BccGlobal::FileName)) return false; hes.close(); return true; }
bool BccWorld::readTriangleDataFromFile() { if(BaseFile::InvalidFilename(BccGlobal::FileName)) return false; if(!BaseFile::FileExists(BccGlobal::FileName)) { BccGlobal::FileName = "unknown"; return false; } HesperisFile hes; hes.setReadComponent(HesperisFile::RTri); if(!hes.open(BccGlobal::FileName)) return false; hes.close(); hes.extractTriangleMeshes(m_triangleMeshes); return true; }
bool SolverThread::readMeshFromFile() { if(BaseFile::InvalidFilename(FemGlobal::FileName)) return false; if(!BaseFile::FileExists(FemGlobal::FileName)) { FemGlobal::FileName = "unknown"; return false; } HesperisFile hes; hes.setReadComponent(HesperisFile::RTetra); hes.addTetrahedron("tetra", &m_meshData); if(!hes.open(FemGlobal::FileName)) return false; hes.close(); qDebug()<<" nt "<<m_meshData.m_numTetrahedrons; qDebug()<<" nv "<<m_meshData.m_numPoints; m_mesh->generateFromData(&m_meshData); return true; }
bool SahWorldInterface::readMeshFromFile(SahTetrahedronSystem * mesh) { if(BaseFile::InvalidFilename(SahGlobal::FileName)) return false; if(!BaseFile::FileExists(SahGlobal::FileName)) { SahGlobal::FileName = "unknown"; return false; } ATetrahedronMesh meshData; HesperisFile hes; hes.setReadComponent(HesperisFile::RTetra); hes.addTetrahedron("tetra_0", &meshData); if(!hes.open(SahGlobal::FileName)) return false; hes.close(); std::cout<<" nt "<<meshData.numTetrahedrons(); std::cout<<" nv "<<meshData.numPoints(); mesh->generateFromData(&meshData); return true; }
bool AdeniumInterface::readTriangleMeshFromFile(AdeniumWorld * world) { if(BaseFile::InvalidFilename(FileName)) return false; if(!BaseFile::FileExists(FileName)) { FileName = "unknown"; return false; } HesperisFile hes; hes.setReadComponent(HesperisFile::RTri); if(!hes.open(FileName)) return false; hes.close(); GeometryArray triangleMeshes; hes.extractTriangleMeshes(&triangleMeshes); if(triangleMeshes.numGeometries() < 1) return false; std::cout<<" n tri mesh "<<triangleMeshes.numGeometries(); world->addTriangleSystem(new BvhTriangleSystem((ATriangleMesh *)triangleMeshes.geometry(0))); return true; }
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; }