From ad00d64b26f52ddf2aaede3a4c33c04f38c75008 Mon Sep 17 00:00:00 2001 From: Florian Festi Date: Sat, 1 Oct 2016 22:10:38 +0200 Subject: [PATCH] partsMatrix() --- boxes/__init__.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/boxes/__init__.py b/boxes/__init__.py index 72c664b..c5874e0 100755 --- a/boxes/__init__.py +++ b/boxes/__init__.py @@ -1269,3 +1269,49 @@ class Boxes: self.move(overallwidth, overallheight, move) + + ################################################## + ### Place Parts + ################################################## + + def partsMatrix(self, n, width, move, part, *l, **kw): + + rows = n//width + (1 if n % width else 0) + + if not move: + move = "" + move = move.split() + + #move down / left before + for m in move: + if m == "left": + kw["move"] = "left only" + for i in range(width): + part(*l, **kw) + if m == "down": + kw["move"] = "down only" + for i in range(rows): + part(*l, **kw) + # draw matrix + for i in range(rows): + self.ctx.save() + for j in range(width): + if width*i+j >= n: + break + kw["move"] = "right" + part(*l, **kw) + self.ctx.restore() + kw["move"] = "up only" + part(*l, **kw) + + # Move back down + if "up" not in move: + kw["move"] = "down only" + for i in range(rows): + part(*l, **kw) + + # Move right + if "right" in move: + kw["move"] = "right only" + for i in range(n): + part(*l, **kw)