colorlab
clone your own copy | download snapshot

Snapshots | iceberg

Inside this repository

poster_front_pattern.py
text/x-python

Download raw (14.0 KB)

# -*- coding: utf-8 -*-
from chiplotle import *
from chiplotle.hpgl import commands
import random
import math
from configureMemory import configureMemory
from utils import flatten, split_to_pens
from instantiate_plotter_on_port import instantiate_plotter_on_port


"""
    TODO: switches for wich page to print
"""

############################################
## IMPORT THE FUNCTIONS TO DRAW EACH CELL ##
############################################

from shapes.chlorella import chlorella_cell
from shapes.dunaliella_salina import duna_cell
from shapes.nannochloropsis import nanno_cell
from shapes.p_cruentum import p_cell
from shapes.spirulina import spirulina_cell
from shapes.haematococcus import haema_cell

#################################
## VIRTUAL OR HARDWARE PLOTTER ##
#################################


def draw(plotter, pens=[]):

    # plotter._serial_port.write (chr(27) + '.T14337;3072;0;0;0;1024:')
    # print plotter._send_query (chr(27) + '.L')
    # plotter._serial_port.write (chr(27) + '.@14337:')
    # print 'Buffer: ' + str (plotter._buffer_space)
    # plotter.buffer_size = int (plotter._buffer_space / 2)

    #######################
    ## DEFINING THE GRID ##
    #######################

    plotter.set_origin_bottom_left()
    width = plotter.margins.hard.width
    height = plotter.margins.hard.height

    buff = []

    x_unit = 33146 / 72.0
    y_unit = 22378 / 48.0


    def x(input):
        return 327 + (input * x_unit)

    def y(input):
        return 1091 + (input * y_unit)

    def rx(input):
        # A relative X value. Made for positioning items on a page(section of the whole poster). The base_x is defined at the beginning of each page.
        return  327 + ((base_x + input) * x_unit)

    def ry(input):
        # A relative y value. Made for positioning items on a page(section of the whole poster). The base_y is defined at the beginning of each page.
        return 1091 + ((base_y + input) * y_unit)



    #Sizes for the different shapes
    small_size = x(2)
    medium_size = x(4)
    big_size = x(8)

    def size(input):
        return random.randint(int(input*0.75), int(input))

    #######################
    ## DRAWING THE PAGES ##
    #######################


    ############
    ## PAGE 1 ##
    ############

    base_x = 0 
    base_y = 0

    def frequency():
        return random.randint(3,12)
    def amplitude(): 
        return random.uniform(0.1,0.3)

    spirulina_page = [commands.SP(3)]

    title_shape = spirulina_cell(frequency(), amplitude(), size(small_size))
    transforms.center_at(title_shape, (rx(2), ry(22) - ry(0)))

    small_shape_1 = spirulina_cell(frequency(), amplitude(), size(small_size))
    transforms.center_at(small_shape_1, (rx(7), ry(15) - ry(0)))
    small_shape_2 = spirulina_cell(frequency(), amplitude(), size(small_size))
    transforms.center_at(small_shape_2, (rx(15), ry(15) - ry(0)))
    small_shape_3 = spirulina_cell(frequency(), amplitude(), size(small_size))
    transforms.center_at(small_shape_3, (rx(15), ry(7) - ry(0)))

    medium_shape_1 = spirulina_cell(frequency(), amplitude(), size(medium_size))
    transforms.center_at(medium_shape_1, (rx(3), ry(12) - ry(0)))
    medium_shape_2 = spirulina_cell(frequency(), amplitude(), size(medium_size))
    transforms.center_at(medium_shape_2, (rx(11), ry(11) - ry(0)))
    medium_shape_3 = spirulina_cell(frequency(), amplitude(), size(medium_size))
    transforms.center_at(medium_shape_3, (rx(12), ry(3) - ry(0)))

    big_shape = spirulina_cell(frequency(), amplitude(), size(big_size))
    transforms.center_at(big_shape, (rx(5), ry(5) - ry(1)))

    spirulina_page.extend([title_shape, small_shape_1, small_shape_2, small_shape_3, medium_shape_1, medium_shape_2, medium_shape_3, big_shape])
    buff.append(spirulina_page)


    # ############
    # ## PAGE 2 ##
    # ############

    base_x = 24
    base_y = 0


    chlorella_page = [] # shapes.group([])
    chlorella_page.append(commands.SP(6))

    title_shape = chlorella_cell(size(small_size), 3)
    transforms.center_at(title_shape, (rx(2), ry(22) - ry(0)))

    small_shape_1 = chlorella_cell(size(small_size), 3)
    transforms.center_at(small_shape_1, (rx(4), ry(4) - ry(0)))
    small_shape_2 = chlorella_cell(size(small_size), 3)
    transforms.center_at(small_shape_2, (rx(8), ry(11) - ry(0)))
    small_shape_3 = chlorella_cell(size(small_size), 3)
    transforms.center_at(small_shape_3, (rx(23), ry(16) - ry(0)))

    medium_shape_1 = chlorella_cell(size(medium_size), 4)
    transforms.center_at(medium_shape_1, (rx(3), ry(13) - ry(0)))
    medium_shape_2 = chlorella_cell(size(medium_size), 4)
    transforms.center_at(medium_shape_2, (rx(11), ry(3)))
    medium_shape_3 = chlorella_cell(size(medium_size), 4)
    transforms.center_at(medium_shape_3, (rx(14), ry(14) - ry(0)))

    big_shape = chlorella_cell(size(big_size), 5)
    transforms.center_at(big_shape, (rx(18), ry(6) - ry(0)))

    chlorella_page.extend([title_shape, small_shape_1, small_shape_2, small_shape_3, medium_shape_1, medium_shape_2, medium_shape_3, big_shape])

    buff.append(chlorella_page)

    # ############
    # ## PAGE 3 ##
    # ############

    base_x = 48
    base_y = 0

    dunaliella_page = []
    dunaliella_page.append(commands.SP(4))

    title_shape = duna_cell(size(small_size), 4)
    transforms.center_at(title_shape, (rx(2), ry(22) - ry(0)))

    small_shape_1 = duna_cell(size(small_size), 4)
    transforms.center_at(small_shape_1, (rx(7), ry(13) - ry(0)))
    small_shape_2 = duna_cell(size(small_size), 4)
    transforms.center_at(small_shape_2, (rx(13), ry(12) - ry(0)))
    small_shape_3 = duna_cell(size(small_size), 4)
    transforms.center_at(small_shape_3, (rx(17), ry(6) - ry(0)))
    
    medium_shape_1 = duna_cell(size(medium_size), 6)
    transforms.center_at(medium_shape_1, (rx(6), ry(16) - ry(0)))
    medium_shape_2 = duna_cell(size(medium_size), 6)
    transforms.center_at(medium_shape_2, (rx(10), ry(11) - ry(0)))
    medium_shape_3 = duna_cell(size(medium_size), 6)
    transforms.center_at(medium_shape_3, (rx(18), ry(9) - ry(0)))

    big_shape = duna_cell(size(big_size), 8)
    transforms.center_at(big_shape, (rx(12), ry(5) - ry(0)))

    dunaliella_page.extend([title_shape, small_shape_1, small_shape_2, small_shape_3, medium_shape_1, medium_shape_2, medium_shape_3, big_shape])

    buff.append(dunaliella_page)
    buff.append(dunaliella_page)


    # ############
    # ## PAGE 4 ##
    # ############

    base_x = 0
    base_y = 24


    porphyridium_page = []

    porphyridium_page.append(commands.SP(5))

    title_shape = p_cell(int(1.5*x_unit), int(2*x_unit))
    transforms.center_at(title_shape, (rx(2),ry(22)))

    small_shape_1 = p_cell(int(1.5*x_unit), int(2*x_unit))
    transforms.center_at(small_shape_1, (rx(6),ry(4)))
    small_shape_2 = p_cell(int(1.5*x_unit), int(2*x_unit))
    transforms.center_at(small_shape_2, (rx(17),ry(15)))
    small_shape_3 = p_cell(int(1.5*x_unit), int(2*x_unit))
    transforms.center_at(small_shape_3, (rx(21),ry(6)))

    medium_shape_1 = p_cell(int(3*x_unit), int(4*x_unit))
    transforms.center_at(medium_shape_1, (rx(3),ry(13)))
    medium_shape_2 = p_cell(int(3*x_unit), int(4*x_unit))
    transforms.center_at(medium_shape_2, (rx(15),ry(3)))
    medium_shape_3 = p_cell(int(3*x_unit), int(4*x_unit))
    transforms.center_at(medium_shape_3, (rx(20),ry(11)))

    big_shape = p_cell(int(7*x_unit), int(8*x_unit))
    transforms.center_at(big_shape, (rx(12),ry(12)))

    porphyridium_page.extend([title_shape, small_shape_1, small_shape_2, small_shape_3, medium_shape_1, medium_shape_2, medium_shape_3, big_shape])

    buff.append(porphyridium_page)
    buff.append(porphyridium_page)
    buff.append(porphyridium_page)

    # plotter.write(porphyridium_page)


    # ############
    # ## PAGE 5 ##
    # ############

    base_x = 24
    base_y = 24

    nannochloropsis_page = []
    nannochloropsis_page.append(commands.SP(7))

    title_shape = nanno_cell(size(small_size), 4)
    transforms.center_at(title_shape, (rx(2), ry(22)))

    small_shape_1 = nanno_cell(size(small_size), 4)
    transforms.center_at(small_shape_1, (rx(4),ry(8)))
    small_shape_2 = nanno_cell(size(small_size), 4)
    transforms.center_at(small_shape_2, (rx(8),ry(12)))
    small_shape_3 = nanno_cell(size(small_size), 4)
    transforms.center_at(small_shape_3, (rx(12),ry(6)))

    medium_shape_1 = nanno_cell(size(medium_size), 6)
    transforms.center_at(medium_shape_1, (rx(4),ry(14)))
    medium_shape_2 = nanno_cell(size(medium_size), 6)
    transforms.center_at(medium_shape_2, (rx(8),ry(3)))
    medium_shape_3 = nanno_cell(size(medium_size), 6)
    transforms.center_at(medium_shape_3, (rx(12),ry(16)))

    big_shape = nanno_cell(size(big_size), 8)
    transforms.center_at(big_shape, (rx(19),ry(12)))

    nannochloropsis_page.extend([title_shape, small_shape_1, small_shape_2, small_shape_3, medium_shape_1, medium_shape_2, medium_shape_3, big_shape])

    buff.append(nannochloropsis_page)

    # ############
    # ## PAGE 6 ##
    # ############

    base_x = 48
    base_y = 24

    # red → Haematocuccus pluvialis, pen 2
    haematococcus_page = []
    haematococcus_page.append(commands.SP(2))

    title_shape = haema_cell(size(small_size))
    transforms.center_at(title_shape, (rx(2), ry(22)))

    small_shape_1 = haema_cell(size(small_size))
    transforms.center_at(small_shape_1, (rx(11), ry(2)))
    small_shape_2 = haema_cell(size(small_size))
    transforms.center_at(small_shape_2, (rx(12), ry(14)))
    small_shape_3 = haema_cell(size(small_size))
    transforms.center_at(small_shape_3, (rx(20), ry(11)))

    medium_shape_1 = haema_cell(size(medium_size))
    transforms.center_at(medium_shape_1, (rx(10), ry(5)))
    medium_shape_2 = haema_cell(size(medium_size))
    transforms.center_at(medium_shape_2, (rx(15), ry(14)))
    medium_shape_3 = haema_cell(size(medium_size))
    transforms.center_at(medium_shape_3, (rx(18), ry(9)))

    big_shape = haema_cell(size(big_size))
    transforms.center_at(big_shape, (rx(5), ry(12)))

    haematococcus_page.extend([title_shape, small_shape_1, small_shape_2, small_shape_3, medium_shape_1, medium_shape_2, medium_shape_3, big_shape])

    buff.append(haematococcus_page)

    for pen, data in enumerate(split_to_pens(flatten(buff))):
        if pen < len(pens):
            plotter.write([
                commands.SP(pen),
                commands.FS(pens[pen]['force']),
                commands.VS(pens[pen]['speed']),
                data
            ])
        else:
            plotter.write([
                commands.SP(pen),
                data
            ])

    ############
    ## FINISH ##
    ############
    plotter.select_pen(0)


# 1 - Arthrospira, spirulina
# 2 - Chlorella, chlorella_cell
# 3 - Dunaliella Salina, duna_cell
# 4 - Porphyridium Purpureum, p_cell
# 5 - Nannochloropsis, nanno_call
# 6 - Haematococcus Pluvialis, heama_cell

if __name__ == '__main__':
    VIRTUAL = False

    if VIRTUAL:
        from chiplotle.tools.plottertools import instantiate_virtual_plotter
        plotter =  instantiate_virtual_plotter(left_bottom = Coordinate(-17300,-11880), right_top = Coordinate(16340,11880), type="DPX-3300")
        plotter.margins.hard.draw_outline()
        plotter.select_pen(1)
        draw(plotter, [
            { 'pen': 0, 'speed': 0, 'force': 0 }, 
            { 'pen': 1, 'speed': 10, 'force': 3 }, # Black
            { 'pen': 2, 'speed': 10, 'force': 22 }, # red → Haematocuccus pluvialis
            { 'pen': 3, 'speed': 7, 'force': 23 }, # blue → Arthrospira
            { 'pen': 4, 'speed': 4, 'force': 27 }, # orange → Daniella Salina 
            { 'pen': 5, 'speed': 5, 'force': 23 }, # purple → Purpureum
            { 'pen': 6, 'speed': 9, 'force': 27 }, # Chlorella
            { 'pen': 7, 'speed': 6, 'force': 22 }, # Nannnochloropsis
            { 'pen': 8, 'speed': 10, 'force': 18 }
        ])

    else:
        # plotter = instantiate_plotters( )[0]
        plotter = instantiate_plotter_on_port('/dev/ttyUSB2')
        configureMemory(plotter, 9678, 2048, 0, 0, 0, 1024)
        # plotter.write(commands.FS(22))
        # plotter.write(commands.VS(7))
        # plotter.select_pen(1)
        while (True):
            draw(plotter, [
                { 'pen': 0, 'speed': 0, 'force': 0 }, 
                { 'pen': 1, 'speed': 10, 'force': 3 }, # Black
                { 'pen': 2, 'speed': 10, 'force': 22 }, # red → Haematocuccus pluvialis
                { 'pen': 3, 'speed': 9, 'force': 21 }, # blue → Arthrospira
                { 'pen': 4, 'speed': 5, 'force': 23 }, # orange → Daniella Salina 
                { 'pen': 5, 'speed': 5, 'force': 23 }, # purple → Purpureum
                { 'pen': 6, 'speed': 9, 'force': 25 }, # Chlorella
                { 'pen': 7, 'speed': 4, 'force': 22 }, # Nannnochloropsis
                { 'pen': 8, 'speed': 10, 'force': 18 }
            ])
            next = str(raw_input('Plot next?'))

    # draw(plotter, [
    #     { 'pen': 0, 'speed': 0, 'force': 0 }, 
    #     { 'pen': 1, 'speed': 10, 'force': 3 }, # Black
    #     { 'pen': 2, 'speed': 10, 'force': 22 }, # red → Haematocuccus pluvialis
    #     { 'pen': 3, 'speed': 7, 'force': 23 }, # blue → Arthrospira
    #     { 'pen': 4, 'speed': 4, 'force': 27 }, # orange → Daniella Salina 
    #     { 'pen': 5, 'speed': 5, 'force': 23 }, # purple → Purpureum
    #     { 'pen': 6, 'speed': 9, 'force': 27 }, # Chlorella
    #     { 'pen': 7, 'speed': 6, 'force': 22 }, # Nannnochloropsis
    #     { 'pen': 8, 'speed': 10, 'force': 18 }
    # ])

    # draw(plotter, [
    #     { 'pen': 1, 'speed': 25, 'force': 3},
    #     { 'pen': 1, 'speed': 25, 'force': 3},
    #     { 'pen': 1, 'speed': 25, 'force': 3},
    #     { 'pen': 1, 'speed': 25, 'force': 3},
    #     { 'pen': 1, 'speed': 25, 'force': 3},
    #     { 'pen': 1, 'speed': 25, 'force': 3},
    #     { 'pen': 1, 'speed': 25, 'force': 3},
    #     { 'pen': 1, 'speed': 25, 'force': 3},
    #     { 'pen': 1, 'speed': 25, 'force': 3},
    #     { 'pen': 1, 'speed': 25, 'force': 3},
    #     { 'pen': 1, 'speed': 25, 'force': 3},
    #     { 'pen': 1, 'speed': 25, 'force': 3},
    #     { 'pen': 1, 'speed': 25, 'force': 3}
    # ])


    if VIRTUAL:
        io.view(plotter)