+ unify DLL export defines to namespace names
git-svn-id: https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk@5000 e8eeb9e2-ec13-0410-a4a9-efa5cf37419d
36
src/Mod/Arch/Arch.py
Normal file
@@ -0,0 +1,36 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* as published by the Free Software Foundation; either version 2 of *
|
||||
#* the License, or (at your option) any later version. *
|
||||
#* for detail see the LICENCE text file. *
|
||||
#* *
|
||||
#* This program is distributed in the hope that it will be useful, *
|
||||
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
#* GNU Library General Public License for more details. *
|
||||
#* *
|
||||
#* You should have received a copy of the GNU Library General Public *
|
||||
#* License along with this program; if not, write to the Free Software *
|
||||
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
#* USA *
|
||||
#* *
|
||||
#***************************************************************************
|
||||
|
||||
__title__="FreeCAD Arch API"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
from Wall import *
|
||||
from Cell import *
|
||||
from Floor import *
|
||||
from Site import *
|
||||
from Building import *
|
||||
from Structure import *
|
||||
from Commands import *
|
||||
from SectionPlane import *
|
||||
from Window import *
|
||||
9217
src/Mod/Arch/Arch_rc.py
Normal file
99
src/Mod/Arch/Building.py
Normal file
@@ -0,0 +1,99 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* as published by the Free Software Foundation; either version 2 of *
|
||||
#* the License, or (at your option) any later version. *
|
||||
#* for detail see the LICENCE text file. *
|
||||
#* *
|
||||
#* This program is distributed in the hope that it will be useful, *
|
||||
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
#* GNU Library General Public License for more details. *
|
||||
#* *
|
||||
#* You should have received a copy of the GNU Library General Public *
|
||||
#* License along with this program; if not, write to the Free Software *
|
||||
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
#* USA *
|
||||
#* *
|
||||
#***************************************************************************
|
||||
|
||||
import Cell,FreeCAD,FreeCADGui
|
||||
from PyQt4 import QtCore
|
||||
|
||||
__title__="FreeCAD Building"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
def makeBuilding(objectslist,join=False,name="Building"):
|
||||
'''makeBuilding(objectslist,[joinmode]): creates a building including the
|
||||
objects from the given list. If joinmode is True, components will be joined.'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
|
||||
Building(obj)
|
||||
ViewProviderBuilding(obj.ViewObject)
|
||||
obj.Components = objectslist
|
||||
for comp in obj.Components:
|
||||
comp.ViewObject.hide()
|
||||
obj.JoinMode = join
|
||||
return obj
|
||||
|
||||
class CommandBuilding:
|
||||
"the Arch Building command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_Building',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_Building","Building"),
|
||||
'Accel': "B, U",
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Building","Creates a building object including selected objects.")}
|
||||
|
||||
def Activated(self):
|
||||
FreeCAD.ActiveDocument.openTransaction("Building")
|
||||
makeBuilding(FreeCADGui.Selection.getSelection())
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
|
||||
class Building(Cell.Cell):
|
||||
"The Building object"
|
||||
def __init__(self,obj):
|
||||
Cell.Cell.__init__(self,obj)
|
||||
self.Type = "Building"
|
||||
|
||||
class ViewProviderBuilding(Cell.ViewProviderCell):
|
||||
"A View Provider for the Building object"
|
||||
def __init__(self,vobj):
|
||||
Cell.ViewProviderCell.__init__(self,vobj)
|
||||
|
||||
def getIcon(self):
|
||||
return """
|
||||
/* XPM */
|
||||
static char * Arch_Building_xpm[] = {
|
||||
"16 16 9 1",
|
||||
" c None",
|
||||
". c #160E0A",
|
||||
"+ c #C10007",
|
||||
"@ c #FF0006",
|
||||
"# c #8F3F00",
|
||||
"$ c #5E5F5D",
|
||||
"% c #7F817E",
|
||||
"& c #A0A29F",
|
||||
"* c #F4F6F3",
|
||||
" ",
|
||||
" ........ ",
|
||||
" ..#@@@@@. ",
|
||||
" .&&.+@@@@@. ",
|
||||
" .&**%.@@@@@+. ",
|
||||
" .&****..@@@+...",
|
||||
".%******.##..$$.",
|
||||
".&******&.$&**%.",
|
||||
".%*...$**.****% ",
|
||||
".%*..#.**.****% ",
|
||||
" %*..#.**.****$ ",
|
||||
" $*..#.**.***$. ",
|
||||
" $*..#$**.**.. ",
|
||||
" .$...$**.&. ",
|
||||
" . .$%.. ",
|
||||
" .. "};
|
||||
"""
|
||||
|
||||
FreeCADGui.addCommand('Arch_Building',CommandBuilding())
|
||||
37
src/Mod/Arch/CMakeLists.txt
Normal file
@@ -0,0 +1,37 @@
|
||||
|
||||
SET(Arch_SRCS
|
||||
Init.py
|
||||
InitGui.py
|
||||
Component.py
|
||||
Cell.py
|
||||
Wall.py
|
||||
importIFC.py
|
||||
ifcReader.py
|
||||
IFC2X3_TC1.exp
|
||||
Arch_rc.py
|
||||
Arch.py
|
||||
Building.py
|
||||
Floor.py
|
||||
Site.py
|
||||
Structure.py
|
||||
Commands.py
|
||||
SectionPlane.py
|
||||
importDAE.py
|
||||
Window.py
|
||||
)
|
||||
SOURCE_GROUP("" FILES ${Arch_SRCS})
|
||||
|
||||
SET(all_files ${Arch_SRCS})
|
||||
|
||||
ADD_CUSTOM_TARGET(Arch ALL
|
||||
SOURCES ${all_files}
|
||||
)
|
||||
|
||||
fc_copy_sources("Mod/Arch" "Arch" ${all_files})
|
||||
|
||||
install(
|
||||
FILES
|
||||
${Arch_SRCS}
|
||||
DESTINATION
|
||||
Mod/Arch
|
||||
)
|
||||
157
src/Mod/Arch/Cell.py
Normal file
@@ -0,0 +1,157 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* as published by the Free Software Foundation; either version 2 of *
|
||||
#* the License, or (at your option) any later version. *
|
||||
#* for detail see the LICENCE text file. *
|
||||
#* *
|
||||
#* This program is distributed in the hope that it will be useful, *
|
||||
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
#* GNU Library General Public License for more details. *
|
||||
#* *
|
||||
#* You should have received a copy of the GNU Library General Public *
|
||||
#* License along with this program; if not, write to the Free Software *
|
||||
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
#* USA *
|
||||
#* *
|
||||
#***************************************************************************
|
||||
|
||||
import FreeCAD,FreeCADGui,Part,Draft
|
||||
from FreeCAD import Vector
|
||||
from PyQt4 import QtCore
|
||||
|
||||
__title__="FreeCAD Cell"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
def makeCell(objectslist,join=True,name="Cell"):
|
||||
'''makeCell(objectslist,[joinmode]): creates a cell including the
|
||||
objects from the given list. If joinmode is False, contents will
|
||||
not be joined.'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
|
||||
Cell(obj)
|
||||
ViewProviderCell(obj.ViewObject)
|
||||
obj.Components = objectslist
|
||||
for comp in obj.Components:
|
||||
comp.ViewObject.hide()
|
||||
obj.JoinMode = join
|
||||
return obj
|
||||
|
||||
class CommandCell:
|
||||
"the Arch Cell command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_Cell',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_Cell","Cell"),
|
||||
'Accel': "C, E",
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Cell","Creates a cell object including selected objects")}
|
||||
|
||||
def Activated(self):
|
||||
FreeCAD.ActiveDocument.openTransaction("Cell")
|
||||
makeCell(FreeCADGui.Selection.getSelection())
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
|
||||
class Cell:
|
||||
"The Cell object"
|
||||
def __init__(self,obj):
|
||||
obj.addProperty("App::PropertyLinkList","Components","Base",
|
||||
"The objects that make part of this cell")
|
||||
obj.addProperty("App::PropertyBool","JoinMode","Base",
|
||||
"If True, underlying geometry will be joined")
|
||||
obj.Proxy = self
|
||||
self.Type = "Cell"
|
||||
|
||||
def execute(self,obj):
|
||||
self.createGeometry(obj)
|
||||
|
||||
def onChanged(self,obj,prop):
|
||||
if prop in ["Components","JoinMode"]:
|
||||
self.createGeometry(obj)
|
||||
|
||||
def createGeometry(self,obj):
|
||||
pl = obj.Placement
|
||||
if obj.Components:
|
||||
if obj.JoinMode:
|
||||
components = obj.Components[:]
|
||||
f = components.pop(0)
|
||||
baseShape = f.Shape
|
||||
for comp in components:
|
||||
if Draft.getType(comp) in ["Wall","Cell","Shape"]:
|
||||
baseShape = baseShape.oldFuse(comp.Shape)
|
||||
else:
|
||||
compshapes = []
|
||||
for o in obj.Components:
|
||||
compshapes.append(o.Shape)
|
||||
baseShape = Part.makeCompound(compshapes)
|
||||
obj.Shape = baseShape
|
||||
obj.Placement = pl
|
||||
|
||||
class ViewProviderCell:
|
||||
"A View Provider for the Cell object"
|
||||
def __init__(self,vobj):
|
||||
vobj.Proxy = self
|
||||
self.Object = vobj.Object
|
||||
|
||||
def getIcon(self):
|
||||
return """
|
||||
/* XPM */
|
||||
static char * Arch_Cell_xpm[] = {
|
||||
"16 16 9 1",
|
||||
" c None",
|
||||
". c #0C0A04",
|
||||
"+ c #413F37",
|
||||
"@ c #636057",
|
||||
"# c #7E7D75",
|
||||
"$ c #9C9B95",
|
||||
"% c #B7B8B3",
|
||||
"& c #D2D4D1",
|
||||
"* c #FCFEFB",
|
||||
" +++ ",
|
||||
" ++#++@$+ ",
|
||||
" +@$%**@%#@++++ ",
|
||||
" #&**%*@%%%$@+##",
|
||||
" #&%@@*@%$@+@&*%",
|
||||
" #&% @*@$@@%***%",
|
||||
" #&% @*@+@#****%",
|
||||
" #&%.@*@+@#****%",
|
||||
" #&%$&*@+@#****%",
|
||||
".@&****@+@#****%",
|
||||
" @&***&@+@#****%",
|
||||
" @&**$ .@#****%",
|
||||
" @&%# @#****#",
|
||||
" +@ @#**& ",
|
||||
" @#*$ ",
|
||||
" @@# "};
|
||||
"""
|
||||
|
||||
def updateData(self,obj,prop):
|
||||
return
|
||||
|
||||
def onChanged(self,vobj,prop):
|
||||
return
|
||||
|
||||
def claimChildren(self):
|
||||
return self.Object.Components
|
||||
|
||||
def attach(self,vobj):
|
||||
self.Object = vobj.Object
|
||||
return
|
||||
|
||||
def getDisplayModes(self,obj):
|
||||
modes=[]
|
||||
return modes
|
||||
|
||||
def setDisplayMode(self,mode):
|
||||
return mode
|
||||
|
||||
def __getstate__(self):
|
||||
return None
|
||||
|
||||
def __setstate__(self,state):
|
||||
return None
|
||||
|
||||
FreeCADGui.addCommand('Arch_Cell',CommandCell())
|
||||
356
src/Mod/Arch/Commands.py
Normal file
@@ -0,0 +1,356 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* as published by the Free Software Foundation; either version 2 of *
|
||||
#* the License, or (at your option) any later version. *
|
||||
#* for detail see the LICENCE text file. *
|
||||
#* *
|
||||
#* This program is distributed in the hope that it will be useful, *
|
||||
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
#* GNU Library General Public License for more details. *
|
||||
#* *
|
||||
#* You should have received a copy of the GNU Library General Public *
|
||||
#* License along with this program; if not, write to the Free Software *
|
||||
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
#* USA *
|
||||
#* *
|
||||
#***************************************************************************
|
||||
|
||||
import FreeCAD,FreeCADGui,Part,Draft,MeshPart,Component
|
||||
from draftlibs import fcgeo,fcvec
|
||||
from FreeCAD import Vector
|
||||
from PyQt4 import QtCore
|
||||
|
||||
__title__="FreeCAD Arch Commands"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
# module functions ###############################################
|
||||
|
||||
def addComponents(objectsList,host):
|
||||
'''addComponents(objectsList,hostObject): adds the given object or the objects
|
||||
from the given list as components to the given host Object. Use this for
|
||||
example to add windows to a wall, or to add walls to a cell or floor.'''
|
||||
if not isinstance(objectsList,list):
|
||||
objectsList = [objectsList]
|
||||
tp = Draft.getType(host)
|
||||
if tp in ["Cell","Floor","Building","Site"]:
|
||||
c = host.Components
|
||||
for o in objectsList:
|
||||
if not o in c:
|
||||
c.append(o)
|
||||
host.Components = c
|
||||
elif tp in ["Wall","Structure"]:
|
||||
a = host.Additions
|
||||
for o in objectsList:
|
||||
if not o in a:
|
||||
if hasattr(o,"Shape"):
|
||||
a.append(o)
|
||||
host.Additions = a
|
||||
|
||||
def removeComponents(objectsList,host=None):
|
||||
'''removeComponents(objectsList,[hostObject]): removes the given component or
|
||||
the components from the given list from their parents. If a host object is
|
||||
specified, this function will try adding the components as holes to the host
|
||||
object instead.'''
|
||||
if not isinstance(objectsList,list):
|
||||
objectsList = [objectsList]
|
||||
if host:
|
||||
if Draft.getType(host) in ["Wall","Structure"]:
|
||||
s = host.Subtractions
|
||||
for o in objectsList:
|
||||
if not o in s:
|
||||
s.append(o)
|
||||
host.Subtractions = s
|
||||
else:
|
||||
for o in objectsList:
|
||||
if o.InList:
|
||||
h = o.InList[0]
|
||||
tp = Draft.getType(h)
|
||||
if tp in ["Cell","Floor","Building","Site"]:
|
||||
c = h.Components
|
||||
if o in c:
|
||||
c.remove(o)
|
||||
h.Components = c
|
||||
o.ViewObject.show()
|
||||
elif tp in ["Wall","Structure"]:
|
||||
a = h.Additions
|
||||
s = h.Subtractions
|
||||
if o in a:
|
||||
a.remove(o)
|
||||
h.Additions = a
|
||||
o.ViewObject.show()
|
||||
elif o in s:
|
||||
s.remove(o)
|
||||
h.Subtractions = s
|
||||
o.ViewObject.show()
|
||||
|
||||
def splitMesh(obj,mark=True):
|
||||
'''splitMesh(object,[mark]): splits the given mesh object into separated components.
|
||||
If mark is False, nothing else is done. If True (default), non-manifold components
|
||||
will be painted in red.'''
|
||||
if not obj.isDerivedFrom("Mesh::Feature"): return []
|
||||
basemesh = obj.Mesh
|
||||
comps = basemesh.getSeparateComponents()
|
||||
nlist = []
|
||||
if comps:
|
||||
basename = obj.Name
|
||||
FreeCAD.ActiveDocument.removeObject(basename)
|
||||
for c in comps:
|
||||
newobj = FreeCAD.ActiveDocument.addObject("Mesh::Feature",basename)
|
||||
newobj.Mesh = c
|
||||
if mark and (not(c.isSolid()) or c.hasNonManifolds()):
|
||||
newobj.ViewObject.ShapeColor = (1.0,0.0,0.0,1.0)
|
||||
nlist.append(newobj)
|
||||
return nlist
|
||||
return [obj]
|
||||
|
||||
def meshToShape(obj,mark=True):
|
||||
'''meshToShape(object,[mark]): turns a mesh into a shape, joining coplanar facets. If
|
||||
mark is True (default), non-solid objects will be marked in red'''
|
||||
if "Mesh" in obj.PropertiesList:
|
||||
faces = []
|
||||
mesh = obj.Mesh
|
||||
plac = obj.Placement
|
||||
segments = mesh.getPlanes(0.001) # use rather strict tolerance here
|
||||
print len(segments)," segments ",segments
|
||||
for i in segments:
|
||||
print "treating",segments.index(i),i
|
||||
if len(i) > 0:
|
||||
wires = MeshPart.wireFromSegment(mesh, i)
|
||||
print "wire done"
|
||||
print wires
|
||||
if len(wires) > 1:
|
||||
# a segment can have inner holes
|
||||
print "inner wires found"
|
||||
ext = None
|
||||
max_length = 0
|
||||
# cleaning up rubbish in wires
|
||||
for i in range(len(wires)):
|
||||
wires[i] = fcgeo.removeInterVertices(wires[i])
|
||||
for w in wires:
|
||||
# we assume that the exterior boundary is that one with
|
||||
# the biggest bounding box
|
||||
if w.BoundBox.DiagonalLength > max_length:
|
||||
max_length = w.BoundBox.DiagonalLength
|
||||
ext = w
|
||||
print "exterior wire",ext
|
||||
wires.remove(ext)
|
||||
# all interior wires mark a hole and must reverse
|
||||
# their orientation, otherwise Part.Face fails
|
||||
for w in wires:
|
||||
print "reversing",w
|
||||
#w.reverse()
|
||||
print "reversed"
|
||||
# make sure that the exterior wires comes as first in the list
|
||||
wires.insert(0, ext)
|
||||
print "done sorting", wires
|
||||
faces.append(Part.Face(wires))
|
||||
print "done facing"
|
||||
print "faces",faces
|
||||
|
||||
shell=Part.Compound(faces)
|
||||
solid = Part.Solid(Part.Shell(faces))
|
||||
name = obj.Name
|
||||
if solid.isClosed():
|
||||
FreeCAD.ActiveDocument.removeObject(name)
|
||||
newobj = FreeCAD.ActiveDocument.addObject("Part::Feature",name)
|
||||
newobj.Shape = solid
|
||||
newobj.Placement = plac
|
||||
if not solid.isClosed():
|
||||
newobj.ViewObject.ShapeColor = (1.0,0.0,0.0,1.0)
|
||||
return newobj
|
||||
return None
|
||||
|
||||
def removeShape(objs,mark=True):
|
||||
'''takes an arch object (wall or structure) built on a cubic shape, and removes
|
||||
the inner shape, keeping its length, width and height as parameters.'''
|
||||
if not isinstance(objs,list):
|
||||
objs = [objs]
|
||||
for obj in objs:
|
||||
if fcgeo.isCubic(obj.Shape):
|
||||
dims = fcgeo.getCubicDimensions(obj.Shape)
|
||||
if dims:
|
||||
name = obj.Name
|
||||
tp = Draft.getType(obj)
|
||||
print tp
|
||||
if tp == "Structure":
|
||||
FreeCAD.ActiveDocument.removeObject(name)
|
||||
import Structure
|
||||
str = Structure.makeStructure(length=dims[1],width=dims[2],height=dims[3],name=name)
|
||||
str.Placement = dims[0]
|
||||
elif tp == "Wall":
|
||||
FreeCAD.ActiveDocument.removeObject(name)
|
||||
import Wall
|
||||
length = dims[1]
|
||||
width = dims[2]
|
||||
v1 = Vector(length/2,0,0)
|
||||
v2 = fcvec.neg(v1)
|
||||
v1 = dims[0].multVec(v1)
|
||||
v2 = dims[0].multVec(v2)
|
||||
line = Draft.makeLine(v1,v2)
|
||||
wal = Wall.makeWall(line,width=width,height=dims[3],name=name)
|
||||
else:
|
||||
if mark:
|
||||
obj.ViewObject.ShapeColor = (1.0,0.0,0.0,1.0)
|
||||
|
||||
|
||||
# command definitions ###############################################
|
||||
|
||||
class CommandAdd:
|
||||
"the Arch Add command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_Add',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_Add","Add component"),
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Add","Adds the selected components to the active object")}
|
||||
|
||||
def IsActive(self):
|
||||
if len(FreeCADGui.Selection.getSelection()) > 1:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def Activated(self):
|
||||
sel = FreeCADGui.Selection.getSelection()
|
||||
host = sel.pop()
|
||||
FreeCAD.ActiveDocument.openTransaction("Grouping")
|
||||
addComponents(sel,host)
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
|
||||
|
||||
class CommandRemove:
|
||||
"the Arch Add command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_Remove',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_Remove","Remove component"),
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Remove","Remove the selected components from their parents, or create a hole in a component")}
|
||||
|
||||
def IsActive(self):
|
||||
if FreeCADGui.Selection.getSelection():
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def Activated(self):
|
||||
sel = FreeCADGui.Selection.getSelection()
|
||||
FreeCAD.ActiveDocument.openTransaction("Ungrouping")
|
||||
if Draft.getType(sel[-1]) in ["Wall","Structure"]:
|
||||
host = sel.pop()
|
||||
removeComponents(sel,host)
|
||||
else:
|
||||
removeComponents(sel)
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
|
||||
|
||||
class CommandSplitMesh:
|
||||
"the Arch SplitMesh command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_SplitMesh',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_SplitMesh","Split Mesh"),
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_SplitMesh","Splits selected meshes into independent components")}
|
||||
|
||||
def IsActive(self):
|
||||
if len(FreeCADGui.Selection.getSelection()):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def Activated(self):
|
||||
if FreeCADGui.Selection.getSelection():
|
||||
sel = FreeCADGui.Selection.getSelection()
|
||||
FreeCAD.ActiveDocument.openTransaction("Split Mesh")
|
||||
for obj in sel:
|
||||
n = obj.Name
|
||||
nobjs = splitMesh(obj)
|
||||
if len(nobjs) > 1:
|
||||
g = FreeCAD.ActiveDocument.addObject("App::DocumentObjectGroup",n)
|
||||
for o in nobjs:
|
||||
g.addObject(o)
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
|
||||
|
||||
class CommandMeshToShape:
|
||||
"the Arch MeshToShape command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_MeshToShape',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_MeshToShape","Mesh to Shape"),
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_MeshToPart","Turns selected meshes into Part Shape objects")}
|
||||
|
||||
def IsActive(self):
|
||||
if FreeCADGui.Selection.getSelection():
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def Activated(self):
|
||||
if FreeCADGui.Selection.getSelection():
|
||||
f = FreeCADGui.Selection.getSelection()[0]
|
||||
g = None
|
||||
if f.isDerivedFrom("App::DocumentObjectGroup"):
|
||||
g = f
|
||||
FreeCADGui.Selection.clearSelection()
|
||||
for o in f.OutList:
|
||||
FreeCADGui.Selection.addSelection(o)
|
||||
else:
|
||||
if f.InList:
|
||||
if f.InList[0].isDerivedFrom("App::DocumentObjectGroup"):
|
||||
g = f.InList[0]
|
||||
FreeCAD.ActiveDocument.openTransaction("Mesh to Shape")
|
||||
for obj in FreeCADGui.Selection.getSelection():
|
||||
newobj = meshToShape(obj)
|
||||
if g and newobj:
|
||||
g.addObject(newobj)
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
|
||||
class CommandSelectNonSolidMeshes:
|
||||
"the Arch SelectNonSolidMeshes command definition"
|
||||
def GetResources(self):
|
||||
return {'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_SelectNonSolidMeshes","Select non-manifold meshes"),
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_SelectNonSolidMeshes","Selects all non-manifold meshes from the document or from the selected groups")}
|
||||
|
||||
def Activated(self):
|
||||
msel = []
|
||||
if FreeCADGui.Selection.getSelection():
|
||||
for o in FreeCADGui.Selection.getSelection():
|
||||
if o.isDerivedFrom("App::DocumentObjectGroup"):
|
||||
msel.extend(o.OutList)
|
||||
if not msel:
|
||||
msel = FreeCAD.ActiveDocument.Objects
|
||||
sel = []
|
||||
for o in msel:
|
||||
if o.isDerivedFrom("Mesh::Feature"):
|
||||
if (not o.Mesh.isSolid()) or o.Mesh.hasNonManifolds():
|
||||
sel.append(o)
|
||||
if sel:
|
||||
FreeCADGui.Selection.clearSelection()
|
||||
for o in sel:
|
||||
FreeCADGui.Selection.addSelection(o)
|
||||
|
||||
class CommandRemoveShape:
|
||||
"the Arch RemoveShape command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_RemoveShape',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_RemoveShape","Remove Shape from Arch"),
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_RemoveShape","Removes cubic shapes from Arch components")}
|
||||
|
||||
def IsActive(self):
|
||||
if FreeCADGui.Selection.getSelection():
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def Activated(self):
|
||||
sel = FreeCADGui.Selection.getSelection()
|
||||
removeShape(sel)
|
||||
|
||||
FreeCADGui.addCommand('Arch_Add',CommandAdd())
|
||||
FreeCADGui.addCommand('Arch_Remove',CommandRemove())
|
||||
FreeCADGui.addCommand('Arch_SplitMesh',CommandSplitMesh())
|
||||
FreeCADGui.addCommand('Arch_MeshToShape',CommandMeshToShape())
|
||||
FreeCADGui.addCommand('Arch_SelectNonSolidMeshes',CommandSelectNonSolidMeshes())
|
||||
FreeCADGui.addCommand('Arch_RemoveShape',CommandRemoveShape())
|
||||
160
src/Mod/Arch/Component.py
Normal file
@@ -0,0 +1,160 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* as published by the Free Software Foundation; either version 2 of *
|
||||
#* the License, or (at your option) any later version. *
|
||||
#* for detail see the LICENCE text file. *
|
||||
#* *
|
||||
#* This program is distributed in the hope that it will be useful, *
|
||||
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
#* GNU Library General Public License for more details. *
|
||||
#* *
|
||||
#* You should have received a copy of the GNU Library General Public *
|
||||
#* License along with this program; if not, write to the Free Software *
|
||||
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
#* USA *
|
||||
#* *
|
||||
#***************************************************************************
|
||||
|
||||
__title__="FreeCAD Arch Component"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
import FreeCADGui
|
||||
from PyQt4 import QtGui,QtCore
|
||||
|
||||
def addToComponent(compobject,addobject):
|
||||
'''addToComponent(compobject,addobject): adds addobject
|
||||
to the given component'''
|
||||
if "Additions" in compobject.PropertiesList:
|
||||
if not addobject in compobject.Additions:
|
||||
compobject.Additions.append(addobject)
|
||||
|
||||
def removeFromComponent(compobject,subobject):
|
||||
'''removeFromComponent(compobject,subobject): subtracts subobject
|
||||
from the given component'''
|
||||
if "Subtractions" in compobject.PropertiesList:
|
||||
if not subobject in compobject.Subtractions:
|
||||
compobject.Subtractions.append(subobject)
|
||||
|
||||
class ComponentTaskPanel:
|
||||
def __init__(self):
|
||||
self.obj = None
|
||||
self.form = QtGui.QWidget()
|
||||
self.form.setObjectName("TaskPanel")
|
||||
#self.form.resize(210, 260)
|
||||
self.gridLayout = QtGui.QGridLayout(self.form)
|
||||
self.gridLayout.setObjectName("gridLayout")
|
||||
self.title = QtGui.QLabel(self.form)
|
||||
self.gridLayout.addWidget(self.title, 0, 0, 1, 1)
|
||||
self.listWidget = QtGui.QListWidget(self.form)
|
||||
self.listWidget.setObjectName("listWidget")
|
||||
self.gridLayout.addWidget(self.listWidget, 1, 0, 1, 2)
|
||||
self.addButton = QtGui.QPushButton(self.form)
|
||||
self.addButton.setObjectName("addButton")
|
||||
self.addButton.setIcon(QtGui.QIcon(":/icons/Arch_Add.svg"))
|
||||
self.gridLayout.addWidget(self.addButton, 2, 0, 1, 1)
|
||||
self.delButton = QtGui.QPushButton(self.form)
|
||||
self.delButton.setObjectName("delButton")
|
||||
self.delButton.setIcon(QtGui.QIcon(":/icons/Arch_Remove.svg"))
|
||||
self.gridLayout.addWidget(self.delButton, 3, 0, 1, 1)
|
||||
QtCore.QObject.connect(self.addButton, QtCore.SIGNAL("clicked()"), self.addElement)
|
||||
self.retranslateUi(self.form)
|
||||
|
||||
def getStandardButtons(self):
|
||||
return int(QtGui.QDialogButtonBox.Ok)
|
||||
|
||||
def addElement(self):
|
||||
sel = FreeCADGui.Selection.getSelection()
|
||||
if sel:
|
||||
for o in sel:
|
||||
addToComponent(self.obj,o)
|
||||
|
||||
def fillList(self):
|
||||
self.listWidget.clear()
|
||||
if self.obj.Base:
|
||||
i = QtGui.QListWidgetItem(self.listWidget)
|
||||
i.setText(self.obj.Base.Name)
|
||||
i.setIcon(QtGui.QIcon(":/icons/Tree_Part.svg"))
|
||||
self.listWidget.addItem(i)
|
||||
for o in self.obj.Additions:
|
||||
i = QtGui.QListWidgetItem(self.listWidget)
|
||||
i.setText(o.Name)
|
||||
i.setIcon(QtGui.QIcon(":/icons/Arch_Add.svg"))
|
||||
self.listWidget.addItem(i)
|
||||
for o in self.obj.Subtractions:
|
||||
i = QtGui.QListWidgetItem(self.listWidget)
|
||||
i.setText(o.Name)
|
||||
i.setIcon(QtGui.QIcon(":/icons/Arch_Remove.svg"))
|
||||
self.listWidget.addItem(i)
|
||||
|
||||
def retranslateUi(self, TaskPanel):
|
||||
TaskPanel.setWindowTitle(QtGui.QApplication.translate("Arch", "Components", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.addButton.setText(QtGui.QApplication.translate("Arch", "Append selected objects", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.delButton.setText(QtGui.QApplication.translate("Arch", "Remove child", None, QtGui.QApplication.UnicodeUTF8))
|
||||
self.title.setText(QtGui.QApplication.translate("Arch", "Components of this object", None, QtGui.QApplication.UnicodeUTF8))
|
||||
|
||||
class Component:
|
||||
"The Component object"
|
||||
def __init__(self,obj):
|
||||
obj.addProperty("App::PropertyLink","Base","Base",
|
||||
"The base object this component is built upon")
|
||||
obj.addProperty("App::PropertyLinkList","Additions","Base",
|
||||
"Other shapes that are appended to this wall")
|
||||
obj.addProperty("App::PropertyLinkList","Subtractions","Base",
|
||||
"Other shapes that are subtracted from this wall")
|
||||
obj.addProperty("App::PropertyVector","Normal","Base",
|
||||
"The normal extrusion direction of this wall (keep (0,0,0) for automatic normal)")
|
||||
obj.Proxy = self
|
||||
self.Type = "Component"
|
||||
self.Object = obj
|
||||
self.Subvolume = None
|
||||
|
||||
class ViewProviderComponent:
|
||||
"A View Provider for Component objects"
|
||||
def __init__(self,vobj):
|
||||
vobj.Proxy = self
|
||||
self.Object = vobj.Object
|
||||
|
||||
def updateData(self,vobj,prop):
|
||||
return
|
||||
|
||||
def onChanged(self,vobj,prop):
|
||||
return
|
||||
|
||||
def attach(self,vobj):
|
||||
self.Object = vobj.Object
|
||||
return
|
||||
|
||||
def getDisplayModes(self,vobj):
|
||||
modes=[]
|
||||
return modes
|
||||
|
||||
def setDisplayMode(self,mode):
|
||||
return mode
|
||||
|
||||
def __getstate__(self):
|
||||
return None
|
||||
|
||||
def __setstate__(self,state):
|
||||
return None
|
||||
|
||||
def claimChildren(self):
|
||||
return [self.Object.Base]+self.Object.Additions+self.Object.Subtractions
|
||||
|
||||
def setEdit(self,vobj,mode):
|
||||
taskd = ComponentTaskPanel()
|
||||
taskd.obj = self.Object
|
||||
taskd.fillList()
|
||||
FreeCADGui.Control.showDialog(taskd)
|
||||
return True
|
||||
|
||||
def unsetEdit(self,vobj,mode):
|
||||
FreeCADGui.Control.closeDialog()
|
||||
return True
|
||||
|
||||
102
src/Mod/Arch/Floor.py
Normal file
@@ -0,0 +1,102 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* as published by the Free Software Foundation; either version 2 of *
|
||||
#* the License, or (at your option) any later version. *
|
||||
#* for detail see the LICENCE text file. *
|
||||
#* *
|
||||
#* This program is distributed in the hope that it will be useful, *
|
||||
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
#* GNU Library General Public License for more details. *
|
||||
#* *
|
||||
#* You should have received a copy of the GNU Library General Public *
|
||||
#* License along with this program; if not, write to the Free Software *
|
||||
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
#* USA *
|
||||
#* *
|
||||
#***************************************************************************
|
||||
|
||||
import Cell,FreeCAD,FreeCADGui
|
||||
from PyQt4 import QtCore
|
||||
|
||||
__title__="FreeCAD Arch Floor"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
def makeFloor(objectslist,join=True,name="Floor"):
|
||||
'''makeFloor(objectslist,[joinmode]): creates a floor including the
|
||||
objects from the given list. If joinmode is False, components will
|
||||
not be joined.'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
|
||||
Floor(obj)
|
||||
ViewProviderFloor(obj.ViewObject)
|
||||
obj.Components = objectslist
|
||||
for comp in obj.Components:
|
||||
comp.ViewObject.hide()
|
||||
obj.JoinMode = join
|
||||
return obj
|
||||
|
||||
class CommandFloor:
|
||||
"the Arch Cell command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_Floor',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_Floor","Floor"),
|
||||
'Accel': "F, R",
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Floor","Creates a floor object including selected objects")}
|
||||
|
||||
def Activated(self):
|
||||
FreeCAD.ActiveDocument.openTransaction("Floor")
|
||||
makeFloor(FreeCADGui.Selection.getSelection())
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
|
||||
class Floor(Cell.Cell):
|
||||
"The Cell object"
|
||||
def __init__(self,obj):
|
||||
Cell.Cell.__init__(self,obj)
|
||||
obj.addProperty("App::PropertyLength","Height","Base",
|
||||
"The height of this floor")
|
||||
self.Type = "Floor"
|
||||
|
||||
class ViewProviderFloor(Cell.ViewProviderCell):
|
||||
"A View Provider for the Cell object"
|
||||
def __init__(self,vobj):
|
||||
Cell.ViewProviderCell.__init__(self,vobj)
|
||||
|
||||
def getIcon(self):
|
||||
return """
|
||||
/* XPM */
|
||||
static char * Arch_Floor_xpm[] = {
|
||||
"16 16 9 1",
|
||||
" c None",
|
||||
". c #171817",
|
||||
"+ c #2E2876",
|
||||
"@ c #545653",
|
||||
"# c #605C98",
|
||||
"$ c #959794",
|
||||
"% c #9694BC",
|
||||
"& c #C8C9CC",
|
||||
"* c #F9FBFA",
|
||||
" ",
|
||||
" ",
|
||||
"............... ",
|
||||
".&&%&*&%%%%%&*. ",
|
||||
".&++#*#+++++#*. ",
|
||||
".&+%****&+*+#*. ",
|
||||
".&+#%%&*&+*+#*. ",
|
||||
".&++++&**+*+#*. ",
|
||||
".&+%***%%**+.$. ",
|
||||
".&++###*#+#.$@. ",
|
||||
".&++++#*+++.&.. ",
|
||||
".&********&.. ",
|
||||
".$$$$$$$$$@. ",
|
||||
" .......... ",
|
||||
" ",
|
||||
" "};
|
||||
"""
|
||||
|
||||
FreeCADGui.addCommand('Arch_Floor',CommandFloor())
|
||||
9570
src/Mod/Arch/IFC2X3_TC1.exp
Executable file
7
src/Mod/Arch/Init.py
Executable file
@@ -0,0 +1,7 @@
|
||||
# Get the Parameter Group of this module
|
||||
ParGrp = App.ParamGet("System parameter:Modules").GetGroup("Arch")
|
||||
|
||||
# Set the needed information
|
||||
ParGrp.SetString("HelpIndex", "http://free-cad.sf.net")
|
||||
ParGrp.SetString("WorkBenchName", "Arch")
|
||||
|
||||
76
src/Mod/Arch/InitGui.py
Executable file
@@ -0,0 +1,76 @@
|
||||
class ArchWorkbench(Workbench):
|
||||
"Arch workbench object"
|
||||
Icon = """
|
||||
/* XPM */
|
||||
static char * arch_xpm[] = {
|
||||
"16 16 9 1",
|
||||
" c None",
|
||||
". c #543016",
|
||||
"+ c #6D2F08",
|
||||
"@ c #954109",
|
||||
"# c #874C24",
|
||||
"$ c #AE6331",
|
||||
"% c #C86423",
|
||||
"& c #FD7C26",
|
||||
"* c #F5924F",
|
||||
" ",
|
||||
" ",
|
||||
" # ",
|
||||
" ***$# ",
|
||||
" .*******. ",
|
||||
" *##$****#+ ",
|
||||
" #**%&&##$#@@ ",
|
||||
".$**%&&&&+@@+ ",
|
||||
"@&@#$$%&&@@+.. ",
|
||||
"@&&&%#.#$#+..#$.",
|
||||
" %&&&&+%#.$**$@+",
|
||||
" @%&+&&&$##@@+",
|
||||
" @.&&&&&@@@ ",
|
||||
" @%&&@@ ",
|
||||
" @+ ",
|
||||
" "};
|
||||
"""
|
||||
MenuText = "Arch"
|
||||
ToolTip = "Architecture workbench"
|
||||
|
||||
def Initialize(self):
|
||||
import draftTools,draftGui,Arch_rc,Arch
|
||||
archtools = ["Arch_Wall","Arch_Structure","Arch_Cell",
|
||||
"Arch_Floor","Arch_Building","Arch_Site",
|
||||
"Arch_Window",
|
||||
"Arch_SectionPlane","Arch_Add","Arch_Remove"]
|
||||
drafttools = ["Draft_Line","Draft_Wire","Draft_Rectangle",
|
||||
"Draft_Polygon","Draft_Arc",
|
||||
"Draft_Circle","Draft_Dimension",
|
||||
"Draft_Move","Draft_Rotate",
|
||||
"Draft_Offset","Draft_Upgrade",
|
||||
"Draft_Downgrade"]
|
||||
meshtools = ["Arch_SplitMesh","Arch_MeshToShape",
|
||||
"Arch_SelectNonSolidMeshes","Arch_RemoveShape"]
|
||||
self.appendToolbar("Arch tools",archtools)
|
||||
self.appendToolbar("Draft tools",drafttools)
|
||||
self.appendMenu(["Architecture","Tools"],meshtools)
|
||||
self.appendMenu("Architecture",archtools)
|
||||
self.appendMenu("Drafting",drafttools)
|
||||
FreeCADGui.addIconPath(":/icons")
|
||||
FreeCADGui.addLanguagePath(":/translations")
|
||||
FreeCADGui.addPreferencePage(":/ui/archprefs-base.ui","Arch")
|
||||
FreeCAD.addImportType("Industry Foundation Classes (*.ifc)","importIFC")
|
||||
try:
|
||||
import collada
|
||||
except:
|
||||
Log("pycollada not found, no collada support\n")
|
||||
else:
|
||||
FreeCAD.addImportType("Collada (*.dae)","importDAE")
|
||||
FreeCAD.addExportType("Collada (*.dae)","importDAE")
|
||||
Log ('Loading Arch module... done\n')
|
||||
def Activated(self):
|
||||
FreeCADGui.draftToolBar.Activated()
|
||||
Msg("Arch workbench activated\n")
|
||||
def Deactivated(self):
|
||||
FreeCADGui.draftToolBar.Deactivated()
|
||||
Msg("Arch workbench deactivated\n")
|
||||
|
||||
FreeCADGui.addWorkbench(ArchWorkbench)
|
||||
FreeCADGui.updateLocale()
|
||||
|
||||
52
src/Mod/Arch/Makefile.am
Normal file
@@ -0,0 +1,52 @@
|
||||
#BUILT_SOURCES=\
|
||||
# Arch_rc.py
|
||||
|
||||
# rules for Qt Resource Compiler:
|
||||
#%_rc.py: Resources/%.qrc
|
||||
# $(PYRCC4) -name $(*F) $< -o $(@F)
|
||||
|
||||
# Change data dir from default ($(prefix)/share) to $(prefix)
|
||||
datadir = $(prefix)/Mod/Arch
|
||||
data_DATA = \
|
||||
Arch_rc.py \
|
||||
Arch.py \
|
||||
Component.py \
|
||||
Building.py \
|
||||
Cell.py \
|
||||
Floor.py \
|
||||
IFC2X3_TC1.exp \
|
||||
ifcReader.py \
|
||||
importDAE.py \
|
||||
importIFC.py \
|
||||
Init.py \
|
||||
InitGui.py \
|
||||
Site.py \
|
||||
Structure.py \
|
||||
Wall.py \
|
||||
SectionPlane.py \
|
||||
Window.py \
|
||||
Commands.py
|
||||
|
||||
CLEANFILES = $(BUILT_SOURCES)
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(data_DATA) \
|
||||
CMakeLists.txt \
|
||||
arch.dox \
|
||||
Resources/Arch.qrc \
|
||||
Resources/icons/preferences-arch.svg \
|
||||
Resources/icons/Arch_Building.svg \
|
||||
Resources/icons/Arch_Cell.svg \
|
||||
Resources/icons/Arch_Floor.svg \
|
||||
Resources/icons/Arch_Site.svg \
|
||||
Resources/icons/Arch_Structure.svg \
|
||||
Resources/icons/Arch_Wall.svg \
|
||||
Resources/icons/Arch_Add.svg \
|
||||
Resources/icons/Arch_Remove.svg \
|
||||
Resources/icons/Arch_MeshToShape.svg \
|
||||
Resources/icons/Arch_SplitMesh.svg \
|
||||
Resources/icons/Arch_RemoveShape.svg \
|
||||
Resources/icons/Arch_SectionPlane.svg \
|
||||
Resources/icons/Arch_Window.svg \
|
||||
Resources/ui/archprefs-base.ui
|
||||
|
||||
19
src/Mod/Arch/Resources/Arch.qrc
Normal file
@@ -0,0 +1,19 @@
|
||||
<RCC>
|
||||
<qresource>
|
||||
<file>icons/Arch_Building.svg</file>
|
||||
<file>icons/Arch_Floor.svg</file>
|
||||
<file>icons/Arch_Cell.svg</file>
|
||||
<file>icons/Arch_Wall.svg</file>
|
||||
<file>icons/Arch_Site.svg</file>
|
||||
<file>icons/Arch_Structure.svg</file>
|
||||
<file>icons/Arch_Add.svg</file>
|
||||
<file>icons/Arch_Remove.svg</file>
|
||||
<file>icons/Arch_MeshToShape.svg</file>
|
||||
<file>icons/Arch_SplitMesh.svg</file>
|
||||
<file>icons/preferences-arch.svg</file>
|
||||
<file>icons/Arch_RemoveShape.svg</file>
|
||||
<file>icons/Arch_SectionPlane.svg</file>
|
||||
<file>icons/Arch_Window.svg</file>
|
||||
<file>ui/archprefs-base.ui</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
109
src/Mod/Arch/Resources/icons/Arch_Add.svg
Normal file
@@ -0,0 +1,109 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg2985"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="New document 2">
|
||||
<defs
|
||||
id="defs2987">
|
||||
<linearGradient
|
||||
id="linearGradient3793">
|
||||
<stop
|
||||
style="stop-color:#000f8a;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3795" />
|
||||
<stop
|
||||
style="stop-color:#0066ff;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3797" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3793"
|
||||
id="linearGradient3799"
|
||||
x1="12.037806"
|
||||
y1="54.001419"
|
||||
x2="52.882648"
|
||||
y2="9.274148"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-2,-2)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3793-2"
|
||||
id="linearGradient3799-8"
|
||||
x1="12.037806"
|
||||
y1="54.001419"
|
||||
x2="52.882648"
|
||||
y2="9.274148"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
id="linearGradient3793-2">
|
||||
<stop
|
||||
style="stop-color:#000f8a;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3795-6" />
|
||||
<stop
|
||||
style="stop-color:#0066ff;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3797-0" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="3.8890873"
|
||||
inkscape:cx="0.94984931"
|
||||
inkscape:cy="9.2337402"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="758"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="19"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata2990">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:0.65546223;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 26.015154,8.192974 0,17.71875 -17.8125,0 0,16.90625 17.8125,0 0,19.90625 16.90625,0 0,-19.90625 19.84375,0 0,-16.90625 -19.84375,0 0,-17.71875 -16.90625,0 z"
|
||||
id="rect2993-6" />
|
||||
<path
|
||||
style="color:#000000;fill:url(#linearGradient3799);fill-opacity:1;fill-rule:nonzero;stroke:#000345;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 20.71875,3.28125 0,17.71875 -17.8125,0 0,16.90625 17.8125,0 0,19.90625 16.90625,0 0,-19.90625 19.84375,0 0,-16.90625 -19.84375,0 0,-17.71875 -16.90625,0 z"
|
||||
id="rect2993"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
414
src/Mod/Arch/Resources/icons/Arch_Building.svg
Normal file
@@ -0,0 +1,414 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg2816"
|
||||
version="1.1"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="Arch_Building.svg">
|
||||
<defs
|
||||
id="defs2818">
|
||||
<linearGradient
|
||||
id="linearGradient3681">
|
||||
<stop
|
||||
id="stop3697"
|
||||
offset="0"
|
||||
style="stop-color:#fff110;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#cf7008;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3685" />
|
||||
</linearGradient>
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective2824" />
|
||||
<inkscape:perspective
|
||||
id="perspective3622"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3622-9"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3653"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3675"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3697"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3720"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3742"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3764"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3806"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3806-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3835"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3614"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3614-8"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3643"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3643-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3672"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3672-5"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3701"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3701-8"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3746"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
patternTransform="matrix(0.67643728,-0.81829155,2.4578314,1.8844554,-26.450606,18.294947)"
|
||||
id="pattern5231"
|
||||
xlink:href="#Strips1_1-4"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5224"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-4"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-4"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<inkscape:perspective
|
||||
id="perspective5224-9"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,39.618381,8.9692804)"
|
||||
id="pattern5231-4"
|
||||
xlink:href="#Strips1_1-6"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5224-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-6"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-0"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<pattern
|
||||
patternTransform="matrix(0.66513382,-1.0631299,2.4167603,2.4482973,-49.762569,2.9546807)"
|
||||
id="pattern5296"
|
||||
xlink:href="#pattern5231-3"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5288"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,-26.336284,10.887197)"
|
||||
id="pattern5231-3"
|
||||
xlink:href="#Strips1_1-4-3"
|
||||
inkscape:collect="always" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-4-3"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-4-6"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<pattern
|
||||
patternTransform="matrix(0.42844886,-0.62155849,1.5567667,1.431396,27.948414,13.306456)"
|
||||
id="pattern5330"
|
||||
xlink:href="#Strips1_1-9"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5323"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-9"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-3"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<inkscape:perspective
|
||||
id="perspective5361"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective5383"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective5411"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3681"
|
||||
id="linearGradient3687"
|
||||
x1="37.89756"
|
||||
y1="41.087898"
|
||||
x2="4.0605712"
|
||||
y2="40.168594"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3681"
|
||||
id="linearGradient3695"
|
||||
x1="37.894287"
|
||||
y1="40.484772"
|
||||
x2="59.811455"
|
||||
y2="43.558987"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="7.7781744"
|
||||
inkscape:cx="9.2850007"
|
||||
inkscape:cy="9.1549572"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:bbox-paths="true"
|
||||
inkscape:bbox-nodes="true"
|
||||
inkscape:snap-bbox-edge-midpoints="true"
|
||||
inkscape:snap-bbox-midpoints="true"
|
||||
inkscape:object-paths="true"
|
||||
inkscape:object-nodes="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="758"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="19"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata2821">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
style="fill:url(#linearGradient3695);stroke:#3e2806;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1"
|
||||
d="M 60.263217,21.287365 59.811455,43.558986 38.062928,60.721865 37.800679,29.252003 60.263217,21.287365 z"
|
||||
id="path2896" />
|
||||
<path
|
||||
style="fill:#ffffff;stroke:#3e2806;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1"
|
||||
d="m 16.970563,54.357635 7.970235,1.382691 0.104907,-21.652125 -8.44249,-0.571821 0.367348,20.841255 z"
|
||||
id="path3679" />
|
||||
<path
|
||||
style="fill:#9a5e04;stroke:#3e2806;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1"
|
||||
d="M 13.757107,56.194059 16.970563,54.357635 16.603215,33.51638 13.460643,33.30353 13.757107,56.194059"
|
||||
id="path3677" />
|
||||
<path
|
||||
style="fill:url(#linearGradient3687);stroke:#3e2806;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1"
|
||||
d="M 20.749897,6.9097788 3.4773811,25.525337 4.6161341,54.118177 13.757107,56.194059 13.460643,33.30353 25.045705,34.088201 24.928493,58.280045 38.067058,60.722799 37.795306,29.242426 20.749897,6.9097788 z"
|
||||
id="path2898"
|
||||
sodipodi:nodetypes="cccccccccc" />
|
||||
<path
|
||||
style="fill:#9a6504;stroke:#3e2806;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1"
|
||||
d="M 20.742507,6.9125682 47.753222,5.5848931 60.263217,21.287365 37.800679,29.252003 20.742507,6.9125682 z"
|
||||
id="path2900" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 15 KiB |
475
src/Mod/Arch/Resources/icons/Arch_Cell.svg
Normal file
@@ -0,0 +1,475 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg2816"
|
||||
version="1.1"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="Arch_Cell.svg">
|
||||
<defs
|
||||
id="defs2818">
|
||||
<linearGradient
|
||||
id="linearGradient3633">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3635" />
|
||||
<stop
|
||||
style="stop-color:#ffbf00;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3637" />
|
||||
</linearGradient>
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective2824" />
|
||||
<inkscape:perspective
|
||||
id="perspective3622"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3622-9"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3653"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3675"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3697"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3720"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3742"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3764"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3806"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3806-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3835"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3614"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3614-8"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3643"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3643-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3672"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3672-5"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3701"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3701-8"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3746"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
patternTransform="matrix(0.67643728,-0.81829155,2.4578314,1.8844554,-26.450606,18.294947)"
|
||||
id="pattern5231"
|
||||
xlink:href="#Strips1_1-4"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5224"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-4"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-4"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<inkscape:perspective
|
||||
id="perspective5224-9"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,39.618381,8.9692804)"
|
||||
id="pattern5231-4"
|
||||
xlink:href="#Strips1_1-6"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5224-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-6"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-0"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<pattern
|
||||
patternTransform="matrix(0.66513382,-1.0631299,2.4167603,2.4482973,-49.762569,2.9546807)"
|
||||
id="pattern5296"
|
||||
xlink:href="#pattern5231-3"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5288"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,-26.336284,10.887197)"
|
||||
id="pattern5231-3"
|
||||
xlink:href="#Strips1_1-4-3"
|
||||
inkscape:collect="always" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-4-3"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-4-6"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<pattern
|
||||
patternTransform="matrix(0.42844886,-0.62155849,1.5567667,1.431396,27.948414,13.306456)"
|
||||
id="pattern5330"
|
||||
xlink:href="#Strips1_1-9"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5323"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-9"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-3"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<inkscape:perspective
|
||||
id="perspective5361"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective5383"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective5411"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785-6"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785-1"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785-67"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785-8"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3848"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3869"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3894"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.7499999"
|
||||
inkscape:cx="14.379362"
|
||||
inkscape:cy="16.407091"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:bbox-paths="true"
|
||||
inkscape:bbox-nodes="true"
|
||||
inkscape:snap-bbox-edge-midpoints="true"
|
||||
inkscape:snap-bbox-midpoints="true"
|
||||
inkscape:object-paths="true"
|
||||
inkscape:object-nodes="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="758"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="19"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-global="true" />
|
||||
<metadata
|
||||
id="metadata2821">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
style="color:#000000;fill:#fff41b;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.87288027999999984;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="M 43.516117,4.5131039 43.239336,15.793349 32.666285,7.5817647 43.516117,4.5131039 z"
|
||||
id="path3775" />
|
||||
<path
|
||||
style="color:#000000;fill:#ffd800;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.87288027999999984;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="M 28.329999,8.7192687 54.163191,14.880747 54.003692,49.428233 28.299665,42.859485 28.33002,8.7192687 z"
|
||||
id="path3773"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1;opacity:0.57580152"
|
||||
d="M 36.911154,60.823 31.081499,43.570392 31.272728,25.818181 52.988898,14.612635 36.911154,60.823 z"
|
||||
id="path3882" />
|
||||
<path
|
||||
style="fill:#5c4500;fill-opacity:1;stroke:#1a1200;stroke-width:0.87288027999999984;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 38.755535,3.884878 5.4491783,13.174491 9.5943843,14.351259 28.329999,8.7192687 52.988898,14.612635 37.001444,22.336785 42.203587,23.513552 60.990533,14.027619 32.666285,7.5817647 43.553132,4.4536297 38.755535,3.884878 z"
|
||||
id="path2993"
|
||||
sodipodi:nodetypes="ccccccccccc" />
|
||||
<path
|
||||
style="fill:#fff41b;fill-opacity:1;stroke:#1a1200;stroke-width:0.87288027999999984;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 42.203587,23.513552 60.990533,14.027619 60.658029,48.48984 41.999775,62.163561 42.203587,23.513552"
|
||||
id="path3767"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#000000;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;opacity:0.57580147999999998;color:#000000;fill-opacity:1;fill-rule:nonzero;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 5.7270873,51.975299 -3.9089054,-15.429845 22.9090911,-10 0.363637,12.545454 -19.3638227,12.884391 z"
|
||||
id="path3884" />
|
||||
<path
|
||||
style="fill:#ffd800;fill-opacity:1;stroke:#1a1200;stroke-width:0.87288027999999984;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 5.4491783,13.174491 0.277909,38.800808 3.5228872,1.474616 0.3444098,-39.098656 -4.145206,-1.176768 z"
|
||||
id="path3769" />
|
||||
<rect
|
||||
style="color:#000000;fill:#ffd800;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.87288027999999984;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect3810"
|
||||
width="2.6197376"
|
||||
height="20.435173"
|
||||
x="21.123411"
|
||||
y="16.995039" />
|
||||
<path
|
||||
style="color:#000000;fill:#ffd800;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.87288027999999984;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 23.743147,32.132904 -2.619738,-0.601159 -9.19865,3.820599 3.319015,0.812715 8.499373,-4.032155 z"
|
||||
id="path3820" />
|
||||
<path
|
||||
style="fill:#fff41b;fill-opacity:1;stroke:#1a1200;stroke-width:0.87288027999999984;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 28.340433,8.72336 9.5924761,14.345337 9.2560893,53.445726 28.295581,42.869958 28.340433,8.72336 z m -4.597286,8.27168 0,15.137864 -8.499373,4.032155 -0.112129,-15.967336 8.611502,-3.202683 z"
|
||||
id="path3771" />
|
||||
<path
|
||||
style="color:#000000;fill:#ffd800;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.87288027999999984;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="M 37.001444,22.336785 36.911154,60.823 41.99977,62.163561 42.203582,23.513552 37.001439,22.336785 z"
|
||||
id="path3830" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 19 KiB |
406
src/Mod/Arch/Resources/icons/Arch_Floor.svg
Normal file
|
After Width: | Height: | Size: 15 KiB |
106
src/Mod/Arch/Resources/icons/Arch_MeshToShape.svg
Normal file
@@ -0,0 +1,106 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg2985"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="New document 2">
|
||||
<defs
|
||||
id="defs2987">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective2993" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="3.8890873"
|
||||
inkscape:cx="32.174591"
|
||||
inkscape:cy="40.265698"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="758"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="19"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata2990">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#001100;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 19.389772,20.571874 -14.6157637,-8.452602 0,20.254347 14.4375217,8.931051 z"
|
||||
id="path3009"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#001100;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 35.966186,11.720565 -16.398173,8.93105 -0.178241,20.692926 16.398172,-8.89118 z"
|
||||
id="path3009-6"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#001100;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 4.7740083,12.03953 20.99394,3.8261531 35.921626,11.640823 19.211531,21.050322 z"
|
||||
id="path3029"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#001bff;fill-opacity:1;stroke:#000111;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 44.274509,36.473644 -14.615764,-8.452601 0,20.254346 14.437522,8.931051 z"
|
||||
id="path3009-7"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#001bff;fill-opacity:1;stroke:#000111;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 60.850923,27.622336 44.45275,36.553385 44.274509,57.246311 60.672681,48.355131 z"
|
||||
id="path3009-6-0"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#001bff;fill-opacity:1;stroke:#000111;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 29.658745,27.941301 16.219932,-8.213377 14.927686,7.81467 -16.710095,9.409498 z"
|
||||
id="path3029-8"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#001bff;fill-opacity:1;stroke:#000830;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 9.6423647,44.015408 -5.5282889,2.956992 11.5708382,7.456762 -3.856946,2.442732 14.913525,1.799909 -2.057038,-8.870977 -3.599816,2.057038 z"
|
||||
id="path3823"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.5 KiB |
165
src/Mod/Arch/Resources/icons/Arch_Remove.svg
Normal file
@@ -0,0 +1,165 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg2985"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="Arch_Add.svg">
|
||||
<defs
|
||||
id="defs2987">
|
||||
<linearGradient
|
||||
id="linearGradient3793">
|
||||
<stop
|
||||
style="stop-color:#000f8a;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3795" />
|
||||
<stop
|
||||
style="stop-color:#0066ff;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3797" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3793"
|
||||
id="linearGradient3799"
|
||||
x1="12.037806"
|
||||
y1="54.001419"
|
||||
x2="52.882648"
|
||||
y2="9.274148"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-2,-2)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3793-2"
|
||||
id="linearGradient3799-8"
|
||||
x1="12.037806"
|
||||
y1="54.001419"
|
||||
x2="52.882648"
|
||||
y2="9.274148"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
id="linearGradient3793-2">
|
||||
<stop
|
||||
style="stop-color:#000f8a;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3795-6" />
|
||||
<stop
|
||||
style="stop-color:#0066ff;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3797-0" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3793-26"
|
||||
id="linearGradient3799-2"
|
||||
x1="12.037806"
|
||||
y1="54.001419"
|
||||
x2="52.882648"
|
||||
y2="9.274148"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-2,-2)" />
|
||||
<linearGradient
|
||||
id="linearGradient3793-26">
|
||||
<stop
|
||||
style="stop-color:#000f8a;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3795-9" />
|
||||
<stop
|
||||
style="stop-color:#0066ff;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3797-1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
y2="9.274148"
|
||||
x2="52.882648"
|
||||
y1="54.001419"
|
||||
x1="12.037806"
|
||||
gradientTransform="translate(-3.90625,-4.28125)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient3871"
|
||||
xlink:href="#linearGradient3793-26"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3793-26-8"
|
||||
id="linearGradient3799-2-4"
|
||||
x1="12.037806"
|
||||
y1="54.001419"
|
||||
x2="52.882648"
|
||||
y2="9.274148"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-2,-2)" />
|
||||
<linearGradient
|
||||
id="linearGradient3793-26-8">
|
||||
<stop
|
||||
style="stop-color:#000f8a;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3795-9-1" />
|
||||
<stop
|
||||
style="stop-color:#0066ff;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3797-1-6" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="3.8890873"
|
||||
inkscape:cx="0.94984931"
|
||||
inkscape:cy="12.274317"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="758"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="19"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata2990">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<rect
|
||||
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.60504202"
|
||||
id="rect3854-8"
|
||||
width="54.768635"
|
||||
height="16.970562"
|
||||
x="7.3281975"
|
||||
y="25.68767" />
|
||||
<rect
|
||||
style="opacity:1;color:#000000;fill:url(#linearGradient3799-2);fill-opacity:1;fill-rule:nonzero;stroke:#000345;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect3854"
|
||||
width="54.768635"
|
||||
height="16.970562"
|
||||
x="2.5712974"
|
||||
y="20.545074" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.1 KiB |
155
src/Mod/Arch/Resources/icons/Arch_RemoveShape.svg
Normal file
@@ -0,0 +1,155 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg2985"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="Arch_ShapeToArch.svg">
|
||||
<defs
|
||||
id="defs2987">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective2993" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.5"
|
||||
inkscape:cx="32.728838"
|
||||
inkscape:cy="34.122789"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="756"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="22"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata2990">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
style="fill:#001bff;fill-opacity:1;stroke:#000111;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 18.561535,19.760211 3.9457712,11.30761 l 0,20.254346 14.4375218,8.931051 z"
|
||||
id="path3009-7"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#001bff;fill-opacity:1;stroke:#000111;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 35.137949,10.908903 -16.398173,8.931049 -0.178241,20.692926 16.398172,-8.89118 z"
|
||||
id="path3009-6-0"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#001bff;fill-opacity:1;stroke:#000111;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 3.9457712,11.227868 20.165703,3.014491 35.093389,10.829161 18.383294,20.238659 z"
|
||||
id="path3029-8"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#001bff;fill-opacity:1;stroke:#000830;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 9.6423647,44.015408 -5.5282889,2.956992 11.5708382,7.456762 -3.856946,2.442732 14.913525,1.799909 -2.057038,-8.870977 -3.599816,2.057038 z"
|
||||
id="path3823"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
<path
|
||||
style="fill:#b3b3b3;fill-opacity:1;stroke:#000111;stroke-width:1.85461509;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 38.746219,40.001934 -6.516176,-4.081396 0.310383,20.611523 6.027551,4.202669 z"
|
||||
id="path3009-7-0"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#f9f9f9;fill-opacity:1;stroke:#000111;stroke-width:1.85461509000000002;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 61.108052,27.679374 38.66733,39.953111 38.489089,60.646037 60.92981,48.41217 z"
|
||||
id="path3009-6-0-9"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#808080;fill-opacity:1;stroke:#000111;stroke-width:1.85461509000000002;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 32.358608,35.712231 22.648174,-12.070323 6.05671,3.957724 -22.624079,12.623621 z"
|
||||
id="path3029-8-6"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#f9f9f9;fill-opacity:1;fill-rule:nonzero;stroke:#000111;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="M 60.818181,34.636363 38.90909,47.181818"
|
||||
id="path3801"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="color:#000000;fill:#f9f9f9;fill-opacity:1;fill-rule:nonzero;stroke:#000111;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="M 60.5,41.727273 38.590909,54.272727"
|
||||
id="path3801-7"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#f9f9f9;stroke:#000111;stroke-width:0.80000000999999998;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;color:#000000;fill-opacity:1;fill-rule:nonzero;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 50.363636,40.545455 -0.272727,7"
|
||||
id="path3838"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="color:#000000;fill:#f9f9f9;fill-opacity:1;fill-rule:nonzero;stroke:#000111;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 45.363636,36.727273 -0.181818,6.818182"
|
||||
id="path3846"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="color:#000000;fill:#f9f9f9;fill-opacity:1;fill-rule:nonzero;stroke:#000111;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 54.727273,31.590909 -0.181818,6.818182"
|
||||
id="path3846-2"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="color:#000000;fill:#f9f9f9;fill-opacity:1;fill-rule:nonzero;stroke:#000111;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 54.636364,45.227273 -0.181818,6.818182"
|
||||
id="path3846-6"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="color:#000000;fill:#f9f9f9;fill-opacity:1;fill-rule:nonzero;stroke:#000111;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 44.909091,50.772727 -0.181818,6.818182"
|
||||
id="path3846-4"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:#f9f9f9;stroke:#000111;stroke-width:0.80000000999999998;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;color:#000000;fill-opacity:1;fill-rule:nonzero;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="M 38.363636,46.636364 32.818182,42.727273"
|
||||
id="path3886"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="color:#000000;fill:#f9f9f9;fill-opacity:1;fill-rule:nonzero;stroke:#000111;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="M 37.954545,53.772727 32.409091,49.863636"
|
||||
id="path3886-9"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 8.6 KiB |
99
src/Mod/Arch/Resources/icons/Arch_SectionPlane.svg
Normal file
@@ -0,0 +1,99 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg2985"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="New document 2">
|
||||
<defs
|
||||
id="defs2987" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.97227183"
|
||||
inkscape:cx="152.65562"
|
||||
inkscape:cy="-55.147181"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="756"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="22"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata2990">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="color:#000000;fill:#ffcc00;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="path2993"
|
||||
sodipodi:cx="28.181818"
|
||||
sodipodi:cy="27.454546"
|
||||
sodipodi:rx="23.272728"
|
||||
sodipodi:ry="23.272728"
|
||||
d="m 51.454546,27.454546 a 23.272728,23.272728 0 1 1 -46.545456,0 23.272728,23.272728 0 1 1 46.545456,0 z"
|
||||
transform="translate(2.9090909,-0.72727273)" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="m 31.090909,3.6363636 0,58.5454544"
|
||||
id="path2995"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:type="star"
|
||||
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.01007271;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="path2997"
|
||||
sodipodi:sides="3"
|
||||
sodipodi:cx="22"
|
||||
sodipodi:cy="17.090908"
|
||||
sodipodi:r1="20.432512"
|
||||
sodipodi:r2="10.216257"
|
||||
sodipodi:arg1="2.0943951"
|
||||
sodipodi:arg2="3.1415927"
|
||||
inkscape:flatsided="true"
|
||||
inkscape:rounded="0"
|
||||
inkscape:randomized="0"
|
||||
d="m 11.783744,34.785983 0,-35.39014963 30.648768,17.69507463 z"
|
||||
inkscape:transform-center-x="-3.6403036"
|
||||
transform="matrix(0.71264942,0,0,1.1937629,23.115306,6.2604789)" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:27.77797508px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
|
||||
x="10.921829"
|
||||
y="34.558643"
|
||||
id="text3767"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3769"
|
||||
x="10.921829"
|
||||
y="34.558643">A</tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.9 KiB |
136
src/Mod/Arch/Resources/icons/Arch_Site.svg
Normal file
@@ -0,0 +1,136 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg2985"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="New document 2">
|
||||
<defs
|
||||
id="defs2987">
|
||||
<linearGradient
|
||||
id="linearGradient3794">
|
||||
<stop
|
||||
style="stop-color:#ffb400;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3796" />
|
||||
<stop
|
||||
style="stop-color:#ffea00;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3798" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3794"
|
||||
id="linearGradient3867"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="15.184971"
|
||||
y1="23.848686"
|
||||
x2="62.65237"
|
||||
y2="23.848686"
|
||||
gradientTransform="matrix(0.92896931,0,0,0.80145713,1.8407177,4.4432252)" />
|
||||
<linearGradient
|
||||
id="linearGradient3794-8">
|
||||
<stop
|
||||
style="stop-color:#ffb400;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3796-5" />
|
||||
<stop
|
||||
style="stop-color:#ffea00;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3798-8" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
y2="23.848686"
|
||||
x2="62.65237"
|
||||
y1="23.848686"
|
||||
x1="15.184971"
|
||||
gradientTransform="matrix(1.0265568,0,0,0.91490626,-3.236706,-1.8027032)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient3886"
|
||||
xlink:href="#linearGradient3794-8"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
id="linearGradient3794-1">
|
||||
<stop
|
||||
style="stop-color:#ffb400;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3796-2" />
|
||||
<stop
|
||||
style="stop-color:#ffea00;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3798-2" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
y2="23.848686"
|
||||
x2="62.65237"
|
||||
y1="23.848686"
|
||||
x1="15.184971"
|
||||
gradientTransform="matrix(1.0265568,0,0,0.91490626,-3.236706,-1.8027032)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient3886-0"
|
||||
xlink:href="#linearGradient3794-1"
|
||||
inkscape:collect="always" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.75"
|
||||
inkscape:cx="50.185459"
|
||||
inkscape:cy="23.846694"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="758"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="19"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata2990">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
style="color:#000000;fill:#ffeb3e;fill-opacity:1;fill-rule:nonzero;stroke:#372c0f;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="M 5.290092,41.532146 29.48946,51.555569 29.605803,57.074081 5.5227783,46.938037 z"
|
||||
id="path3904"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="color:#000000;fill:#b04a02;fill-opacity:1;fill-rule:nonzero;stroke:#37200f;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="M 59.505985,12.362862 59.040612,34.436915 29.605803,56.961459 29.48946,51.555569 40.774743,13.93958 z"
|
||||
id="path3869"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:url(#linearGradient3867);fill-opacity:1;stroke:#372c0f;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 36.502887,6.446868 -11.089572,8.565573 -8.99939,16.029143 0.174181,0.07514 L 5.2082316,41.736027 29.535617,51.654059 40.451006,40.684115 40.857431,40.283386 40.68325,40.208249 49.421367,23.578014 59.581969,12.432751 36.502887,6.446868 z"
|
||||
id="path3763"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.9 KiB |
100
src/Mod/Arch/Resources/icons/Arch_SplitMesh.svg
Normal file
@@ -0,0 +1,100 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg2985"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="Arch_MeshToShape.svg">
|
||||
<defs
|
||||
id="defs2987">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective2993" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.75"
|
||||
inkscape:cx="33.087351"
|
||||
inkscape:cy="35.659354"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="758"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="19"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata2990">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#001100;stroke-width:1.855;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 45.852797,39.834161 -10.677409,-5.924349 0,14.19608 10.547196,6.25969 z"
|
||||
id="path3009-9"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#001100;stroke-width:1.855;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 57.962541,33.630362 45.983009,39.890051 45.852797,54.393528 57.832328,48.161784 z"
|
||||
id="path3009-6-7"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#001100;stroke-width:1.855;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 35.175388,33.853922 47.024707,28.097243 57.929988,33.574472 45.722585,40.1695 z"
|
||||
id="path3029-1"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#001100;stroke-width:1.855;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 18.308475,23.054466 7.537144,17.580668 8.288519,52.952575 18.272184,60.203474 z"
|
||||
id="path3009"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#001100;stroke-width:1.855;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 49.57517,6.9475618 18.070607,23.024239 c 0.02693,12.383706 0.163707,26.009665 0.205464,37.147201 l 11.985432,-6.220404 0.205465,-22.603721 18.971226,-9.878176 z"
|
||||
id="path3009-6"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccc" />
|
||||
<path
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:#001100;stroke-width:1.855;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 7.6310658,17.614886 39.016131,2.3065574 49.545724,6.8826869 18.272185,22.939255 z"
|
||||
id="path3029"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.1 KiB |
187
src/Mod/Arch/Resources/icons/Arch_Structure.svg
Normal file
@@ -0,0 +1,187 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg2985"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="Arch_Structure.svg">
|
||||
<defs
|
||||
id="defs2987">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="-56.67589 : 60.541728 : 1"
|
||||
inkscape:vp_y="0 : 1102.1522 : 0"
|
||||
inkscape:vp_z="125.67018 : 63.747989 : 1"
|
||||
inkscape:persp3d-origin="37.520737 : 35.960393 : 1"
|
||||
id="perspective2993" />
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="-56.67589 : 60.541728 : 1"
|
||||
inkscape:vp_y="0 : 1102.1522 : 0"
|
||||
inkscape:vp_z="125.67018 : 63.747989 : 1"
|
||||
inkscape:persp3d-origin="37.520737 : 35.960393 : 1"
|
||||
id="perspective2993-4" />
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="-46.892514 : 61.217294 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="95.652941 : 64.126385 : 1"
|
||||
inkscape:persp3d-origin="26.74385 : 38.914263 : 1"
|
||||
id="perspective2993-7" />
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="-49.818182 : 58.545455 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="92.727273 : 61.454546 : 1"
|
||||
inkscape:persp3d-origin="23.818182 : 36.242424 : 1"
|
||||
id="perspective2993-3" />
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="-56.67589 : 60.541728 : 1"
|
||||
inkscape:vp_y="0 : 1102.1522 : 0"
|
||||
inkscape:vp_z="125.67018 : 63.747989 : 1"
|
||||
inkscape:persp3d-origin="37.520737 : 35.960393 : 1"
|
||||
id="perspective2993-9" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="7.7781746"
|
||||
inkscape:cx="33.811034"
|
||||
inkscape:cy="31.323654"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="758"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="19"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata2990">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3919"
|
||||
style="color:#000000;fill:#afafde;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 13.798146,54.963468 9.388498,6.861485 8.53344,-5.12696 -9.62057,-5.794341 z" />
|
||||
<path
|
||||
style="fill:#000000;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1;opacity:0.51833333"
|
||||
d="m 13.885006,54.871894 -2.699862,-9.385235 -3.5998167,1.799908 -4.6283353,-2.956992 0,-8.485281 46.283353,-11.699403 -0.128565,10.542319 -9.899495,4.371205 -2.057038,8.999541 -2.571297,-8.099587 -5.913984,3.085557 z"
|
||||
id="path3976"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3921"
|
||||
style="color:#000000;fill:#353564;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 13.798146,23.375496 0,31.587972 8.301368,-4.059816 0,-29.244015 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3923"
|
||||
style="color:#000000;fill:#e9e9ff;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 22.099514,21.659637 9.62057,2.222871 0,32.815485 -9.62057,-5.794341 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3925"
|
||||
style="color:#000000;fill:#774901;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 13.798146,23.375496 9.388498,2.653358 8.53344,-2.146346 -9.62057,-2.222871 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3927"
|
||||
style="color:#000000;fill:#fff14a;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 23.186644,26.028854 0,35.796099 8.53344,-5.12696 0,-32.815485 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3929"
|
||||
style="color:#000000;fill:#ffc900;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 13.798146,23.375496 9.388498,2.653358 0,35.796099 -9.388498,-6.861485 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3939"
|
||||
style="color:#000000;fill:#afafde;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 37.056572,48.22511 9.388501,4.483969 8.482949,-5.616787 -9.162177,-3.582156 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3941"
|
||||
style="color:#000000;fill:#353564;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 37.056572,18.674277 0,29.550833 8.709273,-4.714974 0,-26.646468 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3943"
|
||||
style="color:#000000;fill:#e9e9ff;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 45.765845,16.863668 9.162177,1.198951 0,29.029673 -9.162177,-3.582156 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3945"
|
||||
style="color:#000000;fill:#774901;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 37.056572,18.674277 9.388501,1.524077 8.482949,-2.135735 -9.162177,-1.198951 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3947"
|
||||
style="color:#000000;fill:#fff14a;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 46.445073,20.198354 0,32.510725 8.482949,-5.616787 0,-29.029673 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3949"
|
||||
style="color:#000000;fill:#ffc900;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 37.056572,18.674277 9.388501,1.524077 0,32.510725 -9.388501,-4.483969 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3899"
|
||||
style="color:#000000;fill:#afafde;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="M 2.8666854,22.255584 12.487769,25.292915 61.908304,14.358929 52.014367,13.449446 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3901"
|
||||
style="color:#000000;fill:#353564;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 2.8666854,6.2707377 0,15.9848463 49.1476816,-8.806138 0,-9.5874872 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3903"
|
||||
style="color:#000000;fill:#e9e9ff;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 52.014367,3.8619588 9.893937,0.036747 0,10.4602232 -9.893937,-0.909483 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3905"
|
||||
style="color:#000000;fill:#4d4d9f;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="M 2.8666854,6.2707377 12.487769,6.7251851 61.908304,3.8987059 52.014367,3.8619588 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3907"
|
||||
style="color:#000000;fill:#fff14a;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 12.487769,6.7251851 0,18.5677299 49.420535,-10.933986 0,-10.4602231 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3909"
|
||||
style="color:#000000;fill:#ffc900;fill-opacity:1;fill-rule:evenodd;stroke:#473400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible"
|
||||
d="m 2.8666854,6.2707377 9.6210836,0.4544474 0,18.5677299 -9.6210836,-3.037331 z" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 11 KiB |
279
src/Mod/Arch/Resources/icons/Arch_Wall.svg
Executable file
@@ -0,0 +1,279 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg2816"
|
||||
version="1.1"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="Arch_Wall.svg">
|
||||
<defs
|
||||
id="defs2818">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective2824" />
|
||||
<inkscape:perspective
|
||||
id="perspective3622"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3622-9"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3653"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3675"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3697"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3720"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3742"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3764"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3806"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3806-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3835"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3614"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3614-8"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3643"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3643-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3672"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3672-5"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3701"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3701-8"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.9445436"
|
||||
inkscape:cx="61.084031"
|
||||
inkscape:cy="29.484142"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:bbox-paths="true"
|
||||
inkscape:bbox-nodes="true"
|
||||
inkscape:snap-bbox-edge-midpoints="true"
|
||||
inkscape:snap-bbox-midpoints="true"
|
||||
inkscape:object-paths="true"
|
||||
inkscape:object-nodes="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="758"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="19"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata2821">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<rect
|
||||
style="color:#000000;fill:#aa7200;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.14880727;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect2840-3-4-0-8"
|
||||
width="15.936329"
|
||||
height="12.585408"
|
||||
x="32.997906"
|
||||
y="59.61282"
|
||||
transform="matrix(0.7577145,-0.65258619,0,1,0,0)" />
|
||||
<rect
|
||||
style="color:#000000;fill:#ffaf00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.03287753;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dashoffset:0"
|
||||
id="rect2840"
|
||||
width="24.362967"
|
||||
height="12.482594"
|
||||
x="2.3111296"
|
||||
y="28.888771"
|
||||
transform="matrix(0.93735109,0.34838619,0,1,0,0)" />
|
||||
<rect
|
||||
style="color:#000000;fill:#ffaf00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.03287753;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dashoffset:0"
|
||||
id="rect2840-9"
|
||||
width="24.362967"
|
||||
height="12.482594"
|
||||
x="28.963516"
|
||||
y="28.866888"
|
||||
transform="matrix(0.93735109,0.34838619,0,1,0,0)" />
|
||||
<path
|
||||
style="color:#000000;fill:#ffdd27;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994000000003;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
d="M 14.241527,19.294108 37.07818,27.781829 25.002993,38.181657 2.1663398,29.693936 14.241527,19.294108 z"
|
||||
id="rect2840-3-5-3-5"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#ffdd27;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994000000003;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
d="M 39.224174,28.454727 62.060827,36.942448 49.98564,47.342276 27.148987,38.854555 39.224174,28.454727 z"
|
||||
id="rect2840-3-5-3"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#000000;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;opacity:0.60305344"
|
||||
d="m 39.510988,41.014833 13.307194,-1.651197 4.898989,-4.035599 -20.638992,-7.649023 -8.324649,7.169655 10.757458,6.166164 z"
|
||||
id="path3849"
|
||||
sodipodi:nodetypes="cccccc" />
|
||||
<rect
|
||||
style="color:#000000;fill:#ffaf00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.03287752999999993;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dashoffset:0"
|
||||
id="rect2840-3"
|
||||
width="24.362967"
|
||||
height="12.482594"
|
||||
x="17.78878"
|
||||
y="13.847153"
|
||||
transform="matrix(0.93735109,0.34838619,0,1,0,0)" />
|
||||
<rect
|
||||
style="color:#000000;fill:#aa7200;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.14880727;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dashoffset:0"
|
||||
id="rect2840-3-4"
|
||||
width="15.936329"
|
||||
height="12.585408"
|
||||
x="65.968956"
|
||||
y="90.392708"
|
||||
transform="matrix(0.7577145,-0.65258619,0,1,0,0)" />
|
||||
<rect
|
||||
style="color:#000000;fill:#aa7200;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.14880727000000005;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dashoffset:0"
|
||||
id="rect2840-3-4-0"
|
||||
width="15.936329"
|
||||
height="12.585408"
|
||||
x="52.144951"
|
||||
y="62.458496"
|
||||
transform="matrix(0.7577145,-0.65258619,0,1,0,0)" />
|
||||
<path
|
||||
style="color:#000000;fill:#ffdd27;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994000000003;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
d="M 28.74952,9.541872 51.586172,18.029593 39.510985,28.429421 16.674332,19.9417 28.74952,9.541872 z"
|
||||
id="rect2840-3-5"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
494
src/Mod/Arch/Resources/icons/Arch_Window.svg
Normal file
@@ -0,0 +1,494 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg2816"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="Arch_Window.svg">
|
||||
<defs
|
||||
id="defs2818">
|
||||
<linearGradient
|
||||
id="linearGradient3633">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3635" />
|
||||
<stop
|
||||
style="stop-color:#ffbf00;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3637" />
|
||||
</linearGradient>
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective2824" />
|
||||
<inkscape:perspective
|
||||
id="perspective3622"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3622-9"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3653"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3675"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3697"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3720"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3742"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3764"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3806"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3806-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3835"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3614"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3614-8"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3643"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3643-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3672"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3672-5"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3701"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3701-8"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3746"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
patternTransform="matrix(0.67643728,-0.81829155,2.4578314,1.8844554,-26.450606,18.294947)"
|
||||
id="pattern5231"
|
||||
xlink:href="#Strips1_1-4"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5224"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-4"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-4"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<inkscape:perspective
|
||||
id="perspective5224-9"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,39.618381,8.9692804)"
|
||||
id="pattern5231-4"
|
||||
xlink:href="#Strips1_1-6"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5224-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-6"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-0"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<pattern
|
||||
patternTransform="matrix(0.66513382,-1.0631299,2.4167603,2.4482973,-49.762569,2.9546807)"
|
||||
id="pattern5296"
|
||||
xlink:href="#pattern5231-3"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5288"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,-26.336284,10.887197)"
|
||||
id="pattern5231-3"
|
||||
xlink:href="#Strips1_1-4-3"
|
||||
inkscape:collect="always" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-4-3"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-4-6"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<pattern
|
||||
patternTransform="matrix(0.42844886,-0.62155849,1.5567667,1.431396,27.948414,13.306456)"
|
||||
id="pattern5330"
|
||||
xlink:href="#Strips1_1-9"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective5323"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<pattern
|
||||
inkscape:stockid="Stripes 1:1"
|
||||
id="Strips1_1-9"
|
||||
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
|
||||
height="1"
|
||||
width="2"
|
||||
patternUnits="userSpaceOnUse"
|
||||
inkscape:collect="always">
|
||||
<rect
|
||||
id="rect4483-3"
|
||||
height="2"
|
||||
width="1"
|
||||
y="-0.5"
|
||||
x="0"
|
||||
style="fill:black;stroke:none" />
|
||||
</pattern>
|
||||
<inkscape:perspective
|
||||
id="perspective5361"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective5383"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective5411"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785-6"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785-1"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785-67"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785-8"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3848"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3869"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3894"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="3.8890872"
|
||||
inkscape:cx="51.039536"
|
||||
inkscape:cy="24.707156"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:bbox-paths="true"
|
||||
inkscape:bbox-nodes="true"
|
||||
inkscape:snap-bbox-edge-midpoints="true"
|
||||
inkscape:snap-bbox-midpoints="true"
|
||||
inkscape:object-paths="true"
|
||||
inkscape:object-nodes="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="756"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="22"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-global="true" />
|
||||
<metadata
|
||||
id="metadata2821">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
style="opacity:0.45833333;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 4.1875,15.75 0.25,24.21875 3.8125,9.15625 51,9.28125 L 42.71875,24.375 16,17.53125 19.8125,25.09375 10.09375,23.375 4.1875,15.75 z m 30.71875,8.71875 4.625,1.21875 2.1875,5.46875 -4.34375,0.78125 -2.46875,-7.46875 z m -29,2.5625 15.25,3.9375 4.25,10.28125 0,-0.25 0.125,0.5625 L 25.40625,41.25 10.5,37.3125 5.90625,27.03125 z m 28.75,7.59375 7.71875,2.4375 3.09375,9.1875 -10.875,-2.625 0.0625,-9 z"
|
||||
id="path4173"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="color:#000000;fill:#fff41b;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.86000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 12.533362,30.367309 4.28836,-4.228863 -0.07538,15.362424 -4.212972,3.324228 z"
|
||||
id="path3263-2-5"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#fff41b;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.86000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 12.533366,11.126695 4.28836,-4.2288621 -0.07539,15.3624241 -4.212972,3.324228 z"
|
||||
id="path3263-2"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#fff41b;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.86000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 33.095742,36.161356 4.28836,-4.228863 -0.07538,15.362426 -4.212973,3.324228 z"
|
||||
id="path3263-2-94"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#fff41b;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.86000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 33.095742,16.920743 4.28836,-4.228863 -0.07538,15.362426 -4.212973,3.324228 z"
|
||||
id="path3263-2-9"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#ffd800;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.86000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="M 7.9136234,4.7313784 8.2457616,49.115974 55.047068,61.742625 54.775317,16.128162 7.9136234,4.7313784 z m 4.6197426,6.3953166 16.153999,4.126893 0.181166,14.949738 -16.335165,-4.618841 0,-14.45779 z m 20.56238,5.794048 16.153999,4.126893 0.181165,14.949738 -16.335164,-4.61884 0,-14.457791 z m -20.56238,13.446565 16.153999,4.126893 0.181166,14.949738 -16.335165,-4.618841 0,-14.45779 z m 20.56238,5.794048 16.153999,4.126893 0.181165,14.949737 -16.335164,-4.618839 0,-14.457791 z"
|
||||
id="path3197"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="color:#000000;fill:#5c4500;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.86000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="M 7.9136234,4.7313784 13.67056,2.6484517 59.508485,13.217756 54.775317,16.128162 z"
|
||||
id="path3261"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="color:#000000;fill:#fff41b;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.86000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 54.775317,16.128162 4.733168,-2.910406 -0.248444,45.200642 -4.212973,3.324227 z"
|
||||
id="path3263"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#5c4500;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.86000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 12.533366,25.584485 4.212972,-3.324228 12.064132,3.151922 0.05807,4.791147 z"
|
||||
id="path3261-5"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#5c4500;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.86000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 33.095746,31.378534 4.212973,-3.324228 12.064131,3.151922 0.05806,4.791146 z"
|
||||
id="path3261-5-0"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#5c4500;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.86000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 12.533366,44.825098 4.212972,-3.324228 12.064132,3.151922 0.05807,4.791147 z"
|
||||
id="path3261-5-1"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#5c4500;fill-opacity:1;fill-rule:nonzero;stroke:#1a1200;stroke-width:0.86000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 33.095746,50.619147 4.212973,-3.324228 12.064131,3.151922 0.05806,4.791145 z"
|
||||
id="path3261-5-9"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 21 KiB |
223
src/Mod/Arch/Resources/icons/preferences-arch.svg
Executable file
@@ -0,0 +1,223 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg2816"
|
||||
version="1.1"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="New document 2">
|
||||
<defs
|
||||
id="defs2818">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective2824" />
|
||||
<inkscape:perspective
|
||||
id="perspective3622"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3622-9"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3653"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3675"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3697"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3720"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3742"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3764"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3785"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3806"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3806-3"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3835"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.5"
|
||||
inkscape:cx="33.685487"
|
||||
inkscape:cy="28.119326"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:bbox-paths="true"
|
||||
inkscape:bbox-nodes="true"
|
||||
inkscape:snap-bbox-edge-midpoints="true"
|
||||
inkscape:snap-bbox-midpoints="true"
|
||||
inkscape:object-paths="true"
|
||||
inkscape:object-nodes="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="758"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="19"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata2821">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<rect
|
||||
style="color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.14880729;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect2840-3-4-0-8"
|
||||
width="15.936329"
|
||||
height="12.585408"
|
||||
x="32.997906"
|
||||
y="59.61282"
|
||||
transform="matrix(0.7577145,-0.65258619,0,1,0,0)" />
|
||||
<rect
|
||||
style="color:#000000;fill:#ff7f2a;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.03287753;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dashoffset:0"
|
||||
id="rect2840"
|
||||
width="24.362967"
|
||||
height="12.482594"
|
||||
x="2.3111296"
|
||||
y="28.888771"
|
||||
transform="matrix(0.93735109,0.34838619,0,1,0,0)" />
|
||||
<rect
|
||||
style="color:#000000;fill:#ff7f2a;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.03287753;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dashoffset:0"
|
||||
id="rect2840-9"
|
||||
width="24.362967"
|
||||
height="12.482594"
|
||||
x="28.963516"
|
||||
y="28.866888"
|
||||
transform="matrix(0.93735109,0.34838619,0,1,0,0)" />
|
||||
<path
|
||||
style="color:#000000;fill:#ff9955;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994000000003;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
d="M 14.241527,19.294108 37.07818,27.781829 25.002993,38.181657 2.1663398,29.693936 14.241527,19.294108 z"
|
||||
id="rect2840-3-5-3-5"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#ff9955;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994000000003;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
d="M 39.224174,28.454727 62.060827,36.942448 49.98564,47.342276 27.148987,38.854555 39.224174,28.454727 z"
|
||||
id="rect2840-3-5-3"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#000000;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;opacity:0.60305344"
|
||||
d="m 39.510988,41.014833 13.307194,-1.651197 4.898989,-4.035599 -20.638992,-7.649023 -8.324649,7.169655 10.757458,6.166164 z"
|
||||
id="path3849"
|
||||
sodipodi:nodetypes="cccccc" />
|
||||
<rect
|
||||
style="color:#000000;fill:#ff7f2a;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.03287753;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dashoffset:0"
|
||||
id="rect2840-3"
|
||||
width="24.362967"
|
||||
height="12.482594"
|
||||
x="17.78878"
|
||||
y="13.847153"
|
||||
transform="matrix(0.93735109,0.34838619,0,1,0,0)" />
|
||||
<rect
|
||||
style="color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.14880727000000005;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dashoffset:0"
|
||||
id="rect2840-3-4"
|
||||
width="15.936329"
|
||||
height="12.585408"
|
||||
x="65.968956"
|
||||
y="90.392708"
|
||||
transform="matrix(0.7577145,-0.65258619,0,1,0,0)" />
|
||||
<rect
|
||||
style="color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.14880727;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dashoffset:0"
|
||||
id="rect2840-3-4-0"
|
||||
width="15.936329"
|
||||
height="12.585408"
|
||||
x="52.144951"
|
||||
y="62.458496"
|
||||
transform="matrix(0.7577145,-0.65258619,0,1,0,0)" />
|
||||
<path
|
||||
style="color:#000000;fill:#ff9955;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994000000003;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:butt;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
d="M 28.74952,9.541872 51.586172,18.029593 39.510985,28.429421 16.674332,19.9417 28.74952,9.541872 z"
|
||||
id="rect2840-3-5"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 10 KiB |
136
src/Mod/Arch/Resources/translations/Arch.ts
Normal file
@@ -0,0 +1,136 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS><TS version="1.1">
|
||||
<context>
|
||||
<name>Arch_Add</name>
|
||||
<message>
|
||||
<location filename="Commands.py" line="156"/>
|
||||
<source>Add component</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Commands.py" line="157"/>
|
||||
<source>Adds the selected components to the active object</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Arch_Building</name>
|
||||
<message>
|
||||
<location filename="Building.py" line="47"/>
|
||||
<source>Building</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Building.py" line="49"/>
|
||||
<source>Creates a building object including selected objects.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Arch_Cell</name>
|
||||
<message>
|
||||
<location filename="Cell.py" line="49"/>
|
||||
<source>Cell</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Cell.py" line="51"/>
|
||||
<source>Creates a cell object including selected objects</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Arch_Floor</name>
|
||||
<message>
|
||||
<location filename="Floor.py" line="48"/>
|
||||
<source>Floor</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Floor.py" line="50"/>
|
||||
<source>Creates a floor object including selected objects</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Arch_MeshToPart</name>
|
||||
<message>
|
||||
<location filename="Commands.py" line="215"/>
|
||||
<source>Turns selected meshes into Part Shape objects</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Arch_MeshToShape</name>
|
||||
<message>
|
||||
<location filename="Commands.py" line="214"/>
|
||||
<source>Mesh to Shape</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Arch_Remove</name>
|
||||
<message>
|
||||
<location filename="Commands.py" line="174"/>
|
||||
<source>Remove component</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Commands.py" line="175"/>
|
||||
<source>Remove the selected components from their parents, or create a hole in a component</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Arch_Site</name>
|
||||
<message>
|
||||
<location filename="Site.py" line="45"/>
|
||||
<source>Site</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Site.py" line="47"/>
|
||||
<source>Creates a site object including selected objects.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Arch_SplitMesh</name>
|
||||
<message>
|
||||
<location filename="Commands.py" line="196"/>
|
||||
<source>Split Mesh</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Commands.py" line="197"/>
|
||||
<source>Splits selected meshes into independent components</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Arch_Structure</name>
|
||||
<message>
|
||||
<location filename="Structure.py" line="48"/>
|
||||
<source>Structure</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Structure.py" line="50"/>
|
||||
<source>Creates a structure object from scratch or from a selected object (sketch, wire, face or solid)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Arch_Wall</name>
|
||||
<message>
|
||||
<location filename="Wall.py" line="50"/>
|
||||
<source>Wall</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Wall.py" line="52"/>
|
||||
<source>Creates a wall object from scratch or from a selected object (wire, face or solid)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
151
src/Mod/Arch/Resources/ui/archprefs-base.ui
Normal file
@@ -0,0 +1,151 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Gui::Dialog::DlgSettingsArch</class>
|
||||
<widget class="QWidget" name="Gui::Dialog::DlgSettingsArch">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>575</width>
|
||||
<height>629</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>General settings</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout">
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>9</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
<string>General Arch Settings</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>Default color for walls</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Gui::PrefColorButton" name="gui::prefcolorbutton">
|
||||
<property name="toolTip">
|
||||
<string>This is the default color for new Wall objects</string>
|
||||
</property>
|
||||
<property name="color">
|
||||
<color>
|
||||
<red>255</red>
|
||||
<green>190</green>
|
||||
<blue>170</blue>
|
||||
</color>
|
||||
</property>
|
||||
<property name="prefEntry" stdset="0">
|
||||
<cstring>WallColor</cstring>
|
||||
</property>
|
||||
<property name="prefPath" stdset="0">
|
||||
<cstring>Mod/Arch</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Default color for structures</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Gui::PrefColorButton" name="gui::prefcolorbutton_2">
|
||||
<property name="toolTip">
|
||||
<string>This is the default color for new Structure objects</string>
|
||||
</property>
|
||||
<property name="color">
|
||||
<color>
|
||||
<red>150</red>
|
||||
<green>169</green>
|
||||
<blue>186</blue>
|
||||
</color>
|
||||
</property>
|
||||
<property name="prefEntry" stdset="0">
|
||||
<cstring>StructureColor</cstring>
|
||||
</property>
|
||||
<property name="prefPath" stdset="0">
|
||||
<cstring>Mod/Arch</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>Gui::ColorButton</class>
|
||||
<extends>QPushButton</extends>
|
||||
<header>Gui/Widgets.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>Gui::PrefColorButton</class>
|
||||
<extends>Gui::ColorButton</extends>
|
||||
<header>Gui/PrefWidgets.h</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
127
src/Mod/Arch/SectionPlane.py
Normal file
@@ -0,0 +1,127 @@
|
||||
import FreeCAD,FreeCADGui,Part,Component
|
||||
from FreeCAD import Vector
|
||||
from PyQt4 import QtCore
|
||||
from pivy import coin
|
||||
|
||||
class CommandSectionPlane:
|
||||
"the Arch SectionPlane command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_SectionPlane',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_SectionPlane","Section Plane"),
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_SectionPlane","Adds a section plane object to the document")}
|
||||
|
||||
def Activated(self):
|
||||
FreeCAD.ActiveDocument.openTransaction("Section Plane")
|
||||
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython","Section")
|
||||
SectionPlane(obj)
|
||||
ViewProviderSectionPlane(obj.ViewObject)
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
FreeCAD.ActiveDocument.recompute()
|
||||
|
||||
class SectionPlane:
|
||||
"A section plane object"
|
||||
def __init__(self,obj):
|
||||
obj.Proxy = self
|
||||
self.Type = "Visual Component"
|
||||
|
||||
def execute(self,obj):
|
||||
pl = obj.Placement
|
||||
l = obj.ViewObject.DisplaySize
|
||||
p = Part.makePlane(l,l,Vector(l/2,-l/2,0),Vector(0,0,-1))
|
||||
obj.Shape = p
|
||||
obj.Placement = pl
|
||||
|
||||
class ViewProviderSectionPlane(Component.ViewProviderComponent):
|
||||
"A View Provider for Section Planes"
|
||||
def __init__(self,vobj):
|
||||
vobj.addProperty("App::PropertyLength","DisplaySize","Base",
|
||||
"The display size of the section plane")
|
||||
vobj.DisplaySize = 1
|
||||
vobj.Transparency = 85
|
||||
vobj.LineWidth = 1
|
||||
vobj.LineColor = (0.0,0.0,0.4,1.0)
|
||||
vobj.Proxy = self
|
||||
self.Object = vobj.Object
|
||||
|
||||
def getIcon(self):
|
||||
return """
|
||||
/* XPM */
|
||||
static char * Arch_SectionPlane_xpm[] = {
|
||||
"16 16 3 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #FFFFFF",
|
||||
" ...... ",
|
||||
" ..+++.++.. ",
|
||||
" .+++++..+++. ",
|
||||
" .++++++...+++. ",
|
||||
" .++.+++....++. ",
|
||||
".++.+.++.....++.",
|
||||
".+.+++.+......+.",
|
||||
".+.+++.+........",
|
||||
".+.+++.+........",
|
||||
".+.....+......+.",
|
||||
".+.+++.+.....++.",
|
||||
" .++++++....++. ",
|
||||
" .++++++...+++. ",
|
||||
" .+++++..+++. ",
|
||||
" ..+++.++.. ",
|
||||
" ...... "};
|
||||
"""
|
||||
|
||||
def claimChildren(self):
|
||||
return []
|
||||
|
||||
def attach(self,vobj):
|
||||
self.Object = vobj.Object
|
||||
# adding arrows
|
||||
rn = vobj.RootNode
|
||||
self.col = coin.SoBaseColor()
|
||||
self.setColor()
|
||||
ds = coin.SoDrawStyle()
|
||||
ds.style = coin.SoDrawStyle.LINES
|
||||
self.lcoords = coin.SoCoordinate3()
|
||||
ls = coin.SoLineSet()
|
||||
ls.numVertices.setValues([2,2,2,2])
|
||||
self.mcoords = coin.SoCoordinate3()
|
||||
mk = coin.SoMarkerSet()
|
||||
mk.markerIndex = coin.SoMarkerSet.TRIANGLE_FILLED_5_5
|
||||
pt = coin.SoAnnotation()
|
||||
pt.addChild(self.col)
|
||||
pt.addChild(ds)
|
||||
pt.addChild(self.lcoords)
|
||||
pt.addChild(ls)
|
||||
pt.addChild(self.mcoords)
|
||||
pt.addChild(mk)
|
||||
rn.addChild(pt)
|
||||
self.setVerts()
|
||||
|
||||
def setColor(self):
|
||||
print self.Object.ViewObject.LineColor
|
||||
self.col.rgb.setValue(self.Object.ViewObject.LineColor[0],
|
||||
self.Object.ViewObject.LineColor[1],
|
||||
self.Object.ViewObject.LineColor[2])
|
||||
|
||||
def setVerts(self):
|
||||
hd = self.Object.ViewObject.DisplaySize/2
|
||||
verts = []
|
||||
verts.extend([[-hd,-hd,0],[-hd,-hd,-hd/3]])
|
||||
verts.extend([[hd,-hd,0],[hd,-hd,-hd/3]])
|
||||
verts.extend([[hd,hd,0],[hd,hd,-hd/3]])
|
||||
verts.extend([[-hd,hd,0],[-hd,hd,-hd/3]])
|
||||
self.lcoords.point.setValues(0,8,verts)
|
||||
self.mcoords.point.setValues(0,4,[verts[1],verts[3],verts[5],verts[7]])
|
||||
|
||||
def updateData(self,obj,prop):
|
||||
if prop in ["Shape","Placement"]:
|
||||
self.setVerts()
|
||||
return
|
||||
|
||||
def onChanged(self,vobj,prop):
|
||||
if prop == "LineColor":
|
||||
self.setColor()
|
||||
elif prop == "DisplaySize":
|
||||
vobj.Object.Proxy.execute(vobj.Object)
|
||||
return
|
||||
|
||||
FreeCADGui.addCommand('Arch_SectionPlane',CommandSectionPlane())
|
||||
103
src/Mod/Arch/Site.py
Normal file
@@ -0,0 +1,103 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* as published by the Free Software Foundation; either version 2 of *
|
||||
#* the License, or (at your option) any later version. *
|
||||
#* for detail see the LICENCE text file. *
|
||||
#* *
|
||||
#* This program is distributed in the hope that it will be useful, *
|
||||
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
#* GNU Library General Public License for more details. *
|
||||
#* *
|
||||
#* You should have received a copy of the GNU Library General Public *
|
||||
#* License along with this program; if not, write to the Free Software *
|
||||
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
#* USA *
|
||||
#* *
|
||||
#***************************************************************************
|
||||
|
||||
import Cell,FreeCAD,FreeCADGui
|
||||
from PyQt4 import QtCore
|
||||
|
||||
__title__="FreeCAD Site"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
def makeSite(objectslist,name="Site"):
|
||||
'''makeBuilding(objectslist): creates a site including the
|
||||
objects from the given list.'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
|
||||
Site(obj)
|
||||
ViewProviderSite(obj.ViewObject)
|
||||
obj.Components = objectslist
|
||||
obj.JoinMode = False
|
||||
return obj
|
||||
|
||||
class CommandSite:
|
||||
"the Arch Site command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_Site',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_Site","Site"),
|
||||
'Accel': "S, I",
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Site","Creates a site object including selected objects.")}
|
||||
|
||||
def Activated(self):
|
||||
FreeCAD.ActiveDocument.openTransaction("Site")
|
||||
makeSite(FreeCADGui.Selection.getSelection())
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
|
||||
class Site(Cell.Cell):
|
||||
"The Site object"
|
||||
def __init__(self,obj):
|
||||
Cell.Cell.__init__(self,obj)
|
||||
self.Type = "Site"
|
||||
|
||||
def execute(self,obj):
|
||||
pass
|
||||
|
||||
def onChanged(self,obj,prop):
|
||||
pass
|
||||
|
||||
class ViewProviderSite(Cell.ViewProviderCell):
|
||||
"A View Provider for the Site object"
|
||||
def __init__(self,vobj):
|
||||
Cell.ViewProviderCell.__init__(self,vobj)
|
||||
|
||||
def getIcon(self):
|
||||
return """
|
||||
/* XPM */
|
||||
static char * Arch_Site_xpm[] = {
|
||||
"16 16 9 1",
|
||||
" c None",
|
||||
". c #49370C",
|
||||
"+ c #204F0E",
|
||||
"@ c #535219",
|
||||
"# c #6F551D",
|
||||
"$ c #127210",
|
||||
"% c #049512",
|
||||
"& c #08BD16",
|
||||
"* c #00EB1B",
|
||||
" +$++ ",
|
||||
" $%%%$++++",
|
||||
" $&&%%$$$+@",
|
||||
" $&&&%%$$+@.",
|
||||
" &&&&%%$$+#.",
|
||||
" $*&&&%%$+##.",
|
||||
" &*&&&%%$@##.",
|
||||
" %**&&&%%+###.",
|
||||
" %***&&&%$@###.",
|
||||
" %****&&&%+##. ",
|
||||
"+&****&&&$@#. ",
|
||||
".#+%&*&&$@#. ",
|
||||
" ..#@$%$@#. ",
|
||||
" ..#@@. ",
|
||||
" .. ",
|
||||
" "};
|
||||
"""
|
||||
|
||||
FreeCADGui.addCommand('Arch_Site',CommandSite())
|
||||
185
src/Mod/Arch/Structure.py
Normal file
@@ -0,0 +1,185 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* as published by the Free Software Foundation; either version 2 of *
|
||||
#* the License, or (at your option) any later version. *
|
||||
#* for detail see the LICENCE text file. *
|
||||
#* *
|
||||
#* This program is distributed in the hope that it will be useful, *
|
||||
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
#* GNU Library General Public License for more details. *
|
||||
#* *
|
||||
#* You should have received a copy of the GNU Library General Public *
|
||||
#* License along with this program; if not, write to the Free Software *
|
||||
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
#* USA *
|
||||
#* *
|
||||
#***************************************************************************
|
||||
|
||||
import FreeCAD,FreeCADGui,Part,Draft,Component
|
||||
from draftlibs import fcgeo,fcvec
|
||||
from FreeCAD import Vector
|
||||
from PyQt4 import QtCore
|
||||
|
||||
__title__="FreeCAD Structure"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
def makeStructure(baseobj=None,length=None,width=None,height=None,name="Structure"):
|
||||
'''makeStructure([obj],[length],[width],[heigth],[swap]): creates a
|
||||
structure element based on the given profile object and the given
|
||||
extrusion height. If no base object is given, you can also specify
|
||||
length and width for a cubic object.'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
|
||||
Structure(obj)
|
||||
ViewProviderStructure(obj.ViewObject)
|
||||
if baseobj: obj.Base = baseobj
|
||||
if length: obj.Length = length
|
||||
if width: obj.Width = width
|
||||
if height: obj.Height = height
|
||||
if obj.Base:
|
||||
obj.Base.ViewObject.hide()
|
||||
else:
|
||||
if (not obj.Width) and (not obj.Length):
|
||||
obj.Width = 1
|
||||
obj.Height = 1
|
||||
p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch")
|
||||
c = p.GetUnsigned("StructureColor")
|
||||
r = float((c>>24)&0xFF)/255.0
|
||||
g = float((c>>16)&0xFF)/255.0
|
||||
b = float((c>>8)&0xFF)/255.0
|
||||
obj.ViewObject.ShapeColor = (r,g,b,1.0)
|
||||
return obj
|
||||
|
||||
class CommandStructure:
|
||||
"the Arch Structure command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_Structure',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_Structure","Structure"),
|
||||
'Accel': "S, T",
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Structure","Creates a structure object from scratch or from a selected object (sketch, wire, face or solid)")}
|
||||
|
||||
def Activated(self):
|
||||
sel = FreeCADGui.Selection.getSelection()
|
||||
if sel:
|
||||
FreeCAD.ActiveDocument.openTransaction("Structure")
|
||||
for obj in sel:
|
||||
makeStructure(obj)
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
else:
|
||||
makeStructure()
|
||||
|
||||
class Structure(Component.Component):
|
||||
"The Structure object"
|
||||
def __init__(self,obj):
|
||||
Component.Component.__init__(self,obj)
|
||||
obj.addProperty("App::PropertyLength","Length","Base",
|
||||
"The length of this element, if not based on a profile")
|
||||
obj.addProperty("App::PropertyLength","Width","Base",
|
||||
"The width of this element, if not based on a profile")
|
||||
obj.addProperty("App::PropertyLength","Height","Base",
|
||||
"The height or extrusion depth of this element. Keep 0 for automatic")
|
||||
self.Type = "Structure"
|
||||
|
||||
def execute(self,obj):
|
||||
self.createGeometry(obj)
|
||||
|
||||
def onChanged(self,obj,prop):
|
||||
if prop in ["Base","Length","Width","Height","Normal","Additions","Subtractions"]:
|
||||
self.createGeometry(obj)
|
||||
|
||||
def createGeometry(self,obj):
|
||||
# getting default values
|
||||
height = normal = None
|
||||
if obj.Length:
|
||||
length = obj.Length
|
||||
else:
|
||||
length = 1
|
||||
if obj.Width:
|
||||
width = obj.Width
|
||||
else:
|
||||
width = 1
|
||||
if obj.Height:
|
||||
height = obj.Height
|
||||
else:
|
||||
for p in obj.InList:
|
||||
if Draft.getType(p) == "Floor":
|
||||
height = p.Height
|
||||
if not height: height = 1
|
||||
if obj.Normal == Vector(0,0,0):
|
||||
normal = Vector(0,0,1)
|
||||
else:
|
||||
normal = Vector(obj.Normal)
|
||||
|
||||
# creating shape
|
||||
pl = obj.Placement
|
||||
norm = normal.multiply(height)
|
||||
base = None
|
||||
if obj.Base:
|
||||
if obj.Base.isDerivedFrom("Part::Feature"):
|
||||
base = obj.Base.Shape.copy()
|
||||
if base.Solids:
|
||||
pass
|
||||
elif base.Faces:
|
||||
base = base.extrude(normal)
|
||||
elif (len(base.Wires) == 1) and base.Wires[0].isClosed():
|
||||
base = Part.Face(base.Wires[0])
|
||||
base = base.extrude(normal)
|
||||
else:
|
||||
l2 = length/2 or 0.5
|
||||
w2 = width/2 or 0.5
|
||||
v1 = Vector(-l2,-w2,0)
|
||||
v2 = Vector(l2,-w2,0)
|
||||
v3 = Vector(l2,w2,0)
|
||||
v4 = Vector(-l2,w2,0)
|
||||
base = Part.makePolygon([v1,v2,v3,v4,v1])
|
||||
base = Part.Face(base)
|
||||
base = base.extrude(normal)
|
||||
if base:
|
||||
obj.Shape = base
|
||||
if not fcgeo.isNull(pl): obj.Placement = pl
|
||||
|
||||
class ViewProviderStructure(Component.ViewProviderComponent):
|
||||
"A View Provider for the Structure object"
|
||||
|
||||
def __init__(self,vobj):
|
||||
Component.ViewProviderComponent.__init__(self,vobj)
|
||||
|
||||
def getIcon(self):
|
||||
return """
|
||||
/* XPM */
|
||||
static char * Arch_Structure_xpm[] = {
|
||||
"16 16 9 1",
|
||||
" c None",
|
||||
". c #2A303B",
|
||||
"+ c #484F58",
|
||||
"@ c #506573",
|
||||
"# c #617887",
|
||||
"$ c #7A98A6",
|
||||
"% c #A5A4A8",
|
||||
"& c #C1C5C5",
|
||||
"* c #ECEEEB",
|
||||
"......++++@##%%@",
|
||||
"@$@************%",
|
||||
"@$@************%",
|
||||
"@$@********&%#+ ",
|
||||
"@$@****%%@+.%% ",
|
||||
".@+%#+.+ @$@*& ",
|
||||
" #$+*% @$@*& ",
|
||||
" #$@*% @$@*& ",
|
||||
" #$@*% @$@*& ",
|
||||
" #$@*% @$@*& ",
|
||||
" #$@*% @$@*& ",
|
||||
" #$@*% @$@*& ",
|
||||
" #$@*% .@#%+ ",
|
||||
" #$@*% . ",
|
||||
" +#@*@ ",
|
||||
" .++ "};
|
||||
"""
|
||||
|
||||
FreeCADGui.addCommand('Arch_Structure',CommandStructure())
|
||||
221
src/Mod/Arch/Wall.py
Executable file
@@ -0,0 +1,221 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* as published by the Free Software Foundation; either version 2 of *
|
||||
#* the License, or (at your option) any later version. *
|
||||
#* for detail see the LICENCE text file. *
|
||||
#* *
|
||||
#* This program is distributed in the hope that it will be useful, *
|
||||
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
#* GNU Library General Public License for more details. *
|
||||
#* *
|
||||
#* You should have received a copy of the GNU Library General Public *
|
||||
#* License along with this program; if not, write to the Free Software *
|
||||
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
#* USA *
|
||||
#* *
|
||||
#***************************************************************************
|
||||
|
||||
import FreeCAD,FreeCADGui,Part,Draft,Component
|
||||
from draftlibs import fcgeo,fcvec
|
||||
from FreeCAD import Vector
|
||||
from PyQt4 import QtCore
|
||||
|
||||
__title__="FreeCAD Wall"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
def makeWall(baseobj=None,width=None,height=None,align="Center",name="Wall"):
|
||||
'''makeWall(obj,[width],[height],[align],[name]): creates a wall based on the
|
||||
given object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
|
||||
Wall(obj)
|
||||
ViewProviderWall(obj.ViewObject)
|
||||
if baseobj: obj.Base = baseobj
|
||||
if width: obj.Width = width
|
||||
if height: obj.Height = height
|
||||
obj.Align = align
|
||||
if obj.Base: obj.Base.ViewObject.hide()
|
||||
p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch")
|
||||
c = p.GetUnsigned("WallColor")
|
||||
r = float((c>>24)&0xFF)/255.0
|
||||
g = float((c>>16)&0xFF)/255.0
|
||||
b = float((c>>8)&0xFF)/255.0
|
||||
obj.ViewObject.ShapeColor = (r,g,b,1.0)
|
||||
return obj
|
||||
|
||||
class CommandWall:
|
||||
"the Arch Wall command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_Wall',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_Wall","Wall"),
|
||||
'Accel': "W, A",
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Wall","Creates a wall object from scratch or from a selected object (wire, face or solid)")}
|
||||
|
||||
def Activated(self):
|
||||
sel = FreeCADGui.Selection.getSelection()
|
||||
if sel:
|
||||
FreeCAD.ActiveDocument.openTransaction("Wall")
|
||||
for obj in sel:
|
||||
makeWall(obj)
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
else:
|
||||
wall = makeWall()
|
||||
|
||||
class Wall(Component.Component):
|
||||
"The Wall object"
|
||||
def __init__(self,obj):
|
||||
Component.Component.__init__(self,obj)
|
||||
obj.addProperty("App::PropertyLength","Width","Base",
|
||||
"The width of this wall. Not used if this wall is based on a face")
|
||||
obj.addProperty("App::PropertyLength","Height","Base",
|
||||
"The height of this wall. Keep 0 for automatic. Not used if this wall is based on a solid")
|
||||
obj.addProperty("App::PropertyLength","Length","Base",
|
||||
"The length of this wall. Not used if this wall is based on a shape")
|
||||
obj.addProperty("App::PropertyEnumeration","Align","Base",
|
||||
"The alignment of this wall on its base object, if applicable")
|
||||
obj.Align = ['Left','Right','Center']
|
||||
self.Type = "Wall"
|
||||
obj.Width = 0.1
|
||||
obj.Length = 1
|
||||
obj.Height = 0
|
||||
|
||||
def execute(self,obj):
|
||||
self.createGeometry(obj)
|
||||
|
||||
def onChanged(self,obj,prop):
|
||||
if prop in ["Base","Height","Width","Align","Additions","Subtractions"]:
|
||||
self.createGeometry(obj)
|
||||
|
||||
def createGeometry(self,obj):
|
||||
|
||||
def getbase(wire):
|
||||
"returns a full shape from a base wire"
|
||||
dvec = fcgeo.vec(wire.Edges[0]).cross(normal)
|
||||
dvec.normalize()
|
||||
if obj.Align == "Left":
|
||||
dvec = dvec.multiply(obj.Width)
|
||||
w2 = fcgeo.offsetWire(wire,dvec)
|
||||
sh = fcgeo.bind(wire,w2)
|
||||
elif obj.Align == "Right":
|
||||
dvec = dvec.multiply(obj.Width)
|
||||
dvec = fcvec.neg(dvec)
|
||||
w2 = fcgeo.offsetWire(wire,dvec)
|
||||
sh = fcgeo.bind(wire,w2)
|
||||
elif obj.Align == "Center":
|
||||
dvec = dvec.multiply(obj.Width/2)
|
||||
w1 = fcgeo.offsetWire(wire,dvec)
|
||||
dvec = fcvec.neg(dvec)
|
||||
w2 = fcgeo.offsetWire(wire,dvec)
|
||||
sh = fcgeo.bind(w1,w2)
|
||||
if height:
|
||||
norm = Vector(normal).multiply(height)
|
||||
sh = sh.extrude(norm)
|
||||
return sh
|
||||
|
||||
pl = obj.Placement
|
||||
|
||||
# getting default values
|
||||
height = normal = None
|
||||
if obj.Height:
|
||||
height = obj.Height
|
||||
else:
|
||||
for p in obj.InList:
|
||||
if Draft.getType(p) == "Floor":
|
||||
height = p.Height
|
||||
if not height: height = 1
|
||||
if obj.Normal == Vector(0,0,0):
|
||||
normal = Vector(0,0,1)
|
||||
else:
|
||||
normal = Vector(obj.Normal)
|
||||
|
||||
# computing shape
|
||||
if obj.Base:
|
||||
if obj.Base.isDerivedFrom("Part::Feature"):
|
||||
base = obj.Base.Shape.copy()
|
||||
if base.Solids:
|
||||
pass
|
||||
elif base.Faces:
|
||||
if height:
|
||||
norm = normal.multiply(height)
|
||||
base = base.extrude(norm)
|
||||
elif base.Wires:
|
||||
temp = None
|
||||
for wire in obj.Base.Shape.Wires:
|
||||
sh = getbase(wire)
|
||||
if temp:
|
||||
temp = temp.oldFuse(sh)
|
||||
else:
|
||||
temp = sh
|
||||
base = temp
|
||||
else:
|
||||
if obj.Length == 0:
|
||||
return
|
||||
v1 = Vector(0,0,0)
|
||||
v2 = Vector(obj.Length,0,0)
|
||||
w = Part.Wire(Part.Line(v1,v2).toShape())
|
||||
base = getbase(w)
|
||||
|
||||
for app in obj.Additions:
|
||||
base = base.oldFuse(app.Shape)
|
||||
app.ViewObject.hide() #to be removed
|
||||
for hole in obj.Subtractions:
|
||||
cut = False
|
||||
if hasattr(hole,"Proxy"):
|
||||
if hasattr(hole.Proxy,"Subvolume"):
|
||||
if hole.Proxy.Subvolume:
|
||||
print "cutting subvolume",hole.Proxy.Subvolume
|
||||
base = base.cut(hole.Proxy.Subvolume)
|
||||
cut = True
|
||||
if not cut:
|
||||
if hasattr(obj,"Shape"):
|
||||
base = base.cut(hole.Shape)
|
||||
hole.ViewObject.hide() # to be removed
|
||||
obj.Shape = base
|
||||
if not fcgeo.isNull(pl):
|
||||
obj.Placement = pl
|
||||
|
||||
class ViewProviderWall(Component.ViewProviderComponent):
|
||||
"A View Provider for the Wall object"
|
||||
|
||||
def __init__(self,vobj):
|
||||
Component.ViewProviderComponent.__init__(self,vobj)
|
||||
|
||||
def getIcon(self):
|
||||
return """
|
||||
/* XPM */
|
||||
static char * Arch_Wall_xpm[] = {
|
||||
"16 16 9 1",
|
||||
" c None",
|
||||
". c #543016",
|
||||
"+ c #6D2F08",
|
||||
"@ c #954109",
|
||||
"# c #874C24",
|
||||
"$ c #AE6331",
|
||||
"% c #C86423",
|
||||
"& c #FD7C26",
|
||||
"* c #F5924F",
|
||||
" ",
|
||||
" ",
|
||||
" # ",
|
||||
" ***$# ",
|
||||
" .*******. ",
|
||||
" *##$****#+ ",
|
||||
" #**%&&##$#@@ ",
|
||||
".$**%&&&&+@@+ ",
|
||||
"@&@#$$%&&@@+.. ",
|
||||
"@&&&%#.#$#+..#$.",
|
||||
" %&&&&+%#.$**$@+",
|
||||
" @%&+&&&$##@@+",
|
||||
" @.&&&&&@@@ ",
|
||||
" @%&&@@ ",
|
||||
" @+ ",
|
||||
" "};
|
||||
"""
|
||||
|
||||
FreeCADGui.addCommand('Arch_Wall',CommandWall())
|
||||
144
src/Mod/Arch/Window.py
Normal file
@@ -0,0 +1,144 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* as published by the Free Software Foundation; either version 2 of *
|
||||
#* the License, or (at your option) any later version. *
|
||||
#* for detail see the LICENCE text file. *
|
||||
#* *
|
||||
#* This program is distributed in the hope that it will be useful, *
|
||||
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
#* GNU Library General Public License for more details. *
|
||||
#* *
|
||||
#* You should have received a copy of the GNU Library General Public *
|
||||
#* License along with this program; if not, write to the Free Software *
|
||||
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
#* USA *
|
||||
#* *
|
||||
#***************************************************************************
|
||||
|
||||
import FreeCAD,FreeCADGui,Part,Draft,Component
|
||||
from draftlibs import fcgeo,fcvec
|
||||
from FreeCAD import Vector
|
||||
from PyQt4 import QtCore
|
||||
|
||||
__title__="FreeCAD Wall"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
def makeWindow(baseobj=None,name="Window"):
|
||||
'''makeWindow(obj,[name]): creates a window based on the
|
||||
given object'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
|
||||
Window(obj)
|
||||
ViewProviderWindow(obj.ViewObject)
|
||||
if baseobj: obj.Base = baseobj
|
||||
if obj.Base: obj.Base.ViewObject.hide()
|
||||
#p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch")
|
||||
#c = p.GetUnsigned("WindowColor")
|
||||
#r = float((c>>24)&0xFF)/255.0
|
||||
#g = float((c>>16)&0xFF)/255.0
|
||||
#b = float((c>>8)&0xFF)/255.0
|
||||
#obj.ViewObject.ShapeColor = (r,g,b,1.0)
|
||||
return obj
|
||||
|
||||
class CommandWindow:
|
||||
"the Arch Window command definition"
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Arch_Window',
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Arch_Window","Window"),
|
||||
'Accel': "W, A",
|
||||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Window","Creates a window object from scratch or from a selected object (wire, rectangle or sketch)")}
|
||||
|
||||
def Activated(self):
|
||||
sel = FreeCADGui.Selection.getSelection()
|
||||
FreeCAD.ActiveDocument.openTransaction("Window")
|
||||
if sel:
|
||||
for obj in sel:
|
||||
makeWindow(obj)
|
||||
else:
|
||||
rect = Draft.makeRectangle(1,1)
|
||||
makeWindow(rect)
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
|
||||
class Window(Component.Component):
|
||||
"The Window object"
|
||||
def __init__(self,obj):
|
||||
Component.Component.__init__(self,obj)
|
||||
obj.addProperty("App::PropertyFloat","Thickness","Base",
|
||||
"the thickness to be associated with the wire of the Base object")
|
||||
#obj.addProperty("App::PropertyLink","Support","Base",
|
||||
# "The support object (wall usually) of this window")
|
||||
#obj.addProperty("App::PropertyLength","Jamb","Base",
|
||||
# "The distance between the window and the exterior face of its supporting object")
|
||||
#obj.addProperty("Part::PropertyPartShape","Subvolume","Base",
|
||||
# "the volume to be subtracted when inserting this window into its support")
|
||||
self.Type = "Window"
|
||||
obj.Thickness = .1
|
||||
|
||||
def execute(self,obj):
|
||||
self.createGeometry(obj)
|
||||
|
||||
def onChanged(self,obj,prop):
|
||||
if prop in ["Base","Thickness"]:
|
||||
self.createGeometry(obj)
|
||||
|
||||
def createGeometry(self,obj):
|
||||
pl = obj.Placement
|
||||
if obj.Base:
|
||||
if obj.Base.isDerivedFrom("Part::Feature"):
|
||||
if obj.Base.Shape.Wires:
|
||||
basewire = obj.Base.Shape.Wires[0]
|
||||
if obj.Thickness:
|
||||
offwire = basewire.makeOffset(-obj.Thickness)
|
||||
f1 = Part.Face(basewire)
|
||||
f2 = Part.Face(offwire)
|
||||
bf = f1.cut(f2)
|
||||
sh = bf.extrude(Vector(0,0,obj.Thickness))
|
||||
obj.Shape = sh
|
||||
f1.translate(Vector(0,0,-.5))
|
||||
svol = f1.extrude(Vector(0,0,1))
|
||||
self.Subvolume = svol
|
||||
if not fcgeo.isNull(pl):
|
||||
obj.Placement = pl
|
||||
self.Subvolume.Placement = pl
|
||||
|
||||
class ViewProviderWindow(Component.ViewProviderComponent):
|
||||
"A View Provider for the Window object"
|
||||
|
||||
def __init__(self,vobj):
|
||||
Component.ViewProviderComponent.__init__(self,vobj)
|
||||
|
||||
def getIcon(self):
|
||||
return """
|
||||
/* XPM */
|
||||
static char * Arch_Window_xpm[] = {
|
||||
"16 16 5 1",
|
||||
" c None",
|
||||
". c #0E0A00",
|
||||
"+ c #9B8A61",
|
||||
"@ c #C6B287",
|
||||
"# c #FEFFF8",
|
||||
" ",
|
||||
" ...... ",
|
||||
" ####+...... ",
|
||||
" #+. #####..... ",
|
||||
" #+. @#@####++ ",
|
||||
" #+. ## #++ ",
|
||||
" #.....## #++ ",
|
||||
" ####+.#....#+@ ",
|
||||
" #+. +###+..++@ ",
|
||||
" #+. @#+@###+@ ",
|
||||
" #... ## #+@ ",
|
||||
" #+....#+ #+@ ",
|
||||
" ####+#....#+@ ",
|
||||
" @####..@+@ ",
|
||||
" @###++ ",
|
||||
" . "};
|
||||
"""
|
||||
|
||||
FreeCADGui.addCommand('Arch_Window',CommandWindow())
|
||||
3
src/Mod/Arch/arch.dox
Normal file
@@ -0,0 +1,3 @@
|
||||
/** \defgroup ARCH Arch
|
||||
* \ingroup WORKBENCHES */
|
||||
|
||||
447
src/Mod/Arch/ifcReader.py
Executable file
@@ -0,0 +1,447 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre, Marijn van Aerle *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* as published by the Free Software Foundation; either version 2 of *
|
||||
#* the License, or (at your option) any later version. *
|
||||
#* for detail see the LICENCE text file. *
|
||||
#* *
|
||||
#* This program is distributed in the hope that it will be useful, *
|
||||
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
#* GNU Library General Public License for more details. *
|
||||
#* *
|
||||
#* You should have received a copy of the GNU Library General Public *
|
||||
#* License along with this program; if not, write to the Free Software *
|
||||
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
#* USA *
|
||||
#* *
|
||||
#***************************************************************************
|
||||
|
||||
import os, re, copy
|
||||
|
||||
__title__="FreeCAD IFC parser"
|
||||
__author__ = "Yorik van Havre, Marijn van Aerle"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
'''
|
||||
FreeCAD IFC parser, by Yorik van Havre, based on work by Marijn van Aerle
|
||||
|
||||
Usage:
|
||||
import ifcReader
|
||||
ifcdoc = ifcReader.IfcDocument("path/to/file.ifc")
|
||||
print ifcdoc.Entities
|
||||
myent = ifcdoc.Entities[20] # returns one entity
|
||||
myent = ifcdoc.getEnt(20) # alternative way
|
||||
polylines = ifcdoc.getEnt("IFCPOLYLINE") # returns a list
|
||||
print myent.attributes
|
||||
|
||||
The ifc document contains a list of entities, that can be retrieved
|
||||
by iterating the list (indices corresponds to the entities ids)
|
||||
or by using the getEnt() method. All entities have id, type
|
||||
and attributes. Attributes can have values such as text or number,
|
||||
or a link to another entity.
|
||||
|
||||
Important note:
|
||||
|
||||
1) For this reader to function, you need an IFC Schema Express file (.exp)
|
||||
available here:
|
||||
http://www.steptools.com/support/stdev_docs/express/ifc2x3/ifc2x3_tc1.exp
|
||||
For licensing reasons we are not allowed to ship that file with FreeCAD.
|
||||
Just place the .exp file together with this script.
|
||||
|
||||
2) IFC files can have ordered content (ordered list, no entity number missing)
|
||||
or be much messier (entity numbers missing, etc). The performance of the reader
|
||||
will be drastically different.
|
||||
'''
|
||||
|
||||
IFCLINE_RE = re.compile("#(\d+)[ ]?=[ ]?(.*?)\((.*)\);[\\r]?$")
|
||||
DEBUG = False
|
||||
|
||||
class IfcSchema:
|
||||
SIMPLETYPES = ["INTEGER", "REAL", "STRING", "NUMBER", "LOGICAL", "BOOLEAN"]
|
||||
NO_ATTR = ["WHERE", "INVERSE","WR2","WR3", "WR4", "WR5", "UNIQUE", "DERIVE"]
|
||||
|
||||
def __init__(self, filename):
|
||||
self.filename = filename
|
||||
if not os.path.exists(filename):
|
||||
raise ImportError("no IFCSchema file found!")
|
||||
else:
|
||||
self.file = open(self.filename)
|
||||
self.data = self.file.read()
|
||||
self.types = self.readTypes()
|
||||
self.entities = self.readEntities()
|
||||
if DEBUG: print "Parsed from schema %s: %s entities and %s types" % (self.filename, len(self.entities), len(self.types))
|
||||
|
||||
def readTypes(self):
|
||||
"""
|
||||
Parse all the possible types from the schema,
|
||||
returns a dictionary Name -> Type
|
||||
"""
|
||||
types = {}
|
||||
for m in re.finditer("TYPE (.*) = (.*);", self.data):
|
||||
typename, typetype = m.groups()
|
||||
if typetype in self.SIMPLETYPES:
|
||||
types[typename] = typetype
|
||||
else:
|
||||
types[typename] = "#" + typetype
|
||||
|
||||
return types
|
||||
|
||||
def readEntities(self):
|
||||
"""
|
||||
Parse all the possible entities from the schema,
|
||||
returns a dictionary of the form:
|
||||
{ name: {
|
||||
"supertype": supertype,
|
||||
"attributes": [{ key: value }, ..]
|
||||
}}
|
||||
"""
|
||||
entities = {}
|
||||
|
||||
# Regexes must be greedy to prevent matching outer entity and end_entity strings
|
||||
# Regexes have re.DOTALL to match newlines
|
||||
for m in re.finditer("ENTITY (.*?)END_ENTITY;", self.data, re.DOTALL):
|
||||
entity = {}
|
||||
raw_entity_str = m.groups()[0]
|
||||
|
||||
entity["name"] = re.search("(.*?)[;|\s]", raw_entity_str).groups()[0].upper()
|
||||
|
||||
subtypeofmatch = re.search(".*SUBTYPE OF \((.*?)\);", raw_entity_str)
|
||||
entity["supertype"] = subtypeofmatch.groups()[0].upper() if subtypeofmatch else None
|
||||
|
||||
# find the shortest string matched from the end of the entity type header to the
|
||||
# first occurence of a NO_ATTR string (when it occurs on a new line)
|
||||
inner_str = re.search(";(.*?)$", raw_entity_str, re.DOTALL).groups()[0]
|
||||
|
||||
attrs_str = min([inner_str.partition("\r\n "+a)[0] for a in self.NO_ATTR])
|
||||
attrs = []
|
||||
for am in re.finditer("(.*?) : (.*?);", attrs_str, re.DOTALL):
|
||||
name, attr_type = [s.replace("\r\n\t","") for s in am.groups()]
|
||||
attrs.append((name, attr_type))
|
||||
|
||||
entity["attributes"] = attrs
|
||||
entities[entity["name"]] = entity
|
||||
|
||||
|
||||
return entities
|
||||
|
||||
def getAttributes(self, name):
|
||||
"""
|
||||
Get all attributes af an entity, including supertypes
|
||||
"""
|
||||
ent = self.entities[name]
|
||||
|
||||
attrs = []
|
||||
while ent != None:
|
||||
this_ent_attrs = copy.copy(ent["attributes"])
|
||||
this_ent_attrs.reverse()
|
||||
attrs.extend(this_ent_attrs)
|
||||
ent = self.entities.get(ent["supertype"], None)
|
||||
|
||||
attrs.reverse()
|
||||
return attrs
|
||||
|
||||
class IfcFile:
|
||||
"""
|
||||
Parses an ifc file given by filename, entities can be retrieved by name and id
|
||||
The whole file is stored in a dictionary (in memory)
|
||||
"""
|
||||
|
||||
entsById = {}
|
||||
entsByName = {}
|
||||
|
||||
def __init__(self, filename,schema):
|
||||
self.filename = filename
|
||||
self.schema = IfcSchema(schema)
|
||||
self.file = open(self.filename)
|
||||
self.entById, self.entsByName, self.header = self.read()
|
||||
self.file.close()
|
||||
if DEBUG: print "Parsed from file %s: %s entities" % (self.filename, len(self.entById))
|
||||
|
||||
def getEntityById(self, id):
|
||||
return self.entById.get(id, None)
|
||||
|
||||
def getEntitiesByName(self, name):
|
||||
return self.entsByName.get(name, None)
|
||||
|
||||
def read(self):
|
||||
"""
|
||||
Returns 2 dictionaries, entById and entsByName
|
||||
"""
|
||||
entById = {}
|
||||
entsByName = {}
|
||||
header = 'HEADER '
|
||||
readheader = False
|
||||
for line in self.file:
|
||||
e = self.parseLine(line)
|
||||
if e:
|
||||
entById[int(e["id"])] = e
|
||||
ids = e.get(e["name"],[])
|
||||
ids.append(e["id"])
|
||||
entsByName[e["name"]] = list(set(ids))
|
||||
elif 'HEADER' in line:
|
||||
readheader = True
|
||||
elif readheader:
|
||||
if 'ENDSEC' in line:
|
||||
readheader = False
|
||||
else:
|
||||
header += line
|
||||
|
||||
return [entById, entsByName, header]
|
||||
|
||||
def parseLine(self, line):
|
||||
"""
|
||||
Parse a line
|
||||
"""
|
||||
m = IFCLINE_RE.search(line) # id,name,attrs
|
||||
if m:
|
||||
id, name, attrs = m.groups()
|
||||
id = id.strip()
|
||||
name = name.strip()
|
||||
attrs = attrs.strip()
|
||||
else:
|
||||
return False
|
||||
|
||||
return {"id": id, "name": name, "attributes": self.parseAttributes(name, attrs)}
|
||||
|
||||
def parseAttributes(self, ent_name, attrs_str):
|
||||
"""
|
||||
Parse the attributes of a line
|
||||
"""
|
||||
parts = []
|
||||
lastpos = 0
|
||||
|
||||
while lastpos < len(attrs_str):
|
||||
newpos = self.nextString(attrs_str, lastpos)
|
||||
parts.extend(self.parseAttribute(attrs_str[lastpos:newpos-1]))
|
||||
lastpos = newpos
|
||||
|
||||
schema_attributes = self.schema.getAttributes(ent_name)
|
||||
|
||||
assert len(schema_attributes) == len(parts), \
|
||||
"Expected %s attributes, got %s (entity: %s" % \
|
||||
(len(schema_attributes), len(parts), ent_name)
|
||||
|
||||
attribute_names = [a[0] for a in schema_attributes]
|
||||
|
||||
return dict(zip(attribute_names, parts))
|
||||
|
||||
def parseAttribute(self, attr_str):
|
||||
"""
|
||||
Map a single attribute to a python type (recursively)
|
||||
"""
|
||||
parts = []
|
||||
lastpos = 0
|
||||
while lastpos < len(attr_str):
|
||||
newpos = self.nextString(attr_str, lastpos)
|
||||
s = attr_str[lastpos:newpos-1]
|
||||
if (s[0] == "(" and s[-1] == ")"): # list, recurse
|
||||
parts.append(self.parseAttribute(s[1:-1]))
|
||||
else:
|
||||
try:
|
||||
parts.append(float(s)) # number, any kind
|
||||
except ValueError:
|
||||
if s[0] == "'" and s[-1] == "'": # string
|
||||
parts.append(s[1:-1])
|
||||
elif s == "$":
|
||||
parts.append(None)
|
||||
else:
|
||||
parts.append(s) # ref, enum or other
|
||||
|
||||
lastpos = newpos
|
||||
|
||||
return parts
|
||||
|
||||
|
||||
def nextString(self, s, start):
|
||||
"""
|
||||
Parse the data part of a line
|
||||
"""
|
||||
parens = 0
|
||||
quotes = 0
|
||||
|
||||
for pos in range(start,len(s)):
|
||||
c = s[pos]
|
||||
if c == "," and parens == 0 and quotes == 0:
|
||||
return pos+1
|
||||
elif c == "(" and quotes == 0:
|
||||
parens += 1
|
||||
elif c == ")" and quotes == 0:
|
||||
parens -= 1
|
||||
elif c == "\'" and quotes == 0:
|
||||
quotes = 1
|
||||
elif c =="\'" and quotes == 1:
|
||||
quotes = 0
|
||||
|
||||
return len(s)+1
|
||||
|
||||
class IfcEntity:
|
||||
"a container for an IFC entity"
|
||||
def __init__(self,ent,doc=None):
|
||||
self.data = ent
|
||||
self.id = int(ent['id'])
|
||||
self.type = ent['name'].upper().strip(",[]()")
|
||||
self.attributes = ent['attributes']
|
||||
self.doc = doc
|
||||
|
||||
def __repr__(self):
|
||||
return str(self.id) + ' : ' + self.type + ' ' + str(self.attributes)
|
||||
|
||||
def getProperty(self,propName):
|
||||
"finds the value of the given property or quantity in this object, if exists"
|
||||
propsets = self.doc.find('IFCRELDEFINESBYPROPERTIES','RelatedObjects',self)
|
||||
if not propsets: return None
|
||||
propset = []
|
||||
for p in propsets:
|
||||
if hasattr(p.RelatingPropertyDefinition,"HasProperties"):
|
||||
propset.extend(p.RelatingPropertyDefinition.HasProperties)
|
||||
elif hasattr(p.RelatingPropertyDefinition,"Quantities"):
|
||||
propset.extend(p.RelatingPropertyDefinition.Quantities)
|
||||
for prop in propset:
|
||||
if prop.Name == propName:
|
||||
print "found valid",prop
|
||||
if hasattr(prop,"LengthValue"):
|
||||
return prop.LengthValue
|
||||
elif hasattr(prop,"AreaValue"):
|
||||
return prop.AreaValue
|
||||
elif hasattr(prop,"VolumeValue"):
|
||||
return prop.VolumeValue
|
||||
elif hasattr(prop,"NominalValue"):
|
||||
return prop.NominalValue
|
||||
return None
|
||||
|
||||
def getAttribute(self,attr):
|
||||
"returns the value of the given attribute, if exists"
|
||||
if hasattr(self,attr):
|
||||
return self.__dict__[attr]
|
||||
return None
|
||||
|
||||
class IfcDocument:
|
||||
"an object representing an IFC document"
|
||||
def __init__(self,filename,schema="IFC2X3_TC1.exp",debug=False):
|
||||
DEBUG = debug
|
||||
f = IfcFile(filename,schema)
|
||||
self.filename = filename
|
||||
self.data = f.entById
|
||||
self.Entities = {0:f.header}
|
||||
for k,e in self.data.iteritems():
|
||||
eid = int(e['id'])
|
||||
self.Entities[eid] = IfcEntity(e,self)
|
||||
if DEBUG: print len(self.Entities),"entities created. Creating attributes..."
|
||||
for k,ent in self.Entities.iteritems():
|
||||
if DEBUG: print "attributing entity ",ent
|
||||
if hasattr(ent,"attributes"):
|
||||
for k,v in ent.attributes.iteritems():
|
||||
if DEBUG: print "parsing attribute: ",k," value ",v
|
||||
if isinstance(v,str):
|
||||
val = self.__clean__(v)
|
||||
elif isinstance(v,list):
|
||||
val = []
|
||||
for item in v:
|
||||
if isinstance(item,str):
|
||||
val.append(self.__clean__(item))
|
||||
else:
|
||||
val.append(item)
|
||||
else:
|
||||
val = v
|
||||
setattr(ent,k.strip(),val)
|
||||
if DEBUG: print "Document successfully created"
|
||||
|
||||
def __clean__(self,value):
|
||||
"turns an attribute value into something usable"
|
||||
try:
|
||||
val = value.strip(" ()'")
|
||||
if val[:3].upper() == "IFC":
|
||||
if "IFCTEXT" in val.upper():
|
||||
l = val.split("'")
|
||||
if len(l) == 3: val = l[1]
|
||||
elif "IFCBOOLEAN" in value.upper():
|
||||
l = val.split(".")
|
||||
if len(l) == 3: val = l[1]
|
||||
if val.upper() == "F": val = False
|
||||
elif val.upper() == "T": val = True
|
||||
elif "IFCREAL" in val.upper():
|
||||
l = val.split("(")
|
||||
if len(l) == 2: val = float(l[1].strip(")"))
|
||||
else:
|
||||
if '#' in val:
|
||||
if "," in val:
|
||||
val = val.split(",")
|
||||
l = []
|
||||
for subval in val:
|
||||
if '#' in subval:
|
||||
s = subval.strip(" #")
|
||||
if DEBUG: print "referencing ",s," : ",self.getEnt(int(s))
|
||||
l.append(self.getEnt(int(s)))
|
||||
val = l
|
||||
else:
|
||||
val = val.strip()
|
||||
val = val.replace("#","")
|
||||
if DEBUG: print "referencing ",val," : ",self.getEnt(int(val))
|
||||
val = self.getEnt(int(val))
|
||||
if not val:
|
||||
val = value
|
||||
except:
|
||||
if DEBUG: print "error parsing attribute",value
|
||||
val = value
|
||||
return val
|
||||
|
||||
def __repr__(self):
|
||||
return "IFC Document: " + self.filename + ', ' + str(len(self.Entities)) + " entities "
|
||||
|
||||
def getEnt(self,ref):
|
||||
"gets an entity by id number, or a list of entities by type"
|
||||
if isinstance(ref,int):
|
||||
if ref in self.Entities:
|
||||
return self.Entities[ref]
|
||||
elif isinstance(ref,str):
|
||||
l = []
|
||||
ref = ref.upper()
|
||||
for k,ob in self.Entities.iteritems():
|
||||
if hasattr(ob,"type"):
|
||||
if ob.type == ref:
|
||||
l.append(ob)
|
||||
return l
|
||||
return None
|
||||
|
||||
def search(self,pat):
|
||||
"searches entities types for partial match"
|
||||
l = []
|
||||
pat = pat.upper()
|
||||
for k,ob in self.Entities.iteritems():
|
||||
if hasattr(ob,"type"):
|
||||
if pat in ob.type:
|
||||
if not ob.type in l:
|
||||
l.append(ob.type)
|
||||
return l
|
||||
|
||||
def find(self,pat1,pat2=None,pat3=None):
|
||||
'''finds objects in the current IFC document.
|
||||
arguments can be of the following form:
|
||||
- (pattern): returns object types matching the given pattern (same as search)
|
||||
- (type,property,value): finds, in all objects of type "type", those whose
|
||||
property "property" has the given value
|
||||
'''
|
||||
if pat3:
|
||||
bobs = self.getEnt(pat1)
|
||||
obs = []
|
||||
for bob in bobs:
|
||||
if hasattr(bob,pat2):
|
||||
if bob.getAttribute(pat2) == pat3:
|
||||
obs.append(bob)
|
||||
return obs
|
||||
elif pat1:
|
||||
ll = self.search(pat1)
|
||||
obs = []
|
||||
for l in ll:
|
||||
obs.extend(self.getEnt(l))
|
||||
return obs
|
||||
return None
|
||||
|
||||
if __name__ == "__main__":
|
||||
print __doc__
|
||||
|
||||
126
src/Mod/Arch/importDAE.py
Normal file
@@ -0,0 +1,126 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* as published by the Free Software Foundation; either version 2 of *
|
||||
#* the License, or (at your option) any later version. *
|
||||
#* for detail see the LICENCE text file. *
|
||||
#* *
|
||||
#* This program is distributed in the hope that it will be useful, *
|
||||
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
#* GNU Library General Public License for more details. *
|
||||
#* *
|
||||
#* You should have received a copy of the GNU Library General Public *
|
||||
#* License along with this program; if not, write to the Free Software *
|
||||
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
#* USA *
|
||||
#* *
|
||||
#***************************************************************************
|
||||
|
||||
import FreeCAD, collada, Mesh, os, numpy
|
||||
|
||||
__title__="FreeCAD Collada importer"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
DEBUG = True
|
||||
|
||||
def open(filename):
|
||||
"called when freecad wants to open a file"
|
||||
docname = os.path.splitext(os.path.basename(filename))[0]
|
||||
doc = FreeCAD.newDocument(docname)
|
||||
doc.Label = decode(docname)
|
||||
FreeCAD.ActiveDocument = doc
|
||||
read(filename)
|
||||
return doc
|
||||
|
||||
def decode(name):
|
||||
"decodes encoded strings"
|
||||
try:
|
||||
decodedName = (name.decode("utf8"))
|
||||
except UnicodeDecodeError:
|
||||
try:
|
||||
decodedName = (name.decode("latin1"))
|
||||
except UnicodeDecodeError:
|
||||
print "ifc: error: couldn't determine character encoding"
|
||||
decodedName = name
|
||||
return decodedName
|
||||
|
||||
def read(filename):
|
||||
global col
|
||||
col = collada.Collada(filename, ignore=[collada.DaeUnsupportedError])
|
||||
for geom in col.scene.objects('geometry'):
|
||||
#for geom in col.geometries:
|
||||
for prim in geom.primitives():
|
||||
#for prim in geom.primitives:
|
||||
print prim, dir(prim)
|
||||
meshdata = []
|
||||
if hasattr(prim,"triangles"):
|
||||
tset = prim.triangles()
|
||||
elif hasattr(prim,"triangleset"):
|
||||
tset = prim.triangleset()
|
||||
for tri in tset:
|
||||
face = []
|
||||
for v in tri.vertices:
|
||||
face.append([v[0],v[1],v[2]])
|
||||
meshdata.append(face)
|
||||
print meshdata
|
||||
newmesh = Mesh.Mesh(meshdata)
|
||||
print newmesh
|
||||
obj = FreeCAD.ActiveDocument.addObject("Mesh::Feature","Mesh")
|
||||
obj.Mesh = newmesh
|
||||
|
||||
def export(exportList,filename):
|
||||
"called when freecad exports a file"
|
||||
colmesh = collada.Collada()
|
||||
effect = collada.material.Effect("effect0", [], "phong", diffuse=(.7,.7,.7), specular=(1,1,1))
|
||||
mat = collada.material.Material("material0", "mymaterial", effect)
|
||||
colmesh.effects.append(effect)
|
||||
colmesh.materials.append(mat)
|
||||
objind = 0
|
||||
scenenodes = []
|
||||
for obj in exportList:
|
||||
if obj.isDerivedFrom("Mesh::Feature"):
|
||||
print "exporting object ",obj.Name, obj.Mesh
|
||||
m = obj.Mesh
|
||||
vindex = []
|
||||
nindex = []
|
||||
findex = []
|
||||
# vertex indices
|
||||
for v in m.Topology[0]:
|
||||
vindex.extend([v.x,v.y,v.z])
|
||||
# normals
|
||||
for f in m.Facets:
|
||||
n = f.Normal
|
||||
nindex.extend([n.x,n.y,n.z])
|
||||
# face indices
|
||||
for i in range(len(m.Topology[1])):
|
||||
f = m.Topology[1][i]
|
||||
findex.extend([f[0],i,f[1],i,f[2],i])
|
||||
print len(vindex), " vert indices, ", len(nindex), " norm indices, ", len(findex), " face indices."
|
||||
vert_src = collada.source.FloatSource("cubeverts-array"+str(objind), numpy.array(vindex), ('X', 'Y', 'Z'))
|
||||
normal_src = collada.source.FloatSource("cubenormals-array"+str(objind), numpy.array(nindex), ('X', 'Y', 'Z'))
|
||||
geom = collada.geometry.Geometry(colmesh, "geometry"+str(objind), obj.Name, [vert_src, normal_src])
|
||||
input_list = collada.source.InputList()
|
||||
input_list.addInput(0, 'VERTEX', "#cubeverts-array"+str(objind))
|
||||
input_list.addInput(1, 'NORMAL', "#cubenormals-array"+str(objind))
|
||||
triset = geom.createTriangleSet(numpy.array(findex), input_list, "materialref")
|
||||
geom.primitives.append(triset)
|
||||
colmesh.geometries.append(geom)
|
||||
matnode = collada.scene.MaterialNode("materialref", mat, inputs=[])
|
||||
geomnode = collada.scene.GeometryNode(geom, [matnode])
|
||||
node = collada.scene.Node("node"+str(objind), children=[geomnode])
|
||||
scenenodes.append(node)
|
||||
objind += 1
|
||||
myscene = collada.scene.Scene("myscene", scenenodes)
|
||||
colmesh.scenes.append(myscene)
|
||||
colmesh.scene = myscene
|
||||
myscene = collada.scene.Scene("myscene", [node])
|
||||
colmesh.scenes.append(myscene)
|
||||
colmesh.scene = myscene
|
||||
colmesh.write(filename)
|
||||
print "file ",filename," successfully created."
|
||||
201
src/Mod/Arch/importIFC.py
Normal file
@@ -0,0 +1,201 @@
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2011 *
|
||||
#* Yorik van Havre <yorik@uncreated.net> *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU General Public License (GPL) *
|
||||
#* as published by the Free Software Foundation; either version 2 of *
|
||||
#* the License, or (at your option) any later version. *
|
||||
#* for detail see the LICENCE text file. *
|
||||
#* *
|
||||
#* This program is distributed in the hope that it will be useful, *
|
||||
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
#* GNU Library General Public License for more details. *
|
||||
#* *
|
||||
#* You should have received a copy of the GNU Library General Public *
|
||||
#* License along with this program; if not, write to the Free Software *
|
||||
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
#* USA *
|
||||
#* *
|
||||
#***************************************************************************
|
||||
|
||||
import ifcReader, FreeCAD, Wall, Draft, os, time, Cell, Floor, Building, Site
|
||||
from draftlibs import fcvec
|
||||
|
||||
__title__="FreeCAD IFC importer"
|
||||
__author__ = "Yorik van Havre"
|
||||
__url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
DEBUG = True
|
||||
|
||||
def open(filename):
|
||||
"called when freecad opens a file"
|
||||
docname = os.path.splitext(os.path.basename(filename))[0]
|
||||
doc = FreeCAD.newDocument(docname)
|
||||
doc.Label = decode(docname)
|
||||
FreeCAD.ActiveDocument = doc
|
||||
read(filename)
|
||||
return doc
|
||||
|
||||
def decode(name):
|
||||
"decodes encoded strings"
|
||||
try:
|
||||
decodedName = (name.decode("utf8"))
|
||||
except UnicodeDecodeError:
|
||||
try:
|
||||
decodedName = (name.decode("latin1"))
|
||||
except UnicodeDecodeError:
|
||||
print "ifc: error: couldn't determine character encoding"
|
||||
decodedName = name
|
||||
return decodedName
|
||||
|
||||
def getSchema(schema):
|
||||
return os.path.join(FreeCAD.ConfigGet("AppHomePath"),"Mod","Arch",schema+".exp")
|
||||
|
||||
def read(filename):
|
||||
"processes an ifc file and add its objects to the given document"
|
||||
t1 = time.time()
|
||||
if DEBUG: global ifc
|
||||
if DEBUG: print "opening",filename,"..."
|
||||
ifc = ifcReader.IfcDocument(filename,schema=getSchema("IFC2X3_TC1"),debug=DEBUG)
|
||||
t2 = time.time()
|
||||
if DEBUG: print "Successfully loaded",ifc,"in %s s" % ((t2-t1))
|
||||
# getting walls
|
||||
for w in ifc.getEnt("IFCWALLSTANDARDCASE"):
|
||||
makeWall(w)
|
||||
# getting floors
|
||||
for f in ifc.getEnt("IFCBUILDINGSTOREY"):
|
||||
makeCell(f,"Floor")
|
||||
# getting buildings
|
||||
for b in ifc.getEnt("IFCBUILDING"):
|
||||
makeCell(b,"Building")
|
||||
FreeCAD.ActiveDocument.recompute()
|
||||
t3 = time.time()
|
||||
if DEBUG: print "done processing",ifc,"in %s s" % ((t3-t1))
|
||||
|
||||
def makeCell(entity,mode="Cell"):
|
||||
"makes a cell in the freecad document"
|
||||
try:
|
||||
if DEBUG: print "=====> making cell",entity.id
|
||||
placement = None
|
||||
placement = getPlacement(entity.ObjectPlacement)
|
||||
if DEBUG: print "got cell placement",entity.id,":",placement
|
||||
subelements = ifc.find("IFCRELCONTAINEDINSPATIALSTRUCTURE","RelatingStructure",entity)
|
||||
subelements.extend(ifc.find("IFCRELAGGREGATES","RelatingObject",entity))
|
||||
fcelts = []
|
||||
for s in subelements:
|
||||
if hasattr(s,"RelatedElements"):
|
||||
s = s.RelatedElements
|
||||
if not isinstance(s,list): s = [s]
|
||||
for r in s:
|
||||
if r.type == "IFCWALLSTANDARDCASE":
|
||||
o = FreeCAD.ActiveDocument.getObject("Wall"+str(r.id))
|
||||
if o: fcelts.append(o)
|
||||
elif hasattr(s,"RelatedObjects"):
|
||||
s = s.RelatedObjects
|
||||
if not isinstance(s,list): s = [s]
|
||||
for r in s:
|
||||
if r.type == "IFCBUILDINGSTOREY":
|
||||
o = FreeCAD.ActiveDocument.getObject("Floor"+str(r.id))
|
||||
if o: fcelts.append(o)
|
||||
name = mode+str(entity.id)
|
||||
if mode == "Site":
|
||||
cell = Cell.makeSite(fcelts,name=name)
|
||||
elif mode == "Floor":
|
||||
cell = Cell.makeFloor(fcelts,join=True,name=name)
|
||||
elif mode == "Building":
|
||||
cell = Cell.makeBuilding(fcelts,name=name)
|
||||
else:
|
||||
cell = Cell.makeCell(fcelts,join=True,name=name)
|
||||
cell.CellType = type
|
||||
except:
|
||||
if DEBUG: print "error: skipping cell",entity.id
|
||||
|
||||
def makeWall(entity):
|
||||
"makes a wall in the freecad document"
|
||||
try:
|
||||
if DEBUG: print "=====> making wall",entity.id
|
||||
placement = wall = wire = body = width = height = None
|
||||
placement = getPlacement(entity.ObjectPlacement)
|
||||
if DEBUG: print "got wall placement",entity.id,":",placement
|
||||
width = entity.getProperty("Width")
|
||||
height = entity.getProperty("Height")
|
||||
if width and height:
|
||||
if DEBUG: print "got width, height ",entity.id,":",width,"/",height
|
||||
for r in entity.Representation.Representations:
|
||||
if r.RepresentationIdentifier == "Axis":
|
||||
wire = makeWire(r.Items,placement)
|
||||
wall = Wall.makeWall(wire,width,height,align="Center",name="Wall"+str(entity.id))
|
||||
else:
|
||||
if DEBUG: print "no height or width properties found..."
|
||||
for r in entity.Representation.Representations:
|
||||
if r.RepresentationIdentifier == "Body":
|
||||
for b in r.Items:
|
||||
if b.type == "IFCEXTRUDEDAREASOLID":
|
||||
norm = getVector(b.ExtrudedDirection)
|
||||
norm.normalize()
|
||||
wire = makeWire(b.SweptArea,placement)
|
||||
wall = Wall.makeWall(wire,width=0,height=b.Depth,name="Wall"+str(entity.id))
|
||||
wall.Normal = norm
|
||||
if wall:
|
||||
if DEBUG: print "made wall object ",entity.id,":",wall
|
||||
except:
|
||||
if DEBUG: print "error: skipping wall",entity.id
|
||||
|
||||
def makeWire(entity,placement=None):
|
||||
"makes a wire in the freecad document"
|
||||
if DEBUG: print "making Wire from :",entity
|
||||
if not entity: return None
|
||||
if entity.type == "IFCPOLYLINE":
|
||||
pts = []
|
||||
for p in entity.Points:
|
||||
pts.append(getVector(p))
|
||||
return Draft.makeWire(pts,placement=placement)
|
||||
elif entity.type == "IFCARBITRARYCLOSEDPROFILEDEF":
|
||||
pts = []
|
||||
for p in entity.OuterCurve.Points:
|
||||
pts.append(getVector(p))
|
||||
return Draft.makeWire(pts,closed=True,placement=placement)
|
||||
|
||||
def getPlacement(entity):
|
||||
"returns a placement from the given entity"
|
||||
if DEBUG: print "getting placement ",entity
|
||||
if not entity: return None
|
||||
pl = None
|
||||
if entity.type == "IFCAXIS2PLACEMENT3D":
|
||||
x = getVector(entity.RefDirection)
|
||||
z = getVector(entity.Axis)
|
||||
y = z.cross(x)
|
||||
loc = getVector(entity.Location)
|
||||
m = fcvec.getPlaneRotation(x,y,z)
|
||||
pl = FreeCAD.Placement(m)
|
||||
pl.move(loc)
|
||||
elif entity.type == "IFCLOCALPLACEMENT":
|
||||
pl = getPlacement(entity.PlacementRelTo)
|
||||
relpl = getPlacement(entity.RelativePlacement)
|
||||
if pl and relpl:
|
||||
pl = relpl.multiply(pl)
|
||||
elif relpl:
|
||||
pl = relpl
|
||||
elif entity.type == "IFCCARTESIANPOINT":
|
||||
loc = getVector(entity)
|
||||
pl = FreeCAD.Placement()
|
||||
pl.move(loc)
|
||||
if DEBUG: print "made placement for",entity.id,":",pl
|
||||
return pl
|
||||
|
||||
def getVector(entity):
|
||||
if DEBUG: print "getting point from",entity
|
||||
if entity.type == "IFCDIRECTION":
|
||||
if len(entity.DirectionRatios) == 3:
|
||||
return FreeCAD.Vector(tuple(entity.DirectionRatios))
|
||||
else:
|
||||
return FreeCAD.Vector(tuple(entity.DirectionRatios+[0]))
|
||||
elif entity.type == "IFCCARTESIANPOINT":
|
||||
if len(entity.Coordinates) == 3:
|
||||
return FreeCAD.Vector(tuple(entity.Coordinates))
|
||||
else:
|
||||
return FreeCAD.Vector(tuple(entity.Coordinates+[0]))
|
||||
return None
|
||||
67
src/Mod/Assembly/App/AppAssembly.cpp
Normal file
@@ -0,0 +1,67 @@
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2008 Jürgen Riegel (juergen.riegel@web.de) *
|
||||
* *
|
||||
* This file is part of the FreeCAD CAx development system. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Library General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* This library 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 library; see the file COPYING.LIB. If not, *
|
||||
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
||||
* Suite 330, Boston, MA 02111-1307, USA *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#include "PreCompiled.h"
|
||||
#ifndef _PreComp_
|
||||
# include <Python.h>
|
||||
//# include <ode/ode.h>
|
||||
#endif
|
||||
|
||||
#include <Base/Console.h>
|
||||
#include <Base/Interpreter.h>
|
||||
|
||||
|
||||
extern struct PyMethodDef Assembly_methods[];
|
||||
|
||||
PyDoc_STRVAR(module_Assembly_doc,
|
||||
"This module is the Assembly module.");
|
||||
|
||||
|
||||
/* Python entry */
|
||||
extern "C" {
|
||||
void AppAssemblyExport initAssembly()
|
||||
{
|
||||
// load dependend module
|
||||
try {
|
||||
Base::Interpreter().loadModule("Part");
|
||||
//Base::Interpreter().loadModule("Mesh");
|
||||
}
|
||||
catch(const Base::Exception& e) {
|
||||
PyErr_SetString(PyExc_ImportError, e.what());
|
||||
return;
|
||||
}
|
||||
Py_InitModule3("Assembly", Assembly_methods, module_Assembly_doc); /* mod name, table ptr */
|
||||
Base::Console().Log("Loading Assembly module... done\n");
|
||||
|
||||
|
||||
//dWorldID id = dWorldCreate();
|
||||
//dWorldDestroy(id);
|
||||
|
||||
// NOTE: To finish the initialization of our own type objects we must
|
||||
// call PyType_Ready, otherwise we run into a segmentation fault, later on.
|
||||
// This function is responsible for adding inherited slots from a type's base class.
|
||||
|
||||
//Assembly::FeatureViewPart ::init();
|
||||
}
|
||||
|
||||
} // extern "C"
|
||||
32
src/Mod/Assembly/App/AppAssemblyPy.cpp
Normal file
@@ -0,0 +1,32 @@
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2008 Jürgen Riegel (juergen.riegel@web.de) *
|
||||
* *
|
||||
* This file is part of the FreeCAD CAx development system. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Library General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* This library 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 library; see the file COPYING.LIB. If not, *
|
||||
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
||||
* Suite 330, Boston, MA 02111-1307, USA *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#include "PreCompiled.h"
|
||||
#ifndef _PreComp_
|
||||
# include <Python.h>
|
||||
#endif
|
||||
|
||||
/* registration table */
|
||||
struct PyMethodDef Assembly_methods[] = {
|
||||
{NULL, NULL} /* end of table marker */
|
||||
};
|
||||
43
src/Mod/Assembly/App/CMakeLists.txt
Normal file
@@ -0,0 +1,43 @@
|
||||
|
||||
include_directories(
|
||||
${CMAKE_SOURCE_DIR}/src
|
||||
${Boost_INCLUDE_DIRS}
|
||||
${OCC_INCLUDE_DIR}
|
||||
${PYTHON_INCLUDE_PATH}
|
||||
${ZLIB_INCLUDE_DIR}
|
||||
${XERCESC_INCLUDE_DIR}
|
||||
# ${ODE_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
set(Assembly_LIBS
|
||||
# ${ODE_LIBRARIES}
|
||||
FreeCADApp
|
||||
)
|
||||
|
||||
SET(Assembly_SRCS
|
||||
AppAssembly.cpp
|
||||
AppAssemblyPy.cpp
|
||||
PreCompiled.cpp
|
||||
PreCompiled.h
|
||||
)
|
||||
|
||||
add_library(Assembly SHARED ${Assembly_SRCS})
|
||||
target_link_libraries(Assembly ${Assembly_LIBS})
|
||||
fc_copy_script("Mod/Assembly" "Assembly" Init.py)
|
||||
|
||||
if(MSVC)
|
||||
set_target_properties(Assembly PROPERTIES SUFFIX ".pyd")
|
||||
set_target_properties(Assembly PROPERTIES DEBUG_OUTPUT_NAME "Assembly_d")
|
||||
set_target_properties(Assembly PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Mod/Assembly)
|
||||
set_target_properties(Assembly PROPERTIES PREFIX "../")
|
||||
elseif(MINGW)
|
||||
set_target_properties(Assembly PROPERTIES SUFFIX ".pyd")
|
||||
set_target_properties(Assembly PROPERTIES DEBUG_OUTPUT_NAME "Assembly_d")
|
||||
set_target_properties(Assembly PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Mod/Assembly)
|
||||
set_target_properties(Assembly PROPERTIES PREFIX "")
|
||||
else(MSVC)
|
||||
set_target_properties(Assembly PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Mod/Assembly)
|
||||
set_target_properties(Assembly PROPERTIES PREFIX "")
|
||||
endif(MSVC)
|
||||
|
||||
install(TARGETS Assembly DESTINATION lib)
|
||||
66
src/Mod/Assembly/App/Makefile.am
Normal file
@@ -0,0 +1,66 @@
|
||||
|
||||
lib_LTLIBRARIES=libAssembly.la Assembly.la
|
||||
|
||||
libAssembly_la_SOURCES=\
|
||||
AppAssemblyPy.cpp \
|
||||
PreCompiled.cpp \
|
||||
PreCompiled.h
|
||||
|
||||
|
||||
# the library search path.
|
||||
libAssembly_la_LDFLAGS = -L../../../Base -L../../../App -L../../../Mod/Part/App $(all_libraries) -L$(OCC_LIB) \
|
||||
-version-info @LIB_CURRENT@:@LIB_REVISION@:@LIB_AGE@
|
||||
libAssembly_la_CPPFLAGS = -DAssemblyAppExport=
|
||||
|
||||
libAssembly_la_LIBADD = \
|
||||
@BOOST_REGEX_LIB@ @BOOST_SYSTEM_LIB@ \
|
||||
-l@PYTHON_LIB@ \
|
||||
-lxerces-c \
|
||||
-lFreeCADBase \
|
||||
-lFreeCADApp \
|
||||
-lPart \
|
||||
-lTKernel \
|
||||
-lTKG2d \
|
||||
-lTKG3d \
|
||||
-lTKMath \
|
||||
-lTKSTEP \
|
||||
-lTKIGES \
|
||||
-lTKSTL \
|
||||
-lTKShHealing \
|
||||
-lTKXSBase \
|
||||
-lTKBool \
|
||||
-lTKBO \
|
||||
-lTKBRep \
|
||||
-lTKTopAlgo \
|
||||
-lTKGeomAlgo \
|
||||
-lTKGeomBase \
|
||||
-lTKOffset \
|
||||
-lTKPrim \
|
||||
-lTKHLR
|
||||
|
||||
#--------------------------------------------------------------------------------------
|
||||
# Loader of libAssembly
|
||||
|
||||
Assembly_la_SOURCES=\
|
||||
AppAssembly.cpp
|
||||
|
||||
# the library search path.
|
||||
Assembly_la_LDFLAGS = $(libAssembly_la_LDFLAGS) -module -avoid-version
|
||||
Assembly_la_CPPFLAGS = $(libAssembly_la_CPPFLAGS)
|
||||
|
||||
Assembly_la_LIBADD = \
|
||||
$(libAssembly_la_LIBADD) \
|
||||
-lAssembly
|
||||
|
||||
Assembly_la_DEPENDENCIES = libAssembly.la
|
||||
|
||||
#--------------------------------------------------------------------------------------
|
||||
|
||||
# set the include path found by configure
|
||||
AM_CXXFLAGS = -I$(top_srcdir)/src -I$(top_builddir)/src -I$(OCC_INC) $(all_includes)
|
||||
|
||||
|
||||
libdir = $(prefix)/Mod/Assembly
|
||||
|
||||
EXTRA_DIST = \
|
||||
CMakeLists.txt
|
||||
24
src/Mod/Assembly/App/PreCompiled.cpp
Normal file
@@ -0,0 +1,24 @@
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2008 Jürgen Riegel (juergen.riegel@web.de) *
|
||||
* *
|
||||
* This file is part of the FreeCAD CAx development system. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Library General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* This library 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 library; see the file COPYING.LIB. If not, *
|
||||
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
||||
* Suite 330, Boston, MA 02111-1307, USA *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#include "PreCompiled.h"
|
||||
246
src/Mod/Assembly/App/PreCompiled.h
Normal file
@@ -0,0 +1,246 @@
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2008 Jürgen Riegel (juergen.riegel@web.de) *
|
||||
* *
|
||||
* This file is part of the FreeCAD CAx development system. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Library General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* This library 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 library; see the file COPYING.LIB. If not, *
|
||||
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
||||
* Suite 330, Boston, MA 02111-1307, USA *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#ifndef ASSEMBLY_PRECOMPILED_H
|
||||
#define ASSEMBLY_PRECOMPILED_H
|
||||
|
||||
#include <FCConfig.h>
|
||||
|
||||
// Exporting of App classes
|
||||
#ifdef FC_OS_WIN32
|
||||
# define AppAssemblyExport __declspec(dllexport)
|
||||
# define PartExport __declspec(dllimport)
|
||||
# define MeshExport __declspec(dllimport)
|
||||
#else // for Linux
|
||||
# define AppAssemblyExport
|
||||
# define PartExport
|
||||
# define MeshExport
|
||||
#endif
|
||||
|
||||
#ifdef _PreComp_
|
||||
|
||||
// standard
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
#include <set>
|
||||
#include <bitset>
|
||||
|
||||
#include <Python.h>
|
||||
|
||||
|
||||
// OpenCasCade =====================================================================================
|
||||
// Base
|
||||
#include <Standard_Failure.hxx>
|
||||
#include <Standard_GUID.hxx>
|
||||
#include <Standard_AbortiveTransaction.hxx>
|
||||
#include <Standard_Address.hxx>
|
||||
#include <Standard_AncestorIterator.hxx>
|
||||
//#include <Standard_BasicMap.hxx>
|
||||
//#include <Standard_BasicMapIterator.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
#include <Standard_Byte.hxx>
|
||||
#include <Standard_Character.hxx>
|
||||
#include <Standard_ConstructionError.hxx>
|
||||
#include <Standard_CString.hxx>
|
||||
#include <Standard_ctype.hxx>
|
||||
#include <Standard_DefineHandle.hxx>
|
||||
#include <Standard_DimensionError.hxx>
|
||||
#include <Standard_DimensionMismatch.hxx>
|
||||
#include <Standard_DivideByZero.hxx>
|
||||
#include <Standard_DomainError.hxx>
|
||||
#include <Standard_ErrorHandler.hxx>
|
||||
#include <Standard_ExtCharacter.hxx>
|
||||
#include <Standard_ExtString.hxx>
|
||||
#include <Standard_Failure.hxx>
|
||||
//#include <Standard_ForMapOfTypes.hxx>
|
||||
#include <Standard_GUID.hxx>
|
||||
#include <Standard_ImmutableObject.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <Standard_InternalType.hxx>
|
||||
#include <Standard_IStream.hxx>
|
||||
#include <Standard_KindOfType.hxx>
|
||||
#include <Standard_LicenseError.hxx>
|
||||
#include <Standard_LicenseNotFound.hxx>
|
||||
#include <Standard_Macro.hxx>
|
||||
//#include <Standard_MapOfTypes.hxx>
|
||||
#include <Standard_math.hxx>
|
||||
#include <Standard_MultiplyDefined.hxx>
|
||||
//#include <Standard_MyMapOfStringsHasher.hxx>
|
||||
//#include <Standard_MyMapOfTypes.hxx>
|
||||
#include <Standard_NegativeValue.hxx>
|
||||
#include <Standard_NoMoreObject.hxx>
|
||||
#include <Standard_NoSuchObject.hxx>
|
||||
#include <Standard_NotImplemented.hxx>
|
||||
#include <Standard_NullObject.hxx>
|
||||
#include <Standard_NullValue.hxx>
|
||||
#include <Standard_NumericError.hxx>
|
||||
#include <Standard_OId.hxx>
|
||||
#include <Standard_OStream.hxx>
|
||||
#include <Standard_OutOfMemory.hxx>
|
||||
#include <Standard_OutOfRange.hxx>
|
||||
#include <Standard_Overflow.hxx>
|
||||
#include <Standard_Persistent.hxx>
|
||||
#include <Standard_Persistent_proto.hxx>
|
||||
//#include <Standard_PForMapOfTypes.hxx>
|
||||
#include <Standard_PrimitiveTypes.hxx>
|
||||
#include <Standard_ProgramError.hxx>
|
||||
#include <Standard_RangeError.hxx>
|
||||
#include <Standard_Real.hxx>
|
||||
#include <Standard_ShortReal.hxx>
|
||||
#include <Standard_SStream.hxx>
|
||||
#include <Standard_Static.hxx>
|
||||
#include <Standard_Storable.hxx>
|
||||
#include <Standard_Stream.hxx>
|
||||
#include <Standard_String.hxx>
|
||||
//#include <Standard_theForMapOfTypes.hxx>
|
||||
#include <Standard_TooManyUsers.hxx>
|
||||
#include <Standard_Transient.hxx>
|
||||
#include <Standard_Transient_proto.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
#include <Standard_TypeDef.hxx>
|
||||
#include <Standard_TypeMismatch.hxx>
|
||||
#include <Standard_Underflow.hxx>
|
||||
#include <Standard_UUID.hxx>
|
||||
#include <Standard_WayOfLife.hxx>
|
||||
|
||||
|
||||
#include <TCollection_ExtendedString.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <TColStd_SequenceOfExtendedString.hxx>
|
||||
|
||||
#include <BRep_Builder.hxx>
|
||||
#include <BRepAdaptor_Curve.hxx>
|
||||
#include <BRepAdaptor_Surface.hxx>
|
||||
#include <BRepBuilderAPI.hxx>
|
||||
#include <BRepBuilderAPI_MakeEdge.hxx>
|
||||
#include <BRepBuilderAPI_MakePolygon.hxx>
|
||||
#include <BRepTools.hxx>
|
||||
#include <BRepTools_ShapeSet.hxx>
|
||||
#include <BRepBuilderAPI_Copy.hxx>
|
||||
#include <BRepCheck_Analyzer.hxx>
|
||||
#include <BRepCheck_Result.hxx>
|
||||
#include <BRepCheck_ListIteratorOfListOfStatus.hxx>
|
||||
|
||||
#include <BRepTools.hxx>
|
||||
#include <Standard_DefineHandle.hxx>
|
||||
#include <GCE2d_MakeSegment.hxx>
|
||||
#include <GCPnts_TangentialDeflection.hxx>
|
||||
#include <Geom_Axis2Placement.hxx>
|
||||
#include <Geom_CartesianPoint.hxx>
|
||||
#include <Geom_Line.hxx>
|
||||
#include <Geom_Surface.hxx>
|
||||
#include <Geom2d_BezierCurve.hxx>
|
||||
#include <Geom2d_BSplineCurve.hxx>
|
||||
#include <Geom2d_Curve.hxx>
|
||||
#include <Geom2d_TrimmedCurve.hxx>
|
||||
#include <Geom2dAdaptor_Curve.hxx>
|
||||
#include <GeomAbs_CurveType.hxx>
|
||||
#include <GeomAdaptor_Curve.hxx>
|
||||
#include <Geom_BezierCurve.hxx>
|
||||
#include <Geom_BezierSurface.hxx>
|
||||
#include <Geom_BSplineCurve.hxx>
|
||||
#include <Geom_BSplineSurface.hxx>
|
||||
#include <Geom_Circle.hxx>
|
||||
#include <Geom_ConicalSurface.hxx>
|
||||
#include <Geom_CylindricalSurface.hxx>
|
||||
#include <Geom_Ellipse.hxx>
|
||||
#include <Geom_Hyperbola.hxx>
|
||||
#include <Geom_SphericalSurface.hxx>
|
||||
#include <Geom_SurfaceOfLinearExtrusion.hxx>
|
||||
#include <Geom_SurfaceOfRevolution.hxx>
|
||||
#include <Geom_Parabola.hxx>
|
||||
#include <Geom_Plane.hxx>
|
||||
#include <Geom_ToroidalSurface.hxx>
|
||||
#include <GeomTools_Curve2dSet.hxx>
|
||||
#include <gp_Ax2d.hxx>
|
||||
#include <gp_Circ.hxx>
|
||||
#include <gp_Circ2d.hxx>
|
||||
#include <gp_Cone.hxx>
|
||||
#include <gp_Cylinder.hxx>
|
||||
#include <gp_Dir2d.hxx>
|
||||
#include <gp_Elips.hxx>
|
||||
#include <gp_Hypr.hxx>
|
||||
#include <gp_Lin2d.hxx>
|
||||
#include <gp_Lin.hxx>
|
||||
#include <gp_Parab.hxx>
|
||||
#include <gp_Pnt2d.hxx>
|
||||
#include <gp_Pnt.hxx>
|
||||
#include <gp_Pln.hxx>
|
||||
#include <gp_Sphere.hxx>
|
||||
#include <gp_Torus.hxx>
|
||||
#include <gp_Vec.hxx>
|
||||
#include <gp_Vec2d.hxx>
|
||||
#include <MMgt_TShared.hxx>
|
||||
#include <Precision.hxx>
|
||||
#include <Quantity_Factor.hxx>
|
||||
#include <Quantity_Length.hxx>
|
||||
#include <Quantity_NameOfColor.hxx>
|
||||
#include <Quantity_PhysicalQuantity.hxx>
|
||||
#include <Quantity_PlaneAngle.hxx>
|
||||
#include <Quantity_TypeOfColor.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
#include <Standard_CString.hxx>
|
||||
#include <Standard_ErrorHandler.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <Standard_IStream.hxx>
|
||||
#include <Standard_Macro.hxx>
|
||||
#include <Standard_NotImplemented.hxx>
|
||||
#include <Standard_OStream.hxx>
|
||||
#include <Standard_Real.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <TColgp_Array1OfPnt2d.hxx>
|
||||
#include <TColgp_HArray1OfPnt2d.hxx>
|
||||
#include <TCollection_AsciiString.hxx>
|
||||
#include <TColStd_HSequenceOfTransient.hxx>
|
||||
#include <TColStd_MapIteratorOfMapOfTransient.hxx>
|
||||
#include <TColStd_MapOfTransient.hxx>
|
||||
#include <TopExp_Explorer.hxx>
|
||||
#include <TopoDS.hxx>
|
||||
#include <TopoDS_Compound.hxx>
|
||||
#include <TopoDS_Edge.hxx>
|
||||
#include <TopoDS_Iterator.hxx>
|
||||
#include <TopoDS_ListIteratorOfListOfShape.hxx>
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#include <TopoDS_Solid.hxx>
|
||||
#include <TopoDS_Vertex.hxx>
|
||||
#include <TopExp.hxx>
|
||||
#include <TopTools_ListIteratorOfListOfShape.hxx>
|
||||
#include <TopTools_HSequenceOfShape.hxx>
|
||||
#include <TopTools_MapOfShape.hxx>
|
||||
#include <UnitsAPI.hxx>
|
||||
#include <BRepPrimAPI_MakeBox.hxx>
|
||||
#include <BRepPrimAPI_MakeCylinder.hxx>
|
||||
|
||||
|
||||
// --- ODE ----------
|
||||
#include <ode/ode.h>
|
||||
|
||||
|
||||
#endif // _PreComp_
|
||||
#endif
|
||||
|
||||
13
src/Mod/Assembly/CMakeLists.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
add_subdirectory(App)
|
||||
if(FREECAD_BUILD_GUI)
|
||||
add_subdirectory(Gui)
|
||||
endif(FREECAD_BUILD_GUI)
|
||||
|
||||
install(
|
||||
FILES
|
||||
Init.py
|
||||
InitGui.py
|
||||
DESTINATION
|
||||
Mod/Assembly
|
||||
)
|
||||
69
src/Mod/Assembly/Gui/AppAssemblyGui.cpp
Normal file
@@ -0,0 +1,69 @@
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2008 Jürgen Riegel (juergen.riegel@web.de) *
|
||||
* *
|
||||
* This file is part of the FreeCAD CAx development system. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Library General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* This library 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 library; see the file COPYING.LIB. If not, *
|
||||
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
||||
* Suite 330, Boston, MA 02111-1307, USA *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#include "PreCompiled.h"
|
||||
#ifndef _PreComp_
|
||||
# include <Python.h>
|
||||
#endif
|
||||
|
||||
#include <Base/Console.h>
|
||||
#include <Gui/Application.h>
|
||||
#include <Gui/Language/Translator.h>
|
||||
#include "Workbench.h"
|
||||
//#include "resources/qrc_Assembly.cpp"
|
||||
|
||||
// use a different name to CreateCommand()
|
||||
void CreateAssemblyCommands(void);
|
||||
|
||||
void loadAssemblyResource()
|
||||
{
|
||||
// add resources and reloads the translators
|
||||
Q_INIT_RESOURCE(Assembly);
|
||||
Gui::Translator::instance()->refresh();
|
||||
}
|
||||
|
||||
/* registration table */
|
||||
extern struct PyMethodDef AssemblyGui_Import_methods[];
|
||||
|
||||
|
||||
/* Python entry */
|
||||
extern "C" {
|
||||
void AssemblyGuiExport initAssemblyGui()
|
||||
{
|
||||
if (!Gui::Application::Instance) {
|
||||
PyErr_SetString(PyExc_ImportError, "Cannot load Gui module in console application.");
|
||||
return;
|
||||
}
|
||||
|
||||
(void) Py_InitModule("AssemblyGui", AssemblyGui_Import_methods); /* mod name, table ptr */
|
||||
Base::Console().Log("Loading GUI of Assembly module... done\n");
|
||||
|
||||
// instanciating the commands
|
||||
CreateAssemblyCommands();
|
||||
AssemblyGui::Workbench::init();
|
||||
|
||||
// add resources and reloads the translators
|
||||
loadAssemblyResource();
|
||||
}
|
||||
|
||||
} // extern "C" {
|
||||
33
src/Mod/Assembly/Gui/AppAssemblyGuiPy.cpp
Normal file
@@ -0,0 +1,33 @@
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2008 Werner Mayer <wmayer[at]users.sourceforge.net> *
|
||||
* *
|
||||
* This file is part of the FreeCAD CAx development system. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Library General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* This library 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 library; see the file COPYING.LIB. If not, *
|
||||
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
||||
* Suite 330, Boston, MA 02111-1307, USA *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#include "PreCompiled.h"
|
||||
#ifndef _PreComp_
|
||||
# include <Python.h>
|
||||
#endif
|
||||
|
||||
|
||||
/* registration table */
|
||||
struct PyMethodDef AssemblyGui_Import_methods[] = {
|
||||
{NULL, NULL} /* end of table marker */
|
||||
};
|
||||
53
src/Mod/Assembly/Gui/CMakeLists.txt
Normal file
@@ -0,0 +1,53 @@
|
||||
include_directories(
|
||||
${CMAKE_SOURCE_DIR}/src
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${Boost_INCLUDE_DIRS}
|
||||
${COIN_INCLUDE_DIR}
|
||||
${ZLIB_INCLUDE_DIR}
|
||||
${QT_INCLUDE_DIR}
|
||||
${SOQT_INCLUDE_DIR}
|
||||
${PYTHON_INCLUDE_PATH}
|
||||
${XERCESC_INCLUDE_DIR}
|
||||
#${ODE_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
set(AssemblyGui_LIBS
|
||||
#${ODE_LIBRARIES}
|
||||
Assembly
|
||||
FreeCADGui
|
||||
)
|
||||
|
||||
qt4_add_resources(AssemblyGui_SRCS Resources/Assembly.qrc)
|
||||
|
||||
SET(AssemblyGui_SRCS
|
||||
${AssemblyGui_SRCS}
|
||||
AppAssemblyGui.cpp
|
||||
AppAssemblyGuiPy.cpp
|
||||
Command.cpp
|
||||
Resources/Assembly.qrc
|
||||
PreCompiled.cpp
|
||||
PreCompiled.h
|
||||
Workbench.cpp
|
||||
Workbench.h
|
||||
)
|
||||
|
||||
add_library(AssemblyGui SHARED ${AssemblyGui_SRCS})
|
||||
target_link_libraries(AssemblyGui ${AssemblyGui_LIBS})
|
||||
fc_copy_script("Mod/Assembly" "AssemblyGui" InitGui.py)
|
||||
|
||||
if(MSVC)
|
||||
set_target_properties(AssemblyGui PROPERTIES SUFFIX ".pyd")
|
||||
set_target_properties(AssemblyGui PROPERTIES DEBUG_OUTPUT_NAME "AssemblyGui_d")
|
||||
set_target_properties(AssemblyGui PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Mod/Assembly)
|
||||
set_target_properties(AssemblyGui PROPERTIES PREFIX "../")
|
||||
elseif(MINGW)
|
||||
set_target_properties(AssemblyGui PROPERTIES SUFFIX ".pyd")
|
||||
set_target_properties(AssemblyGui PROPERTIES DEBUG_OUTPUT_NAME "AssemblyGui_d")
|
||||
set_target_properties(AssemblyGui PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Mod/Assembly)
|
||||
set_target_properties(AssemblyGui PROPERTIES PREFIX "")
|
||||
else(MSVC)
|
||||
set_target_properties(AssemblyGui PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Mod/Assembly)
|
||||
set_target_properties(AssemblyGui PROPERTIES PREFIX "")
|
||||
endif(MSVC)
|
||||
|
||||
install(TARGETS AssemblyGui DESTINATION lib)
|
||||
65
src/Mod/Assembly/Gui/Command.cpp
Normal file
@@ -0,0 +1,65 @@
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2008 Jürgen Riegel (juergen.riegel@web.de) *
|
||||
* *
|
||||
* This file is part of the FreeCAD CAx development system. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Library General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* This library 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 library; see the file COPYING.LIB. If not, *
|
||||
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
||||
* Suite 330, Boston, MA 02111-1307, USA *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#include "PreCompiled.h"
|
||||
#ifndef _PreComp_
|
||||
#endif
|
||||
|
||||
#include <Gui/Application.h>
|
||||
#include <Gui/Command.h>
|
||||
#include <Gui/MainWindow.h>
|
||||
#include <Gui/FileDialog.h>
|
||||
|
||||
|
||||
using namespace std;
|
||||
|
||||
DEF_STD_CMD(CmdAssemblyConstraintAxle);
|
||||
|
||||
CmdAssemblyConstraintAxle::CmdAssemblyConstraintAxle()
|
||||
:Command("Assembly_ConstraintAxle")
|
||||
{
|
||||
sAppModule = "Assembly";
|
||||
sGroup = QT_TR_NOOP("Assembly");
|
||||
sMenuText = QT_TR_NOOP("Constraint Axle...");
|
||||
sToolTipText = QT_TR_NOOP("set a axle constraint between two objects");
|
||||
sWhatsThis = sToolTipText;
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "actions/Axle_constraint";
|
||||
}
|
||||
|
||||
|
||||
void CmdAssemblyConstraintAxle::activated(int iMsg)
|
||||
{
|
||||
// load the file with the module
|
||||
//Command::doCommand(Command::Gui, "import Assembly, AssemblyGui");
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
void CreateAssemblyCommands(void)
|
||||
{
|
||||
Gui::CommandManager &rcCmdMgr = Gui::Application::Instance->commandManager();
|
||||
|
||||
rcCmdMgr.addCommand(new CmdAssemblyConstraintAxle());
|
||||
}
|
||||
77
src/Mod/Assembly/Gui/Makefile.am
Normal file
@@ -0,0 +1,77 @@
|
||||
SUBDIRS=Resources
|
||||
|
||||
lib_LTLIBRARIES=libAssemblyGui.la AssemblyGui.la
|
||||
|
||||
BUILT_SOURCES=\
|
||||
moc_AssemblyView.cpp
|
||||
|
||||
libAssemblyGui_la_SOURCES=\
|
||||
AppAssemblyGuiPy.cpp \
|
||||
Command.cpp \
|
||||
AssemblyView.cpp \
|
||||
AssemblyView.h \
|
||||
PreCompiled.cpp \
|
||||
PreCompiled.h \
|
||||
Workbench.cpp \
|
||||
Workbench.h
|
||||
|
||||
# the library search path.
|
||||
libAssemblyGui_la_LDFLAGS = -L../../../Base -L../../../App -L../../../Gui -L../App $(QT_LIBS) $(GL_LIBS) \
|
||||
$(all_libraries) -version-info @LIB_CURRENT@:@LIB_REVISION@:@LIB_AGE@
|
||||
libAssemblyGui_la_CPPFLAGS = -DAssemblyAppExport= -DAssemblyGuiExport=
|
||||
|
||||
libAssemblyGui_la_LIBADD = \
|
||||
@BOOST_SYSTEM_LIB@ \
|
||||
-l@PYTHON_LIB@ \
|
||||
-lxerces-c \
|
||||
-lFreeCADBase \
|
||||
-lFreeCADApp \
|
||||
-lFreeCADGui \
|
||||
-lAssembly
|
||||
|
||||
#--------------------------------------------------------------------------------------
|
||||
# Loader of libAssemblyGui
|
||||
|
||||
AssemblyGui_la_SOURCES=\
|
||||
AppAssemblyGui.cpp
|
||||
|
||||
# the library search path.
|
||||
AssemblyGui_la_LDFLAGS = $(libAssemblyGui_la_LDFLAGS) -module -avoid-version
|
||||
AssemblyGui_la_CPPFLAGS = $(libAssemblyGui_la_CPPFLAGS)
|
||||
|
||||
AssemblyGui_la_LIBADD = \
|
||||
$(libAssemblyGui_la_LIBADD) \
|
||||
Resources/libResources.la \
|
||||
-lAssemblyGui
|
||||
|
||||
AssemblyGui_la_DEPENDENCIES = libAssemblyGui.la
|
||||
|
||||
#--------------------------------------------------------------------------------------
|
||||
|
||||
# rule for Qt MetaObject Compiler:
|
||||
moc_%.cpp: %.h
|
||||
$(QT_MOC) $< -o $(@F)
|
||||
|
||||
# rule for Qt MetaObject Compiler:
|
||||
%.moc: %.h
|
||||
$(QT_MOC) $< -o $(@F)
|
||||
|
||||
# rules for Qt User Interface Compiler:
|
||||
ui_%.h: %.ui
|
||||
$(QT_UIC) $< -o $(@F)
|
||||
|
||||
# rules for Qt Resource Compiler:
|
||||
qrc_%.cpp: %.qrc
|
||||
$(QT_RCC) -name $(*F) $< -o $(@F)
|
||||
|
||||
# set the include path found by configure
|
||||
AM_CXXFLAGS = -I$(top_srcdir)/src -I$(top_builddir)/src $(QT_CXXFLAGS) $(all_includes)
|
||||
|
||||
|
||||
libdir = $(prefix)/Mod/Assembly
|
||||
|
||||
CLEANFILES = $(BUILT_SOURCES)
|
||||
|
||||
EXTRA_DIST = \
|
||||
CMakeLists.txt
|
||||
|
||||
24
src/Mod/Assembly/Gui/PreCompiled.cpp
Normal file
@@ -0,0 +1,24 @@
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2008 Jürgen Riegel (juergen.riegel@web.de) *
|
||||
* *
|
||||
* This file is part of the FreeCAD CAx development system. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Library General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* This library 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 library; see the file COPYING.LIB. If not, *
|
||||
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
||||
* Suite 330, Boston, MA 02111-1307, USA *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#include "PreCompiled.h"
|
||||
74
src/Mod/Assembly/Gui/PreCompiled.h
Normal file
@@ -0,0 +1,74 @@
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2008 Jürgen Riegel (juergen.riegel@web.de) *
|
||||
* *
|
||||
* This file is part of the FreeCAD CAx development system. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Library General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* This library 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 library; see the file COPYING.LIB. If not, *
|
||||
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
||||
* Suite 330, Boston, MA 02111-1307, USA *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#ifndef ASSEMGBLYGUI_PRECOMPILED_H
|
||||
#define ASSEMGBLYGUI_PRECOMPILED_H
|
||||
|
||||
#include <FCConfig.h>
|
||||
|
||||
// Importing of App classes
|
||||
#ifdef FC_OS_WIN32
|
||||
# define AssemblyAppExport __declspec(dllimport)
|
||||
# define AssemblyGuiExport __declspec(dllexport)
|
||||
#else // for Linux
|
||||
# define AssemblyAppExport
|
||||
# define AssemblyGuiExport
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef _PreComp_
|
||||
|
||||
// Python
|
||||
#include <Python.h>
|
||||
|
||||
// standard
|
||||
#include <iostream>
|
||||
#include <assert.h>
|
||||
#include <math.h>
|
||||
|
||||
// STL
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <list>
|
||||
#include <set>
|
||||
#include <algorithm>
|
||||
#include <stack>
|
||||
#include <queue>
|
||||
#include <bitset>
|
||||
|
||||
#include <ode/ode.h>
|
||||
|
||||
#ifdef FC_OS_WIN32
|
||||
# include <windows.h>
|
||||
#endif
|
||||
|
||||
|
||||
// Qt Toolkit
|
||||
#ifndef __Qt4All__
|
||||
# include <Gui/Qt4All.h>
|
||||
#endif
|
||||
|
||||
#endif //_PreComp_
|
||||
|
||||
#endif // ASSEMGBLYGUI_PRECOMPILED_H
|
||||
19
src/Mod/Assembly/Gui/Resources/Assembly.qrc
Normal file
@@ -0,0 +1,19 @@
|
||||
<RCC>
|
||||
<qresource>
|
||||
<file>icons/actions/Axle_constraint.svg</file>
|
||||
<file>translations/Assembly_af.qm</file>
|
||||
<file>translations/Assembly_de.qm</file>
|
||||
<file>translations/Assembly_es.qm</file>
|
||||
<file>translations/Assembly_fi.qm</file>
|
||||
<file>translations/Assembly_fr.qm</file>
|
||||
<file>translations/Assembly_hr.qm</file>
|
||||
<file>translations/Assembly_it.qm</file>
|
||||
<file>translations/Assembly_nl.qm</file>
|
||||
<file>translations/Assembly_no.qm</file>
|
||||
<file>translations/Assembly_pt.qm</file>
|
||||
<file>translations/Assembly_ru.qm</file>
|
||||
<file>translations/Assembly_se.qm</file>
|
||||
<file>translations/Assembly_uk.qm</file>
|
||||
<file>translations/Assembly_zh.qm</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
62
src/Mod/Assembly/Gui/Resources/Makefile.am
Normal file
@@ -0,0 +1,62 @@
|
||||
noinst_LTLIBRARIES=libResources.la
|
||||
|
||||
BUILT_SOURCES=\
|
||||
qrc_Drawing.cpp
|
||||
|
||||
nodist_libResources_la_SOURCES=\
|
||||
qrc_Drawing.cpp
|
||||
|
||||
EXTRA_DIST = \
|
||||
icons/actions/document-new.png \
|
||||
icons/actions/document-new.svg \
|
||||
icons/actions/drawing-landscape-A0.svg \
|
||||
icons/actions/drawing-landscape-A1.svg \
|
||||
icons/actions/drawing-landscape-A2.svg \
|
||||
icons/actions/drawing-landscape.svg \
|
||||
icons/actions/drawing-view.svg \
|
||||
icons/actions/drawing-landscape-A3.svg \
|
||||
icons/actions/drawing-landscape-A4.svg \
|
||||
icons/actions/drawing-landscape-new.svg \
|
||||
icons/actions/drawing-portrait-A4.svg \
|
||||
icons/Page.svg \
|
||||
icons/Pages.svg \
|
||||
icons/View.svg \
|
||||
translations/Assembly_af.qm \
|
||||
translations/Assembly_de.qm \
|
||||
translations/Assembly_fi.qm \
|
||||
translations/Assembly_fr.qm \
|
||||
translations/Assembly_it.qm \
|
||||
translations/Assembly_nl.qm \
|
||||
translations/Assembly_no.qm \
|
||||
translations/Assembly_ru.qm \
|
||||
translations/Assembly_uk.qm \
|
||||
translations/Assembly_af.ts \
|
||||
translations/Assembly_de.ts \
|
||||
translations/Assembly_fi.ts \
|
||||
translations/Assembly_fr.ts \
|
||||
translations/Assembly_it.ts \
|
||||
translations/Assembly_nl.ts \
|
||||
translations/Assembly_no.ts \
|
||||
translations/Assembly_ru.ts \
|
||||
translations/Assembly_uk.ts \
|
||||
Drawing.qrc \
|
||||
UpdateResources.bat
|
||||
|
||||
|
||||
# rule for Qt MetaObject Compiler:
|
||||
moc_%.cpp: %.h
|
||||
$(QT_MOC) $< -o $(@F)
|
||||
|
||||
# rule for Qt MetaObject Compiler:
|
||||
%.moc: %.h
|
||||
$(QT_MOC) $< -o $(@F)
|
||||
|
||||
# rules for Qt Resource Compiler:
|
||||
qrc_%.cpp: %.qrc
|
||||
$(QT_RCC) -name $(*F) $< -o $(@F)
|
||||
|
||||
|
||||
# set the include path found by configure
|
||||
AM_CXXFLAGS = -I$(top_srcdir)/src -I$(top_builddir)/src -I$(srcdir)/.. $(all_includes) $(QT_CXXFLAGS)
|
||||
|
||||
CLEANFILES = $(BUILT_SOURCES)
|
||||
2
src/Mod/Assembly/Gui/Resources/UpdateResources.bat
Normal file
@@ -0,0 +1,2 @@
|
||||
python ..\..\..\..\Tools\dir2qrc.py -v -o Drawing.qrc
|
||||
@pause
|
||||
353
src/Mod/Assembly/Gui/Resources/icons/actions/Axle_constraint.svg
Normal file
@@ -0,0 +1,353 @@
|
||||
<?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://web.resource.org/cc/"
|
||||
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="48.000000px"
|
||||
height="48.000000px"
|
||||
id="svg249"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.45.1"
|
||||
sodipodi:docbase="C:\# SW-Projects\Privat\FreeCAD\FreeCAD_0.7\src\Mod\Assembly\Gui\Resources\icons\actions"
|
||||
sodipodi:docname="Axel_constraint.svg"
|
||||
inkscape:export-filename="/home/jimmac/gfx/novell/pdes/trunk/docs/BIGmime-text.png"
|
||||
inkscape:export-xdpi="240.00000"
|
||||
inkscape:export-ydpi="240.00000"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<defs
|
||||
id="defs3">
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient5031"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient5060">
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop5062" />
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5064" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient5029"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" />
|
||||
<linearGradient
|
||||
id="linearGradient5048">
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="0"
|
||||
id="stop5050" />
|
||||
<stop
|
||||
id="stop5056"
|
||||
offset="0.5"
|
||||
style="stop-color:black;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5052" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5048"
|
||||
id="linearGradient5027"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
|
||||
x1="302.85715"
|
||||
y1="366.64789"
|
||||
x2="302.85715"
|
||||
y2="609.50507" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4542">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4544" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop4546" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4542"
|
||||
id="radialGradient4548"
|
||||
cx="24.306795"
|
||||
cy="42.07798"
|
||||
fx="24.306795"
|
||||
fy="42.07798"
|
||||
r="15.821514"
|
||||
gradientTransform="matrix(1.000000,0.000000,0.000000,0.284916,-6.310056e-16,30.08928)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
id="linearGradient15662">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop15664" />
|
||||
<stop
|
||||
style="stop-color:#f8f8f8;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop15666" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
fy="64.5679"
|
||||
fx="20.8921"
|
||||
r="5.257"
|
||||
cy="64.5679"
|
||||
cx="20.8921"
|
||||
id="aigrd3">
|
||||
<stop
|
||||
id="stop15573"
|
||||
style="stop-color:#F0F0F0"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop15575"
|
||||
style="stop-color:#9a9a9a;stop-opacity:1.0000000;"
|
||||
offset="1.0000000" />
|
||||
</radialGradient>
|
||||
<radialGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
fy="114.5684"
|
||||
fx="20.8921"
|
||||
r="5.256"
|
||||
cy="114.5684"
|
||||
cx="20.8921"
|
||||
id="aigrd2">
|
||||
<stop
|
||||
id="stop15566"
|
||||
style="stop-color:#F0F0F0"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop15568"
|
||||
style="stop-color:#9a9a9a;stop-opacity:1.0000000;"
|
||||
offset="1.0000000" />
|
||||
</radialGradient>
|
||||
<linearGradient
|
||||
id="linearGradient269">
|
||||
<stop
|
||||
style="stop-color:#a3a3a3;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop270" />
|
||||
<stop
|
||||
style="stop-color:#4c4c4c;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop271" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient259">
|
||||
<stop
|
||||
style="stop-color:#fafafa;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop260" />
|
||||
<stop
|
||||
style="stop-color:#bbbbbb;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop261" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient12512">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop12513" />
|
||||
<stop
|
||||
style="stop-color:#fff520;stop-opacity:0.89108908;"
|
||||
offset="0.50000000"
|
||||
id="stop12517" />
|
||||
<stop
|
||||
style="stop-color:#fff300;stop-opacity:0.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop12514" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient12512"
|
||||
id="radialGradient278"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
cx="55.000000"
|
||||
cy="125.00000"
|
||||
fx="55.000000"
|
||||
fy="125.00000"
|
||||
r="14.375000" />
|
||||
<radialGradient
|
||||
r="37.751713"
|
||||
fy="3.7561285"
|
||||
fx="8.8244190"
|
||||
cy="3.7561285"
|
||||
cx="8.8244190"
|
||||
gradientTransform="matrix(0.968273,0.000000,0.000000,1.032767,3.353553,0.646447)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient15656"
|
||||
xlink:href="#linearGradient269"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="86.708450"
|
||||
fy="35.736916"
|
||||
fx="33.966679"
|
||||
cy="35.736916"
|
||||
cx="33.966679"
|
||||
gradientTransform="scale(0.960493,1.041132)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient15658"
|
||||
xlink:href="#linearGradient259"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="38.158695"
|
||||
fy="7.2678967"
|
||||
fx="8.1435566"
|
||||
cy="7.2678967"
|
||||
cx="8.1435566"
|
||||
gradientTransform="matrix(0.968273,0.000000,0.000000,1.032767,3.353553,0.646447)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient15668"
|
||||
xlink:href="#linearGradient15662"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#aigrd2"
|
||||
id="radialGradient2283"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.229703,0.000000,0.000000,0.229703,4.613529,3.979808)"
|
||||
cx="20.8921"
|
||||
cy="114.5684"
|
||||
fx="20.8921"
|
||||
fy="114.5684"
|
||||
r="5.256" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#aigrd3"
|
||||
id="radialGradient2285"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.229703,0.000000,0.000000,0.229703,4.613529,3.979808)"
|
||||
cx="20.8921"
|
||||
cy="64.5679"
|
||||
fx="20.8921"
|
||||
fy="64.5679"
|
||||
r="5.257" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="0.32941176"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.6568542"
|
||||
inkscape:cx="29.249501"
|
||||
inkscape:cy="11.893884"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="872"
|
||||
inkscape:window-height="659"
|
||||
inkscape:window-x="166"
|
||||
inkscape:window-y="151"
|
||||
inkscape:showpageshadow="false" />
|
||||
<metadata
|
||||
id="metadata4">
|
||||
<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>New Document</dc:title>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Jakub Steiner</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:source>http://jimmac.musichall.cz</dc:source>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Distribution" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/Notice" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/Attribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/ShareAlike" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Shadow"
|
||||
id="layer6"
|
||||
inkscape:groupmode="layer" />
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Base"
|
||||
inkscape:groupmode="layer"
|
||||
style="display:inline">
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
id="path15674"
|
||||
d="M 12.500000,5.0205154 L 12.500000,43.038228"
|
||||
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:0.20467831" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#ff5555;fill-opacity:1;stroke:none;stroke-opacity:1"
|
||||
id="path2219"
|
||||
sodipodi:cx="27.312"
|
||||
sodipodi:cy="15.119534"
|
||||
sodipodi:rx="15.998291"
|
||||
sodipodi:ry="4.0658641"
|
||||
d="M 43.310291 15.119534 A 15.998291 4.0658641 0 1 1 11.313709,15.119534 A 15.998291 4.0658641 0 1 1 43.310291 15.119534 z"
|
||||
transform="translate(-2.8284272,0.1767767)" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 24.041631,3.0987193 C 24.041631,45.87868 24.041631,45.87868 24.041631,45.87868 L 24.395184,45.87868"
|
||||
id="path2223" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#00ffff;fill-opacity:1;stroke:none;stroke-opacity:1;display:inline"
|
||||
id="path2225"
|
||||
sodipodi:cx="27.312"
|
||||
sodipodi:cy="15.119534"
|
||||
sodipodi:rx="15.998291"
|
||||
sodipodi:ry="4.0658641"
|
||||
d="M 43.310291 15.119534 A 15.998291 4.0658641 0 1 1 11.313709,15.119534 A 15.998291 4.0658641 0 1 1 43.310291 15.119534 z"
|
||||
transform="matrix(1.2983426,0,0,1,-11.772255,9.1923891)" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer4"
|
||||
inkscape:label="new"
|
||||
style="display:inline" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 11 KiB |
BIN
src/Mod/Assembly/Gui/Resources/translations/Assembly_af.qm
Normal file
30
src/Mod/Assembly/Gui/Resources/translations/Assembly_af.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS>
|
||||
<context>
|
||||
<name>AssemblyGui::Workbench</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>Samevoeging</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CmdAssemblyConstraintAxle</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>Samevoeging</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Constraint Axle...</source>
|
||||
<translation>Beperking met 'n as...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>set a axle constraint between two objects</source>
|
||||
<translation>definieer 'n bewegingsbeperking tussen twee voorwerpe met 'n as</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
BIN
src/Mod/Assembly/Gui/Resources/translations/Assembly_de.qm
Normal file
30
src/Mod/Assembly/Gui/Resources/translations/Assembly_de.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.0" language="de_DE">
|
||||
<context>
|
||||
<name>CmdAssemblyConstraintAxle</name>
|
||||
<message>
|
||||
<location filename="../../Command.cpp" line="+42"/>
|
||||
<source>Assembly</source>
|
||||
<translation>Baugruppe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<source>Constraint Axle...</source>
|
||||
<translation>Achseneinschränkung...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<source>set a axle constraint between two objects</source>
|
||||
<translation>Festlegen der Achsen-Einschränkung zwischen zwei Objekten</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Workbench</name>
|
||||
<message>
|
||||
<location filename="../../Workbench.cpp" line="+50"/>
|
||||
<source>Assembly</source>
|
||||
<translation>Baugruppe</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
BIN
src/Mod/Assembly/Gui/Resources/translations/Assembly_es.qm
Normal file
30
src/Mod/Assembly/Gui/Resources/translations/Assembly_es.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS>
|
||||
<context>
|
||||
<name>AssemblyGui::Workbench</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>Ensamblaje</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CmdAssemblyConstraintAxle</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>Ensamblaje</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Constraint Axle...</source>
|
||||
<translation>Restricción de eje...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>set a axle constraint between two objects</source>
|
||||
<translation>definir una restricción de eje entre dos objetos</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
BIN
src/Mod/Assembly/Gui/Resources/translations/Assembly_fi.qm
Normal file
30
src/Mod/Assembly/Gui/Resources/translations/Assembly_fi.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS>
|
||||
<context>
|
||||
<name>AssemblyGui::Workbench</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>Kokoonpano</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CmdAssemblyConstraintAxle</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>Kokoonpano</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Constraint Axle...</source>
|
||||
<translation>Akseli rajoite...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>set a axle constraint between two objects</source>
|
||||
<translation>aseta akselirajoite kahden kohteen välille</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
BIN
src/Mod/Assembly/Gui/Resources/translations/Assembly_fr.qm
Normal file
30
src/Mod/Assembly/Gui/Resources/translations/Assembly_fr.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS>
|
||||
<context>
|
||||
<name>AssemblyGui::Workbench</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>assemblage</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CmdAssemblyConstraintAxle</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>assemblage</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Constraint Axle...</source>
|
||||
<translation>Contrainte axiale...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>set a axle constraint between two objects</source>
|
||||
<translation>définir une contrainte axiale entre deux objets</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
BIN
src/Mod/Assembly/Gui/Resources/translations/Assembly_hr.qm
Normal file
30
src/Mod/Assembly/Gui/Resources/translations/Assembly_hr.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS>
|
||||
<context>
|
||||
<name>AssemblyGui::Workbench</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>Montaža</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CmdAssemblyConstraintAxle</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>Montaža</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Constraint Axle...</source>
|
||||
<translation>Ograničena osovina...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>set a axle constraint between two objects</source>
|
||||
<translation>postaviti ograničenja osovine između dva objekta</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
BIN
src/Mod/Assembly/Gui/Resources/translations/Assembly_it.qm
Normal file
30
src/Mod/Assembly/Gui/Resources/translations/Assembly_it.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS>
|
||||
<context>
|
||||
<name>AssemblyGui::Workbench</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>Assembly</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CmdAssemblyConstraintAxle</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>Assembly</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Constraint Axle...</source>
|
||||
<translation>Vincolo assiale...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>set a axle constraint between two objects</source>
|
||||
<translation>Imposta un vincolo assiale tra due oggetti</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
BIN
src/Mod/Assembly/Gui/Resources/translations/Assembly_nl.qm
Normal file
30
src/Mod/Assembly/Gui/Resources/translations/Assembly_nl.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS>
|
||||
<context>
|
||||
<name>AssemblyGui::Workbench</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>Assemblage</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CmdAssemblyConstraintAxle</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>Assemblage</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Constraint Axle...</source>
|
||||
<translation>As-beperking...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>set a axle constraint between two objects</source>
|
||||
<translation>Stel een as-beperking tussen twee objecten in</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
BIN
src/Mod/Assembly/Gui/Resources/translations/Assembly_no.qm
Normal file
30
src/Mod/Assembly/Gui/Resources/translations/Assembly_no.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS>
|
||||
<context>
|
||||
<name>AssemblyGui::Workbench</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>Montering</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CmdAssemblyConstraintAxle</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>Montering</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Constraint Axle...</source>
|
||||
<translation>Aksellås...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>set a axle constraint between two objects</source>
|
||||
<translation>sett en aksellås mellom to objekter</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
BIN
src/Mod/Assembly/Gui/Resources/translations/Assembly_pt.qm
Normal file
30
src/Mod/Assembly/Gui/Resources/translations/Assembly_pt.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS>
|
||||
<context>
|
||||
<name>AssemblyGui::Workbench</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>Assemblagem</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CmdAssemblyConstraintAxle</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>Assemblagem</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Constraint Axle...</source>
|
||||
<translation>Restrição de eixo...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>set a axle constraint between two objects</source>
|
||||
<translation>definir uma restrição de eixo entre dois objetos</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
BIN
src/Mod/Assembly/Gui/Resources/translations/Assembly_ru.qm
Normal file
30
src/Mod/Assembly/Gui/Resources/translations/Assembly_ru.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS>
|
||||
<context>
|
||||
<name>AssemblyGui::Workbench</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>Сборка</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CmdAssemblyConstraintAxle</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>Сборка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Constraint Axle...</source>
|
||||
<translation>Ограничение оси...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>set a axle constraint between two objects</source>
|
||||
<translation>задать ось ограниченную двумя объектами</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
BIN
src/Mod/Assembly/Gui/Resources/translations/Assembly_se.qm
Normal file
30
src/Mod/Assembly/Gui/Resources/translations/Assembly_se.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS>
|
||||
<context>
|
||||
<name>AssemblyGui::Workbench</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>Ihopsättning</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CmdAssemblyConstraintAxle</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>Ihopsättning</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Constraint Axle...</source>
|
||||
<translation>Begränsningsaxel...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>set a axle constraint between two objects</source>
|
||||
<translation>Sätt en axelbegränsning mellan två objekt</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
BIN
src/Mod/Assembly/Gui/Resources/translations/Assembly_uk.qm
Normal file
30
src/Mod/Assembly/Gui/Resources/translations/Assembly_uk.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS>
|
||||
<context>
|
||||
<name>AssemblyGui::Workbench</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>Збірка</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CmdAssemblyConstraintAxle</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>Збірка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Constraint Axle...</source>
|
||||
<translation>Обмеження осі...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>set a axle constraint between two objects</source>
|
||||
<translation>задати вісь обмежену двома об'єктами</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
BIN
src/Mod/Assembly/Gui/Resources/translations/Assembly_zh.qm
Normal file
30
src/Mod/Assembly/Gui/Resources/translations/Assembly_zh.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS>
|
||||
<context>
|
||||
<name>AssemblyGui::Workbench</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>装配</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CmdAssemblyConstraintAxle</name>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Assembly</source>
|
||||
<translation>装配</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>Constraint Axle...</source>
|
||||
<translation>约束轴……</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location/>
|
||||
<source>set a axle constraint between two objects</source>
|
||||
<translation>两个对象之间设置轴约束</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
61
src/Mod/Assembly/Gui/Workbench.cpp
Normal file
@@ -0,0 +1,61 @@
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2008 Werner Mayer <wmayer[at]users.sourceforge.net> *
|
||||
* *
|
||||
* This file is part of the FreeCAD CAx development system. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Library General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* This library 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 library; see the file COPYING.LIB. If not, *
|
||||
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
||||
* Suite 330, Boston, MA 02111-1307, USA *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#include "PreCompiled.h"
|
||||
|
||||
#ifndef _PreComp_
|
||||
# include <qobject.h>
|
||||
#endif
|
||||
|
||||
#include "Workbench.h"
|
||||
#include <Gui/ToolBarManager.h>
|
||||
|
||||
using namespace AssemblyGui;
|
||||
|
||||
/// @namespace AssemblyGui @class Workbench
|
||||
TYPESYSTEM_SOURCE(AssemblyGui::Workbench, Gui::StdWorkbench)
|
||||
|
||||
Workbench::Workbench()
|
||||
{
|
||||
}
|
||||
|
||||
Workbench::~Workbench()
|
||||
{
|
||||
}
|
||||
|
||||
Gui::ToolBarItem* Workbench::setupToolBars() const
|
||||
{
|
||||
Gui::ToolBarItem* root = StdWorkbench::setupToolBars();
|
||||
Gui::ToolBarItem* part = new Gui::ToolBarItem(root);
|
||||
part->setCommand(QT_TR_NOOP("Assembly"));
|
||||
*part << "Assembly_ConstraintAxle";
|
||||
return root;
|
||||
}
|
||||
|
||||
Gui::ToolBarItem* Workbench::setupCommandBars() const
|
||||
{
|
||||
// Part tools
|
||||
Gui::ToolBarItem* root = new Gui::ToolBarItem;
|
||||
return root;
|
||||
}
|
||||
|
||||
50
src/Mod/Assembly/Gui/Workbench.h
Normal file
@@ -0,0 +1,50 @@
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2008 Werner Mayer <wmayer[at]users.sourceforge.net> *
|
||||
* *
|
||||
* This file is part of the FreeCAD CAx development system. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Library General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* This library 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 library; see the file COPYING.LIB. If not, *
|
||||
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
||||
* Suite 330, Boston, MA 02111-1307, USA *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#ifndef IMAGE_WORKBENCH_H
|
||||
#define IMAGE_WORKBENCH_H
|
||||
|
||||
#include <Gui/Workbench.h>
|
||||
|
||||
namespace AssemblyGui {
|
||||
|
||||
/**
|
||||
* @author Werner Mayer
|
||||
*/
|
||||
class AssemblyGuiExport Workbench : public Gui::StdWorkbench
|
||||
{
|
||||
TYPESYSTEM_HEADER();
|
||||
|
||||
public:
|
||||
Workbench();
|
||||
virtual ~Workbench();
|
||||
|
||||
protected:
|
||||
Gui::ToolBarItem* setupToolBars() const;
|
||||
Gui::ToolBarItem* setupCommandBars() const;
|
||||
};
|
||||
|
||||
} // namespace AssemblyGui
|
||||
|
||||
|
||||
#endif // IMAGE_WORKBENCH_H
|
||||
47
src/Mod/Assembly/Init.py
Normal file
@@ -0,0 +1,47 @@
|
||||
# FreeCAD init script of the Assembly module
|
||||
# (c) 2001 Juergen Riegel
|
||||
|
||||
#***************************************************************************
|
||||
#* (c) Juergen Riegel (juergen.riegel@web.de) 2002 *
|
||||
#* *
|
||||
#* This file is part of the FreeCAD CAx development system. *
|
||||
#* *
|
||||
#* This program is free software; you can redistribute it and/or modify *
|
||||
#* it under the terms of the GNU Lesser General Public License (LGPL) *
|
||||
#* as published by the Free Software Foundation; either version 2 of *
|
||||
#* the License, or (at your option) any later version. *
|
||||
#* for detail see the LICENCE text file. *
|
||||
#* *
|
||||
#* FreeCAD 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 Lesser General Public License for more details. *
|
||||
#* *
|
||||
#* You should have received a copy of the GNU Library General Public *
|
||||
#* License along with FreeCAD; if not, write to the Free Software *
|
||||
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
#* USA *
|
||||
#* *
|
||||
#* Juergen Riegel 2002 *
|
||||
#***************************************************************************/
|
||||
|
||||
|
||||
class AssemblyDocument:
|
||||
"Assembly document"
|
||||
def Info(self):
|
||||
return "Assembly document"
|
||||
|
||||
|
||||
# Get the Parameter Group of this module
|
||||
ParGrp = App.ParamGet("System parameter:Modules").GetGroup("Assembly")
|
||||
|
||||
# Set the needed information
|
||||
ParGrp.SetString("HelpIndex", "Assembly/Help/index.html")
|
||||
ParGrp.SetString("DocTemplateName", "Assembly")
|
||||
ParGrp.SetString("DocTemplateScript","TemplAssembly.py")
|
||||
ParGrp.SetString("WorkBenchName", "Assembly Design")
|
||||
ParGrp.SetString("WorkBenchModule", "AssemblyWorkbench.py")
|
||||
|
||||
|
||||
#FreeCAD.EndingAdd("CAD formats (*.igs *.iges *.step *.stp *.brep *.brp)","Assembly")
|
||||
|
||||
70
src/Mod/Assembly/InitGui.py
Normal file
@@ -0,0 +1,70 @@
|
||||
# Assembly gui init module
|
||||
# (c) 2003 Juergen Riegel
|
||||
#
|
||||
# Gathering all the information to start FreeCAD
|
||||
# This is the second one of three init scripts, the third one
|
||||
# runs when the gui is up
|
||||
|
||||
#***************************************************************************
|
||||
#* (c) Juergen Riegel (juergen.riegel@web.de) 2002 *
|
||||
#* *
|
||||
#* This file is part of the FreeCAD CAx development system. *
|
||||
#* *
|
||||
#* 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. *
|
||||
#* *
|
||||
#* FreeCAD 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 FreeCAD; if not, write to the Free Software *
|
||||
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
#* USA *
|
||||
#* *
|
||||
#* Juergen Riegel 2002 *
|
||||
#***************************************************************************/
|
||||
|
||||
|
||||
|
||||
class AssemblyWorkbench ( Workbench ):
|
||||
"Assembly workbench object"
|
||||
Icon = """
|
||||
/* XPM */
|
||||
static const char *Assembly_Box[]={
|
||||
"16 16 3 1",
|
||||
". c None",
|
||||
"# c #000000",
|
||||
"a c #c6c642",
|
||||
"................",
|
||||
".......#######..",
|
||||
"......#aaaaa##..",
|
||||
".....#aaaaa###..",
|
||||
"....#aaaaa##a#..",
|
||||
"...#aaaaa##aa#..",
|
||||
"..#aaaaa##aaa#..",
|
||||
".########aaaa#..",
|
||||
".#aaaaa#aaaaa#..",
|
||||
".#aaaaa#aaaa##..",
|
||||
".#aaaaa#aaa##...",
|
||||
".#aaaaa#aa##....",
|
||||
".#aaaaa#a##... .",
|
||||
".#aaaaa###......",
|
||||
".########.......",
|
||||
"................"};
|
||||
"""
|
||||
MenuText = "Assembly"
|
||||
ToolTip = "Assembly workbench"
|
||||
|
||||
def Initialize(self):
|
||||
# load the module
|
||||
import AssemblyGui
|
||||
import Assembly
|
||||
def GetClassName(self):
|
||||
return "AssemblyGui::Workbench"
|
||||
|
||||
Gui.addWorkbench(AssemblyWorkbench())
|
||||
11
src/Mod/Assembly/Makefile.am
Normal file
@@ -0,0 +1,11 @@
|
||||
SUBDIRS=App Gui
|
||||
|
||||
# Change data dir from default ($(prefix)/share) to $(prefix)
|
||||
datadir = $(prefix)/Mod/Assembly
|
||||
|
||||
data_DATA = Init.py InitGui.py
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(data_DATA) \
|
||||
assembly.dox \
|
||||
CMakeLists.txt
|
||||
3
src/Mod/Assembly/assembly.dox
Normal file
@@ -0,0 +1,3 @@
|
||||
/** \defgroup ASSEMBLY Assembly
|
||||
* \ingroup WORKBENCHES */
|
||||
|
||||
46
src/Mod/CMakeLists.txt
Normal file
@@ -0,0 +1,46 @@
|
||||
add_subdirectory(Points)
|
||||
add_subdirectory(Complete)
|
||||
add_subdirectory(Test)
|
||||
#add_subdirectory(TemplatePyMod)
|
||||
|
||||
add_subdirectory(Image)
|
||||
|
||||
add_subdirectory(Mesh)
|
||||
|
||||
add_subdirectory(Part)
|
||||
add_subdirectory(PartDesign)
|
||||
add_subdirectory(Raytracing)
|
||||
add_subdirectory(Drawing)
|
||||
IF(EIGEN3_FOUND)
|
||||
add_subdirectory(Sketcher)
|
||||
add_subdirectory(Robot)
|
||||
ELSE(EIGEN3_FOUND)
|
||||
MESSAGE("Due to the missing Eigen3 library the Sketcher module won't be built")
|
||||
MESSAGE("Due to the missing Eigen3 library the Robot module won't be built")
|
||||
ENDIF(EIGEN3_FOUND)
|
||||
add_subdirectory(Machining_Distortion)
|
||||
|
||||
add_subdirectory(ReverseEngineering)
|
||||
add_subdirectory(MeshPart)
|
||||
add_subdirectory(Draft)
|
||||
|
||||
add_subdirectory(Web)
|
||||
add_subdirectory(Start)
|
||||
add_subdirectory(Idf)
|
||||
add_subdirectory(Import)
|
||||
add_subdirectory(Inspection)
|
||||
|
||||
add_subdirectory(Arch)
|
||||
|
||||
add_subdirectory(Assembly)
|
||||
|
||||
if(FREECAD_BUILD_CAM)
|
||||
add_subdirectory(Cam)
|
||||
endif(FREECAD_BUILD_CAM)
|
||||
if(FREECAD_BUILD_FEM)
|
||||
add_subdirectory(Fem)
|
||||
endif(FREECAD_BUILD_FEM)
|
||||
if(FREECAD_BUILD_SANDBOX)
|
||||
add_subdirectory(Sandbox)
|
||||
endif(FREECAD_BUILD_SANDBOX)
|
||||
|
||||
62
src/Mod/Cam/App/AppCam.cpp
Normal file
@@ -0,0 +1,62 @@
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2007 *
|
||||
* Joachim Zettler <Joachim.Zettler@gmx.de> *
|
||||
* Jürgen Riegel <Juergen.Riegel@web.de *
|
||||
* This file is part of the FreeCAD CAx development system. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Library General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* This library 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 library; see the file COPYING.LIB. If not, *
|
||||
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
||||
* Suite 330, Boston, MA 02111-1307, USA *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#include "PreCompiled.h"
|
||||
#ifndef _PreComp_
|
||||
# include <Python.h>
|
||||
#endif
|
||||
|
||||
#include <Base/Console.h>
|
||||
#include <Base/Interpreter.h>
|
||||
|
||||
|
||||
extern struct PyMethodDef Cam_methods[];
|
||||
|
||||
PyDoc_STRVAR(module_part_doc,
|
||||
"This module is the playground for the CAM stuff.");
|
||||
|
||||
extern "C"
|
||||
{
|
||||
void AppCamExport initCam()
|
||||
{
|
||||
// load dependend module
|
||||
try {
|
||||
Base::Interpreter().loadModule("Part");
|
||||
Base::Interpreter().loadModule("Mesh");
|
||||
}
|
||||
catch(const Base::Exception& e) {
|
||||
PyErr_SetString(PyExc_ImportError, e.what());
|
||||
return;
|
||||
}
|
||||
|
||||
Py_InitModule3("Cam", Cam_methods, module_part_doc); /* mod name, table ptr */
|
||||
Base::Console().Log("Loading Cam module... done\n");
|
||||
|
||||
// NOTE: To finish the initialization of our own type objects we must
|
||||
// call PyType_Ready, otherwise we run into a segmentation fault, later on.
|
||||
// This function is responsible for adding inherited slots from a type's base class.
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
} // extern "C"
|
||||
4251
src/Mod/Cam/App/AppCamPy.cpp
Normal file
1520
src/Mod/Cam/App/Approx.cpp
Normal file
135
src/Mod/Cam/App/Approx.h
Normal file
@@ -0,0 +1,135 @@
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2007 *
|
||||
* Joachim Zettler <Joachim.Zettler@gmx.de> *
|
||||
* Human Rezai <human@mytum.de> *
|
||||
* Mohamad Najib Muhammad Noor <najib_bean@yahoo.co.uk> *
|
||||
* *
|
||||
* This file is part of the FreeCAD CAx development system. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Library General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* This library 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 library; see the file COPYING.LIB. If not, *
|
||||
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
||||
* Suite 330, Boston, MA 02111-1307, USA *
|
||||
* *
|
||||
***************************************************************************/
|
||||
/**************APPROX.H*********************
|
||||
*Class Approximate, inheriting from Routines
|
||||
*Dependancies:- BOOST, ATLAS, UMFPACK, BLAS
|
||||
* LAPACK
|
||||
********************************************/
|
||||
|
||||
#ifndef APPROX_H
|
||||
#define APPROX_H
|
||||
|
||||
#ifndef NDEBUG //This is for faster matrix operations. In fact, some checks are turned off in the uBlas functions
|
||||
#define NDEBUG
|
||||
#endif
|
||||
/*******MAIN INCLUDE*********/
|
||||
#include "routine.h"
|
||||
|
||||
#include <GeomAdaptor_Surface.hxx>
|
||||
|
||||
/*******BOOST********/
|
||||
#include <boost/numeric/ublas/matrix.hpp>
|
||||
|
||||
/*****NAMESPACE******/
|
||||
using namespace boost::numeric;
|
||||
|
||||
/*! \class Approximate
|
||||
\brief The main class for the approximate routine
|
||||
|
||||
Inheriting the Routines class defined in Routines.h, it takes a mesh structure and tolerance level as it's input parameter.
|
||||
|
||||
As output, it gives out the following NURBS info:-
|
||||
Control Points, Knot U, Knot V, Order U, Order V
|
||||
|
||||
where Control Points, Knot U, Knot V are of type std::vectors, Order U and Order V of type int
|
||||
|
||||
In this program, it will be directly converted into a topo surface from the given information
|
||||
*/
|
||||
class AppCamExport Approximate : protected Routines
|
||||
{
|
||||
public:
|
||||
Approximate(const MeshCore::MeshKernel &m, std::vector<double> &_Cntrl, std::vector<double> &_KnotU, std::vector<double> &_KnotV,
|
||||
int &_OrderU, int &_OrderV, double tol);
|
||||
~Approximate();
|
||||
MeshCore::MeshKernel MeshParam;
|
||||
|
||||
GeomAdaptor_Surface aAdaptorSurface;
|
||||
protected:
|
||||
void ParameterBoundary();
|
||||
void ParameterInnerPoints();
|
||||
void ErrorApprox();
|
||||
void ApproxMain();
|
||||
double Reparam();
|
||||
void eFair2(ublas::compressed_matrix<double> &E_Matrix);
|
||||
void ComputeError(int &h, double eps_1, double eps_2, double &max_error,
|
||||
double &av, double &c2, std::vector <double> &err_w);
|
||||
void ExtendNurb(double c2, int h);
|
||||
void ReorderNeighbourList(std::set<unsigned long> &pnt,
|
||||
std::set<unsigned long> &face, std::vector<unsigned long> &nei,unsigned long CurInd);
|
||||
//void RemakeList(std::vector<MyMesh::VertexHandle> &v_neighbour);
|
||||
|
||||
private:
|
||||
/** @brief Local Mesh */
|
||||
MeshCore::MeshKernel LocalMesh; //Local Mesh
|
||||
/** @brief Parameterized Mesh */
|
||||
MeshCore::MeshKernel ParameterMesh; //Parameterized Mesh - ONLY USED FOR VISUALIZING TO CHECK FOR PARAMETERIZATION ERRORS
|
||||
/** @brief total number of mesh-points */
|
||||
int NumOfPoints; //Info about the Mesh
|
||||
/** @brief number of inner mesh-points */
|
||||
int NumOfInnerPoints;
|
||||
/** @brief number of boundary mesh-points */
|
||||
int NumOfOuterPoints;
|
||||
/** @brief error-tolerance */
|
||||
double tolerance; //error level
|
||||
/** @brief Parametervalues in x-direction*/
|
||||
ublas::vector<double> ParameterX; //Parameterized Coordinate Lists
|
||||
/** @brief Parametervalues in y-direction*/
|
||||
ublas::vector<double> ParameterY;
|
||||
/** @brief Parametervalues of the boundary-points in x-direction*/
|
||||
ublas::vector<double> BoundariesX; //Parametrized Boundaries' Coordinate List
|
||||
/** @brief Parametervalues of the boundary-points in y-direction*/
|
||||
ublas::vector<double> BoundariesY;
|
||||
/** @brief Original Boundaries' Coordinate List in x-direction*/
|
||||
std::vector<double> UnparamBoundariesX; //Original Boundaries' Coordinate List
|
||||
/** @brief Original Boundaries' Coordinate List in y-direction*/
|
||||
std::vector<double> UnparamBoundariesY;
|
||||
/** @brief Original Boundaries' Coordinate List in z-direction*/
|
||||
std::vector<double> UnparamBoundariesZ;
|
||||
/** @brief Original Coordinate List in x-direction*/
|
||||
std::vector<double> UnparamX; //Original Coordinate Lists
|
||||
/** @brief Original Coordinate List in y-direction*/
|
||||
std::vector<double> UnparamY;
|
||||
/** @brief Original Coordinate List in z-direction*/
|
||||
std::vector<double> UnparamZ;
|
||||
|
||||
std::vector<int> mapper;
|
||||
/** @brief List of indicies of the boundary points*/
|
||||
std::list< std::vector <unsigned long> > BoundariesIndex;
|
||||
/** @brief List of point-coordinates of the boundary points*/
|
||||
std::list< std::vector <Base::Vector3f> > BoundariesPoints;
|
||||
|
||||
//NURBS
|
||||
NURBS MainNurb;
|
||||
|
||||
//Bounding box
|
||||
double MinX;
|
||||
double MaxX;
|
||||
double MinY;
|
||||
double MaxY;
|
||||
|
||||
};
|
||||
|
||||
#endif /*APPROX_H DEFINED*/
|
||||
|
||||
519
src/Mod/Cam/App/BRepAdaptor_CompCurve2.cxx
Normal file
@@ -0,0 +1,519 @@
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2007 *
|
||||
* Joachim Zettler <Joachim.Zettler@gmx.de> *
|
||||
* Adapted by Joachim Zettler to use with a WireExplorer made *
|
||||
* by Stephane Routelous *
|
||||
* *
|
||||
* This file is part of the FreeCAD CAx development system. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Library General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* This library 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 library; see the file COPYING.LIB. If not, *
|
||||
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
||||
* Suite 330, Boston, MA 02111-1307, USA *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
//
|
||||
|
||||
#include "PreCompiled.h"
|
||||
|
||||
#include "BRepAdaptor_CompCurve2.h"
|
||||
#include <BRepAdaptor_Curve.hxx>
|
||||
#include <BRepAdaptor_HCurve.hxx>
|
||||
#include <BRepAdaptor_HCompCurve.hxx>
|
||||
#include <BRepAdaptor_HArray1OfCurve.hxx>
|
||||
#include <TColStd_HArray1OfReal.hxx>
|
||||
#include <BRep_Tool.hxx>
|
||||
|
||||
#include <TopAbs_Orientation.hxx>
|
||||
|
||||
#include <GCPnts_AbscissaPoint.hxx>
|
||||
#include <ElCLib.hxx>
|
||||
#include <TopExp.hxx>
|
||||
#include <TopoDS_Vertex.hxx>
|
||||
#include "WireExplorer.h"
|
||||
|
||||
BRepAdaptor_CompCurve2::BRepAdaptor_CompCurve2()
|
||||
{
|
||||
}
|
||||
|
||||
BRepAdaptor_CompCurve2::BRepAdaptor_CompCurve2(const TopoDS_Wire& W,
|
||||
const Standard_Boolean AC)
|
||||
{
|
||||
Initialize(W, AC);
|
||||
}
|
||||
|
||||
BRepAdaptor_CompCurve2::BRepAdaptor_CompCurve2(const TopoDS_Wire& W,
|
||||
const Standard_Boolean AC,
|
||||
const Standard_Real First,
|
||||
const Standard_Real Last,
|
||||
const Standard_Real Tol)
|
||||
{
|
||||
Initialize(W, AC, First, Last, Tol);
|
||||
}
|
||||
|
||||
void BRepAdaptor_CompCurve2::Initialize(const TopoDS_Wire& W,
|
||||
const Standard_Boolean AC)
|
||||
{
|
||||
Standard_Integer ii, NbEdge;
|
||||
|
||||
TopoDS_Edge E;
|
||||
|
||||
myWire = W;
|
||||
WireExplorer wexp(myWire);
|
||||
PTol = 0.0;
|
||||
IsbyAC = AC;
|
||||
|
||||
for (NbEdge=0, wexp.Init();wexp.More(); wexp.Next())
|
||||
if (! BRep_Tool::Degenerated(wexp.Current())) NbEdge++;
|
||||
|
||||
if (NbEdge == 0) return;
|
||||
|
||||
CurIndex = (NbEdge+1)/2;
|
||||
myCurves = new BRepAdaptor_HArray1OfCurve(1,NbEdge);
|
||||
myKnots = new (TColStd_HArray1OfReal) (1,NbEdge+1);
|
||||
myKnots->SetValue(1, 0.);
|
||||
|
||||
for (ii=0, wexp.Init();wexp.More(); wexp.Next()) {
|
||||
E = wexp.Current();
|
||||
if (! BRep_Tool::Degenerated(E)) {
|
||||
ii++;
|
||||
myCurves->ChangeValue(ii).Initialize(E);
|
||||
if (AC) {
|
||||
myKnots->SetValue(ii+1, myKnots->Value(ii));
|
||||
myKnots->ChangeValue(ii+1) +=
|
||||
GCPnts_AbscissaPoint::Length(myCurves->ChangeValue(ii));
|
||||
}
|
||||
else myKnots->SetValue(ii+1, (Standard_Real)ii);
|
||||
}
|
||||
}
|
||||
|
||||
Forward = Standard_True; // Defaut ; Les Edge Reverse seront parcourue
|
||||
// a rebourt.
|
||||
if((NbEdge > 2) || ((NbEdge==2) && (!myWire.Closed())) ) {
|
||||
TopAbs_Orientation Or = myCurves->Value(1).Edge().Orientation();
|
||||
Standard_Boolean B;
|
||||
TopoDS_Vertex VI, VL;
|
||||
B = TopExp::CommonVertex(myCurves->Value(1).Edge(),
|
||||
myCurves->Value(2).Edge(),
|
||||
VI);
|
||||
VL = TopExp::LastVertex(myCurves->Value(1).Edge());
|
||||
if (VI.IsSame(VL)) { // On Garde toujours le sens de parcout
|
||||
if (Or == TopAbs_REVERSED)
|
||||
Forward = Standard_False;
|
||||
}
|
||||
else {// On renverse toujours le sens de parcout
|
||||
if (Or != TopAbs_REVERSED)
|
||||
Forward = Standard_False;
|
||||
}
|
||||
}
|
||||
|
||||
TFirst = 0;
|
||||
TLast = myKnots->Value(myKnots->Length());
|
||||
myPeriod = TLast - TFirst;
|
||||
if (NbEdge == 1) {
|
||||
Periodic = myCurves->Value(1).IsPeriodic();
|
||||
}
|
||||
else {
|
||||
Periodic = Standard_False;
|
||||
}
|
||||
}
|
||||
|
||||
void BRepAdaptor_CompCurve2::Initialize(const TopoDS_Wire& W,
|
||||
const Standard_Boolean AC,
|
||||
const Standard_Real First,
|
||||
const Standard_Real Last,
|
||||
const Standard_Real Tol)
|
||||
{
|
||||
Initialize(W, AC);
|
||||
TFirst = First;
|
||||
TLast = Last;
|
||||
PTol = Tol;
|
||||
|
||||
// Trim des courbes extremes.
|
||||
Handle (BRepAdaptor_HCurve) HC;
|
||||
Standard_Integer i1, i2;
|
||||
Standard_Real f=TFirst, l=TLast, d;
|
||||
i1 = i2 = CurIndex;
|
||||
Prepare(f, d, i1);
|
||||
Prepare(l, d, i2);
|
||||
CurIndex = (i1+i2)/2; // Petite optimisation
|
||||
if (i1==i2) {
|
||||
if (l > f)
|
||||
HC = Handle(BRepAdaptor_HCurve)::DownCast(myCurves->Value(i1).Trim(f, l, PTol));
|
||||
else
|
||||
HC = Handle(BRepAdaptor_HCurve)::DownCast(myCurves->Value(i1).Trim(l, f, PTol));
|
||||
myCurves->SetValue(i1, HC->ChangeCurve());
|
||||
}
|
||||
else {
|
||||
const BRepAdaptor_Curve& c1 = myCurves->Value(i1);
|
||||
const BRepAdaptor_Curve& c2 = myCurves->Value(i2);
|
||||
Standard_Real k;
|
||||
|
||||
k = c1.LastParameter();
|
||||
if (k>f)
|
||||
HC = Handle(BRepAdaptor_HCurve)::DownCast(c1.Trim(f, k, PTol));
|
||||
else
|
||||
HC = Handle(BRepAdaptor_HCurve)::DownCast(c1.Trim(k, f, PTol));
|
||||
myCurves->SetValue(i1, HC->ChangeCurve());
|
||||
|
||||
k = c2.FirstParameter();
|
||||
if (k<=l)
|
||||
HC = Handle(BRepAdaptor_HCurve)::DownCast(c2.Trim(k, l, PTol));
|
||||
else
|
||||
HC = Handle(BRepAdaptor_HCurve)::DownCast(c2.Trim(l, k, PTol));
|
||||
myCurves->SetValue(i2, HC->ChangeCurve());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void BRepAdaptor_CompCurve2::SetPeriodic(const Standard_Boolean isPeriodic)
|
||||
{
|
||||
if (myWire.Closed()) {
|
||||
Periodic = isPeriodic;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const TopoDS_Wire& BRepAdaptor_CompCurve2::Wire() const
|
||||
{
|
||||
return myWire;
|
||||
}
|
||||
|
||||
void BRepAdaptor_CompCurve2::Edge(const Standard_Real U,
|
||||
TopoDS_Edge& E,
|
||||
Standard_Real& UonE) const
|
||||
{
|
||||
Standard_Real d;
|
||||
Standard_Integer index = CurIndex;
|
||||
UonE = U;
|
||||
Prepare(UonE, d, index);
|
||||
E = myCurves->Value(index).Edge();
|
||||
}
|
||||
|
||||
Standard_Real BRepAdaptor_CompCurve2::FirstParameter() const
|
||||
{
|
||||
return TFirst;
|
||||
}
|
||||
|
||||
Standard_Real BRepAdaptor_CompCurve2::LastParameter() const
|
||||
{
|
||||
return TLast;
|
||||
}
|
||||
|
||||
GeomAbs_Shape BRepAdaptor_CompCurve2::Continuity() const
|
||||
{
|
||||
if ( myCurves->Length() > 1) return GeomAbs_C0;
|
||||
return myCurves->Value(1).Continuity();
|
||||
}
|
||||
|
||||
Standard_Integer BRepAdaptor_CompCurve2::NbIntervals(const GeomAbs_Shape S)
|
||||
{
|
||||
Standard_Integer NbInt, ii;
|
||||
for (ii=1, NbInt=0; ii<=myCurves->Length(); ii++)
|
||||
NbInt += myCurves->ChangeValue(ii).NbIntervals(S);
|
||||
|
||||
return NbInt;
|
||||
}
|
||||
|
||||
void BRepAdaptor_CompCurve2::Intervals(TColStd_Array1OfReal& T,
|
||||
const GeomAbs_Shape S)
|
||||
{
|
||||
Standard_Integer ii, jj, kk, n;
|
||||
Standard_Real f, F, delta;
|
||||
|
||||
// Premiere courbe (sens de parcourt de le edge)
|
||||
n = myCurves->ChangeValue(1).NbIntervals(S);
|
||||
Handle(TColStd_HArray1OfReal) Ti = new (TColStd_HArray1OfReal) (1, n+1);
|
||||
myCurves->ChangeValue(1).Intervals(Ti->ChangeArray1(), S);
|
||||
InvPrepare(1, f, delta);
|
||||
F = myKnots->Value(1);
|
||||
if (delta < 0) {
|
||||
//sens de parcourt inverser
|
||||
for (kk=1,jj=Ti->Length(); jj>0; kk++, jj--)
|
||||
T(kk) = F + (Ti->Value(jj)-f)*delta;
|
||||
}
|
||||
else {
|
||||
for (kk=1; kk<=Ti->Length(); kk++)
|
||||
T(kk) = F + (Ti->Value(kk)-f)*delta;
|
||||
}
|
||||
|
||||
// et les suivante
|
||||
for (ii=2; ii<=myCurves->Length(); ii++) {
|
||||
n = myCurves->ChangeValue(ii).NbIntervals(S);
|
||||
if (n != Ti->Length()-1) Ti = new (TColStd_HArray1OfReal) (1, n+1);
|
||||
myCurves->ChangeValue(ii).Intervals(Ti->ChangeArray1(), S);
|
||||
InvPrepare(ii, f, delta);
|
||||
F = myKnots->Value(ii);
|
||||
if (delta < 0) {
|
||||
//sens de parcourt inverser
|
||||
for (jj=Ti->Length()-1; jj>0; kk++, jj--)
|
||||
T(kk) = F + (Ti->Value(jj)-f)*delta;
|
||||
}
|
||||
else {
|
||||
for (jj=2; jj<=Ti->Length(); kk++, jj++)
|
||||
T(kk) = F + (Ti->Value(jj)-f)*delta;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Standard_Boolean BRepAdaptor_CompCurve2::IsClosed() const
|
||||
{
|
||||
return myWire.Closed();
|
||||
}
|
||||
|
||||
Standard_Boolean BRepAdaptor_CompCurve2::IsPeriodic() const
|
||||
{
|
||||
return Periodic;
|
||||
|
||||
}
|
||||
|
||||
Standard_Real BRepAdaptor_CompCurve2::Period() const
|
||||
{
|
||||
return myPeriod;
|
||||
}
|
||||
|
||||
gp_Pnt BRepAdaptor_CompCurve2::Value(const Standard_Real U) const
|
||||
{
|
||||
Standard_Real u = U, d;
|
||||
Standard_Integer index = CurIndex;
|
||||
Prepare(u, d, index);
|
||||
return myCurves->Value(index).Value(u);
|
||||
}
|
||||
|
||||
void BRepAdaptor_CompCurve2::D0(const Standard_Real U,
|
||||
gp_Pnt& P) const
|
||||
{
|
||||
Standard_Real u = U, d;
|
||||
Standard_Integer index = CurIndex;
|
||||
Prepare(u, d, index);
|
||||
myCurves->Value(index).D0(u, P);
|
||||
}
|
||||
|
||||
void BRepAdaptor_CompCurve2::D1(const Standard_Real U,
|
||||
gp_Pnt& P,
|
||||
gp_Vec& V) const
|
||||
{
|
||||
Standard_Real u = U, d;
|
||||
Standard_Integer index = CurIndex;
|
||||
Prepare(u, d, index);
|
||||
myCurves->Value(index).D1(u, P, V);
|
||||
V*=d;
|
||||
}
|
||||
|
||||
void BRepAdaptor_CompCurve2::D2(const Standard_Real U,
|
||||
gp_Pnt& P,
|
||||
gp_Vec& V1,
|
||||
gp_Vec& V2) const
|
||||
{
|
||||
Standard_Real u = U, d;
|
||||
Standard_Integer index = CurIndex;
|
||||
Prepare(u, d, index);
|
||||
myCurves->Value(index).D2(u, P, V1, V2);
|
||||
V1*=d;
|
||||
V2 *= d*d;
|
||||
}
|
||||
|
||||
void BRepAdaptor_CompCurve2::D3(const Standard_Real U,
|
||||
gp_Pnt& P,gp_Vec& V1,
|
||||
gp_Vec& V2,
|
||||
gp_Vec& V3) const
|
||||
{
|
||||
Standard_Real u = U, d;
|
||||
Standard_Integer index = CurIndex;
|
||||
Prepare(u, d, index);
|
||||
myCurves->Value(index).D3(u, P, V1, V2, V3);
|
||||
V1*=d;
|
||||
V2 *= d*d;
|
||||
V3 *= d*d*d;
|
||||
}
|
||||
|
||||
gp_Vec BRepAdaptor_CompCurve2::DN(const Standard_Real U,
|
||||
const Standard_Integer N) const
|
||||
{
|
||||
Standard_Real u = U, d;
|
||||
Standard_Integer index = CurIndex;
|
||||
Prepare(u, d, index);
|
||||
|
||||
return (myCurves->Value(index).DN(u, N) * Pow(d, N));
|
||||
}
|
||||
|
||||
Standard_Real BRepAdaptor_CompCurve2::Resolution(const Standard_Real R3d) const
|
||||
{
|
||||
Standard_Real Res = 1.e200, r;
|
||||
Standard_Integer ii, L = myCurves->Length();
|
||||
for (ii=1; ii<=L; ii++) {
|
||||
r = myCurves->Value(ii).Resolution(R3d);
|
||||
if (r < Res) Res = r;
|
||||
}
|
||||
return Res;
|
||||
}
|
||||
|
||||
GeomAbs_CurveType BRepAdaptor_CompCurve2::GetType() const
|
||||
{
|
||||
return GeomAbs_OtherCurve; //temporaire
|
||||
// if ( myCurves->Length() > 1) return GeomAbs_OtherCurve;
|
||||
// return myCurves->Value(1).GetType();
|
||||
}
|
||||
|
||||
gp_Lin BRepAdaptor_CompCurve2::Line() const
|
||||
{
|
||||
return myCurves->Value(1).Line();
|
||||
}
|
||||
|
||||
gp_Circ BRepAdaptor_CompCurve2::Circle() const
|
||||
{
|
||||
return myCurves->Value(1).Circle();
|
||||
}
|
||||
|
||||
gp_Elips BRepAdaptor_CompCurve2::Ellipse() const
|
||||
{
|
||||
return myCurves->Value(1).Ellipse();
|
||||
}
|
||||
|
||||
gp_Hypr BRepAdaptor_CompCurve2::Hyperbola() const
|
||||
{
|
||||
return myCurves->Value(1).Hyperbola();
|
||||
}
|
||||
|
||||
gp_Parab BRepAdaptor_CompCurve2::Parabola() const
|
||||
{
|
||||
return myCurves->Value(1).Parabola();
|
||||
}
|
||||
|
||||
Standard_Integer BRepAdaptor_CompCurve2::Degree() const
|
||||
{
|
||||
return myCurves->Value(1).Degree();
|
||||
}
|
||||
|
||||
Standard_Boolean BRepAdaptor_CompCurve2::IsRational() const
|
||||
{
|
||||
return myCurves->Value(1).IsRational();
|
||||
}
|
||||
|
||||
Standard_Integer BRepAdaptor_CompCurve2::NbPoles() const
|
||||
{
|
||||
return myCurves->Value(1).NbPoles();
|
||||
}
|
||||
|
||||
Standard_Integer BRepAdaptor_CompCurve2::NbKnots() const
|
||||
{
|
||||
return myCurves->Value(1).NbKnots();
|
||||
}
|
||||
|
||||
Handle(Geom_BezierCurve) BRepAdaptor_CompCurve2::Bezier() const
|
||||
{
|
||||
return myCurves->Value(1).Bezier();
|
||||
}
|
||||
|
||||
Handle(Geom_BSplineCurve) BRepAdaptor_CompCurve2::BSpline() const
|
||||
{
|
||||
return myCurves->Value(1).BSpline();
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : Prepare
|
||||
//purpose :
|
||||
// Lorsque le parametre est pres de un "noeud" on determine la loi en
|
||||
// fonction du signe de tol:
|
||||
// - negatif -> Loi precedente au noeud.
|
||||
// - positif -> Loi consecutive au noeud.
|
||||
//=======================================================================
|
||||
|
||||
void BRepAdaptor_CompCurve2::Prepare(Standard_Real& W,
|
||||
Standard_Real& Delta,
|
||||
Standard_Integer& CurIndex) const
|
||||
{
|
||||
Standard_Real f,l, Wtest, Eps;
|
||||
Standard_Integer ii;
|
||||
if (W-TFirst < TLast-W) { Eps = PTol; }
|
||||
else { Eps = -PTol;}
|
||||
|
||||
|
||||
Wtest = W+Eps; //Decalage pour discriminer les noeuds
|
||||
if(Periodic){
|
||||
Wtest = ElCLib::InPeriod(Wtest,
|
||||
0,
|
||||
myPeriod);
|
||||
W = Wtest-Eps;
|
||||
}
|
||||
|
||||
// Recheche de le index
|
||||
Standard_Boolean Trouve = Standard_False;
|
||||
if (myKnots->Value(CurIndex) > Wtest) {
|
||||
for (ii=CurIndex-1; ii>0 && !Trouve; ii--)
|
||||
if (myKnots->Value(ii)<= Wtest) {
|
||||
CurIndex = ii;
|
||||
Trouve = Standard_True;
|
||||
}
|
||||
if (!Trouve) CurIndex = 1; // En dehors des bornes ...
|
||||
}
|
||||
|
||||
else if (myKnots->Value(CurIndex+1) <= Wtest) {
|
||||
for (ii=CurIndex+1; ii<=myCurves->Length() && !Trouve; ii++)
|
||||
if (myKnots->Value(ii+1)> Wtest) {
|
||||
CurIndex = ii;
|
||||
Trouve = Standard_True;
|
||||
}
|
||||
if (!Trouve) CurIndex = myCurves->Length(); // En dehors des bornes ...
|
||||
}
|
||||
|
||||
// Reverse ?
|
||||
const TopoDS_Edge& E = myCurves->Value(CurIndex).Edge();
|
||||
TopAbs_Orientation Or = E.Orientation();
|
||||
Standard_Boolean Reverse;
|
||||
Reverse = (Forward && (Or == TopAbs_REVERSED)) ||
|
||||
(!Forward && (Or != TopAbs_REVERSED));
|
||||
|
||||
// Calcul du parametre local
|
||||
BRep_Tool::Range(E, f, l);
|
||||
Delta = myKnots->Value(CurIndex+1) - myKnots->Value(CurIndex);
|
||||
if (Delta > PTol*1.e-9) Delta = (l-f)/Delta;
|
||||
|
||||
if (Reverse) {
|
||||
Delta *= -1;
|
||||
W = l + (W-myKnots->Value(CurIndex)) * Delta;
|
||||
}
|
||||
else {
|
||||
W = f + (W-myKnots->Value(CurIndex)) * Delta;
|
||||
}
|
||||
}
|
||||
|
||||
void BRepAdaptor_CompCurve2::InvPrepare(const Standard_Integer index,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Delta) const
|
||||
{
|
||||
// Reverse ?
|
||||
const TopoDS_Edge& E = myCurves->Value(index).Edge();
|
||||
TopAbs_Orientation Or = E.Orientation();
|
||||
Standard_Boolean Reverse;
|
||||
Reverse = (Forward && (Or == TopAbs_REVERSED)) ||
|
||||
(!Forward && (Or != TopAbs_REVERSED));
|
||||
|
||||
// Calcul des parametres de reparametrisation
|
||||
// tel que : T = Ti + (t-First)*Delta
|
||||
Standard_Real f, l;
|
||||
BRep_Tool::Range(E, f, l);
|
||||
Delta = myKnots->Value(index+1) - myKnots->Value(index);
|
||||
if (l-f > PTol*1.e-9) Delta /= (l-f);
|
||||
|
||||
if (Reverse) {
|
||||
Delta *= -1;
|
||||
First = l;
|
||||
}
|
||||
else {
|
||||
First = f;
|
||||
}
|
||||
}
|
||||
286
src/Mod/Cam/App/BRepAdaptor_CompCurve2.h
Normal file
@@ -0,0 +1,286 @@
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2007 *
|
||||
* Joachim Zettler <Joachim.Zettler@gmx.de> *
|
||||
* Adapted by Joachim Zettler to use with a WireExplorer made *
|
||||
* by Stephane Routelous *
|
||||
* *
|
||||
* This file is part of the FreeCAD CAx development system. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Library General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* This library 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 library; see the file COPYING.LIB. If not, *
|
||||
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
||||
* Suite 330, Boston, MA 02111-1307, USA *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef _BRepAdaptor_CompCurve2_HeaderFile
|
||||
#define _BRepAdaptor_CompCurve2_HeaderFile
|
||||
|
||||
#ifndef _TopoDS_Wire_HeaderFile
|
||||
#include <TopoDS_Wire.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Real_HeaderFile
|
||||
#include <Standard_Real.hxx>
|
||||
#endif
|
||||
#ifndef _Handle_BRepAdaptor_HArray1OfCurve_HeaderFile
|
||||
#include <Handle_BRepAdaptor_HArray1OfCurve.hxx>
|
||||
#endif
|
||||
#ifndef _Handle_TColStd_HArray1OfReal_HeaderFile
|
||||
#include <Handle_TColStd_HArray1OfReal.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Integer_HeaderFile
|
||||
#include <Standard_Integer.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Boolean_HeaderFile
|
||||
#include <Standard_Boolean.hxx>
|
||||
#endif
|
||||
#ifndef _Adaptor3d_Curve_HeaderFile
|
||||
#include <Adaptor3d_Curve.hxx>
|
||||
#endif
|
||||
#ifndef _GeomAbs_Shape_HeaderFile
|
||||
#include <GeomAbs_Shape.hxx>
|
||||
#endif
|
||||
#ifndef _Handle_Adaptor3d_HCurve_HeaderFile
|
||||
#include <Handle_Adaptor3d_HCurve.hxx>
|
||||
#endif
|
||||
#ifndef _GeomAbs_CurveType_HeaderFile
|
||||
#include <GeomAbs_CurveType.hxx>
|
||||
#endif
|
||||
#ifndef _Handle_Geom_BezierCurve_HeaderFile
|
||||
#include <Handle_Geom_BezierCurve.hxx>
|
||||
#endif
|
||||
#ifndef _Handle_Geom_BSplineCurve_HeaderFile
|
||||
#include <Handle_Geom_BSplineCurve.hxx>
|
||||
#endif
|
||||
class BRepAdaptor_HArray1OfCurve;
|
||||
class TColStd_HArray1OfReal;
|
||||
class Standard_NullObject;
|
||||
class Standard_DomainError;
|
||||
class Standard_OutOfRange;
|
||||
class Standard_NoSuchObject;
|
||||
class TopoDS_Wire;
|
||||
class TopoDS_Edge;
|
||||
class TColStd_Array1OfReal;
|
||||
class Adaptor3d_HCurve;
|
||||
class gp_Pnt;
|
||||
class gp_Vec;
|
||||
class gp_Lin;
|
||||
class gp_Circ;
|
||||
class gp_Elips;
|
||||
class gp_Hypr;
|
||||
class gp_Parab;
|
||||
class Geom_BezierCurve;
|
||||
class Geom_BSplineCurve;
|
||||
|
||||
|
||||
#ifndef _Standard_HeaderFile
|
||||
#include <Standard.hxx>
|
||||
#endif
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#endif
|
||||
|
||||
//! The Curve from BRepAdaptor allows to use a Wire of the BRep topology
|
||||
//! like a 3D curve. <br>
|
||||
//! Warning: With this class of curve, C0 and C1 continuities
|
||||
//! are not assumed. So be careful with some algorithm!
|
||||
class BRepAdaptor_CompCurve2 : public Adaptor3d_Curve
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
void* operator new(size_t,void* anAddress)
|
||||
{
|
||||
return anAddress;
|
||||
}
|
||||
void* operator new(size_t size)
|
||||
{
|
||||
return Standard::Allocate(size);
|
||||
}
|
||||
void operator delete(void *anAddress)
|
||||
{
|
||||
if (anAddress) Standard::Free((Standard_Address&)anAddress);
|
||||
}
|
||||
// Methods PUBLIC
|
||||
//
|
||||
|
||||
//! Creates an undefined Curve with no Wire loaded.
|
||||
Standard_EXPORT BRepAdaptor_CompCurve2();
|
||||
|
||||
|
||||
Standard_EXPORT BRepAdaptor_CompCurve2(const TopoDS_Wire& W,const Standard_Boolean KnotByCurvilinearAbcissa = Standard_False);
|
||||
|
||||
//! Creates a Curve to acces to the geometry of edge \p W.
|
||||
Standard_EXPORT BRepAdaptor_CompCurve2(const TopoDS_Wire& W,const Standard_Boolean KnotByCurvilinearAbcissa,const Standard_Real First,const Standard_Real Last,const Standard_Real Tol);
|
||||
|
||||
//! Sets the wire \p W.
|
||||
Standard_EXPORT void Initialize(const TopoDS_Wire& W,const Standard_Boolean KnotByCurvilinearAbcissa) ;
|
||||
|
||||
//! Sets wire \p W and trimmed parameter.
|
||||
Standard_EXPORT void Initialize(const TopoDS_Wire& W,const Standard_Boolean KnotByCurvilinearAbcissa,const Standard_Real First,const Standard_Real Last,const Standard_Real Tol) ;
|
||||
|
||||
//! Set the flag Periodic. <br>
|
||||
//! Warning: This method has no effect if the wire is not closed.
|
||||
Standard_EXPORT void SetPeriodic(const Standard_Boolean Periodic) ;
|
||||
|
||||
//! Returns the wire.
|
||||
Standard_EXPORT const TopoDS_Wire& Wire() const;
|
||||
|
||||
//! returns an edge and one parameter on them
|
||||
//! corresponding to the parameter \p U.
|
||||
Standard_EXPORT void Edge(const Standard_Real U,TopoDS_Edge& E,Standard_Real& UonE) const;
|
||||
|
||||
|
||||
Standard_EXPORT Standard_Real FirstParameter() const;
|
||||
|
||||
|
||||
Standard_EXPORT Standard_Real LastParameter() const;
|
||||
|
||||
|
||||
Standard_EXPORT GeomAbs_Shape Continuity() const;
|
||||
|
||||
//! Returns the number of intervals for continuity \<S\>. <br>
|
||||
//! May be one if Continuity(me) >= \<S\>
|
||||
Standard_EXPORT Standard_Integer NbIntervals(const GeomAbs_Shape S) ;
|
||||
|
||||
//! Stores in \<T\> the parameters bounding the intervals of continuity \<S\>. <br>
|
||||
|
||||
//! The array must provide enough room to accomodate for the parameters.
|
||||
//! i.e. T.Length() > NbIntervals()
|
||||
Standard_EXPORT void Intervals(TColStd_Array1OfReal& T,const GeomAbs_Shape S) ;
|
||||
|
||||
|
||||
Standard_EXPORT Standard_Boolean IsClosed() const;
|
||||
|
||||
|
||||
Standard_EXPORT Standard_Boolean IsPeriodic() const;
|
||||
|
||||
|
||||
Standard_EXPORT Standard_Real Period() const;
|
||||
|
||||
//! Computes the point of parameter \p U on the curve
|
||||
Standard_EXPORT gp_Pnt Value(const Standard_Real U) const;
|
||||
|
||||
//! Computes the point of parameter \p U.
|
||||
Standard_EXPORT void D0(const Standard_Real U,gp_Pnt& P) const;
|
||||
|
||||
//! Computes the point of parameter \p U on the curve with its first
|
||||
//! derivative. <br>
|
||||
//! Raised if the continuity of the current interval is not C1.
|
||||
Standard_EXPORT void D1(const Standard_Real U,gp_Pnt& P,gp_Vec& V) const;
|
||||
|
||||
|
||||
//! Returns the point \p P of parameter \p U, the first and second
|
||||
//! derivatives \p V1 and \p V2. <br>
|
||||
//! Raised if the continuity of the current interval is not C2.
|
||||
Standard_EXPORT void D2(const Standard_Real U,gp_Pnt& P,gp_Vec& V1,gp_Vec& V2) const;
|
||||
|
||||
|
||||
//! Returns the point \p P of parameter \p U, the first, the second
|
||||
//! and the third derivative. <br>
|
||||
//! Raised if the continuity of the current interval is not C3.
|
||||
Standard_EXPORT void D3(const Standard_Real U,gp_Pnt& P,gp_Vec& V1,gp_Vec& V2,gp_Vec& V3) const;
|
||||
|
||||
|
||||
//! The returned vector gives the value of the derivative for the
|
||||
//! order of derivation N. <br>
|
||||
//! Raised if the continuity of the current interval is not CN. <br>
|
||||
//! Raised if N < 1.
|
||||
Standard_EXPORT gp_Vec DN(const Standard_Real U,const Standard_Integer N) const;
|
||||
|
||||
//! returns the parametric resolution
|
||||
Standard_EXPORT Standard_Real Resolution(const Standard_Real R3d) const;
|
||||
|
||||
|
||||
Standard_EXPORT GeomAbs_CurveType GetType() const;
|
||||
|
||||
|
||||
Standard_EXPORT gp_Lin Line() const;
|
||||
|
||||
|
||||
Standard_EXPORT gp_Circ Circle() const;
|
||||
|
||||
|
||||
Standard_EXPORT gp_Elips Ellipse() const;
|
||||
|
||||
|
||||
Standard_EXPORT gp_Hypr Hyperbola() const;
|
||||
|
||||
|
||||
Standard_EXPORT gp_Parab Parabola() const;
|
||||
|
||||
|
||||
Standard_EXPORT Standard_Integer Degree() const;
|
||||
|
||||
|
||||
Standard_EXPORT Standard_Boolean IsRational() const;
|
||||
|
||||
|
||||
Standard_EXPORT Standard_Integer NbPoles() const;
|
||||
|
||||
|
||||
Standard_EXPORT Standard_Integer NbKnots() const;
|
||||
|
||||
|
||||
Standard_EXPORT Handle_Geom_BezierCurve Bezier() const;
|
||||
|
||||
|
||||
Standard_EXPORT Handle_Geom_BSplineCurve BSpline() const;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
// Methods PROTECTED
|
||||
//
|
||||
|
||||
|
||||
// Fields PROTECTED
|
||||
//
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// Methods PRIVATE
|
||||
//
|
||||
|
||||
|
||||
Standard_EXPORT void Prepare(Standard_Real& W,Standard_Real& D,Standard_Integer& ind) const;
|
||||
|
||||
|
||||
Standard_EXPORT void InvPrepare(const Standard_Integer ind,Standard_Real& F,Standard_Real& D) const;
|
||||
|
||||
|
||||
// Fields PRIVATE
|
||||
//
|
||||
TopoDS_Wire myWire;
|
||||
Standard_Real TFirst;
|
||||
Standard_Real TLast;
|
||||
Standard_Real PTol;
|
||||
Standard_Real myPeriod;
|
||||
Handle_BRepAdaptor_HArray1OfCurve myCurves;
|
||||
Handle_TColStd_HArray1OfReal myKnots;
|
||||
Standard_Integer CurIndex;
|
||||
Standard_Boolean Forward;
|
||||
Standard_Boolean IsbyAC;
|
||||
Standard_Boolean Periodic;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
45
src/Mod/Cam/App/BRepUtils.cpp
Normal file
@@ -0,0 +1,45 @@
|
||||
#include "BRepUtils.h"
|
||||
|
||||
#include <TopoDS_Edge.hxx>
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#include <GProp_GProps.hxx>
|
||||
#include <BRepGProp.hxx>
|
||||
#include <TopExp.hxx>
|
||||
#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#include <TopTools_ListIteratorOfListOfShape.hxx>
|
||||
#include <TopExp_Explorer.hxx>
|
||||
#include <TopoDS.hxx>
|
||||
|
||||
|
||||
|
||||
double BRepUtils::GetLength(const TopoDS_Edge& edge)
|
||||
{
|
||||
GProp_GProps lProps;
|
||||
BRepGProp::LinearProperties(edge,lProps);
|
||||
return lProps.Mass();
|
||||
}
|
||||
|
||||
bool BRepUtils::CheckTopologie(const TopoDS_Shape& shape)
|
||||
{
|
||||
TopTools_IndexedDataMapOfShapeListOfShape aMap;
|
||||
aMap.Clear();
|
||||
TopExp::MapShapesAndAncestors(shape,TopAbs_EDGE,TopAbs_FACE,aMap);
|
||||
TopExp_Explorer anExplorer;
|
||||
for(anExplorer.Init(shape,TopAbs_EDGE);anExplorer.More();anExplorer.Next())
|
||||
{
|
||||
const TopTools_ListOfShape& aFaceList = aMap.FindFromKey(anExplorer.Current());
|
||||
|
||||
TopTools_ListIteratorOfListOfShape aListIterator(aFaceList);
|
||||
int i=0;
|
||||
for(aListIterator.Initialize(aFaceList);aListIterator.More();aListIterator.Next())
|
||||
{
|
||||
i++;
|
||||
}
|
||||
if(i<2)
|
||||
{
|
||||
cout << "less" << endl;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
22
src/Mod/Cam/App/BRepUtils.h
Normal file
@@ -0,0 +1,22 @@
|
||||
#ifndef _BRepUtils_HeaderFile
|
||||
#define _BRepUtils_HeaderFile
|
||||
|
||||
#ifndef _Standard_Macro_HeaderFile
|
||||
#include <Standard_Macro.hxx>
|
||||
#endif
|
||||
|
||||
class TopoDS_Edge;
|
||||
class TopoDS_Shape;
|
||||
|
||||
class BRepUtils
|
||||
{
|
||||
public:
|
||||
|
||||
Standard_EXPORT static bool CheckTopologie(const TopoDS_Shape& shape);
|
||||
Standard_EXPORT static double GetLength(const TopoDS_Edge& edge);
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif //_BRepUtils_HeaderFile
|
||||
|
||||
108
src/Mod/Cam/App/CMakeLists.txt
Normal file
@@ -0,0 +1,108 @@
|
||||
if(WIN32)
|
||||
add_definitions(-DWNT -DFCAppCam -DHAVE_ACOSH -DHAVE_ATANH -DHAVE_ASINH)
|
||||
else(WIN32)
|
||||
add_definitions(-DFCAppCam)
|
||||
endif(WIN32)
|
||||
|
||||
include_directories(
|
||||
${CMAKE_SOURCE_DIR}/src
|
||||
${CMAKE_SOURCE_DIR}/src/3rdParty
|
||||
${CMAKE_SOURCE_DIR}/src/3rdParty/ANN/include
|
||||
#${CMAKE_SOURCE_DIR}/src/3rdParty/OCCAdaptMesh/Include
|
||||
${Boost_INCLUDE_DIRS}
|
||||
${QT_INCLUDE_DIR}
|
||||
${OCC_INCLUDE_DIR}
|
||||
${ZLIB_INCLUDE_DIR}
|
||||
${PYTHON_INCLUDE_PATH}
|
||||
${XERCESC_INCLUDE_DIR}
|
||||
${UMFPACK_INCLUDE_DIR}
|
||||
${SMSH_INCLUDE_DIR}
|
||||
${SMESH_INCLUDE_DIR}
|
||||
)
|
||||
|
||||
if(MSVC)
|
||||
set(Cam_LIBS
|
||||
Mesh
|
||||
Part
|
||||
${QT_QTCORE_LIBRARY}
|
||||
${QT_QTCORE_LIBRARY_DEBUG}
|
||||
ANN
|
||||
#${ATLAS_LIBRARIES}
|
||||
importlib_atlas.lib
|
||||
importlib_umfpackamd.lib
|
||||
${SMSH_LIBRARIES}
|
||||
${SMESH_LIBRARIES}
|
||||
)
|
||||
else(MSVC)
|
||||
set(Cam_LIBS
|
||||
Mesh
|
||||
Part
|
||||
${QT_QTCORE_LIBRARY}
|
||||
${SMESH_LIBRARIES}
|
||||
ANN
|
||||
atlas
|
||||
blas
|
||||
lapack
|
||||
umfpack
|
||||
amd
|
||||
)
|
||||
endif(MSVC)
|
||||
|
||||
SET(Cam_SRCS
|
||||
AppCamPy.cpp
|
||||
deviation.cpp
|
||||
deviation.h
|
||||
Approx.cpp
|
||||
Approx.h
|
||||
mergedata.h
|
||||
mergedata.cpp
|
||||
best_fit.cpp
|
||||
best_fit.h
|
||||
BRepAdaptor_CompCurve2.cxx
|
||||
BRepAdaptor_CompCurve2.h
|
||||
BRepUtils.h
|
||||
BRepUtils.cpp
|
||||
ChangeDyna.cpp
|
||||
ChangeDyna.h
|
||||
ConvertDyna.cpp
|
||||
ConvertDyna.h
|
||||
cutting_tools.cpp
|
||||
cutting_tools.h
|
||||
edgesort.cpp
|
||||
edgesort.h
|
||||
path_simulate.cpp
|
||||
path_simulate.h
|
||||
PreCompiled.cpp
|
||||
PreCompiled.h
|
||||
routine.cpp
|
||||
routine.h
|
||||
stuff.h
|
||||
SpringbackCorrection.cpp
|
||||
SpringbackCorrection.h
|
||||
UniGridApprox.cpp
|
||||
UniGridApprox.h
|
||||
WireExplorer.cxx
|
||||
WireExplorer.h
|
||||
AppCam.cpp
|
||||
)
|
||||
|
||||
add_library(Cam SHARED ${Cam_SRCS})
|
||||
target_link_libraries(Cam ${Cam_LIBS})
|
||||
fc_copy_script("Mod/Cam" "Cam" Init.py)
|
||||
|
||||
if(MSVC)
|
||||
set_target_properties(Cam PROPERTIES SUFFIX ".pyd")
|
||||
set_target_properties(Cam PROPERTIES DEBUG_OUTPUT_NAME "Cam_d")
|
||||
set_target_properties(Cam PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Mod/Cam)
|
||||
set_target_properties(Cam PROPERTIES PREFIX "../")
|
||||
elseif(MINGW)
|
||||
set_target_properties(Image PROPERTIES SUFFIX ".pyd")
|
||||
set_target_properties(Image PROPERTIES DEBUG_OUTPUT_NAME "Cam_d")
|
||||
set_target_properties(Image PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Mod/Cam)
|
||||
set_target_properties(Image PROPERTIES PREFIX "")
|
||||
else(MSVC)
|
||||
set_target_properties(Cam PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Mod/Cam)
|
||||
set_target_properties(Cam PROPERTIES PREFIX "")
|
||||
endif(MSVC)
|
||||
|
||||
install(TARGETS Cam DESTINATION lib)
|
||||