+ unify DLL export defines to namespace names
git-svn-id: https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk@5000 e8eeb9e2-ec13-0410-a4a9-efa5cf37419d
36
src/Mod/Arch/Arch.py
Normal file
@@ -0,0 +1,36 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* 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 *
|
||||
#* *
|
||||
#***************************************************************************
|
||||
|
||||
__title__="FreeCAD Arch API"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
from Wall import *
|
||||
from Cell import *
|
||||
from Floor import *
|
||||
from Site import *
|
||||
from Building import *
|
||||
from Structure import *
|
||||
from Commands import *
|
||||
from SectionPlane import *
|
||||
from Window import *
|
||||
9217
src/Mod/Arch/Arch_rc.py
Normal file
99
src/Mod/Arch/Building.py
Normal file
@@ -0,0 +1,99 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* 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 Cell,FreeCAD,FreeCADGui
|
||||
from PyQt4 import QtCore
|
||||
|
||||
__title__="FreeCAD Building"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
def makeBuilding(objectslist,join=False,name="Building"):
|
||||
'''makeBuilding(objectslist,[joinmode]): creates a building including the
|
||||
objects from the given list. If joinmode is True, components will be joined.'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
|
||||
Building(obj)
|
||||
ViewProviderBuilding(obj.ViewObject)
|
||||
obj.Components = objectslist
|
||||
for comp in obj.Components:
|
||||
comp.ViewObject.hide()
|
||||
obj.JoinMode = join
|
||||
return obj
|
||||
|
||||
class CommandBuilding:
|
||||
"the Arch Building command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_Building',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_Building","Building"),
|
||||
'Accel': "B, U",
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Building","Creates a building object including selected objects.")}
|
||||
|
||||
def Activated(self):
|
||||
FreeCAD.ActiveDocument.openTransaction("Building")
|
||||
makeBuilding(FreeCADGui.Selection.getSelection())
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
|
||||
class Building(Cell.Cell):
|
||||
"The Building object"
|
||||
def __init__(self,obj):
|
||||
Cell.Cell.__init__(self,obj)
|
||||
self.Type = "Building"
|
||||
|
||||
class ViewProviderBuilding(Cell.ViewProviderCell):
|
||||
"A View Provider for the Building object"
|
||||
def __init__(self,vobj):
|
||||
Cell.ViewProviderCell.__init__(self,vobj)
|
||||
|
||||
def getIcon(self):
|
||||
return """
|
||||
/* XPM */
|
||||
static char * Arch_Building_xpm[] = {
|
||||
"16 16 9 1",
|
||||
" c None",
|
||||
". c #160E0A",
|
||||
"+ c #C10007",
|
||||
"@ c #FF0006",
|
||||
"# c #8F3F00",
|
||||
"$ c #5E5F5D",
|
||||
"% c #7F817E",
|
||||
"& c #A0A29F",
|
||||
"* c #F4F6F3",
|
||||
" ",
|
||||
" ........ ",
|
||||
" ..#@@@@@. ",
|
||||
" .&&.+@@@@@. ",
|
||||
" .&**%.@@@@@+. ",
|
||||
" .&****..@@@+...",
|
||||
".%******.##..$$.",
|
||||
".&******&.$&**%.",
|
||||
".%*...$**.****% ",
|
||||
".%*..#.**.****% ",
|
||||
" %*..#.**.****$ ",
|
||||
" $*..#.**.***$. ",
|
||||
" $*..#$**.**.. ",
|
||||
" .$...$**.&. ",
|
||||
" . .$%.. ",
|
||||
" .. "};
|
||||
"""
|
||||
|
||||
FreeCADGui.addCommand('Arch_Building',CommandBuilding())
|
||||
37
src/Mod/Arch/CMakeLists.txt
Normal file
@@ -0,0 +1,37 @@
|
||||
|
||||
SET(Arch_SRCS
|
||||
Init.py
|
||||
InitGui.py
|
||||
Component.py
|
||||
Cell.py
|
||||
Wall.py
|
||||
importIFC.py
|
||||
ifcReader.py
|
||||
IFC2X3_TC1.exp
|
||||
Arch_rc.py
|
||||
Arch.py
|
||||
Building.py
|
||||
Floor.py
|
||||
Site.py
|
||||
Structure.py
|
||||
Commands.py
|
||||
SectionPlane.py
|
||||
importDAE.py
|
||||
Window.py
|
||||
)
|
||||
SOURCE_GROUP("" FILES ${Arch_SRCS})
|
||||
|
||||
SET(all_files ${Arch_SRCS})
|
||||
|
||||
ADD_CUSTOM_TARGET(Arch ALL
|
||||
SOURCES ${all_files}
|
||||
)
|
||||
|
||||
fc_copy_sources("Mod/Arch" "Arch" ${all_files})
|
||||
|
||||
install(
|
||||
FILES
|
||||
${Arch_SRCS}
|
||||
DESTINATION
|
||||
Mod/Arch
|
||||
)
|
||||
157
src/Mod/Arch/Cell.py
Normal file
@@ -0,0 +1,157 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* 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,Part,Draft
|
||||
from FreeCAD import Vector
|
||||
from PyQt4 import QtCore
|
||||
|
||||
__title__="FreeCAD Cell"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
def makeCell(objectslist,join=True,name="Cell"):
|
||||
'''makeCell(objectslist,[joinmode]): creates a cell including the
|
||||
objects from the given list. If joinmode is False, contents will
|
||||
not be joined.'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
|
||||
Cell(obj)
|
||||
ViewProviderCell(obj.ViewObject)
|
||||
obj.Components = objectslist
|
||||
for comp in obj.Components:
|
||||
comp.ViewObject.hide()
|
||||
obj.JoinMode = join
|
||||
return obj
|
||||
|
||||
class CommandCell:
|
||||
"the Arch Cell command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_Cell',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_Cell","Cell"),
|
||||
'Accel': "C, E",
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Cell","Creates a cell object including selected objects")}
|
||||
|
||||
def Activated(self):
|
||||
FreeCAD.ActiveDocument.openTransaction("Cell")
|
||||
makeCell(FreeCADGui.Selection.getSelection())
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
|
||||
class Cell:
|
||||
"The Cell object"
|
||||
def __init__(self,obj):
|
||||
obj.addProperty("App::PropertyLinkList","Components","Base",
|
||||
"The objects that make part of this cell")
|
||||
obj.addProperty("App::PropertyBool","JoinMode","Base",
|
||||
"If True, underlying geometry will be joined")
|
||||
obj.Proxy = self
|
||||
self.Type = "Cell"
|
||||
|
||||
def execute(self,obj):
|
||||
self.createGeometry(obj)
|
||||
|
||||
def onChanged(self,obj,prop):
|
||||
if prop in ["Components","JoinMode"]:
|
||||
self.createGeometry(obj)
|
||||
|
||||
def createGeometry(self,obj):
|
||||
pl = obj.Placement
|
||||
if obj.Components:
|
||||
if obj.JoinMode:
|
||||
components = obj.Components[:]
|
||||
f = components.pop(0)
|
||||
baseShape = f.Shape
|
||||
for comp in components:
|
||||
if Draft.getType(comp) in ["Wall","Cell","Shape"]:
|
||||
baseShape = baseShape.oldFuse(comp.Shape)
|
||||
else:
|
||||
compshapes = []
|
||||
for o in obj.Components:
|
||||
compshapes.append(o.Shape)
|
||||
baseShape = Part.makeCompound(compshapes)
|
||||
obj.Shape = baseShape
|
||||
obj.Placement = pl
|
||||
|
||||
class ViewProviderCell:
|
||||
"A View Provider for the Cell object"
|
||||
def __init__(self,vobj):
|
||||
vobj.Proxy = self
|
||||
self.Object = vobj.Object
|
||||
|
||||
def getIcon(self):
|
||||
return """
|
||||
/* XPM */
|
||||
static char * Arch_Cell_xpm[] = {
|
||||
"16 16 9 1",
|
||||
" c None",
|
||||
". c #0C0A04",
|
||||
"+ c #413F37",
|
||||
"@ c #636057",
|
||||
"# c #7E7D75",
|
||||
"$ c #9C9B95",
|
||||
"% c #B7B8B3",
|
||||
"& c #D2D4D1",
|
||||
"* c #FCFEFB",
|
||||
" +++ ",
|
||||
" ++#++@$+ ",
|
||||
" +@$%**@%#@++++ ",
|
||||
" #&**%*@%%%$@+##",
|
||||
" #&%@@*@%$@+@&*%",
|
||||
" #&% @*@$@@%***%",
|
||||
" #&% @*@+@#****%",
|
||||
" #&%.@*@+@#****%",
|
||||
" #&%$&*@+@#****%",
|
||||
".@&****@+@#****%",
|
||||
" @&***&@+@#****%",
|
||||
" @&**$ .@#****%",
|
||||
" @&%# @#****#",
|
||||
" +@ @#**& ",
|
||||
" @#*$ ",
|
||||
" @@# "};
|
||||
"""
|
||||
|
||||
def updateData(self,obj,prop):
|
||||
return
|
||||
|
||||
def onChanged(self,vobj,prop):
|
||||
return
|
||||
|
||||
def claimChildren(self):
|
||||
return self.Object.Components
|
||||
|
||||
def attach(self,vobj):
|
||||
self.Object = vobj.Object
|
||||
return
|
||||
|
||||
def getDisplayModes(self,obj):
|
||||
modes=[]
|
||||
return modes
|
||||
|
||||
def setDisplayMode(self,mode):
|
||||
return mode
|
||||
|
||||
def __getstate__(self):
|
||||
return None
|
||||
|
||||
def __setstate__(self,state):
|
||||
return None
|
||||
|
||||
FreeCADGui.addCommand('Arch_Cell',CommandCell())
|
||||
356
src/Mod/Arch/Commands.py
Normal file
@@ -0,0 +1,356 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* 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,Part,Draft,MeshPart,Component
|
||||
from draftlibs import fcgeo,fcvec
|
||||
from FreeCAD import Vector
|
||||
from PyQt4 import QtCore
|
||||
|
||||
__title__="FreeCAD Arch Commands"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
# module functions ###############################################
|
||||
|
||||
def addComponents(objectsList,host):
|
||||
'''addComponents(objectsList,hostObject): adds the given object or the objects
|
||||
from the given list as components to the given host Object. Use this for
|
||||
example to add windows to a wall, or to add walls to a cell or floor.'''
|
||||
if not isinstance(objectsList,list):
|
||||
objectsList = [objectsList]
|
||||
tp = Draft.getType(host)
|
||||
if tp in ["Cell","Floor","Building","Site"]:
|
||||
c = host.Components
|
||||
for o in objectsList:
|
||||
if not o in c:
|
||||
c.append(o)
|
||||
host.Components = c
|
||||
elif tp in ["Wall","Structure"]:
|
||||
a = host.Additions
|
||||
for o in objectsList:
|
||||
if not o in a:
|
||||
if hasattr(o,"Shape"):
|
||||
a.append(o)
|
||||
host.Additions = a
|
||||
|
||||
def removeComponents(objectsList,host=None):
|
||||
'''removeComponents(objectsList,[hostObject]): removes the given component or
|
||||
the components from the given list from their parents. If a host object is
|
||||
specified, this function will try adding the components as holes to the host
|
||||
object instead.'''
|
||||
if not isinstance(objectsList,list):
|
||||
objectsList = [objectsList]
|
||||
if host:
|
||||
if Draft.getType(host) in ["Wall","Structure"]:
|
||||
s = host.Subtractions
|
||||
for o in objectsList:
|
||||
if not o in s:
|
||||
s.append(o)
|
||||
host.Subtractions = s
|
||||
else:
|
||||
for o in objectsList:
|
||||
if o.InList:
|
||||
h = o.InList[0]
|
||||
tp = Draft.getType(h)
|
||||
if tp in ["Cell","Floor","Building","Site"]:
|
||||
c = h.Components
|
||||
if o in c:
|
||||
c.remove(o)
|
||||
h.Components = c
|
||||
o.ViewObject.show()
|
||||
elif tp in ["Wall","Structure"]:
|
||||
a = h.Additions
|
||||
s = h.Subtractions
|
||||
if o in a:
|
||||
a.remove(o)
|
||||
h.Additions = a
|
||||
o.ViewObject.show()
|
||||
elif o in s:
|
||||
s.remove(o)
|
||||
h.Subtractions = s
|
||||
o.ViewObject.show()
|
||||
|
||||
def splitMesh(obj,mark=True):
|
||||
'''splitMesh(object,[mark]): splits the given mesh object into separated components.
|
||||
If mark is False, nothing else is done. If True (default), non-manifold components
|
||||
will be painted in red.'''
|
||||
if not obj.isDerivedFrom("Mesh::Feature"): return []
|
||||
basemesh = obj.Mesh
|
||||
comps = basemesh.getSeparateComponents()
|
||||
nlist = []
|
||||
if comps:
|
||||
basename = obj.Name
|
||||
FreeCAD.ActiveDocument.removeObject(basename)
|
||||
for c in comps:
|
||||
newobj = FreeCAD.ActiveDocument.addObject("Mesh::Feature",basename)
|
||||
newobj.Mesh = c
|
||||
if mark and (not(c.isSolid()) or c.hasNonManifolds()):
|
||||
newobj.ViewObject.ShapeColor = (1.0,0.0,0.0,1.0)
|
||||
nlist.append(newobj)
|
||||
return nlist
|
||||
return [obj]
|
||||
|
||||
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'''
|
||||
if "Mesh" in obj.PropertiesList:
|
||||
faces = []
|
||||
mesh = obj.Mesh
|
||||
plac = obj.Placement
|
||||
segments = mesh.getPlanes(0.001) # use rather strict tolerance here
|
||||
print len(segments)," segments ",segments
|
||||
for i in segments:
|
||||
print "treating",segments.index(i),i
|
||||
if len(i) > 0:
|
||||
wires = MeshPart.wireFromSegment(mesh, i)
|
||||
print "wire done"
|
||||
print wires
|
||||
if len(wires) > 1:
|
||||
# a segment can have inner holes
|
||||
print "inner wires found"
|
||||
ext = None
|
||||
max_length = 0
|
||||
# cleaning up rubbish in wires
|
||||
for i in range(len(wires)):
|
||||
wires[i] = fcgeo.removeInterVertices(wires[i])
|
||||
for w in wires:
|
||||
# we assume that the exterior boundary is that one with
|
||||
# the biggest bounding box
|
||||
if w.BoundBox.DiagonalLength > max_length:
|
||||
max_length = w.BoundBox.DiagonalLength
|
||||
ext = w
|
||||
print "exterior wire",ext
|
||||
wires.remove(ext)
|
||||
# all interior wires mark a hole and must reverse
|
||||
# their orientation, otherwise Part.Face fails
|
||||
for w in wires:
|
||||
print "reversing",w
|
||||
#w.reverse()
|
||||
print "reversed"
|
||||
# make sure that the exterior wires comes as first in the list
|
||||
wires.insert(0, ext)
|
||||
print "done sorting", wires
|
||||
faces.append(Part.Face(wires))
|
||||
print "done facing"
|
||||
print "faces",faces
|
||||
|
||||
shell=Part.Compound(faces)
|
||||
solid = Part.Solid(Part.Shell(faces))
|
||||
name = obj.Name
|
||||
if solid.isClosed():
|
||||
FreeCAD.ActiveDocument.removeObject(name)
|
||||
newobj = FreeCAD.ActiveDocument.addObject("Part::Feature",name)
|
||||
newobj.Shape = solid
|
||||
newobj.Placement = plac
|
||||
if not solid.isClosed():
|
||||
newobj.ViewObject.ShapeColor = (1.0,0.0,0.0,1.0)
|
||||
return newobj
|
||||
return None
|
||||
|
||||
def removeShape(objs,mark=True):
|
||||
'''takes an arch object (wall or structure) built on a cubic shape, and removes
|
||||
the inner shape, keeping its length, width and height as parameters.'''
|
||||
if not isinstance(objs,list):
|
||||
objs = [objs]
|
||||
for obj in objs:
|
||||
if fcgeo.isCubic(obj.Shape):
|
||||
dims = fcgeo.getCubicDimensions(obj.Shape)
|
||||
if dims:
|
||||
name = obj.Name
|
||||
tp = Draft.getType(obj)
|
||||
print tp
|
||||
if tp == "Structure":
|
||||
FreeCAD.ActiveDocument.removeObject(name)
|
||||
import Structure
|
||||
str = Structure.makeStructure(length=dims[1],width=dims[2],height=dims[3],name=name)
|
||||
str.Placement = dims[0]
|
||||
elif tp == "Wall":
|
||||
FreeCAD.ActiveDocument.removeObject(name)
|
||||
import Wall
|
||||
length = dims[1]
|
||||
width = dims[2]
|
||||
v1 = Vector(length/2,0,0)
|
||||
v2 = fcvec.neg(v1)
|
||||
v1 = dims[0].multVec(v1)
|
||||
v2 = dims[0].multVec(v2)
|
||||
line = Draft.makeLine(v1,v2)
|
||||
wal = Wall.makeWall(line,width=width,height=dims[3],name=name)
|
||||
else:
|
||||
if mark:
|
||||
obj.ViewObject.ShapeColor = (1.0,0.0,0.0,1.0)
|
||||
|
||||
|
||||
# command definitions ###############################################
|
||||
|
||||
class CommandAdd:
|
||||
"the Arch Add command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_Add',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_Add","Add component"),
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Add","Adds the selected components 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()
|
||||
host = sel.pop()
|
||||
FreeCAD.ActiveDocument.openTransaction("Grouping")
|
||||
addComponents(sel,host)
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
|
||||
|
||||
class CommandRemove:
|
||||
"the Arch Add command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_Remove',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_Remove","Remove component"),
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Remove","Remove the selected components from their parents, or create a hole in a component")}
|
||||
|
||||
def IsActive(self):
|
||||
if FreeCADGui.Selection.getSelection():
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def Activated(self):
|
||||
sel = FreeCADGui.Selection.getSelection()
|
||||
FreeCAD.ActiveDocument.openTransaction("Ungrouping")
|
||||
if Draft.getType(sel[-1]) in ["Wall","Structure"]:
|
||||
host = sel.pop()
|
||||
removeComponents(sel,host)
|
||||
else:
|
||||
removeComponents(sel)
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
|
||||
|
||||
class CommandSplitMesh:
|
||||
"the Arch SplitMesh command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_SplitMesh',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_SplitMesh","Split Mesh"),
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_SplitMesh","Splits selected meshes into independent components")}
|
||||
|
||||
def IsActive(self):
|
||||
if len(FreeCADGui.Selection.getSelection()):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def Activated(self):
|
||||
if FreeCADGui.Selection.getSelection():
|
||||
sel = FreeCADGui.Selection.getSelection()
|
||||
FreeCAD.ActiveDocument.openTransaction("Split Mesh")
|
||||
for obj in sel:
|
||||
n = obj.Name
|
||||
nobjs = splitMesh(obj)
|
||||
if len(nobjs) > 1:
|
||||
g = FreeCAD.ActiveDocument.addObject("App::DocumentObjectGroup",n)
|
||||
for o in nobjs:
|
||||
g.addObject(o)
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
|
||||
|
||||
class CommandMeshToShape:
|
||||
"the Arch MeshToShape command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_MeshToShape',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_MeshToShape","Mesh to Shape"),
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_MeshToPart","Turns selected meshes into Part Shape objects")}
|
||||
|
||||
def IsActive(self):
|
||||
if FreeCADGui.Selection.getSelection():
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def Activated(self):
|
||||
if FreeCADGui.Selection.getSelection():
|
||||
f = FreeCADGui.Selection.getSelection()[0]
|
||||
g = None
|
||||
if f.isDerivedFrom("App::DocumentObjectGroup"):
|
||||
g = f
|
||||
FreeCADGui.Selection.clearSelection()
|
||||
for o in f.OutList:
|
||||
FreeCADGui.Selection.addSelection(o)
|
||||
else:
|
||||
if f.InList:
|
||||
if f.InList[0].isDerivedFrom("App::DocumentObjectGroup"):
|
||||
g = f.InList[0]
|
||||
FreeCAD.ActiveDocument.openTransaction("Mesh to Shape")
|
||||
for obj in FreeCADGui.Selection.getSelection():
|
||||
newobj = meshToShape(obj)
|
||||
if g and newobj:
|
||||
g.addObject(newobj)
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
|
||||
class CommandSelectNonSolidMeshes:
|
||||
"the Arch SelectNonSolidMeshes command definition"
|
||||
def GetResources(self):
|
||||
return {'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_SelectNonSolidMeshes","Select non-manifold meshes"),
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_SelectNonSolidMeshes","Selects all non-manifold meshes from the document or from the selected groups")}
|
||||
|
||||
def Activated(self):
|
||||
msel = []
|
||||
if FreeCADGui.Selection.getSelection():
|
||||
for o in FreeCADGui.Selection.getSelection():
|
||||
if o.isDerivedFrom("App::DocumentObjectGroup"):
|
||||
msel.extend(o.OutList)
|
||||
if not msel:
|
||||
msel = FreeCAD.ActiveDocument.Objects
|
||||
sel = []
|
||||
for o in msel:
|
||||
if o.isDerivedFrom("Mesh::Feature"):
|
||||
if (not o.Mesh.isSolid()) or o.Mesh.hasNonManifolds():
|
||||
sel.append(o)
|
||||
if sel:
|
||||
FreeCADGui.Selection.clearSelection()
|
||||
for o in sel:
|
||||
FreeCADGui.Selection.addSelection(o)
|
||||
|
||||
class CommandRemoveShape:
|
||||
"the Arch RemoveShape command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_RemoveShape',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_RemoveShape","Remove Shape from Arch"),
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_RemoveShape","Removes cubic shapes from Arch components")}
|
||||
|
||||
def IsActive(self):
|
||||
if FreeCADGui.Selection.getSelection():
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def Activated(self):
|
||||
sel = FreeCADGui.Selection.getSelection()
|
||||
removeShape(sel)
|
||||
|
||||
FreeCADGui.addCommand('Arch_Add',CommandAdd())
|
||||
FreeCADGui.addCommand('Arch_Remove',CommandRemove())
|
||||
FreeCADGui.addCommand('Arch_SplitMesh',CommandSplitMesh())
|
||||
FreeCADGui.addCommand('Arch_MeshToShape',CommandMeshToShape())
|
||||
FreeCADGui.addCommand('Arch_SelectNonSolidMeshes',CommandSelectNonSolidMeshes())
|
||||
FreeCADGui.addCommand('Arch_RemoveShape',CommandRemoveShape())
|
||||
160
src/Mod/Arch/Component.py
Normal file
@@ -0,0 +1,160 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* 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 *
|
||||
#* *
|
||||
#***************************************************************************
|
||||
|
||||
__title__="FreeCAD Arch Component"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
import FreeCADGui
|
||||
from PyQt4 import QtGui,QtCore
|
||||
|
||||
def addToComponent(compobject,addobject):
|
||||
'''addToComponent(compobject,addobject): adds addobject
|
||||
to the given component'''
|
||||
if "Additions" in compobject.PropertiesList:
|
||||
if not addobject in compobject.Additions:
|
||||
compobject.Additions.append(addobject)
|
||||
|
||||
def removeFromComponent(compobject,subobject):
|
||||
'''removeFromComponent(compobject,subobject): subtracts subobject
|
||||
from the given component'''
|
||||
if "Subtractions" in compobject.PropertiesList:
|
||||
if not subobject in compobject.Subtractions:
|
||||
compobject.Subtractions.append(subobject)
|
||||
|
||||
class ComponentTaskPanel:
|
||||
def __init__(self):
|
||||
self.obj = None
|
||||
self.form = QtGui.QWidget()
|
||||
self.form.setObjectName("TaskPanel")
|
||||
#self.form.resize(210, 260)
|
||||
self.gridLayout = QtGui.QGridLayout(self.form)
|
||||
self.gridLayout.setObjectName("gridLayout")
|
||||
self.title = QtGui.QLabel(self.form)
|
||||
self.gridLayout.addWidget(self.title, 0, 0, 1, 1)
|
||||
self.listWidget = QtGui.QListWidget(self.form)
|
||||
self.listWidget.setObjectName("listWidget")
|
||||
self.gridLayout.addWidget(self.listWidget, 1, 0, 1, 2)
|
||||
self.addButton = QtGui.QPushButton(self.form)
|
||||
self.addButton.setObjectName("addButton")
|
||||
self.addButton.setIcon(QtGui.QIcon(":/icons/Arch_Add.svg"))
|
||||
self.gridLayout.addWidget(self.addButton, 2, 0, 1, 1)
|
||||
self.delButton = QtGui.QPushButton(self.form)
|
||||
self.delButton.setObjectName("delButton")
|
||||
self.delButton.setIcon(QtGui.QIcon(":/icons/Arch_Remove.svg"))
|
||||
self.gridLayout.addWidget(self.delButton, 3, 0, 1, 1)
|
||||
QtCore.QObject.connect(self.addButton, QtCore.SIGNAL("clicked()"), self.addElement)
|
||||
self.retranslateUi(self.form)
|
||||
|
||||
def getStandardButtons(self):
|
||||
return int(QtGui.QDialogButtonBox.Ok)
|
||||
|
||||
def addElement(self):
|
||||
sel = FreeCADGui.Selection.getSelection()
|
||||
if sel:
|
||||
for o in sel:
|
||||
addToComponent(self.obj,o)
|
||||
|
||||
def fillList(self):
|
||||
self.listWidget.clear()
|
||||
if self.obj.Base:
|
||||
i = QtGui.QListWidgetItem(self.listWidget)
|
||||
i.setText(self.obj.Base.Name)
|
||||
i.setIcon(QtGui.QIcon(":/icons/Tree_Part.svg"))
|
||||
self.listWidget.addItem(i)
|
||||
for o in self.obj.Additions:
|
||||
i = QtGui.QListWidgetItem(self.listWidget)
|
||||
i.setText(o.Name)
|
||||
i.setIcon(QtGui.QIcon(":/icons/Arch_Add.svg"))
|
||||
self.listWidget.addItem(i)
|
||||
for o in self.obj.Subtractions:
|
||||
i = QtGui.QListWidgetItem(self.listWidget)
|
||||
i.setText(o.Name)
|
||||
i.setIcon(QtGui.QIcon(":/icons/Arch_Remove.svg"))
|
||||
self.listWidget.addItem(i)
|
||||
|
||||
def retranslateUi(self, TaskPanel):
|
||||
TaskPanel.setWindowTitle(QtGui.QApplication.translate("Arch", "Components", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.addButton.setText(QtGui.QApplication.translate("Arch", "Append selected objects", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.delButton.setText(QtGui.QApplication.translate("Arch", "Remove child", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.title.setText(QtGui.QApplication.translate("Arch", "Components of this object", None, QtGui.QApplication.UnicodeUTF8))
|
||||
|
||||
class Component:
|
||||
"The Component object"
|
||||
def __init__(self,obj):
|
||||
obj.addProperty("App::PropertyLink","Base","Base",
|
||||
"The base object this component is built upon")
|
||||
obj.addProperty("App::PropertyLinkList","Additions","Base",
|
||||
"Other shapes that are appended to this wall")
|
||||
obj.addProperty("App::PropertyLinkList","Subtractions","Base",
|
||||
"Other shapes that are subtracted from this wall")
|
||||
obj.addProperty("App::PropertyVector","Normal","Base",
|
||||
"The normal extrusion direction of this wall (keep (0,0,0) for automatic normal)")
|
||||
obj.Proxy = self
|
||||
self.Type = "Component"
|
||||
self.Object = obj
|
||||
self.Subvolume = None
|
||||
|
||||
class ViewProviderComponent:
|
||||
"A View Provider for Component objects"
|
||||
def __init__(self,vobj):
|
||||
vobj.Proxy = self
|
||||
self.Object = vobj.Object
|
||||
|
||||
def updateData(self,vobj,prop):
|
||||
return
|
||||
|
||||
def onChanged(self,vobj,prop):
|
||||
return
|
||||
|
||||
def attach(self,vobj):
|
||||
self.Object = vobj.Object
|
||||
return
|
||||
|
||||
def getDisplayModes(self,vobj):
|
||||
modes=[]
|
||||
return modes
|
||||
|
||||
def setDisplayMode(self,mode):
|
||||
return mode
|
||||
|
||||
def __getstate__(self):
|
||||
return None
|
||||
|
||||
def __setstate__(self,state):
|
||||
return None
|
||||
|
||||
def claimChildren(self):
|
||||
return [self.Object.Base]+self.Object.Additions+self.Object.Subtractions
|
||||
|
||||
def setEdit(self,vobj,mode):
|
||||
taskd = ComponentTaskPanel()
|
||||
taskd.obj = self.Object
|
||||
taskd.fillList()
|
||||
FreeCADGui.Control.showDialog(taskd)
|
||||
return True
|
||||
|
||||
def unsetEdit(self,vobj,mode):
|
||||
FreeCADGui.Control.closeDialog()
|
||||
return True
|
||||
|
||||
102
src/Mod/Arch/Floor.py
Normal file
@@ -0,0 +1,102 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* 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 Cell,FreeCAD,FreeCADGui
|
||||
from PyQt4 import QtCore
|
||||
|
||||
__title__="FreeCAD Arch Floor"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
def makeFloor(objectslist,join=True,name="Floor"):
|
||||
'''makeFloor(objectslist,[joinmode]): creates a floor including the
|
||||
objects from the given list. If joinmode is False, components will
|
||||
not be joined.'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
|
||||
Floor(obj)
|
||||
ViewProviderFloor(obj.ViewObject)
|
||||
obj.Components = objectslist
|
||||
for comp in obj.Components:
|
||||
comp.ViewObject.hide()
|
||||
obj.JoinMode = join
|
||||
return obj
|
||||
|
||||
class CommandFloor:
|
||||
"the Arch Cell command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_Floor',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_Floor","Floor"),
|
||||
'Accel': "F, R",
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Floor","Creates a floor object including selected objects")}
|
||||
|
||||
def Activated(self):
|
||||
FreeCAD.ActiveDocument.openTransaction("Floor")
|
||||
makeFloor(FreeCADGui.Selection.getSelection())
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
|
||||
class Floor(Cell.Cell):
|
||||
"The Cell object"
|
||||
def __init__(self,obj):
|
||||
Cell.Cell.__init__(self,obj)
|
||||
obj.addProperty("App::PropertyLength","Height","Base",
|
||||
"The height of this floor")
|
||||
self.Type = "Floor"
|
||||
|
||||
class ViewProviderFloor(Cell.ViewProviderCell):
|
||||
"A View Provider for the Cell object"
|
||||
def __init__(self,vobj):
|
||||
Cell.ViewProviderCell.__init__(self,vobj)
|
||||
|
||||
def getIcon(self):
|
||||
return """
|
||||
/* XPM */
|
||||
static char * Arch_Floor_xpm[] = {
|
||||
"16 16 9 1",
|
||||
" c None",
|
||||
". c #171817",
|
||||
"+ c #2E2876",
|
||||
"@ c #545653",
|
||||
"# c #605C98",
|
||||
"$ c #959794",
|
||||
"% c #9694BC",
|
||||
"& c #C8C9CC",
|
||||
"* c #F9FBFA",
|
||||
" ",
|
||||
" ",
|
||||
"............... ",
|
||||
".&&%&*&%%%%%&*. ",
|
||||
".&++#*#+++++#*. ",
|
||||
".&+%****&+*+#*. ",
|
||||
".&+#%%&*&+*+#*. ",
|
||||
".&++++&**+*+#*. ",
|
||||
".&+%***%%**+.$. ",
|
||||
".&++###*#+#.$@. ",
|
||||
".&++++#*+++.&.. ",
|
||||
".&********&.. ",
|
||||
".$$$$$$$$$@. ",
|
||||
" .......... ",
|
||||
" ",
|
||||
" "};
|
||||
"""
|
||||
|
||||
FreeCADGui.addCommand('Arch_Floor',CommandFloor())
|
||||
9570
src/Mod/Arch/IFC2X3_TC1.exp
Executable file
7
src/Mod/Arch/Init.py
Executable file
@@ -0,0 +1,7 @@
|
||||
# Get the Parameter Group of this module
|
||||
ParGrp = App.ParamGet("System parameter:Modules").GetGroup("Arch")
|
||||
|
||||
# Set the needed information
|
||||
ParGrp.SetString("HelpIndex", "http://free-cad.sf.net")
|
||||
ParGrp.SetString("WorkBenchName", "Arch")
|
||||
|
||||
76
src/Mod/Arch/InitGui.py
Executable file
@@ -0,0 +1,76 @@
|
||||
class ArchWorkbench(Workbench):
|
||||
"Arch workbench object"
|
||||
Icon = """
|
||||
/* XPM */
|
||||
static char * arch_xpm[] = {
|
||||
"16 16 9 1",
|
||||
" c None",
|
||||
". c #543016",
|
||||
"+ c #6D2F08",
|
||||
"@ c #954109",
|
||||
"# c #874C24",
|
||||
"$ c #AE6331",
|
||||
"% c #C86423",
|
||||
"& c #FD7C26",
|
||||
"* c #F5924F",
|
||||
" ",
|
||||
" ",
|
||||
" # ",
|
||||
" ***$# ",
|
||||
" .*******. ",
|
||||
" *##$****#+ ",
|
||||
" #**%&&##$#@@ ",
|
||||
".$**%&&&&+@@+ ",
|
||||
"@&@#$$%&&@@+.. ",
|
||||
"@&&&%#.#$#+..#$.",
|
||||
" %&&&&+%#.$**$@+",
|
||||
" @%&+&&&$##@@+",
|
||||
" @.&&&&&@@@ ",
|
||||
" @%&&@@ ",
|
||||
" @+ ",
|
||||
" "};
|
||||
"""
|
||||
MenuText = "Arch"
|
||||
ToolTip = "Architecture workbench"
|
||||
|
||||
def Initialize(self):
|
||||
import draftTools,draftGui,Arch_rc,Arch
|
||||
archtools = ["Arch_Wall","Arch_Structure","Arch_Cell",
|
||||
"Arch_Floor","Arch_Building","Arch_Site",
|
||||
"Arch_Window",
|
||||
"Arch_SectionPlane","Arch_Add","Arch_Remove"]
|
||||
drafttools = ["Draft_Line","Draft_Wire","Draft_Rectangle",
|
||||
"Draft_Polygon","Draft_Arc",
|
||||
"Draft_Circle","Draft_Dimension",
|
||||
"Draft_Move","Draft_Rotate",
|
||||
"Draft_Offset","Draft_Upgrade",
|
||||
"Draft_Downgrade"]
|
||||
meshtools = ["Arch_SplitMesh","Arch_MeshToShape",
|
||||
"Arch_SelectNonSolidMeshes","Arch_RemoveShape"]
|
||||
self.appendToolbar("Arch tools",archtools)
|
||||
self.appendToolbar("Draft tools",drafttools)
|
||||
self.appendMenu(["Architecture","Tools"],meshtools)
|
||||
self.appendMenu("Architecture",archtools)
|
||||
self.appendMenu("Drafting",drafttools)
|
||||
FreeCADGui.addIconPath(":/icons")
|
||||
FreeCADGui.addLanguagePath(":/translations")
|
||||
FreeCADGui.addPreferencePage(":/ui/archprefs-base.ui","Arch")
|
||||
FreeCAD.addImportType("Industry Foundation Classes (*.ifc)","importIFC")
|
||||
try:
|
||||
import collada
|
||||
except:
|
||||
Log("pycollada not found, no collada support\n")
|
||||
else:
|
||||
FreeCAD.addImportType("Collada (*.dae)","importDAE")
|
||||
FreeCAD.addExportType("Collada (*.dae)","importDAE")
|
||||
Log ('Loading Arch module... done\n')
|
||||
def Activated(self):
|
||||
FreeCADGui.draftToolBar.Activated()
|
||||
Msg("Arch workbench activated\n")
|
||||
def Deactivated(self):
|
||||
FreeCADGui.draftToolBar.Deactivated()
|
||||
Msg("Arch workbench deactivated\n")
|
||||
|
||||
FreeCADGui.addWorkbench(ArchWorkbench)
|
||||
FreeCADGui.updateLocale()
|
||||
|
||||
52
src/Mod/Arch/Makefile.am
Normal file
@@ -0,0 +1,52 @@
|
||||
#BUILT_SOURCES=\
|
||||
# Arch_rc.py
|
||||
|
||||
# rules for Qt Resource Compiler:
|
||||
#%_rc.py: Resources/%.qrc
|
||||
# $(PYRCC4) -name $(*F) $< -o $(@F)
|
||||
|
||||
# Change data dir from default ($(prefix)/share) to $(prefix)
|
||||
datadir = $(prefix)/Mod/Arch
|
||||
data_DATA = \
|
||||
Arch_rc.py \
|
||||
Arch.py \
|
||||
Component.py \
|
||||
Building.py \
|
||||
Cell.py \
|
||||
Floor.py \
|
||||
IFC2X3_TC1.exp \
|
||||
ifcReader.py \
|
||||
importDAE.py \
|
||||
importIFC.py \
|
||||
Init.py \
|
||||
InitGui.py \
|
||||
Site.py \
|
||||
Structure.py \
|
||||
Wall.py \
|
||||
SectionPlane.py \
|
||||
Window.py \
|
||||
Commands.py
|
||||
|
||||
CLEANFILES = $(BUILT_SOURCES)
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(data_DATA) \
|
||||
CMakeLists.txt \
|
||||
arch.dox \
|
||||
Resources/Arch.qrc \
|
||||
Resources/icons/preferences-arch.svg \
|
||||
Resources/icons/Arch_Building.svg \
|
||||
Resources/icons/Arch_Cell.svg \
|
||||
Resources/icons/Arch_Floor.svg \
|
||||
Resources/icons/Arch_Site.svg \
|
||||
Resources/icons/Arch_Structure.svg \
|
||||
Resources/icons/Arch_Wall.svg \
|
||||
Resources/icons/Arch_Add.svg \
|
||||
Resources/icons/Arch_Remove.svg \
|
||||
Resources/icons/Arch_MeshToShape.svg \
|
||||
Resources/icons/Arch_SplitMesh.svg \
|
||||
Resources/icons/Arch_RemoveShape.svg \
|
||||
Resources/icons/Arch_SectionPlane.svg \
|
||||
Resources/icons/Arch_Window.svg \
|
||||
Resources/ui/archprefs-base.ui
|
||||
|
||||
19
src/Mod/Arch/Resources/Arch.qrc
Normal file
@@ -0,0 +1,19 @@
|
||||
<RCC>
|
||||
<qresource>
|
||||
<file>icons/Arch_Building.svg</file>
|
||||
<file>icons/Arch_Floor.svg</file>
|
||||
<file>icons/Arch_Cell.svg</file>
|
||||
<file>icons/Arch_Wall.svg</file>
|
||||
<file>icons/Arch_Site.svg</file>
|
||||
<file>icons/Arch_Structure.svg</file>
|
||||
<file>icons/Arch_Add.svg</file>
|
||||
<file>icons/Arch_Remove.svg</file>
|
||||
<file>icons/Arch_MeshToShape.svg</file>
|
||||
<file>icons/Arch_SplitMesh.svg</file>
|
||||
<file>icons/preferences-arch.svg</file>
|
||||
<file>icons/Arch_RemoveShape.svg</file>
|
||||
<file>icons/Arch_SectionPlane.svg</file>
|
||||
<file>icons/Arch_Window.svg</file>
|
||||
<file>ui/archprefs-base.ui</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
109
src/Mod/Arch/Resources/icons/Arch_Add.svg
Normal file
@@ -0,0 +1,109 @@
|
||||
<?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.1 r9760"
|
||||
sodipodi:docname="New document 2">
|
||||
<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>
|
||||
</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="0.94984931"
|
||||
inkscape:cy="9.2337402"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="758"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="19"
|
||||
inkscape:window-maximized="1" />
|
||||
<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
|
||||
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 26.015154,8.192974 0,17.71875 -17.8125,0 0,16.90625 17.8125,0 0,19.90625 16.90625,0 0,-19.90625 19.84375,0 0,-16.90625 -19.84375,0 0,-17.71875 -16.90625,0 z"
|
||||
id="rect2993-6" />
|
||||
<path
|
||||
style="color:#000000;fill:url(#linearGradient3799);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 20.71875,3.28125 0,17.71875 -17.8125,0 0,16.90625 17.8125,0 0,19.90625 16.90625,0 0,-19.90625 19.84375,0 0,-16.90625 -19.84375,0 0,-17.71875 -16.90625,0 z"
|
||||
id="rect2993"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
414
src/Mod/Arch/Resources/icons/Arch_Building.svg
Normal file
@@ -0,0 +1,414 @@
|
||||
<?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="svg2816"
|
||||
version="1.1"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="Arch_Building.svg">
|
||||
<defs
|
||||
id="defs2818">
|
||||
<linearGradient
|
||||
id="linearGradient3681">
|
||||
<stop
|
||||
id="stop3697"
|
||||
offset="0"
|
||||
style="stop-color:#fff110;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#cf7008;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3685" />
|
||||
</linearGradient>
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective2824" />
|
||||
<inkscape:perspective
|
||||
id="perspective3622"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3622-9"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3653"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3675"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3697"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3720"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3742"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3764"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3806"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3806-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3835"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3614"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3614-8"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3643"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3643-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3672"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3672-5"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3701"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3701-8"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3746"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
patternTransform="matrix(0.67643728,-0.81829155,2.4578314,1.8844554,-26.450606,18.294947)"
|
||||
id="pattern5231"
|
||||
xlink:href="#Strips1_1-4"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5224"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-4"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-4"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<inkscape:perspective
|
||||
id="perspective5224-9"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,39.618381,8.9692804)"
|
||||
id="pattern5231-4"
|
||||
xlink:href="#Strips1_1-6"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5224-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-6"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-0"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<pattern
|
||||
patternTransform="matrix(0.66513382,-1.0631299,2.4167603,2.4482973,-49.762569,2.9546807)"
|
||||
id="pattern5296"
|
||||
xlink:href="#pattern5231-3"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5288"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,-26.336284,10.887197)"
|
||||
id="pattern5231-3"
|
||||
xlink:href="#Strips1_1-4-3"
|
||||
inkscape:collect="always" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-4-3"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-4-6"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<pattern
|
||||
patternTransform="matrix(0.42844886,-0.62155849,1.5567667,1.431396,27.948414,13.306456)"
|
||||
id="pattern5330"
|
||||
xlink:href="#Strips1_1-9"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5323"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-9"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-3"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<inkscape:perspective
|
||||
id="perspective5361"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective5383"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective5411"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3681"
|
||||
id="linearGradient3687"
|
||||
x1="37.89756"
|
||||
y1="41.087898"
|
||||
x2="4.0605712"
|
||||
y2="40.168594"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3681"
|
||||
id="linearGradient3695"
|
||||
x1="37.894287"
|
||||
y1="40.484772"
|
||||
x2="59.811455"
|
||||
y2="43.558987"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="7.7781744"
|
||||
inkscape:cx="9.2850007"
|
||||
inkscape:cy="9.1549572"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:bbox-paths="true"
|
||||
inkscape:bbox-nodes="true"
|
||||
inkscape:snap-bbox-edge-midpoints="true"
|
||||
inkscape:snap-bbox-midpoints="true"
|
||||
inkscape:object-paths="true"
|
||||
inkscape:object-nodes="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="758"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="19"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata2821">
|
||||
<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:url(#linearGradient3695);stroke:#3e2806;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1"
|
||||
d="M 60.263217,21.287365 59.811455,43.558986 38.062928,60.721865 37.800679,29.252003 60.263217,21.287365 z"
|
||||
id="path2896" />
|
||||
<path
|
||||
style="fill:#ffffff;stroke:#3e2806;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1"
|
||||
d="m 16.970563,54.357635 7.970235,1.382691 0.104907,-21.652125 -8.44249,-0.571821 0.367348,20.841255 z"
|
||||
id="path3679" />
|
||||
<path
|
||||
style="fill:#9a5e04;stroke:#3e2806;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1"
|
||||
d="M 13.757107,56.194059 16.970563,54.357635 16.603215,33.51638 13.460643,33.30353 13.757107,56.194059"
|
||||
id="path3677" />
|
||||
<path
|
||||
style="fill:url(#linearGradient3687);stroke:#3e2806;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1"
|
||||
d="M 20.749897,6.9097788 3.4773811,25.525337 4.6161341,54.118177 13.757107,56.194059 13.460643,33.30353 25.045705,34.088201 24.928493,58.280045 38.067058,60.722799 37.795306,29.242426 20.749897,6.9097788 z"
|
||||
id="path2898"
|
||||
sodipodi:nodetypes="cccccccccc" />
|
||||
<path
|
||||
style="fill:#9a6504;stroke:#3e2806;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1"
|
||||
d="M 20.742507,6.9125682 47.753222,5.5848931 60.263217,21.287365 37.800679,29.252003 20.742507,6.9125682 z"
|
||||
id="path2900" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 15 KiB |
475
src/Mod/Arch/Resources/icons/Arch_Cell.svg
Normal file
@@ -0,0 +1,475 @@
|
||||
<?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="svg2816"
|
||||
version="1.1"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="Arch_Cell.svg">
|
||||
<defs
|
||||
id="defs2818">
|
||||
<linearGradient
|
||||
id="linearGradient3633">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3635" />
|
||||
<stop
|
||||
style="stop-color:#ffbf00;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3637" />
|
||||
</linearGradient>
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective2824" />
|
||||
<inkscape:perspective
|
||||
id="perspective3622"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3622-9"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3653"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3675"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3697"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3720"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3742"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3764"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3806"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3806-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3835"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3614"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3614-8"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3643"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3643-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3672"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3672-5"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3701"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3701-8"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3746"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
patternTransform="matrix(0.67643728,-0.81829155,2.4578314,1.8844554,-26.450606,18.294947)"
|
||||
id="pattern5231"
|
||||
xlink:href="#Strips1_1-4"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5224"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-4"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-4"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<inkscape:perspective
|
||||
id="perspective5224-9"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,39.618381,8.9692804)"
|
||||
id="pattern5231-4"
|
||||
xlink:href="#Strips1_1-6"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5224-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-6"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-0"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<pattern
|
||||
patternTransform="matrix(0.66513382,-1.0631299,2.4167603,2.4482973,-49.762569,2.9546807)"
|
||||
id="pattern5296"
|
||||
xlink:href="#pattern5231-3"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5288"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,-26.336284,10.887197)"
|
||||
id="pattern5231-3"
|
||||
xlink:href="#Strips1_1-4-3"
|
||||
inkscape:collect="always" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-4-3"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-4-6"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<pattern
|
||||
patternTransform="matrix(0.42844886,-0.62155849,1.5567667,1.431396,27.948414,13.306456)"
|
||||
id="pattern5330"
|
||||
xlink:href="#Strips1_1-9"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5323"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-9"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-3"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<inkscape:perspective
|
||||
id="perspective5361"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective5383"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective5411"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785-6"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785-1"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785-67"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785-8"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3848"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3869"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3894"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.7499999"
|
||||
inkscape:cx="14.379362"
|
||||
inkscape:cy="16.407091"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:bbox-paths="true"
|
||||
inkscape:bbox-nodes="true"
|
||||
inkscape:snap-bbox-edge-midpoints="true"
|
||||
inkscape:snap-bbox-midpoints="true"
|
||||
inkscape:object-paths="true"
|
||||
inkscape:object-nodes="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="758"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="19"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-global="true" />
|
||||
<metadata
|
||||
id="metadata2821">
|
||||
<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 />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
style="color:#000000;fill:#fff41b;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.87288027999999984;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 43.516117,4.5131039 43.239336,15.793349 32.666285,7.5817647 43.516117,4.5131039 z"
|
||||
id="path3775" />
|
||||
<path
|
||||
style="color:#000000;fill:#ffd800;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.87288027999999984;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 28.329999,8.7192687 54.163191,14.880747 54.003692,49.428233 28.299665,42.859485 28.33002,8.7192687 z"
|
||||
id="path3773"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1;opacity:0.57580152"
|
||||
d="M 36.911154,60.823 31.081499,43.570392 31.272728,25.818181 52.988898,14.612635 36.911154,60.823 z"
|
||||
id="path3882" />
|
||||
<path
|
||||
style="fill:#5c4500;fill-opacity:1;stroke:#1a1200;stroke-width:0.87288027999999984;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 38.755535,3.884878 5.4491783,13.174491 9.5943843,14.351259 28.329999,8.7192687 52.988898,14.612635 37.001444,22.336785 42.203587,23.513552 60.990533,14.027619 32.666285,7.5817647 43.553132,4.4536297 38.755535,3.884878 z"
|
||||
id="path2993"
|
||||
sodipodi:nodetypes="ccccccccccc" />
|
||||
<path
|
||||
style="fill:#fff41b;fill-opacity:1;stroke:#1a1200;stroke-width:0.87288027999999984;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 42.203587,23.513552 60.990533,14.027619 60.658029,48.48984 41.999775,62.163561 42.203587,23.513552"
|
||||
id="path3767"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;opacity:0.57580147999999998;color:#000000;fill-opacity:1;fill-rule:nonzero;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 5.7270873,51.975299 -3.9089054,-15.429845 22.9090911,-10 0.363637,12.545454 -19.3638227,12.884391 z"
|
||||
id="path3884" />
|
||||
<path
|
||||
style="fill:#ffd800;fill-opacity:1;stroke:#1a1200;stroke-width:0.87288027999999984;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 5.4491783,13.174491 0.277909,38.800808 3.5228872,1.474616 0.3444098,-39.098656 -4.145206,-1.176768 z"
|
||||
id="path3769" />
|
||||
<rect
|
||||
style="color:#000000;fill:#ffd800;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.87288027999999984;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"
|
||||
id="rect3810"
|
||||
width="2.6197376"
|
||||
height="20.435173"
|
||||
x="21.123411"
|
||||
y="16.995039" />
|
||||
<path
|
||||
style="color:#000000;fill:#ffd800;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.87288027999999984;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 23.743147,32.132904 -2.619738,-0.601159 -9.19865,3.820599 3.319015,0.812715 8.499373,-4.032155 z"
|
||||
id="path3820" />
|
||||
<path
|
||||
style="fill:#fff41b;fill-opacity:1;stroke:#1a1200;stroke-width:0.87288027999999984;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 28.340433,8.72336 9.5924761,14.345337 9.2560893,53.445726 28.295581,42.869958 28.340433,8.72336 z m -4.597286,8.27168 0,15.137864 -8.499373,4.032155 -0.112129,-15.967336 8.611502,-3.202683 z"
|
||||
id="path3771" />
|
||||
<path
|
||||
style="color:#000000;fill:#ffd800;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.87288027999999984;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 37.001444,22.336785 36.911154,60.823 41.99977,62.163561 42.203582,23.513552 37.001439,22.336785 z"
|
||||
id="path3830" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 19 KiB |
406
src/Mod/Arch/Resources/icons/Arch_Floor.svg
Normal file
|
After Width: | Height: | Size: 15 KiB |
106
src/Mod/Arch/Resources/icons/Arch_MeshToShape.svg
Normal file
@@ -0,0 +1,106 @@
|
||||
<?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: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.1 r9760"
|
||||
sodipodi:docname="New document 2">
|
||||
<defs
|
||||
id="defs2987">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective2993" />
|
||||
</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="32.174591"
|
||||
inkscape:cy="40.265698"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="758"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="19"
|
||||
inkscape:window-maximized="1" />
|
||||
<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:#00ff00;fill-opacity:1;stroke:#001100;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 19.389772,20.571874 -14.6157637,-8.452602 0,20.254347 14.4375217,8.931051 z"
|
||||
id="path3009"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#001100;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 35.966186,11.720565 -16.398173,8.93105 -0.178241,20.692926 16.398172,-8.89118 z"
|
||||
id="path3009-6"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#001100;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 4.7740083,12.03953 20.99394,3.8261531 35.921626,11.640823 19.211531,21.050322 z"
|
||||
id="path3029"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#001bff;fill-opacity:1;stroke:#000111;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 44.274509,36.473644 -14.615764,-8.452601 0,20.254346 14.437522,8.931051 z"
|
||||
id="path3009-7"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#001bff;fill-opacity:1;stroke:#000111;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 60.850923,27.622336 44.45275,36.553385 44.274509,57.246311 60.672681,48.355131 z"
|
||||
id="path3009-6-0"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#001bff;fill-opacity:1;stroke:#000111;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 29.658745,27.941301 16.219932,-8.213377 14.927686,7.81467 -16.710095,9.409498 z"
|
||||
id="path3029-8"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#001bff;fill-opacity:1;stroke:#000830;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 9.6423647,44.015408 -5.5282889,2.956992 11.5708382,7.456762 -3.856946,2.442732 14.913525,1.799909 -2.057038,-8.870977 -3.599816,2.057038 z"
|
||||
id="path3823"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.5 KiB |
165
src/Mod/Arch/Resources/icons/Arch_Remove.svg
Normal file
@@ -0,0 +1,165 @@
|
||||
<?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.1 r9760"
|
||||
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
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3793-26"
|
||||
id="linearGradient3799-2"
|
||||
x1="12.037806"
|
||||
y1="54.001419"
|
||||
x2="52.882648"
|
||||
y2="9.274148"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-2,-2)" />
|
||||
<linearGradient
|
||||
id="linearGradient3793-26">
|
||||
<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-1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
y2="9.274148"
|
||||
x2="52.882648"
|
||||
y1="54.001419"
|
||||
x1="12.037806"
|
||||
gradientTransform="translate(-3.90625,-4.28125)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient3871"
|
||||
xlink:href="#linearGradient3793-26"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3793-26-8"
|
||||
id="linearGradient3799-2-4"
|
||||
x1="12.037806"
|
||||
y1="54.001419"
|
||||
x2="52.882648"
|
||||
y2="9.274148"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-2,-2)" />
|
||||
<linearGradient
|
||||
id="linearGradient3793-26-8">
|
||||
<stop
|
||||
style="stop-color:#000f8a;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3795-9-1" />
|
||||
<stop
|
||||
style="stop-color:#0066ff;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3797-1-6" />
|
||||
</linearGradient>
|
||||
</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="0.94984931"
|
||||
inkscape:cy="12.274317"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="758"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="19"
|
||||
inkscape:window-maximized="1" />
|
||||
<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">
|
||||
<rect
|
||||
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;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;opacity:0.60504202"
|
||||
id="rect3854-8"
|
||||
width="54.768635"
|
||||
height="16.970562"
|
||||
x="7.3281975"
|
||||
y="25.68767" />
|
||||
<rect
|
||||
style="opacity:1;color:#000000;fill:url(#linearGradient3799-2);fill-opacity:1;fill-rule:nonzero;stroke:#000345;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect3854"
|
||||
width="54.768635"
|
||||
height="16.970562"
|
||||
x="2.5712974"
|
||||
y="20.545074" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.1 KiB |
155
src/Mod/Arch/Resources/icons/Arch_RemoveShape.svg
Normal file
@@ -0,0 +1,155 @@
|
||||
<?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: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.1 r9760"
|
||||
sodipodi:docname="Arch_ShapeToArch.svg">
|
||||
<defs
|
||||
id="defs2987">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective2993" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.5"
|
||||
inkscape:cx="32.728838"
|
||||
inkscape:cy="34.122789"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="756"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="22"
|
||||
inkscape:window-maximized="1" />
|
||||
<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:#001bff;fill-opacity:1;stroke:#000111;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 18.561535,19.760211 3.9457712,11.30761 l 0,20.254346 14.4375218,8.931051 z"
|
||||
id="path3009-7"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#001bff;fill-opacity:1;stroke:#000111;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 35.137949,10.908903 -16.398173,8.931049 -0.178241,20.692926 16.398172,-8.89118 z"
|
||||
id="path3009-6-0"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#001bff;fill-opacity:1;stroke:#000111;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 3.9457712,11.227868 20.165703,3.014491 35.093389,10.829161 18.383294,20.238659 z"
|
||||
id="path3029-8"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#001bff;fill-opacity:1;stroke:#000830;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 9.6423647,44.015408 -5.5282889,2.956992 11.5708382,7.456762 -3.856946,2.442732 14.913525,1.799909 -2.057038,-8.870977 -3.599816,2.057038 z"
|
||||
id="path3823"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
<path
|
||||
style="fill:#b3b3b3;fill-opacity:1;stroke:#000111;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 38.746219,40.001934 -6.516176,-4.081396 0.310383,20.611523 6.027551,4.202669 z"
|
||||
id="path3009-7-0"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#f9f9f9;fill-opacity:1;stroke:#000111;stroke-width:1.85461509000000002;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 61.108052,27.679374 38.66733,39.953111 38.489089,60.646037 60.92981,48.41217 z"
|
||||
id="path3009-6-0-9"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#808080;fill-opacity:1;stroke:#000111;stroke-width:1.85461509000000002;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 32.358608,35.712231 22.648174,-12.070323 6.05671,3.957724 -22.624079,12.623621 z"
|
||||
id="path3029-8-6"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#f9f9f9;fill-opacity:1;fill-rule:nonzero;stroke:#000111;stroke-width:0.8;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 60.818181,34.636363 38.90909,47.181818"
|
||||
id="path3801"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="color:#000000;fill:#f9f9f9;fill-opacity:1;fill-rule:nonzero;stroke:#000111;stroke-width:0.80000001;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 60.5,41.727273 38.590909,54.272727"
|
||||
id="path3801-7"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#f9f9f9;stroke:#000111;stroke-width:0.80000000999999998;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 50.363636,40.545455 -0.272727,7"
|
||||
id="path3838"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="color:#000000;fill:#f9f9f9;fill-opacity:1;fill-rule:nonzero;stroke:#000111;stroke-width:0.80000001;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 45.363636,36.727273 -0.181818,6.818182"
|
||||
id="path3846"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="color:#000000;fill:#f9f9f9;fill-opacity:1;fill-rule:nonzero;stroke:#000111;stroke-width:0.80000001;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 54.727273,31.590909 -0.181818,6.818182"
|
||||
id="path3846-2"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="color:#000000;fill:#f9f9f9;fill-opacity:1;fill-rule:nonzero;stroke:#000111;stroke-width:0.80000001;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 54.636364,45.227273 -0.181818,6.818182"
|
||||
id="path3846-6"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="color:#000000;fill:#f9f9f9;fill-opacity:1;fill-rule:nonzero;stroke:#000111;stroke-width:0.80000001;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 44.909091,50.772727 -0.181818,6.818182"
|
||||
id="path3846-4"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:#f9f9f9;stroke:#000111;stroke-width:0.80000000999999998;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 38.363636,46.636364 32.818182,42.727273"
|
||||
id="path3886"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="color:#000000;fill:#f9f9f9;fill-opacity:1;fill-rule:nonzero;stroke:#000111;stroke-width:0.80000001;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 37.954545,53.772727 32.409091,49.863636"
|
||||
id="path3886-9"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 8.6 KiB |
99
src/Mod/Arch/Resources/icons/Arch_SectionPlane.svg
Normal file
@@ -0,0 +1,99 @@
|
||||
<?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: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.1 r9760"
|
||||
sodipodi:docname="New document 2">
|
||||
<defs
|
||||
id="defs2987" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.97227183"
|
||||
inkscape:cx="152.65562"
|
||||
inkscape:cy="-55.147181"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="756"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="22"
|
||||
inkscape:window-maximized="1" />
|
||||
<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
|
||||
sodipodi:type="arc"
|
||||
style="color:#000000;fill:#ffcc00;fill-opacity:1;fill-rule:nonzero;stroke:#000000;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"
|
||||
id="path2993"
|
||||
sodipodi:cx="28.181818"
|
||||
sodipodi:cy="27.454546"
|
||||
sodipodi:rx="23.272728"
|
||||
sodipodi:ry="23.272728"
|
||||
d="m 51.454546,27.454546 a 23.272728,23.272728 0 1 1 -46.545456,0 23.272728,23.272728 0 1 1 46.545456,0 z"
|
||||
transform="translate(2.9090909,-0.72727273)" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="m 31.090909,3.6363636 0,58.5454544"
|
||||
id="path2995"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:type="star"
|
||||
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.01007271;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"
|
||||
id="path2997"
|
||||
sodipodi:sides="3"
|
||||
sodipodi:cx="22"
|
||||
sodipodi:cy="17.090908"
|
||||
sodipodi:r1="20.432512"
|
||||
sodipodi:r2="10.216257"
|
||||
sodipodi:arg1="2.0943951"
|
||||
sodipodi:arg2="3.1415927"
|
||||
inkscape:flatsided="true"
|
||||
inkscape:rounded="0"
|
||||
inkscape:randomized="0"
|
||||
d="m 11.783744,34.785983 0,-35.39014963 30.648768,17.69507463 z"
|
||||
inkscape:transform-center-x="-3.6403036"
|
||||
transform="matrix(0.71264942,0,0,1.1937629,23.115306,6.2604789)" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:27.77797508px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
|
||||
x="10.921829"
|
||||
y="34.558643"
|
||||
id="text3767"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3769"
|
||||
x="10.921829"
|
||||
y="34.558643">A</tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.9 KiB |
136
src/Mod/Arch/Resources/icons/Arch_Site.svg
Normal file
@@ -0,0 +1,136 @@
|
||||
<?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.1 r9760"
|
||||
sodipodi:docname="New document 2">
|
||||
<defs
|
||||
id="defs2987">
|
||||
<linearGradient
|
||||
id="linearGradient3794">
|
||||
<stop
|
||||
style="stop-color:#ffb400;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3796" />
|
||||
<stop
|
||||
style="stop-color:#ffea00;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3798" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3794"
|
||||
id="linearGradient3867"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="15.184971"
|
||||
y1="23.848686"
|
||||
x2="62.65237"
|
||||
y2="23.848686"
|
||||
gradientTransform="matrix(0.92896931,0,0,0.80145713,1.8407177,4.4432252)" />
|
||||
<linearGradient
|
||||
id="linearGradient3794-8">
|
||||
<stop
|
||||
style="stop-color:#ffb400;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3796-5" />
|
||||
<stop
|
||||
style="stop-color:#ffea00;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3798-8" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
y2="23.848686"
|
||||
x2="62.65237"
|
||||
y1="23.848686"
|
||||
x1="15.184971"
|
||||
gradientTransform="matrix(1.0265568,0,0,0.91490626,-3.236706,-1.8027032)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient3886"
|
||||
xlink:href="#linearGradient3794-8"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
id="linearGradient3794-1">
|
||||
<stop
|
||||
style="stop-color:#ffb400;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3796-2" />
|
||||
<stop
|
||||
style="stop-color:#ffea00;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3798-2" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
y2="23.848686"
|
||||
x2="62.65237"
|
||||
y1="23.848686"
|
||||
x1="15.184971"
|
||||
gradientTransform="matrix(1.0265568,0,0,0.91490626,-3.236706,-1.8027032)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient3886-0"
|
||||
xlink:href="#linearGradient3794-1"
|
||||
inkscape:collect="always" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.75"
|
||||
inkscape:cx="50.185459"
|
||||
inkscape:cy="23.846694"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="758"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="19"
|
||||
inkscape:window-maximized="1" />
|
||||
<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="color:#000000;fill:#ffeb3e;fill-opacity:1;fill-rule:nonzero;stroke:#372c0f;stroke-width:1.5;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 5.290092,41.532146 29.48946,51.555569 29.605803,57.074081 5.5227783,46.938037 z"
|
||||
id="path3904"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="color:#000000;fill:#b04a02;fill-opacity:1;fill-rule:nonzero;stroke:#37200f;stroke-width:1.5;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 59.505985,12.362862 59.040612,34.436915 29.605803,56.961459 29.48946,51.555569 40.774743,13.93958 z"
|
||||
id="path3869"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:url(#linearGradient3867);fill-opacity:1;stroke:#372c0f;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 36.502887,6.446868 -11.089572,8.565573 -8.99939,16.029143 0.174181,0.07514 L 5.2082316,41.736027 29.535617,51.654059 40.451006,40.684115 40.857431,40.283386 40.68325,40.208249 49.421367,23.578014 59.581969,12.432751 36.502887,6.446868 z"
|
||||
id="path3763"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.9 KiB |
100
src/Mod/Arch/Resources/icons/Arch_SplitMesh.svg
Normal file
@@ -0,0 +1,100 @@
|
||||
<?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: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.1 r9760"
|
||||
sodipodi:docname="Arch_MeshToShape.svg">
|
||||
<defs
|
||||
id="defs2987">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective2993" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.75"
|
||||
inkscape:cx="33.087351"
|
||||
inkscape:cy="35.659354"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="758"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="19"
|
||||
inkscape:window-maximized="1" />
|
||||
<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:#00ff00;fill-opacity:1;stroke:#001100;stroke-width:1.855;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 45.852797,39.834161 -10.677409,-5.924349 0,14.19608 10.547196,6.25969 z"
|
||||
id="path3009-9"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#001100;stroke-width:1.855;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 57.962541,33.630362 45.983009,39.890051 45.852797,54.393528 57.832328,48.161784 z"
|
||||
id="path3009-6-7"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#001100;stroke-width:1.855;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 35.175388,33.853922 47.024707,28.097243 57.929988,33.574472 45.722585,40.1695 z"
|
||||
id="path3029-1"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#001100;stroke-width:1.855;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 18.308475,23.054466 7.537144,17.580668 8.288519,52.952575 18.272184,60.203474 z"
|
||||
id="path3009"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#001100;stroke-width:1.855;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 49.57517,6.9475618 18.070607,23.024239 c 0.02693,12.383706 0.163707,26.009665 0.205464,37.147201 l 11.985432,-6.220404 0.205465,-22.603721 18.971226,-9.878176 z"
|
||||
id="path3009-6"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccc" />
|
||||
<path
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#001100;stroke-width:1.855;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 7.6310658,17.614886 39.016131,2.3065574 49.545724,6.8826869 18.272185,22.939255 z"
|
||||
id="path3029"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.1 KiB |
187
src/Mod/Arch/Resources/icons/Arch_Structure.svg
Normal file
@@ -0,0 +1,187 @@
|
||||
<?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: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.1 r9760"
|
||||
sodipodi:docname="Arch_Structure.svg">
|
||||
<defs
|
||||
id="defs2987">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="-56.67589 : 60.541728 : 1"
|
||||
inkscape:vp_y="0 : 1102.1522 : 0"
|
||||
inkscape:vp_z="125.67018 : 63.747989 : 1"
|
||||
inkscape:persp3d-origin="37.520737 : 35.960393 : 1"
|
||||
id="perspective2993" />
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="-56.67589 : 60.541728 : 1"
|
||||
inkscape:vp_y="0 : 1102.1522 : 0"
|
||||
inkscape:vp_z="125.67018 : 63.747989 : 1"
|
||||
inkscape:persp3d-origin="37.520737 : 35.960393 : 1"
|
||||
id="perspective2993-4" />
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="-46.892514 : 61.217294 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="95.652941 : 64.126385 : 1"
|
||||
inkscape:persp3d-origin="26.74385 : 38.914263 : 1"
|
||||
id="perspective2993-7" />
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="-49.818182 : 58.545455 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="92.727273 : 61.454546 : 1"
|
||||
inkscape:persp3d-origin="23.818182 : 36.242424 : 1"
|
||||
id="perspective2993-3" />
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="-56.67589 : 60.541728 : 1"
|
||||
inkscape:vp_y="0 : 1102.1522 : 0"
|
||||
inkscape:vp_z="125.67018 : 63.747989 : 1"
|
||||
inkscape:persp3d-origin="37.520737 : 35.960393 : 1"
|
||||
id="perspective2993-9" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="7.7781746"
|
||||
inkscape:cx="33.811034"
|
||||
inkscape:cy="31.323654"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="758"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="19"
|
||||
inkscape:window-maximized="1" />
|
||||
<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
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3919"
|
||||
style="color:#000000;fill:#afafde;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 13.798146,54.963468 9.388498,6.861485 8.53344,-5.12696 -9.62057,-5.794341 z" />
|
||||
<path
|
||||
style="fill:#000000;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1;opacity:0.51833333"
|
||||
d="m 13.885006,54.871894 -2.699862,-9.385235 -3.5998167,1.799908 -4.6283353,-2.956992 0,-8.485281 46.283353,-11.699403 -0.128565,10.542319 -9.899495,4.371205 -2.057038,8.999541 -2.571297,-8.099587 -5.913984,3.085557 z"
|
||||
id="path3976"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3921"
|
||||
style="color:#000000;fill:#353564;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 13.798146,23.375496 0,31.587972 8.301368,-4.059816 0,-29.244015 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3923"
|
||||
style="color:#000000;fill:#e9e9ff;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 22.099514,21.659637 9.62057,2.222871 0,32.815485 -9.62057,-5.794341 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3925"
|
||||
style="color:#000000;fill:#774901;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 13.798146,23.375496 9.388498,2.653358 8.53344,-2.146346 -9.62057,-2.222871 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3927"
|
||||
style="color:#000000;fill:#fff14a;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 23.186644,26.028854 0,35.796099 8.53344,-5.12696 0,-32.815485 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3929"
|
||||
style="color:#000000;fill:#ffc900;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 13.798146,23.375496 9.388498,2.653358 0,35.796099 -9.388498,-6.861485 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3939"
|
||||
style="color:#000000;fill:#afafde;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 37.056572,48.22511 9.388501,4.483969 8.482949,-5.616787 -9.162177,-3.582156 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3941"
|
||||
style="color:#000000;fill:#353564;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 37.056572,18.674277 0,29.550833 8.709273,-4.714974 0,-26.646468 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3943"
|
||||
style="color:#000000;fill:#e9e9ff;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 45.765845,16.863668 9.162177,1.198951 0,29.029673 -9.162177,-3.582156 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3945"
|
||||
style="color:#000000;fill:#774901;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 37.056572,18.674277 9.388501,1.524077 8.482949,-2.135735 -9.162177,-1.198951 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3947"
|
||||
style="color:#000000;fill:#fff14a;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 46.445073,20.198354 0,32.510725 8.482949,-5.616787 0,-29.029673 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3949"
|
||||
style="color:#000000;fill:#ffc900;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 37.056572,18.674277 9.388501,1.524077 0,32.510725 -9.388501,-4.483969 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3899"
|
||||
style="color:#000000;fill:#afafde;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="M 2.8666854,22.255584 12.487769,25.292915 61.908304,14.358929 52.014367,13.449446 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3901"
|
||||
style="color:#000000;fill:#353564;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 2.8666854,6.2707377 0,15.9848463 49.1476816,-8.806138 0,-9.5874872 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3903"
|
||||
style="color:#000000;fill:#e9e9ff;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 52.014367,3.8619588 9.893937,0.036747 0,10.4602232 -9.893937,-0.909483 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3905"
|
||||
style="color:#000000;fill:#4d4d9f;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="M 2.8666854,6.2707377 12.487769,6.7251851 61.908304,3.8987059 52.014367,3.8619588 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3907"
|
||||
style="color:#000000;fill:#fff14a;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 12.487769,6.7251851 0,18.5677299 49.420535,-10.933986 0,-10.4602231 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3909"
|
||||
style="color:#000000;fill:#ffc900;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 2.8666854,6.2707377 9.6210836,0.4544474 0,18.5677299 -9.6210836,-3.037331 z" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 11 KiB |
279
src/Mod/Arch/Resources/icons/Arch_Wall.svg
Executable file
@@ -0,0 +1,279 @@
|
||||
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg2816"
|
||||
version="1.1"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="Arch_Wall.svg">
|
||||
<defs
|
||||
id="defs2818">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective2824" />
|
||||
<inkscape:perspective
|
||||
id="perspective3622"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3622-9"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3653"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3675"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3697"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3720"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3742"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3764"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3806"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3806-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3835"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3614"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3614-8"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3643"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3643-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3672"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3672-5"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3701"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3701-8"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.9445436"
|
||||
inkscape:cx="61.084031"
|
||||
inkscape:cy="29.484142"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:bbox-paths="true"
|
||||
inkscape:bbox-nodes="true"
|
||||
inkscape:snap-bbox-edge-midpoints="true"
|
||||
inkscape:snap-bbox-midpoints="true"
|
||||
inkscape:object-paths="true"
|
||||
inkscape:object-nodes="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="758"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="19"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata2821">
|
||||
<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 />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<rect
|
||||
style="color:#000000;fill:#aa7200;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.14880727;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"
|
||||
id="rect2840-3-4-0-8"
|
||||
width="15.936329"
|
||||
height="12.585408"
|
||||
x="32.997906"
|
||||
y="59.61282"
|
||||
transform="matrix(0.7577145,-0.65258619,0,1,0,0)" />
|
||||
<rect
|
||||
style="color:#000000;fill:#ffaf00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.03287753;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dashoffset:0"
|
||||
id="rect2840"
|
||||
width="24.362967"
|
||||
height="12.482594"
|
||||
x="2.3111296"
|
||||
y="28.888771"
|
||||
transform="matrix(0.93735109,0.34838619,0,1,0,0)" />
|
||||
<rect
|
||||
style="color:#000000;fill:#ffaf00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.03287753;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dashoffset:0"
|
||||
id="rect2840-9"
|
||||
width="24.362967"
|
||||
height="12.482594"
|
||||
x="28.963516"
|
||||
y="28.866888"
|
||||
transform="matrix(0.93735109,0.34838619,0,1,0,0)" />
|
||||
<path
|
||||
style="color:#000000;fill:#ffdd27;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994000000003;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
d="M 14.241527,19.294108 37.07818,27.781829 25.002993,38.181657 2.1663398,29.693936 14.241527,19.294108 z"
|
||||
id="rect2840-3-5-3-5"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#ffdd27;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994000000003;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
d="M 39.224174,28.454727 62.060827,36.942448 49.98564,47.342276 27.148987,38.854555 39.224174,28.454727 z"
|
||||
id="rect2840-3-5-3"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#000000;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;opacity:0.60305344"
|
||||
d="m 39.510988,41.014833 13.307194,-1.651197 4.898989,-4.035599 -20.638992,-7.649023 -8.324649,7.169655 10.757458,6.166164 z"
|
||||
id="path3849"
|
||||
sodipodi:nodetypes="cccccc" />
|
||||
<rect
|
||||
style="color:#000000;fill:#ffaf00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.03287752999999993;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dashoffset:0"
|
||||
id="rect2840-3"
|
||||
width="24.362967"
|
||||
height="12.482594"
|
||||
x="17.78878"
|
||||
y="13.847153"
|
||||
transform="matrix(0.93735109,0.34838619,0,1,0,0)" />
|
||||
<rect
|
||||
style="color:#000000;fill:#aa7200;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.14880727;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dashoffset:0"
|
||||
id="rect2840-3-4"
|
||||
width="15.936329"
|
||||
height="12.585408"
|
||||
x="65.968956"
|
||||
y="90.392708"
|
||||
transform="matrix(0.7577145,-0.65258619,0,1,0,0)" />
|
||||
<rect
|
||||
style="color:#000000;fill:#aa7200;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.14880727000000005;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dashoffset:0"
|
||||
id="rect2840-3-4-0"
|
||||
width="15.936329"
|
||||
height="12.585408"
|
||||
x="52.144951"
|
||||
y="62.458496"
|
||||
transform="matrix(0.7577145,-0.65258619,0,1,0,0)" />
|
||||
<path
|
||||
style="color:#000000;fill:#ffdd27;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994000000003;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
d="M 28.74952,9.541872 51.586172,18.029593 39.510985,28.429421 16.674332,19.9417 28.74952,9.541872 z"
|
||||
id="rect2840-3-5"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
494
src/Mod/Arch/Resources/icons/Arch_Window.svg
Normal file
@@ -0,0 +1,494 @@
|
||||
<?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="svg2816"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="Arch_Window.svg">
|
||||
<defs
|
||||
id="defs2818">
|
||||
<linearGradient
|
||||
id="linearGradient3633">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3635" />
|
||||
<stop
|
||||
style="stop-color:#ffbf00;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3637" />
|
||||
</linearGradient>
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective2824" />
|
||||
<inkscape:perspective
|
||||
id="perspective3622"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3622-9"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3653"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3675"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3697"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3720"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3742"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3764"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3806"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3806-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3835"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3614"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3614-8"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3643"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3643-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3672"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3672-5"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3701"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3701-8"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3746"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
patternTransform="matrix(0.67643728,-0.81829155,2.4578314,1.8844554,-26.450606,18.294947)"
|
||||
id="pattern5231"
|
||||
xlink:href="#Strips1_1-4"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5224"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-4"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-4"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<inkscape:perspective
|
||||
id="perspective5224-9"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,39.618381,8.9692804)"
|
||||
id="pattern5231-4"
|
||||
xlink:href="#Strips1_1-6"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5224-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-6"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-0"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<pattern
|
||||
patternTransform="matrix(0.66513382,-1.0631299,2.4167603,2.4482973,-49.762569,2.9546807)"
|
||||
id="pattern5296"
|
||||
xlink:href="#pattern5231-3"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5288"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,-26.336284,10.887197)"
|
||||
id="pattern5231-3"
|
||||
xlink:href="#Strips1_1-4-3"
|
||||
inkscape:collect="always" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-4-3"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-4-6"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<pattern
|
||||
patternTransform="matrix(0.42844886,-0.62155849,1.5567667,1.431396,27.948414,13.306456)"
|
||||
id="pattern5330"
|
||||
xlink:href="#Strips1_1-9"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5323"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-9"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-3"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<inkscape:perspective
|
||||
id="perspective5361"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective5383"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective5411"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785-6"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785-1"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785-67"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785-8"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3848"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3869"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3894"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="3.8890872"
|
||||
inkscape:cx="51.039536"
|
||||
inkscape:cy="24.707156"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:bbox-paths="true"
|
||||
inkscape:bbox-nodes="true"
|
||||
inkscape:snap-bbox-edge-midpoints="true"
|
||||
inkscape:snap-bbox-midpoints="true"
|
||||
inkscape:object-paths="true"
|
||||
inkscape:object-nodes="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="756"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="22"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-global="true" />
|
||||
<metadata
|
||||
id="metadata2821">
|
||||
<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="opacity:0.45833333;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 4.1875,15.75 0.25,24.21875 3.8125,9.15625 51,9.28125 L 42.71875,24.375 16,17.53125 19.8125,25.09375 10.09375,23.375 4.1875,15.75 z m 30.71875,8.71875 4.625,1.21875 2.1875,5.46875 -4.34375,0.78125 -2.46875,-7.46875 z m -29,2.5625 15.25,3.9375 4.25,10.28125 0,-0.25 0.125,0.5625 L 25.40625,41.25 10.5,37.3125 5.90625,27.03125 z m 28.75,7.59375 7.71875,2.4375 3.09375,9.1875 -10.875,-2.625 0.0625,-9 z"
|
||||
id="path4173"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="color:#000000;fill:#fff41b;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.86000001;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 12.533362,30.367309 4.28836,-4.228863 -0.07538,15.362424 -4.212972,3.324228 z"
|
||||
id="path3263-2-5"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#fff41b;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.86000001;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 12.533366,11.126695 4.28836,-4.2288621 -0.07539,15.3624241 -4.212972,3.324228 z"
|
||||
id="path3263-2"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#fff41b;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.86000001;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 33.095742,36.161356 4.28836,-4.228863 -0.07538,15.362426 -4.212973,3.324228 z"
|
||||
id="path3263-2-94"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#fff41b;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.86000001;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 33.095742,16.920743 4.28836,-4.228863 -0.07538,15.362426 -4.212973,3.324228 z"
|
||||
id="path3263-2-9"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#ffd800;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.86000001;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 7.9136234,4.7313784 8.2457616,49.115974 55.047068,61.742625 54.775317,16.128162 7.9136234,4.7313784 z m 4.6197426,6.3953166 16.153999,4.126893 0.181166,14.949738 -16.335165,-4.618841 0,-14.45779 z m 20.56238,5.794048 16.153999,4.126893 0.181165,14.949738 -16.335164,-4.61884 0,-14.457791 z m -20.56238,13.446565 16.153999,4.126893 0.181166,14.949738 -16.335165,-4.618841 0,-14.45779 z m 20.56238,5.794048 16.153999,4.126893 0.181165,14.949737 -16.335164,-4.618839 0,-14.457791 z"
|
||||
id="path3197"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="color:#000000;fill:#5c4500;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.86000001;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 7.9136234,4.7313784 13.67056,2.6484517 59.508485,13.217756 54.775317,16.128162 z"
|
||||
id="path3261"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="color:#000000;fill:#fff41b;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.86000001;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 54.775317,16.128162 4.733168,-2.910406 -0.248444,45.200642 -4.212973,3.324227 z"
|
||||
id="path3263"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#5c4500;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.86000001;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 12.533366,25.584485 4.212972,-3.324228 12.064132,3.151922 0.05807,4.791147 z"
|
||||
id="path3261-5"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#5c4500;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.86000001;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 33.095746,31.378534 4.212973,-3.324228 12.064131,3.151922 0.05806,4.791146 z"
|
||||
id="path3261-5-0"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#5c4500;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.86000001;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 12.533366,44.825098 4.212972,-3.324228 12.064132,3.151922 0.05807,4.791147 z"
|
||||
id="path3261-5-1"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#5c4500;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.86000001;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 33.095746,50.619147 4.212973,-3.324228 12.064131,3.151922 0.05806,4.791145 z"
|
||||
id="path3261-5-9"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 21 KiB |
223
src/Mod/Arch/Resources/icons/preferences-arch.svg
Executable file
@@ -0,0 +1,223 @@
|
||||
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg2816"
|
||||
version="1.1"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="New document 2">
|
||||
<defs
|
||||
id="defs2818">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective2824" />
|
||||
<inkscape:perspective
|
||||
id="perspective3622"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3622-9"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3653"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3675"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3697"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3720"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3742"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3764"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3806"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3806-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3835"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.5"
|
||||
inkscape:cx="33.685487"
|
||||
inkscape:cy="28.119326"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:bbox-paths="true"
|
||||
inkscape:bbox-nodes="true"
|
||||
inkscape:snap-bbox-edge-midpoints="true"
|
||||
inkscape:snap-bbox-midpoints="true"
|
||||
inkscape:object-paths="true"
|
||||
inkscape:object-nodes="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="758"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="19"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata2821">
|
||||
<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">
|
||||
<rect
|
||||
style="color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.14880729;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"
|
||||
id="rect2840-3-4-0-8"
|
||||
width="15.936329"
|
||||
height="12.585408"
|
||||
x="32.997906"
|
||||
y="59.61282"
|
||||
transform="matrix(0.7577145,-0.65258619,0,1,0,0)" />
|
||||
<rect
|
||||
style="color:#000000;fill:#ff7f2a;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.03287753;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dashoffset:0"
|
||||
id="rect2840"
|
||||
width="24.362967"
|
||||
height="12.482594"
|
||||
x="2.3111296"
|
||||
y="28.888771"
|
||||
transform="matrix(0.93735109,0.34838619,0,1,0,0)" />
|
||||
<rect
|
||||
style="color:#000000;fill:#ff7f2a;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.03287753;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dashoffset:0"
|
||||
id="rect2840-9"
|
||||
width="24.362967"
|
||||
height="12.482594"
|
||||
x="28.963516"
|
||||
y="28.866888"
|
||||
transform="matrix(0.93735109,0.34838619,0,1,0,0)" />
|
||||
<path
|
||||
style="color:#000000;fill:#ff9955;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994000000003;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
d="M 14.241527,19.294108 37.07818,27.781829 25.002993,38.181657 2.1663398,29.693936 14.241527,19.294108 z"
|
||||
id="rect2840-3-5-3-5"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#ff9955;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994000000003;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
d="M 39.224174,28.454727 62.060827,36.942448 49.98564,47.342276 27.148987,38.854555 39.224174,28.454727 z"
|
||||
id="rect2840-3-5-3"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#000000;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;opacity:0.60305344"
|
||||
d="m 39.510988,41.014833 13.307194,-1.651197 4.898989,-4.035599 -20.638992,-7.649023 -8.324649,7.169655 10.757458,6.166164 z"
|
||||
id="path3849"
|
||||
sodipodi:nodetypes="cccccc" />
|
||||
<rect
|
||||
style="color:#000000;fill:#ff7f2a;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.03287753;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dashoffset:0"
|
||||
id="rect2840-3"
|
||||
width="24.362967"
|
||||
height="12.482594"
|
||||
x="17.78878"
|
||||
y="13.847153"
|
||||
transform="matrix(0.93735109,0.34838619,0,1,0,0)" />
|
||||
<rect
|
||||
style="color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.14880727000000005;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dashoffset:0"
|
||||
id="rect2840-3-4"
|
||||
width="15.936329"
|
||||
height="12.585408"
|
||||
x="65.968956"
|
||||
y="90.392708"
|
||||
transform="matrix(0.7577145,-0.65258619,0,1,0,0)" />
|
||||
<rect
|
||||
style="color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.14880727;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dashoffset:0"
|
||||
id="rect2840-3-4-0"
|
||||
width="15.936329"
|
||||
height="12.585408"
|
||||
x="52.144951"
|
||||
y="62.458496"
|
||||
transform="matrix(0.7577145,-0.65258619,0,1,0,0)" />
|
||||
<path
|
||||
style="color:#000000;fill:#ff9955;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994000000003;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
d="M 28.74952,9.541872 51.586172,18.029593 39.510985,28.429421 16.674332,19.9417 28.74952,9.541872 z"
|
||||
id="rect2840-3-5"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 10 KiB |
136
src/Mod/Arch/Resources/translations/Arch.ts
Normal file
@@ -0,0 +1,136 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS><TS version="1.1">
|
||||
<context>
|
||||
<name>Arch_Add</name>
|
||||
<message>
|
||||
<location filename="Commands.py" line="156"/>
|
||||
<source>Add component</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Commands.py" line="157"/>
|
||||
<source>Adds the selected components to the active object</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Arch_Building</name>
|
||||
<message>
|
||||
<location filename="Building.py" line="47"/>
|
||||
<source>Building</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Building.py" line="49"/>
|
||||
<source>Creates a building object including selected objects.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Arch_Cell</name>
|
||||
<message>
|
||||
<location filename="Cell.py" line="49"/>
|
||||
<source>Cell</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Cell.py" line="51"/>
|
||||
<source>Creates a cell object including selected objects</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Arch_Floor</name>
|
||||
<message>
|
||||
<location filename="Floor.py" line="48"/>
|
||||
<source>Floor</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Floor.py" line="50"/>
|
||||
<source>Creates a floor object including selected objects</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Arch_MeshToPart</name>
|
||||
<message>
|
||||
<location filename="Commands.py" line="215"/>
|
||||
<source>Turns selected meshes into Part Shape objects</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Arch_MeshToShape</name>
|
||||
<message>
|
||||
<location filename="Commands.py" line="214"/>
|
||||
<source>Mesh to Shape</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Arch_Remove</name>
|
||||
<message>
|
||||
<location filename="Commands.py" line="174"/>
|
||||
<source>Remove component</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Commands.py" line="175"/>
|
||||
<source>Remove the selected components from their parents, or create a hole in a component</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Arch_Site</name>
|
||||
<message>
|
||||
<location filename="Site.py" line="45"/>
|
||||
<source>Site</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Site.py" line="47"/>
|
||||
<source>Creates a site object including selected objects.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Arch_SplitMesh</name>
|
||||
<message>
|
||||
<location filename="Commands.py" line="196"/>
|
||||
<source>Split Mesh</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Commands.py" line="197"/>
|
||||
<source>Splits selected meshes into independent components</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Arch_Structure</name>
|
||||
<message>
|
||||
<location filename="Structure.py" line="48"/>
|
||||
<source>Structure</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Structure.py" line="50"/>
|
||||
<source>Creates a structure object from scratch or from a selected object (sketch, wire, face or solid)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Arch_Wall</name>
|
||||
<message>
|
||||
<location filename="Wall.py" line="50"/>
|
||||
<source>Wall</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Wall.py" line="52"/>
|
||||
<source>Creates a wall object from scratch or from a selected object (wire, face or solid)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
151
src/Mod/Arch/Resources/ui/archprefs-base.ui
Normal file
@@ -0,0 +1,151 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Gui::Dialog::DlgSettingsArch</class>
|
||||
<widget class="QWidget" name="Gui::Dialog::DlgSettingsArch">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>575</width>
|
||||
<height>629</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>General settings</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout">
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>9</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
<string>General Arch Settings</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>Default color for walls</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Gui::PrefColorButton" name="gui::prefcolorbutton">
|
||||
<property name="toolTip">
|
||||
<string>This is the default color for new Wall objects</string>
|
||||
</property>
|
||||
<property name="color">
|
||||
<color>
|
||||
<red>255</red>
|
||||
<green>190</green>
|
||||
<blue>170</blue>
|
||||
</color>
|
||||
</property>
|
||||
<property name="prefEntry" stdset="0">
|
||||
<cstring>WallColor</cstring>
|
||||
</property>
|
||||
<property name="prefPath" stdset="0">
|
||||
<cstring>Mod/Arch</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Default color for structures</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Gui::PrefColorButton" name="gui::prefcolorbutton_2">
|
||||
<property name="toolTip">
|
||||
<string>This is the default color for new Structure objects</string>
|
||||
</property>
|
||||
<property name="color">
|
||||
<color>
|
||||
<red>150</red>
|
||||
<green>169</green>
|
||||
<blue>186</blue>
|
||||
</color>
|
||||
</property>
|
||||
<property name="prefEntry" stdset="0">
|
||||
<cstring>StructureColor</cstring>
|
||||
</property>
|
||||
<property name="prefPath" stdset="0">
|
||||
<cstring>Mod/Arch</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>Gui::ColorButton</class>
|
||||
<extends>QPushButton</extends>
|
||||
<header>Gui/Widgets.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>Gui::PrefColorButton</class>
|
||||
<extends>Gui::ColorButton</extends>
|
||||
<header>Gui/PrefWidgets.h</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
127
src/Mod/Arch/SectionPlane.py
Normal file
@@ -0,0 +1,127 @@
|
||||
import FreeCAD,FreeCADGui,Part,Component
|
||||
from FreeCAD import Vector
|
||||
from PyQt4 import QtCore
|
||||
from pivy import coin
|
||||
|
||||
class CommandSectionPlane:
|
||||
"the Arch SectionPlane command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_SectionPlane',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_SectionPlane","Section Plane"),
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_SectionPlane","Adds a section plane object to the document")}
|
||||
|
||||
def Activated(self):
|
||||
FreeCAD.ActiveDocument.openTransaction("Section Plane")
|
||||
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython","Section")
|
||||
SectionPlane(obj)
|
||||
ViewProviderSectionPlane(obj.ViewObject)
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
FreeCAD.ActiveDocument.recompute()
|
||||
|
||||
class SectionPlane:
|
||||
"A section plane object"
|
||||
def __init__(self,obj):
|
||||
obj.Proxy = self
|
||||
self.Type = "Visual Component"
|
||||
|
||||
def execute(self,obj):
|
||||
pl = obj.Placement
|
||||
l = obj.ViewObject.DisplaySize
|
||||
p = Part.makePlane(l,l,Vector(l/2,-l/2,0),Vector(0,0,-1))
|
||||
obj.Shape = p
|
||||
obj.Placement = pl
|
||||
|
||||
class ViewProviderSectionPlane(Component.ViewProviderComponent):
|
||||
"A View Provider for Section Planes"
|
||||
def __init__(self,vobj):
|
||||
vobj.addProperty("App::PropertyLength","DisplaySize","Base",
|
||||
"The display size of the section plane")
|
||||
vobj.DisplaySize = 1
|
||||
vobj.Transparency = 85
|
||||
vobj.LineWidth = 1
|
||||
vobj.LineColor = (0.0,0.0,0.4,1.0)
|
||||
vobj.Proxy = self
|
||||
self.Object = vobj.Object
|
||||
|
||||
def getIcon(self):
|
||||
return """
|
||||
/* XPM */
|
||||
static char * Arch_SectionPlane_xpm[] = {
|
||||
"16 16 3 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #FFFFFF",
|
||||
" ...... ",
|
||||
" ..+++.++.. ",
|
||||
" .+++++..+++. ",
|
||||
" .++++++...+++. ",
|
||||
" .++.+++....++. ",
|
||||
".++.+.++.....++.",
|
||||
".+.+++.+......+.",
|
||||
".+.+++.+........",
|
||||
".+.+++.+........",
|
||||
".+.....+......+.",
|
||||
".+.+++.+.....++.",
|
||||
" .++++++....++. ",
|
||||
" .++++++...+++. ",
|
||||
" .+++++..+++. ",
|
||||
" ..+++.++.. ",
|
||||
" ...... "};
|
||||
"""
|
||||
|
||||
def claimChildren(self):
|
||||
return []
|
||||
|
||||
def attach(self,vobj):
|
||||
self.Object = vobj.Object
|
||||
# adding arrows
|
||||
rn = vobj.RootNode
|
||||
self.col = coin.SoBaseColor()
|
||||
self.setColor()
|
||||
ds = coin.SoDrawStyle()
|
||||
ds.style = coin.SoDrawStyle.LINES
|
||||
self.lcoords = coin.SoCoordinate3()
|
||||
ls = coin.SoLineSet()
|
||||
ls.numVertices.setValues([2,2,2,2])
|
||||
self.mcoords = coin.SoCoordinate3()
|
||||
mk = coin.SoMarkerSet()
|
||||
mk.markerIndex = coin.SoMarkerSet.TRIANGLE_FILLED_5_5
|
||||
pt = coin.SoAnnotation()
|
||||
pt.addChild(self.col)
|
||||
pt.addChild(ds)
|
||||
pt.addChild(self.lcoords)
|
||||
pt.addChild(ls)
|
||||
pt.addChild(self.mcoords)
|
||||
pt.addChild(mk)
|
||||
rn.addChild(pt)
|
||||
self.setVerts()
|
||||
|
||||
def setColor(self):
|
||||
print self.Object.ViewObject.LineColor
|
||||
self.col.rgb.setValue(self.Object.ViewObject.LineColor[0],
|
||||
self.Object.ViewObject.LineColor[1],
|
||||
self.Object.ViewObject.LineColor[2])
|
||||
|
||||
def setVerts(self):
|
||||
hd = self.Object.ViewObject.DisplaySize/2
|
||||
verts = []
|
||||
verts.extend([[-hd,-hd,0],[-hd,-hd,-hd/3]])
|
||||
verts.extend([[hd,-hd,0],[hd,-hd,-hd/3]])
|
||||
verts.extend([[hd,hd,0],[hd,hd,-hd/3]])
|
||||
verts.extend([[-hd,hd,0],[-hd,hd,-hd/3]])
|
||||
self.lcoords.point.setValues(0,8,verts)
|
||||
self.mcoords.point.setValues(0,4,[verts[1],verts[3],verts[5],verts[7]])
|
||||
|
||||
def updateData(self,obj,prop):
|
||||
if prop in ["Shape","Placement"]:
|
||||
self.setVerts()
|
||||
return
|
||||
|
||||
def onChanged(self,vobj,prop):
|
||||
if prop == "LineColor":
|
||||
self.setColor()
|
||||
elif prop == "DisplaySize":
|
||||
vobj.Object.Proxy.execute(vobj.Object)
|
||||
return
|
||||
|
||||
FreeCADGui.addCommand('Arch_SectionPlane',CommandSectionPlane())
|
||||
103
src/Mod/Arch/Site.py
Normal file
@@ -0,0 +1,103 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* 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 Cell,FreeCAD,FreeCADGui
|
||||
from PyQt4 import QtCore
|
||||
|
||||
__title__="FreeCAD Site"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
def makeSite(objectslist,name="Site"):
|
||||
'''makeBuilding(objectslist): creates a site including the
|
||||
objects from the given list.'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
|
||||
Site(obj)
|
||||
ViewProviderSite(obj.ViewObject)
|
||||
obj.Components = objectslist
|
||||
obj.JoinMode = False
|
||||
return obj
|
||||
|
||||
class CommandSite:
|
||||
"the Arch Site command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_Site',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_Site","Site"),
|
||||
'Accel': "S, I",
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Site","Creates a site object including selected objects.")}
|
||||
|
||||
def Activated(self):
|
||||
FreeCAD.ActiveDocument.openTransaction("Site")
|
||||
makeSite(FreeCADGui.Selection.getSelection())
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
|
||||
class Site(Cell.Cell):
|
||||
"The Site object"
|
||||
def __init__(self,obj):
|
||||
Cell.Cell.__init__(self,obj)
|
||||
self.Type = "Site"
|
||||
|
||||
def execute(self,obj):
|
||||
pass
|
||||
|
||||
def onChanged(self,obj,prop):
|
||||
pass
|
||||
|
||||
class ViewProviderSite(Cell.ViewProviderCell):
|
||||
"A View Provider for the Site object"
|
||||
def __init__(self,vobj):
|
||||
Cell.ViewProviderCell.__init__(self,vobj)
|
||||
|
||||
def getIcon(self):
|
||||
return """
|
||||
/* XPM */
|
||||
static char * Arch_Site_xpm[] = {
|
||||
"16 16 9 1",
|
||||
" c None",
|
||||
". c #49370C",
|
||||
"+ c #204F0E",
|
||||
"@ c #535219",
|
||||
"# c #6F551D",
|
||||
"$ c #127210",
|
||||
"% c #049512",
|
||||
"& c #08BD16",
|
||||
"* c #00EB1B",
|
||||
" +$++ ",
|
||||
" $%%%$++++",
|
||||
" $&&%%$$$+@",
|
||||
" $&&&%%$$+@.",
|
||||
" &&&&%%$$+#.",
|
||||
" $*&&&%%$+##.",
|
||||
" &*&&&%%$@##.",
|
||||
" %**&&&%%+###.",
|
||||
" %***&&&%$@###.",
|
||||
" %****&&&%+##. ",
|
||||
"+&****&&&$@#. ",
|
||||
".#+%&*&&$@#. ",
|
||||
" ..#@$%$@#. ",
|
||||
" ..#@@. ",
|
||||
" .. ",
|
||||
" "};
|
||||
"""
|
||||
|
||||
FreeCADGui.addCommand('Arch_Site',CommandSite())
|
||||
185
src/Mod/Arch/Structure.py
Normal file
@@ -0,0 +1,185 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* 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,Part,Draft,Component
|
||||
from draftlibs import fcgeo,fcvec
|
||||
from FreeCAD import Vector
|
||||
from PyQt4 import QtCore
|
||||
|
||||
__title__="FreeCAD Structure"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
def makeStructure(baseobj=None,length=None,width=None,height=None,name="Structure"):
|
||||
'''makeStructure([obj],[length],[width],[heigth],[swap]): creates a
|
||||
structure element based on the given profile object and the given
|
||||
extrusion height. If no base object is given, you can also specify
|
||||
length and width for a cubic object.'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
|
||||
Structure(obj)
|
||||
ViewProviderStructure(obj.ViewObject)
|
||||
if baseobj: obj.Base = baseobj
|
||||
if length: obj.Length = length
|
||||
if width: obj.Width = width
|
||||
if height: obj.Height = height
|
||||
if obj.Base:
|
||||
obj.Base.ViewObject.hide()
|
||||
else:
|
||||
if (not obj.Width) and (not obj.Length):
|
||||
obj.Width = 1
|
||||
obj.Height = 1
|
||||
p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch")
|
||||
c = p.GetUnsigned("StructureColor")
|
||||
r = float((c>>24)&0xFF)/255.0
|
||||
g = float((c>>16)&0xFF)/255.0
|
||||
b = float((c>>8)&0xFF)/255.0
|
||||
obj.ViewObject.ShapeColor = (r,g,b,1.0)
|
||||
return obj
|
||||
|
||||
class CommandStructure:
|
||||
"the Arch Structure command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_Structure',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_Structure","Structure"),
|
||||
'Accel': "S, T",
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Structure","Creates a structure object from scratch or from a selected object (sketch, wire, face or solid)")}
|
||||
|
||||
def Activated(self):
|
||||
sel = FreeCADGui.Selection.getSelection()
|
||||
if sel:
|
||||
FreeCAD.ActiveDocument.openTransaction("Structure")
|
||||
for obj in sel:
|
||||
makeStructure(obj)
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
else:
|
||||
makeStructure()
|
||||
|
||||
class Structure(Component.Component):
|
||||
"The Structure object"
|
||||
def __init__(self,obj):
|
||||
Component.Component.__init__(self,obj)
|
||||
obj.addProperty("App::PropertyLength","Length","Base",
|
||||
"The length of this element, if not based on a profile")
|
||||
obj.addProperty("App::PropertyLength","Width","Base",
|
||||
"The width of this element, if not based on a profile")
|
||||
obj.addProperty("App::PropertyLength","Height","Base",
|
||||
"The height or extrusion depth of this element. Keep 0 for automatic")
|
||||
self.Type = "Structure"
|
||||
|
||||
def execute(self,obj):
|
||||
self.createGeometry(obj)
|
||||
|
||||
def onChanged(self,obj,prop):
|
||||
if prop in ["Base","Length","Width","Height","Normal","Additions","Subtractions"]:
|
||||
self.createGeometry(obj)
|
||||
|
||||
def createGeometry(self,obj):
|
||||
# getting default values
|
||||
height = normal = None
|
||||
if obj.Length:
|
||||
length = obj.Length
|
||||
else:
|
||||
length = 1
|
||||
if obj.Width:
|
||||
width = obj.Width
|
||||
else:
|
||||
width = 1
|
||||
if obj.Height:
|
||||
height = obj.Height
|
||||
else:
|
||||
for p in obj.InList:
|
||||
if Draft.getType(p) == "Floor":
|
||||
height = p.Height
|
||||
if not height: height = 1
|
||||
if obj.Normal == Vector(0,0,0):
|
||||
normal = Vector(0,0,1)
|
||||
else:
|
||||
normal = Vector(obj.Normal)
|
||||
|
||||
# creating shape
|
||||
pl = obj.Placement
|
||||
norm = normal.multiply(height)
|
||||
base = None
|
||||
if obj.Base:
|
||||
if obj.Base.isDerivedFrom("Part::Feature"):
|
||||
base = obj.Base.Shape.copy()
|
||||
if base.Solids:
|
||||
pass
|
||||
elif base.Faces:
|
||||
base = base.extrude(normal)
|
||||
elif (len(base.Wires) == 1) and base.Wires[0].isClosed():
|
||||
base = Part.Face(base.Wires[0])
|
||||
base = base.extrude(normal)
|
||||
else:
|
||||
l2 = length/2 or 0.5
|
||||
w2 = width/2 or 0.5
|
||||
v1 = Vector(-l2,-w2,0)
|
||||
v2 = Vector(l2,-w2,0)
|
||||
v3 = Vector(l2,w2,0)
|
||||
v4 = Vector(-l2,w2,0)
|
||||
base = Part.makePolygon([v1,v2,v3,v4,v1])
|
||||
base = Part.Face(base)
|
||||
base = base.extrude(normal)
|
||||
if base:
|
||||
obj.Shape = base
|
||||
if not fcgeo.isNull(pl): obj.Placement = pl
|
||||
|
||||
class ViewProviderStructure(Component.ViewProviderComponent):
|
||||
"A View Provider for the Structure object"
|
||||
|
||||
def __init__(self,vobj):
|
||||
Component.ViewProviderComponent.__init__(self,vobj)
|
||||
|
||||
def getIcon(self):
|
||||
return """
|
||||
/* XPM */
|
||||
static char * Arch_Structure_xpm[] = {
|
||||
"16 16 9 1",
|
||||
" c None",
|
||||
". c #2A303B",
|
||||
"+ c #484F58",
|
||||
"@ c #506573",
|
||||
"# c #617887",
|
||||
"$ c #7A98A6",
|
||||
"% c #A5A4A8",
|
||||
"& c #C1C5C5",
|
||||
"* c #ECEEEB",
|
||||
"......++++@##%%@",
|
||||
"@$@************%",
|
||||
"@$@************%",
|
||||
"@$@********&%#+ ",
|
||||
"@$@****%%@+.%% ",
|
||||
".@+%#+.+ @$@*& ",
|
||||
" #$+*% @$@*& ",
|
||||
" #$@*% @$@*& ",
|
||||
" #$@*% @$@*& ",
|
||||
" #$@*% @$@*& ",
|
||||
" #$@*% @$@*& ",
|
||||
" #$@*% @$@*& ",
|
||||
" #$@*% .@#%+ ",
|
||||
" #$@*% . ",
|
||||
" +#@*@ ",
|
||||
" .++ "};
|
||||
"""
|
||||
|
||||
FreeCADGui.addCommand('Arch_Structure',CommandStructure())
|
||||
221
src/Mod/Arch/Wall.py
Executable file
@@ -0,0 +1,221 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* 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,Part,Draft,Component
|
||||
from draftlibs import fcgeo,fcvec
|
||||
from FreeCAD import Vector
|
||||
from PyQt4 import QtCore
|
||||
|
||||
__title__="FreeCAD Wall"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
def makeWall(baseobj=None,width=None,height=None,align="Center",name="Wall"):
|
||||
'''makeWall(obj,[width],[height],[align],[name]): creates a wall based on the
|
||||
given object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
|
||||
Wall(obj)
|
||||
ViewProviderWall(obj.ViewObject)
|
||||
if baseobj: obj.Base = baseobj
|
||||
if width: obj.Width = width
|
||||
if height: obj.Height = height
|
||||
obj.Align = align
|
||||
if obj.Base: obj.Base.ViewObject.hide()
|
||||
p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch")
|
||||
c = p.GetUnsigned("WallColor")
|
||||
r = float((c>>24)&0xFF)/255.0
|
||||
g = float((c>>16)&0xFF)/255.0
|
||||
b = float((c>>8)&0xFF)/255.0
|
||||
obj.ViewObject.ShapeColor = (r,g,b,1.0)
|
||||
return obj
|
||||
|
||||
class CommandWall:
|
||||
"the Arch Wall command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_Wall',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_Wall","Wall"),
|
||||
'Accel': "W, A",
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Wall","Creates a wall object from scratch or from a selected object (wire, face or solid)")}
|
||||
|
||||
def Activated(self):
|
||||
sel = FreeCADGui.Selection.getSelection()
|
||||
if sel:
|
||||
FreeCAD.ActiveDocument.openTransaction("Wall")
|
||||
for obj in sel:
|
||||
makeWall(obj)
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
else:
|
||||
wall = makeWall()
|
||||
|
||||
class Wall(Component.Component):
|
||||
"The Wall object"
|
||||
def __init__(self,obj):
|
||||
Component.Component.__init__(self,obj)
|
||||
obj.addProperty("App::PropertyLength","Width","Base",
|
||||
"The width of this wall. Not used if this wall is based on a face")
|
||||
obj.addProperty("App::PropertyLength","Height","Base",
|
||||
"The height of this wall. Keep 0 for automatic. Not used if this wall is based on a solid")
|
||||
obj.addProperty("App::PropertyLength","Length","Base",
|
||||
"The length of this wall. Not used if this wall is based on a shape")
|
||||
obj.addProperty("App::PropertyEnumeration","Align","Base",
|
||||
"The alignment of this wall on its base object, if applicable")
|
||||
obj.Align = ['Left','Right','Center']
|
||||
self.Type = "Wall"
|
||||
obj.Width = 0.1
|
||||
obj.Length = 1
|
||||
obj.Height = 0
|
||||
|
||||
def execute(self,obj):
|
||||
self.createGeometry(obj)
|
||||
|
||||
def onChanged(self,obj,prop):
|
||||
if prop in ["Base","Height","Width","Align","Additions","Subtractions"]:
|
||||
self.createGeometry(obj)
|
||||
|
||||
def createGeometry(self,obj):
|
||||
|
||||
def getbase(wire):
|
||||
"returns a full shape from a base wire"
|
||||
dvec = fcgeo.vec(wire.Edges[0]).cross(normal)
|
||||
dvec.normalize()
|
||||
if obj.Align == "Left":
|
||||
dvec = dvec.multiply(obj.Width)
|
||||
w2 = fcgeo.offsetWire(wire,dvec)
|
||||
sh = fcgeo.bind(wire,w2)
|
||||
elif obj.Align == "Right":
|
||||
dvec = dvec.multiply(obj.Width)
|
||||
dvec = fcvec.neg(dvec)
|
||||
w2 = fcgeo.offsetWire(wire,dvec)
|
||||
sh = fcgeo.bind(wire,w2)
|
||||
elif obj.Align == "Center":
|
||||
dvec = dvec.multiply(obj.Width/2)
|
||||
w1 = fcgeo.offsetWire(wire,dvec)
|
||||
dvec = fcvec.neg(dvec)
|
||||
w2 = fcgeo.offsetWire(wire,dvec)
|
||||
sh = fcgeo.bind(w1,w2)
|
||||
if height:
|
||||
norm = Vector(normal).multiply(height)
|
||||
sh = sh.extrude(norm)
|
||||
return sh
|
||||
|
||||
pl = obj.Placement
|
||||
|
||||
# getting default values
|
||||
height = normal = None
|
||||
if obj.Height:
|
||||
height = obj.Height
|
||||
else:
|
||||
for p in obj.InList:
|
||||
if Draft.getType(p) == "Floor":
|
||||
height = p.Height
|
||||
if not height: height = 1
|
||||
if obj.Normal == Vector(0,0,0):
|
||||
normal = Vector(0,0,1)
|
||||
else:
|
||||
normal = Vector(obj.Normal)
|
||||
|
||||
# computing shape
|
||||
if obj.Base:
|
||||
if obj.Base.isDerivedFrom("Part::Feature"):
|
||||
base = obj.Base.Shape.copy()
|
||||
if base.Solids:
|
||||
pass
|
||||
elif base.Faces:
|
||||
if height:
|
||||
norm = normal.multiply(height)
|
||||
base = base.extrude(norm)
|
||||
elif base.Wires:
|
||||
temp = None
|
||||
for wire in obj.Base.Shape.Wires:
|
||||
sh = getbase(wire)
|
||||
if temp:
|
||||
temp = temp.oldFuse(sh)
|
||||
else:
|
||||
temp = sh
|
||||
base = temp
|
||||
else:
|
||||
if obj.Length == 0:
|
||||
return
|
||||
v1 = Vector(0,0,0)
|
||||
v2 = Vector(obj.Length,0,0)
|
||||
w = Part.Wire(Part.Line(v1,v2).toShape())
|
||||
base = getbase(w)
|
||||
|
||||
for app in obj.Additions:
|
||||
base = base.oldFuse(app.Shape)
|
||||
app.ViewObject.hide() #to be removed
|
||||
for hole in obj.Subtractions:
|
||||
cut = False
|
||||
if hasattr(hole,"Proxy"):
|
||||
if hasattr(hole.Proxy,"Subvolume"):
|
||||
if hole.Proxy.Subvolume:
|
||||
print "cutting subvolume",hole.Proxy.Subvolume
|
||||
base = base.cut(hole.Proxy.Subvolume)
|
||||
cut = True
|
||||
if not cut:
|
||||
if hasattr(obj,"Shape"):
|
||||
base = base.cut(hole.Shape)
|
||||
hole.ViewObject.hide() # to be removed
|
||||
obj.Shape = base
|
||||
if not fcgeo.isNull(pl):
|
||||
obj.Placement = pl
|
||||
|
||||
class ViewProviderWall(Component.ViewProviderComponent):
|
||||
"A View Provider for the Wall object"
|
||||
|
||||
def __init__(self,vobj):
|
||||
Component.ViewProviderComponent.__init__(self,vobj)
|
||||
|
||||
def getIcon(self):
|
||||
return """
|
||||
/* XPM */
|
||||
static char * Arch_Wall_xpm[] = {
|
||||
"16 16 9 1",
|
||||
" c None",
|
||||
". c #543016",
|
||||
"+ c #6D2F08",
|
||||
"@ c #954109",
|
||||
"# c #874C24",
|
||||
"$ c #AE6331",
|
||||
"% c #C86423",
|
||||
"& c #FD7C26",
|
||||
"* c #F5924F",
|
||||
" ",
|
||||
" ",
|
||||
" # ",
|
||||
" ***$# ",
|
||||
" .*******. ",
|
||||
" *##$****#+ ",
|
||||
" #**%&&##$#@@ ",
|
||||
".$**%&&&&+@@+ ",
|
||||
"@&@#$$%&&@@+.. ",
|
||||
"@&&&%#.#$#+..#$.",
|
||||
" %&&&&+%#.$**$@+",
|
||||
" @%&+&&&$##@@+",
|
||||
" @.&&&&&@@@ ",
|
||||
" @%&&@@ ",
|
||||
" @+ ",
|
||||
" "};
|
||||
"""
|
||||
|
||||
FreeCADGui.addCommand('Arch_Wall',CommandWall())
|
||||
144
src/Mod/Arch/Window.py
Normal file
@@ -0,0 +1,144 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* 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,Part,Draft,Component
|
||||
from draftlibs import fcgeo,fcvec
|
||||
from FreeCAD import Vector
|
||||
from PyQt4 import QtCore
|
||||
|
||||
__title__="FreeCAD Wall"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
def makeWindow(baseobj=None,name="Window"):
|
||||
'''makeWindow(obj,[name]): creates a window based on the
|
||||
given object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
|
||||
Window(obj)
|
||||
ViewProviderWindow(obj.ViewObject)
|
||||
if baseobj: obj.Base = baseobj
|
||||
if obj.Base: obj.Base.ViewObject.hide()
|
||||
#p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch")
|
||||
#c = p.GetUnsigned("WindowColor")
|
||||
#r = float((c>>24)&0xFF)/255.0
|
||||
#g = float((c>>16)&0xFF)/255.0
|
||||
#b = float((c>>8)&0xFF)/255.0
|
||||
#obj.ViewObject.ShapeColor = (r,g,b,1.0)
|
||||
return obj
|
||||
|
||||
class CommandWindow:
|
||||
"the Arch Window command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_Window',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_Window","Window"),
|
||||
'Accel': "W, A",
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Window","Creates a window object from scratch or from a selected object (wire, rectangle or sketch)")}
|
||||
|
||||
def Activated(self):
|
||||
sel = FreeCADGui.Selection.getSelection()
|
||||
FreeCAD.ActiveDocument.openTransaction("Window")
|
||||
if sel:
|
||||
for obj in sel:
|
||||
makeWindow(obj)
|
||||
else:
|
||||
rect = Draft.makeRectangle(1,1)
|
||||
makeWindow(rect)
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
|
||||
class Window(Component.Component):
|
||||
"The Window object"
|
||||
def __init__(self,obj):
|
||||
Component.Component.__init__(self,obj)
|
||||
obj.addProperty("App::PropertyFloat","Thickness","Base",
|
||||
"the thickness to be associated with the wire of the Base object")
|
||||
#obj.addProperty("App::PropertyLink","Support","Base",
|
||||
# "The support object (wall usually) of this window")
|
||||
#obj.addProperty("App::PropertyLength","Jamb","Base",
|
||||
# "The distance between the window and the exterior face of its supporting object")
|
||||
#obj.addProperty("Part::PropertyPartShape","Subvolume","Base",
|
||||
# "the volume to be subtracted when inserting this window into its support")
|
||||
self.Type = "Window"
|
||||
obj.Thickness = .1
|
||||
|
||||
def execute(self,obj):
|
||||
self.createGeometry(obj)
|
||||
|
||||
def onChanged(self,obj,prop):
|
||||
if prop in ["Base","Thickness"]:
|
||||
self.createGeometry(obj)
|
||||
|
||||
def createGeometry(self,obj):
|
||||
pl = obj.Placement
|
||||
if obj.Base:
|
||||
if obj.Base.isDerivedFrom("Part::Feature"):
|
||||
if obj.Base.Shape.Wires:
|
||||
basewire = obj.Base.Shape.Wires[0]
|
||||
if obj.Thickness:
|
||||
offwire = basewire.makeOffset(-obj.Thickness)
|
||||
f1 = Part.Face(basewire)
|
||||
f2 = Part.Face(offwire)
|
||||
bf = f1.cut(f2)
|
||||
sh = bf.extrude(Vector(0,0,obj.Thickness))
|
||||
obj.Shape = sh
|
||||
f1.translate(Vector(0,0,-.5))
|
||||
svol = f1.extrude(Vector(0,0,1))
|
||||
self.Subvolume = svol
|
||||
if not fcgeo.isNull(pl):
|
||||
obj.Placement = pl
|
||||
self.Subvolume.Placement = pl
|
||||
|
||||
class ViewProviderWindow(Component.ViewProviderComponent):
|
||||
"A View Provider for the Window object"
|
||||
|
||||
def __init__(self,vobj):
|
||||
Component.ViewProviderComponent.__init__(self,vobj)
|
||||
|
||||
def getIcon(self):
|
||||
return """
|
||||
/* XPM */
|
||||
static char * Arch_Window_xpm[] = {
|
||||
"16 16 5 1",
|
||||
" c None",
|
||||
". c #0E0A00",
|
||||
"+ c #9B8A61",
|
||||
"@ c #C6B287",
|
||||
"# c #FEFFF8",
|
||||
" ",
|
||||
" ...... ",
|
||||
" ####+...... ",
|
||||
" #+. #####..... ",
|
||||
" #+. @#@####++ ",
|
||||
" #+. ## #++ ",
|
||||
" #.....## #++ ",
|
||||
" ####+.#....#+@ ",
|
||||
" #+. +###+..++@ ",
|
||||
" #+. @#+@###+@ ",
|
||||
" #... ## #+@ ",
|
||||
" #+....#+ #+@ ",
|
||||
" ####+#....#+@ ",
|
||||
" @####..@+@ ",
|
||||
" @###++ ",
|
||||
" . "};
|
||||
"""
|
||||
|
||||
FreeCADGui.addCommand('Arch_Window',CommandWindow())
|
||||
3
src/Mod/Arch/arch.dox
Normal file
@@ -0,0 +1,3 @@
|
||||
/** \defgroup ARCH Arch
|
||||
* \ingroup WORKBENCHES */
|
||||
|
||||
447
src/Mod/Arch/ifcReader.py
Executable file
@@ -0,0 +1,447 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre, Marijn van Aerle *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* 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 os, re, copy
|
||||
|
||||
__title__="FreeCAD IFC parser"
|
||||
__author__ = "Yorik van Havre, Marijn van Aerle"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
'''
|
||||
FreeCAD IFC parser, by Yorik van Havre, based on work by Marijn van Aerle
|
||||
|
||||
Usage:
|
||||
import ifcReader
|
||||
ifcdoc = ifcReader.IfcDocument("path/to/file.ifc")
|
||||
print ifcdoc.Entities
|
||||
myent = ifcdoc.Entities[20] # returns one entity
|
||||
myent = ifcdoc.getEnt(20) # alternative way
|
||||
polylines = ifcdoc.getEnt("IFCPOLYLINE") # returns a list
|
||||
print myent.attributes
|
||||
|
||||
The ifc document contains a list of entities, that can be retrieved
|
||||
by iterating the list (indices corresponds to the entities ids)
|
||||
or by using the getEnt() method. All entities have id, type
|
||||
and attributes. Attributes can have values such as text or number,
|
||||
or a link to another entity.
|
||||
|
||||
Important note:
|
||||
|
||||
1) For this reader to function, you need an IFC Schema Express file (.exp)
|
||||
available here:
|
||||
http://www.steptools.com/support/stdev_docs/express/ifc2x3/ifc2x3_tc1.exp
|
||||
For licensing reasons we are not allowed to ship that file with FreeCAD.
|
||||
Just place the .exp file together with this script.
|
||||
|
||||
2) IFC files can have ordered content (ordered list, no entity number missing)
|
||||
or be much messier (entity numbers missing, etc). The performance of the reader
|
||||
will be drastically different.
|
||||
'''
|
||||
|
||||
IFCLINE_RE = re.compile("#(\d+)[ ]?=[ ]?(.*?)\((.*)\);[\\r]?$")
|
||||
DEBUG = False
|
||||
|
||||
class IfcSchema:
|
||||
SIMPLETYPES = ["INTEGER", "REAL", "STRING", "NUMBER", "LOGICAL", "BOOLEAN"]
|
||||
NO_ATTR = ["WHERE", "INVERSE","WR2","WR3", "WR4", "WR5", "UNIQUE", "DERIVE"]
|
||||
|
||||
def __init__(self, filename):
|
||||
self.filename = filename
|
||||
if not os.path.exists(filename):
|
||||
raise ImportError("no IFCSchema file found!")
|
||||
else:
|
||||
self.file = open(self.filename)
|
||||
self.data = self.file.read()
|
||||
self.types = self.readTypes()
|
||||
self.entities = self.readEntities()
|
||||
if DEBUG: print "Parsed from schema %s: %s entities and %s types" % (self.filename, len(self.entities), len(self.types))
|
||||
|
||||
def readTypes(self):
|
||||
"""
|
||||
Parse all the possible types from the schema,
|
||||
returns a dictionary Name -> Type
|
||||
"""
|
||||
types = {}
|
||||
for m in re.finditer("TYPE (.*) = (.*);", self.data):
|
||||
typename, typetype = m.groups()
|
||||
if typetype in self.SIMPLETYPES:
|
||||
types[typename] = typetype
|
||||
else:
|
||||
types[typename] = "#" + typetype
|
||||
|
||||
return types
|
||||
|
||||
def readEntities(self):
|
||||
"""
|
||||
Parse all the possible entities from the schema,
|
||||
returns a dictionary of the form:
|
||||
{ name: {
|
||||
"supertype": supertype,
|
||||
"attributes": [{ key: value }, ..]
|
||||
}}
|
||||
"""
|
||||
entities = {}
|
||||
|
||||
# Regexes must be greedy to prevent matching outer entity and end_entity strings
|
||||
# Regexes have re.DOTALL to match newlines
|
||||
for m in re.finditer("ENTITY (.*?)END_ENTITY;", self.data, re.DOTALL):
|
||||
entity = {}
|
||||
raw_entity_str = m.groups()[0]
|
||||
|
||||
entity["name"] = re.search("(.*?)[;|\s]", raw_entity_str).groups()[0].upper()
|
||||
|
||||
subtypeofmatch = re.search(".*SUBTYPE OF \((.*?)\);", raw_entity_str)
|
||||
entity["supertype"] = subtypeofmatch.groups()[0].upper() if subtypeofmatch else None
|
||||
|
||||
# find the shortest string matched from the end of the entity type header to the
|
||||
# first occurence of a NO_ATTR string (when it occurs on a new line)
|
||||
inner_str = re.search(";(.*?)$", raw_entity_str, re.DOTALL).groups()[0]
|
||||
|
||||
attrs_str = min([inner_str.partition("\r\n "+a)[0] for a in self.NO_ATTR])
|
||||
attrs = []
|
||||
for am in re.finditer("(.*?) : (.*?);", attrs_str, re.DOTALL):
|
||||
name, attr_type = [s.replace("\r\n\t","") for s in am.groups()]
|
||||
attrs.append((name, attr_type))
|
||||
|
||||
entity["attributes"] = attrs
|
||||
entities[entity["name"]] = entity
|
||||
|
||||
|
||||
return entities
|
||||
|
||||
def getAttributes(self, name):
|
||||
"""
|
||||
Get all attributes af an entity, including supertypes
|
||||
"""
|
||||
ent = self.entities[name]
|
||||
|
||||
attrs = []
|
||||
while ent != None:
|
||||
this_ent_attrs = copy.copy(ent["attributes"])
|
||||
this_ent_attrs.reverse()
|
||||
attrs.extend(this_ent_attrs)
|
||||
ent = self.entities.get(ent["supertype"], None)
|
||||
|
||||
attrs.reverse()
|
||||
return attrs
|
||||
|
||||
class IfcFile:
|
||||
"""
|
||||
Parses an ifc file given by filename, entities can be retrieved by name and id
|
||||
The whole file is stored in a dictionary (in memory)
|
||||
"""
|
||||
|
||||
entsById = {}
|
||||
entsByName = {}
|
||||
|
||||
def __init__(self, filename,schema):
|
||||
self.filename = filename
|
||||
self.schema = IfcSchema(schema)
|
||||
self.file = open(self.filename)
|
||||
self.entById, self.entsByName, self.header = self.read()
|
||||
self.file.close()
|
||||
if DEBUG: print "Parsed from file %s: %s entities" % (self.filename, len(self.entById))
|
||||
|
||||
def getEntityById(self, id):
|
||||
return self.entById.get(id, None)
|
||||
|
||||
def getEntitiesByName(self, name):
|
||||
return self.entsByName.get(name, None)
|
||||
|
||||
def read(self):
|
||||
"""
|
||||
Returns 2 dictionaries, entById and entsByName
|
||||
"""
|
||||
entById = {}
|
||||
entsByName = {}
|
||||
header = 'HEADER '
|
||||
readheader = False
|
||||
for line in self.file:
|
||||
e = self.parseLine(line)
|
||||
if e:
|
||||
entById[int(e["id"])] = e
|
||||
ids = e.get(e["name"],[])
|
||||
ids.append(e["id"])
|
||||
entsByName[e["name"]] = list(set(ids))
|
||||
elif 'HEADER' in line:
|
||||
readheader = True
|
||||
elif readheader:
|
||||
if 'ENDSEC' in line:
|
||||
readheader = False
|
||||
else:
|
||||
header += line
|
||||
|
||||
return [entById, entsByName, header]
|
||||
|
||||
def parseLine(self, line):
|
||||
"""
|
||||
Parse a line
|
||||
"""
|
||||
m = IFCLINE_RE.search(line) # id,name,attrs
|
||||
if m:
|
||||
id, name, attrs = m.groups()
|
||||
id = id.strip()
|
||||
name = name.strip()
|
||||
attrs = attrs.strip()
|
||||
else:
|
||||
return False
|
||||
|
||||
return {"id": id, "name": name, "attributes": self.parseAttributes(name, attrs)}
|
||||
|
||||
def parseAttributes(self, ent_name, attrs_str):
|
||||
"""
|
||||
Parse the attributes of a line
|
||||
"""
|
||||
parts = []
|
||||
lastpos = 0
|
||||
|
||||
while lastpos < len(attrs_str):
|
||||
newpos = self.nextString(attrs_str, lastpos)
|
||||
parts.extend(self.parseAttribute(attrs_str[lastpos:newpos-1]))
|
||||
lastpos = newpos
|
||||
|
||||
schema_attributes = self.schema.getAttributes(ent_name)
|
||||
|
||||
assert len(schema_attributes) == len(parts), \
|
||||
"Expected %s attributes, got %s (entity: %s" % \
|
||||
(len(schema_attributes), len(parts), ent_name)
|
||||
|
||||
attribute_names = [a[0] for a in schema_attributes]
|
||||
|
||||
return dict(zip(attribute_names, parts))
|
||||
|
||||
def parseAttribute(self, attr_str):
|
||||
"""
|
||||
Map a single attribute to a python type (recursively)
|
||||
"""
|
||||
parts = []
|
||||
lastpos = 0
|
||||
while lastpos < len(attr_str):
|
||||
newpos = self.nextString(attr_str, lastpos)
|
||||
s = attr_str[lastpos:newpos-1]
|
||||
if (s[0] == "(" and s[-1] == ")"): # list, recurse
|
||||
parts.append(self.parseAttribute(s[1:-1]))
|
||||
else:
|
||||
try:
|
||||
parts.append(float(s)) # number, any kind
|
||||
except ValueError:
|
||||
if s[0] == "'" and s[-1] == "'": # string
|
||||
parts.append(s[1:-1])
|
||||
elif s == "$":
|
||||
parts.append(None)
|
||||
else:
|
||||
parts.append(s) # ref, enum or other
|
||||
|
||||
lastpos = newpos
|
||||
|
||||
return parts
|
||||
|
||||
|
||||
def nextString(self, s, start):
|
||||
"""
|
||||
Parse the data part of a line
|
||||
"""
|
||||
parens = 0
|
||||
quotes = 0
|
||||
|
||||
for pos in range(start,len(s)):
|
||||
c = s[pos]
|
||||
if c == "," and parens == 0 and quotes == 0:
|
||||
return pos+1
|
||||
elif c == "(" and quotes == 0:
|
||||
parens += 1
|
||||
elif c == ")" and quotes == 0:
|
||||
parens -= 1
|
||||
elif c == "\'" and quotes == 0:
|
||||
quotes = 1
|
||||
elif c =="\'" and quotes == 1:
|
||||
quotes = 0
|
||||
|
||||
return len(s)+1
|
||||
|
||||
class IfcEntity:
|
||||
"a container for an IFC entity"
|
||||
def __init__(self,ent,doc=None):
|
||||
self.data = ent
|
||||
self.id = int(ent['id'])
|
||||
self.type = ent['name'].upper().strip(",[]()")
|
||||
self.attributes = ent['attributes']
|
||||
self.doc = doc
|
||||
|
||||
def __repr__(self):
|
||||
return str(self.id) + ' : ' + self.type + ' ' + str(self.attributes)
|
||||
|
||||
def getProperty(self,propName):
|
||||
"finds the value of the given property or quantity in this object, if exists"
|
||||
propsets = self.doc.find('IFCRELDEFINESBYPROPERTIES','RelatedObjects',self)
|
||||
if not propsets: return None
|
||||
propset = []
|
||||
for p in propsets:
|
||||
if hasattr(p.RelatingPropertyDefinition,"HasProperties"):
|
||||
propset.extend(p.RelatingPropertyDefinition.HasProperties)
|
||||
elif hasattr(p.RelatingPropertyDefinition,"Quantities"):
|
||||
propset.extend(p.RelatingPropertyDefinition.Quantities)
|
||||
for prop in propset:
|
||||
if prop.Name == propName:
|
||||
print "found valid",prop
|
||||
if hasattr(prop,"LengthValue"):
|
||||
return prop.LengthValue
|
||||
elif hasattr(prop,"AreaValue"):
|
||||
return prop.AreaValue
|
||||
elif hasattr(prop,"VolumeValue"):
|
||||
return prop.VolumeValue
|
||||
elif hasattr(prop,"NominalValue"):
|
||||
return prop.NominalValue
|
||||
return None
|
||||
|
||||
def getAttribute(self,attr):
|
||||
"returns the value of the given attribute, if exists"
|
||||
if hasattr(self,attr):
|
||||
return self.__dict__[attr]
|
||||
return None
|
||||
|
||||
class IfcDocument:
|
||||
"an object representing an IFC document"
|
||||
def __init__(self,filename,schema="IFC2X3_TC1.exp",debug=False):
|
||||
DEBUG = debug
|
||||
f = IfcFile(filename,schema)
|
||||
self.filename = filename
|
||||
self.data = f.entById
|
||||
self.Entities = {0:f.header}
|
||||
for k,e in self.data.iteritems():
|
||||
eid = int(e['id'])
|
||||
self.Entities[eid] = IfcEntity(e,self)
|
||||
if DEBUG: print len(self.Entities),"entities created. Creating attributes..."
|
||||
for k,ent in self.Entities.iteritems():
|
||||
if DEBUG: print "attributing entity ",ent
|
||||
if hasattr(ent,"attributes"):
|
||||
for k,v in ent.attributes.iteritems():
|
||||
if DEBUG: print "parsing attribute: ",k," value ",v
|
||||
if isinstance(v,str):
|
||||
val = self.__clean__(v)
|
||||
elif isinstance(v,list):
|
||||
val = []
|
||||
for item in v:
|
||||
if isinstance(item,str):
|
||||
val.append(self.__clean__(item))
|
||||
else:
|
||||
val.append(item)
|
||||
else:
|
||||
val = v
|
||||
setattr(ent,k.strip(),val)
|
||||
if DEBUG: print "Document successfully created"
|
||||
|
||||
def __clean__(self,value):
|
||||
"turns an attribute value into something usable"
|
||||
try:
|
||||
val = value.strip(" ()'")
|
||||
if val[:3].upper() == "IFC":
|
||||
if "IFCTEXT" in val.upper():
|
||||
l = val.split("'")
|
||||
if len(l) == 3: val = l[1]
|
||||
elif "IFCBOOLEAN" in value.upper():
|
||||
l = val.split(".")
|
||||
if len(l) == 3: val = l[1]
|
||||
if val.upper() == "F": val = False
|
||||
elif val.upper() == "T": val = True
|
||||
elif "IFCREAL" in val.upper():
|
||||
l = val.split("(")
|
||||
if len(l) == 2: val = float(l[1].strip(")"))
|
||||
else:
|
||||
if '#' in val:
|
||||
if "," in val:
|
||||
val = val.split(",")
|
||||
l = []
|
||||
for subval in val:
|
||||
if '#' in subval:
|
||||
s = subval.strip(" #")
|
||||
if DEBUG: print "referencing ",s," : ",self.getEnt(int(s))
|
||||
l.append(self.getEnt(int(s)))
|
||||
val = l
|
||||
else:
|
||||
val = val.strip()
|
||||
val = val.replace("#","")
|
||||
if DEBUG: print "referencing ",val," : ",self.getEnt(int(val))
|
||||
val = self.getEnt(int(val))
|
||||
if not val:
|
||||
val = value
|
||||
except:
|
||||
if DEBUG: print "error parsing attribute",value
|
||||
val = value
|
||||
return val
|
||||
|
||||
def __repr__(self):
|
||||
return "IFC Document: " + self.filename + ', ' + str(len(self.Entities)) + " entities "
|
||||
|
||||
def getEnt(self,ref):
|
||||
"gets an entity by id number, or a list of entities by type"
|
||||
if isinstance(ref,int):
|
||||
if ref in self.Entities:
|
||||
return self.Entities[ref]
|
||||
elif isinstance(ref,str):
|
||||
l = []
|
||||
ref = ref.upper()
|
||||
for k,ob in self.Entities.iteritems():
|
||||
if hasattr(ob,"type"):
|
||||
if ob.type == ref:
|
||||
l.append(ob)
|
||||
return l
|
||||
return None
|
||||
|
||||
def search(self,pat):
|
||||
"searches entities types for partial match"
|
||||
l = []
|
||||
pat = pat.upper()
|
||||
for k,ob in self.Entities.iteritems():
|
||||
if hasattr(ob,"type"):
|
||||
if pat in ob.type:
|
||||
if not ob.type in l:
|
||||
l.append(ob.type)
|
||||
return l
|
||||
|
||||
def find(self,pat1,pat2=None,pat3=None):
|
||||
'''finds objects in the current IFC document.
|
||||
arguments can be of the following form:
|
||||
- (pattern): returns object types matching the given pattern (same as search)
|
||||
- (type,property,value): finds, in all objects of type "type", those whose
|
||||
property "property" has the given value
|
||||
'''
|
||||
if pat3:
|
||||
bobs = self.getEnt(pat1)
|
||||
obs = []
|
||||
for bob in bobs:
|
||||
if hasattr(bob,pat2):
|
||||
if bob.getAttribute(pat2) == pat3:
|
||||
obs.append(bob)
|
||||
return obs
|
||||
elif pat1:
|
||||
ll = self.search(pat1)
|
||||
obs = []
|
||||
for l in ll:
|
||||
obs.extend(self.getEnt(l))
|
||||
return obs
|
||||
return None
|
||||
|
||||
if __name__ == "__main__":
|
||||
print __doc__
|
||||
|
||||
126
src/Mod/Arch/importDAE.py
Normal file
@@ -0,0 +1,126 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* 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, collada, Mesh, os, numpy
|
||||
|
||||
__title__="FreeCAD Collada importer"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
DEBUG = True
|
||||
|
||||
def open(filename):
|
||||
"called when freecad wants to open a file"
|
||||
docname = os.path.splitext(os.path.basename(filename))[0]
|
||||
doc = FreeCAD.newDocument(docname)
|
||||
doc.Label = decode(docname)
|
||||
FreeCAD.ActiveDocument = doc
|
||||
read(filename)
|
||||
return doc
|
||||
|
||||
def decode(name):
|
||||
"decodes encoded strings"
|
||||
try:
|
||||
decodedName = (name.decode("utf8"))
|
||||
except UnicodeDecodeError:
|
||||
try:
|
||||
decodedName = (name.decode("latin1"))
|
||||
except UnicodeDecodeError:
|
||||
print "ifc: error: couldn't determine character encoding"
|
||||
decodedName = name
|
||||
return decodedName
|
||||
|
||||
def read(filename):
|
||||
global col
|
||||
col = collada.Collada(filename, ignore=[collada.DaeUnsupportedError])
|
||||
for geom in col.scene.objects('geometry'):
|
||||
#for geom in col.geometries:
|
||||
for prim in geom.primitives():
|
||||
#for prim in geom.primitives:
|
||||
print prim, dir(prim)
|
||||
meshdata = []
|
||||
if hasattr(prim,"triangles"):
|
||||
tset = prim.triangles()
|
||||
elif hasattr(prim,"triangleset"):
|
||||
tset = prim.triangleset()
|
||||
for tri in tset:
|
||||
face = []
|
||||
for v in tri.vertices:
|
||||
face.append([v[0],v[1],v[2]])
|
||||
meshdata.append(face)
|
||||
print meshdata
|
||||
newmesh = Mesh.Mesh(meshdata)
|
||||
print newmesh
|
||||
obj = FreeCAD.ActiveDocument.addObject("Mesh::Feature","Mesh")
|
||||
obj.Mesh = newmesh
|
||||
|
||||
def export(exportList,filename):
|
||||
"called when freecad exports a file"
|
||||
colmesh = collada.Collada()
|
||||
effect = collada.material.Effect("effect0", [], "phong", diffuse=(.7,.7,.7), specular=(1,1,1))
|
||||
mat = collada.material.Material("material0", "mymaterial", effect)
|
||||
colmesh.effects.append(effect)
|
||||
colmesh.materials.append(mat)
|
||||
objind = 0
|
||||
scenenodes = []
|
||||
for obj in exportList:
|
||||
if obj.isDerivedFrom("Mesh::Feature"):
|
||||
print "exporting object ",obj.Name, obj.Mesh
|
||||
m = obj.Mesh
|
||||
vindex = []
|
||||
nindex = []
|
||||
findex = []
|
||||
# vertex indices
|
||||
for v in m.Topology[0]:
|
||||
vindex.extend([v.x,v.y,v.z])
|
||||
# normals
|
||||
for f in m.Facets:
|
||||
n = f.Normal
|
||||
nindex.extend([n.x,n.y,n.z])
|
||||
# face indices
|
||||
for i in range(len(m.Topology[1])):
|
||||
f = m.Topology[1][i]
|
||||
findex.extend([f[0],i,f[1],i,f[2],i])
|
||||
print len(vindex), " vert indices, ", len(nindex), " norm indices, ", len(findex), " face indices."
|
||||
vert_src = collada.source.FloatSource("cubeverts-array"+str(objind), numpy.array(vindex), ('X', 'Y', 'Z'))
|
||||
normal_src = collada.source.FloatSource("cubenormals-array"+str(objind), numpy.array(nindex), ('X', 'Y', 'Z'))
|
||||
geom = collada.geometry.Geometry(colmesh, "geometry"+str(objind), obj.Name, [vert_src, normal_src])
|
||||
input_list = collada.source.InputList()
|
||||
input_list.addInput(0, 'VERTEX', "#cubeverts-array"+str(objind))
|
||||
input_list.addInput(1, 'NORMAL', "#cubenormals-array"+str(objind))
|
||||
triset = geom.createTriangleSet(numpy.array(findex), input_list, "materialref")
|
||||
geom.primitives.append(triset)
|
||||
colmesh.geometries.append(geom)
|
||||
matnode = collada.scene.MaterialNode("materialref", mat, inputs=[])
|
||||
geomnode = collada.scene.GeometryNode(geom, [matnode])
|
||||
node = collada.scene.Node("node"+str(objind), children=[geomnode])
|
||||
scenenodes.append(node)
|
||||
objind += 1
|
||||
myscene = collada.scene.Scene("myscene", scenenodes)
|
||||
colmesh.scenes.append(myscene)
|
||||
colmesh.scene = myscene
|
||||
myscene = collada.scene.Scene("myscene", [node])
|
||||
colmesh.scenes.append(myscene)
|
||||
colmesh.scene = myscene
|
||||
colmesh.write(filename)
|
||||
print "file ",filename," successfully created."
|
||||
201
src/Mod/Arch/importIFC.py
Normal file
@@ -0,0 +1,201 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* 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 ifcReader, FreeCAD, Wall, Draft, os, time, Cell, Floor, Building, Site
|
||||
from draftlibs import fcvec
|
||||
|
||||
__title__="FreeCAD IFC importer"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
DEBUG = True
|
||||
|
||||
def open(filename):
|
||||
"called when freecad opens a file"
|
||||
docname = os.path.splitext(os.path.basename(filename))[0]
|
||||
doc = FreeCAD.newDocument(docname)
|
||||
doc.Label = decode(docname)
|
||||
FreeCAD.ActiveDocument = doc
|
||||
read(filename)
|
||||
return doc
|
||||
|
||||
def decode(name):
|
||||
"decodes encoded strings"
|
||||
try:
|
||||
decodedName = (name.decode("utf8"))
|
||||
except UnicodeDecodeError:
|
||||
try:
|
||||
decodedName = (name.decode("latin1"))
|
||||
except UnicodeDecodeError:
|
||||
print "ifc: error: couldn't determine character encoding"
|
||||
decodedName = name
|
||||
return decodedName
|
||||
|
||||
def getSchema(schema):
|
||||
return os.path.join(FreeCAD.ConfigGet("AppHomePath"),"Mod","Arch",schema+".exp")
|
||||
|
||||
def read(filename):
|
||||
"processes an ifc file and add its objects to the given document"
|
||||
t1 = time.time()
|
||||
if DEBUG: global ifc
|
||||
if DEBUG: print "opening",filename,"..."
|
||||
ifc = ifcReader.IfcDocument(filename,schema=getSchema("IFC2X3_TC1"),debug=DEBUG)
|
||||
t2 = time.time()
|
||||
if DEBUG: print "Successfully loaded",ifc,"in %s s" % ((t2-t1))
|
||||
# getting walls
|
||||
for w in ifc.getEnt("IFCWALLSTANDARDCASE"):
|
||||
makeWall(w)
|
||||
# getting floors
|
||||
for f in ifc.getEnt("IFCBUILDINGSTOREY"):
|
||||
makeCell(f,"Floor")
|
||||
# getting buildings
|
||||
for b in ifc.getEnt("IFCBUILDING"):
|
||||
makeCell(b,"Building")
|
||||
FreeCAD.ActiveDocument.recompute()
|
||||
t3 = time.time()
|
||||
if DEBUG: print "done processing",ifc,"in %s s" % ((t3-t1))
|
||||
|
||||
def makeCell(entity,mode="Cell"):
|
||||
"makes a cell in the freecad document"
|
||||
try:
|
||||
if DEBUG: print "=====> making cell",entity.id
|
||||
placement = None
|
||||
placement = getPlacement(entity.ObjectPlacement)
|
||||
if DEBUG: print "got cell placement",entity.id,":",placement
|
||||
subelements = ifc.find("IFCRELCONTAINEDINSPATIALSTRUCTURE","RelatingStructure",entity)
|
||||
subelements.extend(ifc.find("IFCRELAGGREGATES","RelatingObject",entity))
|
||||
fcelts = []
|
||||
for s in subelements:
|
||||
if hasattr(s,"RelatedElements"):
|
||||
s = s.RelatedElements
|
||||
if not isinstance(s,list): s = [s]
|
||||
for r in s:
|
||||
if r.type == "IFCWALLSTANDARDCASE":
|
||||
o = FreeCAD.ActiveDocument.getObject("Wall"+str(r.id))
|
||||
if o: fcelts.append(o)
|
||||
elif hasattr(s,"RelatedObjects"):
|
||||
s = s.RelatedObjects
|
||||
if not isinstance(s,list): s = [s]
|
||||
for r in s:
|
||||
if r.type == "IFCBUILDINGSTOREY":
|
||||
o = FreeCAD.ActiveDocument.getObject("Floor"+str(r.id))
|
||||
if o: fcelts.append(o)
|
||||
name = mode+str(entity.id)
|
||||
if mode == "Site":
|
||||
cell = Cell.makeSite(fcelts,name=name)
|
||||
elif mode == "Floor":
|
||||
cell = Cell.makeFloor(fcelts,join=True,name=name)
|
||||
elif mode == "Building":
|
||||
cell = Cell.makeBuilding(fcelts,name=name)
|
||||
else:
|
||||
cell = Cell.makeCell(fcelts,join=True,name=name)
|
||||
cell.CellType = type
|
||||
except:
|
||||
if DEBUG: print "error: skipping cell",entity.id
|
||||
|
||||
def makeWall(entity):
|
||||
"makes a wall in the freecad document"
|
||||
try:
|
||||
if DEBUG: print "=====> making wall",entity.id
|
||||
placement = wall = wire = body = width = height = None
|
||||
placement = getPlacement(entity.ObjectPlacement)
|
||||
if DEBUG: print "got wall placement",entity.id,":",placement
|
||||
width = entity.getProperty("Width")
|
||||
height = entity.getProperty("Height")
|
||||
if width and height:
|
||||
if DEBUG: print "got width, height ",entity.id,":",width,"/",height
|
||||
for r in entity.Representation.Representations:
|
||||
if r.RepresentationIdentifier == "Axis":
|
||||
wire = makeWire(r.Items,placement)
|
||||
wall = Wall.makeWall(wire,width,height,align="Center",name="Wall"+str(entity.id))
|
||||
else:
|
||||
if DEBUG: print "no height or width properties found..."
|
||||
for r in entity.Representation.Representations:
|
||||
if r.RepresentationIdentifier == "Body":
|
||||
for b in r.Items:
|
||||
if b.type == "IFCEXTRUDEDAREASOLID":
|
||||
norm = getVector(b.ExtrudedDirection)
|
||||
norm.normalize()
|
||||
wire = makeWire(b.SweptArea,placement)
|
||||
wall = Wall.makeWall(wire,width=0,height=b.Depth,name="Wall"+str(entity.id))
|
||||
wall.Normal = norm
|
||||
if wall:
|
||||
if DEBUG: print "made wall object ",entity.id,":",wall
|
||||
except:
|
||||
if DEBUG: print "error: skipping wall",entity.id
|
||||
|
||||
def makeWire(entity,placement=None):
|
||||
"makes a wire in the freecad document"
|
||||
if DEBUG: print "making Wire from :",entity
|
||||
if not entity: return None
|
||||
if entity.type == "IFCPOLYLINE":
|
||||
pts = []
|
||||
for p in entity.Points:
|
||||
pts.append(getVector(p))
|
||||
return Draft.makeWire(pts,placement=placement)
|
||||
elif entity.type == "IFCARBITRARYCLOSEDPROFILEDEF":
|
||||
pts = []
|
||||
for p in entity.OuterCurve.Points:
|
||||
pts.append(getVector(p))
|
||||
return Draft.makeWire(pts,closed=True,placement=placement)
|
||||
|
||||
def getPlacement(entity):
|
||||
"returns a placement from the given entity"
|
||||
if DEBUG: print "getting placement ",entity
|
||||
if not entity: return None
|
||||
pl = None
|
||||
if entity.type == "IFCAXIS2PLACEMENT3D":
|
||||
x = getVector(entity.RefDirection)
|
||||
z = getVector(entity.Axis)
|
||||
y = z.cross(x)
|
||||
loc = getVector(entity.Location)
|
||||
m = fcvec.getPlaneRotation(x,y,z)
|
||||
pl = FreeCAD.Placement(m)
|
||||
pl.move(loc)
|
||||
elif entity.type == "IFCLOCALPLACEMENT":
|
||||
pl = getPlacement(entity.PlacementRelTo)
|
||||
relpl = getPlacement(entity.RelativePlacement)
|
||||
if pl and relpl:
|
||||
pl = relpl.multiply(pl)
|
||||
elif relpl:
|
||||
pl = relpl
|
||||
elif entity.type == "IFCCARTESIANPOINT":
|
||||
loc = getVector(entity)
|
||||
pl = FreeCAD.Placement()
|
||||
pl.move(loc)
|
||||
if DEBUG: print "made placement for",entity.id,":",pl
|
||||
return pl
|
||||
|
||||
def getVector(entity):
|
||||
if DEBUG: print "getting point from",entity
|
||||
if entity.type == "IFCDIRECTION":
|
||||
if len(entity.DirectionRatios) == 3:
|
||||
return FreeCAD.Vector(tuple(entity.DirectionRatios))
|
||||
else:
|
||||
return FreeCAD.Vector(tuple(entity.DirectionRatios+[0]))
|
||||
elif entity.type == "IFCCARTESIANPOINT":
|
||||
if len(entity.Coordinates) == 3:
|
||||
return FreeCAD.Vector(tuple(entity.Coordinates))
|
||||
else:
|
||||
return FreeCAD.Vector(tuple(entity.Coordinates+[0]))
|
||||
return None
|
||||