Compare commits

..

No commits in common. "master" and "0.10" have entirely different histories.
master ... 0.10

114 changed files with 295 additions and 1851 deletions

12
.gitmodules vendored
View File

@ -0,0 +1,12 @@
[submodule "slvs"]
path = slvs
url = https://github.com/realthunder/solvespace.git
[submodule "py_slvs"]
path = py_slvs
url = https://github.com/realthunder/py_slvs.git
[submodule "py_slvs_mac"]
path = py_slvs_mac
url = https://github.com/realthunder/py_slvs_mac.git
[submodule "py3_slvs"]
path = py3_slvs
url = https://github.com/realthunder/py3_slvs.git

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -1 +0,0 @@
recursive-include freecad/asm3/Gui *

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,7 @@
from collections import namedtuple from collections import namedtuple
import FreeCAD, FreeCADGui, Part import FreeCAD, FreeCADGui, Part
from . import utils, gui from . import utils, gui
try: from .deps import with_metaclass
from six import with_metaclass
except ImportError:
from .deps import with_metaclass
from .utils import objName,cstrlogger as logger, guilogger from .utils import objName,cstrlogger as logger, guilogger
from .proxy import ProxyType, PropertyInfo, propGet, propGetValue from .proxy import ProxyType, PropertyInfo, propGet, propGetValue
@ -245,21 +242,17 @@ def _lw(solver,partInfo,subname,shape,retAll=False):
'return a handle for either a line or a plane depending on the shape' 'return a handle for either a line or a plane depending on the shape'
_ = retAll _ = retAll
if not solver: if not solver:
if utils.isLinearEdge(shape) or \ if utils.isLinearEdge(shape) or utils.isPlanar(shape):
utils.isPlanar(shape) or \
utils.isCylindricalPlane(shape):
return return
return 'a linear edge or edge/face with planar or cylindrical surface' return 'a linear edge or edge/face with planar surface'
if utils.isLinearEdge(shape): if utils.isLinearEdge(shape):
return _l(solver,partInfo,subname,shape,False) return _l(solver,partInfo,subname,shape,False)
if utils.isCylindricalPlane(shape):
return _n(solver,partInfo,subname,shape,False)
return _wa(solver,partInfo,subname,shape) return _wa(solver,partInfo,subname,shape)
def _w(solver,partInfo,subname,shape,retAll=False,noCheck=False): def _w(solver,partInfo,subname,shape,retAll=False):
'return a handle of a transformed plane/workplane from "shape"' 'return a handle of a transformed plane/workplane from "shape"'
if not solver: if not solver:
if noCheck or utils.isPlanar(shape): if utils.isPlanar(shape):
return return
return 'an edge/face with a planar surface' return 'an edge/face with a planar surface'
@ -281,10 +274,6 @@ def _wa(solver,partInfo,subname,shape,retAll=False):
_ = retAll _ = retAll
return _w(solver,partInfo,subname,shape,True) return _w(solver,partInfo,subname,shape,True)
def _wa_no_check(solver,partInfo,subname,shape,retAll=False):
_ = retAll
return _w(solver,partInfo,subname,shape,True,True)
def _c(solver,partInfo,subname,shape,requireArc=False,retAll=False): def _c(solver,partInfo,subname,shape,requireArc=False,retAll=False):
'return a handle of a transformed circle/arc derived from "shape"' 'return a handle of a transformed circle/arc derived from "shape"'
if not solver: if not solver:
@ -293,7 +282,7 @@ def _c(solver,partInfo,subname,shape,requireArc=False,retAll=False):
if requireArc and not isinstance(r,tuple): if requireArc and not isinstance(r,tuple):
return 'an arc edge' return 'an arc edge'
return return
return 'a circular edge' return 'a cicular edge'
if requireArc: if requireArc:
key = subname+'.a' key = subname+'.a'
else: else:
@ -360,7 +349,7 @@ def _c(solver,partInfo,subname,shape,requireArc=False,retAll=False):
pln = _w(solver,partInfo,subname,shape,True) pln = _w(solver,partInfo,subname,shape,True)
r = utils.getElementCircular(shape) r = utils.getElementCircular(shape)
if not r: if not r:
raise RuntimeError('shape is not circular') raise RuntimeError('shape is not cicular')
system.NameTag = nameTag + '.r' system.NameTag = nameTag + '.r'
hr = system.addDistanceV(r) hr = system.addDistanceV(r)
if requireArc or isinstance(r,(list,tuple)): if requireArc or isinstance(r,(list,tuple)):
@ -640,8 +629,7 @@ class Constraint(ProxyType):
# part that are fixed # part that are fixed
continue continue
if rollback is not False: handled.add(obj)
handled.add(obj)
for info0,info in zip(firstInfo,infos): for info0,info in zip(firstInfo,infos):
if info.Part in ret: if info.Part in ret:
@ -657,8 +645,7 @@ class Constraint(ProxyType):
utils.getElementPlacement(info0.Shape)) utils.getElementPlacement(info0.Shape))
pla = pla0.multiply( pla = pla0.multiply(
utils.getElementPlacement(info.Shape).inverse()) utils.getElementPlacement(info.Shape).inverse())
if rollback is not False and \ if not utils.isSamePlacement(pla,info.Placement):
not utils.isSamePlacement(pla,info.Placement):
solver.touched = True solver.touched = True
solver.system.log('attaching "{}" -> "{}"', solver.system.log('attaching "{}" -> "{}"',
info.PartName, info0.PartName) info.PartName, info0.PartName)
@ -716,11 +703,6 @@ class Constraint(ProxyType):
else: else:
obj.setExpression('.Label2', None) obj.setExpression('.Label2', None)
@classmethod
def isAttachment(mcs, obj):
cstr = mcs.getProxy(obj)
return isinstance(cstr, Attachment)
def _makeProp(name,tp,doc='',getter=propGet,internal=False,default=None): def _makeProp(name,tp,doc='',getter=propGet,internal=False,default=None):
return PropertyInfo(Constraint,name,tp,doc,getter=getter,duplicate=True, return PropertyInfo(Constraint,name,tp,doc,getter=getter,duplicate=True,
@ -1175,8 +1157,7 @@ class BaseMulti(Base):
e = cls._entityDef[0]( e = cls._entityDef[0](
solver,partInfo,info.Subname,info.Shape) solver,partInfo,info.Subname,info.Shape)
params = props + [e0,e] params = props + [e0,e]
solver.system.checkRedundancy( solver.system.checkRedundancy(obj,partInfo0,partInfo)
obj,partInfo0,partInfo,info0.SubnameRef,info.SubnameRef)
h = func(*params,group=solver.group) h = func(*params,group=solver.group)
if isinstance(h,(list,tuple)): if isinstance(h,(list,tuple)):
ret += list(h) ret += list(h)
@ -1229,19 +1210,16 @@ class BaseMulti(Base):
if i==idx0: if i==idx0:
e0 = cls._entityDef[idx0]( e0 = cls._entityDef[idx0](
solver,partInfo,info.Subname,info.Shape) solver,partInfo,info.Subname,info.Shape)
subname0 = info.SubnameRef
info0 = partInfo info0 = partInfo
else: else:
e = cls._entityDef[0](solver,partInfo,info.Subname,info.Shape) e = cls._entityDef[0](solver,partInfo,info.Subname,info.Shape)
if e0 and e: if e0 and e:
if idx0: if idx0:
params = props + [e,e0] params = props + [e,e0]
solver.system.checkRedundancy( solver.system.checkRedundancy(obj,partInfo,info0)
obj,partInfo,info0,info.SubnameRef,subname0)
else: else:
params = props + [e0,e] params = props + [e0,e]
solver.system.checkRedundancy( solver.system.checkRedundancy(obj,info0,partInfo)
obj,info0,partInfo,subname0,info.SubnameRef)
h = func(*params,group=solver.group) h = func(*params,group=solver.group)
if isinstance(h,(list,tuple)): if isinstance(h,(list,tuple)):
ret += list(h) ret += list(h)
@ -1274,8 +1252,7 @@ class BaseCascade(BaseMulti):
params = props + [e1,e2] params = props + [e1,e2]
else: else:
params = props + [e2,e1] params = props + [e2,e1]
solver.system.checkRedundancy( solver.system.checkRedundancy(obj,prevInfo,partInfo)
obj,prevInfo,partInfo,prev.SubnameRef,info.SubnameRef)
h = func(*params,group=solver.group) h = func(*params,group=solver.group)
if isinstance(h,(list,tuple)): if isinstance(h,(list,tuple)):
ret += list(h) ret += list(h)
@ -1301,7 +1278,7 @@ class PlaneCoincident(BaseCascade):
_iconName = 'Assembly_ConstraintCoincidence.svg' _iconName = 'Assembly_ConstraintCoincidence.svg'
_props = ['Multiply','Cascade','Offset','OffsetX','OffsetY'] + _AngleProps _props = ['Multiply','Cascade','Offset','OffsetX','OffsetY'] + _AngleProps
_tooltip = \ _tooltip = \
'Add a "{}" constraint to coincide planar faces of two or more parts.\n'\ 'Add a "{}" constraint to conincide planar faces of two or more parts.\n'\
'The faces are coincided at their centers with an optional distance.' 'The faces are coincided at their centers with an optional distance.'
@ -1311,9 +1288,8 @@ class Attachment(BaseCascade):
_props = ['Multiply', 'Cascade'] _props = ['Multiply', 'Cascade']
_tooltip = \ _tooltip = \
'Add a "{}" constraint to attach two parts by the selected geometry\n'\ 'Add a "{}" constraint to attach two parts by the selected geometry\n'\
'elements. This constraint completely fixes the parts relative to each\n'\ 'elements. This constraint completely fixes the parts realtive to each\n'\
'other.' 'other.'
_entityDef = (_wa_no_check,)
class AxialAlignment(BaseMulti): class AxialAlignment(BaseMulti):
@ -1397,7 +1373,7 @@ class PointsCoincident(Base):
_entityDef = (_p,_p) _entityDef = (_p,_p)
_workplane = True _workplane = True
_iconName = 'Assembly_ConstraintPointCoincident.svg' _iconName = 'Assembly_ConstraintPointCoincident.svg'
_tooltips = 'Add a "{}" constraint to coincide two points in 2D or 3D' _tooltips = 'Add a "{}" constraint to conincide two points in 2D or 3D'
class PointInPlane(BaseMulti): class PointInPlane(BaseMulti):
@ -1803,7 +1779,7 @@ class MidPoint(BaseSketch):
if not func: if not func:
return return
params = cls.getPropertyValues(obj) + cls.getEntities(obj,solver) params = cls.getPropertyValues(obj) + cls.getEntities(obj,solver)
# temporary fix of slvs.addMidPoint(), which should have made wrkpln # temparary fix of slvs.addMidPoint(), which should have made wrkpln
# argument optional and defaults to 0 # argument optional and defaults to 0
if len(params)==2: if len(params)==2:
params.append(0) params.append(0)

View File

@ -1 +0,0 @@
__path__ = __import__('pkgutil').extend_path(__path__, __name__)

View File

@ -1,754 +0,0 @@
<?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="svg2980"
sodipodi:version="0.32"
inkscape:version="0.91 r13725"
sodipodi:docname="Assembly_Assembly_AutoFixElement.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs2982">
<linearGradient
id="linearGradient4277">
<stop
id="stop4279"
offset="0"
style="stop-color:#cccccc;stop-opacity:1" />
<stop
id="stop4281"
offset="1"
style="stop-color:#969696;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient3864">
<stop
id="stop3866"
offset="0"
style="stop-color:#71b2f8;stop-opacity:1;" />
<stop
id="stop3868"
offset="1"
style="stop-color:#002795;stop-opacity:1;" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3864"
id="radialGradient3850"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.6028459,1.0471639,-1.9794021,1.1395295,127.9588,-74.456907)"
cx="51.328892"
cy="31.074146"
fx="51.328892"
fy="31.074146"
r="19.571428" />
<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="perspective2988" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3377-6"
id="radialGradient3699"
gradientUnits="userSpaceOnUse"
cx="76.383331"
cy="94.369568"
fx="76.383331"
fy="94.369568"
r="19.467436"
gradientTransform="matrix(0.9818943,0.1894295,-0.4109427,2.1300924,40.163453,-121.11559)" />
<linearGradient
id="linearGradient3377">
<stop
id="stop3379"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3377"
id="radialGradient3701"
gradientUnits="userSpaceOnUse"
cx="84.883324"
cy="77.042847"
fx="84.883324"
fy="77.042847"
r="19.467436"
gradientTransform="matrix(2.8492421,1.2585119,-0.4040415,0.9147407,-125.84131,-100.25805)" />
<linearGradient
id="linearGradient3007">
<stop
id="stop3009"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3011"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<radialGradient
r="19.467436"
fy="77.042847"
fx="84.883324"
cy="77.042847"
cx="84.883324"
gradientTransform="matrix(2.8492421,1.2585119,-0.4040415,0.9147407,-125.84131,-100.25805)"
gradientUnits="userSpaceOnUse"
id="radialGradient3017"
xlink:href="#linearGradient3377-6"
inkscape:collect="always" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3377-6"
id="radialGradient3699-2"
gradientUnits="userSpaceOnUse"
cx="76.383331"
cy="94.369568"
fx="76.383331"
fy="94.369568"
r="19.467436"
gradientTransform="matrix(0.9818943,0.1894295,-0.4109427,2.1300924,40.163453,-121.11559)" />
<linearGradient
id="linearGradient3377-6">
<stop
id="stop3379-2"
offset="0"
style="stop-color:#00afff;stop-opacity:1;" />
<stop
id="stop3381-4"
offset="1"
style="stop-color:#0034ff;stop-opacity:1;" />
</linearGradient>
<radialGradient
r="19.467436"
fy="77.042847"
fx="84.883324"
cy="77.042847"
cx="84.883324"
gradientTransform="matrix(2.8492421,1.2585119,-0.4040415,0.9147407,-125.84131,-100.25805)"
gradientUnits="userSpaceOnUse"
id="radialGradient3017-8"
xlink:href="#linearGradient3377-6"
inkscape:collect="always" />
<linearGradient
id="linearGradient3835">
<stop
id="stop3837"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3839"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<radialGradient
r="19.467436"
fy="77.042847"
fx="84.883324"
cy="77.042847"
cx="84.883324"
gradientTransform="matrix(2.8492421,1.2585119,-0.4040415,0.9147407,-125.84131,-100.25805)"
gradientUnits="userSpaceOnUse"
id="radialGradient3844"
xlink:href="#linearGradient3377-6"
inkscape:collect="always" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3377-6"
id="radialGradient3699-7"
gradientUnits="userSpaceOnUse"
cx="76.383331"
cy="94.369568"
fx="76.383331"
fy="94.369568"
r="19.467436"
gradientTransform="matrix(0.9818943,0.1894295,-0.4109427,2.1300924,40.163453,-121.11559)" />
<linearGradient
id="linearGradient3377-2">
<stop
id="stop3379-7"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3381-8"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<radialGradient
r="19.467436"
fy="77.042847"
fx="84.883324"
cy="77.042847"
cx="84.883324"
gradientTransform="matrix(2.8492421,1.2585119,-0.4040415,0.9147407,-125.84131,-100.25805)"
gradientUnits="userSpaceOnUse"
id="radialGradient3017-6"
xlink:href="#linearGradient3377-2"
inkscape:collect="always" />
<linearGradient
id="linearGradient3835-1">
<stop
id="stop3837-0"
offset="0"
style="stop-color:#faff2b;stop-opacity:1;" />
<stop
id="stop3839-9"
offset="1"
style="stop-color:#ffaa00;stop-opacity:1;" />
</linearGradient>
<radialGradient
r="19.467436"
fy="77.042847"
fx="84.883324"
cy="77.042847"
cx="84.883324"
gradientTransform="matrix(2.8492421,1.2585119,-0.4040415,0.9147407,-125.84131,-100.25805)"
gradientUnits="userSpaceOnUse"
id="radialGradient3844-7"
xlink:href="#linearGradient3377-6"
inkscape:collect="always" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4032"
id="radialGradient4112"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.19157613,0.46621455,-1.1364164,-0.41904304,156.5648,24.076707)"
cx="86.836884"
cy="90.601151"
fx="86.836884"
fy="90.601151"
r="19.467436" />
<linearGradient
id="linearGradient4032">
<stop
style="stop-color:#71b2f8;stop-opacity:1;"
offset="0"
id="stop4034" />
<stop
style="stop-color:#002795;stop-opacity:1;"
offset="1"
id="stop4036" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4032"
id="radialGradient4114"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.19036833,-0.61386357,1.99853,-0.19092801,-47.133199,165.45559)"
cx="113.50187"
cy="65.849281"
fx="113.50187"
fy="65.849281"
r="19.467436" />
<linearGradient
id="linearGradient3171">
<stop
style="stop-color:#cccccc;stop-opacity:1"
offset="0"
id="stop3173" />
<stop
style="stop-color:#b4b4b4;stop-opacity:1"
offset="1"
id="stop3175" />
</linearGradient>
<radialGradient
r="19.467436"
fy="65.849281"
fx="113.50187"
cy="65.849281"
cx="113.50187"
gradientTransform="matrix(0.19036833,-0.61386357,1.99853,-0.19092801,-47.133199,165.45559)"
gradientUnits="userSpaceOnUse"
id="radialGradient3180"
xlink:href="#linearGradient4032"
inkscape:collect="always" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4032-7"
id="radialGradient4112-9"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.19157613,0.46621455,-1.1364164,-0.41904304,162.99236,26.56694)"
cx="86.836884"
cy="90.601151"
fx="86.836884"
fy="90.601151"
r="19.467436" />
<linearGradient
id="linearGradient4032-7">
<stop
style="stop-color:#71b2f8;stop-opacity:1;"
offset="0"
id="stop4034-3" />
<stop
style="stop-color:#002795;stop-opacity:1;"
offset="1"
id="stop4036-6" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4032-7"
id="radialGradient4114-3"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.19036833,-0.61386357,1.99853,-0.19092801,-47.133199,165.45559)"
cx="113.50187"
cy="65.849281"
fx="113.50187"
fy="65.849281"
r="19.467436" />
<linearGradient
id="linearGradient3171-9">
<stop
style="stop-color:#969696;stop-opacity:1"
offset="0"
id="stop3173-7" />
<stop
style="stop-color:#646464;stop-opacity:1"
offset="1"
id="stop3175-5" />
</linearGradient>
<radialGradient
r="19.467436"
fy="65.849281"
fx="113.50187"
cy="65.849281"
cx="113.50187"
gradientTransform="matrix(0.19036833,-0.61386357,1.99853,-0.19092801,-47.133199,165.45559)"
gradientUnits="userSpaceOnUse"
id="radialGradient3180-6"
xlink:href="#linearGradient4032-7"
inkscape:collect="always" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4032-8"
id="radialGradient4112-7"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.19157613,0.46621455,-1.1364164,-0.41904304,156.5648,24.076707)"
cx="86.836884"
cy="90.601151"
fx="86.836884"
fy="90.601151"
r="19.467436" />
<linearGradient
id="linearGradient4032-8">
<stop
style="stop-color:#71b2f8;stop-opacity:1;"
offset="0"
id="stop4034-4" />
<stop
style="stop-color:#002795;stop-opacity:1;"
offset="1"
id="stop4036-3" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4032-8"
id="radialGradient4114-9"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.19036833,-0.61386357,1.99853,-0.19092801,-47.133199,165.45559)"
cx="113.50187"
cy="65.849281"
fx="113.50187"
fy="65.849281"
r="19.467436" />
<linearGradient
id="linearGradient3171-1">
<stop
style="stop-color:#71b2f8;stop-opacity:1;"
offset="0"
id="stop3173-0" />
<stop
style="stop-color:#002795;stop-opacity:1;"
offset="1"
id="stop3175-3" />
</linearGradient>
<radialGradient
r="19.467436"
fy="65.849281"
fx="113.50187"
cy="65.849281"
cx="113.50187"
gradientTransform="matrix(0.19036833,-0.61386357,1.99853,-0.19092801,-47.133199,165.45559)"
gradientUnits="userSpaceOnUse"
id="radialGradient3180-9"
xlink:href="#linearGradient4032-8"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4032-0"
id="linearGradient3822"
x1="154.13527"
y1="33.267025"
x2="165.61629"
y2="46.429642"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient4032-0">
<stop
style="stop-color:#71b2f8;stop-opacity:1;"
offset="0"
id="stop4034-37" />
<stop
style="stop-color:#002795;stop-opacity:1;"
offset="1"
id="stop4036-1" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4032-0"
id="radialGradient3703"
gradientUnits="userSpaceOnUse"
cx="132.70454"
cy="90.193245"
fx="132.70454"
fy="90.193245"
r="19.467436"
gradientTransform="matrix(-0.08162339,1.3949072,-1.1572569,-0.26963374,245.22773,-105.44363)" />
<linearGradient
id="linearGradient3284">
<stop
style="stop-color:#71b2f8;stop-opacity:1;"
offset="0"
id="stop3286" />
<stop
style="stop-color:#002795;stop-opacity:1;"
offset="1"
id="stop3288" />
</linearGradient>
<radialGradient
r="19.467436"
fy="90.193245"
fx="132.70454"
cy="90.193245"
cx="132.70454"
gradientTransform="matrix(-0.08162339,1.3949072,-1.1572569,-0.26963374,245.22773,-105.44363)"
gradientUnits="userSpaceOnUse"
id="radialGradient3294"
xlink:href="#linearGradient4032-0"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4023"
id="linearGradient4029"
x1="45"
y1="34"
x2="50"
y2="59"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
id="linearGradient4023">
<stop
style="stop-color:#8ae234;stop-opacity:1;"
offset="0"
id="stop4025" />
<stop
style="stop-color:#4e9a06;stop-opacity:1"
offset="1"
id="stop4027" />
</linearGradient>
<linearGradient
gradientTransform="translate(-16,0)"
inkscape:collect="always"
xlink:href="#linearGradient3171-9"
id="linearGradient3783"
x1="60"
y1="58"
x2="50"
y2="38"
gradientUnits="userSpaceOnUse" />
<linearGradient
gradientTransform="translate(-16,0)"
inkscape:collect="always"
xlink:href="#linearGradient3171"
id="linearGradient3773"
x1="26"
y1="64"
x2="22"
y2="46"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4277"
id="linearGradient3807-3-9"
x1="123.54545"
y1="43.630688"
x2="71.181816"
y2="35.897354"
gradientUnits="userSpaceOnUse"
spreadMethod="reflect"
gradientTransform="matrix(0.45833337,0,0,0.51724135,7.374997,5.432404)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3377-6"
id="linearGradient3807-3"
x1="110"
y1="35"
x2="40.636368"
y2="28.133339"
gradientUnits="userSpaceOnUse"
spreadMethod="reflect"
gradientTransform="matrix(0.45833337,0,0,0.51724135,-28.625003,1.4482735)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3801-6-1-6"
id="linearGradient3807-3-9-3"
x1="110"
y1="35"
x2="85"
y2="35"
gradientUnits="userSpaceOnUse"
spreadMethod="reflect"
gradientTransform="matrix(0.45833337,0,0,0.51724135,7.374996,33.448275)" />
<linearGradient
inkscape:collect="always"
id="linearGradient3801-6-1-6">
<stop
style="stop-color:#c4a000;stop-opacity:1"
offset="0"
id="stop3803-7-2-7" />
<stop
style="stop-color:#fce94f;stop-opacity:1"
offset="1"
id="stop3805-5-7-5" />
</linearGradient>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2"
inkscape:cx="10.513916"
inkscape:cy="-62.479706"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1375"
inkscape:window-height="876"
inkscape:window-x="65"
inkscape:window-y="24"
inkscape:window-maximized="1"
showguides="false">
<inkscape:grid
type="xygrid"
id="grid3067"
empspacing="2"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata2985">
<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>
<dc:creator>
<cc:Agent>
<dc:title>[jmaustpc]</dc:title>
</cc:Agent>
</dc:creator>
<dc:title>Assembly_Assembly_Tree</dc:title>
<dc:date>2013-12-24</dc:date>
<dc:relation>http://www.freecadweb.org/wiki/index.php?title=Artwork</dc:relation>
<dc:publisher>
<cc:Agent>
<dc:title>FreeCAD</dc:title>
</cc:Agent>
</dc:publisher>
<dc:identifier>FreeCAD/src/Mod/Assembly/Gui/Resources/icons/Assembly_Assembly_Tree.svg</dc:identifier>
<dc:rights>
<cc:Agent>
<dc:title>FreeCAD LGPL2+</dc:title>
</cc:Agent>
</dc:rights>
<cc:license>https://www.gnu.org/copyleft/lesser.html</cc:license>
<dc:contributor>
<cc:Agent>
<dc:title>[agryson] Alexander Gryson</dc:title>
</cc:Agent>
</dc:contributor>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g3760-8"
transform="matrix(0.39800085,0,0,0.49338099,18.710208,-4.5784768)" />
<g
id="g3205">
<path
sodipodi:nodetypes="sscccs"
inkscape:connector-curvature="0"
id="path2994-3-3"
d="m 25.000001,24.86206 c 0,2.28532 -4.924867,4.13794 -11,4.13794 C 7.924868,29 3,27.14738 3,24.86206 l -1e-6,-17.7241305 22.000001,0 z"
style="fill:#729fcf;stroke:#0b1521;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.5;stroke-opacity:1;stroke-dashoffset:20.4" />
<path
sodipodi:nodetypes="sscccs"
inkscape:connector-curvature="0"
id="path2994-3-6-5"
d="m 23,24 c 0,2.07756 -5.999802,3.01587 -9,3.01587 -3,0 -9,-0.93831 -9,-3.01587 l -1e-6,-15.6551715 18.000001,0 z"
style="fill:url(#linearGradient3807-3);fill-opacity:1;stroke:#4abdf5;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.5;stroke-opacity:1;stroke-dashoffset:20.4" />
<path
sodipodi:nodetypes="csc"
inkscape:connector-curvature="0"
id="path2994-3-6-9-6"
d="M 23,11.000001 C 21,13 17,13.351648 14,13.351648 11,13.351648 7,13 5,11.000001"
style="fill:none;stroke:#4abdf5;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.5;stroke-opacity:1;stroke-dashoffset:20.4" />
<path
transform="matrix(0.52380955,0,0,0.59113297,32.333335,-7.640393)"
d="m -14,25 c 0,3.865993 -9.40202,7 -21,7 -11.59798,0 -21,-3.134007 -21,-7 0,-3.865993 9.40202,-7 21,-7 11.59798,0 21,3.134007 21,7 z"
sodipodi:ry="7"
sodipodi:rx="21"
sodipodi:cy="25"
sodipodi:cx="-35"
id="path2994-2"
style="fill:#cccccc;stroke:#0b1521;stroke-width:3.59418702;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.5;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:20.4;fill-opacity:1"
sodipodi:type="arc" />
</g>
<g
id="g3199">
<path
sodipodi:nodetypes="sscccs"
inkscape:connector-curvature="0"
id="path2994-3-3-0"
d="m 61.000001,28.84619 c 0,2.28532 -4.924867,4.13794 -11,4.13794 C 43.924868,32.98413 39,31.13151 39,28.84619 l -10e-7,-17.72413 22.000001,0 z"
style="fill:#729fcf;stroke:#0b1521;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.5;stroke-opacity:1;stroke-dashoffset:20.4" />
<path
sodipodi:nodetypes="sscccs"
inkscape:connector-curvature="0"
id="path2994-3-6-5-9"
d="M 59,27.98413 C 59,30.06169 53.000198,31 50,31 47,31 41,30.06169 41,27.98413 l -10e-7,-15.655171 18.000001,0 z"
style="fill:url(#linearGradient3807-3-9);fill-opacity:1;stroke:#cccccc;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.5;stroke-opacity:1;stroke-dashoffset:20.4" />
<path
sodipodi:nodetypes="csc"
inkscape:connector-curvature="0"
id="path2994-3-6-9-6-3"
d="m 59,14.984131 c -2,1.999999 -6,2.351647 -9,2.351647 -3,0 -7,-0.351648 -9,-2.351647"
style="fill:none;stroke:#cccccc;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.5;stroke-opacity:1;stroke-dashoffset:20.4" />
<path
transform="matrix(0.52380955,0,0,0.59113297,68.333335,-3.6562625)"
d="m -14,25 c 0,3.865993 -9.40202,7 -21,7 -11.59798,0 -21,-3.134007 -21,-7 0,-3.865993 9.40202,-7 21,-7 11.59798,0 21,3.134007 21,7 z"
sodipodi:ry="7"
sodipodi:rx="21"
sodipodi:cy="25"
sodipodi:cx="-35"
id="path2994-2-6"
style="fill:#cccccc;stroke:#0b1521;stroke-width:3.59418702;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.5;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:20.4;fill-opacity:1"
sodipodi:type="arc" />
</g>
<g
id="g3192">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path2993"
d="M 3,35 21,39 37,35 21,31 z"
style="fill:#cccccc;stroke:#0b1521;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;fill-opacity:1" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path2995"
d="m 37,35 0,20 -16,6 0,-22 z"
style="fill:url(#linearGradient3783);fill-opacity:1;stroke:#0b1521;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
<path
style="fill:url(#linearGradient3773);fill-opacity:1;fill-rule:evenodd;stroke:#0b1521;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 3,35 21,39 21,61 3,57 z"
id="path3825"
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path3765"
d="m 5,37.42772 0.0087,17.919116 14.008671,3.268799 -0.0087,-17.933614 z"
style="fill:none;stroke:#cccccc;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path3775"
d="m 23.01243,40.433833 -0.01226,17.535301 12.001105,-4.300993 3.6e-4,-15.867363 z"
style="fill:none;stroke:#969696;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<path
inkscape:connector-curvature="0"
style="fill:#546f7a;stroke:#383838;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 32.239462,29.057981 4.768064,-3.371932 c 0.334481,-0.236372 0.815094,-0.170698 1.073898,0.146743 l 24.107159,29.589616 c 1.275053,1.565015 0.971546,3.786912 -0.67677,4.952755 -0.824098,0.582875 -1.830835,0.792909 -2.790843,0.661729 -0.960007,-0.13118 -1.87349,-0.603604 -2.511105,-1.386214 L 32.102516,30.060935 c -0.258689,-0.317527 -0.197331,-0.766564 0.136946,-1.002954 z"
id="path3" />
<path
inkscape:connector-curvature="0"
style="fill:#475d63"
d="m 34.583786,30.550636 1.819842,-1.298109 22.288383,27.588946 c 0.578295,0.715784 1.60092,1.698563 2.479502,1.649712 0.472279,-0.0263 0.291134,-0.02996 0.66813,-0.09835 -0.223718,0.422047 -0.482937,0.863123 -0.90734,1.165872 -0.749125,0.534388 -1.339894,0.56846 -2.211642,0.449339 -0.871748,-0.11912 -1.819345,-0.760881 -2.397641,-1.476655 L 34.458404,31.468885 c -0.234623,-0.290399 -0.178445,-0.701518 0.125382,-0.918249 z"
id="path13"
sodipodi:nodetypes="cccscssssc" />
<path
inkscape:connector-curvature="0"
style="fill:#e0e0e0;stroke:#383838;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 33.107218,25.437497 c 1.648378,-1.165546 4.026795,-0.840547 5.302152,0.724514 l 6.453203,7.920768 c 0.258678,0.317616 0.197333,0.766554 -0.137059,1.003029 l -4.768064,3.371931 c -0.167183,0.118144 -0.371062,0.160834 -0.565274,0.134296 -0.194213,-0.02654 -0.379165,-0.12236 -0.508523,-0.281025 l -6.453205,-7.920758 c -1.275013,-1.565303 -0.971417,-3.787086 0.67677,-4.952755 z"
id="path15" />
<path
inkscape:connector-curvature="0"
style="fill:#c6c5ca"
d="m 33.87541,26.091128 c 1.046574,-0.412759 0.861516,-0.262767 1.333777,-0.341487 -0.536793,0.975627 -0.409227,2.148174 0.392402,3.093821 l 6.071704,7.160478 -1.671985,1.194331 c -0.104234,0.09251 -0.270505,0.255146 -0.439888,0.232001 -0.169385,-0.02315 -0.244493,-0.150002 -0.357955,-0.283674 L 33.338189,30.378732 C 32.219931,29.059276 32.43553,26.94732 33.87541,26.091128 Z"
id="path17"
sodipodi:nodetypes="cccccsccc" />
<g
id="g4345"
transform="matrix(1.1672929,0,0,1.1672929,2.7626002,-0.86516693)">
<path
transform="matrix(-0.53036227,0.84777113,-0.84777113,-0.53036227,51.214868,5.9648907)"
inkscape:transform-center-y="0.80192699"
inkscape:transform-center-x="-0.43184571"
d="m 35.634968,28.059014 -8.412731,-1.095962 -5.672134,6.308888 -1.557355,-8.339653 -7.752895,-3.444967 7.450233,-4.058226 0.880581,-8.4379949 6.161852,5.8315309 8.297124,-1.770001 -3.641999,7.662312 z"
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="false"
sodipodi:arg2="1.2163211"
sodipodi:arg1="0.5880026"
sodipodi:r2="6.3877878"
sodipodi:r1="12.775575"
sodipodi:cy="20.972401"
sodipodi:cx="25.005047"
sodipodi:sides="5"
id="path4317"
style="opacity:1;fill:#fdc50d;fill-opacity:1;stroke:#c0822e;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:63;stroke-opacity:1"
sodipodi:type="star" />
<path
sodipodi:nodetypes="ccccccccccc"
inkscape:connector-curvature="0"
id="path4317-2"
d="m 32.017391,25.104153 -5.889539,-0.467214 -5.843864,6.660184 -1.213259,-6.344895 -8.348778,-3.834869 8.053709,-4.525015 1.049653,-9.1483998 6.805135,6.3592448 5.850128,-1.407246 -3.477248,7.805495 z"
inkscape:transform-center-y="0.59295265"
inkscape:transform-center-x="-0.31931126"
style="opacity:1;fill:#fce01b;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:63;stroke-opacity:1"
transform="matrix(-0.39215509,0.62685033,-0.62685033,-0.39215509,42.721976,8.5899893)" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 28 KiB

View File

@ -1 +0,0 @@
__version__ = "0.11.0"

Some files were not shown because too many files have changed in this diff Show More