added RFE 533 - Draft Array tool

git-svn-id: https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk@5256 e8eeb9e2-ec13-0410-a4a9-efa5cf37419d
This commit is contained in:
yorikvanhavre 2011-12-10 18:31:32 +00:00
parent ac695ad67b
commit 57fa312673
6 changed files with 652 additions and 17 deletions

View File

@ -544,6 +544,34 @@ def makeBlock(objectslist):
select(obj)
return obj
def makeArray(baseobject,arg1=Vector(0,0,0),arg2=360,arg3=4,arg4=None):
'''makeArray(object,xvector,yvector,xnum,ynum) for rectangular array, or
makeArray(object,center,totalangle,totalnum) for polar array: Creates an array
of the given object
with, in case of rectangular array, xnum of iterations in the x direction
at xvector distance between iterations, and same for y direction with yvector
and ynum. In case of polar array, center is a vector, totalangle is the angle
to cover (in degrees) and totalnum is the number of objects, including the original.
The result is a parametric Draft Array.'''
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython","Array")
_Array(obj)
_ViewProviderArray(obj.ViewObject)
obj.Base = baseobject
if arg4:
org.ArrayType = "ortho"
obj.IntervalX = arg1
obj.IntervalY = arg2
obj.NumberX = arg3
obj.NumberY = arg4
else:
obj.ArrayType = "polar"
obj.Center = arg1
obj.Angle = arg2
obj.NumberPolar = arg3
baseobject.ViewObject.hide()
select(obj)
return obj
def extrude(obj,vector):
'''makeExtrusion(object,vector): extrudes the given object
in the direction given by the vector. The original object
@ -2181,3 +2209,88 @@ class _Shape2DView:
obj.Shape = visibleG0
if not fcgeo.isNull(pl):
obj.Placement = pl
class _Array:
"The Draft Array object"
def __init__(self,obj):
obj.addProperty("App::PropertyLink","Base","Base",
"The base object that must be duplicated")
obj.addProperty("App::PropertyEnumeration","ArrayType","Base",
"The type of array to create")
obj.addProperty("App::PropertyInteger","NumberX","Base",
"Number of copies in X direction (ortho arrays)")
obj.addProperty("App::PropertyInteger","NumberY","Base",
"Number of copies in Y direction (ortho arrays)")
obj.addProperty("App::PropertyInteger","NumberPolar","Base",
"Number of copies (polar arrays)")
obj.addProperty("App::PropertyVector","IntervalX","Base",
"Distance and orientation of intervals in X direction (ortho arrays)")
obj.addProperty("App::PropertyVector","IntervalY","Base",
"Distance and orientation of intervals in Y direction (ortho arrays)")
obj.addProperty("App::PropertyVector","Center","Base",
"Center point (polar arrays)")
obj.addProperty("App::PropertyAngle","Angle","Base",
"Angle to cover with copies (polar arrays)")
obj.Proxy = self
self.Type = "Array"
obj.ArrayType = ['ortho','polar']
obj.NumberX = 1
obj.NumberY = 1
obj.NumberPolar = 1
obj.IntervalX = Vector(1,0,0)
obj.IntervalY = Vector(0,1,0)
def execute(self,obj):
self.createGeometry(obj)
def onChanged(self,obj,prop):
if prop in ["ArrayType","NumberX","NumberY","NumberPolar","IntervalX","IntervalY","Angle","Center"]:
self.createGeometry(obj)
def createGeometry(self,obj):
if obj.Base:
pl = obj.Placement
if obj.ArrayType == "ortho":
sh = self.rectArray(obj.Base.Shape,obj.IntervalX,obj.IntervalY,obj.NumberX,obj.NumberY)
else:
sh = self.polarArray(obj.Base.Shape,obj.Center,obj.Angle,obj.NumberPolar)
obj.Shape = sh
if not fcgeo.isNull(pl):
obj.Placement = pl
def rectArray(self,shape,xvector,yvector,xnum,ynum):
base = [shape.copy()]
for xcount in range(xnum):
currentxvector=fcvec.scale(xvector,xcount)
if not xcount==0:
nshape = shape.copy()
nshape.translate(currentxvector)
base.append(nshape)
for ycount in range(ynum):
currentxvector=FreeCAD.Vector(currentxvector)
currentyvector=currentxvector.add(fcvec.scale(yvector,ycount))
if not ycount==0:
nshape = shape.copy()
nshape.translate(currentyvector)
base.append(nshape)
return Part.makeCompound(base)
def polarArray(self,shape,center,angle,num):
fraction = angle/num
base = [shape.copy()]
for i in range(num):
currangle = fraction + (i*fraction)
nshape = shape.copy()
nshape.rotate(fcvec.tup(center), (0,0,1), currangle)
base.append(nshape)
return Part.makeCompound(base)
class _ViewProviderArray(_ViewProviderDraft):
"A view provider for Array objects"
def __init__(self,obj):
_ViewProviderDraft.__init__(self,obj)
def claimChildren(self):
return [self.Object.Base]

View File

@ -2,7 +2,7 @@
# Resource object code
#
# Created: Thu Dec 8 11:44:05 2011
# Created: Sat Dec 10 14:06:42 2011
# by: The Resource Compiler for PyQt (Qt v4.7.3)
#
# WARNING! All changes made in this file will be lost!
@ -28329,6 +28329,371 @@ qt_resource_data = "\
\xe4\xb6\xce\x1c\x7a\x83\x62\xc0\x9d\x1d\x2b\xfd\xa2\xae\x9a\x4e\
\x16\xfb\x84\x01\x5f\x53\x93\xe0\x1e\xee\xfe\x0f\xea\x16\x2b\x89\
\
\x00\x00\x16\xaf\
\x3c\
\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
\x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\
\x6e\x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\x74\
\x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\x65\
\x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\
\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\x0a\
\x0a\x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x64\
\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x70\x75\x72\x6c\x2e\x6f\
\x72\x67\x2f\x64\x63\x2f\x65\x6c\x65\x6d\x65\x6e\x74\x73\x2f\x31\
\x2e\x31\x2f\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x63\x63\
\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\x65\x61\x74\x69\x76\
\x65\x63\x6f\x6d\x6d\x6f\x6e\x73\x2e\x6f\x72\x67\x2f\x6e\x73\x23\
\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x72\x64\x66\x3d\x22\
\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\
\x67\x2f\x31\x39\x39\x39\x2f\x30\x32\x2f\x32\x32\x2d\x72\x64\x66\
\x2d\x73\x79\x6e\x74\x61\x78\x2d\x6e\x73\x23\x22\x0a\x20\x20\x20\
\x78\x6d\x6c\x6e\x73\x3a\x73\x76\x67\x3d\x22\x68\x74\x74\x70\x3a\
\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\
\x30\x2f\x73\x76\x67\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3d\
\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\
\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\x20\x20\
\x78\x6d\x6c\x6e\x73\x3a\x78\x6c\x69\x6e\x6b\x3d\x22\x68\x74\x74\
\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\
\x39\x39\x39\x2f\x78\x6c\x69\x6e\x6b\x22\x0a\x20\x20\x20\x78\x6d\
\x6c\x6e\x73\x3a\x73\x6f\x64\x69\x70\x6f\x64\x69\x3d\x22\x68\x74\
\x74\x70\x3a\x2f\x2f\x73\x6f\x64\x69\x70\x6f\x64\x69\x2e\x73\x6f\
\x75\x72\x63\x65\x66\x6f\x72\x67\x65\x2e\x6e\x65\x74\x2f\x44\x54\
\x44\x2f\x73\x6f\x64\x69\x70\x6f\x64\x69\x2d\x30\x2e\x64\x74\x64\
\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x69\x6e\x6b\x73\x63\
\x61\x70\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\
\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x6e\x61\x6d\
\x65\x73\x70\x61\x63\x65\x73\x2f\x69\x6e\x6b\x73\x63\x61\x70\x65\
\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\x36\x34\x70\x78\
\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x36\x34\x70\
\x78\x22\x0a\x20\x20\x20\x69\x64\x3d\x22\x73\x76\x67\x35\x38\x32\
\x31\x22\x0a\x20\x20\x20\x73\x6f\x64\x69\x70\x6f\x64\x69\x3a\x76\
\x65\x72\x73\x69\x6f\x6e\x3d\x22\x30\x2e\x33\x32\x22\x0a\x20\x20\
\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x76\x65\x72\x73\x69\x6f\
\x6e\x3d\x22\x30\x2e\x34\x38\x2e\x31\x20\x72\x39\x37\x36\x30\x22\
\x0a\x20\x20\x20\x73\x6f\x64\x69\x70\x6f\x64\x69\x3a\x64\x6f\x63\
\x6e\x61\x6d\x65\x3d\x22\x44\x72\x61\x66\x74\x5f\x44\x72\x61\x66\
\x74\x32\x53\x6b\x65\x74\x63\x68\x2e\x73\x76\x67\x22\x0a\x20\x20\
\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x6f\x75\x74\x70\x75\x74\
\x5f\x65\x78\x74\x65\x6e\x73\x69\x6f\x6e\x3d\x22\x6f\x72\x67\x2e\
\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x75\x74\x70\x75\x74\x2e\
\x73\x76\x67\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x22\x0a\x20\x20\
\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x0a\x20\
\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x65\x78\x70\x6f\x72\
\x74\x2d\x66\x69\x6c\x65\x6e\x61\x6d\x65\x3d\x22\x2f\x6d\x65\x64\
\x69\x61\x2f\x64\x61\x74\x61\x2f\x59\x6f\x72\x69\x6b\x2f\x46\x72\
\x65\x65\x43\x41\x44\x2f\x69\x63\x6f\x6e\x73\x2f\x53\x6b\x65\x74\
\x63\x68\x65\x72\x2e\x70\x6e\x67\x22\x0a\x20\x20\x20\x69\x6e\x6b\
\x73\x63\x61\x70\x65\x3a\x65\x78\x70\x6f\x72\x74\x2d\x78\x64\x70\
\x69\x3d\x22\x34\x35\x22\x0a\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\
\x70\x65\x3a\x65\x78\x70\x6f\x72\x74\x2d\x79\x64\x70\x69\x3d\x22\
\x34\x35\x22\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\x0a\x20\x20\x20\
\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x35\x38\x32\x33\x22\x3e\
\x0a\x20\x20\x20\x20\x3c\x6c\x69\x6e\x65\x61\x72\x47\x72\x61\x64\
\x69\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\
\x63\x61\x70\x65\x3a\x63\x6f\x6c\x6c\x65\x63\x74\x3d\x22\x61\x6c\
\x77\x61\x79\x73\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\
\x22\x6c\x69\x6e\x65\x61\x72\x47\x72\x61\x64\x69\x65\x6e\x74\x36\
\x33\x34\x39\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\x3c\x73\x74\x6f\
\x70\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\
\x3d\x22\x73\x74\x6f\x70\x2d\x63\x6f\x6c\x6f\x72\x3a\x23\x30\x30\
\x30\x30\x30\x30\x3b\x73\x74\x6f\x70\x2d\x6f\x70\x61\x63\x69\x74\
\x79\x3a\x31\x3b\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6f\
\x66\x66\x73\x65\x74\x3d\x22\x30\x22\x0a\x20\x20\x20\x20\x20\x20\
\x20\x20\x20\x69\x64\x3d\x22\x73\x74\x6f\x70\x36\x33\x35\x31\x22\
\x20\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\x3c\x73\x74\x6f\x70\x0a\
\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\
\x73\x74\x6f\x70\x2d\x63\x6f\x6c\x6f\x72\x3a\x23\x30\x30\x30\x30\
\x30\x30\x3b\x73\x74\x6f\x70\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\
\x30\x3b\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x66\x66\
\x73\x65\x74\x3d\x22\x31\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\
\x20\x69\x64\x3d\x22\x73\x74\x6f\x70\x36\x33\x35\x33\x22\x20\x2f\
\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x6c\x69\x6e\x65\x61\x72\x47\x72\
\x61\x64\x69\x65\x6e\x74\x3e\x0a\x20\x20\x20\x20\x3c\x6c\x69\x6e\
\x65\x61\x72\x47\x72\x61\x64\x69\x65\x6e\x74\x0a\x20\x20\x20\x20\
\x20\x20\x20\x69\x64\x3d\x22\x6c\x69\x6e\x65\x61\x72\x47\x72\x61\
\x64\x69\x65\x6e\x74\x33\x33\x37\x37\x22\x3e\x0a\x20\x20\x20\x20\
\x20\x20\x3c\x73\x74\x6f\x70\x0a\x20\x20\x20\x20\x20\x20\x20\x20\
\x20\x73\x74\x79\x6c\x65\x3d\x22\x73\x74\x6f\x70\x2d\x63\x6f\x6c\
\x6f\x72\x3a\x23\x30\x30\x31\x39\x61\x33\x3b\x73\x74\x6f\x70\x2d\
\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x3b\x22\x0a\x20\x20\x20\x20\
\x20\x20\x20\x20\x20\x6f\x66\x66\x73\x65\x74\x3d\x22\x30\x22\x0a\
\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x73\x74\x6f\
\x70\x33\x33\x37\x39\x22\x20\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\
\x3c\x73\x74\x6f\x70\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\
\x74\x79\x6c\x65\x3d\x22\x73\x74\x6f\x70\x2d\x63\x6f\x6c\x6f\x72\
\x3a\x23\x30\x30\x36\x39\x66\x66\x3b\x73\x74\x6f\x70\x2d\x6f\x70\
\x61\x63\x69\x74\x79\x3a\x31\x3b\x22\x0a\x20\x20\x20\x20\x20\x20\
\x20\x20\x20\x6f\x66\x66\x73\x65\x74\x3d\x22\x31\x22\x0a\x20\x20\
\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x73\x74\x6f\x70\x33\
\x33\x38\x31\x22\x20\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x6c\x69\
\x6e\x65\x61\x72\x47\x72\x61\x64\x69\x65\x6e\x74\x3e\x0a\x20\x20\
\x20\x20\x3c\x6c\x69\x6e\x65\x61\x72\x47\x72\x61\x64\x69\x65\x6e\
\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\
\x65\x3a\x63\x6f\x6c\x6c\x65\x63\x74\x3d\x22\x61\x6c\x77\x61\x79\
\x73\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x78\x6c\x69\x6e\x6b\x3a\
\x68\x72\x65\x66\x3d\x22\x23\x6c\x69\x6e\x65\x61\x72\x47\x72\x61\
\x64\x69\x65\x6e\x74\x33\x33\x37\x37\x22\x0a\x20\x20\x20\x20\x20\
\x20\x20\x69\x64\x3d\x22\x6c\x69\x6e\x65\x61\x72\x47\x72\x61\x64\
\x69\x65\x6e\x74\x33\x33\x38\x33\x22\x0a\x20\x20\x20\x20\x20\x20\
\x20\x78\x31\x3d\x22\x39\x30\x31\x2e\x31\x38\x37\x35\x22\x0a\x20\
\x20\x20\x20\x20\x20\x20\x79\x31\x3d\x22\x31\x31\x39\x30\x2e\x38\
\x37\x35\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x78\x32\x3d\x22\x31\
\x32\x36\x37\x2e\x39\x30\x36\x32\x22\x0a\x20\x20\x20\x20\x20\x20\
\x20\x79\x32\x3d\x22\x31\x31\x39\x30\x2e\x38\x37\x35\x22\x0a\x20\
\x20\x20\x20\x20\x20\x20\x67\x72\x61\x64\x69\x65\x6e\x74\x55\x6e\
\x69\x74\x73\x3d\x22\x75\x73\x65\x72\x53\x70\x61\x63\x65\x4f\x6e\
\x55\x73\x65\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x67\x72\x61\x64\
\x69\x65\x6e\x74\x54\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\
\x61\x74\x72\x69\x78\x28\x2d\x31\x2c\x30\x2c\x30\x2c\x31\x2c\x32\
\x31\x39\x39\x2e\x33\x35\x36\x2c\x30\x29\x22\x20\x2f\x3e\x0a\x20\
\x20\x20\x20\x3c\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x65\x72\
\x73\x70\x65\x63\x74\x69\x76\x65\x0a\x20\x20\x20\x20\x20\x20\x20\
\x73\x6f\x64\x69\x70\x6f\x64\x69\x3a\x74\x79\x70\x65\x3d\x22\x69\
\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x65\x72\x73\x70\x33\x64\x22\
\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\
\x3a\x76\x70\x5f\x78\x3d\x22\x30\x20\x3a\x20\x33\x32\x20\x3a\x20\
\x31\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\
\x70\x65\x3a\x76\x70\x5f\x79\x3d\x22\x30\x20\x3a\x20\x31\x30\x30\
\x30\x20\x3a\x20\x30\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\
\x6b\x73\x63\x61\x70\x65\x3a\x76\x70\x5f\x7a\x3d\x22\x36\x34\x20\
\x3a\x20\x33\x32\x20\x3a\x20\x31\x22\x0a\x20\x20\x20\x20\x20\x20\
\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x65\x72\x73\x70\x33\
\x64\x2d\x6f\x72\x69\x67\x69\x6e\x3d\x22\x33\x32\x20\x3a\x20\x32\
\x31\x2e\x33\x33\x33\x33\x33\x33\x20\x3a\x20\x31\x22\x0a\x20\x20\
\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x65\x72\x73\x70\x65\x63\
\x74\x69\x76\x65\x35\x38\x32\x39\x22\x20\x2f\x3e\x0a\x20\x20\x20\
\x20\x3c\x72\x61\x64\x69\x61\x6c\x47\x72\x61\x64\x69\x65\x6e\x74\
\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\
\x3a\x63\x6f\x6c\x6c\x65\x63\x74\x3d\x22\x61\x6c\x77\x61\x79\x73\
\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x78\x6c\x69\x6e\x6b\x3a\x68\
\x72\x65\x66\x3d\x22\x23\x6c\x69\x6e\x65\x61\x72\x47\x72\x61\x64\
\x69\x65\x6e\x74\x36\x33\x34\x39\x22\x0a\x20\x20\x20\x20\x20\x20\
\x20\x69\x64\x3d\x22\x72\x61\x64\x69\x61\x6c\x47\x72\x61\x64\x69\
\x65\x6e\x74\x36\x33\x35\x35\x22\x0a\x20\x20\x20\x20\x20\x20\x20\
\x63\x78\x3d\x22\x31\x31\x30\x33\x2e\x36\x33\x39\x39\x22\x0a\x20\
\x20\x20\x20\x20\x20\x20\x63\x79\x3d\x22\x31\x34\x32\x34\x2e\x34\
\x34\x36\x35\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x66\x78\x3d\x22\
\x31\x31\x30\x33\x2e\x36\x33\x39\x39\x22\x0a\x20\x20\x20\x20\x20\
\x20\x20\x66\x79\x3d\x22\x31\x34\x32\x34\x2e\x34\x34\x36\x35\x22\
\x0a\x20\x20\x20\x20\x20\x20\x20\x72\x3d\x22\x31\x39\x34\x2e\x34\
\x30\x36\x31\x34\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x67\x72\x61\
\x64\x69\x65\x6e\x74\x54\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\
\x6d\x61\x74\x72\x69\x78\x28\x2d\x31\x2e\x34\x33\x30\x37\x34\x39\
\x39\x2c\x2d\x31\x2e\x33\x36\x30\x35\x31\x35\x36\x65\x2d\x37\x2c\
\x2d\x31\x2e\x32\x30\x32\x37\x31\x33\x65\x2d\x38\x2c\x30\x2e\x31\
\x32\x36\x34\x38\x30\x31\x2c\x32\x36\x37\x34\x2e\x37\x34\x38\x38\
\x2c\x31\x32\x34\x34\x2e\x32\x38\x32\x36\x29\x22\x0a\x20\x20\x20\
\x20\x20\x20\x20\x67\x72\x61\x64\x69\x65\x6e\x74\x55\x6e\x69\x74\
\x73\x3d\x22\x75\x73\x65\x72\x53\x70\x61\x63\x65\x4f\x6e\x55\x73\
\x65\x22\x20\x2f\x3e\x0a\x20\x20\x3c\x2f\x64\x65\x66\x73\x3e\x0a\
\x20\x20\x3c\x73\x6f\x64\x69\x70\x6f\x64\x69\x3a\x6e\x61\x6d\x65\
\x64\x76\x69\x65\x77\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x62\
\x61\x73\x65\x22\x0a\x20\x20\x20\x20\x20\x70\x61\x67\x65\x63\x6f\
\x6c\x6f\x72\x3d\x22\x23\x66\x66\x66\x66\x66\x66\x22\x0a\x20\x20\
\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x63\x6f\x6c\x6f\x72\x3d\x22\
\x23\x36\x36\x36\x36\x36\x36\x22\x0a\x20\x20\x20\x20\x20\x62\x6f\
\x72\x64\x65\x72\x6f\x70\x61\x63\x69\x74\x79\x3d\x22\x31\x2e\x30\
\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\
\x70\x61\x67\x65\x6f\x70\x61\x63\x69\x74\x79\x3d\x22\x30\x2e\x30\
\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\
\x70\x61\x67\x65\x73\x68\x61\x64\x6f\x77\x3d\x22\x32\x22\x0a\x20\
\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x7a\x6f\x6f\
\x6d\x3d\x22\x33\x2e\x38\x38\x39\x30\x38\x37\x33\x22\x0a\x20\x20\
\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x78\x3d\x22\
\x32\x38\x2e\x33\x33\x36\x32\x39\x39\x22\x0a\x20\x20\x20\x20\x20\
\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x79\x3d\x22\x32\x30\x2e\
\x37\x35\x33\x33\x37\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\
\x63\x61\x70\x65\x3a\x63\x75\x72\x72\x65\x6e\x74\x2d\x6c\x61\x79\
\x65\x72\x3d\x22\x67\x33\x33\x36\x30\x22\x0a\x20\x20\x20\x20\x20\
\x73\x68\x6f\x77\x67\x72\x69\x64\x3d\x22\x74\x72\x75\x65\x22\x0a\
\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x64\x6f\
\x63\x75\x6d\x65\x6e\x74\x2d\x75\x6e\x69\x74\x73\x3d\x22\x70\x78\
\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\
\x67\x72\x69\x64\x2d\x62\x62\x6f\x78\x3d\x22\x74\x72\x75\x65\x22\
\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\
\x69\x6e\x64\x6f\x77\x2d\x77\x69\x64\x74\x68\x3d\x22\x31\x32\x38\
\x30\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\
\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x68\x65\x69\x67\x68\x74\x3d\x22\
\x37\x35\x38\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\
\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x78\x3d\x22\x30\x22\x0a\
\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\
\x6e\x64\x6f\x77\x2d\x79\x3d\x22\x31\x39\x22\x0a\x20\x20\x20\x20\
\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\
\x2d\x6d\x61\x78\x69\x6d\x69\x7a\x65\x64\x3d\x22\x31\x22\x20\x2f\
\x3e\x0a\x20\x20\x3c\x6d\x65\x74\x61\x64\x61\x74\x61\x0a\x20\x20\
\x20\x20\x20\x69\x64\x3d\x22\x6d\x65\x74\x61\x64\x61\x74\x61\x35\
\x38\x32\x36\x22\x3e\x0a\x20\x20\x20\x20\x3c\x72\x64\x66\x3a\x52\
\x44\x46\x3e\x0a\x20\x20\x20\x20\x20\x20\x3c\x63\x63\x3a\x57\x6f\
\x72\x6b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x64\x66\x3a\
\x61\x62\x6f\x75\x74\x3d\x22\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\
\x20\x20\x3c\x64\x63\x3a\x66\x6f\x72\x6d\x61\x74\x3e\x69\x6d\x61\
\x67\x65\x2f\x73\x76\x67\x2b\x78\x6d\x6c\x3c\x2f\x64\x63\x3a\x66\
\x6f\x72\x6d\x61\x74\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\
\x64\x63\x3a\x74\x79\x70\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\
\x20\x20\x20\x72\x64\x66\x3a\x72\x65\x73\x6f\x75\x72\x63\x65\x3d\
\x22\x68\x74\x74\x70\x3a\x2f\x2f\x70\x75\x72\x6c\x2e\x6f\x72\x67\
\x2f\x64\x63\x2f\x64\x63\x6d\x69\x74\x79\x70\x65\x2f\x53\x74\x69\
\x6c\x6c\x49\x6d\x61\x67\x65\x22\x20\x2f\x3e\x0a\x20\x20\x20\x20\
\x20\x20\x20\x20\x3c\x64\x63\x3a\x74\x69\x74\x6c\x65\x3e\x3c\x2f\
\x64\x63\x3a\x74\x69\x74\x6c\x65\x3e\x0a\x20\x20\x20\x20\x20\x20\
\x3c\x2f\x63\x63\x3a\x57\x6f\x72\x6b\x3e\x0a\x20\x20\x20\x20\x3c\
\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x0a\x20\x20\x3c\x2f\x6d\x65\
\x74\x61\x64\x61\x74\x61\x3e\x0a\x20\x20\x3c\x67\x0a\x20\x20\x20\
\x20\x20\x69\x64\x3d\x22\x6c\x61\x79\x65\x72\x31\x22\x0a\x20\x20\
\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x6c\x61\x62\x65\
\x6c\x3d\x22\x4c\x61\x79\x65\x72\x20\x31\x22\x0a\x20\x20\x20\x20\
\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x67\x72\x6f\x75\x70\x6d\
\x6f\x64\x65\x3d\x22\x6c\x61\x79\x65\x72\x22\x3e\x0a\x20\x20\x20\
\x20\x3c\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x67\
\x33\x33\x36\x30\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\
\x73\x63\x61\x70\x65\x3a\x65\x78\x70\x6f\x72\x74\x2d\x66\x69\x6c\
\x65\x6e\x61\x6d\x65\x3d\x22\x2f\x68\x6f\x6d\x65\x2f\x79\x6f\x72\
\x69\x6b\x2f\x44\x6f\x63\x75\x6d\x65\x6e\x74\x73\x2f\x4c\x61\x62\
\x2f\x44\x72\x61\x66\x74\x2f\x69\x63\x6f\x6e\x73\x2f\x64\x72\x61\
\x66\x74\x2e\x70\x6e\x67\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x69\
\x6e\x6b\x73\x63\x61\x70\x65\x3a\x65\x78\x70\x6f\x72\x74\x2d\x78\
\x64\x70\x69\x3d\x22\x33\x2e\x32\x34\x37\x38\x31\x35\x36\x22\x0a\
\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\
\x65\x78\x70\x6f\x72\x74\x2d\x79\x64\x70\x69\x3d\x22\x33\x2e\x32\
\x34\x37\x38\x31\x35\x36\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x74\
\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\
\x28\x30\x2e\x31\x33\x36\x37\x38\x36\x33\x2c\x30\x2c\x30\x2c\x30\
\x2e\x31\x33\x36\x37\x38\x36\x33\x2c\x2d\x31\x31\x39\x2e\x31\x35\
\x35\x31\x39\x2c\x2d\x31\x33\x34\x2e\x38\x36\x39\x36\x32\x29\x22\
\x3e\x0a\x20\x20\x20\x20\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\
\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\
\x63\x6f\x6e\x6e\x65\x63\x74\x6f\x72\x2d\x63\x75\x72\x76\x61\x74\
\x75\x72\x65\x3d\x22\x30\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\
\x20\x73\x74\x79\x6c\x65\x3d\x22\x6f\x70\x61\x63\x69\x74\x79\x3a\
\x30\x2e\x34\x37\x33\x34\x35\x31\x33\x32\x3b\x63\x6f\x6c\x6f\x72\
\x3a\x23\x30\x30\x30\x30\x30\x30\x3b\x66\x69\x6c\x6c\x3a\x23\x30\
\x30\x30\x30\x30\x30\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\
\x74\x79\x3a\x31\x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\
\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x6e\x6f\
\x6e\x65\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\
\x31\x31\x2e\x39\x30\x35\x31\x37\x35\x32\x31\x3b\x6d\x61\x72\x6b\
\x65\x72\x3a\x6e\x6f\x6e\x65\x3b\x76\x69\x73\x69\x62\x69\x6c\x69\
\x74\x79\x3a\x76\x69\x73\x69\x62\x6c\x65\x3b\x64\x69\x73\x70\x6c\
\x61\x79\x3a\x69\x6e\x6c\x69\x6e\x65\x3b\x6f\x76\x65\x72\x66\x6c\
\x6f\x77\x3a\x76\x69\x73\x69\x62\x6c\x65\x3b\x65\x6e\x61\x62\x6c\
\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x61\x63\x63\
\x75\x6d\x75\x6c\x61\x74\x65\x22\x0a\x20\x20\x20\x20\x20\x20\x20\
\x20\x20\x64\x3d\x22\x6d\x20\x31\x30\x39\x35\x2e\x33\x35\x33\x33\
\x2c\x31\x30\x33\x34\x2e\x34\x31\x38\x39\x20\x30\x2c\x31\x31\x36\
\x2e\x35\x31\x33\x38\x20\x35\x38\x2e\x39\x34\x32\x33\x2c\x30\x20\
\x30\x2c\x2d\x31\x31\x36\x2e\x35\x31\x33\x38\x20\x2d\x35\x38\x2e\
\x39\x34\x32\x33\x2c\x30\x20\x7a\x20\x6d\x20\x2d\x39\x30\x2e\x36\
\x39\x38\x31\x2c\x33\x38\x2e\x38\x33\x37\x39\x20\x2d\x34\x31\x2e\
\x38\x30\x37\x38\x39\x2c\x34\x31\x2e\x35\x37\x39\x35\x20\x38\x32\
\x2e\x34\x37\x33\x35\x39\x2c\x38\x32\x2e\x32\x34\x35\x31\x20\x34\
\x31\x2e\x35\x37\x39\x34\x2c\x2d\x34\x31\x2e\x35\x37\x39\x35\x20\
\x2d\x38\x32\x2e\x32\x34\x35\x31\x2c\x2d\x38\x32\x2e\x32\x34\x35\
\x31\x20\x7a\x20\x6d\x20\x32\x34\x37\x2e\x34\x32\x30\x37\x2c\x33\
\x2e\x38\x38\x33\x38\x20\x2d\x38\x32\x2e\x32\x34\x35\x31\x2c\x38\
\x32\x2e\x32\x34\x35\x31\x20\x34\x31\x2e\x35\x37\x39\x34\x2c\x34\
\x31\x2e\x35\x37\x39\x34\x20\x38\x32\x2e\x34\x37\x33\x36\x2c\x2d\
\x38\x32\x2e\x32\x34\x35\x20\x2d\x34\x31\x2e\x38\x30\x37\x39\x2c\
\x2d\x34\x31\x2e\x35\x37\x39\x35\x20\x7a\x20\x6d\x20\x2d\x33\x33\
\x34\x2e\x32\x33\x34\x39\x32\x2c\x31\x33\x36\x2e\x33\x38\x39\x38\
\x20\x30\x2c\x35\x38\x2e\x39\x34\x32\x33\x20\x31\x31\x36\x2e\x32\
\x38\x35\x34\x32\x2c\x30\x20\x30\x2c\x2d\x35\x38\x2e\x39\x34\x32\
\x33\x20\x2d\x31\x31\x36\x2e\x32\x38\x35\x34\x32\x2c\x30\x20\x7a\
\x20\x6d\x20\x32\x39\x34\x2e\x30\x32\x36\x31\x32\x2c\x30\x20\x30\
\x2c\x35\x38\x2e\x39\x34\x32\x33\x20\x31\x31\x36\x2e\x32\x38\x35\
\x35\x2c\x30\x20\x30\x2c\x2d\x35\x38\x2e\x39\x34\x32\x33\x20\x2d\
\x31\x31\x36\x2e\x32\x38\x35\x35\x2c\x30\x20\x7a\x20\x6d\x20\x30\
\x2e\x36\x38\x35\x34\x2c\x36\x37\x2e\x33\x39\x35\x32\x20\x2d\x34\
\x31\x2e\x35\x37\x39\x34\x2c\x34\x31\x2e\x38\x30\x38\x20\x38\x32\
\x2e\x32\x34\x35\x2c\x38\x32\x2e\x32\x34\x35\x20\x34\x31\x2e\x35\
\x37\x39\x35\x2c\x2d\x34\x31\x2e\x35\x37\x39\x34\x20\x2d\x38\x32\
\x2e\x32\x34\x35\x31\x2c\x2d\x38\x32\x2e\x34\x37\x33\x36\x20\x7a\
\x20\x6d\x20\x2d\x31\x36\x38\x2e\x31\x34\x35\x35\x2c\x34\x2e\x31\
\x31\x32\x33\x20\x2d\x38\x32\x2e\x34\x37\x33\x35\x32\x2c\x38\x32\
\x2e\x32\x34\x35\x31\x20\x34\x31\x2e\x38\x30\x37\x39\x32\x2c\x34\
\x31\x2e\x38\x30\x37\x39\x20\x38\x32\x2e\x32\x34\x35\x31\x2c\x2d\
\x38\x32\x2e\x34\x37\x33\x35\x20\x2d\x34\x31\x2e\x35\x37\x39\x35\
\x2c\x2d\x34\x31\x2e\x35\x37\x39\x35\x20\x7a\x20\x6d\x20\x35\x31\
\x2e\x31\x37\x34\x37\x2c\x34\x33\x2e\x34\x30\x37\x31\x20\x30\x2c\
\x31\x31\x36\x2e\x32\x38\x35\x34\x20\x35\x38\x2e\x39\x34\x32\x34\
\x2c\x30\x20\x30\x2c\x2d\x31\x31\x36\x2e\x32\x38\x35\x34\x20\x2d\
\x35\x38\x2e\x39\x34\x32\x34\x2c\x30\x20\x7a\x22\x0a\x20\x20\x20\
\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x72\x65\x63\x74\x33\x30\
\x30\x35\x2d\x37\x22\x20\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\x3c\
\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\
\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x23\x30\x30\x30\x30\
\x30\x30\x3b\x66\x69\x6c\x6c\x3a\x23\x32\x65\x37\x36\x66\x66\x3b\
\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x3b\x66\
\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\
\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x30\x30\x30\x33\x34\x33\x3b\
\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x2e\x36\
\x32\x38\x34\x36\x34\x38\x32\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\
\x69\x6e\x65\x63\x61\x70\x3a\x62\x75\x74\x74\x3b\x73\x74\x72\x6f\
\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\
\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\
\x6d\x69\x74\x3a\x34\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6f\x70\x61\
\x63\x69\x74\x79\x3a\x31\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x64\x61\
\x73\x68\x61\x72\x72\x61\x79\x3a\x6e\x6f\x6e\x65\x3b\x73\x74\x72\
\x6f\x6b\x65\x2d\x64\x61\x73\x68\x6f\x66\x66\x73\x65\x74\x3a\x30\
\x3b\x6d\x61\x72\x6b\x65\x72\x3a\x6e\x6f\x6e\x65\x3b\x76\x69\x73\
\x69\x62\x69\x6c\x69\x74\x79\x3a\x76\x69\x73\x69\x62\x6c\x65\x3b\
\x64\x69\x73\x70\x6c\x61\x79\x3a\x69\x6e\x6c\x69\x6e\x65\x3b\x6f\
\x76\x65\x72\x66\x6c\x6f\x77\x3a\x76\x69\x73\x69\x62\x6c\x65\x3b\
\x65\x6e\x61\x62\x6c\x65\x2d\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\
\x64\x3a\x61\x63\x63\x75\x6d\x75\x6c\x61\x74\x65\x22\x0a\x20\x20\
\x20\x20\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x20\x32\x38\x2e\x31\
\x32\x35\x20\x33\x2e\x34\x33\x37\x35\x20\x4c\x20\x32\x38\x2e\x31\
\x32\x35\x20\x31\x39\x2e\x33\x37\x35\x20\x4c\x20\x33\x36\x2e\x31\
\x38\x37\x35\x20\x31\x39\x2e\x33\x37\x35\x20\x4c\x20\x33\x36\x2e\
\x31\x38\x37\x35\x20\x33\x2e\x34\x33\x37\x35\x20\x4c\x20\x32\x38\
\x2e\x31\x32\x35\x20\x33\x2e\x34\x33\x37\x35\x20\x7a\x20\x4d\x20\
\x31\x35\x2e\x37\x31\x38\x37\x35\x20\x38\x2e\x37\x35\x20\x4c\x20\
\x31\x30\x20\x31\x34\x2e\x34\x33\x37\x35\x20\x4c\x20\x32\x31\x2e\
\x32\x38\x31\x32\x35\x20\x32\x35\x2e\x36\x38\x37\x35\x20\x4c\x20\
\x32\x36\x2e\x39\x36\x38\x37\x35\x20\x32\x30\x20\x4c\x20\x31\x35\
\x2e\x37\x31\x38\x37\x35\x20\x38\x2e\x37\x35\x20\x7a\x20\x4d\x20\
\x34\x39\x2e\x35\x36\x32\x35\x20\x39\x2e\x32\x38\x31\x32\x35\x20\
\x4c\x20\x33\x38\x2e\x33\x31\x32\x35\x20\x32\x30\x2e\x35\x33\x31\
\x32\x35\x20\x4c\x20\x34\x34\x20\x32\x36\x2e\x32\x31\x38\x37\x35\
\x20\x4c\x20\x35\x35\x2e\x32\x38\x31\x32\x35\x20\x31\x34\x2e\x39\
\x36\x38\x37\x35\x20\x4c\x20\x34\x39\x2e\x35\x36\x32\x35\x20\x39\
\x2e\x32\x38\x31\x32\x35\x20\x7a\x20\x4d\x20\x33\x2e\x38\x34\x33\
\x37\x35\x20\x32\x37\x2e\x39\x33\x37\x35\x20\x4c\x20\x33\x2e\x38\
\x34\x33\x37\x35\x20\x33\x36\x20\x4c\x20\x31\x39\x2e\x37\x35\x20\
\x33\x36\x20\x4c\x20\x31\x39\x2e\x37\x35\x20\x32\x37\x2e\x39\x33\
\x37\x35\x20\x4c\x20\x33\x2e\x38\x34\x33\x37\x35\x20\x32\x37\x2e\
\x39\x33\x37\x35\x20\x7a\x20\x4d\x20\x34\x34\x2e\x30\x36\x32\x35\
\x20\x32\x37\x2e\x39\x33\x37\x35\x20\x4c\x20\x34\x34\x2e\x30\x36\
\x32\x35\x20\x33\x36\x20\x4c\x20\x35\x39\x2e\x39\x36\x38\x37\x35\
\x20\x33\x36\x20\x4c\x20\x35\x39\x2e\x39\x36\x38\x37\x35\x20\x32\
\x37\x2e\x39\x33\x37\x35\x20\x4c\x20\x34\x34\x2e\x30\x36\x32\x35\
\x20\x32\x37\x2e\x39\x33\x37\x35\x20\x7a\x20\x4d\x20\x34\x34\x2e\
\x31\x35\x36\x32\x35\x20\x33\x37\x2e\x31\x35\x36\x32\x35\x20\x4c\
\x20\x33\x38\x2e\x34\x36\x38\x37\x35\x20\x34\x32\x2e\x38\x37\x35\
\x20\x4c\x20\x34\x39\x2e\x37\x31\x38\x37\x35\x20\x35\x34\x2e\x31\
\x32\x35\x20\x4c\x20\x35\x35\x2e\x34\x30\x36\x32\x35\x20\x34\x38\
\x2e\x34\x33\x37\x35\x20\x4c\x20\x34\x34\x2e\x31\x35\x36\x32\x35\
\x20\x33\x37\x2e\x31\x35\x36\x32\x35\x20\x7a\x20\x4d\x20\x32\x31\
\x2e\x31\x35\x36\x32\x35\x20\x33\x37\x2e\x37\x31\x38\x37\x35\x20\
\x4c\x20\x39\x2e\x38\x37\x35\x20\x34\x38\x2e\x39\x36\x38\x37\x35\
\x20\x4c\x20\x31\x35\x2e\x35\x39\x33\x37\x35\x20\x35\x34\x2e\x36\
\x38\x37\x35\x20\x4c\x20\x32\x36\x2e\x38\x34\x33\x37\x35\x20\x34\
\x33\x2e\x34\x30\x36\x32\x35\x20\x4c\x20\x32\x31\x2e\x31\x35\x36\
\x32\x35\x20\x33\x37\x2e\x37\x31\x38\x37\x35\x20\x7a\x20\x4d\x20\
\x32\x38\x2e\x31\x35\x36\x32\x35\x20\x34\x33\x2e\x36\x35\x36\x32\
\x35\x20\x4c\x20\x32\x38\x2e\x31\x35\x36\x32\x35\x20\x35\x39\x2e\
\x35\x36\x32\x35\x20\x4c\x20\x33\x36\x2e\x32\x31\x38\x37\x35\x20\
\x35\x39\x2e\x35\x36\x32\x35\x20\x4c\x20\x33\x36\x2e\x32\x31\x38\
\x37\x35\x20\x34\x33\x2e\x36\x35\x36\x32\x35\x20\x4c\x20\x32\x38\
\x2e\x31\x35\x36\x32\x35\x20\x34\x33\x2e\x36\x35\x36\x32\x35\x20\
\x7a\x20\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x72\x61\
\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\x28\x37\
\x2e\x33\x31\x30\x36\x37\x33\x37\x2c\x30\x2c\x30\x2c\x37\x2e\x33\
\x31\x30\x36\x37\x33\x37\x2c\x38\x37\x31\x2e\x31\x30\x34\x37\x31\
\x2c\x39\x38\x35\x2e\x39\x38\x37\x37\x38\x29\x22\x0a\x20\x20\x20\
\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x72\x65\x63\x74\x33\x30\
\x30\x35\x22\x20\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x67\x3e\x0a\
\x20\x20\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\
\x00\x00\x0a\xb0\
\x00\
\x00\x39\x7d\x78\x9c\xed\x5a\xdb\x8e\xdb\x46\x12\x7d\xf7\x57\x70\
@ -31170,6 +31535,10 @@ qt_resource_name = "\
\x00\x44\
\x00\x72\x00\x61\x00\x66\x00\x74\x00\x5f\x00\x53\x00\x77\x00\x69\x00\x74\x00\x63\x00\x68\x00\x4d\x00\x6f\x00\x64\x00\x65\x00\x2e\
\x00\x73\x00\x76\x00\x67\
\x00\x0f\
\x07\x41\x05\xe7\
\x00\x44\
\x00\x72\x00\x61\x00\x66\x00\x74\x00\x5f\x00\x41\x00\x72\x00\x72\x00\x61\x00\x79\x00\x2e\x00\x73\x00\x76\x00\x67\
\x00\x0e\
\x00\x7f\x01\x67\
\x00\x44\
@ -31231,8 +31600,8 @@ qt_resource_name = "\
qt_resource_struct = "\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x01\
\x00\x00\x00\x10\x00\x02\x00\x00\x00\x02\x00\x00\x00\x3d\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x23\x00\x00\x00\x1a\
\x00\x00\x00\x10\x00\x02\x00\x00\x00\x02\x00\x00\x00\x3e\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x24\x00\x00\x00\x1a\
\x00\x00\x00\x38\x00\x02\x00\x00\x00\x05\x00\x00\x00\x15\
\x00\x00\x00\x1a\x00\x02\x00\x00\x00\x10\x00\x00\x00\x05\
\x00\x00\x02\x72\x00\x01\x00\x00\x00\x01\x00\x05\x98\x94\
@ -31256,41 +31625,42 @@ qt_resource_struct = "\
\x00\x00\x00\x64\x00\x00\x00\x00\x00\x01\x00\x00\x01\x64\
\x00\x00\x00\x96\x00\x00\x00\x00\x00\x01\x00\x00\x04\xc4\
\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x01\x00\x00\x03\x12\
\x00\x00\x06\x74\x00\x01\x00\x00\x00\x01\x00\x06\xe3\xa8\
\x00\x00\x06\x98\x00\x01\x00\x00\x00\x01\x00\x06\xfa\x5b\
\x00\x00\x05\xa6\x00\x00\x00\x00\x00\x01\x00\x06\xa0\xce\
\x00\x00\x06\xe2\x00\x01\x00\x00\x00\x01\x00\x07\x08\xda\
\x00\x00\x07\x06\x00\x01\x00\x00\x00\x01\x00\x07\x1f\x8d\
\x00\x00\x03\x66\x00\x01\x00\x00\x00\x01\x00\x06\x03\x81\
\x00\x00\x03\xf0\x00\x00\x00\x00\x00\x01\x00\x06\x23\xea\
\x00\x00\x04\x60\x00\x01\x00\x00\x00\x01\x00\x06\x4c\xaf\
\x00\x00\x05\x26\x00\x01\x00\x00\x00\x01\x00\x06\x78\xfc\
\x00\x00\x05\xc8\x00\x00\x00\x00\x00\x01\x00\x06\xaf\x84\
\x00\x00\x06\xb6\x00\x01\x00\x00\x00\x01\x00\x06\xf7\xd0\
\x00\x00\x06\xda\x00\x01\x00\x00\x00\x01\x00\x07\x0e\x83\
\x00\x00\x05\x02\x00\x01\x00\x00\x00\x01\x00\x06\x6e\x90\
\x00\x00\x04\x86\x00\x01\x00\x00\x00\x01\x00\x06\x52\x73\
\x00\x00\x03\xbc\x00\x01\x00\x00\x00\x01\x00\x06\x17\xf9\
\x00\x00\x07\x54\x00\x01\x00\x00\x00\x01\x00\x07\x28\x2e\
\x00\x00\x07\x78\x00\x01\x00\x00\x00\x01\x00\x07\x3e\xe1\
\x00\x00\x04\xdc\x00\x01\x00\x00\x00\x01\x00\x06\x64\xfc\
\x00\x00\x02\xe2\x00\x00\x00\x00\x00\x01\x00\x05\xe1\x20\
\x00\x00\x03\x34\x00\x01\x00\x00\x00\x01\x00\x05\xfb\xc8\
\x00\x00\x06\x74\x00\x00\x00\x00\x00\x01\x00\x06\xe3\xa8\
\x00\x00\x06\x46\x00\x01\x00\x00\x00\x01\x00\x06\xdb\xc3\
\x00\x00\x04\x18\x00\x00\x00\x00\x00\x01\x00\x06\x33\x3b\
\x00\x00\x05\x56\x00\x00\x00\x00\x00\x01\x00\x06\x84\xd5\
\x00\x00\x04\x3c\x00\x01\x00\x00\x00\x01\x00\x06\x46\x12\
\x00\x00\x03\x04\x00\x01\x00\x00\x00\x01\x00\x05\xf3\x39\
\x00\x00\x07\x04\x00\x01\x00\x00\x00\x01\x00\x07\x11\x83\
\x00\x00\x08\x14\x00\x00\x00\x00\x00\x01\x00\x07\x73\x35\
\x00\x00\x07\xf2\x00\x01\x00\x00\x00\x01\x00\x07\x65\xd6\
\x00\x00\x07\x76\x00\x01\x00\x00\x00\x01\x00\x07\x32\x90\
\x00\x00\x07\x9e\x00\x00\x00\x00\x00\x01\x00\x07\x3c\x41\
\x00\x00\x07\x28\x00\x01\x00\x00\x00\x01\x00\x07\x28\x36\
\x00\x00\x08\x38\x00\x00\x00\x00\x00\x01\x00\x07\x89\xe8\
\x00\x00\x08\x16\x00\x01\x00\x00\x00\x01\x00\x07\x7c\x89\
\x00\x00\x07\x9a\x00\x01\x00\x00\x00\x01\x00\x07\x49\x43\
\x00\x00\x07\xc2\x00\x00\x00\x00\x00\x01\x00\x07\x52\xf4\
\x00\x00\x05\x7c\x00\x01\x00\x00\x00\x01\x00\x06\x96\x8d\
\x00\x00\x06\x16\x00\x01\x00\x00\x00\x01\x00\x06\xd1\xf0\
\x00\x00\x03\x94\x00\x01\x00\x00\x00\x01\x00\x06\x0c\x87\
\x00\x00\x05\xee\x00\x01\x00\x00\x00\x01\x00\x06\xc2\x1a\
\x00\x00\x04\xb2\x00\x01\x00\x00\x00\x01\x00\x06\x5a\x7a\
\x00\x00\x08\x3a\x00\x01\x00\x00\x00\x01\x00\x07\x7d\xe0\
\x00\x00\x07\x28\x00\x00\x00\x00\x00\x01\x00\x07\x18\xd4\
\x00\x00\x06\x96\x00\x01\x00\x00\x00\x01\x00\x06\xee\x5c\
\x00\x00\x07\xc0\x00\x00\x00\x00\x00\x01\x00\x07\x50\xd2\
\x00\x00\x08\x5e\x00\x01\x00\x00\x00\x01\x00\x07\x94\x93\
\x00\x00\x07\x4c\x00\x00\x00\x00\x00\x01\x00\x07\x2f\x87\
\x00\x00\x06\xba\x00\x01\x00\x00\x00\x01\x00\x07\x05\x0f\
\x00\x00\x07\xe4\x00\x00\x00\x00\x00\x01\x00\x07\x67\x85\
\x00\x00\x02\x8e\x00\x01\x00\x00\x00\x01\x00\x05\xcc\x17\
\x00\x00\x02\xba\x00\x01\x00\x00\x00\x01\x00\x05\xd3\xa8\
"

View File

@ -191,7 +191,7 @@ class DraftWorkbench (Workbench):
self.modList = ["Draft_Move","Draft_Rotate","Draft_Offset",
"Draft_Trimex", "Draft_Upgrade", "Draft_Downgrade", "Draft_Scale",
"Draft_Drawing","Draft_Edit","Draft_WireToBSpline","Draft_AddPoint",
"Draft_DelPoint","Draft_Shape2DView","Draft_Draft2Sketch"]
"Draft_DelPoint","Draft_Shape2DView","Draft_Draft2Sketch","Draft_Array"]
self.treecmdList = ["Draft_ApplyStyle","Draft_ToggleDisplayMode","Draft_AddToGroup","Draft_SelectGroup"]
self.lineList = ["Draft_UndoLine","Draft_FinishLine","Draft_CloseLine"]
self.appendToolbar(str(draftTools.translate("draft","Draft tools")),self.cmdList+self.modList)

View File

@ -35,6 +35,7 @@
<file>icons/Draft_2DShapeView.svg</file>
<file>icons/Draft_Wipe.svg</file>
<file>icons/Draft_Draft2Sketch.svg</file>
<file>icons/Draft_Array.svg</file>
<file>patterns/concrete.svg</file>
<file>patterns/cross.svg</file>
<file>patterns/line.svg</file>

View File

@ -0,0 +1,131 @@
<?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="svg5821"
sodipodi:version="0.32"
inkscape:version="0.48.1 r9760"
sodipodi:docname="Draft_Draft2Sketch.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1"
inkscape:export-filename="/media/data/Yorik/FreeCAD/icons/Sketcher.png"
inkscape:export-xdpi="45"
inkscape:export-ydpi="45">
<defs
id="defs5823">
<linearGradient
inkscape:collect="always"
id="linearGradient6349">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop6351" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop6353" />
</linearGradient>
<linearGradient
id="linearGradient3377">
<stop
style="stop-color:#0019a3;stop-opacity:1;"
offset="0"
id="stop3379" />
<stop
style="stop-color:#0069ff;stop-opacity:1;"
offset="1"
id="stop3381" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3377"
id="linearGradient3383"
x1="901.1875"
y1="1190.875"
x2="1267.9062"
y2="1190.875"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,1,2199.356,0)" />
<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="perspective5829" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient6349"
id="radialGradient6355"
cx="1103.6399"
cy="1424.4465"
fx="1103.6399"
fy="1424.4465"
r="194.40614"
gradientTransform="matrix(-1.4307499,-1.3605156e-7,-1.202713e-8,0.1264801,2674.7488,1244.2826)"
gradientUnits="userSpaceOnUse" />
</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="28.336299"
inkscape:cy="20.75337"
inkscape:current-layer="g3360"
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="metadata5826">
<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">
<g
id="g3360"
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/draft.png"
inkscape:export-xdpi="3.2478156"
inkscape:export-ydpi="3.2478156"
transform="matrix(0.1367863,0,0,0.1367863,-119.15519,-134.86962)">
<path
inkscape:connector-curvature="0"
style="opacity:0.47345132;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:11.90517521;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 1095.3533,1034.4189 0,116.5138 58.9423,0 0,-116.5138 -58.9423,0 z m -90.6981,38.8379 -41.80789,41.5795 82.47359,82.2451 41.5794,-41.5795 -82.2451,-82.2451 z m 247.4207,3.8838 -82.2451,82.2451 41.5794,41.5794 82.4736,-82.245 -41.8079,-41.5795 z m -334.23492,136.3898 0,58.9423 116.28542,0 0,-58.9423 -116.28542,0 z m 294.02612,0 0,58.9423 116.2855,0 0,-58.9423 -116.2855,0 z m 0.6854,67.3952 -41.5794,41.808 82.245,82.245 41.5795,-41.5794 -82.2451,-82.4736 z m -168.1455,4.1123 -82.47352,82.2451 41.80792,41.8079 82.2451,-82.4735 -41.5795,-41.5795 z m 51.1747,43.4071 0,116.2854 58.9424,0 0,-116.2854 -58.9424,0 z"
id="rect3005-7" />
<path
style="color:#000000;fill:#2e76ff;fill-opacity:1;fill-rule:evenodd;stroke:#000343;stroke-width:1.62846482;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.125 3.4375 L 28.125 19.375 L 36.1875 19.375 L 36.1875 3.4375 L 28.125 3.4375 z M 15.71875 8.75 L 10 14.4375 L 21.28125 25.6875 L 26.96875 20 L 15.71875 8.75 z M 49.5625 9.28125 L 38.3125 20.53125 L 44 26.21875 L 55.28125 14.96875 L 49.5625 9.28125 z M 3.84375 27.9375 L 3.84375 36 L 19.75 36 L 19.75 27.9375 L 3.84375 27.9375 z M 44.0625 27.9375 L 44.0625 36 L 59.96875 36 L 59.96875 27.9375 L 44.0625 27.9375 z M 44.15625 37.15625 L 38.46875 42.875 L 49.71875 54.125 L 55.40625 48.4375 L 44.15625 37.15625 z M 21.15625 37.71875 L 9.875 48.96875 L 15.59375 54.6875 L 26.84375 43.40625 L 21.15625 37.71875 z M 28.15625 43.65625 L 28.15625 59.5625 L 36.21875 59.5625 L 36.21875 43.65625 L 28.15625 43.65625 z "
transform="matrix(7.3106737,0,0,7.3106737,871.10471,985.98778)"
id="rect3005" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

@ -4474,6 +4474,25 @@ class Draft2Sketch():
Draft.draftify(sel,makeblock=True)
FreeCAD.ActiveDocument.commitTransaction()
class Array():
"The Shape2DView FreeCAD command definition"
def GetResources(self):
return {'Pixmap' : 'Draft_Array',
'MenuText': QtCore.QT_TRANSLATE_NOOP("Draft_Array", "Array"),
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Draft_Array", "Creates a polar or rectangular array from a selected object")}
def IsActive(self):
if len(Draft.getSelection()) == 1:
return True
else:
return False
def Activated(self):
obj = Draft.getSelection()[0]
FreeCAD.ActiveDocument.openTransaction("Array")
Draft.makeArray(obj)
FreeCAD.ActiveDocument.commitTransaction()
#---------------------------------------------------------------------------
# Adds the icons & commands to the FreeCAD command manager, and sets defaults
@ -4505,6 +4524,7 @@ FreeCADGui.addCommand('Draft_AddPoint',AddPoint())
FreeCADGui.addCommand('Draft_DelPoint',DelPoint())
FreeCADGui.addCommand('Draft_WireToBSpline',WireToBSpline())
FreeCADGui.addCommand('Draft_Draft2Sketch',Draft2Sketch())
FreeCADGui.addCommand('Draft_Array',Array())
# context commands
FreeCADGui.addCommand('Draft_FinishLine',FinishLine())