3MF no longer fails when there is no transformation matrix

This commit is contained in:
Jaime van Kessel 2016-03-24 16:41:25 +01:00
parent 2cda0283c7
commit d3a6f63d1f

View file

@ -80,33 +80,35 @@ class ThreeMFReader(MeshReader):
transformation = root.findall("./3mf:build/3mf:item[@objectid='{0}']".format(object.get("id")), self._namespaces) transformation = root.findall("./3mf:build/3mf:item[@objectid='{0}']".format(object.get("id")), self._namespaces)
if transformation: if transformation:
transformation = transformation[0] transformation = transformation[0]
try:
if transformation.get("transform"):
splitted_transformation = transformation.get("transform").split()
## Transformation is saved as:
## M00 M01 M02 0.0
## M10 M11 M12 0.0
## M20 M21 M22 0.0
## M30 M31 M32 1.0
## We switch the row & cols as that is how everyone else uses matrices!
temp_mat = Matrix()
# Rotation & Scale
temp_mat._data[0,0] = splitted_transformation[0]
temp_mat._data[1,0] = splitted_transformation[1]
temp_mat._data[2,0] = splitted_transformation[2]
temp_mat._data[0,1] = splitted_transformation[3]
temp_mat._data[1,1] = splitted_transformation[4]
temp_mat._data[2,1] = splitted_transformation[5]
temp_mat._data[0,2] = splitted_transformation[6]
temp_mat._data[1,2] = splitted_transformation[7]
temp_mat._data[2,2] = splitted_transformation[8]
if transformation.get("transform"): # Translation
splitted_transformation = transformation.get("transform").split() temp_mat._data[0,3] = splitted_transformation[9]
## Transformation is saved as: temp_mat._data[1,3] = splitted_transformation[10]
## M00 M01 M02 0.0 temp_mat._data[2,3] = splitted_transformation[11]
## M10 M11 M12 0.0
## M20 M21 M22 0.0
## M30 M31 M32 1.0
## We switch the row & cols as that is how everyone else uses matrices!
temp_mat = Matrix()
# Rotation & Scale
temp_mat._data[0,0] = splitted_transformation[0]
temp_mat._data[1,0] = splitted_transformation[1]
temp_mat._data[2,0] = splitted_transformation[2]
temp_mat._data[0,1] = splitted_transformation[3]
temp_mat._data[1,1] = splitted_transformation[4]
temp_mat._data[2,1] = splitted_transformation[5]
temp_mat._data[0,2] = splitted_transformation[6]
temp_mat._data[1,2] = splitted_transformation[7]
temp_mat._data[2,2] = splitted_transformation[8]
# Translation node.setTransformation(temp_mat)
temp_mat._data[0,3] = splitted_transformation[9] except AttributeError:
temp_mat._data[1,3] = splitted_transformation[10] pass # Empty list was found. Getting transformation is not possible
temp_mat._data[2,3] = splitted_transformation[11]
node.setTransformation(temp_mat)
result.addChild(node) result.addChild(node)