From 5255443469e98c0654463da625ae7c018804f0bf Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Tue, 16 Jul 2013 19:09:16 -0300 Subject: [PATCH] Arch: First draft of a Space tool --- src/Mod/Arch/Arch.py | 1 + src/Mod/Arch/ArchCommands.py | 4 +- src/Mod/Arch/ArchComponent.py | 3 +- src/Mod/Arch/ArchSpace.py | 160 ++++++++++ src/Mod/Arch/Arch_rc.py | 292 +++++++++++++++++- src/Mod/Arch/InitGui.py | 4 +- src/Mod/Arch/Resources/Arch.qrc | 2 + src/Mod/Arch/Resources/icons/Arch_Space.svg | 202 ++++++++++++ .../Arch/Resources/icons/Arch_Space_Tree.svg | 165 ++++++++++ 9 files changed, 816 insertions(+), 17 deletions(-) create mode 100644 src/Mod/Arch/ArchSpace.py create mode 100644 src/Mod/Arch/Resources/icons/Arch_Space.svg create mode 100644 src/Mod/Arch/Resources/icons/Arch_Space_Tree.svg diff --git a/src/Mod/Arch/Arch.py b/src/Mod/Arch/Arch.py index 77c0b9534f..0a32f924ba 100644 --- a/src/Mod/Arch/Arch.py +++ b/src/Mod/Arch/Arch.py @@ -39,3 +39,4 @@ from ArchSectionPlane import * from ArchWindow import * from ArchAxis import * from ArchRoof import * +from ArchSpace import * diff --git a/src/Mod/Arch/ArchCommands.py b/src/Mod/Arch/ArchCommands.py index 8212772fac..f6083bc94d 100644 --- a/src/Mod/Arch/ArchCommands.py +++ b/src/Mod/Arch/ArchCommands.py @@ -317,9 +317,11 @@ def getCutVolume(cutplane,shapes): """getCutVolume(cutplane,shapes): returns a cut face and a cut volume from the given shapes and the given cutting plane""" import Part + if not isinstance(shapes,list): + shapes = [shapes] placement = FreeCAD.Placement(cutplane.Placement) # building boundbox - bb = shapes[0].BoundBox + bb = shapes[0].BoundBox for sh in shapes[1:]: bb.add(sh.BoundBox) bb.enlarge(1) diff --git a/src/Mod/Arch/ArchComponent.py b/src/Mod/Arch/ArchComponent.py index 786f489141..73fc1d5747 100644 --- a/src/Mod/Arch/ArchComponent.py +++ b/src/Mod/Arch/ArchComponent.py @@ -270,11 +270,12 @@ class Component: self.Type = "Component" self.Subvolume = None + def execute(self,obj): + return def __getstate__(self): return self.Type - def __setstate__(self,state): if state: self.Type = state diff --git a/src/Mod/Arch/ArchSpace.py b/src/Mod/Arch/ArchSpace.py new file mode 100644 index 0000000000..9a7669e464 --- /dev/null +++ b/src/Mod/Arch/ArchSpace.py @@ -0,0 +1,160 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2013 * +#* Yorik van Havre * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +import FreeCAD,FreeCADGui,ArchComponent,ArchCommands,math +from DraftTools import translate +from PyQt4 import QtCore + +def makeSpace(objects): + """makeSpace(objects): Creates a space objects from the given boundary objects""" + if not objects: + return + if not isinstance(objects,list): + objects = [objects] + obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython","Space") + _Space(obj) + _ViewProviderSpace(obj.ViewObject) + if len(objects) == 1: + obj.Base = objects[0] + objects[0].ViewObject.hide() + else: + obj.Objects = objects + + +class _CommandSpace: + "the Arch Space command definition" + def GetResources(self): + return {'Pixmap' : 'Arch_Space', + 'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_Space","Space"), + 'Accel': "S, P", + 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Space","Creates a space object from selected boundary objects")} + + def IsActive(self): + if FreeCADGui.Selection.getSelection(): + return True + else: + return False + + def Activated(self): + FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Create Space"))) + FreeCADGui.doCommand("import Arch") + FreeCADGui.doCommand("Arch.makeSpace(FreeCADGui.Selection.getSelection())") + FreeCAD.ActiveDocument.commitTransaction() + FreeCAD.ActiveDocument.recompute() + + +class _Space(ArchComponent.Component): + "A space object" + def __init__(self,obj): + obj.Proxy = self + obj.addProperty("App::PropertyLink","Base","Base", + str(translate("Arch","A base shape defining this space"))) + obj.addProperty("App::PropertyLinkList","Objects","Base", + str(translate("Arch","The objects that make the boundaries of this space object"))) + self.Type = "Space" + + def execute(self,obj): + self.getShape(obj) + + def onChanged(self,obj,prop): + if prop in ["Objects","Base"]: + self.getShape(obj) + + def getShape(self,obj): + "computes a shape" + import Part + shape = None + faces = [] + + # 1: if we have a base shape, we use it + + if obj.Base: + if obj.Base.isDerivedFrom("Part::Feature"): + if obj.Base.Shape.Solids: + shape = obj.Base.Shape.Solids[0] + + # 2: if not, add all bounding boxes of considered objects and build a first shape + if shape: + bb = shape.BoundBox + else: + bb = None + for obj in obj.Objects: + if obj.isDerivedFrom("Part::Feature"): + if not bb: + bb = obj.Shape.BoundBox + else: + bb.add(obj.Shape.BoundBox) + if not bb: + return + shape = Part.makeBox(bb.XLength,bb.YLength,bb.ZLength,FreeCAD.Vector(bb.XMin,bb.YMin,bb.ZMin)) + + # 3: identify all faces pointing towards the center of our shape + goodfaces = [] + for obj in obj.Objects: + if obj.isDerivedFrom("Part::Feature"): + faces.extend(obj.Shape.Faces) + for face in faces: + pt = face.CenterOfMass + norm = face.normalAt(1,1) #TODO calculate for curved faces + v1 = bb.Center.sub(pt) + if v1.getAngle(norm) < math.pi/2: + goodfaces.append(face) + faces = goodfaces + + # 4: get cutvolumes from faces + cutvolumes = [] + for f in faces: + cutface,cutvolume,invcutvolume = ArchCommands.getCutVolume(f,shape) + if cutvolume: + cutvolumes.append(cutvolume) + for v in cutvolumes: + shape = shape.cut(v) + + # 5: get the final shape + if shape: + if shape.Solids: + shape = shape.Solids[0] + obj.Shape = shape + + +class _ViewProviderSpace(ArchComponent.ViewProviderComponent): + "A View Provider for Section Planes" + def __init__(self,vobj): + vobj.Transparency = 85 + vobj.LineWidth = 1 + vobj.LineColor = (1.0,0.0,0.0,1.0) + vobj.DrawStyle = "Dotted" + ArchComponent.ViewProviderComponent.__init__(self,vobj) + + def getIcon(self): + import Arch_rc + return ":/icons/Arch_Space_Tree.svg" + + def claimChildren(self): + if self.Object.Base: + return [self.Object.Base] + else: + return [] + + +FreeCADGui.addCommand('Arch_Space',_CommandSpace()) diff --git a/src/Mod/Arch/Arch_rc.py b/src/Mod/Arch/Arch_rc.py index 37b7e01bea..ad170ea5ee 100644 --- a/src/Mod/Arch/Arch_rc.py +++ b/src/Mod/Arch/Arch_rc.py @@ -2,7 +2,7 @@ # Resource object code # -# Created: Sun Jul 7 11:06:17 2013 +# Created: Tue Jul 16 18:10:49 2013 # by: The Resource Compiler for PyQt (Qt v4.8.4) # # WARNING! All changes made in this file will be lost! @@ -31365,6 +31365,116 @@ qt_resource_data = "\ \x55\x4c\x69\x8a\x07\xe9\x7b\x88\xe6\x87\xfa\x1b\xc0\x5e\xa3\xb6\ \x8e\x99\x2c\x6e\xae\xae\x6d\x7d\x71\x73\xf5\x1f\x81\x50\x39\x69\ \ +\x00\x00\x06\xbf\ +\x00\ +\x00\x19\x91\x78\x9c\xed\x57\xdd\x6f\xe3\x44\x10\x7f\xef\x5f\x61\ +\x7c\x2f\x20\x62\x7b\xbf\x6c\xef\xba\x49\x11\xe2\x04\x42\x02\x21\ +\xc1\x9d\x78\x3c\x6d\xec\x4d\x62\xea\xd8\xd1\xda\x69\x92\xfe\xf5\ +\xcc\xfa\xdb\x8d\xdb\xde\x01\xc7\x0b\x38\x6a\x13\xcf\xc7\xce\xce\ +\xcc\x6f\x66\x67\x97\xdf\x9c\xf7\x99\xf5\xa0\x74\x99\x16\xf9\xca\ +\xc6\x2e\xb2\x2d\x95\xc7\x45\x92\xe6\xdb\x95\xfd\xfe\xdd\xf7\x0e\ +\xb7\xad\xb2\x92\x79\x22\xb3\x22\x57\x2b\x3b\x2f\xec\x6f\xee\x6e\ +\x96\x5f\x38\x8e\xf5\x9d\x56\xb2\x52\x89\x75\x4a\xab\x9d\xf5\x63\ +\x7e\x5f\xc6\xf2\xa0\xac\x2f\x77\x55\x75\x88\x3c\xef\x74\x3a\xb9\ +\x69\x4b\x74\x0b\xbd\xf5\xbe\xb2\x1c\xe7\xee\xe6\x66\x59\x3e\x6c\ +\x6f\x2c\xcb\x02\xbb\x79\x19\x25\xf1\xca\x6e\x15\x0e\x47\x9d\xd5\ +\x82\x49\xec\xa9\x4c\xed\x55\x5e\x95\x1e\x76\xb1\x67\x0f\xe2\xf1\ +\x20\x1e\x1b\xeb\xe9\x83\x8a\x8b\xfd\xbe\xc8\xcb\x5a\x33\x2f\xdf\ +\x8c\x84\x75\xb2\xe9\xa5\xcd\x6e\x4e\xb4\x16\xc2\x42\x08\x0f\x11\ +\x8f\x10\x07\x24\x9c\xf2\x92\x57\xf2\xec\x4c\x55\x61\x8f\x73\xaa\ +\x04\x21\xe4\x01\x6f\x90\xfc\x38\xa9\xe8\x9c\x41\x28\x9e\xdd\x4c\ +\xcd\x1d\x5b\x87\xf0\x1f\xe0\xaf\x57\xe8\x08\x6e\x59\x1c\x75\xac\ +\x36\xa0\xa9\xdc\x5c\x55\xde\xdb\x77\x6f\x7b\xa6\x83\xdc\xa4\x4a\ +\x46\xcb\x74\xd1\x9f\xd8\x9d\xa4\x24\x97\x7b\x55\x1e\x64\xac\x4a\ +\xaf\xa3\xd7\xfa\xa7\x34\xa9\x76\x2b\x3b\x60\x87\x73\xfd\xbe\x53\ +\xe9\x76\x57\x8d\x08\x69\xb2\xb2\xc1\x43\xc2\x03\x54\xbf\x77\x7b\ +\x88\x7a\x24\x21\x97\x92\x46\xb4\x5d\x78\xcc\x62\xdc\x65\x96\x16\ +\x82\x8a\xa9\x76\x52\xc4\x66\x4b\x2b\xfb\x5b\x1d\xef\x3e\xfc\x66\ +\x76\xe6\x76\x81\xec\xd7\x29\x8e\xd5\xe1\x58\x7d\x50\xe7\x4a\xe5\ +\xcd\x82\xe0\xca\xc8\xaf\x9a\x6d\xd4\xdc\x89\x4f\x23\x8c\x63\xfb\ +\x0e\x28\xcb\x44\x6d\x4a\xc3\x69\xdc\x31\x6f\xe0\x0f\xa9\x79\xc0\ +\x85\x9c\x28\xa9\x7f\xd0\x32\x49\x01\x89\x8d\x5c\x23\x39\xe5\x50\ +\x1a\x86\xad\x0e\x68\x95\x55\x71\xe8\x64\xdb\x30\x01\x05\x64\x1a\ +\x4f\x9b\xa7\xd8\x6c\x4a\x05\xe1\x44\x23\x5a\x59\x5d\x32\xd5\x48\ +\x3b\x71\x91\x15\x3a\x7a\xb3\x91\x9b\x0d\x59\xdf\xd6\xa4\x02\x62\ +\x91\x56\x97\x08\xdf\xda\x96\xf7\xaa\x35\x8e\x67\xac\xe1\x57\xac\ +\x6d\xa4\x44\xe8\x59\x6b\x4b\x6f\xea\x76\x4b\xed\xb3\x72\x80\xf0\ +\x1e\x54\x6c\x2a\xb2\x33\xd3\xa7\xb5\xba\x18\x10\x4e\x45\x69\xd2\ +\x6f\x67\x40\xc8\xe1\xc3\x19\xa2\x62\x45\x16\x25\xf0\x0f\xcf\x4a\ +\x5c\x1a\x09\x0c\x45\x06\x5f\x68\x56\xe6\xd1\x40\xf5\x85\x65\xda\ +\x1d\x38\x85\x4e\xb7\x29\x40\xa2\x96\x23\xd8\xa5\xf5\x33\xd5\x81\ +\xa0\x8e\x7c\x03\x84\xf0\x21\x26\x26\x16\x32\xbb\xc2\x48\x67\x06\ +\x22\x9b\x81\xda\xca\x96\xd9\x49\x5e\xca\x7e\xcd\xba\xde\xa3\x9d\ +\x56\xd0\x9f\xde\x5c\xa3\xc9\x99\x5a\x9f\x1a\xa1\x48\xf8\x4e\xd0\ +\x0b\x6c\x5b\xf2\xfb\x3c\xad\xa0\x19\x1d\x4b\xa5\xeb\xb2\xf9\x25\ +\x7f\x5f\xaa\x2b\xa9\x77\x5a\xe6\x25\x74\x8f\xfd\xca\xde\xcb\x4a\ +\xa7\xe7\x2f\xa1\xe1\x53\x9f\x84\xdc\x5f\x20\x97\x50\x81\x21\xac\ +\x7c\x01\x9d\x84\x09\x4c\xa0\x37\xd1\x05\x71\x31\x09\x38\x23\x6c\ +\xe1\x70\xea\x22\x82\xfc\x20\x58\x38\x04\x23\x17\x0b\x5f\xf8\x5f\ +\xf5\x36\x62\x48\x1d\xa6\xbe\x4b\x39\x84\x70\xa0\x42\xba\x44\xe8\ +\xd2\x40\xf8\x10\xb8\x8e\xba\x99\x95\xdd\xcc\xca\x6a\x10\x15\x2e\ +\x0b\x42\x46\x83\x21\xf2\x9f\x52\x9d\x0e\xfe\x98\xfa\x74\xe6\x6a\ +\xe6\x33\x56\xa8\x83\xfe\xad\x1a\xfd\x0c\x28\xc5\x8c\xbd\x80\x51\ +\x86\x11\xff\xe7\x10\xba\x40\xe6\xe3\x06\x82\xfb\x44\x30\xf8\x4d\ +\x10\x71\x39\x14\x22\x9d\x82\x8f\x10\xdf\x25\x01\x43\x64\x02\xbe\ +\x20\x24\x6e\x28\x42\x1a\x4c\xc0\x77\x2d\xbb\x99\x95\x05\xf0\x51\ +\xe6\x52\xe6\x63\xce\x5f\x05\xdf\x6b\x01\x9d\x41\xa7\x89\xe3\x33\ +\x58\x99\x4d\xbf\x79\xae\xd2\xff\x32\x6c\x7b\xcc\x61\x16\x3c\x8f\ +\xcc\x8f\xb4\x86\xe6\xac\xe1\x79\x6b\xfc\xaf\xe1\x72\x12\xf2\x97\ +\xb3\x33\x9f\xc9\xf9\xac\xcf\x23\xe4\x6f\xc2\xee\xe3\xb0\x3d\x57\ +\x20\x94\x7d\x7a\x9d\x3d\x87\xaf\x26\xcc\x4b\xcf\x4c\x30\xf5\xaf\ +\xfe\xe0\x35\xc3\x54\xf2\x90\xaa\xd3\x30\xe6\xac\x65\xbf\xb3\x83\ +\xdc\xaa\x3a\xd7\x60\xb7\x49\x76\xcb\x58\x17\x3a\x51\xba\x63\x05\ +\xf5\x33\x61\xb5\x70\x68\xee\x0b\x37\xd3\xdd\x99\x55\x7b\x3e\x9a\ +\xe7\x97\x3b\x99\x14\x27\x48\xc8\x53\xe6\x63\x51\x40\x0a\xa8\xcb\ +\xb9\x40\x3c\xa4\x4f\xd9\x75\x12\xa9\x1b\xc0\x98\x46\xaf\x74\x4d\ +\xde\x71\x00\xc7\x52\x88\xc4\x35\xf3\xa8\x35\x04\xd4\xc9\xe4\x45\ +\x81\x53\xf5\x57\x87\xdb\x72\x57\x9c\xb6\xda\x04\xa7\xd2\x47\xf5\ +\x54\x13\x66\xd2\xa3\xb9\x8b\x38\xc7\x26\xc9\xed\x04\x3c\x92\x30\ +\xba\xce\x7a\x5d\x9c\xe7\x17\x38\xa5\x39\x38\xeb\xb4\x33\x35\x16\ +\xe4\x2a\x24\xad\x44\x37\x65\x63\xe4\x87\xcf\x88\x9c\x87\xda\x7e\ +\xca\xba\xcc\xb0\x8a\xf5\x1f\x00\x14\xe7\x20\xab\x1d\xec\x7c\x23\ +\xb3\xf2\x6a\x77\x65\x2e\x0f\x4e\x5e\x24\xaa\x9c\xdf\x7d\xbb\xc4\ +\x0b\x12\xad\xfd\xbd\x3c\xa7\xfb\xf4\x51\x25\xa6\x21\xb4\x90\xdc\ +\xab\x4a\x26\xb2\x92\x03\xfc\x3a\x0a\xd4\x91\xdf\x4d\xda\x70\x0b\ +\x8b\x7e\x7d\xfb\x7d\xdf\x99\xe2\x38\xfa\xbd\xd0\xf7\x43\x53\x31\ +\x02\x72\x0d\x83\xfd\xca\xee\xbb\xa5\x99\xdf\xe3\xc8\x94\xac\xac\ +\xee\xd2\x3d\x80\xca\x5c\xb9\xbe\x86\x9b\x0f\x14\x42\xcf\x98\x08\ +\x9b\x31\x74\x58\xb4\x59\x56\xab\xe6\x4a\x35\x7b\x0b\x4d\xe2\x7d\ +\x6a\x94\xbc\xdf\xaa\x34\xcb\x7e\x34\x46\x46\x1d\xb4\x5d\x34\xad\ +\x32\x75\x57\xdb\x6c\x7e\x76\x5e\x78\xad\x1b\x5d\x0b\x1c\x79\xb9\ +\xf4\xba\x30\xd4\x6f\xdb\x21\x3c\x13\x5c\xf6\x11\xce\xe4\x5a\x65\ +\x2b\xfb\x27\xc3\xb4\xae\xb8\x5b\x5d\x1c\x0f\x7b\xc8\x4f\xab\xde\ +\x85\xd5\x64\xbd\x1f\xc5\x9b\xf6\xde\x76\x76\x54\x3f\xb7\x1b\x70\ +\x6a\xd4\xe6\x75\x71\xaf\xa2\x37\xdc\x37\x9f\xf6\xb5\x01\x6d\xc4\ +\xba\x57\xd3\x9d\xc0\x66\xb4\x3e\x56\xd5\x98\xf6\x47\x91\xe6\x11\ +\x6c\x23\x4f\x3a\x2a\x04\x4e\xe9\x0c\x00\x51\x0d\xda\xc3\x91\xd5\ +\x12\x12\x09\x8d\x40\x6b\x79\x89\xf8\x82\x8d\x89\xcd\xc9\x02\xa7\ +\xcd\x5e\xea\x7b\xa5\xa3\xbc\xc8\xd5\xed\x43\x5a\xa6\xeb\x34\x33\ +\x2b\xd4\x3f\x33\x75\x9b\xa4\xe5\x01\x7c\x86\x9b\xae\xd9\xc5\x6d\ +\x01\x77\xbc\x4d\x56\x9c\x7a\xbe\xca\x25\x7c\x39\x6b\x19\xdf\x6f\ +\xeb\xed\x45\x32\x86\x6a\x3e\x66\xb2\x52\xb5\xfb\xc3\xc1\xe6\x9a\ +\xa1\x05\xe6\x5f\x8e\xda\x67\x38\x24\x20\x2f\x3f\x5b\x04\x06\x53\ +\x1c\x08\x1a\x2c\x18\x34\x20\xc4\x18\x66\x16\x73\x91\x2f\x04\x47\ +\x78\xe1\xfb\x30\x26\x23\x1c\xf2\x49\xd3\x37\x19\xa0\x02\xd1\xb9\ +\x16\x9e\x43\x24\xab\x42\x3b\xd0\x98\x1e\x64\x75\xd4\xca\x94\x6f\ +\x7f\x60\x8e\x73\xf7\x9a\xd2\xd5\x75\xcb\xd4\xaa\x81\x2d\xd4\x6b\ +\x6c\x9e\xe9\x41\x04\x2b\xc0\xc4\x8f\x46\xe3\x67\xe7\x1f\x0b\x84\ +\x08\xc3\x85\xef\x42\xbb\x0f\x11\x62\x96\x2f\x5c\x81\x42\xce\x17\ +\xdc\xcc\xdf\x84\xf3\x9a\x04\xb7\x84\x00\xae\x03\xe6\x0e\xcf\x45\ +\xe0\xf3\xd9\xd0\x3c\xda\x4f\xa0\xf7\x3f\xd8\x5e\x06\xdb\xe7\x49\ +\xfd\x7c\xf2\xaf\xa1\x7d\x95\x7a\xe6\x12\x02\xd0\x16\xfe\x02\x03\ +\xca\x79\x88\x42\x66\x51\x80\x03\x48\x61\xb1\xc0\xdc\x15\x3e\x25\ +\x38\xb4\x18\x72\xfd\x80\xf9\x22\x58\x04\x30\x0b\x04\x70\x72\xd1\ +\x59\x8c\x04\x30\x09\xc0\xca\x3e\x01\x2c\xe1\x00\x11\x16\xfa\xaf\ +\x60\xe4\xb5\x88\xfd\xf7\x40\xf4\x6f\xb6\x87\x31\x42\xf6\xf3\x68\ +\x08\x5c\x4a\x59\x80\x02\x7f\xc1\x60\xe8\x42\x08\x73\x0b\x2d\x18\ +\xcc\xdd\x9c\x32\x8e\x2d\x07\x04\x7c\xc4\x02\xec\x8b\x85\xe3\xbb\ +\x82\x21\x2a\x66\x72\xfe\xc2\x91\xf4\x2a\x02\x6a\x01\x7d\xcc\x94\ +\x09\xf7\x23\x8c\xa5\xff\x63\xe2\xd3\x30\xd1\x1f\x52\xfe\xe8\xa6\ +\x54\xf7\x04\xa8\x6b\x22\x10\x09\x4c\xa9\x53\x22\xe0\xde\x33\x73\ +\x1a\xfc\xbd\xfa\x1d\xb2\xa7\x1e\x14\x80\x32\xf9\xcf\x66\x6f\xe9\ +\x6d\xef\x6e\x96\x66\x7e\xbd\xbb\xf9\x13\xf5\x97\x97\x20\ \x00\x00\x0b\x26\ \x00\ \x00\x5f\x19\x78\x9c\xed\x5c\xdb\x72\xe3\x36\x12\x7d\xf7\x57\x70\ @@ -31546,6 +31656,151 @@ qt_resource_data = "\ \xd6\x3c\x7b\x1b\x0c\x34\xd1\xc5\x5a\x70\x62\x48\x7c\x18\x6c\xc7\ \xb1\x5f\x18\x9d\x9e\xf6\x47\xe7\x27\xa7\xfe\x9b\xbd\xce\x4f\xfe\ \x06\xf2\x9a\xfe\xf0\ +\x00\x00\x08\xea\ +\x00\ +\x00\x21\x8a\x78\x9c\xe5\x59\x6d\x8f\xa3\x38\x12\xfe\xde\xbf\x82\ +\xcb\x7c\x99\xd6\x05\xe3\x17\x6c\x70\xa6\xd3\x2b\xdd\x8d\xf6\xb4\ +\xd2\x9e\x76\x75\x3b\xa3\xfb\x38\x72\xc0\x49\xb3\x4d\x20\x02\xd2\ +\x49\xe6\xd7\x5f\x99\x17\x07\x1a\x92\xee\x7d\x99\xd6\x49\xcb\x68\ +\x26\xe0\x2a\x53\x76\xd5\x53\x8f\xab\x98\xbb\xef\x8e\xdb\xd4\x79\ +\xd2\x45\x99\xe4\xd9\x72\x46\x10\x9e\x39\x3a\x8b\xf2\x38\xc9\x36\ +\xcb\xd9\xe7\x4f\xdf\xbb\xe1\xcc\x29\x2b\x95\xc5\x2a\xcd\x33\xbd\ +\x9c\x65\xf9\xec\xbb\xfb\x9b\xbb\xbf\xb9\xae\xf3\xcf\x42\xab\x4a\ +\xc7\xce\x21\xa9\x1e\x9c\x1f\xb2\xc7\x32\x52\x3b\xed\xbc\x7f\xa8\ +\xaa\xdd\xc2\xf3\x0e\x87\x03\x4a\xda\x41\x94\x17\x1b\xef\xd6\x71\ +\xdd\xfb\x9b\x9b\xbb\xf2\x69\x73\xe3\x38\x0e\xd8\xcd\xca\x45\x1c\ +\x2d\x67\xed\x84\xdd\xbe\x48\x6b\xc5\x38\xf2\x74\xaa\xb7\x3a\xab\ +\x4a\x8f\x20\xe2\xcd\xce\xea\xd1\x59\x3d\x32\xd6\x93\x27\x1d\xe5\ +\xdb\x6d\x9e\x95\xf5\xcc\xac\x7c\xd7\x53\x2e\xe2\xb5\xd5\x36\xab\ +\x39\xb0\x5a\x89\x48\x29\x3d\x4c\x3d\x4a\x5d\xd0\x70\xcb\x53\x56\ +\xa9\xa3\x3b\x9c\x0a\x6b\x9c\x9a\x4a\x31\xc6\x1e\xc8\xce\x9a\xaf\ +\xd3\x5a\x1c\x53\x70\xc5\xc5\xc5\xd4\xd2\xbe\x75\x70\xff\x0e\xfe\ +\xda\x09\xdd\x00\x2a\xf3\x7d\x11\xe9\x35\xcc\xd4\x28\xd3\x95\xf7\ +\xf1\xd3\x47\x2b\x74\x31\x8a\xab\xb8\xf7\x9a\xce\xfb\x03\xbb\x83\ +\x90\x64\x6a\xab\xcb\x9d\x8a\x74\xe9\x75\xe3\xf5\xfc\x43\x12\x57\ +\x0f\xcb\x99\xf0\x77\xc7\xfa\xf9\x41\x27\x9b\x87\xaa\x37\x90\xc4\ +\xcb\x19\xec\x90\x86\x02\xd7\xcf\xdd\x1a\x16\x16\x49\x18\x31\xda\ +\xa8\xb6\x2f\xee\x8b\xfc\x10\xf9\x4e\x21\x25\x93\xc3\xd9\x71\x1e\ +\x99\x25\x2d\x67\x3f\xab\xa2\xfa\xf2\x8f\xfc\x88\x3a\x37\xda\xb7\ +\xe4\xfb\x6a\xb7\xaf\xbe\xe8\x63\xa5\xb3\xe6\x75\xb0\x91\xde\xae\ +\x6a\xb1\x99\x86\x06\x3b\xea\x21\x9c\xcc\xee\x61\xe4\x2e\xd6\xeb\ +\xd2\x48\x9a\xcd\x98\x27\xd8\x0d\xad\x65\x20\x85\x88\x68\x55\xfc\ +\xab\x50\x71\x02\x38\x6c\xf4\x1a\xcd\xa1\x84\xb1\x20\x68\xe7\xc0\ +\xac\xb2\xca\x77\x9d\x6e\xeb\x24\x18\x01\x9d\x66\x9f\xcd\x95\xaf\ +\xd7\xa5\x06\x67\xe2\xde\x58\x59\x9d\x52\xdd\x68\xbb\x51\x9e\xe6\ +\xc5\xe2\xdd\x5a\xad\xd7\x74\xf5\xa1\x1e\xca\x21\x46\x49\x75\x5a\ +\x90\x0f\x33\xc7\x7b\xd1\x5a\x48\x26\xac\x91\x17\xac\xad\x95\xc2\ +\xf8\xa2\xb5\x3b\x6f\xb8\xed\x76\xd4\x46\x65\x07\xee\xdd\xe9\xc8\ +\xe4\x63\x67\xc6\x06\xb5\x3a\x19\x08\x0e\x55\x59\x6c\x97\x73\xc6\ +\xc7\xee\xcb\x11\xbc\xe2\x2c\x1c\x46\xe1\x1f\x32\xa9\x71\x6a\x34\ +\x08\xa4\x18\xfc\xe0\x49\x9d\xaf\x06\xa8\x57\x5e\xd3\xae\xc0\xcd\ +\x8b\x64\x93\x00\x24\x6a\x3d\x4a\x10\xab\xaf\xe1\x1c\x70\x6a\x6f\ +\x6f\x80\x90\xf0\xec\x13\xe3\x0b\x95\x8e\x30\xd2\x99\x01\xcf\xa6\ +\x30\x6d\x39\x53\xe9\x41\x9d\x4a\xfb\xce\x3a\xdb\x17\x0f\x85\x06\ +\x76\x7a\x37\x81\xa6\xbe\xed\xa1\x09\x86\x25\xb5\xe2\x4d\x3b\xf8\ +\x39\x4b\x2a\xa0\xa1\x7d\xa9\x8b\x5f\x4c\x2a\xff\x94\x7d\x2e\xb5\ +\xd5\x8a\xc0\xa5\x3e\x47\x61\xc8\x18\x3d\xbf\x3a\x02\x37\xd2\x10\ +\x85\x42\x72\xd8\x50\x37\xba\x9e\xd4\x5d\x4f\xea\x16\x80\x28\x89\ +\x7c\x11\xf8\x4c\x8c\x96\xf4\xa9\x50\x59\x09\x24\xb5\x5d\xce\xb6\ +\xaa\x2a\x92\xe3\x7b\x38\x57\x04\xe5\x8c\xf2\x39\x86\x3f\xe7\x27\ +\x97\x30\x1f\x71\x1f\x13\x31\x77\x03\x1f\x11\xc9\xb0\x4f\x6f\xbf\ +\xb5\x8b\x5d\x72\xdd\xc9\xdc\x1d\xef\xe9\xba\x9b\xaf\xee\x9c\x71\ +\x1a\x84\xb0\x73\x44\x99\x24\x80\xdc\x70\x0e\x54\xed\x4b\x42\x81\ +\xfc\xd9\x9c\x22\x42\x45\xe8\x53\x7f\xee\x86\x0c\x61\x8a\xb9\x00\ +\x67\x50\x82\xc1\x1b\x5c\xf2\xdb\x41\x28\x09\xe3\x88\x41\x7c\xd8\ +\x20\x94\x32\x40\x6c\x1c\xca\xb1\xee\x7a\x52\x77\x10\x4a\xeb\xf9\ +\xdf\x42\x80\x2e\x79\x0d\x05\xba\x53\xb4\xf4\x0d\x49\xd0\xc5\x6f\ +\x45\x83\xdf\x00\xa5\xc4\xf7\xaf\x60\xd4\x27\x38\xfc\xf3\x10\x5a\ +\xe7\x24\x46\x42\x86\x9c\x4a\x1f\xee\x29\xa6\x28\x04\xae\x63\x43\ +\xf0\x51\xca\x11\x15\x3e\xa6\x03\xf0\x89\x80\xa2\x40\x06\x3d\x1a\ +\x58\x4f\xea\xae\x27\x75\x01\x7c\xc0\x00\xcc\xe7\x24\x0c\x5f\x04\ +\xdf\x4b\x0e\x9d\x40\xa7\xf1\xe3\x05\xac\x4c\x86\xdf\x5c\xa3\xf0\ +\x5f\x87\xad\xc5\x1c\xf1\xc5\x65\x64\xbe\xd2\x1a\x9e\xb2\x46\xa6\ +\xad\x85\xbf\x0f\x97\x03\x97\x5f\x8f\xce\x74\x24\xa7\xa3\x3e\x8d\ +\x90\x3f\x08\xbb\xd7\x61\x7b\x2a\x41\x98\xff\xdb\xf3\xec\x12\xbe\ +\x1a\x37\xdf\x79\xa6\x48\xac\xef\x6c\x6d\x63\xaa\xd5\xf8\x29\xd1\ +\x87\x73\x25\xb9\x52\x76\x65\x3b\xb5\xd1\x75\xac\xc1\x6e\x13\xec\ +\x56\xb0\xca\x8b\x58\x17\x9d\x48\xd4\xd7\x40\xd4\xc2\xa1\x69\xc8\ +\x6e\x86\xab\x33\x6f\xb5\x72\x3c\x2d\x2f\x1f\x54\x9c\x1f\x20\x20\ +\xcf\x85\x5f\xf3\x1c\x42\xc0\x11\x7f\x2e\x30\xe1\xe3\x12\x51\x0e\ +\xb8\x92\x23\x21\x58\x62\x50\xd1\xcb\x80\xe3\xf1\xcc\x7d\x51\x80\ +\x2b\xdd\x54\x9d\x34\x6c\xa7\xfe\xe9\x10\x5b\x3e\xe4\x87\x4d\x61\ +\xdc\x52\x15\x7b\xfd\x7c\x26\x94\xfb\x7b\xd3\xe6\xb9\xfb\x26\xbc\ +\x6d\x73\xd1\xd3\x30\x73\xdd\xd5\x2a\x3f\x4e\xbf\xe0\x90\x64\xb0\ +\x4d\xb7\x6d\x57\x88\xa4\x23\x67\xb4\x1a\x5d\x03\x43\x30\x0f\x2e\ +\xa8\x1c\xcf\x59\xfd\x5c\x74\x9a\x10\xe5\xab\x5f\x01\x22\xee\x4e\ +\x55\x0f\xb0\xf2\xb5\x4a\xcb\xd1\xea\xca\x4c\xed\xdc\x2c\x8f\x75\ +\x39\xbd\xfa\xf6\x15\x57\x34\x5a\xfb\x5b\x75\x4c\xb6\xc9\x57\x1d\ +\x1b\x2a\x68\xc1\xb8\xd5\x95\x8a\x55\xa5\xce\xc0\xeb\x46\x20\x83\ +\x78\xd7\xc6\x40\x83\xbb\xf8\xcf\xc7\xef\x2d\x27\x45\xd1\xe2\xbf\ +\x79\xf1\x78\xa6\x13\xa3\xa0\x56\xd0\x35\x2d\x67\x96\x27\x4d\x73\ +\x14\x2d\x4c\xb2\xaa\xea\x3e\xd9\x02\x9c\x4c\x37\xfb\x77\x68\x2a\ +\x21\x05\xac\x60\xa0\x6c\x6a\xfc\xf3\x4b\x9b\xd7\x16\xba\xe9\x56\ +\x27\x1b\xfc\x38\xda\x26\x66\x92\xf7\x4b\x95\xa4\xe9\x0f\xc6\x48\ +\x8f\x3b\xdb\x97\x26\x55\xaa\xef\x6b\x9b\xcd\x6d\xb7\x0b\xaf\xdd\ +\x46\x47\x7e\xbd\x5d\xde\x79\x9d\x1b\xea\xa7\xcd\xd9\x3d\x03\x5c\ +\x5a\x0f\xa7\x6a\xa5\xd3\xe5\xec\x47\x23\x74\x46\xd2\x4d\x91\xef\ +\x77\x5b\x88\x4f\x3b\xbd\x73\xab\x89\xba\xed\x73\x1a\x62\x5f\xc3\ +\x36\x16\x59\x9e\x69\xe0\xf3\x22\x7f\xd4\x86\xde\x57\xac\xae\x25\ +\xcc\x63\x83\xd1\x05\x85\x26\x23\xec\x86\x0c\x15\x81\x99\xc5\x6a\ +\x5f\x55\xfd\xb1\x5f\xf3\x24\x5b\x80\xe5\x2c\xee\x46\xcf\x67\x51\ +\x7b\x74\xe0\xfa\xea\xc4\xe0\x4a\x5d\xa4\x00\x91\x6a\xe1\x77\x63\ +\xb1\x02\x0e\x28\x0a\x75\x5a\xf8\x48\x04\x62\x3e\xb0\x6c\x84\xcd\ +\xe1\x02\x07\xce\x56\x15\x8f\xba\x68\xd6\xfe\x94\x94\xc9\x2a\x49\ +\x8d\xad\xfa\x36\xd5\x1f\xe2\xa4\xdc\xc1\xe6\x17\x49\x66\xd6\xf6\ +\x21\x87\x4e\x7a\x9d\xe6\x07\x2b\xd7\x99\x82\x1f\x77\xa5\xa2\xc7\ +\x4d\xbd\xe8\x85\x8a\x20\xad\xf7\xa9\xaa\xce\x0c\x0d\xfe\xff\xb7\ +\x43\x03\x14\x08\xc6\x49\x30\xf7\x29\x82\x53\x02\x8a\x61\x47\x00\ +\xff\xfb\x42\x12\x36\xe7\x50\xfc\x06\x8c\x12\x3e\xa0\x75\xe3\x69\ +\x26\x31\x9b\x22\xe9\x0c\xdc\x57\xe5\x85\x0b\x04\xf4\xa4\xaa\x7d\ +\xa1\x4d\x9a\xda\x23\xb1\x1f\xa3\x97\x26\x8d\x7a\x56\x93\x93\x06\ +\x9e\x90\x97\x91\xb9\x86\x47\x0d\xbc\x01\x6a\x7a\xdc\x2b\x30\xbb\ +\xfd\x49\x4c\xa1\x95\x09\x11\x0d\x28\x17\x9c\x38\x3c\x40\x34\x0c\ +\x89\xcf\xe7\x50\xcf\x87\x58\x0a\xe1\x70\x01\x87\x1c\xf6\x05\x99\ +\xfb\x01\xf4\x41\x02\x9a\x83\x49\xcf\x7c\x9d\xbd\x25\xc2\xa6\x20\ +\x74\x46\xdd\xff\x15\xa6\x6c\x84\x37\xfd\xa0\x6c\x18\x11\xe7\x78\ +\x54\xa3\x72\x03\x5a\x2e\x22\x28\x86\xea\x22\x30\xed\x17\xc6\x4c\ +\x84\xa6\x1d\xb5\x77\x7d\x05\x01\xc5\x0d\x0b\x70\xe0\xcf\x09\x04\ +\xc4\x67\x92\x89\xdb\x31\x02\xf5\x71\x97\x17\x95\x0b\x71\xd1\xcd\ +\x57\x2b\xef\x21\xdf\x6a\xef\x94\x17\xc9\xa3\xf7\xb1\x3d\xdb\x4a\ +\xef\x47\xb5\xf2\x3e\x16\x6a\x5d\x79\x09\xc0\xaf\xac\x4b\x35\xb4\ +\xcb\x36\x17\x5f\x78\x8c\x77\xc9\x72\x06\xe0\x08\xa0\x43\xe4\x13\ +\x1f\x30\x5a\xbd\xd3\x33\x3d\xcb\x8f\x7d\xe8\xd7\xd8\xdc\x3a\x14\ +\x1a\xfb\x00\x36\x13\xce\x05\x87\x1a\x0d\x1a\x6d\x27\x72\xa0\xe4\ +\x32\x60\xe4\x54\x38\xd0\x70\xa2\x00\x40\x09\x08\x0c\x11\x07\x4d\ +\xe6\xb8\xdd\x5d\x6f\xa8\xd3\x9f\xe3\x9e\xd8\xce\xed\x8f\xd9\x39\ +\x78\x6e\x67\x39\xd6\xc8\x59\x3c\x31\xa3\x67\xc4\x4a\xad\x89\xf1\ +\xa2\xce\x89\xd2\x4b\xe0\x02\xce\xec\x4e\x63\x52\x7e\xbc\x2e\xaf\ +\x6b\xdc\xd6\x53\x93\x72\xd3\x60\x43\x2f\x6d\x5c\xca\x7b\x0a\x96\ +\xb3\x00\x4b\xe3\x56\xb3\x4e\x61\xd3\x64\x4a\x48\x5b\xf3\xd0\xcb\ +\xb1\xfa\xb1\xd8\xa7\xda\x64\xcd\x57\x28\x01\x6d\x9a\x0f\xc9\xbe\ +\x49\x73\x0e\x6c\x62\x2e\x22\x5f\x95\xeb\x75\x7a\xff\xce\x5c\xef\ +\x51\xce\xdb\x1f\x1c\xa3\xef\x88\xaa\x88\xfa\x4d\xd6\x10\xea\xe3\ +\xb4\x07\xd6\xe5\x84\x61\xca\x4c\x7e\x73\xea\x8b\x80\x43\xab\xd1\ +\xbb\xb3\x62\xa0\x32\x38\x8b\x84\xa4\x80\xb5\xfa\x4b\x14\x0d\x6f\ +\x67\xcf\xb3\x08\x2a\x64\x81\x25\x25\x73\xdb\xff\xd4\x69\x44\x18\ +\xa2\xbe\x84\x9c\x72\x09\x47\x2c\x10\x21\x70\x23\x43\x12\x68\x1c\ +\x86\xda\x66\x4b\xf6\x86\x48\x88\xa4\x08\x19\x35\x69\x64\xc5\x2e\ +\x1c\x11\x81\x4f\x68\x7f\xc8\x4e\xc1\xe6\x53\x59\x6b\xa4\xb5\x11\ +\x58\x31\x75\x46\x33\xa8\xd3\xda\x60\x60\xc3\x4a\x1b\x0b\x44\x3a\ +\xcf\xd7\x44\x2f\x67\x51\xa7\x71\x31\x8d\xc6\xcd\xe4\xf3\x3c\x1a\ +\xf5\x8a\xcf\x12\x69\xdc\x36\x0e\x12\xc9\xbf\x90\x48\x50\x4e\xbe\ +\x7f\x37\xee\xfb\x6e\x9f\x67\x56\x9b\x47\x06\xa7\xaf\xc3\xd5\x9d\ +\xb7\xf9\x16\x45\xc4\x74\x19\x41\x5f\x2c\x22\x80\x0e\xfd\x30\xc0\ +\x00\x57\x88\x3c\x30\x47\x80\x21\x80\x75\xab\x06\xb8\xa5\xd0\x96\ +\x61\x98\xe1\xa4\x0e\xc0\x9a\x30\x0e\xd4\x08\x48\x86\x92\x43\x84\ +\xa1\x43\xe0\x74\xe0\xe6\x0e\xe0\x43\x10\x83\x52\x24\x24\xa0\x27\ +\x08\x31\x43\x4c\x20\xce\x38\xa6\x17\x6a\x0d\x53\x5f\x48\x4b\x3c\ +\x57\xca\x0d\xdc\xbf\xde\xa8\xf8\xe8\x9b\x04\x6f\x39\x57\x16\xf2\ +\x56\xa4\x35\xc4\x1d\x46\xe6\x2b\x9d\x24\x58\xbe\x65\x4d\xda\x07\ +\xd3\x76\x1a\x39\x14\x49\x28\x95\x4c\xfd\xc6\x20\x2d\x79\x08\xdc\ +\x02\x80\x09\x78\x48\xa4\x04\xee\x31\x65\x38\x38\xcf\x1c\xd2\xe6\ +\xfb\x31\xf1\x25\xfb\x33\xf0\x21\x6c\xac\xfe\xba\xf8\x18\x36\x6f\ +\x93\x68\x21\x54\x76\xd7\xb8\x22\xf8\x63\x40\xb2\x8c\xca\x7b\x4c\ +\x5c\x73\x0e\x90\x09\x87\x7a\xc5\x0f\xe6\x44\xc2\x01\x01\x25\x0d\ +\x9b\xe8\x5c\x26\x31\x30\xc1\xc1\xe6\x7f\xa9\x46\x1c\x7c\xde\x8b\ +\x7e\xd2\x80\xe4\xf8\x65\xd4\xfc\x05\x9a\x98\xfa\xa0\xb9\x33\x5f\ +\x57\xee\x6f\xfe\x07\xcd\x1d\xa1\x65\ \x00\x00\x06\xd1\ \x00\ \x00\x27\xd8\x78\x9c\xed\x59\x5b\x6f\xe3\xb6\x12\x7e\xcf\xaf\xd0\ @@ -33405,10 +33660,19 @@ qt_resource_name = "\ \x00\x72\x00\x63\x00\x68\x00\x5f\x00\x42\x00\x75\x00\x69\x00\x6c\x00\x64\x00\x69\x00\x6e\x00\x67\x00\x2e\x00\x73\x00\x76\x00\x67\ \ \x00\x13\ +\x06\x64\xa3\x67\ +\x00\x41\ +\x00\x72\x00\x63\x00\x68\x00\x5f\x00\x53\x00\x70\x00\x61\x00\x63\x00\x65\x00\x5f\x00\x54\x00\x72\x00\x65\x00\x65\x00\x2e\x00\x73\ +\x00\x76\x00\x67\ +\x00\x13\ \x08\x0a\x92\x67\ \x00\x41\ \x00\x72\x00\x63\x00\x68\x00\x5f\x00\x4d\x00\x65\x00\x72\x00\x67\x00\x65\x00\x57\x00\x61\x00\x6c\x00\x6c\x00\x73\x00\x2e\x00\x73\ \x00\x76\x00\x67\ +\x00\x0e\ +\x06\xac\xdc\x27\ +\x00\x41\ +\x00\x72\x00\x63\x00\x68\x00\x5f\x00\x53\x00\x70\x00\x61\x00\x63\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x14\ \x03\x50\x84\x07\ \x00\x70\ @@ -33457,8 +33721,8 @@ 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\x01\x00\x00\x00\x3b\ -\x00\x00\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x1b\ +\x00\x00\x00\x10\x00\x02\x00\x00\x00\x01\x00\x00\x00\x3d\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x22\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\ \x00\x00\x02\x92\x00\x00\x00\x00\x00\x01\x00\x06\x6c\x9e\ @@ -33484,21 +33748,23 @@ qt_resource_struct = "\ \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\x05\x56\x00\x01\x00\x00\x00\x01\x00\x07\x5b\xb5\ -\x00\x00\x06\xbc\x00\x01\x00\x00\x00\x01\x00\x07\xb3\x28\ +\x00\x00\x07\x0a\x00\x01\x00\x00\x00\x01\x00\x07\xc2\xd9\ \x00\x00\x05\x9c\x00\x00\x00\x00\x00\x01\x00\x07\x6a\x2c\ \x00\x00\x04\x12\x00\x00\x00\x00\x00\x01\x00\x07\x05\x81\ -\x00\x00\x07\xec\x00\x01\x00\x00\x00\x01\x00\x08\x0a\xfd\ -\x00\x00\x06\x8e\x00\x01\x00\x00\x00\x01\x00\x07\xac\x53\ +\x00\x00\x08\x3a\x00\x01\x00\x00\x00\x01\x00\x08\x1a\xae\ +\x00\x00\x06\xdc\x00\x01\x00\x00\x00\x01\x00\x07\xbc\x04\ \x00\x00\x04\x4c\x00\x01\x00\x00\x00\x01\x00\x07\x13\xf0\ \x00\x00\x04\x9e\x00\x01\x00\x00\x00\x01\x00\x07\x27\x77\ \x00\x00\x03\xb6\x00\x01\x00\x00\x00\x01\x00\x06\xea\xdf\ -\x00\x00\x07\x86\x00\x00\x00\x00\x00\x01\x00\x07\xe7\xb9\ +\x00\x00\x07\xd4\x00\x00\x00\x00\x00\x01\x00\x07\xf7\x6a\ +\x00\x00\x06\x62\x00\x01\x00\x00\x00\x01\x00\x07\xa1\x29\ +\x00\x00\x06\xba\x00\x01\x00\x00\x00\x01\x00\x07\xb3\x16\ \x00\x00\x05\xdc\x00\x00\x00\x00\x00\x01\x00\x07\x84\x06\ \x00\x00\x05\x7c\x00\x01\x00\x00\x00\x01\x00\x07\x62\x64\ \x00\x00\x03\x94\x00\x01\x00\x00\x00\x01\x00\x06\xe1\xe6\ -\x00\x00\x06\x62\x00\x01\x00\x00\x00\x01\x00\x07\xa1\x29\ +\x00\x00\x06\x8e\x00\x01\x00\x00\x00\x01\x00\x07\xa7\xec\ \x00\x00\x03\x38\x00\x01\x00\x00\x00\x01\x00\x06\xcf\xc5\ -\x00\x00\x07\x5c\x00\x01\x00\x00\x00\x01\x00\x07\xe0\x24\ +\x00\x00\x07\xaa\x00\x01\x00\x00\x00\x01\x00\x07\xef\xd5\ \x00\x00\x04\x7a\x00\x01\x00\x00\x00\x01\x00\x07\x1d\x48\ \x00\x00\x03\x0e\x00\x01\x00\x00\x00\x01\x00\x06\xc6\x1d\ \x00\x00\x03\x74\x00\x01\x00\x00\x00\x01\x00\x06\xd9\x78\ @@ -33506,12 +33772,12 @@ qt_resource_struct = "\ \x00\x00\x05\x0a\x00\x00\x00\x00\x00\x01\x00\x07\x43\x72\ \x00\x00\x06\x3a\x00\x01\x00\x00\x00\x01\x00\x07\x98\xc4\ \x00\x00\x05\x34\x00\x01\x00\x00\x00\x01\x00\x07\x53\xf3\ -\x00\x00\x06\xe6\x00\x00\x00\x00\x00\x01\x00\x07\xbb\x6d\ +\x00\x00\x07\x34\x00\x00\x00\x00\x00\x01\x00\x07\xcb\x1e\ \x00\x00\x04\xc2\x00\x01\x00\x00\x00\x01\x00\x07\x2c\x8e\ -\x00\x00\x07\x30\x00\x01\x00\x00\x00\x01\x00\x07\xd7\xaa\ -\x00\x00\x07\x10\x00\x01\x00\x00\x00\x01\x00\x07\xcd\x70\ +\x00\x00\x07\x7e\x00\x01\x00\x00\x00\x01\x00\x07\xe7\x5b\ +\x00\x00\x07\x5e\x00\x01\x00\x00\x00\x01\x00\x07\xdd\x21\ \x00\x00\x05\xbc\x00\x01\x00\x00\x00\x01\x00\x07\x7d\xee\ -\x00\x00\x07\xb2\x00\x00\x00\x00\x00\x01\x00\x07\xf9\x88\ +\x00\x00\x08\x00\x00\x00\x00\x00\x00\x01\x00\x08\x09\x39\ \x00\x00\x03\xe8\x00\x00\x00\x00\x00\x01\x00\x06\xf3\x21\ \x00\x00\x04\xec\x00\x00\x00\x00\x00\x01\x00\x07\x34\x76\ \x00\x00\x02\xda\x00\x01\x00\x00\x00\x01\x00\x06\xbe\xcd\ diff --git a/src/Mod/Arch/InitGui.py b/src/Mod/Arch/InitGui.py index 51bb05d368..4cf4ece7ab 100644 --- a/src/Mod/Arch/InitGui.py +++ b/src/Mod/Arch/InitGui.py @@ -72,8 +72,8 @@ class ArchWorkbench(Workbench): self.archtools = ["Arch_Wall","Arch_Structure", "Arch_Floor","Arch_Building","Arch_Site", "Arch_Window","Arch_Roof","Arch_Axis", - "Arch_SectionPlane","Arch_Add","Arch_Remove", - "Arch_Fixture"] + "Arch_SectionPlane","Arch_Space","Arch_Add", + "Arch_Remove","Arch_Fixture"] self.meshtools = ["Arch_SplitMesh","Arch_MeshToShape", "Arch_SelectNonSolidMeshes","Arch_RemoveShape", "Arch_CloseHoles","Arch_MergeWalls"] diff --git a/src/Mod/Arch/Resources/Arch.qrc b/src/Mod/Arch/Resources/Arch.qrc index 4aafc08b0f..304c659ae2 100644 --- a/src/Mod/Arch/Resources/Arch.qrc +++ b/src/Mod/Arch/Resources/Arch.qrc @@ -32,6 +32,8 @@ icons/Arch_MergeWalls.svg icons/Arch_Wall_Tree_Assembly.svg icons/Arch_Fixture.svg + icons/Arch_Space.svg + icons/Arch_Space_Tree.svg ui/archprefs-base.ui translations/Arch_af.qm translations/Arch_de.qm diff --git a/src/Mod/Arch/Resources/icons/Arch_Space.svg b/src/Mod/Arch/Resources/icons/Arch_Space.svg new file mode 100644 index 0000000000..1e302c4dd5 --- /dev/null +++ b/src/Mod/Arch/Resources/icons/Arch_Space.svg @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Arch/Resources/icons/Arch_Space_Tree.svg b/src/Mod/Arch/Resources/icons/Arch_Space_Tree.svg new file mode 100644 index 0000000000..65ca3cf5e5 --- /dev/null +++ b/src/Mod/Arch/Resources/icons/Arch_Space_Tree.svg @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + +