Merge branch 'master' of ssh://git.code.sf.net/p/free-cad/code

This commit is contained in:
wmayer 2013-07-07 21:19:40 +02:00
commit f43f63d3b6
8 changed files with 455 additions and 32 deletions

View File

@ -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())

View File

@ -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()

View File

@ -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

View File

@ -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"

View File

@ -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\

View File

@ -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"]

View File

@ -31,6 +31,7 @@
<file>icons/Arch_SelectNonManifold.svg</file>
<file>icons/Arch_MergeWalls.svg</file>
<file>icons/Arch_Wall_Tree_Assembly.svg</file>
<file>icons/Arch_Fixture.svg</file>
<file>ui/archprefs-base.ui</file>
<file>translations/Arch_af.qm</file>
<file>translations/Arch_de.qm</file>

View File

@ -0,0 +1,243 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg2985"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="Arch_Add.svg">
<defs
id="defs2987">
<linearGradient
id="linearGradient3793">
<stop
style="stop-color:#000f8a;stop-opacity:1;"
offset="0"
id="stop3795" />
<stop
style="stop-color:#0066ff;stop-opacity:1;"
offset="1"
id="stop3797" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3793"
id="linearGradient3799"
x1="12.037806"
y1="54.001419"
x2="52.882648"
y2="9.274148"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-2,-2)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3793-2"
id="linearGradient3799-8"
x1="12.037806"
y1="54.001419"
x2="52.882648"
y2="9.274148"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3793-2">
<stop
style="stop-color:#000f8a;stop-opacity:1;"
offset="0"
id="stop3795-6" />
<stop
style="stop-color:#0066ff;stop-opacity:1;"
offset="1"
id="stop3797-0" />
</linearGradient>
<linearGradient
id="linearGradient3793-3">
<stop
style="stop-color:#000f8a;stop-opacity:1;"
offset="0"
id="stop3795-9" />
<stop
style="stop-color:#0066ff;stop-opacity:1;"
offset="1"
id="stop3797-6" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3793-1"
id="linearGradient3799-0"
x1="12.037806"
y1="54.001419"
x2="52.882648"
y2="9.274148"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-100.12539,-7.11079)" />
<linearGradient
id="linearGradient3793-1">
<stop
style="stop-color:#000f8a;stop-opacity:1;"
offset="0"
id="stop3795-1" />
<stop
style="stop-color:#0066ff;stop-opacity:1;"
offset="1"
id="stop3797-5" />
</linearGradient>
<linearGradient
y2="9.274148"
x2="52.882648"
y1="54.001419"
x1="12.037806"
gradientTransform="translate(-3.90625,-4.28125)"
gradientUnits="userSpaceOnUse"
id="linearGradient3141"
xlink:href="#linearGradient3793-1"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3793"
id="linearGradient3159"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(88.766798,60.996786)"
x1="12.037806"
y1="54.001419"
x2="52.882648"
y2="9.274148" />
<linearGradient
id="linearGradient3793-7">
<stop
style="stop-color:#000f8a;stop-opacity:1;"
offset="0"
id="stop3795-5" />
<stop
style="stop-color:#0066ff;stop-opacity:1;"
offset="1"
id="stop3797-2" />
</linearGradient>
<linearGradient
y2="9.274148"
x2="52.882648"
y1="54.001419"
x1="12.037806"
gradientTransform="translate(-3.90625,-4.28125)"
gradientUnits="userSpaceOnUse"
id="linearGradient3141-8"
xlink:href="#linearGradient3793-7"
inkscape:collect="always" />
<linearGradient
id="linearGradient3793-12">
<stop
style="stop-color:#000f8a;stop-opacity:1;"
offset="0"
id="stop3795-2" />
<stop
style="stop-color:#0066ff;stop-opacity:1;"
offset="1"
id="stop3797-7" />
</linearGradient>
<linearGradient
y2="9.274148"
x2="52.882648"
y1="54.001419"
x1="12.037806"
gradientTransform="translate(-3.90625,-4.28125)"
gradientUnits="userSpaceOnUse"
id="linearGradient3141-1"
xlink:href="#linearGradient3793-12"
inkscape:collect="always" />
<linearGradient
id="linearGradient3793-0">
<stop
style="stop-color:#000f8a;stop-opacity:1;"
offset="0"
id="stop3795-67" />
<stop
style="stop-color:#0066ff;stop-opacity:1;"
offset="1"
id="stop3797-8" />
</linearGradient>
<linearGradient
y2="9.274148"
x2="52.882648"
y1="54.001419"
x1="12.037806"
gradientTransform="translate(-3.90625,-4.28125)"
gradientUnits="userSpaceOnUse"
id="linearGradient3141-7"
xlink:href="#linearGradient3793-0"
inkscape:collect="always" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="3.8890873"
inkscape:cx="-7.7288538"
inkscape:cy="42.249615"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1920"
inkscape:window-height="1057"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:snap-nodes="true"
inkscape:object-nodes="true" />
<metadata
id="metadata2990">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<path
style="fill:#88b7ff;stroke:#000345;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;color:#000000;fill-opacity:1;fill-rule:nonzero;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="M 2.5712974,33.401561 29.31279,19.773685 61.711137,30.316004 37.283812,49.600735 z"
id="path3161"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#2678f7;stroke:#000345;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;color:#000000;fill-opacity:1;fill-rule:nonzero;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 2.5712974,33.401561 0,19.284731 16.4563036,9.5138 18.256212,0 -1e-6,-12.599357 z"
id="path3163"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<path
style="fill:#001e4b;stroke:#000345;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;color:#000000;fill-opacity:1;fill-rule:nonzero;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 37.283812,49.600735 24.427325,-19.284731 -0.25713,16.970563 -16.970562,14.399265 -7.199632,0.51426 z"
id="path3165"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="opacity:0.65546223;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 42.72312,5.102353 0,8.748873 -8.79516,0 0,8.347689 8.79516,0 0,9.82898 8.34769,0 0,-9.82898 9.79812,0 0,-8.347689 -9.79812,0 0,-8.748873 -8.34769,0 z"
id="rect2993-6-6" />
<path
style="color:#000000;fill:url(#linearGradient3799-0);fill-opacity:1;fill-rule:nonzero;stroke:#000345;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 40.10795,2.6771232 0,8.7488728 -8.79516,0 0,8.347689 8.79516,0 0,9.82898 8.34769,0 0,-9.82898 9.79812,0 0,-8.347689 -9.79812,0 0,-8.7488728 -8.34769,0 z"
id="rect2993-0"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.6 KiB