colorlab
clone your own copy | download snapshot

Snapshots | iceberg

Inside this repository

plot_wrapper_cover.py
text/x-python

Download raw (5.8 KB)

# -*- coding: utf-8 -*-

from configureMemory import configureMemory
from chiplotle.hpgl import commands
from chiplotle import *
import math

VIRTUAL = False

def mm(amount):
    return amount * 40

def cm(amount):
    return amount * 400

def units_to_cm(amount):
    return amount / 400.0

# Select pen

  # Move to far right
  # Ask to start
      
      # Plot


def kask(): #Draws the KASK logo
  logo = shapes.group([])
  half = shapes.group([])
  lower_half = shapes.group([])

  charheight = mm(4)
  charwidth = mm(2.5)

  vertical_indent = charheight / 2.0

  k_1 = shapes.label("K", units_to_cm(charwidth), units_to_cm(charheight),0,0)
  a = shapes.label("A", units_to_cm(charwidth), units_to_cm(charheight),0,0)
  transforms.offset(a, (1.75 * charwidth, vertical_indent))
  s = shapes.label("S", units_to_cm(charwidth), units_to_cm(charheight),0,0)
  transforms.offset(s, (3.5 * charwidth, vertical_indent))
  k_2 = shapes.label("K", units_to_cm(charwidth), units_to_cm(charheight),0,0)
  transforms.offset(k_2, (5 * charwidth, 0))

  half.append(k_1)
  half.append(a)
  half.append(s)
  half.append(k_2)
  
  k_3 = shapes.label("K", units_to_cm(charwidth), units_to_cm(charheight),0,0)
  a_1 = shapes.label("A", units_to_cm(charwidth), units_to_cm(charheight),0,0)
  transforms.offset(a_1, (1.75 * charwidth, vertical_indent))
  s_1 = shapes.label("S", units_to_cm(charwidth), units_to_cm(charheight),0,0)
  transforms.offset(s_1, (3.5 * charwidth, vertical_indent))
  k_4 = shapes.label("K", units_to_cm(charwidth), units_to_cm(charheight),0,0)
  transforms.offset(k_4, (5 * charwidth, 0))

  lower_half.append(k_3)
  lower_half.append(a_1)
  lower_half.append(s_1)
  lower_half.append(k_4)
  
  logo.append(half)
  transforms.rotate(lower_half, math.radians(180))
  transforms.offset(lower_half, (3.8 * charheight,- 0.2 * charheight))
  logo.append(lower_half)

  border = shapes.ellipse(10 * charwidth, 4.5 * charheight)
  transforms.offset(border, ((3.8 * charheight)/2, (-0.2 * charheight)/2))
  logo.append(border)

  # transforms.rotate(logo, math.radians(90))
  transforms.center_at(logo, (0,0))
  return logo

def conservatorium ():
  charwidth = mm(2.25) * .5
  charheight = mm(3) * .5
  shift = 0.5 * charheight

  parts = ['CON', 'SER', 'VA', 'TO', 'RIUM']

  logo = Group()
  lines = Group()

  outline = shapes.rectangle(16 * 1.5 * charwidth, 7 * 2 * charheight)
  transforms.offset(outline, (7 * 1.5 * charwidth, -2.1 * 2 * charheight))
  logo.append(outline)

  for r in range(6):
    omit = len(parts) - r
    line = Group()
    x = 0
    for p, text in enumerate(parts):
      if p <> omit:
        label = shapes.label(text, charwidth=units_to_cm(charwidth), charheight=units_to_cm(charheight), charspace=0, linespace=0)
        if p % 2 == 1:
          transforms.offset(label, (x, shift))
        else:
          transforms.offset(label, (x, 0))
        line.append(label)

      x += len(text) * charwidth * 1.55

    transforms.offset(line, (0, -charheight * 2 * r))

    lines.append(line)
  
  # transforms.center_at(lines, (0,0))
  # transforms.center_at(outline, (0, 0))
  logo.append(lines)

  # transforms.rotate(logo, math.radians(90))

  return logo

def hogent():
  charwidth = mm(4) * .5
  charheight = mm(6) * .5

  hogent = shapes.label('HO\r\nGENT', charwidth=units_to_cm(charwidth), charheight=units_to_cm(charheight), charspace=0, linespace=0)
  howest = shapes.label('howest', charwidth=units_to_cm(charwidth) * .75, charheight=units_to_cm(charheight), charspace=-.1, linespace=0)
  
  # transforms.offset(hogent, (0, charheight * -1))
  transforms.offset(howest, (0, charheight * -5))

  logo = Group([hogent, howest])

  # transforms.rotate(logo, math.radians(90))
  # transforms.center_at(logo, (0,0))

  return logo


# Transform text lines into plotter labels
def make_labels (lines, charwidth, charheight, charspace=None, linespace=None):
    text = '{}{}'.format(chr(10), chr(13)).join(lines)
    label = shapes.label(text, charwidth=units_to_cm(charwidth), charheight=units_to_cm(charheight), charspace=charspace, linespace=linespace)


    return label

def cover ():
    lines = ['LIVING', 'COLORS']
    charwidth = mm(30)
    charheight = mm(80)

    buff = Group()
    text = Group()

    for l, line in enumerate(lines):
      print(line)
      for i in range(6):
        label = make_labels([line], charwidth, charheight, 0, 0)
        transforms.offset(label, Coordinate(i * mm(1), l * charheight * -1.2))
        text.append(label)
    
    transforms.offset(text, (mm(26), mm(160)))
    # transforms.center_at(buff, (mm(175), mm(175)))
    buff.append(text)

    logo_kask = kask()
    # transforms
    transforms.offset(logo_kask, (mm(217), mm(43.5)))
    buff.append(logo_kask)

    logo_conservatorium = conservatorium()
    transforms.offset(logo_conservatorium, (mm(236), mm(50)))
    buff.append(logo_conservatorium)
    
    logo_hogent = hogent()
    transforms.offset(logo_hogent, (mm(267), mm(50)))
    buff.append(logo_hogent)
    # plotter.write(logo_hogent)
    return buff


if __name__ == '__main__':
  if VIRTUAL:
    from chiplotle.tools.plottertools import instantiate_virtual_plotter
    plotter = instantiate_virtual_plotter(left_bottom = Coordinate(0, 0), right_top = Coordinate(mm(310), mm(310)), type="DPX-3300")
    plotter.margins.hard.draw_outline()

  else:
    plotter = instantiate_plotters()[0]
    configureMemory(plotter, 9678, 2048, 0, 0, 0, 1024)
    plotter.set_origin_bottom_left()

  x = mm(500)
  y = mm(150)


  if VIRTUAL:
      plotter.write(cover())
      io.view(plotter)
  
  else:
      while True:
        plotter.select_pen(1)
        plotter.write('AP0;VS7;FS4;')
        plotter.write('PA{},{};'.format(x,y))
        start = str(raw_input('place cover...'))
        plotter.write(cover())
        plotter.write('PA{},{};'.format(x,y))
        end = str(raw_input('remove cover...'))
        plotter.select_pen(0)
        next = str(raw_input('plot next?'))