Download raw (3.3 KB)
# -*- coding: utf-8 -*- import svgwrite import codecs import random import math # Define variables grid = {'columns': 5, 'rows': 8, 'size': 9.5, 'innersize': 5, 'whitespace': 11, 'fontsize': 3.75} circles = [] count = 0 texts = ["Free Culture", "Exchange", "Sharing", "Internet", "Digital Arts", "Participation", "Remix", "Development", "Design", "Media", "Neighbourhood", "Acessibility", "Specialisation", "Cross-Pollination", "Open sources", "Experiment", "Generator", "La culture libre", "l'échange", "le partage", "l'internet", "l'art numérique", "la participation", "le remix", "le développement", "le design", "les médias", "le quartier", "accessibilité", "spécialisation", "la pollinisation croisée", "les sources libres", "l'expérimentation", "générateur", "Vrije cultuur", "Uitwisseling", "Delen", "Internet", "Digitale kunst", "Participatie", "Remix", "Ontwikkeling", "Design", "Media", "Buurt", "Toegankelijk", "Specialistisch", "Kruisbestuiving", "Open bronnen", "Experiment", "Generator"] def draw_circle(dwg, size = 2, innersize = 1, printtext = ''): #center = ((col + .5) * grid['whitespace'], (row + .5) * grid['whitespace']) center = (random.randrange(0 + math.ceil(size), 148 - math.ceil(size)), random.randrange(0 + math.ceil(size),210 - math.ceil(size))) dwg.add(dwg.circle ( center = (center[0],center[1]), r = size, stroke_width = ".1", stroke = "black", fill = "none", style = "stroke-dasharray:1.2,1.2;")) # circle = dwg.add(dwg.circle ( # center = (center[0],center[1]), # r = innersize, # stroke_width = "0", # stroke = "none", # fill = "none")) # text = dwg.text('', # (0,0), # font_family = 'Crickx', # font_weight = 'bold', # font_size = grid['fontsize'], # transform = 'rotate(' + str(random.randrange(0,180)) + ', ' + str(center[0]) + ', ' + str(center[1]) + ')') # text.add(dwg.textPath ( # path = circle, # text = printtext, # startOffset = 0, # method = 'align', # )) # dwg.add(text) return dwg #dwg = svgwrite.Drawing(filename = resultfile, size = (str((grid['columns']) * grid['whitespace']), str((grid['rows']) * grid['whitespace']))) for num in range(0,20): random.shuffle(texts) resultfile = "generated/flyer11-loop-" + str(num) + ".svg" dwg = svgwrite.Drawing(filename = resultfile, size = ("148mm", "210mm"), viewBox = "0 0 148 210") limit = random.randrange(0,len(texts)) count = 0 for text in texts: count += 1 dwg = draw_circle (dwg = dwg, printtext = text, size = grid['size'], innersize = grid['innersize']) if count >= limit: break insert = (random.randrange(34,114), random.randrange(34,176)) dwg.add(dwg.rect(insert = insert, size = (29.7, 63.5), stroke_width = ".1", stroke = "black", fill = "none", style = "stroke-dasharray:1.2,1.2;", transform = "rotate(" + str(random.randrange(0,45)) + "," + str(insert[0] + 17) + "," + str(insert[1] + 33.5) + ")")) insert = (random.randrange(34,114), random.randrange(34,176)) dwg.add(dwg.rect(insert = insert, size = (63.5, 29.6), stroke_width = ".1", stroke = "black", fill = "none", style = "stroke-dasharray:1.2,1.2", transform = "rotate(" + str(random.randrange(0,45)) + "," + str(insert[0] + 33.5) + "," + str(insert[1] + 17) + ")")) output = codecs.open(resultfile, "w", "UTF-8") output.write(dwg.tostring()) output.close()