#!BPY """ Released under the Blender Artistic Licence (BAL) Name: 'POVtree (POV-Ray .inc)' Blender: 232 Group: 'Import' Tooltip: 'Import POVtree mesh (.inc)' """ __author__ = "pat" __version__ = "1.2a - 07/11/05 -" __email__ = ('Author, pat:psycho3d*de') __url__ = ("Author's website, www.psycho3d.de") __bpydoc__ ="""\ This script imports POVtree generated trees. Note:
You'll have to remove doubles after importing.
""" from Blender import NMesh from Blender.Window import FileSelector ### little helper def tri2face(text, mesh): f = NMesh.Face() i = 0 e = 0 for i in range(3): s = text.find("<", e) + 1 e = text.find(">", s) vertC = text[s : e].split(", ") vert = NMesh.Vert(float(vertC[0]), -float(vertC[2]), -float(vertC[1])) mesh.verts.append(vert) f.v.append(vert) mesh.faces.append(f) ### main procedure def import_POVtree(filename): file = open(filename, "r") incfile = file.read() file.close() folStart = incfile.find("#declare FOLIAGE") folEnd = incfile.find("#declare", folStart + 1) blosStart = incfile.find("#declare BLOSSOM") blosEnd = incfile.find("#declare", blosStart + 1) woodStart = incfile.find("#declare WOOD") woodEnd = incfile.find("#declare", woodStart + 1) if folStart != -1: foliage = NMesh.New() triEnd = folStart + 15 triStart = incfile.find("triangle", triEnd, folEnd) while triStart != -1: triEnd = incfile.find("}", triStart) tri2face(incfile[triStart:triEnd], foliage) triStart = incfile.find("triangle", triEnd, folEnd) NMesh.PutRaw(foliage) del foliage if blosStart != -1: blossom = NMesh.New() triEnd = blosStart + 15 triStart = incfile.find("triangle", triEnd, blosEnd) while triStart != -1: triEnd = incfile.find("}", triStart) tri2face(incfile[triStart:triEnd], blossom) triStart = incfile.find("triangle", triEnd, blosEnd) NMesh.PutRaw(blossom) del blossom if woodStart != -1: wood = NMesh.New() triEnd = woodStart + 12 triStart = incfile.find("triangle", triEnd, woodEnd) while triStart != -1: triEnd = incfile.find("}", triStart) tri2face(incfile[triStart:triEnd], wood) triStart = incfile.find("triangle", triEnd, woodEnd) NMesh.PutRaw(wood) ### fileSelector callback def f(filename): import_POVtree(filename) ##### script start ##### FileSelector(f, "Select POVtree .inc")