0001047: Collada export

This commit is contained in:
Yorik van Havre 2013-03-08 14:57:32 -03:00
parent df57e63b61
commit 1b016c4469

View File

@ -103,6 +103,7 @@ def export(exportList,filename):
"called when freecad exports a file" "called when freecad exports a file"
if not checkCollada(): return if not checkCollada(): return
colmesh = collada.Collada() colmesh = collada.Collada()
colmesh.assetInfo.upaxis = collada.asset.UP_AXIS.Z_UP
effect = collada.material.Effect("effect0", [], "phong", diffuse=(.7,.7,.7), specular=(1,1,1)) effect = collada.material.Effect("effect0", [], "phong", diffuse=(.7,.7,.7), specular=(1,1,1))
mat = collada.material.Material("material0", "mymaterial", effect) mat = collada.material.Material("material0", "mymaterial", effect)
colmesh.effects.append(effect) colmesh.effects.append(effect)
@ -110,7 +111,25 @@ def export(exportList,filename):
objind = 0 objind = 0
scenenodes = [] scenenodes = []
for obj in exportList: for obj in exportList:
if obj.isDerivedFrom("Mesh::Feature"): if obj.isDerivedFrom("Part::Feature"):
print "exporting object ",obj.Name, obj.Shape
m = obj.Shape.tessellate(1)
vindex = []
nindex = []
findex = []
# vertex indices
for v in m[0]:
vindex.extend([v.x,v.y,v.z])
# normals
for f in obj.Shape.Faces:
n = f.normalAt(0,0)
for i in range(len(f.tessellate(1)[1])):
nindex.extend([n.x,n.y,n.z])
# face indices
for i in range(len(m[1])):
f = m[1][i]
findex.extend([f[0],i,f[1],i,f[2],i])
elif obj.isDerivedFrom("Mesh::Feature"):
print "exporting object ",obj.Name, obj.Mesh print "exporting object ",obj.Name, obj.Mesh
m = obj.Mesh m = obj.Mesh
vindex = [] vindex = []
@ -145,8 +164,5 @@ def export(exportList,filename):
myscene = collada.scene.Scene("myscene", scenenodes) myscene = collada.scene.Scene("myscene", scenenodes)
colmesh.scenes.append(myscene) colmesh.scenes.append(myscene)
colmesh.scene = myscene colmesh.scene = myscene
myscene = collada.scene.Scene("myscene", [node])
colmesh.scenes.append(myscene)
colmesh.scene = myscene
colmesh.write(filename) colmesh.write(filename)
FreeCAD.Console.PrintMessage(str(translate("Arch","file %s successfully created.")) % filename) FreeCAD.Console.PrintMessage(str(translate("Arch","file %s successfully created.")) % filename)