From 13efa161b22941a0c99428eeb98e0a0b9976fd9a Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Mon, 28 Oct 2013 17:25:40 -0200 Subject: [PATCH] Arch: Added some preferences options to the MeshToShape command --- src/Mod/Arch/ArchCommands.py | 46 +- src/Mod/Arch/Arch_rc.py | 475 ++++++++++-------- src/Mod/Arch/InitGui.py | 1 + src/Mod/Arch/Resources/Arch.qrc | 1 + src/Mod/Arch/Resources/ui/archprefs-base.ui | 213 +++----- src/Mod/Arch/Resources/ui/archprefs-import.ui | 220 ++++++++ src/Mod/Draft/DraftGeomUtils.py | 20 +- 7 files changed, 620 insertions(+), 356 deletions(-) create mode 100644 src/Mod/Arch/Resources/ui/archprefs-import.ui diff --git a/src/Mod/Arch/ArchCommands.py b/src/Mod/Arch/ArchCommands.py index ff5af0258..b41aaaf82 100644 --- a/src/Mod/Arch/ArchCommands.py +++ b/src/Mod/Arch/ArchCommands.py @@ -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() diff --git a/src/Mod/Arch/Arch_rc.py b/src/Mod/Arch/Arch_rc.py index 5747fa102..e13894f16 100644 --- a/src/Mod/Arch/Arch_rc.py +++ b/src/Mod/Arch/Arch_rc.py @@ -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(): diff --git a/src/Mod/Arch/InitGui.py b/src/Mod/Arch/InitGui.py index 863a88682..aadf378e0 100644 --- a/src/Mod/Arch/InitGui.py +++ b/src/Mod/Arch/InitGui.py @@ -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") diff --git a/src/Mod/Arch/Resources/Arch.qrc b/src/Mod/Arch/Resources/Arch.qrc index ff80a77c8..0e5f193cd 100644 --- a/src/Mod/Arch/Resources/Arch.qrc +++ b/src/Mod/Arch/Resources/Arch.qrc @@ -39,6 +39,7 @@ icons/Arch_Rebar.svg icons/Arch_Rebar_Tree.svg ui/archprefs-base.ui + ui/archprefs-import.ui ui/ParametersWindowDouble.svg ui/ParametersWindowSimple.svg ui/ParametersWindowFixed.svg diff --git a/src/Mod/Arch/Resources/ui/archprefs-base.ui b/src/Mod/Arch/Resources/ui/archprefs-base.ui index 3a1090009..951680602 100644 --- a/src/Mod/Arch/Resources/ui/archprefs-base.ui +++ b/src/Mod/Arch/Resources/ui/archprefs-base.ui @@ -6,8 +6,8 @@ 0 0 - 561 - 643 + 571 + 552 @@ -530,158 +530,88 @@ - IFC import + Mesh to Shape Conversion - - - - - - Check this to display debug messages while importing IFC files - - - Show debug messages - - - ifcDebug - - - Mod/Arch - - - - - - If this is checked, IFC files will always be imported with the internal python parser, even if IfcOpenShell is installed + If this is checked, conversion is faster but the result might still contain triangulated faces - Force python parser + Fast conversion + + + true - forceIfcPythonParser + ConversionFast Mod/Arch - - - - - - - - Creates groups for each Arch object type - - - Group components by types - - - createIfcGroups - - - Mod/Arch - - - - - - - - - - - If this is checked, openings will be imported as subtractions, otherwise wall shapes will already have their openings subtracted - - - Separate openings - - - ifcSeparateOpenings - - - Mod/Arch - - - - - - - - - - - If this is checked, object names will be prefixed with the IFC ID number - - - Prefix names with ID number - - - ifcPrefixNumbers - - - Mod/Arch - - - - - - - - - - - Exclude list: - - - - - - - A comma-separated list of Ifc entities to exclude from import - - - - - - IfcSpace,IfcBuildingElementProxy,IfcFlowTerminal,IfcFurnishingElement - - - ifcSkip - - - Mod/Arch - - - - - - - - Import as meshes: + Tolerance: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - + - A comma-separated list of IFC types that must be imported as meshes + Tolerance value to use when checking if 2 adjacent faces as planar - - IfcFurnishingElement + + 4 + + + 0.001000000000000 - ifcAsMesh + ConversionTolerance + + + Mod/Arch + + + + + + + If this is checked, flat groups of faces will be force-flattened, resulting in possible gaps and non-solid results + + + Force flat faces + + + ConversionFlat + + + Mod/Arch + + + + + + + If this is checked, holes in faces will be performed by subtraction rather than using wires orientation + + + Cut method + + + true + + + ConversionCut Mod/Arch @@ -759,22 +689,22 @@ - - - - Qt::Vertical - - - - 20 - 40 - - - - + + + + Qt::Vertical + + + + 20 + 40 + + + + @@ -795,11 +725,6 @@ QCheckBox
Gui/PrefWidgets.h
- - Gui::PrefLineEdit - QLineEdit -
Gui/PrefWidgets.h
-
Gui::PrefDoubleSpinBox QDoubleSpinBox diff --git a/src/Mod/Arch/Resources/ui/archprefs-import.ui b/src/Mod/Arch/Resources/ui/archprefs-import.ui new file mode 100644 index 000000000..1f3f28d3a --- /dev/null +++ b/src/Mod/Arch/Resources/ui/archprefs-import.ui @@ -0,0 +1,220 @@ + + + Gui::Dialog::DlgSettingsArch + + + + 0 + 0 + 531 + 548 + + + + General settings + + + + 6 + + + 9 + + + + + IFC import + + + + + + + + Check this to display debug messages while importing IFC files + + + Show debug messages + + + ifcDebug + + + Mod/Arch + + + + + + + + + + + If this is checked, IFC files will always be imported with the internal python parser, even if IfcOpenShell is installed + + + Force python parser + + + forceIfcPythonParser + + + Mod/Arch + + + + + + + + + + + Creates groups for each Arch object type + + + Group components by types + + + createIfcGroups + + + Mod/Arch + + + + + + + + + + + If this is checked, openings will be imported as subtractions, otherwise wall shapes will already have their openings subtracted + + + Separate openings + + + ifcSeparateOpenings + + + Mod/Arch + + + + + + + + + + + If this is checked, object names will be prefixed with the IFC ID number + + + Prefix names with ID number + + + ifcPrefixNumbers + + + Mod/Arch + + + + + + + + + + + Exclude list: + + + + + + + A comma-separated list of Ifc entities to exclude from import + + + + + + IfcSpace,IfcBuildingElementProxy,IfcFlowTerminal,IfcFurnishingElement + + + ifcSkip + + + Mod/Arch + + + + + + + + + + + Import as meshes: + + + + + + + A comma-separated list of IFC types that must be imported as meshes + + + IfcFurnishingElement + + + ifcAsMesh + + + Mod/Arch + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + qPixmapFromMimeSource + + + Gui::PrefCheckBox + QCheckBox +
Gui/PrefWidgets.h
+
+ + Gui::PrefLineEdit + QLineEdit +
Gui/PrefWidgets.h
+
+
+ + +
diff --git a/src/Mod/Draft/DraftGeomUtils.py b/src/Mod/Draft/DraftGeomUtils.py index b4e2d8e93..dcad59e18 100755 --- a/src/Mod/Draft/DraftGeomUtils.py +++ b/src/Mod/Draft/DraftGeomUtils.py @@ -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: