import Part
import math
from FreeCAD import Base

######################## SET THESE PARAMETERS ####################
#number of cells in a row
N=15
#total box size
L=350
#wood thickness
e=3.1
#cell height
h=40
#tolerance
tol=0.1
##################################################################

#cell size
space=float(L-(N+1)*e)/N

#horizontal splitter
splitterH = Part.makeBox(N*space+(N+1)*e-2*tol,h,e)
#vertical splitter
splitterV = Part.makeBox(N*space+(N+1)*e-2*tol,h,e)

cutterUp = Part.makeBox(e+2*tol,tol+float(h)/2,e,Base.Vector(-tol,-tol+float(h)/2,0))
cutterDown = Part.makeBox(e+2*tol,tol+float(h)/2,e,Base.Vector(-tol,0,0))
for i in range(1,N):
	cutterUp.translate(Base.Vector(space+e,0,0))
	splitterH = splitterH.cut(cutterUp)
	cutterDown.translate(Base.Vector(space+e,0,0))
	splitterV = splitterV.cut(cutterDown)

#replace cutterDown at origin
cutterUp = Part.makeBox(e+2*tol,tol+float(h)/2,e,Base.Vector(-tol,-tol+float(h)/2,0))
cutterDown = Part.makeBox(e+2*tol,tol+float(h)/2,e,Base.Vector(-tol,0,0))

#cut the two ends
splitterH = splitterH.cut(cutterDown)
splitterV = splitterV.cut(cutterDown)
cutterDown.translate(Base.Vector(N*space+(N)*e))
cutterUp.translate(Base.Vector(N*space+(N)*e))
splitterH = splitterH.cut(cutterDown)
splitterV = splitterV.cut(cutterDown)
print "cell size="
print space
doc=FreeCAD.newDocument("sowingBox")
Part.show(splitterV)
Gui.SendMsgToActiveView("ViewFit")
splitterH.translate(Base.Vector(0,2*h,0))
Part.show(splitterH)