diff --git a/src/Mod/Arch/ArchCommands.py b/src/Mod/Arch/ArchCommands.py index 96da0d2bd..8212772fa 100644 --- a/src/Mod/Arch/ArchCommands.py +++ b/src/Mod/Arch/ArchCommands.py @@ -525,6 +525,19 @@ def check(objectslist,includehidden=False): bad.append([o,str(translate("Arch","contains faces that are not part of any solid"))]) return bad + +def addFixture(fixture,baseobject): + '''addFixture(fixture,baseobject): adds the given object as a + fixture to the given base object''' + if hasattr(baseobject,"Fixtures"): + f = baseobject.Fixtures + f.append(fixture) + baseobject.Fixtures = f + if baseobject.ViewObject.DisplayMode != "Detailed": + fixture.ViewObject.hide() + else: + FreeCAD.Console.PrintMessage(str(translate("Arch","This object has no support for fixtures"))) + # command definitions ############################################### @@ -737,6 +750,30 @@ class _CommandCheck: FreeCADGui.Selection.addSelection(i[0]) +class _CommandFixture: + "the Arch Fixture command definition" + def GetResources(self): + return {'Pixmap' : 'Arch_Fixture', + 'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_Fixture","Add fixture"), + 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Fixture","Adds the selected components as fixtures to the active object")} + + def IsActive(self): + if len(FreeCADGui.Selection.getSelection()) > 1: + return True + else: + return False + + def Activated(self): + sel = FreeCADGui.Selection.getSelection() + FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Grouping"))) + host = sel.pop() + for o in sel: + FreeCADGui.doCommand("import Arch") + FreeCADGui.doCommand("Arch.addFixture(FreeCAD.ActiveDocument."+o.Name+",FreeCAD.ActiveDocument."+host.Name+")") + FreeCAD.ActiveDocument.commitTransaction() + FreeCAD.ActiveDocument.recompute() + + FreeCADGui.addCommand('Arch_Add',_CommandAdd()) FreeCADGui.addCommand('Arch_Remove',_CommandRemove()) FreeCADGui.addCommand('Arch_SplitMesh',_CommandSplitMesh()) @@ -745,3 +782,4 @@ FreeCADGui.addCommand('Arch_SelectNonSolidMeshes',_CommandSelectNonSolidMeshes() FreeCADGui.addCommand('Arch_RemoveShape',_CommandRemoveShape()) FreeCADGui.addCommand('Arch_CloseHoles',_CommandCloseHoles()) FreeCADGui.addCommand('Arch_Check',_CommandCheck()) +FreeCADGui.addCommand('Arch_Fixture',_CommandFixture()) diff --git a/src/Mod/Arch/ArchComponent.py b/src/Mod/Arch/ArchComponent.py index aa5a30064..786f48914 100644 --- a/src/Mod/Arch/ArchComponent.py +++ b/src/Mod/Arch/ArchComponent.py @@ -74,6 +74,7 @@ def addToComponent(compobject,addobject,mod=None): addobject.ViewObject.hide() break + def removeFromComponent(compobject,subobject): '''removeFromComponent(compobject,subobject): subtracts subobject from the given component. If the subobject is already part of the @@ -81,7 +82,7 @@ def removeFromComponent(compobject,subobject): it is added as a subtraction.''' if compobject == subobject: return found = False - attribs = ["Additions","Subtractions","Objects","Components","Base","Axes"] + attribs = ["Additions","Subtractions","Objects","Components","Base","Axes","Fixtures"] for a in attribs: if hasattr(compobject,a): if a == "Base": @@ -113,7 +114,7 @@ class ComponentTaskPanel: # the categories are shown only if they are not empty. self.obj = None - self.attribs = ["Base","Additions","Subtractions","Objects","Components","Axes"] + self.attribs = ["Base","Additions","Subtractions","Objects","Components","Axes","Fixtures"] self.form = QtGui.QWidget() self.form.setObjectName("TaskPanel") self.grid = QtGui.QGridLayout(self.form) @@ -263,6 +264,8 @@ class Component: "Other shapes that are appended to this object") obj.addProperty("App::PropertyLinkList","Subtractions","Base", "Other shapes that are subtracted from this object") + obj.addProperty("App::PropertyLinkList","Fixtures","Base", + "Shapes or Meshes that are appended to this object without modifying its geometry") obj.Proxy = self self.Type = "Component" self.Subvolume = None @@ -275,7 +278,18 @@ class Component: def __setstate__(self,state): if state: self.Type = state - + + def onChanged(self,obj,prop): + if prop == "Placement": + # make fixtures move along with host + if hasattr(obj,"Fixtures"): + vo = obj.Shape.Placement.Base + vn = obj.Placement.Base + import DraftVecUtils + if not DraftVecUtils.equals(vo,vn): + delta = vn.sub(vo) + for o in obj.Fixtures: + o.Placement.move(delta) def getSubVolume(self,base,width,plac=None): "returns a subvolume from a base object" @@ -388,7 +402,6 @@ class Component: base = base.cut(o.Shape) return base - class ViewProviderComponent: "A default View Provider for Component objects" def __init__(self,vobj): @@ -406,11 +419,22 @@ class ViewProviderComponent: return def getDisplayModes(self,vobj): - modes=[] + modes=["Detailed"] return modes def setDisplayMode(self,mode): - return mode + if mode == "Detailed": + if hasattr(self,"Object"): + if hasattr(self.Object,"Fixtures"): + for f in self.Object.Fixtures: + f.ViewObject.show() + return "Flat Lines" + else: + if hasattr(self,"Object"): + if hasattr(self.Object,"Fixtures"): + for f in self.Object.Fixtures: + f.ViewObject.hide() + return mode def __getstate__(self): return None @@ -419,7 +443,10 @@ class ViewProviderComponent: return None def claimChildren(self): - return [self.Object.Base]+self.Object.Additions+self.Object.Subtractions + c = [self.Object.Base]+self.Object.Additions+self.Object.Subtractions + if hasattr(self.Object,"Fixtures"): + c.extend(self.Object.Fixtures) + return c def setEdit(self,vobj,mode): taskd = ComponentTaskPanel() diff --git a/src/Mod/Arch/ArchWall.py b/src/Mod/Arch/ArchWall.py index 9fd625b82..5f0ca5cb0 100644 --- a/src/Mod/Arch/ArchWall.py +++ b/src/Mod/Arch/ArchWall.py @@ -362,9 +362,8 @@ class _Wall(ArchComponent.Component): for o in obj.OutList: if (Draft.getType(o) == "Window") or Draft.isClone(o,"Window"): o.Placement.move(delta) + ArchComponent.Component.onChanged(self,obj,prop) - - def getDefaultValues(self,obj): "returns normal,width,height values from this wall" width = 1.0 @@ -508,14 +507,14 @@ class _ViewProviderWall(ArchComponent.ViewProviderComponent): return ":/icons/Arch_Wall_Tree.svg" def getDisplayModes(self,vobj): - return ["Flat 2D"] + return ArchComponent.ViewProviderComponent.getDisplayModes(self,vobj)+["Flat 2D"] def setDisplayMode(self,mode): self.Object.Proxy.createGeometry(self.Object) if mode == "Flat 2D": return "Flat Lines" else: - return mode + return ArchComponent.ViewProviderComponent.setDisplayMode(self,mode) def attach(self,vobj): self.Object = vobj.Object diff --git a/src/Mod/Arch/ArchWindow.py b/src/Mod/Arch/ArchWindow.py index 55dc0c094..c3d72f30a 100644 --- a/src/Mod/Arch/ArchWindow.py +++ b/src/Mod/Arch/ArchWindow.py @@ -213,7 +213,7 @@ class _ViewProviderWindow(ArchComponent.ViewProviderComponent): if self.Object.Base: self.Object.Base.ViewObject.hide() FreeCADGui.Control.closeDialog() - return + return False def colorize(self,obj): "setting different part colors" diff --git a/src/Mod/Arch/Arch_rc.py b/src/Mod/Arch/Arch_rc.py index 870ae8d4f..37b7e01be 100644 --- a/src/Mod/Arch/Arch_rc.py +++ b/src/Mod/Arch/Arch_rc.py @@ -2,7 +2,7 @@ # Resource object code # -# Created: Wed Jul 3 13:10:05 2013 +# Created: Sun Jul 7 11:06:17 2013 # by: The Resource Compiler for PyQt (Qt v4.8.4) # # WARNING! All changes made in this file will be lost! @@ -30238,6 +30238,115 @@ qt_resource_data = "\ \xd2\x9d\x05\x58\x30\x1c\x10\x5c\xc1\xc0\xb9\x84\x28\x3a\x0e\x7c\ \x1e\x69\x22\x66\xf0\xbf\x6e\xdf\x34\x9b\xcb\xfa\xdb\x5d\xc5\xd7\ \x0f\x77\x73\x77\xf7\x79\xb8\xfb\x37\x54\x09\xba\x52\ +\x00\x00\x06\xab\ +\x00\ +\x00\x22\x6d\x78\x9c\xed\x58\xeb\x8f\xdb\x36\x12\xff\xbe\x7f\x85\ +\x4e\xf9\x92\x45\x4d\x8a\x0f\x49\x14\xb5\xf6\x16\xc5\x05\x29\x0a\ +\xb4\x28\x70\x4d\x70\x1f\x0f\xb2\x44\xdb\xca\xca\x92\x41\xc9\x6b\ +\x3b\x7f\x7d\x87\xb2\x5e\xde\xd5\x3e\x2f\x71\xda\xbb\x18\x58\xac\ +\x34\x0f\xce\x70\xe6\x37\x43\x6a\xa6\x3f\xee\xd7\x99\x75\xab\x74\ +\x99\x16\xf9\xcc\xa6\x98\xd8\x96\xca\xe3\x22\x49\xf3\xe5\xcc\xfe\ +\xf8\xe1\x3d\x0a\x6c\xab\xac\xa2\x3c\x89\xb2\x22\x57\x33\x3b\x2f\ +\xec\x1f\xaf\x2f\xa6\xff\x40\xc8\xfa\xa7\x56\x51\xa5\x12\x6b\x97\ +\x56\x2b\xeb\x97\xfc\xa6\x8c\xa3\x8d\xb2\xde\xae\xaa\x6a\x13\x3a\ +\xce\x6e\xb7\xc3\x69\x43\xc4\x85\x5e\x3a\x97\x16\x42\xd7\x17\x17\ +\xd3\xf2\x76\x79\x61\x59\x16\xd8\xcd\xcb\x30\x89\x67\x76\xa3\xb0\ +\xd9\xea\xac\x16\x4c\x62\x47\x65\x6a\xad\xf2\xaa\x74\x28\xa6\x8e\ +\xdd\x8b\xc7\xbd\x78\x6c\xac\xa7\xb7\x2a\x2e\xd6\xeb\x22\x2f\x6b\ +\xcd\xbc\x7c\x33\x10\xd6\xc9\xa2\x93\x36\xde\xec\x78\x2d\x44\xa5\ +\x94\x0e\x61\x0e\x63\x08\x24\x50\x79\xc8\xab\x68\x8f\x4e\x55\xc1\ +\xc7\x31\x55\x46\x08\x71\x80\xd7\x4b\x3e\x4f\x2a\xdc\x67\x10\x8a\ +\x07\x9d\xa9\xb9\x43\xeb\x10\xfe\x0d\xfc\x75\x0a\x2d\x01\x97\xc5\ +\x56\xc7\x6a\x01\x9a\x0a\xe7\xaa\x72\xde\x7d\x78\xd7\x31\x11\xc1\ +\x49\x95\x0c\x96\x69\xa3\x7f\x62\xf7\x24\x25\x79\xb4\x56\xe5\x26\ +\x8a\x55\xe9\xb4\xf4\x5a\x7f\x97\x26\xd5\x6a\x66\xfb\xee\x66\x5f\ +\xbf\xaf\x54\xba\x5c\x55\x03\x42\x9a\xcc\x6c\xd8\x21\x93\x81\x57\ +\xbf\x0f\x00\x44\x8f\x02\xcd\x72\x61\xc7\x21\xd8\x0d\xb0\x6b\x69\ +\x29\xb9\xac\x45\x5a\xbf\xc3\xa4\x88\x8d\x23\x33\xfb\x27\x1d\xaf\ +\xfe\xf3\x53\x92\x60\x13\xbc\x6b\x90\x99\x26\x6a\x51\x1a\xd9\xa3\ +\x45\xf3\x06\x26\x45\xcd\x03\x2e\x84\x4d\x45\xfa\x67\x1d\x25\x29\ +\x80\xe5\x28\x77\x94\x3c\xe5\x70\x21\x79\xa3\x03\x5a\x65\x55\x6c\ +\x5a\x59\xf0\xa2\x3a\x64\x60\xda\x10\x51\x5c\x64\x85\x0e\xdf\x40\ +\xfa\x16\x41\x74\x55\x93\x0a\x88\x4e\x5a\x1d\x42\x7a\x65\xf7\x3a\ +\xc5\x62\x51\x2a\x08\x07\x19\xd0\xea\x88\x80\x06\xd8\xf2\x6c\xcb\ +\x79\x89\x35\xdf\x5f\x2c\x9e\x61\x8d\x8e\x5b\x13\x9d\xb5\xa9\x73\ +\xba\xed\xc7\xa3\xd4\x26\x08\xdc\xc8\x54\x0c\xeb\x47\xd9\x2e\x3a\ +\x94\x9d\x91\x1a\x94\xe1\x4a\x2b\x28\xa2\x37\x23\xf1\x7c\x34\xdc\ +\xb2\x5f\x86\x82\xe7\x0c\x13\x2e\x02\xe2\x77\xd4\x03\x50\x3d\x17\ +\x13\x42\x5d\x3a\x90\x65\x40\x65\x38\x08\x98\xef\x06\xbd\x2c\x50\ +\x25\x66\xc2\xa5\x03\xe2\xb2\xb1\xf5\x31\x4f\x2b\x28\xc2\x6d\xa9\ +\xf4\x1f\x06\xc8\xbf\xe7\x1f\x4b\x75\x4f\xea\x83\x8e\xf2\x12\xaa\ +\x66\x3d\xb3\x2b\xf3\x98\x41\xdf\x7a\x8b\xd8\x04\xb1\xcb\x3e\x7a\ +\x5f\x27\x4e\x88\x3d\x11\x29\x14\x7c\xdb\x58\x3d\xb5\xff\xd1\x6a\ +\x82\x5d\x9d\xb1\x9e\x90\x7f\xde\x8a\x42\xe4\x95\x35\x35\x1e\xab\ +\xb3\xf6\x1e\x24\xcf\x1c\x2b\xff\xdb\xf4\x1f\x44\x9f\xaa\x2b\xf2\ +\x77\xe8\x41\x94\x10\x4c\x99\xc7\xe5\x04\x09\x4c\x29\x11\xf2\xe9\ +\x8e\x34\x8e\x32\x7a\x56\x94\xd1\x33\xa3\xcc\x7b\x1d\xca\x46\xf3\ +\xf6\x40\x8a\xc7\xe1\x30\x0a\x9d\xc7\x73\xca\xb1\x24\x3e\xf3\x26\ +\xc8\xc5\x2c\x80\xe4\x5e\xbe\x10\x31\x23\x09\x06\x9f\x5e\x53\x18\ +\x0f\xd5\xd8\x57\x3e\xf3\x1e\xdd\x89\x27\xbf\x64\x01\x05\x01\x16\ +\xbe\x2f\x64\x30\xf1\x09\x96\xd2\x17\x81\x7f\xf9\xb5\xea\xfe\x75\ +\x75\x29\xce\x5a\x97\x67\xbe\x7b\xc2\x3d\xe0\xff\xbd\x2e\x87\xf7\ +\xb7\x27\x2a\x53\xfc\xf7\x95\xf9\x40\xef\x3f\xef\x75\x8c\x9d\x19\ +\x64\xaf\xfc\xc4\xf9\x5f\x02\xd9\x0b\xda\x3f\xfb\x5a\x28\x23\xe7\ +\xbd\xf3\x8b\x33\xa3\x2c\xf8\x8e\x32\xf1\x6c\x94\x91\xe7\x82\x6c\ +\xea\x98\xa9\x4d\xfd\xd4\x0d\x7c\xcc\xb4\x27\xb9\x4d\xd5\xee\xa2\ +\x73\x66\x1e\x75\xde\x6d\xa2\xa5\xaa\x93\x0a\x96\x17\xf5\xaf\x61\ +\xcc\x0b\x9d\x28\xdd\xb2\xfc\xfa\x77\xc2\x6a\xf2\x7e\x1c\x63\x5e\ +\x9c\x7a\x67\x56\xed\xf8\x64\x9c\x5f\xae\xa2\xa4\xd8\xcd\x6c\x76\ +\x97\xf9\xb9\x28\x20\xfe\x1c\xf2\x29\x49\x20\xf8\x5d\x76\xbc\x9f\ +\xd9\x70\x7d\x17\x2c\x08\x3c\x1e\xdc\xe3\x82\x41\x97\x61\xe6\x4a\ +\x9f\x7a\xf7\x98\x5b\xad\x21\xa6\x28\x8b\x0e\x0a\x76\x55\xff\x6b\ +\x11\x5a\xae\x8a\xdd\x52\x9b\xe8\x54\x7a\xab\xee\x6a\x26\x45\xbc\ +\x35\x33\x52\xb4\x3d\x66\xba\x99\xcc\x0d\x24\x8c\x2e\x9a\xcf\x8b\ +\xfd\xf8\x02\xbb\x34\x87\xdd\xa2\x66\xd6\x47\x25\xbb\x17\x93\x46\ +\xa2\x9d\xfe\x51\xe2\x89\x07\x44\xf6\x7d\x21\xdf\x65\x1d\x1e\x66\ +\xad\xa3\x7d\xba\x4e\x3f\xab\xa4\xaf\xca\x4e\xa4\xcc\xa3\x0d\xca\ +\x8b\x44\x95\xe3\xde\x17\xf3\x4f\x00\xb6\x13\x89\x06\x70\x6b\x55\ +\x45\x49\x54\x45\x3d\xb8\x5a\x0a\x93\xb2\xed\x61\x53\x9d\x2c\xc2\ +\x7f\xbd\x7b\xdf\x35\x98\x38\x0e\xff\x5d\xe8\x9b\xbe\x37\x18\x81\ +\x68\x5e\x6c\x61\xe3\x5d\xdf\x33\x13\xc9\x38\x34\xd5\x18\x55\xd7\ +\xe9\x1a\x20\x63\xe6\xbc\x3f\xec\xd7\x19\xc0\xbc\x63\x9c\x08\x57\ +\x87\x8d\xea\x17\x3d\x2e\xab\xd5\x71\x8e\x3b\x3a\xfa\x4e\xe2\x75\ +\x6a\x94\x9c\x3f\xaa\x34\xcb\x7e\x31\x46\x06\x8d\xb0\x59\x34\xad\ +\x32\x75\x5d\xdb\x3c\x3e\xb6\xbb\x70\x9a\x6d\xb4\x7d\x6c\xb0\xcb\ +\xa9\xd3\x86\xa1\x7e\x5b\xf6\xe1\x39\x01\x5d\x17\xe0\x2c\x9a\xab\ +\x6c\x66\xff\x6a\x98\xd6\x3d\xee\x52\x17\xdb\xcd\x1a\x82\xdf\xa8\ +\xb7\x61\xdd\x44\xd5\xaa\x75\xb5\xe9\xd2\x0b\xd8\x46\xf8\x26\x08\ +\xe6\xa2\xee\xcf\xba\xb8\x51\xf5\xf9\xc0\x5d\xaf\x79\x3d\x62\x30\ +\x64\xed\xab\xe9\x37\x60\x25\x9c\x6f\xab\x6a\x48\xfb\x54\xa4\x79\ +\x08\x86\xf3\xa4\xa5\xf6\x9d\xbe\x3f\x77\xe0\x77\x65\x6c\x0e\x98\ +\xf5\xab\xde\x66\x2a\xcc\x8b\xfc\x33\x34\x8a\x56\x1f\x42\xad\x74\ +\x06\x20\xac\x42\xb7\xa5\x25\x11\xf4\x01\xad\xa3\x83\x11\x56\x43\ +\xea\xf1\x08\x09\xc9\xd5\x3a\xd2\x37\x4a\x1f\xf9\xb7\x69\x99\xce\ +\xd3\xcc\x18\xaa\x1f\x33\x75\x95\xa4\xe5\x06\xa2\x12\xa6\xb9\xf1\ +\xfa\xaa\xb8\x55\x7a\x91\x15\xbb\x8e\xaf\xf2\x08\xfe\xa1\x79\x14\ +\xdf\x2c\xeb\xed\x84\x51\x0c\xc5\xbc\x35\xbd\xbd\xeb\xab\x90\x98\ +\xdf\x2c\x86\x3d\x41\x99\x14\xee\x84\x73\xec\x12\xea\xf9\xd4\x62\ +\x12\x73\xca\x84\x9c\x50\x89\x85\xe0\x7e\xe0\x59\x3e\xc5\x82\x52\ +\xca\xc5\x84\x13\x60\xfa\x84\xb8\x16\x17\x70\x34\x70\x38\x1c\x26\ +\xae\xc4\x40\x11\xdc\xb3\x3e\x9f\x1c\x00\x26\x57\x20\x3c\xfa\xbd\ +\x98\x43\x06\xaa\x42\x23\xe8\x4f\xb7\x51\xb5\xd5\x6a\x78\x52\xf7\ +\x8d\x1c\x00\x60\xb0\x0a\x15\x18\x9b\x5f\x7f\x82\x3e\x88\x03\x06\ +\x9f\x68\x0b\xf1\x1d\x07\x2f\xc1\xc1\x7a\x14\x07\xc4\x00\x80\x05\ +\xae\xe0\xd4\xa2\x3e\x76\x3d\x9f\x13\xee\x4f\x24\xf6\x28\x0f\x2c\ +\x1a\x60\xe6\xf9\x0c\xd2\x4f\x2c\x44\x15\xf2\x27\x70\x33\xc4\x9e\ +\x94\xdc\x13\xe3\x38\xe0\x5f\x0e\x07\xcf\x01\x02\xdc\x82\x94\x3b\ +\xff\x0e\x84\x97\x01\x61\xac\xaa\x99\x8b\x5d\x26\xb8\xb9\x0e\xf6\ +\x88\x40\x04\xf2\x2f\x28\x9f\x00\x34\xa4\x20\x00\x0e\x80\x41\xf3\ +\xc8\x26\xd4\xc5\x5c\x4a\xe6\x7b\x96\x19\x3b\x4a\xe9\x73\xc0\x09\ +\x00\xc7\x65\xfe\x38\x38\xbc\x67\x83\x63\x34\xf3\xcf\x46\xd4\x11\ +\x21\x6d\xa2\x08\xf6\x3d\xcf\xf5\x19\xe3\x23\xe9\x7c\x69\x6e\x4f\ +\xb2\xd7\x02\xec\x6c\x89\x83\x1b\xa0\x60\xd0\xb7\x27\x1e\xa6\x84\ +\x71\x8f\x43\xfd\x06\x58\xb8\x01\xdc\x27\x2d\x04\x4f\xd2\xa3\x3e\ +\xd4\xaa\xa1\x72\x57\xf8\x81\xb4\x86\x44\x89\x03\x16\xc8\xc0\x3a\ +\x32\x65\x4d\x43\x2d\x11\xce\x01\x19\xd4\x95\x0e\xc4\x4e\x1d\xdd\ +\x21\xf7\xb6\xda\x25\x4e\x33\xad\x21\x2f\x70\x43\xe2\xc8\x1f\xce\ +\xf4\x47\xea\x77\x24\x15\x70\x7f\x79\x7b\xff\x33\x41\x22\x72\xf9\ +\xec\xec\x7c\xa9\x0e\x30\x56\xc1\xbd\xf9\xbf\x60\x49\xbb\x04\x9b\ +\xb9\xbf\x37\x61\xd8\x17\xd0\xe5\x39\xeb\xa1\xc1\x82\x33\x62\xe3\ +\x68\xec\x09\x70\x8c\x7e\xf8\x3d\xd2\x08\xa6\xce\xf2\xfa\x62\x6a\ +\xae\xc9\xd7\x17\x7f\x02\x3a\x43\xda\x26\ \x00\x00\x07\xc4\ \x00\ \x00\x37\x1e\x78\x9c\xed\x5b\x6d\x8f\x9b\x48\x12\xfe\x3e\xbf\x82\ @@ -33264,6 +33373,10 @@ qt_resource_name = "\ \x0a\xa2\x3b\x27\ \x00\x41\ \x00\x72\x00\x63\x00\x68\x00\x5f\x00\x43\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x10\ +\x00\xf0\x67\xc7\ +\x00\x41\ +\x00\x72\x00\x63\x00\x68\x00\x5f\x00\x46\x00\x69\x00\x78\x00\x74\x00\x75\x00\x72\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x0d\ \x07\x4a\x92\xc7\ \x00\x41\ @@ -33344,8 +33457,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\x3a\ -\x00\x00\x00\x00\x00\x02\x00\x00\x00\x1f\x00\x00\x00\x1b\ +\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\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\ @@ -33370,34 +33483,35 @@ 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\x96\x00\x01\x00\x00\x00\x01\x00\x07\xac\x79\ -\x00\x00\x05\x76\x00\x00\x00\x00\x00\x01\x00\x07\x63\x7d\ +\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\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\xc6\x00\x01\x00\x00\x00\x01\x00\x08\x04\x4e\ -\x00\x00\x06\x68\x00\x01\x00\x00\x00\x01\x00\x07\xa5\xa4\ +\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\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\x60\x00\x00\x00\x00\x00\x01\x00\x07\xe1\x0a\ -\x00\x00\x05\xb6\x00\x00\x00\x00\x00\x01\x00\x07\x7d\x57\ -\x00\x00\x05\x56\x00\x01\x00\x00\x00\x01\x00\x07\x5b\xb5\ +\x00\x00\x07\x86\x00\x00\x00\x00\x00\x01\x00\x07\xe7\xb9\ +\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\x3c\x00\x01\x00\x00\x00\x01\x00\x07\x9a\x7a\ +\x00\x00\x06\x62\x00\x01\x00\x00\x00\x01\x00\x07\xa1\x29\ \x00\x00\x03\x38\x00\x01\x00\x00\x00\x01\x00\x06\xcf\xc5\ -\x00\x00\x07\x36\x00\x01\x00\x00\x00\x01\x00\x07\xd9\x75\ +\x00\x00\x07\x5c\x00\x01\x00\x00\x00\x01\x00\x07\xe0\x24\ \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\ -\x00\x00\x05\xe6\x00\x01\x00\x00\x00\x01\x00\x07\x8c\xc5\ +\x00\x00\x06\x0c\x00\x01\x00\x00\x00\x01\x00\x07\x93\x74\ \x00\x00\x05\x0a\x00\x00\x00\x00\x00\x01\x00\x07\x43\x72\ -\x00\x00\x06\x14\x00\x01\x00\x00\x00\x01\x00\x07\x92\x15\ +\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\xc0\x00\x00\x00\x00\x00\x01\x00\x07\xb4\xbe\ +\x00\x00\x06\xe6\x00\x00\x00\x00\x00\x01\x00\x07\xbb\x6d\ \x00\x00\x04\xc2\x00\x01\x00\x00\x00\x01\x00\x07\x2c\x8e\ -\x00\x00\x07\x0a\x00\x01\x00\x00\x00\x01\x00\x07\xd0\xfb\ -\x00\x00\x06\xea\x00\x01\x00\x00\x00\x01\x00\x07\xc6\xc1\ -\x00\x00\x05\x96\x00\x01\x00\x00\x00\x01\x00\x07\x77\x3f\ -\x00\x00\x07\x8c\x00\x00\x00\x00\x00\x01\x00\x07\xf2\xd9\ +\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\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\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 4a8d4ee9f..7d7fd9f5e 100644 --- a/src/Mod/Arch/InitGui.py +++ b/src/Mod/Arch/InitGui.py @@ -72,7 +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_SectionPlane","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 8197a7a2c..4aafc08b0 100644 --- a/src/Mod/Arch/Resources/Arch.qrc +++ b/src/Mod/Arch/Resources/Arch.qrc @@ -31,6 +31,7 @@ icons/Arch_SelectNonManifold.svg icons/Arch_MergeWalls.svg icons/Arch_Wall_Tree_Assembly.svg + icons/Arch_Fixture.svg ui/archprefs-base.ui translations/Arch_af.qm translations/Arch_de.qm diff --git a/src/Mod/Arch/Resources/icons/Arch_Fixture.svg b/src/Mod/Arch/Resources/icons/Arch_Fixture.svg new file mode 100644 index 000000000..ee11cd0a8 --- /dev/null +++ b/src/Mod/Arch/Resources/icons/Arch_Fixture.svg @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + +