Added possibility of saving File in OFF format
This commit is contained in:
parent
239c1a5260
commit
541c26e601
|
@ -24,6 +24,10 @@
|
|||
History
|
||||
|
||||
$Log: not supported by cvs2svn $
|
||||
Revision 1.1 2005/09/20 10:15:27 rita_borgo
|
||||
Changed file name to uniform with other solution projects,
|
||||
before was main.cpp
|
||||
|
||||
Revision 1.8 2005/02/15 12:26:06 rita_borgo
|
||||
Minor changes to self-intersection
|
||||
|
||||
|
@ -66,8 +70,11 @@ using namespace std;
|
|||
#include <vcg/math/histogram.h>
|
||||
#include <wrap/io_trimesh/import.h>
|
||||
#include <wrap/io_trimesh/export_ply.h>
|
||||
#include <wrap/io_trimesh/export_stl.h>
|
||||
#include <wrap/io_trimesh/export_dxf.h>
|
||||
|
||||
#include "XMLTree.h"
|
||||
#include <wrap/io_trimesh/export_off.h>
|
||||
|
||||
|
||||
// loader
|
||||
|
@ -85,6 +92,8 @@ class MyVertex:public Vertex<float,MyEdge,MyFace>{};
|
|||
class MyFace :public FaceAFAV<MyVertex,MyEdge,MyFace>{};
|
||||
class MyMesh: public tri::TriMesh< std::vector<MyVertex>, std::vector<MyFace > >{};
|
||||
|
||||
string ans;
|
||||
|
||||
void OpenMesh(const char *filename, MyMesh &m)
|
||||
{
|
||||
int err = tri::io::Importer<MyMesh>::Open(m,filename);
|
||||
|
@ -123,6 +132,7 @@ public:
|
|||
|
||||
static int DuplicateVertex( MyMesh & m ) // V1.0
|
||||
{
|
||||
|
||||
if(m.vert.size()==0 || m.vn==0)
|
||||
return 0;
|
||||
std::map<VertexPointer, VertexPointer> mp;
|
||||
|
@ -147,12 +157,22 @@ static int DuplicateVertex( MyMesh & m ) // V1.0
|
|||
if( (! (*perm[i]).IsD()) &&
|
||||
(! (*perm[j]).IsD()) &&
|
||||
(*perm[i]).P() == (*perm[j]).cP() )
|
||||
{
|
||||
if(deleted ==0)
|
||||
{
|
||||
cout<< "\t Found Duplicated Vertices"<< endl;
|
||||
cout<< "\t do you want to remove them? [y/Y| n/N]\n";
|
||||
cin>>ans;
|
||||
}
|
||||
if((ans == "s") ||(ans=="S"))
|
||||
{
|
||||
VertexPointer t = perm[i];
|
||||
mp[perm[i]] = perm[j];
|
||||
++i;
|
||||
(*t).SetD();
|
||||
deleted++;
|
||||
m.vn--;
|
||||
}
|
||||
++i;
|
||||
deleted++;// per evitare che su risposta no rifaccia la domanda ad ogni vertice che incontra;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -160,14 +180,16 @@ static int DuplicateVertex( MyMesh & m ) // V1.0
|
|||
++i;
|
||||
}
|
||||
}
|
||||
ans.clear();
|
||||
return deleted;
|
||||
}
|
||||
void main(int argc,char ** argv){
|
||||
|
||||
char *fmt;
|
||||
|
||||
MyMesh m;
|
||||
bool DEBUG = true;
|
||||
|
||||
|
||||
/*------------XML file part ------------------*/
|
||||
|
||||
static char* XML_SCHEMA_NAME = "protegekb";
|
||||
|
@ -190,7 +212,7 @@ void main(int argc,char ** argv){
|
|||
|
||||
|
||||
if(DEBUG)
|
||||
argv[1] = "C:\\sf\\apps\\msvc\\trimeshinfo\\Release\\cube1.stl";
|
||||
argv[1] = "C:\\sf\\apps\\msvc\\trimeshinfo\\cube.ply";
|
||||
|
||||
else
|
||||
{
|
||||
|
@ -206,6 +228,8 @@ void main(int argc,char ** argv){
|
|||
OpenMesh(argv[1],m);
|
||||
|
||||
|
||||
|
||||
|
||||
doc.initializeMain(XML_SCHEMA_NAME);
|
||||
char* s1 = "http://www.w3.org/2001/XMLSchema-instance";
|
||||
char* s2 = new(char[50]);
|
||||
|
@ -260,6 +284,7 @@ void main(int argc,char ** argv){
|
|||
ng->addNode(osn);
|
||||
|
||||
|
||||
|
||||
if(m.HasPerFaceColor()||m.HasPerVertexColor())
|
||||
{
|
||||
Color4b Color=m.C();
|
||||
|
@ -411,7 +436,6 @@ void main(int argc,char ** argv){
|
|||
ng->addNode(osn);
|
||||
|
||||
|
||||
// DA QUI IN POI!!!
|
||||
|
||||
// DEGENERATED FACES
|
||||
|
||||
|
@ -931,7 +955,8 @@ void main(int argc,char ** argv){
|
|||
osn->setName("Oriented Mesh");
|
||||
osn->addEntry(*en);
|
||||
sn->addOwnSlot(osn);
|
||||
ng->addNode(osn); }
|
||||
ng->addNode(osn);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(index, "<p> Oriented Mesh: NO</p>");
|
||||
|
@ -948,12 +973,13 @@ void main(int argc,char ** argv){
|
|||
osn->setName("Oriented Mesh");
|
||||
osn->addEntry(*en);
|
||||
sn->addOwnSlot(osn);
|
||||
ng->addNode(osn); }
|
||||
ng->addNode(osn);
|
||||
}
|
||||
int dv = DuplicateVertex(m);
|
||||
if(dv>0)
|
||||
{
|
||||
fprintf(index, "<p> Duplicated vertices: %d</p>", dv);
|
||||
printf( "\t Duplicated vertices: %d\n",dv);
|
||||
printf( "\t Number of duplicated vertices found: %d\n",dv);
|
||||
s = new(char[25]);
|
||||
vn = new ValueNode;
|
||||
en = new EntryNode;
|
||||
|
@ -988,7 +1014,6 @@ void main(int argc,char ** argv){
|
|||
ng->addNode(osn);
|
||||
}
|
||||
// SELF INTERSECTION
|
||||
|
||||
if (m.fn<300000)
|
||||
{
|
||||
bool SelfInt=false;
|
||||
|
@ -1045,6 +1070,33 @@ void main(int argc,char ** argv){
|
|||
ng->addNode(osn);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
string fs;
|
||||
|
||||
cout<< "\t To save the file: [s/S]"<< endl;
|
||||
cin>>ans;
|
||||
|
||||
|
||||
if((ans == "S")||(ans == "s"))
|
||||
cout<< "\t available formats: [ply, off, stl] "<<endl;
|
||||
cout<< "\t enter format"<<endl;
|
||||
cin>>ans;
|
||||
cout<<"\t enter filename"<<endl;
|
||||
cin>>fs;
|
||||
const char* filesave = fs.c_str();
|
||||
if(ans == "ply")
|
||||
tri::io::ExporterPLY<MyMesh>::Save(m, filesave);
|
||||
else if(ans == "stl")
|
||||
tri::io::ExporterSTL<MyMesh>::Save(m,filesave);
|
||||
else if(ans == "dxf")
|
||||
tri::io::ExporterDXF<MyMesh>::Save(m,filesave);
|
||||
|
||||
else if(ans == "off")
|
||||
tri::io::ExporterOFF<MyMesh>::Save(m,filesave);
|
||||
|
||||
|
||||
doc.addSlots(sn);
|
||||
OwnSlotsNode* ossn = new OwnSlotsNode;
|
||||
ossn->addOwnSlot(ng);
|
||||
|
|
Loading…
Reference in New Issue