+ 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
This commit is contained in:
wmayer
2011-10-10 13:44:52 +00:00
commit 120ca87015
4155 changed files with 2965978 additions and 0 deletions

36
src/Mod/Arch/Arch.py Normal file
View 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

File diff suppressed because it is too large Load Diff

99
src/Mod/Arch/Building.py Normal file
View 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())

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

File diff suppressed because it is too large Load Diff

7
src/Mod/Arch/Init.py Executable file
View 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
View 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
View 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

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

View 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

View 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

View 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

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

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

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

View 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
View 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
View 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
View 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
View 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
View File

@@ -0,0 +1,3 @@
/** \defgroup ARCH Arch
* \ingroup WORKBENCHES */

447
src/Mod/Arch/ifcReader.py Executable file
View 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
View 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
View 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