Arch: Added some preferences options to the MeshToShape command

This commit is contained in:
Yorik van Havre 2013-10-28 17:25:40 -02:00
parent 5d9259a36f
commit 13efa161b2
7 changed files with 620 additions and 356 deletions

View File

@ -237,7 +237,7 @@ def makeFace(wires,method=2,cleanup=False):
'''makeFace(wires): makes a face from a list of wires, finding which ones are holes'''
#print "makeFace: start:", wires
import Part
if not isinstance(wires,list):
if len(wires.Vertexes) < 3:
raise
@ -379,9 +379,9 @@ def getCutVolume(cutplane,shapes):
invcutvolume = cutface.extrude(cutnormal)
return cutface,cutvolume,invcutvolume
def getShapeFromMesh(mesh):
import Part, MeshPart
if mesh.isSolid() and (mesh.countComponents() == 1):
def getShapeFromMesh(mesh,fast=True,tolerance=0.001,flat=False,cut=True):
import Part, MeshPart, DraftGeomUtils
if mesh.isSolid() and (mesh.countComponents() == 1) and fast:
# use the best method
faces = []
for f in mesh.Facets:
@ -396,20 +396,33 @@ def getShapeFromMesh(mesh):
return solid
faces = []
segments = mesh.getPlanarSegments(0.001) # use rather strict tolerance here
segments = mesh.getPlanarSegments(tolerance)
#print len(segments)
for i in segments:
if len(i) > 0:
wires = MeshPart.wireFromSegment(mesh, i)
if wires:
if flat:
nwires = []
for w in wires:
nwires.append(DraftGeomUtils.flattenWire(w))
wires = nwires
try:
faces.append(makeFace(wires))
faces.append(makeFace(wires,method=int(cut)+1))
except:
return None
try:
se = Part.makeShell(faces)
se = se.removeSplitter()
if flat:
return se
except:
return None
try:
cp = Part.makeCompound(faces)
except:
return None
else:
return cp
else:
try:
solid = Part.Solid(se)
@ -436,16 +449,20 @@ def projectToVector(shape,vector):
minl = l
return DraftVecUtils.scaleTo(vector,maxl-minl)
def meshToShape(obj,mark=True):
'''meshToShape(object,[mark]): turns a mesh into a shape, joining coplanar facets. If
mark is True (default), non-solid objects will be marked in red'''
def meshToShape(obj,mark=True,fast=True,tol=0.001,flat=False,cut=True):
'''meshToShape(object,[mark,fast,tol,flat,cut]): turns a mesh into a shape, joining coplanar facets. If
mark is True (default), non-solid objects will be marked in red. Fast uses a faster algorithm by
building a shell from the facets then removing splitter, tol is the tolerance used when converting
mesh segments to wires, flat will force the wires to be perfectly planar, to be sure they can be
turned into faces, but this might leave gaps in the final shell. If cut is true, holes in faces are
made by subtraction (default)'''
name = obj.Name
if "Mesh" in obj.PropertiesList:
faces = []
mesh = obj.Mesh
plac = obj.Placement
solid = getShapeFromMesh(mesh)
solid = getShapeFromMesh(mesh,fast,tol,flat,cut)
if solid:
if solid.isClosed() and solid.isValid():
FreeCAD.ActiveDocument.removeObject(name)
@ -708,9 +725,14 @@ class _CommandMeshToShape:
if f.InList:
if f.InList[0].isDerivedFrom("App::DocumentObjectGroup"):
g = f.InList[0]
p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch")
fast = p.GetBool("ConversionFast",True)
tol = p.GetFloat("ConversionTolerance",0.001)
flat = p.GetBool("ConversionFlat",False)
cut = p.GetBool("ConversionCut",False)
FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Mesh to Shape")))
for obj in FreeCADGui.Selection.getSelection():
newobj = meshToShape(obj)
newobj = meshToShape(obj,True,fast,tol,flat,cut)
if g and newobj:
g.addObject(newobj)
FreeCAD.ActiveDocument.commitTransaction()

View File

@ -2,8 +2,8 @@
# Resource object code
#
# Created: Thu Oct 17 13:56:34 2013
# by: The Resource Compiler for PyQt (Qt v4.8.5)
# Created: Mon Oct 28 16:40:01 2013
# by: The Resource Compiler for PyQt (Qt v4.8.6)
#
# WARNING! All changes made in this file will be lost!
@ -27568,6 +27568,89 @@ qt_resource_data = "\
\x6c\x6c\x61\x64\x61\x20\x73\x75\x70\x70\x6f\x72\x74\x20\x77\x69\
\x6c\x6c\x20\x62\x65\x20\x64\x69\x73\x61\x62\x6c\x65\x64\x2e\x0a\
\x07\x00\x00\x00\x04\x61\x72\x63\x68\x01\
\x00\x00\x05\x06\
\x00\
\x00\x1b\xec\x78\x9c\xed\x59\x5b\x53\xdb\x38\x14\x7e\xe7\x57\x68\
\xfc\x4c\x6b\xa0\xc0\xb6\x19\xc7\x1d\x5a\xa0\x65\x06\xb6\x61\xc2\
\x76\x1f\x19\xc5\x3e\x89\xb5\x95\x25\xaf\x24\x93\xa4\xbf\x7e\x8f\
\x64\x27\xbe\xc4\x01\x4a\x08\xbb\xb3\xc3\x4c\x66\x62\x5d\x7c\xbe\
\xa3\xcf\xdf\x39\xba\x05\x1f\x67\x29\x27\x77\xa0\x34\x93\xa2\xef\
\xed\xbf\xdd\xf3\x08\x88\x48\xc6\x4c\x4c\xfa\xde\x1f\x37\xe7\x6f\
\xde\x7b\x1f\xc3\x9d\x20\x67\x55\xa7\x43\xec\x14\xee\x90\x20\xe2\
\x54\xeb\xf0\x4b\xce\x7a\xbd\x53\x46\xb9\x9c\xe0\x3f\x9f\x0c\xc1\
\x18\x7c\x59\x9f\xa8\x28\x09\xfc\xa2\x0f\x76\x9e\xb2\x78\x02\x86\
\xb8\x72\xdf\xbb\xfe\xd3\x15\x3d\x22\x68\x0a\x7d\xef\x3e\x1b\x16\
\x8a\x04\x99\x92\x19\x28\x33\x2f\x5f\x98\x80\x4c\xc1\xa8\xb9\x6b\
\x24\x81\x82\xc8\xb8\x27\x12\xcc\xc2\xbd\xc0\x9f\x95\x85\xb9\x2d\
\xcc\xcb\x02\x7a\x60\x92\xf0\xe8\xdd\x7e\xe0\x17\x8f\x45\x75\x02\
\x6c\x92\x98\xf0\xe8\xf0\x7d\xe0\x97\xcf\xce\xa6\xbf\x30\x1a\xf8\
\x0b\xf0\x2e\x4f\xa6\x4c\xc4\x72\x7a\xc3\x0c\x87\xd2\x19\x6d\x14\
\xfa\x1e\x7e\x01\x01\x8a\x72\xa2\xcb\xb1\x04\x7e\xd9\xb0\x6a\x92\
\xd3\xb9\xcc\x2b\x6e\xbe\x7f\x92\xb3\x4b\x57\x55\x5a\x6c\x41\xea\
\x8c\x46\x68\xc8\x2b\x07\x20\xf2\x74\x04\x2a\x3c\x0e\xfc\xf2\xa9\
\x70\xbf\x8e\xb0\x62\x22\xa5\x6a\xc2\x44\xcb\xc2\x87\x7b\x2d\x30\
\x03\x69\xc5\x64\xfd\x5b\x7e\x51\x32\xcf\xd0\xe7\xc5\xd7\x9c\x94\
\xe5\xdb\x83\x12\x60\x05\xde\x54\x74\xd5\x18\xbb\x38\xff\x4c\x58\
\x9a\x49\x65\xea\x5c\xad\xba\x72\x2f\x63\x25\x02\x8a\xd5\xb0\x88\
\xf2\x3a\x8f\xcd\x51\x74\x98\xf9\xba\x62\x26\x91\x8a\xfd\x94\xc2\
\x2c\x0c\xdd\x7e\x58\x9a\x6a\x1b\x5b\xe1\xc5\x89\x7a\xa0\x60\xfc\
\x39\x81\xe8\x47\x9d\x1f\xdb\x90\x61\x43\x64\x1b\x46\x48\xd4\x51\
\xcd\x6a\x07\x5b\x52\xf2\x1b\x96\x35\xfa\x2c\x49\x73\xc6\x89\x49\
\x98\x26\x46\x92\x98\xe9\x0c\x07\x45\x62\x18\xe5\x13\x92\x82\xd6\
\x74\x02\x9a\x4c\x13\xc6\xa1\xe4\x16\x5f\x22\x96\xe9\x31\x56\xe9\
\x16\xd1\xdd\x6c\x77\x3b\x05\x33\xd3\xed\xd1\x30\x91\xd3\x96\x03\
\x4f\x87\xb1\x34\x9d\x09\x1b\xe9\x44\x9b\x18\x63\xa9\xef\xed\xb5\
\x60\xa3\xd2\x36\x1b\x47\xa7\x16\x15\x93\xce\x26\x68\x03\x6a\x92\
\x87\xc1\xae\x64\xec\x97\x19\xee\x91\x60\x2e\xeb\xa0\x3c\x6a\xfa\
\xf1\x9b\x6a\xf4\x0b\x39\x2e\xb5\xda\x68\xde\x58\xb9\x47\xdb\x50\
\xee\xd3\x75\x7b\x31\x2e\x44\x8b\x3f\x67\x0c\xe2\xdd\x4a\x96\x64\
\xca\x38\x27\x94\x4f\xe9\x5c\x93\xd1\x42\xb9\x10\x63\xbd\x49\xf0\
\x3d\xac\x11\x06\x94\xc0\xf4\x9a\xcd\x4d\x22\x05\xc9\xa8\xd2\xa0\
\x76\x09\xdc\x81\x20\x6c\x4c\x2e\xc6\xd1\xb7\x0c\xc4\x30\x01\x34\
\x64\x61\x84\x46\x2a\x38\xc4\xdb\x50\xfc\xb9\x54\x11\x34\x3d\x79\
\x11\xc5\x8f\x2d\x2e\x8e\x74\xe0\x90\x07\x25\xf0\xab\xfa\x3b\xd4\
\xff\x6e\x2b\x79\xfb\x60\x83\xbc\xad\x80\x1a\x54\xba\x9b\x2c\x35\
\xc1\x4f\x49\x80\x46\x09\xb1\xb4\x12\x39\xfa\x0b\x17\x1f\xc4\xcc\
\x33\xd8\x86\x5e\xdd\x84\x4d\x22\x89\x51\x25\x40\x18\x0c\xb1\xb9\
\xc3\x7a\x99\x3c\x1d\xb9\x91\xa3\x6c\x9d\x1b\xfa\x55\xb0\x9d\x82\
\xdd\xdf\xdf\x8a\x62\x8f\x9f\x37\x63\xe3\xdb\xc2\x2e\x6e\x8b\x84\
\x5d\xcf\xd4\x54\x13\x9d\x8f\x8c\xa2\x91\xc1\x4d\x83\xc6\xae\x98\
\xb6\xd5\x94\x69\x20\x53\x4c\xc4\x44\x27\x34\xab\x12\x3d\x4a\x22\
\x9e\x93\x84\xde\x81\xcd\xee\x4c\x55\x86\x17\x46\xb6\x93\xb9\x87\
\x80\xe9\x1a\xd5\xb8\xc4\x7b\xa9\x95\xca\x02\xf8\xdb\x12\xf7\x35\
\x0a\xba\xa2\xe0\x60\x2b\x51\xf0\xdb\x33\x47\x41\x91\xae\xed\xdb\
\x55\x24\x58\x40\x36\xab\xaf\x59\xec\xf2\xe6\xe2\x94\x14\x7b\xac\
\x6d\xa8\x79\xe0\x20\x97\x7e\x20\xec\x33\xc0\xfd\x9a\xae\x0b\x17\
\x7e\x77\x98\xaf\xa2\x5e\x23\xea\x5f\x58\x8c\x5c\x5f\xd2\x11\xf0\
\x85\x29\x6e\x0b\xb7\x87\xf7\xab\x77\xad\x3c\xce\x66\x11\xcf\x63\
\x20\x9c\x69\xd3\x23\x8f\x56\xc4\x83\x74\x3d\x3a\x30\x2f\x99\x80\
\xb3\x98\x99\x95\xc0\xe4\xd8\x00\xb6\xe1\xc9\x61\x79\x62\x97\x33\
\x29\x7d\xa3\xcb\xbc\x1a\xbb\x51\x12\xe9\x76\x02\x04\x17\x39\xcc\
\x30\x70\x5b\x64\x28\x59\x18\x2b\x99\x76\x1f\x37\xac\xa7\xe2\xf1\
\x64\xfb\x4f\x90\x3c\xa7\x11\x24\x92\xc7\xa0\x6e\xd6\x7e\x43\x1c\
\xcd\x30\xc3\x7e\xbb\xf8\xf0\x29\x67\xdc\x9e\xd3\x9d\x71\x48\x71\
\x84\x03\x25\x67\x73\x5b\x7f\xce\xe5\xf4\x06\x54\xca\x70\x7f\xe4\
\xca\xb9\x12\x4c\x27\x55\xcf\x17\x9b\xe4\x7e\xb0\xec\x35\x07\x74\
\xe7\x80\xe3\xcd\x72\xc0\x03\x33\xd8\x7a\xfd\x38\xc1\xdb\xd5\x19\
\xce\x11\x09\xe8\xde\x7f\x31\x0d\x6c\xb2\xaf\xba\x27\x11\xe0\xf4\
\xeb\x76\x39\x38\x19\x53\x43\xd2\x1c\xab\x5b\x2b\xd6\x82\x93\x0d\
\xc2\xe3\x91\x21\xfc\xaf\x45\xe4\x89\xbe\xc2\x21\xfe\x2f\x63\xb2\
\xd9\xd8\xb0\x55\xeb\x57\x3f\xc6\xb6\xe7\xe8\xa0\x5a\x07\xc6\x2e\
\xbb\xaa\x75\x07\xd7\x18\xc6\xf8\xb5\xa8\xdd\xd2\x54\x67\xca\x80\
\x4b\xac\xf0\xda\xf4\x7a\xdf\x4b\x1b\x81\xef\xaa\x16\x7e\xb5\x0f\
\xaf\xdb\xc7\xf9\xec\x27\x7c\x65\xc2\x74\x51\x1a\xd8\xc6\x6a\xfc\
\xc5\xbd\xc5\xc1\x5e\xe3\x06\xc3\x36\x94\x17\x17\x87\x7b\x8d\x3b\
\x0c\x87\x5e\xb3\xd0\x76\x05\x1b\xdd\x68\x5b\x24\xd5\x98\xac\xd1\
\x58\x26\xb9\x18\xc6\x34\xe7\x86\x94\x97\x10\x7d\xef\xd8\x23\xc5\
\x6d\x42\xdf\xc3\x3d\xab\x9d\xf7\x82\x8c\xcd\x52\x9a\x8d\x73\xe1\
\xf6\x7e\xe1\xdf\x03\x57\x3e\xc7\x09\xf7\x8a\xa5\x30\x94\xb9\x8a\
\x00\x7d\x69\xf6\xb2\x17\x4a\x18\x92\x32\x2d\x10\xb5\xf3\xa4\x5e\
\x53\x78\x59\xbb\x74\xaa\xaf\xf5\xab\x9b\x26\xfb\x41\x66\x06\x44\
\xac\xc3\xeb\xaa\x75\x51\xb5\x53\xb0\x45\x31\x42\xad\x11\xdf\xda\
\x28\xee\xa2\xf4\xdb\xc4\x92\xe7\x5a\x1c\x09\x6d\xec\x87\x9d\x59\
\x24\xb6\x6e\x67\xaa\xd6\xcd\x9d\x69\x56\xb8\x0b\x36\x05\xda\x11\
\xab\xdd\x27\x88\xa4\x10\x50\x6c\xbd\xb1\x1c\xf8\x39\x0b\x77\xfe\
\x01\x15\x5b\x54\x03\
\x00\x00\x0a\xde\
\x00\
\x00\x64\x81\x78\x9c\xed\x5c\xeb\x6f\xdb\xc8\x11\xff\xee\xbf\x82\
@ -28435,159 +28518,147 @@ qt_resource_data = "\
\x1e\x36\xfe\x2d\x43\xff\x7a\xf8\xbd\xbe\x1e\x7e\xf3\x9d\x7a\xbb\
\x78\x41\xbc\x16\x48\x68\xa6\xea\x7f\x91\x33\xba\xb9\x7c\x73\x6e\
\xff\x13\xc9\xe5\x9b\xff\x03\x51\x32\xf5\xb2\
\x00\x00\x09\x6c\
\x00\x00\x08\xac\
\x00\
\x00\x64\xd6\x78\x9c\xed\x5d\x6d\x77\x9b\xb8\x12\xfe\xde\x5f\xa1\
\xe3\xcf\xdd\xf8\x2d\x71\xe3\x1c\xc7\x7b\xda\xa6\x69\x73\x4f\x7b\
\x9b\x6e\x72\xbb\x1f\xf7\xc8\x30\x36\xda\x02\x62\x85\x88\xed\xfd\
\xf5\x77\x24\xb0\x31\x18\x43\x0c\x76\x88\x13\xe7\xec\x9e\x02\x92\
\x67\x46\xe2\x99\xd1\x33\x83\x8c\x07\xbf\xcf\x1c\x9b\x3c\x80\xf0\
\x19\x77\x2f\x1b\xed\x93\x56\x83\x80\x6b\x70\x93\xb9\x93\xcb\xc6\
\xff\xee\xaf\x7f\x3b\x6f\xfc\x3e\x7c\x33\x08\x58\xdc\xe9\x14\x3b\
\x0d\xdf\x90\x81\x61\x53\xdf\x1f\x7e\x0e\xd8\xc5\xc5\x15\xa3\x36\
\x9f\xe0\xbf\xf6\xe4\x0e\xa4\xc4\x0f\xfb\xef\x85\x61\x0d\x9a\x61\
\x1f\xec\x3c\x65\xe6\x04\x24\xd1\xe7\x97\x8d\x1f\x7f\xea\xd3\x06\
\x71\xa9\x03\x97\x8d\x3c\x19\x4a\x15\x19\x78\x82\x7b\x20\xe4\x3c\
\xfa\xc0\x04\xb8\x03\x52\xcc\x75\x23\x19\x08\x30\xa4\x3e\x22\x83\
\xd9\xb0\x35\x68\xce\xa2\x93\xb9\x3a\x99\x47\x27\x68\x81\xb4\x86\
\x67\xbd\xf6\xa0\x19\x1e\x86\x97\x2d\x60\x13\x4b\x0e\x7b\xa7\xdd\
\x41\x33\x3a\xd6\x32\x9b\x0b\xa1\x83\xe6\x42\x79\x96\x25\x53\xe6\
\x9a\x7c\x7a\xcf\xa4\x0d\x91\x31\xbe\x14\x68\xfb\xf0\x33\xb8\x20\
\xa8\x4d\xfc\x68\x2c\x83\x66\xd4\xb0\x2e\xd2\xa6\x73\x1e\xc4\x73\
\xf3\xf3\x03\x9f\x7d\xd5\x97\x22\x89\x29\x95\xbe\x47\x0d\x14\xd4\
\x88\x06\xe0\x06\xce\x08\xc4\xb0\x37\x68\x46\x47\xa1\xf9\xab\x1a\
\xd6\x44\x38\x54\x4c\x98\x9b\x92\xd0\xcf\x95\xc0\x24\x38\xf1\x4c\
\xae\xde\xcb\xcf\x82\x07\x1e\xda\xbc\xb8\x9b\x93\xc5\x79\xd8\x7d\
\x4d\xb9\x8c\x27\x6b\x65\xbe\xae\x60\x4c\x03\x5b\x66\xce\xd7\xba\
\x39\xb9\xb3\x16\xe9\x41\xc0\x4a\x66\x50\x3b\xbc\xfa\x57\x27\x56\
\x19\x8f\x25\x43\xd0\x97\x35\x41\x16\x17\xec\x5f\xee\xca\x0c\x51\
\x69\x61\xeb\xb3\xf3\x95\x8e\xc0\x5e\x48\xb2\xd5\x49\xe2\xe3\x19\
\xd3\x03\x33\x99\xe8\xb0\x9c\xa2\x3f\xa9\x6d\xa7\xa6\x25\x7b\x6e\
\xc2\x8b\xa1\x21\x2b\x96\x36\x93\xa6\xae\x59\xae\x80\x05\x62\x6d\
\xd0\x77\xfa\x72\xae\xcd\xd8\x17\xb0\xab\xc4\xf8\x90\x32\x1d\x10\
\x52\xc3\x1f\xf2\xe2\xe2\xcb\x52\xde\xa0\xa9\x2f\x16\x0d\x60\x1d\
\xf7\xec\x5f\xf8\xc2\x5c\xbc\x2d\xbe\x34\x11\x26\x97\x8d\x56\x7a\
\x9e\xb0\x47\xe2\xca\xc2\xeb\x4f\x5b\x09\xa7\x5f\xb6\x46\x0e\xdf\
\x69\x25\x7c\x3f\x36\x2b\x2d\x70\xc3\x4c\x87\x13\xb7\xc5\x4c\x17\
\x63\xa4\xdd\x2a\x0b\x12\x35\xcc\x8b\x7d\xc2\x24\x69\xbc\x8e\xdd\
\xb7\x02\xc6\x57\x3c\x18\xd9\x70\xe7\x31\x77\x35\x16\xa8\x56\x0f\
\x5b\x4d\xdd\xea\x63\xeb\x88\xcf\x0a\x3c\xc0\xa1\x33\xe6\x04\x4e\
\x6a\x7c\xa1\x84\x61\x1f\xff\x4e\xfa\xe7\xfd\xe5\xdf\xbb\xf3\xce\
\xa0\x19\x35\x6e\x8d\xa9\x07\x6a\x07\x90\xad\xa8\xd3\x6a\x9d\xb4\
\x92\x7f\xe5\xf5\xa8\x29\xf8\xe4\xaa\x15\x6b\x23\x78\x8d\x15\x2f\
\xd7\x37\x11\x57\xcf\x47\xde\xc4\x4c\x75\xb7\x54\x5a\xc5\xda\xbe\
\x71\xb3\x19\x2d\xd5\x4f\x85\x98\x2c\xb8\x9f\x97\x44\xfb\x17\xed\
\xb5\xcf\x1d\xee\xdd\x03\x80\x7b\xb7\x55\x23\xde\xc3\xdb\xf8\x9a\
\x00\xdf\x2f\x09\xf8\x8f\xdc\xe6\xa2\x0e\xbc\x6b\xc5\x1f\x02\x29\
\x71\x89\x4f\xa3\xdd\x50\x6d\xa3\xb0\x2d\x77\x58\x9c\xdb\xf7\xcc\
\xcb\x1e\xd9\xbd\xc5\x7c\x82\xff\x49\x0b\x88\x19\x91\x41\x2d\x98\
\x8c\xf1\x7f\x17\xa6\x44\x21\x85\xf0\xd1\xdf\x48\xcc\xd3\xf4\x70\
\x0b\xa8\x68\x99\x69\x70\xa8\x6b\x29\x6e\x20\xc0\x1c\x76\xda\xa7\
\x2a\x11\x30\x53\x4d\x13\x01\xe0\x86\x8d\xe1\x61\xb2\x79\x84\x4e\
\x16\xb6\xea\xa3\x24\xa5\x58\x53\xb5\x17\x87\xd2\x77\xeb\x50\xfd\
\x69\xd0\x0c\x29\xf9\x92\xaf\x27\x9a\xab\xb2\xf7\x4a\xdc\xbd\xa4\
\xd7\xde\x49\x11\x18\x32\x10\x50\x1b\x7d\x2f\xa0\x5c\x47\x02\xbf\
\x73\x02\x5f\x36\xcb\xfb\x0a\xee\xe4\xf9\x33\xf8\xd3\x03\xa0\x34\
\xed\x9a\x18\xcd\xd2\xdb\xc3\x5b\x79\xa8\x61\xb8\x14\xea\xf3\xa9\
\xee\x81\xa7\xad\x67\x47\xd0\x17\x83\xfe\xd5\xe5\xae\xed\xfc\x58\
\x78\xe8\xc9\x6b\xef\x30\x40\x5f\x33\xea\x5f\x5f\x06\xdb\x6e\xbf\
\xd0\x14\xb6\xa8\x3e\x5f\x2d\x89\x5d\x22\xe6\x69\x33\xd9\xf6\x59\
\x6b\x73\x26\xdb\xee\xf5\x73\x32\xd9\xf6\x79\xaf\xa6\x4c\x76\x39\
\x57\xc7\x74\x76\xf3\xc3\xa8\xd5\xd5\xa7\x8c\x1b\xe7\xc7\xf7\xcd\
\x6e\xfc\x07\x8c\xa8\xa8\x2f\x9f\xcd\xe7\x62\xc7\x7c\x76\xe7\xf9\
\x6c\xd9\x12\xfd\x15\xc3\x0e\x12\xf6\x0a\x95\x1d\xd0\x9c\xfc\xe1\
\x15\xd1\x9c\x93\x7e\x7f\x95\x7b\xf4\xf7\xc2\x72\x7a\xb5\x50\x1c\
\xed\xe7\xf1\x4d\x3c\xcc\x18\x5c\x0a\xf1\x65\x6b\xf4\xdf\xc7\x63\
\x1c\xdf\x33\xc7\xfb\xbb\xe7\x8f\xf7\x6e\x3d\x9c\x5e\x03\x7e\x71\
\x0f\x5f\x11\xdc\xf3\x11\x71\xc0\x7c\x3e\x9f\x2a\x6c\xc5\xa2\xcf\
\xcf\x72\x58\x74\xfb\x5d\x0e\x8b\xee\xb7\x6a\x22\xd1\x1a\xce\x47\
\x02\xbd\x99\x40\xf7\xaa\x11\xe8\x7c\x74\xe5\x55\x3c\xd5\xce\xc1\
\xfa\x08\x74\x7e\xd5\xea\x48\xa0\x77\x4d\xa0\x3b\xa5\xb7\xfd\x1d\
\x42\x69\xbc\x68\xbf\x5a\x7e\xd1\x24\x2e\x96\xe8\x7b\xba\x2c\x96\
\x84\xbb\x6b\x2b\x94\x48\x0a\xcb\x93\x09\x26\x73\xd6\xe9\xee\x87\
\xc9\xd4\x56\x9f\x0c\x83\xcc\xab\x2b\xc9\x77\xca\xd6\x26\x0f\xa3\
\x24\x5f\x90\x98\x3c\xd6\xd7\xc2\x00\x79\x74\xb6\xdd\x3a\xdb\xeb\
\x7b\x12\xd0\x29\xbb\x57\xf9\xde\x62\xc6\x2f\x17\x7c\xff\xb9\x3b\
\x5c\xd1\xb3\x8e\xc7\x7a\x9c\x5c\x0c\xf8\x25\x3a\x5d\x8d\x3e\xb7\
\x04\xd2\xa1\xba\xdd\x9e\x53\x9c\x76\xee\x43\x82\xfc\x3c\x21\xff\
\xf9\xc0\x31\x4f\xd8\x75\x9e\x50\xf6\x79\xcc\xb5\xc0\x0e\xe1\xc3\
\xc6\xe7\x5c\x8c\xc9\xdf\x20\xb4\x4d\x31\xa6\xdb\xdd\x5c\x8b\x39\
\x3d\xcb\x29\xc5\xf4\xea\x7a\x9e\x19\x06\xab\x83\xae\xc5\x94\xaa\
\x2c\x96\x2d\x91\x7c\x56\x32\x9f\x3f\xa4\xf3\x2b\x29\xdb\x40\xba\
\x9f\x03\xe9\xf6\x79\x37\x6f\xbb\x79\xab\x5b\x2b\xa8\xf5\xad\x3a\
\x68\x64\xef\x7b\x09\x6e\xe5\x2d\xc1\x9b\x10\x68\x81\xf1\x2b\x8b\
\x9e\x1a\xaa\xa1\xf8\xb1\x65\x2e\x31\xbd\x19\x2b\x3e\xaa\xb7\xab\
\x68\x71\x60\xbe\x25\x53\x0b\x5c\xd2\x21\x3e\x73\x98\x4d\x05\x99\
\x52\xdb\xf6\x09\x15\x40\x46\x80\x1f\x41\x57\x74\x5d\x30\xa4\xea\
\x29\x71\xd9\x14\x24\x70\x4d\x10\xf6\x5c\xb5\xf9\xbf\x40\xa2\x1c\
\x1f\x29\xad\x6d\x63\x7f\xf2\x37\x67\x2e\x98\x04\xd7\x6d\x4e\xb8\
\x0b\x6f\x09\x75\x4d\xbd\x31\x46\x4e\x79\x24\x39\xea\x6a\x70\x5c\
\xb9\xb0\x4b\x79\x16\xbc\x39\x86\xfc\x07\xad\x88\xb4\x8d\xa8\x0f\
\x2b\x66\xaa\xa1\x7a\xdc\xf7\x19\x72\xd4\xf2\x9a\xb7\xf0\x14\x35\
\x21\xea\xcb\x19\x77\x91\x09\x2f\xd2\x53\x92\x8d\x09\x59\x2b\xfd\
\x4a\x7c\x9d\x3c\xde\x96\xf5\xb8\x2f\x94\xdf\x5c\x7f\x24\xcc\xf1\
\xb8\x48\x3f\x89\xad\xfc\x55\xf2\xc6\xce\x82\x42\x7f\x2f\x31\xa1\
\x60\xb9\xcd\x8b\x09\x5a\x78\x18\x16\xd0\x6b\x4d\xe6\x7b\x38\x28\
\x4c\x5f\x47\xc1\x84\x38\x98\x5f\xd1\x89\xf6\x1c\x66\x43\x34\xb7\
\xca\xf3\xd5\x4c\x8f\xf1\x52\x85\x2c\x36\xe7\xab\x33\x16\x9f\xa6\
\x0c\x78\x12\x67\x65\x63\xe3\x4a\x69\x7d\x91\x4e\x5a\x1d\xb9\x67\
\xfb\x40\xee\x6e\xd7\xb2\x25\x2c\xc3\x65\x86\xda\x53\x3a\xf7\xd5\
\xc2\x14\x22\x17\x97\xa6\x29\x93\x96\x5e\x91\x70\x8d\x02\xe1\x52\
\x9b\x78\x73\x69\x71\x5c\x16\xa8\xf0\x41\xbc\x25\xf0\x80\x6b\x04\
\x1b\x93\x9b\xb1\xf1\xdd\x03\xf7\xce\x02\x14\xa4\xd4\xb8\x3e\x4e\
\x85\x0d\xe6\x3e\x10\x7f\xcd\x85\x01\x49\x4b\x9e\x04\xf1\x63\xa5\
\x17\x47\x7a\xab\x35\xdf\x46\x8a\x8f\xe8\xcf\x40\x7f\x77\x2f\x71\
\xbb\xc2\xbe\xe3\x8f\x02\xa8\x44\xa4\xeb\xc5\x32\xac\x2e\x02\x35\
\x2c\xa2\xa6\x35\xda\x68\x4c\xe4\xdc\xdb\x0b\xc3\xd2\x0b\x36\x52\
\x43\xf4\x2a\x17\x5c\x89\x2e\x36\xd7\xba\x9e\x26\x4e\x1b\x7a\xe4\
\x08\x5b\x6d\xc6\xcb\xe4\x54\x3b\xc8\x3e\xda\x7b\x41\x6c\x41\xad\
\x6a\xdb\x88\x8d\x9f\x76\xb1\x2d\x4e\x21\x96\x91\x9a\xfa\xc4\x0f\
\x46\x52\x50\x43\x55\x1a\x7d\xec\x8a\x61\x5b\x4c\x19\x12\x7a\xc5\
\xed\x89\x6f\x51\x2f\x0e\xf4\x08\x09\x73\x4e\x2c\xfa\x00\x51\x9a\
\xb2\x14\xbc\x10\xb2\x9f\xc8\x7d\x07\x18\xae\x11\x8d\x4b\x7d\x4f\
\xc5\x54\x16\x8a\xbf\x2f\xf5\x1e\xbd\x20\xcb\x0b\xb6\x78\x71\xd3\
\x16\x5e\x50\xb0\x71\x6e\x6b\x2f\x08\xc3\xb5\xfa\x74\xec\x09\x4a\
\x21\x9b\xad\x72\x16\x45\x6f\x6e\xae\x48\xf8\xca\xae\x7d\xa0\xf9\
\x56\xab\x5c\xda\x81\x6a\x77\xa0\x6e\x3b\x5c\x87\x26\xfc\x57\xeb\
\x3c\x82\x7a\x03\xa8\xb7\x20\x23\x59\xd5\xd9\xb2\xdf\x5e\xfc\x34\
\x33\xec\xc0\x04\x62\x33\x5f\x5e\x90\x1a\xca\xb3\x5f\x99\x0b\x9f\
\x4c\x26\xd7\x1c\xd3\xc6\x06\x50\x0d\xa5\xdd\xf2\xbd\xa2\x33\x0e\
\xfd\xcd\x8f\xe2\xaa\xa9\x47\x49\xb8\xce\x04\x08\x92\x1c\x26\x19\
\xe8\x14\x19\xa2\x59\x18\x0b\xee\x64\x97\x1b\x36\x4f\xc5\xe3\x27\
\xbb\x59\x02\xf2\x36\x35\xc0\xe2\xb6\x09\xe2\x7e\xe3\x3d\xc4\xd1\
\xe8\xa7\x7c\x6f\xf1\xe0\x43\xc0\x6c\xf5\xda\xc7\x4f\x36\x38\x38\
\xc2\x5b\xc1\x67\x73\x75\xfd\xda\xe6\xd3\x7b\x10\x0e\xc3\xfc\x48\
\x9f\x07\xc2\x65\xbe\x15\xf7\x7c\xb2\x45\xee\x17\xf3\x8e\x31\x20\
\x3b\x06\x54\xdc\xc3\x5a\x76\xeb\xf7\x8d\x06\xbc\x62\x67\xb8\x46\
\x58\x50\xcb\x3e\x8e\xc2\x30\x50\x25\xaf\xca\x09\x04\xb8\xfc\xea\
\x2c\x07\x17\x63\x2a\x89\x13\xe0\xe5\x14\x63\x0d\xe7\xa4\x82\x7b\
\x3c\xd2\x85\x6b\xf3\xc8\xf7\xfe\x37\x1c\xe2\x8b\xf4\xc9\xfd\x95\
\xb1\x97\xcb\xf5\xe3\xca\xd8\x9d\x2b\x22\x40\x3d\x65\xc1\x93\x9d\
\xbf\x13\x35\xa6\x0e\x95\x43\xd0\xbb\xbd\x50\xeb\x02\x72\x92\xe7\
\xba\x2b\x85\x63\xe6\x8e\xb9\x70\xf4\x26\x15\x62\x06\xaa\x95\xe4\
\x4c\xeb\x16\xf8\x2d\x28\x5b\x87\x1a\x40\xd4\x51\xbf\x56\x06\xfc\
\xfc\xe3\xdb\xb1\x86\xbd\x19\xb2\xe7\xd5\x16\xcd\xb2\xaf\xba\xf9\
\x88\x56\x52\x01\xb8\x40\xa8\x15\x6a\x65\x4f\xa0\x50\x08\xad\xef\
\x0b\x21\xf9\xe3\x39\x6e\xf4\xaa\xb2\xd1\xab\xcc\xae\xd3\x0a\xa1\
\xcf\x03\x83\x8d\x55\x86\xa2\xa2\x90\x43\xdd\x39\x91\xcc\x81\xf0\
\xb5\x14\x0f\x0c\xa6\x9a\xc7\x24\xb0\xb7\xe0\x2f\xd4\xf3\x6c\x86\
\xcd\x98\xda\x18\x88\x53\xd5\xab\x42\xbc\xca\x7b\xbd\x6e\x2d\xdb\
\x45\xd1\xf7\x14\x5f\x7c\x5d\xfb\x45\x13\x6e\xbf\x60\x00\x6b\x6f\
\xf5\x7e\xa4\xc3\xc7\xee\xfe\x33\x92\x94\x76\xf6\xac\x11\x6d\xe9\
\xe8\x6b\x6e\x1e\x39\x79\x27\xcb\xc9\x17\x2e\x7e\x9a\xe5\xe2\x69\
\x07\xcf\x30\x2e\xed\xdc\xdb\xf3\xc0\x95\x4e\x2b\x3d\xa2\x15\x69\
\xb1\xf7\x3b\x7a\x6d\xff\x65\xa3\xd7\x20\xe1\xfb\xf7\x2f\x1b\xed\
\x76\x43\xa5\xf6\x03\x8f\xcd\x1c\xea\x8d\x03\x57\x97\xb7\x87\xff\
\xdc\xea\xf3\x6b\xc1\x9d\x6f\xe8\xb7\x77\x3c\x10\x06\xa0\xe5\xc9\
\x5e\xea\x27\x18\xd0\x6b\xb9\x13\x6a\xf4\xb5\x25\xab\x57\x42\x2b\
\x57\x7e\xa6\x61\x65\x43\x5b\xfc\xd3\x0c\xea\x96\xce\x24\x32\x15\
\x7f\xf8\xe3\x36\xf0\xad\x45\xfb\xe2\xe2\x9b\x70\x8a\x29\x32\x19\
\x25\xa5\x19\xfe\x74\x83\x7f\x62\xa9\xd9\xd6\x57\xf5\x0c\xa4\x15\
\xe7\x5b\x92\xda\x5e\x97\x69\xcd\xba\xc9\x9b\x4c\x52\xd2\x76\x67\
\x56\x44\x4a\xb3\x67\x28\x6e\x7d\x12\x63\x16\xc9\x6d\xb6\x31\x71\
\xeb\x93\x18\x93\x58\xbb\xb2\x2d\x4a\x75\xa9\x6e\x56\xf2\x82\xfe\
\x29\x11\x01\xbe\x76\x08\x5f\xbb\x4e\xb4\x25\x4d\x3d\x15\xc2\xf3\
\x41\x33\x60\xc3\x37\xff\x07\x0b\x4f\x8f\x28\
\x00\x5a\xde\x78\x9c\xed\x5c\x6d\x73\xda\x38\x10\xfe\xde\x5f\xa1\
\xe1\x73\x1b\x30\x84\x24\x64\x08\x9d\x5e\x72\x6d\xef\x26\x9d\x6b\
\x9b\x5c\xfa\xf1\x46\xd8\x02\xab\xb5\x25\x4e\x92\x0b\xe9\xdc\x8f\
\xbf\x95\x6c\xf0\x0b\x20\x82\x81\x38\x24\x64\xee\xa6\xd8\x12\xab\
\xd5\xfa\xd9\xd5\xb3\x2b\xe1\xee\xdb\x49\x18\xa0\x9f\x44\x48\xca\
\xd9\x45\xcd\x39\x6a\xd4\x10\x61\x2e\xf7\x28\x1b\x5e\xd4\xfe\xbe\
\x7d\xff\xe6\xac\xf6\xb6\xf7\xaa\x1b\xd1\xb4\xd3\x31\x74\xea\xbd\
\x42\x5d\x37\xc0\x52\xf6\x3e\x44\xf4\xfc\xfc\x8a\xe2\x80\x0f\xe1\
\xdf\x60\x78\x43\x94\x82\x2f\xcb\x77\xc2\xf5\xbb\xf5\xb8\x0f\x74\
\x1e\x53\x6f\x48\x14\x32\xd7\x17\xb5\x2f\xdf\xcc\x65\x0d\x31\x1c\
\x92\x8b\x9a\x4d\x86\x1e\x0a\x75\x47\x82\x8f\x88\x50\xf7\xc9\x17\
\x86\x84\x87\x44\x89\x7b\xd3\x88\xba\x82\xb8\xca\x7c\x42\xdd\x49\
\xaf\xd1\xad\x4f\x92\x8b\x7b\x7d\x71\x9f\x5c\x80\x06\xca\xef\xb5\
\x4f\x9d\x6e\x3d\xfe\x18\xdf\xf6\x09\x1d\xfa\xaa\xd7\x6e\x37\xbb\
\xf5\xe4\xb3\x91\x59\x9f\x0a\xed\xd6\xa7\x83\x2f\xd2\x64\x4c\x99\
\xc7\xc7\xb7\x54\x05\x24\x51\x46\x2a\x01\xba\xf7\x3e\x10\x46\x04\
\x0e\x90\x4c\xe6\xd2\xad\x27\x0d\xf3\x22\x03\x7c\xcf\xa3\xd4\x36\
\x77\xbf\xf1\xc9\xb5\xb9\x95\x48\x2c\x0c\x29\x47\xd8\x05\x41\xb5\
\x64\x02\x2c\x0a\xfb\x44\xf4\x4e\xba\xf5\xe4\x53\xac\x7e\x76\x84\
\x39\x11\x21\x16\x43\xca\x0a\x12\x3a\x56\x09\x54\x91\x30\xb5\x64\
\xf6\x59\x7e\x10\x3c\x1a\x81\xce\xd3\xa7\x39\x9c\x5e\xc7\xdd\xe7\
\x06\x57\xa9\xb1\x32\xf6\xba\x22\x03\x1c\x05\x6a\xa1\xbd\xe6\xd5\
\xb1\x5a\x2d\x19\x07\x00\xab\xa8\x8b\x83\xf8\xee\x3f\xcd\x74\xc8\
\x74\x2e\x0b\x04\x7d\x9c\x13\xe4\x73\x41\x7f\x71\xa6\x16\x88\x2a\
\x0a\x9b\xb7\xce\x35\xee\x93\x60\x2a\x29\xd0\x17\xb9\xaf\x2f\x30\
\x0f\x99\xa8\x5c\x87\x99\x89\xbe\xe1\x20\x28\x98\x65\xb1\x6d\xe2\
\x9b\xb1\x22\x19\x4d\xeb\x79\x55\xe7\x34\xd7\xc0\x22\x62\x6e\xd2\
\x37\xe6\xb6\x55\x67\xe8\x4b\xa0\xab\x82\xf8\x50\x50\x9d\x00\xa4\
\x7a\x5f\xd4\xf9\xf9\xc7\x99\xbc\x6e\xdd\xdc\x5c\x35\x81\x79\xdc\
\xd3\x5f\xe4\x23\x65\xf0\x58\xa4\xf2\x00\x26\x17\xb5\x46\xd1\x4e\
\xd0\x23\x77\x67\xea\xf5\xc7\x8d\x9c\xd3\xcf\x5a\x13\x87\x6f\x36\
\x72\xbe\x9f\xaa\x55\x14\xb8\xc4\xd2\xb1\xe1\xd6\xb0\xf4\x6a\x8c\
\x38\x8d\xb2\x20\xd1\xd3\x3c\xdf\x25\x4c\xf2\xca\x9b\xd8\xfd\x59\
\x90\xc1\x15\x8f\xfa\x01\xb9\x19\x51\x96\x8d\x05\xba\x75\x04\xad\
\x9e\x69\x95\xd0\xda\xe7\x93\x15\x1e\x10\xe2\x09\x0d\xa3\xb0\x30\
\xbf\x58\x42\xaf\x03\x7f\x47\x9d\xb3\xce\xec\xef\xf4\x0c\x22\x77\
\xd2\xb8\x36\xa6\x7e\xe2\x20\x22\x8b\x07\x6a\x36\x1a\x47\x8d\xfc\
\x5f\xf9\x71\xb4\x09\x7e\x67\x7a\xc5\x5a\x0a\x5e\x37\xe3\xe5\xe6\
\x21\xc2\xea\xf9\xc0\x87\xb8\x70\xb8\xcf\x58\xf9\xab\x47\xfb\xc4\
\xbd\x7a\xb2\x54\x3f\x16\x62\x16\xc1\xfd\xac\x24\xda\x3f\x1a\xaf\
\x7d\xea\x70\x6f\xed\x01\xdc\x5b\x8d\x0a\xf1\x1e\x3f\xc6\x97\x04\
\xf8\x4e\x49\xc0\x5f\xf2\x80\x8b\x2a\xf0\x6e\x06\xfe\x2d\x52\x0a\
\x96\xf8\x22\xda\x5d\xdd\xd6\x8f\xdb\xac\xd3\xe2\x3c\xb8\xa5\xa3\
\xc5\x33\xbb\xf5\xa9\x44\xf0\x9f\xf2\x09\xf2\x12\x32\x68\x04\xa3\
\x01\xfc\xcf\xc8\x18\x69\xa4\x20\xde\xff\x0e\xc4\xbc\x48\x0f\xd7\
\x80\x8a\x91\x59\x04\x87\xbe\x57\xe0\x06\x82\x78\xbd\xa6\x73\xac\
\x13\x01\xaf\xd0\x34\x14\x84\xb0\xb8\x31\xfe\x98\x6f\xee\x83\x93\
\xc5\xad\xe6\x53\x9e\x52\xcc\x0d\xb5\x13\x87\x32\x4f\x6b\x5f\xfd\
\xa9\x5b\x8f\x29\xf9\x8c\xaf\xe7\x9a\x37\x65\xef\x1b\x71\xf7\x92\
\x5e\x7b\xa3\x44\xe4\xaa\x48\x90\xca\xe8\xfb\x0a\xca\x75\x20\xf0\
\x5b\x27\xf0\x65\xb3\xbc\x6b\xc2\x86\x4f\x9f\xc1\x1f\xef\x01\xa5\
\x71\x2a\x62\x34\x33\x6f\x8f\x1f\xe5\xbe\x86\xe1\x52\xa8\xb7\x53\
\xdd\x3d\x4f\x5b\xdb\x07\xd0\xaf\x06\xfd\x8b\xcb\x5d\x1d\x7b\x2c\
\xdc\xf7\xe4\xf5\x64\x3f\x40\x5f\x31\xea\x5f\x5e\x06\xeb\x38\xcf\
\x34\x85\x5d\x55\x9f\xdf\x2c\x89\x9d\x21\xe6\x71\x33\x59\xa7\xdd\
\x58\x9e\xc9\x3a\x27\x1d\x4b\x26\xeb\x9c\x9d\x54\x94\xc9\xce\x6c\
\x75\x48\x67\x97\x6f\x46\x65\x57\x9f\x32\x6e\x6c\x8f\xef\xcb\xdd\
\xf8\x2b\xe9\x63\x51\x5d\x3e\x6b\xe7\x62\x87\x7c\x76\xeb\xf9\x6c\
\xd9\x12\xfd\x15\x85\x0e\x8a\xec\x14\x2a\x5b\xa0\x39\xf6\xe9\xad\
\xa2\x39\x47\x9d\x4e\x96\x7b\x74\x76\xc2\x72\x4e\x2a\xa1\x38\xc6\
\xcf\xd3\x87\xb8\x9f\x31\xb8\x14\xe2\xcb\xd6\xe8\xff\x1a\x0c\x60\
\x7e\x4f\x1c\xef\xa7\x4f\x1f\xef\xad\x6a\x38\xbd\x01\xfc\xf4\x19\
\xbe\x20\xb8\xdb\x11\xb1\xc7\x7c\xde\x4e\x15\xd6\x62\xd1\x67\x6d\
\x0b\x8b\x76\x4e\x2d\x2c\xba\xd3\xa8\x88\x44\x1b\x38\x1f\x08\xf4\
\x72\x02\x7d\xb2\x19\x81\xb6\xa3\xcb\x56\xf1\xd4\x27\x07\xab\x23\
\xd0\xf6\xaa\xd5\x81\x40\x6f\x9b\x40\x37\x4b\x1f\xfb\xdb\x87\xd2\
\xf8\xaa\xf3\x6a\xf6\xa2\x49\x5a\x2c\x31\xcf\x74\x56\x2c\x89\x4f\
\xd7\x6e\x50\x22\x59\x59\x9e\xcc\x31\x99\x76\xb3\xb5\x1b\x26\x53\
\x59\x7d\x32\x0e\x32\x2f\xae\x24\xdf\x2c\x5b\x9b\xdc\x8f\x92\xfc\
\x8a\xc4\xe4\xa1\xbe\x16\x07\xc8\x83\xb3\x6d\xd7\xd9\x5e\xde\x4e\
\x40\xb3\xec\x59\xe5\x5b\x9f\xba\x3f\x18\x91\xf2\xa9\x3b\xdc\xaa\
\xbd\x8e\x87\x7a\x9c\x9a\x4e\xf8\x39\x3a\x5d\x85\x3e\x37\x03\xd2\
\xbe\xba\xdd\x8e\x53\x1c\xc7\xba\x49\x60\xcf\x13\xec\xfb\x03\x87\
\x3c\x61\xdb\x79\x42\xd9\xfd\x98\xf7\x02\x3a\xc4\x9b\x8d\x4f\xb9\
\x18\x63\x3f\x20\xb4\x4e\x31\xa6\xd5\x5a\x5e\x8b\x39\x6e\x5b\x4a\
\x31\x27\x55\xed\x67\xc6\xc1\x6a\xaf\x6b\x31\xa5\x2a\x8b\x65\x4b\
\x24\x1f\xb4\xcc\xa7\x0f\x69\x7b\x25\x65\x1d\x48\x77\x2c\x90\x76\
\xce\x5a\xb6\xe3\xe6\x8d\x56\xa5\xa0\x36\x8f\x6a\xaf\x91\xbd\xeb\
\x25\xb8\x61\x5b\x82\x97\x21\xd0\x27\xee\x8f\x45\xf4\xd4\xd5\x0d\
\xab\xb7\x2d\xad\xc4\xf4\x8f\x81\xe6\xa3\xe6\xb8\x8a\x11\x47\xbc\
\xd7\x68\xec\x13\x86\x9a\x48\xd2\x90\x06\x58\xa0\x31\x0e\x02\x89\
\xb0\x20\xa8\x4f\xe0\x2b\xe0\x8a\x8c\x11\x57\xe9\x9e\x0a\x96\x4d\
\x81\x22\xe6\x11\x11\xdc\xeb\x36\xf9\x83\x28\x90\x23\x81\xd2\x06\
\x01\xf4\x47\xdf\x39\x65\xc4\x43\xb0\x6e\x73\xc4\x19\x79\x8d\x30\
\xf3\xcc\xc1\x18\x35\xe6\x89\xe4\xa4\xab\xcb\x61\xe5\x82\x2e\xe5\
\x59\xf0\xf2\x18\xf2\x27\x68\x91\x8c\xd6\xc7\x92\x64\xd4\xd4\x53\
\x1d\x71\x29\x29\x70\xd4\xf2\x23\xaf\xe1\x29\xda\x20\xfa\xc7\x19\
\x37\x89\x0a\xcf\xd2\x53\xf2\x8d\x39\x59\x99\x7e\x25\x7e\x4e\x9e\
\x1e\xcb\x7a\xd8\x0f\xca\x3f\x11\xe9\x23\x80\xde\x8d\x8f\x47\x04\
\x5d\x72\x96\xbc\xc0\x60\xdb\x3f\x2c\xaf\x6d\x2d\x44\xb4\x77\x11\
\x21\xb6\x1b\x1f\xdc\x99\x19\xf5\xed\x01\x96\x0a\x12\x07\x58\x06\
\x8d\x5f\x0b\x22\x75\x92\x1b\x9a\xaa\x92\x54\xda\xb7\x5d\x3d\x3f\
\x70\x40\x90\x88\xd9\x30\x0a\x30\xc4\x0e\xf8\x9a\x4b\x36\xc8\x78\
\x2d\x14\x18\xf4\xc9\xa8\xb8\xc1\xc9\xba\x78\xbe\x85\x51\xfa\x60\
\xad\x9e\x12\x11\x44\x0b\xf3\x71\x97\xb1\x22\xc5\xab\x9e\xd4\xbe\
\x46\x8a\x32\x6c\xb1\xec\x36\xf4\x2d\x0f\x88\xc0\xcc\x25\x0f\xa7\
\x8a\x73\xd2\x71\x40\x87\x2c\x84\x84\xb6\x38\x04\xcc\x51\xa7\xb2\
\xef\x74\xfb\x57\x8d\xef\xff\x66\x97\xb7\x02\xd3\x00\x46\x4b\xef\
\xdc\x5d\x82\x04\x73\xe0\x89\xa8\xdd\xdb\xb0\x5c\x41\x6b\x93\x33\
\xae\x53\x43\x23\x53\x0f\xd2\x31\x36\x82\x85\xd5\xac\xa7\xc6\x71\
\x34\x1b\xa0\x03\xa0\x11\xd8\xfb\x0e\xae\xce\x54\xec\xf1\x08\x4b\
\x34\x0a\x30\x5b\xe3\xd4\xe0\x9c\x62\x1e\x71\x69\x88\x03\x59\xd0\
\x2c\x79\x6f\xc9\x71\xee\x0d\x26\x6b\x09\xb6\x94\xb6\x74\x61\xcb\
\x79\xf4\xc2\x56\x1a\x00\x66\xf6\x7e\xae\x51\x60\x0d\xba\xbb\x01\
\x6c\x17\x2d\x67\x03\x58\x90\x90\x21\x18\x12\xf1\x41\x02\xd3\x29\
\x7f\x1d\x70\xe1\x92\x37\xba\x8b\x22\x4c\xf7\x8e\xd7\x37\x83\xee\
\x94\x39\xa2\x21\x86\x2f\x6b\x6a\xcb\x38\x7b\x23\x79\x40\xbd\xa4\
\xe3\x6e\x96\x38\xad\x54\xac\xf7\x86\xcb\x68\xb9\xc5\x08\x06\x3e\
\xc0\x70\x45\x11\x6b\x6d\x18\xfa\xe0\xe1\x52\x83\x2a\x0f\x40\x90\
\x09\x18\x0c\x81\x31\xf5\xef\x91\x8c\xfa\x4a\x60\x57\x17\x5a\x91\
\x00\x13\x02\xef\x52\x3e\x66\x10\x7a\x35\x20\xc7\x14\x30\x87\x32\
\xc5\xd8\x5d\x60\xef\x12\x78\x5e\x48\x94\xcf\xbd\xe7\xc1\xac\x60\
\x3e\xfb\x8a\xe5\x8a\x52\xb0\xd6\x7a\x29\x58\xf3\x0a\x42\xa1\xae\
\x10\xc0\xc5\xd6\xdf\xe7\xd5\xda\x5e\xe2\x75\xba\x8b\xc4\x6b\x45\
\x59\xd0\x1a\x24\x6e\x7c\x3e\x46\x1e\xe9\x47\x7a\xa9\xd1\x31\xc0\
\xf8\x34\xf2\x22\xdd\x8a\x2c\x66\x5d\x03\xbf\x96\xb7\x15\xe8\xd1\
\xe3\x11\x20\xca\xc4\x6a\x84\x44\x4a\x3c\x7c\xa4\xf5\x46\x2b\x70\
\xf7\xf5\xd3\x95\x1e\xf9\x59\x7a\xe8\xe6\x90\x3d\x7b\x38\x64\x17\
\x25\x59\x65\x7f\xa6\xad\x97\x00\x2c\x08\x30\x79\x48\x79\x48\x66\
\x3f\x5b\x68\x84\x56\x77\x98\xd1\x3e\x9f\xc3\x26\xe5\x26\x9b\x94\
\x65\x12\xcc\x0d\x42\xdf\x08\x52\xbc\x01\x05\x36\xa3\xa3\x50\x88\
\xd9\x3d\x52\x14\xa2\x8f\xa9\x30\xfd\xa4\x64\x0c\x74\xa8\x80\xbd\
\x30\x92\x4a\xf3\x25\x3c\x1a\x05\x14\x9a\x21\x21\x75\x01\xa7\xba\
\xd7\x06\xf1\xca\xf6\x6a\xb8\x4a\x8e\x3a\x80\xef\x5d\xc3\x94\x9e\
\xf7\x59\x87\xf5\xb9\x4b\x2e\x30\x4c\x39\x42\xfe\x9d\x95\x0f\x89\
\x07\x69\x28\xb8\x4b\x64\xe4\x02\xc1\x3c\x5f\x59\xc3\xfd\xf3\x9e\
\x9f\x38\x7d\x73\xce\xe9\xa7\xfe\x7e\x3c\xe7\xef\x39\x57\x2f\xaa\
\x92\x73\xf0\xd4\x48\x19\x4b\x66\xcc\x98\x2c\x35\xd3\x03\x49\xc9\
\xbb\x64\x2f\x6a\x27\x35\x14\xbf\x14\xf6\xa2\xe6\x38\xb5\xba\xee\
\x39\xa2\x93\x10\x8f\x06\x11\x33\x49\x47\xef\xdf\xcf\xe6\xfa\xbd\
\xe0\xe1\x27\x70\xc8\x1b\x1e\x09\x5d\x92\x28\xf4\xd2\xef\x05\x06\
\x77\xe4\x61\x3c\xa2\x34\x9a\x64\xef\xc4\x5a\x66\xde\x1d\x9c\xd9\
\x65\x4d\xdf\x17\xac\x9f\xc7\x04\xd2\x6e\x4f\xf6\xbe\x7c\x8e\xa4\
\x3f\x6d\x9f\xde\x7c\x15\x9b\x0b\x03\x45\xd1\x52\xea\xf1\xfb\x84\
\xe5\x91\xaf\x2d\x67\xee\x1a\x0b\x14\x07\xb6\x6b\x52\xd8\xf3\x5d\
\xa8\xcd\xbc\xca\xcb\x54\xd2\xd2\xb6\xa7\x56\xc2\x36\x17\x5b\x28\
\x6d\x7d\x14\x65\x72\xeb\xc0\x62\x8d\x0a\x5d\x36\x57\x2b\x7f\xc3\
\xbc\x52\x1a\x32\x5e\x83\x41\x69\xd0\x9a\x6c\x4d\x02\x06\xf5\x75\
\xb7\x1e\xd1\xde\xab\xff\x01\xd3\x61\xa1\xe6\
\x00\x00\x09\xf8\
\x00\
\x00\x54\x69\x78\x9c\xed\x5c\xeb\x6f\xdb\xc8\x11\xff\xee\xbf\x82\
@ -35199,6 +35270,11 @@ qt_resource_name = "\
\x06\x36\xb8\xbd\
\x00\x41\
\x00\x72\x00\x63\x00\x68\x00\x5f\x00\x70\x00\x74\x00\x2d\x00\x50\x00\x54\x00\x2e\x00\x71\x00\x6d\
\x00\x13\
\x02\xfa\xd0\x59\
\x00\x61\
\x00\x72\x00\x63\x00\x68\x00\x70\x00\x72\x00\x65\x00\x66\x00\x73\x00\x2d\x00\x69\x00\x6d\x00\x70\x00\x6f\x00\x72\x00\x74\x00\x2e\
\x00\x75\x00\x69\
\x00\x1a\
\x07\xdf\xa8\x87\
\x00\x50\
@ -35414,7 +35490,7 @@ qt_resource_name = "\
qt_resource_struct = "\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x01\
\x00\x00\x00\x10\x00\x02\x00\x00\x00\x07\x00\x00\x00\x41\
\x00\x00\x00\x10\x00\x02\x00\x00\x00\x08\x00\x00\x00\x41\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x26\x00\x00\x00\x1b\
\x00\x00\x00\x1a\x00\x02\x00\x00\x00\x17\x00\x00\x00\x04\
\x00\x00\x01\x2e\x00\x00\x00\x00\x00\x01\x00\x02\x9d\x23\
@ -35440,51 +35516,52 @@ qt_resource_struct = "\
\x00\x00\x01\x14\x00\x00\x00\x00\x00\x01\x00\x02\x52\xbc\
\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x01\x00\x01\xbc\xaa\
\x00\x00\x02\x3e\x00\x00\x00\x00\x00\x01\x00\x05\x84\xf1\
\x00\x00\x06\x4e\x00\x01\x00\x00\x00\x01\x00\x07\x8a\x20\
\x00\x00\x09\x3a\x00\x01\x00\x00\x00\x01\x00\x08\x43\xfe\
\x00\x00\x09\x1a\x00\x00\x00\x00\x00\x01\x00\x08\x30\x3c\
\x00\x00\x09\xce\x00\x00\x00\x00\x00\x01\x00\x08\x5d\xde\
\x00\x00\x08\xec\x00\x01\x00\x00\x00\x01\x00\x08\x29\x5b\
\x00\x00\x04\x50\x00\x01\x00\x00\x00\x01\x00\x07\x08\x4b\
\x00\x00\x04\x7e\x00\x01\x00\x00\x00\x01\x00\x07\x0f\x20\
\x00\x00\x05\x0e\x00\x01\x00\x00\x00\x01\x00\x07\x2e\x5e\
\x00\x00\x08\x7c\x00\x01\x00\x00\x00\x01\x00\x08\x13\x63\
\x00\x00\x07\xe0\x00\x01\x00\x00\x00\x01\x00\x07\xe6\x19\
\x00\x00\x05\x3c\x00\x00\x00\x00\x00\x01\x00\x07\x37\xb6\
\x00\x00\x07\x02\x00\x01\x00\x00\x00\x01\x00\x07\xa5\xe9\
\x00\x00\x04\xa2\x00\x01\x00\x00\x00\x01\x00\x07\x17\xc3\
\x00\x00\x05\x68\x00\x00\x00\x00\x00\x01\x00\x07\x49\x85\
\x00\x00\x06\x2e\x00\x01\x00\x00\x00\x01\x00\x07\x82\x58\
\x00\x00\x08\xca\x00\x01\x00\x00\x00\x01\x00\x08\x20\x62\
\x00\x00\x07\x2e\x00\x01\x00\x00\x00\x01\x00\x07\xac\xac\
\x00\x00\x09\x92\x00\x01\x00\x00\x00\x01\x00\x08\x54\x2b\
\x00\x00\x04\xc4\x00\x01\x00\x00\x00\x01\x00\x07\x20\xb1\
\x00\x00\x0a\x08\x00\x01\x00\x00\x00\x01\x00\x08\x6c\x4d\
\x00\x00\x05\xba\x00\x01\x00\x00\x00\x01\x00\x07\x60\xb5\
\x00\x00\x08\x5c\x00\x01\x00\x00\x00\x01\x00\x08\x0a\xf5\
\x00\x00\x06\xd4\x00\x01\x00\x00\x00\x01\x00\x07\xa0\x99\
\x00\x00\x07\x84\x00\x01\x00\x00\x00\x01\x00\x07\xc9\xd9\
\x00\x00\x0a\x2c\x00\x00\x00\x00\x00\x01\x00\x08\x76\x7c\
\x00\x00\x04\x28\x00\x01\x00\x00\x00\x01\x00\x06\xff\xe6\
\x00\x00\x05\x98\x00\x01\x00\x00\x00\x01\x00\x07\x58\xf3\
\x00\x00\x09\x64\x00\x01\x00\x00\x00\x01\x00\x08\x4c\x43\
\x00\x00\x07\x5a\x00\x00\x00\x00\x00\x01\x00\x07\xb7\xd6\
\x00\x00\x08\xa0\x00\x01\x00\x00\x00\x01\x00\x08\x18\x7a\
\x00\x00\x06\xa8\x00\x01\x00\x00\x00\x01\x00\x07\x98\x1f\
\x00\x00\x08\x12\x00\x01\x00\x00\x00\x01\x00\x07\xee\x5b\
\x00\x00\x06\x02\x00\x01\x00\x00\x00\x01\x00\x07\x79\x59\
\x00\x00\x04\xee\x00\x01\x00\x00\x00\x01\x00\x07\x28\x46\
\x00\x00\x07\xa6\x00\x00\x00\x00\x00\x01\x00\x07\xd4\xa4\
\x00\x00\x08\x32\x00\x00\x00\x00\x00\x01\x00\x07\xf8\x95\
\x00\x00\x05\xe4\x00\x00\x00\x00\x00\x01\x00\x07\x6a\x5d\
\x00\x00\x06\x74\x00\x01\x00\x00\x00\x01\x00\x07\x90\xcf\
\x00\x00\x03\xf2\x00\x01\x00\x00\x00\x01\x00\x06\xf5\xea\
\x00\x00\x02\xec\x00\x01\x00\x00\x00\x01\x00\x06\xc1\xdf\
\x00\x00\x03\xca\x00\x01\x00\x00\x00\x01\x00\x06\xec\x7a\
\x00\x00\x06\x7a\x00\x01\x00\x00\x00\x01\x00\x07\x8e\x6a\
\x00\x00\x09\x66\x00\x01\x00\x00\x00\x01\x00\x08\x48\x48\
\x00\x00\x09\x46\x00\x00\x00\x00\x00\x01\x00\x08\x34\x86\
\x00\x00\x09\xfa\x00\x00\x00\x00\x00\x01\x00\x08\x62\x28\
\x00\x00\x09\x18\x00\x01\x00\x00\x00\x01\x00\x08\x2d\xa5\
\x00\x00\x04\x7c\x00\x01\x00\x00\x00\x01\x00\x07\x0c\x95\
\x00\x00\x04\xaa\x00\x01\x00\x00\x00\x01\x00\x07\x13\x6a\
\x00\x00\x05\x3a\x00\x01\x00\x00\x00\x01\x00\x07\x32\xa8\
\x00\x00\x08\xa8\x00\x01\x00\x00\x00\x01\x00\x08\x17\xad\
\x00\x00\x08\x0c\x00\x01\x00\x00\x00\x01\x00\x07\xea\x63\
\x00\x00\x05\x68\x00\x00\x00\x00\x00\x01\x00\x07\x3c\x00\
\x00\x00\x07\x2e\x00\x01\x00\x00\x00\x01\x00\x07\xaa\x33\
\x00\x00\x04\xce\x00\x01\x00\x00\x00\x01\x00\x07\x1c\x0d\
\x00\x00\x05\x94\x00\x00\x00\x00\x00\x01\x00\x07\x4d\xcf\
\x00\x00\x06\x5a\x00\x01\x00\x00\x00\x01\x00\x07\x86\xa2\
\x00\x00\x08\xf6\x00\x01\x00\x00\x00\x01\x00\x08\x24\xac\
\x00\x00\x07\x5a\x00\x01\x00\x00\x00\x01\x00\x07\xb0\xf6\
\x00\x00\x09\xbe\x00\x01\x00\x00\x00\x01\x00\x08\x58\x75\
\x00\x00\x04\xf0\x00\x01\x00\x00\x00\x01\x00\x07\x24\xfb\
\x00\x00\x0a\x34\x00\x01\x00\x00\x00\x01\x00\x08\x70\x97\
\x00\x00\x05\xe6\x00\x01\x00\x00\x00\x01\x00\x07\x64\xff\
\x00\x00\x08\x88\x00\x01\x00\x00\x00\x01\x00\x08\x0f\x3f\
\x00\x00\x07\x00\x00\x01\x00\x00\x00\x01\x00\x07\xa4\xe3\
\x00\x00\x07\xb0\x00\x01\x00\x00\x00\x01\x00\x07\xce\x23\
\x00\x00\x0a\x58\x00\x00\x00\x00\x00\x01\x00\x08\x7a\xc6\
\x00\x00\x04\x54\x00\x01\x00\x00\x00\x01\x00\x07\x04\x30\
\x00\x00\x05\xc4\x00\x01\x00\x00\x00\x01\x00\x07\x5d\x3d\
\x00\x00\x09\x90\x00\x01\x00\x00\x00\x01\x00\x08\x50\x8d\
\x00\x00\x07\x86\x00\x00\x00\x00\x00\x01\x00\x07\xbc\x20\
\x00\x00\x08\xcc\x00\x01\x00\x00\x00\x01\x00\x08\x1c\xc4\
\x00\x00\x06\xd4\x00\x01\x00\x00\x00\x01\x00\x07\x9c\x69\
\x00\x00\x08\x3e\x00\x01\x00\x00\x00\x01\x00\x07\xf2\xa5\
\x00\x00\x06\x2e\x00\x01\x00\x00\x00\x01\x00\x07\x7d\xa3\
\x00\x00\x05\x1a\x00\x01\x00\x00\x00\x01\x00\x07\x2c\x90\
\x00\x00\x07\xd2\x00\x00\x00\x00\x00\x01\x00\x07\xd8\xee\
\x00\x00\x08\x5e\x00\x00\x00\x00\x00\x01\x00\x07\xfc\xdf\
\x00\x00\x06\x10\x00\x00\x00\x00\x00\x01\x00\x07\x6e\xa7\
\x00\x00\x06\xa0\x00\x01\x00\x00\x00\x01\x00\x07\x95\x19\
\x00\x00\x04\x1e\x00\x01\x00\x00\x00\x01\x00\x06\xfa\x34\
\x00\x00\x02\xb2\x00\x01\x00\x00\x00\x01\x00\x06\xb6\xfd\
\x00\x00\x03\x5a\x00\x01\x00\x00\x00\x01\x00\x06\xd7\xa0\
\x00\x00\x03\x20\x00\x01\x00\x00\x00\x01\x00\x06\xcd\x05\
\x00\x00\x03\x92\x00\x01\x00\x00\x00\x01\x00\x06\xe1\x2a\
\x00\x00\x03\x18\x00\x01\x00\x00\x00\x01\x00\x06\xc6\xe9\
\x00\x00\x03\xf6\x00\x01\x00\x00\x00\x01\x00\x06\xf1\x84\
\x00\x00\x02\xde\x00\x01\x00\x00\x00\x01\x00\x06\xbc\x07\
\x00\x00\x03\x86\x00\x01\x00\x00\x00\x01\x00\x06\xdc\xaa\
\x00\x00\x03\x4c\x00\x01\x00\x00\x00\x01\x00\x06\xd2\x0f\
\x00\x00\x03\xbe\x00\x01\x00\x00\x00\x01\x00\x06\xe6\x34\
"
def qInitResources():

View File

@ -113,6 +113,7 @@ class ArchWorkbench(Workbench):
FreeCADGui.addIconPath(":/icons")
FreeCADGui.addLanguagePath(":/translations")
FreeCADGui.addPreferencePage(":/ui/archprefs-base.ui","Arch")
FreeCADGui.addPreferencePage(":/ui/archprefs-import.ui","Arch")
if hasattr(FreeCADGui,"draftToolBar"):
if not hasattr(FreeCADGui.draftToolBar,"loadedPreferences"):
FreeCADGui.addPreferencePage(":/ui/userprefs-base.ui","Draft")

View File

@ -39,6 +39,7 @@
<file>icons/Arch_Rebar.svg</file>
<file>icons/Arch_Rebar_Tree.svg</file>
<file>ui/archprefs-base.ui</file>
<file>ui/archprefs-import.ui</file>
<file>ui/ParametersWindowDouble.svg</file>
<file>ui/ParametersWindowSimple.svg</file>
<file>ui/ParametersWindowFixed.svg</file>

View File

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>561</width>
<height>643</height>
<width>571</width>
<height>552</height>
</rect>
</property>
<property name="windowTitle">
@ -530,158 +530,88 @@
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>IFC import</string>
<string>Mesh to Shape Conversion</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_9">
<item>
<widget class="Gui::PrefCheckBox" name="gui::prefcheckbox_5">
<property name="toolTip">
<string>Check this to display debug messages while importing IFC files</string>
</property>
<property name="text">
<string>Show debug messages</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>ifcDebug</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Arch</cstring>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="Gui::PrefCheckBox" name="gui::prefcheckbox">
<property name="toolTip">
<string>If this is checked, IFC files will always be imported with the internal python parser, even if IfcOpenShell is installed</string>
<string>If this is checked, conversion is faster but the result might still contain triangulated faces</string>
</property>
<property name="text">
<string>Force python parser</string>
<string>Fast conversion</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="prefEntry" stdset="0">
<cstring>forceIfcPythonParser</cstring>
<cstring>ConversionFast</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Arch</cstring>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="Gui::PrefCheckBox" name="gui::prefcheckbox_2">
<property name="toolTip">
<string>Creates groups for each Arch object type</string>
</property>
<property name="text">
<string>Group components by types</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>createIfcGroups</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Arch</cstring>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_11">
<item>
<widget class="Gui::PrefCheckBox" name="gui::prefcheckbox_6">
<property name="toolTip">
<string>If this is checked, openings will be imported as subtractions, otherwise wall shapes will already have their openings subtracted</string>
</property>
<property name="text">
<string>Separate openings</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>ifcSeparateOpenings</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Arch</cstring>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_12">
<item>
<widget class="Gui::PrefCheckBox" name="gui::prefcheckbox_7">
<property name="toolTip">
<string>If this is checked, object names will be prefixed with the IFC ID number</string>
</property>
<property name="text">
<string>Prefix names with ID number</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>ifcPrefixNumbers</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Arch</cstring>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_13">
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>Exclude list: </string>
</property>
</widget>
</item>
<item>
<widget class="Gui::PrefLineEdit" name="gui::preflineedit">
<property name="toolTip">
<string>A comma-separated list of Ifc entities to exclude from import</string>
</property>
<property name="text">
<string/>
</property>
<property name="placeholderText">
<string>IfcSpace,IfcBuildingElementProxy,IfcFlowTerminal,IfcFurnishingElement</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>ifcSkip</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Arch</cstring>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_16">
<item>
<widget class="QLabel" name="label_7">
<property name="text">
<string>Import as meshes:</string>
<string>Tolerance:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="Gui::PrefLineEdit" name="gui::preflineedit_2">
<widget class="Gui::PrefDoubleSpinBox" name="gui::prefdoublespinbox_12">
<property name="toolTip">
<string>A comma-separated list of IFC types that must be imported as meshes</string>
<string>Tolerance value to use when checking if 2 adjacent faces as planar</string>
</property>
<property name="placeholderText">
<string>IfcFurnishingElement</string>
<property name="decimals">
<number>4</number>
</property>
<property name="value">
<double>0.001000000000000</double>
</property>
<property name="prefEntry" stdset="0">
<cstring>ifcAsMesh</cstring>
<cstring>ConversionTolerance</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Arch</cstring>
</property>
</widget>
</item>
<item>
<widget class="Gui::PrefCheckBox" name="gui::prefcheckbox_2">
<property name="toolTip">
<string>If this is checked, flat groups of faces will be force-flattened, resulting in possible gaps and non-solid results</string>
</property>
<property name="text">
<string>Force flat faces</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>ConversionFlat</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Arch</cstring>
</property>
</widget>
</item>
<item>
<widget class="Gui::PrefCheckBox" name="gui::prefcheckbox_3">
<property name="toolTip">
<string>If this is checked, holes in faces will be performed by subtraction rather than using wires orientation</string>
</property>
<property name="text">
<string>Cut method</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="prefEntry" stdset="0">
<cstring>ConversionCut</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Arch</cstring>
@ -759,22 +689,22 @@
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<layoutdefault spacing="6" margin="11"/>
@ -795,11 +725,6 @@
<extends>QCheckBox</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
<customwidget>
<class>Gui::PrefLineEdit</class>
<extends>QLineEdit</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
<customwidget>
<class>Gui::PrefDoubleSpinBox</class>
<extends>QDoubleSpinBox</extends>

View File

@ -0,0 +1,220 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Gui::Dialog::DlgSettingsArch</class>
<widget class="QWidget" name="Gui::Dialog::DlgSettingsArch">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>531</width>
<height>548</height>
</rect>
</property>
<property name="windowTitle">
<string>General settings</string>
</property>
<layout class="QVBoxLayout">
<property name="spacing">
<number>6</number>
</property>
<property name="margin">
<number>9</number>
</property>
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>IFC import</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_9">
<item>
<widget class="Gui::PrefCheckBox" name="gui::prefcheckbox_5">
<property name="toolTip">
<string>Check this to display debug messages while importing IFC files</string>
</property>
<property name="text">
<string>Show debug messages</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>ifcDebug</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Arch</cstring>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="Gui::PrefCheckBox" name="gui::prefcheckbox">
<property name="toolTip">
<string>If this is checked, IFC files will always be imported with the internal python parser, even if IfcOpenShell is installed</string>
</property>
<property name="text">
<string>Force python parser</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>forceIfcPythonParser</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Arch</cstring>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="Gui::PrefCheckBox" name="gui::prefcheckbox_2">
<property name="toolTip">
<string>Creates groups for each Arch object type</string>
</property>
<property name="text">
<string>Group components by types</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>createIfcGroups</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Arch</cstring>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_11">
<item>
<widget class="Gui::PrefCheckBox" name="gui::prefcheckbox_6">
<property name="toolTip">
<string>If this is checked, openings will be imported as subtractions, otherwise wall shapes will already have their openings subtracted</string>
</property>
<property name="text">
<string>Separate openings</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>ifcSeparateOpenings</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Arch</cstring>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_12">
<item>
<widget class="Gui::PrefCheckBox" name="gui::prefcheckbox_7">
<property name="toolTip">
<string>If this is checked, object names will be prefixed with the IFC ID number</string>
</property>
<property name="text">
<string>Prefix names with ID number</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>ifcPrefixNumbers</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Arch</cstring>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_13">
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>Exclude list: </string>
</property>
</widget>
</item>
<item>
<widget class="Gui::PrefLineEdit" name="gui::preflineedit">
<property name="toolTip">
<string>A comma-separated list of Ifc entities to exclude from import</string>
</property>
<property name="text">
<string/>
</property>
<property name="placeholderText">
<string>IfcSpace,IfcBuildingElementProxy,IfcFlowTerminal,IfcFurnishingElement</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>ifcSkip</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Arch</cstring>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_16">
<item>
<widget class="QLabel" name="label_7">
<property name="text">
<string>Import as meshes:</string>
</property>
</widget>
</item>
<item>
<widget class="Gui::PrefLineEdit" name="gui::preflineedit_2">
<property name="toolTip">
<string>A comma-separated list of IFC types that must be imported as meshes</string>
</property>
<property name="placeholderText">
<string>IfcFurnishingElement</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>ifcAsMesh</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Arch</cstring>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<layoutdefault spacing="6" margin="11"/>
<pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
<customwidgets>
<customwidget>
<class>Gui::PrefCheckBox</class>
<extends>QCheckBox</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
<customwidget>
<class>Gui::PrefLineEdit</class>
<extends>QLineEdit</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

View File

@ -656,6 +656,24 @@ def sortEdges(lEdges, aVertex=None):
return []
def flattenWire(wire):
'''flattenWire(wire): forces a wire to get completely flat
along its normal.'''
import WorkingPlane
n = getNormal(wire)
if not n:
return
o = wire.Vertexes[0].Point
plane = WorkingPlane.plane()
plane.alignToPointAndAxis(o,n,0)
verts = [o]
for v in wire.Vertexes[1:]:
verts.append(plane.projectPoint(v.Point))
verts.append(o)
w = Part.makePolygon(verts)
return w
def findWires(edgeslist):
'''finds connected wires in the given list of edges'''
@ -901,7 +919,7 @@ def getNormal(shape):
e1 = vec(shape.Edges[0])
for i in range(1,len(shape.Edges)):
e2 = vec(shape.Edges[i])
if 0.1 < abs(e1.getAngle(e2)) < 1.56:
if 0.1 < abs(e1.getAngle(e2)) < 3.14:
n = e1.cross(e2).normalize()
break
if FreeCAD.GuiUp: