Wiki

Reso-nance numérique | Arts et cultures libres

Outils du site


projets:laserbox-parametrique:accueil

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
projets:laserbox-parametrique:accueil [2015/08/23 11:32]
resonance [Description]
projets:laserbox-parametrique:accueil [2016/04/27 12:20] (Version actuelle)
resonance [Laserbox paramétrique]
Ligne 1: Ligne 1:
 ====== Laserbox paramétrique ====== ====== Laserbox paramétrique ======
   * Porteur du projet : [[participants:resonance:accueil|Reso-nance numérique]]   * Porteur du projet : [[participants:resonance:accueil|Reso-nance numérique]]
-  * Date : 20/08/2015+  * Date : 21/08/2015
   * Licence : libre !   * Licence : libre !
-  * Contexte : [[projets:malinette-brutbox:accueil|Malinette BrutBox]]+  * Contexte : recherche pour brutbox
   * Fichiers : {{:projets:laserbox-parametrique:flexbox_v.1.4.ps|}}   * Fichiers : {{:projets:laserbox-parametrique:flexbox_v.1.4.ps|}}
   * Lien : Depuis http://www.thingiverse.com/thing:619365/#files   * Lien : Depuis http://www.thingiverse.com/thing:619365/#files
 +
  
 ===== Description ===== ===== Description =====
 {{ :projets:laserbox-parametrique:2015-08-23-112247.jpg |}} {{ :projets:laserbox-parametrique:2015-08-23-112247.jpg |}}
 +De passage au [[http://www.8fablab.fr/|8Fablab]] de Crest ou nos acolytes de [[http://brutpop.blogspot.fr/|BrutPop]] sont en vadrouille... \\ 
 Essai de boite laser en CP pour les capteurs de la brutbox avec de jolies arrondies.\\ Essai de boite laser en CP pour les capteurs de la brutbox avec de jolies arrondies.\\
-Le fichier .ps est parametrique, en l'ouvrant avec un editeur de texte on peut changer la taille de la boite et des arrondis...+{{:projets:laserbox-parametrique:flexbox_v.1.4.ps|Le fichier .ps}} est paramétrique, en l'ouvrant avec un éditeur de texte on peut changer la taille de la boite et des arrondis...
  
   * [[http://www.thingiverse.com/thing:619365/#files]]   * [[http://www.thingiverse.com/thing:619365/#files]]
  
 +
 +{{ :projets:laserbox-parametrique:capture_du_2015-08-23_11_35_50.png |}}
 +==== Le Code ====
 +
 +<code>
 +%!PS
 +%
 +% flexbox.ps
 +% A 3 piece flexible box that can be laser cut from semi-rigid materials
 +%
 +% Edited my Tom Speller (@Seithing)
 +%
 +% V1.3 by Tom
 +% change log and updates on thingiverse   - http://www.thingiverse.com/thing:619365
 +%
 +% Originaly
 +% by Brian Dahlem   - http://www.thingiverse.com/thing:17240
 +% based on the simple box - type 2 by FdS - http://www.thingiverse.com/thing:14018
 +% using the sninge technique from snijlab - http://www.thingiverse.com/thing:12707
 +
 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 +% The following lines define basic information about your box, change as necessary
 +
 +% Define basic measurement units -- don't change put the desiered unit in the unit var below
 +/inch 72 def
 +/cm 28.3465 def
 +/mm 2.83465 def
 +
 +/unit mm def %selects what unit is used in the following vars + the text (selection about)
 +
 +% Define box parameters -- This is the size of the box you want
 +/boxlength 60 unit mul def         % long dimension of flat side of the box
 +/boxwidth 60 unit mul def          % dimension across the hinge
 +/boxheight 60 unit mul def         % short dimension across flat side of the box
 +/cornerradius 15 unit mul def        % radius of the hinge. Suggested min 15mm
 +/materialthickness 3 unit mul def % thickness of the material which will become the box walls
 +/tabwidth materialthickness 2 mul def   % suggested width of tabs in the joints
 +
 +/fingerTab 0 unit mul def %finger hole for opening box, set to 0 for none. 12 is a good size for a finger
 +/fingerinset 5 unit mul def %offset to move the center of the circle. 5 is a good offset for a finger
 +
 +% Define the laser cutter page size A3 420x290mm
 +/pagewidth 420 unit mul def
 +/pageheight 290 unit mul def
 +
 +
 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 +% Here down is the code that makes your pretty little box, change only if you dare.
 +%
 +% Warning... it gets ugly ahead
 +
 +% setup the page
 +<< /PageSize [pagewidth pageheight] >> setpagedevice % Set the pagesize, only sometimes works?  Good enough for gov't
 +
 +/border materialthickness def   % Move away from the edge of the material, for that nice scorched edges goodness
 +0 pageheight translate
 +1 -1 scale
 +border border translate
 +
 +% 0 - 1 for colour
 +
 +% outside cut colour
 +/outR 0 def
 +/outG 0 def
 +/outB 0 def
 +
 +% hinge cut colour due to the way my laser software works it tries to cut the outside before the inside. 
 +% making it different colours mean I can set the cut manauly
 +/hingeR 1 def
 +/hingeG 0 def
 +/hingeB 0 def
 +
 +0.01 setlinewidth        % Setup to make vector cuts with hairline thickness (just enough to see)
 +outR outG outB setrgbcolor     % Use black for cutouts, because that makes the most sense
 +
 +% draw a rectangle
 +/box {                % Draw a box with a given width and height from the current location
 +  /height exch def
 +  /width exch def
 +
 +  0 height rlineto
 +  width 0 rlineto
 +  0 height neg rlineto
 +  width neg 0 rlineto  
 +} def
 +
 +% Some basics...
 +/min { 2 copy gt { exch } if pop } bind def
 +/max { 2 copy lt { exch } if pop } bind def
 +/pi 3.14159 def
 +
 +% Define some features of the box
 +/innerradius cornerradius materialthickness sub def  % The radius of the corners minus the thickness of the material
 +/tablen materialthickness def                        % How tall to make tabs
 +/toplen boxlength cornerradius 2 mul sub def         % How long is the top / bottom side
 +/frontheight boxheight tablen 2 mul sub def          % How tall is the front face, minus tabs
 +/frontwidth boxlength tablen 2 mul sub def           % How wide is the front face, minus tabs
 +/sideheight boxheight cornerradius 2 mul sub def     % How tall are the sides, not counting hinges
 +/hingelen innerradius 2 div pi mul def               % How long is a flattened out hinge (the circumference of 1/4 inner radius)
 +
 +/breaklen materialthickness 2 div def                % How long should breaks in the hinge lines be
 +/numhingelines boxwidth 96 div ceiling def           % How many segments should there be in a hinge line
 +/winglen toplen 2 div hingelen 2 mul sideheight add add def  % How long a wing of the drawing is when drawn out flat
 +
 +%for the tabs at the base (between the wings).
 +/numtabsbase toplen tabwidth div 2 div floor 2 mul 1 add def  % How many tabs (odd number) connect the bottom to the front
 +/tabsizebase toplen numtabsbase div def                           % How big are those tabs
 +
 +%finger tab maths
 +%see if fingerTab is greater then 0. if so add hole
 +fingerTab 0 gt {
 +  /x fingerTab fingerinset sub def %work out how far form the edge of the circle the sagitta is
 +  /y 2 2 fingerTab mul x mul x 2 exp sub sqrt mul def % the maths that calulates the offset, some how works.
 +  /changeangle fingerinset y 2 div atan def %angle to +/- from arc to move the hole
 +  /lineloss fingerTab y 2 div sub def % add a little more to the line to compensate for what was lost in moving the circle
 +  } {
 +  %if finger tab set to 0 set all to 0. don't add hole
 +  /x 0 def
 +  /y 0 def
 +  /changeangle 0 def
 +  /lineloss 0 def
 +  /fingerinset 0 def
 +  } ifelse
 +
 +% Draw 1/2 of the top, one "flap" of the lid
 +/drawflap {
 +  newpath 
 +    toplen 2 div 0 moveto    % Start at the end of the flap closest to the body
 +    tabwidth 2 mul 0 lineto  % draw the edge up to the tab
 +    0 tablen rlineto         % cut in a tab
 +    tabwidth neg 0 rlineto
 +    0 tablen neg rlineto     % and back out to lock it
 +    tabwidth neg 0 rlineto
 +    
 +    fingerinset neg boxwidth 2 div fingerTab 270 changeangle add 90 changeangle sub arc % draw arc for finger hole
 +    
 +    0 boxwidth 2 div fingerTab sub lineloss add rlineto       % draw the end of the top flap
 +    
 +    tabwidth 0 rlineto       % and draw the locking tabs
 +    0 tablen neg rlineto
 +    tabwidth 0 rlineto
 +    0 tablen rlineto
 +    toplen 2 div boxwidth lineto  % finish by returning to the body end of the flap
 +  stroke
 +} def
 +
 +% Draw a hinge line going all the way across the hinge
 +/longline {
 +  /linelen boxwidth numhingelines breaklen 2 mul sub numhingelines div def  % How long is a segment in a long line?
 +
 +  % Draw 1/2 a line to start
 +  0 linelen 2 div rlineto
 +
 +  % Fill in the space with full lines
 +  2 1 numhingelines {
 +    0 breaklen 2 mul rmoveto
 +    0 linelen rlineto
 +  } for
 +
 +  % Draw the last half line to even it out
 +  0 breaklen 2 mul rmoveto
 +  0 linelen 2 div rlineto
 +
 +} def
 +
 +% Draw a hinge line with end caps
 +/shortline {
 +  /linelen boxwidth numhingelines 1 sub breaklen 2 mul mul breaklen 2 mul add sub numhingelines div def
 +
 +  % Skip a break then fill the space with evenly spaced lines
 +  0 breaklen neg rmoveto
 +  1 1 numhingelines {
 +    0 linelen neg rlineto
 +    0 breaklen 2 mul neg rmoveto
 +  } for
 +} def
 +
 +% Draw a flattened out hinge - alternating short and long lines
 +/drawhinge {
 +  /minwidth materialthickness def            % the minimum width for a hinge section (2 lines)
 +  /numbars hingelen minwidth div floor def   % the number of hinge sections per hinge
 +  /barwidth hingelen numbars div def         % the actual width of a hinge section
 +  
 +  hingeR hingeG hingeB setrgbcolor     % Set colour to hinge colour
 +
 +  newpath
 +    0 boxwidth moveto                        % start at the bottom of the hinge and draw a short line
 +    shortline
 + 
 +    1 1 numbars {                            % for each of the sections in the hinge
 +      /i exch def
 +      i barwidth mul barwidth 2 div sub 0 moveto  % move to the middle of the section and draw
 +      longline                                    % a long line to split the section in half
 +      i barwidth mul boxwidth moveto              % move to the end of the section and
 +      shortline                                   % draw a shortline to connect to the next section
 +    } for
 +  stroke
 +  outR outG outB setrgbcolor     % back to black for the outside lines
 +  newpath
 +    0 0 moveto                               % draw the sides of the hinge
 +    hingelen 0 rlineto
 +    0 boxwidth rmoveto
 +    hingelen neg 0 rlineto
 +  stroke
 +} def
 +
 +%draw tabs for bottom of the sides of box (ones between the wings)
 +/drawbasetabs {
 + newpath
 +   0 0 moveto
 +      tabsizebase 0 rlineto                % draw tabs and slots along the bottom line of the front
 +      1 1 numtabsbase 2 div { 
 +        0 tablen rlineto
 +        tabsizebase 0 rlineto
 +        0 tablen neg rlineto
 +        tabsizebase 0 rlineto 
 +      } for
 +    stroke
 +} def
 +
 +% Draw an edge of the box, using tabs to connect to the front/back if the side is large enough
 +/drawendedge {
 +  /numtabs sideheight tabwidth div 2 div ceiling 2 mul 1 add def  % how many tabs to connect to front
 +  /tabsize sideheight numtabs div def                             % how big should the tabs be
 +
 +  newpath
 +    0 0 moveto                 % Move to the top of the side
 +    tabsize 0 rlineto          % draw the first tab
 +    1 1 numtabs 2 div {        % if there are more tabs
 +      0 tablen rlineto         % draw the tab
 +      tabsize 0 rlineto
 +      0 tablen neg rlineto     % then return to the side
 +      tabsize 0 rlineto        % for the slot
 +    } for
 +  stroke
 +} def
 +
 +% Draw an end of the box horizontally
 +/drawend {
 +  gsave
 +    drawendedge                     % Only draw the 2 edges of the end not connected to the hinges
 +    sideheight boxwidth translate
 +    -1 -1 scale
 +    drawendedge
 +  grestore
 +} def
 +
 +% Draw a "wing" of the box, consisting of 1/2 the top, 2 hinges and a side
 +/drawwing {
 +  % Draw the two hinges before drawing the outline of the wing - use this order for laser cutting betterment
 +  gsave
 +    toplen 2 div 0 translate  % Skip over the flap
 +    drawhinge                 % Draw a hinge
 +    hingelen sideheight add 0 translate % Skip over the end/side
 +    drawhinge                 % Draw a hinge
 +  grestore
 +  gsave                       % Go back to the beginning of the wing
 +    drawflap                  % Draw the top flap
 +    toplen 2 div hingelen add 0 translate % skip over the hinge
 +    gsave %draw only the bottom edge as the box sides do the other side
 +      sideheight boxwidth translate
 +      -1 -1 scale
 +      drawendedge
 +    grestore
 +  grestore
 +} def
 +
 +
 +% Draw the front/back side of the box
 +/drawfront {
 +
 +  gsave
 +    tablen tablen translate
 +
 +    % Connect the front side to the bottom with tabs
 +    newpath
 +      innerradius frontheight moveto   % Start at the bottom, inside of the curved corner
 +      tabsizebase 0 rlineto                % draw tabs and slots along the bottom line of the front
 +      1 1 numtabsbase 2 div { 
 +        0 tablen rlineto
 +        tabsizebase 0 rlineto
 +        0 tablen neg rlineto
 +        tabsizebase 0 rlineto 
 +      } for
 +      frontwidth innerradius sub frontheight moveto  % draw the corner at the bottom right of the front
 +      frontwidth innerradius sub frontheight innerradius sub innerradius 90 0 arcn
 +    stroke
 +
 +    % draw a corner radius then the side connecting one end to the front
 +    gsave
 +      frontwidth frontheight innerradius sub translate % move to the bottom of the right edge
 +      270 rotate
 +      drawendedge  % draw the edge connecting the front and an end
 +    grestore
 +
 +    % draw another corner radius, the side connecting the top flaps to the front, and another corner
 +    newpath
 +      frontwidth innerradius sub innerradius innerradius 0 270 arcn  % draw the top right corner
 +      toplen 2 div neg tabwidth 2 mul add 0 rlineto                  % draw the right half of the top
 +      0 tablen neg rlineto                                           % stick out a tab to grab the top flap
 +      tabwidth neg 0 rlineto
 +      0 tablen rlineto                                               % Make a slot to hold both flaps' tabs
 +      tabwidth 2 mul neg 0 rlineto                                 
 +      0 tablen neg rlineto                                           % make a tab to grab the other flap
 +      tabwidth neg 0 rlineto
 +      0 tablen rlineto
 +      innerradius 0 lineto                                           % then finish off the top of this side
 +      innerradius innerradius innerradius 270 180 arcn               % with a top left corner
 +    stroke
 + 
 +    % draw the last side of the front, connecting the front to another end
 +    gsave
 +      0 innerradius translate   % below the corner
 +      90 rotate
 +      drawendedge               % draw the edge connecting with the left end
 +    grestore
 +
 +    % finish off the front with the last corner radius
 +    newpath
 +      innerradius frontheight innerradius sub innerradius 180 90 arcn % draw the bottom left corner to finish this side
 +    stroke
 +  grestore  
 +} def
 +
 +% Go ahead and actually draw the box
 +
 +% Draw the two wings - the top flaps and ends
 +gsave
 +  0 boxlength tablen sub translate   % line up the wing with the bottom of the box's front side
 +  drawwing                           % draw the wing
 +  gsave
 +    winglen 0 translate %move to wing middle
 +    drawbasetabs %draw tabs between wings
 +    0 boxwidth translate
 +    1 -1 scale %mirror horisontal
 +    drawbasetabs %draw bottom tabs fo wings
 +  grestore
 +  2 toplen mul sideheight 2 mul add hingelen 4 mul add 0 translate  % skip over to the other side of the box
 +  -1 1 scale
 +  drawwing                                                          % and draw the other wing
 +grestore
 +
 +% Draw the front and back of the box, connected up to the wings this also makes the bottom
 +gsave
 +  
 +  toplen 2 div hingelen add cornerradius sub boxlength translate  % line up the front so it will mesh with the wings
 +  -90 rotate                            %rotate it so it sits ontop
 +  drawfront                             % and draw it
 +
 +  0 boxheight hingelen 2 mul add sideheight add toplen add translate  % line up the front so it will mesh with the wings
 +  1 -1 scale                            %scale (mirror) to save having to work with vertical offset
 +  drawfront                             % and draw it
 +grestore
 +
 +% We're done here, lets go home.
 +showpage
 +%%EOF
 +</code>
 ===== Matériaux ===== ===== Matériaux =====
   * CP 3mmm   * CP 3mmm
Ligne 19: Ligne 379:
  
  
-Les mots clés (tags) représentant votre travail+
 {{tag>[laser brutbox boite]}} {{tag>[laser brutbox boite]}}
/home/resonancg/www/wiki/data/attic/projets/laserbox-parametrique/accueil.1440322335.txt.gz · Dernière modification: 2015/08/23 11:32 de resonance