diff --git a/src/Mod/Draft/Draft.py b/src/Mod/Draft/Draft.py
index 8c5487c1a..8f02c77fd 100644
--- a/src/Mod/Draft/Draft.py
+++ b/src/Mod/Draft/Draft.py
@@ -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]
diff --git a/src/Mod/Draft/Draft_rc.py b/src/Mod/Draft/Draft_rc.py
index 9918f8612..3a16cdea4 100644
--- a/src/Mod/Draft/Draft_rc.py
+++ b/src/Mod/Draft/Draft_rc.py
@@ -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\
"
diff --git a/src/Mod/Draft/InitGui.py b/src/Mod/Draft/InitGui.py
index 952222bc2..269933485 100644
--- a/src/Mod/Draft/InitGui.py
+++ b/src/Mod/Draft/InitGui.py
@@ -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)
diff --git a/src/Mod/Draft/Resources/Draft.qrc b/src/Mod/Draft/Resources/Draft.qrc
index 51d1ff1f8..e8b9a2b12 100644
--- a/src/Mod/Draft/Resources/Draft.qrc
+++ b/src/Mod/Draft/Resources/Draft.qrc
@@ -35,6 +35,7 @@
icons/Draft_2DShapeView.svg
icons/Draft_Wipe.svg
icons/Draft_Draft2Sketch.svg
+ icons/Draft_Array.svg
patterns/concrete.svg
patterns/cross.svg
patterns/line.svg
diff --git a/src/Mod/Draft/Resources/icons/Draft_Array.svg b/src/Mod/Draft/Resources/icons/Draft_Array.svg
new file mode 100644
index 000000000..3180ad668
--- /dev/null
+++ b/src/Mod/Draft/Resources/icons/Draft_Array.svg
@@ -0,0 +1,131 @@
+
+
+
+
diff --git a/src/Mod/Draft/draftTools.py b/src/Mod/Draft/draftTools.py
index 1149dca73..76180c649 100755
--- a/src/Mod/Draft/draftTools.py
+++ b/src/Mod/Draft/draftTools.py
@@ -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())