diff --git a/src/Mod/Arch/Resources/ui/preferences-dae.ui b/src/Mod/Arch/Resources/ui/preferences-dae.ui
index e4694b3c3..1e13175d2 100644
--- a/src/Mod/Arch/Resources/ui/preferences-dae.ui
+++ b/src/Mod/Arch/Resources/ui/preferences-dae.ui
@@ -56,6 +56,246 @@
+ -
+
+
-
+
+
+ Mesher
+
+
+
+ -
+
+
+ The mesher to use. If using netgen, make sure netgen is enabled in the Mesh module
+
+
+ ColladaMesher
+
+
+ Mod/Arch
+
+
-
+
+ Builtin
+
+
+ -
+
+ Mefisto
+
+
+ -
+
+ Netgen
+
+
+
+
+
+
+
+
+
+ -
+
+
+ Builtin and mefisto mesher options
+
+
+
-
+
+
-
+
+
+ Tessellation
+
+
+
+ -
+
+
+ The tessellation value to use with the builtin and mefisto meshers
+
+
+ 4
+
+
+ 1.000000000000000
+
+
+ ColladaTessellation
+
+
+ Mod/Arch
+
+
+
+
+
+
+
+
+ -
+
+
+ Netgen mesher options
+
+
+
-
+
+
-
+
+
+ Grading
+
+
+
+ -
+
+
+ The grading value to use for netgen meshing
+
+
+ 4
+
+
+ 0.300000000000000
+
+
+ ColladaGrading
+
+
+ Mod/Arch
+
+
+
+
+
+ -
+
+
-
+
+
+ Segments per edge
+
+
+
+ -
+
+
+ The maximum number of segments per edge
+
+
+ 1
+
+
+ 1
+
+
+ ColladaSegsPerEdge
+
+
+ Mod/Arch
+
+
+
+
+
+ -
+
+
-
+
+
+ Segments per radius
+
+
+
+ -
+
+
+ The number of segments per radius
+
+
+ 1
+
+
+ 2
+
+
+ ColladaSegsPerRadius
+
+
+ Mod/Arch
+
+
+
+
+
+ -
+
+
-
+
+
+ Allow second order
+
+
+ Second order
+
+
+ ColladaSecondOrder
+
+
+ Mod/Arch
+
+
+
+
+
+ -
+
+
-
+
+
+ Allows optimization
+
+
+ Optimize
+
+
+ true
+
+
+ ColladaOptimize
+
+
+ Mod/Arch
+
+
+
+
+
+ -
+
+
-
+
+
+ Allow quad faces
+
+
+ Allow quads
+
+
+ ColladaAllowQuads
+
+
+ Mod/Arch
+
+
+
+
+
@@ -77,6 +317,21 @@
qPixmapFromMimeSource
+
+ Gui::PrefSpinBox
+ QSpinBox
+
+
+
+ Gui::PrefCheckBox
+ QCheckBox
+
+
+
+ Gui::PrefComboBox
+ QComboBox
+
+
Gui::PrefDoubleSpinBox
QDoubleSpinBox
diff --git a/src/Mod/Arch/importDAE.py b/src/Mod/Arch/importDAE.py
index f82568ec8..077e4702e 100644
--- a/src/Mod/Arch/importDAE.py
+++ b/src/Mod/Arch/importDAE.py
@@ -21,7 +21,7 @@
#* *
#***************************************************************************
-import FreeCAD, Mesh, os, numpy
+import FreeCAD, Mesh, os, numpy, MeshPart
if FreeCAD.GuiUp:
from DraftTools import translate
else:
@@ -45,6 +45,27 @@ def checkCollada():
return False
else:
return True
+
+def triangulate(shape):
+ "triangulates the given face"
+ p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch")
+ mesher = p.GetInt("ColladaMesher",0)
+ tessellation = p.GetFloat("ColladaTessellation",1.0)
+ grading = p.GetFloat("ColladaGrading",0.3)
+ segsperedge = p.GetInt("ColladaSegsPerEdge",1)
+ segsperradius = p.GetInt("ColladaSegsPerRadius",2)
+ secondorder = p.GetBool("ColladaSecondOrder",False)
+ optimize = p.GetBool("ColladaOptimize",True)
+ allowquads = p.GetBool("ColladaAllowQuads",False)
+ if mesher == 0:
+ return shape.tessellate(tessellation)
+ elif mesher == 1:
+ return MeshPart.meshFromShape(Shape=shape,MaxLength=tessellation).Topology
+ else:
+ return MeshPart.meshFromShape(Shape=shape,GrowthRate=grading,SegPerEdge=segsperedge,
+ SegPerRadius=segsperradius,SecondOrder=secondorder,Optimize=optimize,
+ AllowQuad=allowquads).Topology
+
def open(filename):
"called when freecad wants to open a file"
@@ -131,7 +152,7 @@ def export(exportList,filename,tessellation=1):
m = None
if obj.isDerivedFrom("Part::Feature"):
print "exporting object ",obj.Name, obj.Shape
- m = Mesh.Mesh(obj.Shape.tessellate(tessellation))
+ m = Mesh.Mesh(triangulate(obj.Shape))
elif obj.isDerivedFrom("Mesh::Feature"):
print "exporting object ",obj.Name, obj.Mesh
m = obj.Mesh