public void export_to_obj(string filename) { if (has_vertices() == false) { System.Windows.Forms.MessageBox.Show("No hay grafica para exportar."); return; } System.IO.StreamWriter writer = new System.IO.StreamWriter(filename); string buffer; // escribir encabezado writer.WriteLine("g laser_data_mesh"); MeshBuffer mbuffer = get_mesh_buffer(); // Escribir las coordenadas for (uint i = 0; i < mbuffer.VertexCount; i++) { Vertex3D vert = mbuffer.GetVertex(i); buffer = "v " + vert.Position.X.ToString() + " " + vert.Position.Y.ToString() + " " + vert.Position.Z.ToString(); writer.WriteLine(buffer); } // Escribir las normales for (uint i = 0; i < mbuffer.VertexCount; i++) { Vertex3D vert = mbuffer.GetVertex(i); buffer = "vn " + vert.Normal.X.ToString() + " " + vert.Normal.Y.ToString() + " " + vert.Normal.Z.ToString(); writer.WriteLine(buffer); } // Escribir los indices for (uint i = 0; i < mbuffer.IndexCount / 3; i++) { string i0 = (mbuffer.GetIndex(i * 3) + 1).ToString(); string i1 = (mbuffer.GetIndex(i * 3 + 1) + 1).ToString(); string i2 = (mbuffer.GetIndex(i * 3 + 2) + 1).ToString(); buffer = "f " + i0 + "//" + i0 + " " + i1 + "//" + i1 + " " + i2 + "//" + i2; writer.WriteLine(buffer); } writer.Close(); writer = null; }
public void export_to_vrml(string filename) { if (has_vertices() == false) { System.Windows.Forms.MessageBox.Show("No hay grafica para exportar."); return; } System.IO.StreamWriter writer = new System.IO.StreamWriter(filename); // escribir encabezado writer.WriteLine("DEF laser_data_node Transform {"); string buffer = "translation 0 0 0"; writer.WriteLine(buffer); buffer = "rotation 1.0 0 0 0"; writer.WriteLine(buffer); buffer = "scale 1.0 1.0 1.0"; writer.WriteLine(buffer); buffer = "children ["; writer.WriteLine(buffer); buffer = "DEF laser_data_mesh Group {"; writer.WriteLine(buffer); buffer = "children ["; writer.WriteLine(buffer); buffer = "Shape {"; writer.WriteLine(buffer); buffer = "appearance Appearance {}"; writer.WriteLine(buffer); buffer = "geometry IndexedFaceSet {"; writer.WriteLine(buffer); buffer = "solid TRUE"; writer.WriteLine(buffer); buffer = "coord DEF coord_Tube Coordinate {"; writer.WriteLine(buffer); buffer = "point ["; writer.WriteLine(buffer); // Escribir las coordenadas MeshBuffer mbuffer = get_mesh_buffer(); for (uint i = 0; i < mbuffer.VertexCount; i++) { Vertex3D vert = mbuffer.GetVertex(i); buffer = vert.Position.X.ToString() + " " + vert.Position.Y.ToString() + " " + vert.Position.Z.ToString(); writer.WriteLine(buffer); } buffer = "] } coordIndex ["; writer.WriteLine(buffer); // Escribir los indices for (uint i = 0; i < mbuffer.IndexCount / 3; i++) { ushort i0 = mbuffer.GetIndex(i * 3); ushort i1 = mbuffer.GetIndex(i * 3 + 1); ushort i2 = mbuffer.GetIndex(i * 3 + 2); buffer = i0.ToString() + " " + i1.ToString() + " " + i2.ToString() + " " + i.ToString() + " " + "-1"; writer.WriteLine(buffer); } buffer = "] } } ] } ] }"; writer.WriteLine(buffer); writer.Close(); writer = null; }