#include <iostream>
#ifdef gsOpennurbs_ENABLED
#endif
#ifdef gsOpenCascade_ENABLED
#endif
using namespace gismo;
template<class object>
{
if ( data.
has<
object >() )
{
gsInfo<<
"* There are "<< data.
count<
object >() <<
" "
<<data.
type<
object>()<<
" "<< data.
tag<
object>() <<
" in the file."<<
"\n";
memory::unique_ptr<object> o = data.
getFirst<
object >();
gsInfo<< " Read the first one in address "<< o.get() << "\n";
gsInfo<< " "<<*o ;
gsInfo<< " Write back to a new file \"dump_write.xml\"" << "\n";
newdata << *o ;
newdata.
save(
"dump_write");
}
}
int main(
int argc,
char *argv[])
{
#ifdef gsOpennurbs_ENABLED
gsInfo << "Using opennurbs.\n";
#endif
#ifdef gsOpenCascade_ENABLED
gsInfo << "Using OpenCascade.\n";
#endif
std::string fn;
gsCmdLine cmd(
"Hi, give me a file (.xml, .txt, .axl) and I will read the contents!");
cmd.addPlainString("filename", "Filename containing readable data (.xml or third party)", fn);
try { cmd.getValues(argc,argv); } catch (int rv) { return rv; }
if (fn.empty() )
{
gsInfo<< cmd.getMessage();
gsInfo<<"\nType "<< argv[0]<< " -h, to get the list of command line options.\n";
return 0;
}
gsInfo<<
"File contains "<< data.
numTags() <<
" objects, total size is "<< data.
bufferSize() <<
"\n";
gsInfo<< "Dumped all file data in dump.xml without allocating Gismo objects."<<"\n";
lookFor< gsBasis<> > (data) ;
lookFor< gsGeometry<> > (data) ;
lookFor< gsBSpline<> > (data) ;
lookFor< gsNurbs<> > (data) ;
lookFor< gsTensorBSpline<2,real_t> > (data) ;
lookFor< gsTensorBSpline<3,real_t> > (data) ;
lookFor< gsTensorNurbs< 2,real_t> > (data) ;
lookFor< gsTensorNurbs< 3,real_t> > (data) ;
lookFor< gsMesh<> > (data) ;
lookFor< gsSolid<> > (data) ;
lookFor< gsKnotVector<> > (data) ;
lookFor< gsMatrix<> > (data) ;
lookFor< gsSparseMatrix<> > (data) ;
lookFor< gsPoissonPde<> > (data) ;
lookFor< gsPlanarDomain<> > (data) ;
lookFor< gsCurveLoop<> > (data) ;
lookFor< gsTrimSurface<> > (data) ;
lookFor< gsMultiPatch<> > (data) ;
lookFor< gsFunctionExpr<> > (data);
lookFor< gsHBox<2,real_t> > (data);
lookFor< gsHBoxContainer<2,real_t> > (data);
#if defined(gsOpennurbs_ENABLED) || defined(gsOpenCascade_ENABLED)
{
<<" in the file.\n";
gsInfo<< " Read it ..\n";
gsInfo<< " "<<*o ;
#ifdef gsOpennurbs_ENABLED
gsInfo<< " Write back to pd.3dm\n";
extensions::writeON_PlanarDomain(*o,"pd");
#endif
}
{
<<" in the file.\n";
gsInfo<< " Read it ..\n";
gsInfo<< " "<<*o ;
#ifdef gsOpennurbs_ENABLED
gsInfo<< " Write back to mp.3dm\n";
extensions::writeON_MultiPatch(*o,"mp");
#endif
#ifdef gsOpenCascade_ENABLED
gsInfo<< " Write back to mp.igs\n";
extensions::writeON_MultiPatch(*o,"mp");
#endif
}
{
<<" in the file.\n";
gsInfo<< " Read it ..\n";
gsInfo<< " "<<*o ;
{
#ifdef gsOpennurbs_ENABLED
gsInfo<< " Write back to geo.3dm\n";
extensions::writeON_NurbsSurface(*srf,"geo");
#endif
#ifdef gsOpenCascade_ENABLED
gsInfo<< " Write back to geo.igs\n";
extensions::writeOcctIges(*srf,"geo");
gsInfo<< " Write back to geo.step\n";
extensions::writeOcctStep(*srf,"geo");
#endif
}
}
{
<<" in the file.\n";
gsInfo<< " Read it ..\n";
gsInfo<< " "<<*o ;
#ifdef gsOpennurbs_ENABLED
gsInfo<< " Write back to mesh.3dm\n";
extensions::writeON_Mesh(*o,"mesh");
#endif
}
#endif
return EXIT_SUCCESS;
}