#!BPY
""" Released under the Blender Artistic Licence (BAL)
Name: 'Arbaro (POV-Ray .inc)'
Blender: 232
Group: 'Import'
Tooltip: 'Import Arbaro mesh (.inc)'
"""
__author__ = "pat"
__version__ = "1.0 - 09/12/04 -"
__email__ = ('Author, pat:psycho3d*de')
__url__ = ("Author's website, www.psycho3d.de")
__bpydoc__ ="""\
This script was written to import Arbaro created trees,
but can be used to import most POV-Ray mesh2 includefiles.
"""

from Blender import NMesh
from Blender.Window import FileSelector

### main procedure
def import_mesh2(filename):
  file = open(filename, "r")
  incfile = file.read()
  file.close()

  meshes = incfile.find("mesh2 {") + 7
  while meshes != 6:
    # import verts
    vertspart = incfile.find("vertex_vectors {", meshes) + 16
    partend = incfile.find("}", vertspart)
    vertlist = []
    vstart = incfile.find("<", vertspart, partend) + 1
    while vstart != 0:
      vend = incfile.find(">", vstart)
      v = incfile[vstart:vend].split(",")
      for j in range(3):
        v[j] = float(v[j])
      vertlist.append(NMesh.Vert(v[0],v[2],v[1]))
      vstart = incfile.find("<", vend, partend) + 1
    
    # import faces
    facepart = incfile.find("face_indices {", vertspart) + 14
    partend = incfile.find("}", facepart)
    facelist = []
    fstart = incfile.find("<", facepart, partend) + 1
    while fstart != 0:
      fend = incfile.find(">", fstart)
      f = incfile[fstart:fend].split(",")
      for j in range(3):
        # make f a list of verts
        f[j] = vertlist[int(f[j])]
      facelist.append(NMesh.Face(f))
      fstart = incfile.find("<", fend, partend) + 1

    # create blender mesh
    me = NMesh.New()
    me.verts.extend(vertlist)
    me.faces.extend(facelist)
    NMesh.PutRaw(me)
    
    # look for another mesh
    meshes = incfile.find("mesh2 {", meshes) + 7

### fileSelector callback
def f(filename):
  import_mesh2(filename)

##### script start #####
FileSelector(f, "Select Arbaro .inc")
