02-01-2022
Documentation for Cuttle code to create a reverse tuck carton

----- Variables --------

Main 3 sizing values are

Length
Width
Depth
BackPanelOffset ;the back panel of folding carton is generally 0.031" smaller than the width, so the back cut edge does not overlap the glue flap crease when being glued flat

Parameters below can generally stay the same. You can decrease ShoulderHt to 0.1875" for narrow boxes, and even down to 0.125" if both Length and Width are small. TuckHt should never be larger than Width, so reduce it's size if Width is under 1.375". GFWidth can be either 0.5" or up to 0.75" depending on size. Generally, GFWidth of 0.625" is fine unless Width is under 0.875" or Length is greater than 15"

ShoulderHt      ;height of the shoulder on minor flaps. Defaults to 0.25". Shoue be 0.1875" if Width is narrow.
SlitLockExtra   ;increases the slit lock size on the Tuck Top and Tuck Bottom to match up with the ShoulderHt. Generally the number should be eith 0.0625" or 0.09375".
TuckHt          ;height of the tuck flap on the Tuck Top and Tuck Bottom. Generall gets larger if the box is larger, and smaller if Width of box is narrow.
Shoulder45      ;45 degree relief on minor flaps next to shoulder. Generally set at 0.125". Can be 0.01875", but not necessary.
FlatHt          ;height of minor flap. Generally set to Width+TuckHt)/2. This is because the carton will nest with common edges in a multi up layout for printing and die cutting.
TaperY          ;tapered line that comes off of Shoulder45 and extends to the outer edge of flap. Generally at 15 degrees. See TaperAngle.
TaperAngle      ;angle for taper on minor flaps. Generaly set to 15 degrees. Shouldn't change from 15 degrees.
SlitDown        ;line that extends from the slit locks on Tuck Top and Tuck Bottom just slightly past the crease. Set to 0.078125.
Bleed1          ;main offset for creating bleed boundaries for printing. Generally set for 0.125".
Bleed2          ;additional offset to add more ink to minor flaps. Set at 0.1875", but also be set at 0.125" if not needed.
BlankSizeX      ;overall size of carton blank in "X" direction
BlankSizeY      ;overall size of carton blank in "Y" direction

Code for each line below. Lines are either Crease or Cut, and I used the character "n" for nodes or anchors. Left them as anchors for the bleed boundary.
---------------------------------------------------
Start of Sleeve

Crease 1 
n1  Vec(0, 0)
n2  Vec(0, -Depth)

Crease 2
n3  Vec(0, -Depth)
n4  Vec(Length, -Depth)

Crease 3
n5  Vec(Length, -Depth)
n6  Vec(Length, 0)

Cut 4
n7  Vec(Length+BackPanelOffset, 0)
n8  Vec(0, 0)

Crease 5
n9  Vec(Length+BackPanelOffset, 0)
n10 Vec(0, 0)

Crease 6
n11 Vec(Length+Width, 0)
n12 Vec(Length+Width, -Depth)

Crease 7
n13 Vec(Length+Width-BackPanelOffset, -Depth)
n14 Vec(Length, -Depth)

Cut 8
n15 Vec(Length+Width-BackPanelOffset, -Depth)
n16 Vec(Length+Width+Length+BackPanelOffset, -Depth)

Crease 9
n17 Vec(Length+Width+Length,-Depth)
n18 Vec(Length+Width+Length,0)

Crease 10
n19 Vec(Length+Width+Length, 0)
n20 Vec(Length+Width, 0)

Crease 11
n21 Vec(Length+Width+Length, 0)
n22 Vec(Length+Width+Length+Width-BackPanelOffset, 0)

Cut 12
n23 Vec(Length+Width+Length+Width-BackPanelOffset, 0)
n24 Vec(Length+Width+Length+Width-BackPanelOffset, -Depth)

Crease 13
n25 Vec(Length+Width+Length+Width-BackPanelOffset, -Depth)
n26 Vec(Length+Width+Length+BackPanelOffset, -Depth)

End of Sleeve
-----------------------------------------------------
Start of Flap1

Cut 14 ;Shoulder

n27 Vec(Length+Width+Length+BackPanelOffset, -Depth)
n28 Vec(Length+Width+Length+BackPanelOffset, -Depth-ShoulderHt)

Cut 15 ;Shoulder 45

n29 Vec(Length+Width+Length+BackPanelOffset, -Depth-ShoulderHt)
n30 Vec(Length+Width+Length+BackPanelOffset+Shoulder45, -Depth-ShoulderHt-Shoulder45)

Cut 16 ;Taper angle defaults to 15

line position Vec(Length+Width+Length+BackPanelOffset+Shoulder45, -Depth-ShoulderHt-Shoulder45)

n31 Vec(0, 0)
n32 Vec(TaperY/cos(TaperAngle),0).rotate(TaperAngle-90)

Cut 17

n33 Vec(Length+Width+Length+BackPanelOffset+Shoulder45+(TaperY*tan(TaperAngle)), -Depth-(Width+TuckHt)/2)
n34 Vec(Length+Width+Length+Width-BackPanelOffset, -Depth-(Width+TuckHt)/2)

Cut 18

n35 Vec(Length+Width+Length+Width-BackPanelOffset, -Depth-(Width+TuckHt)/2)
n36 Vec(Length+Width+Length+Width-BackPanelOffset, -Depth)

End of Flap1
-----------------------------------------------------
Start of Flap2

Cut 19 ;Shoulder

n37 Vec(Length+Width-BackPanelOffset, -Depth)
n38 Vec(Length+Width-BackPanelOffset, -Depth-ShoulderHt)

Cut 20 ; Shoulder45

n39 Vec(Length+Width-BackPanelOffset, -Depth-ShoulderHt)
n40 Vec(Length+Width-BackPanelOffset-Shoulder45, -Depth-ShoulderHt-Shoulder45)

Cut 21 ;Taper angle defaults to 15

line position Vec(Length+Width-BackPanelOffset-Shoulder45, -Depth-ShoulderHt-Shoulder45)

n41 Vec(0, 0)
n42 Vec(TaperY/cos(TaperAngle),0).rotate(-TaperAngle-90)

Cut 22 

n43 Vec(Length+Width-BackPanelOffset-Shoulder45-(TaperY*tan(TaperAngle)), -Depth-(Width+TuckHt)/2)
n44 Vec(Length, -Depth-(Width+TuckHt)/2)

Reference 1 ;Guide for common line that is hidden

n45 Vec(Length, -Depth-(Width+TuckHt)/2)
n46 Vec(Length, -Depth)

End of Flap2
-----------------------------------------------------------
Start of Tuck Top

Cut 23 ; width

n47 Vec(Length, -Depth)
n48 Vec(Length, -Depth-Width)

Cut 24 ; slit lock

n49 Vec(Length, -Depth-Width)
n50 Vec(Length-ShoulderHt-SlitLockExtra, -Depth-Width)

Cut 25 ; slit down

n51 Vec(Length-ShoulderHt-SlitLockExtra, -Depth-Width)
n52 Vec(Length-ShoulderHt-SlitLockExtra, -Depth-Width+SlitDown)

Crease 26

n53 Vec(Length-ShoulderHt-SlitLockExtra, -Depth-Width+BackPanelOffset)
n54 Vec(ShoulderHt+SlitLockExtra, -Depth-Width+BackPanelOffset)

Cut 27 ; slit down

n55 Vec(ShoulderHt+SlitLockExtra, -Depth-Width+SlitDown)
n56 Vec(ShoulderHt+SlitLockExtra, -Depth-Width)

Cut 28 ; slit lock

n57 Vec(ShoulderHt+SlitLockExtra, -Depth-Width)
n58 Vec(0, -Depth-Width)

Cut 29 ; width

n59 Vec(0, -Depth-Width)
n60 Vec(0, -Depth)

Cut 30 3 point Arc

point1 Vec(BackPanelOffset, -Depth-Width)
point2 Vec(BackPanelOffset, -Depth-Width-.00000001)
point3 Vec(ShoulderHt+SlitLockExtra+SlitDown, -Depth-Width-TuckHt)

Cut 31 

n61 Vec(ShoulderHt+SlitLockExtra+SlitDown, -Depth-Width-TuckHt)
n62 Vec(Length-ShoulderHt-SlitLockExtra-SlitDown, -Depth-Width-TuckHt)

Cut 32 3 point Arc

point1 Vec(Length-BackPanelOffset, -Depth-Width)
point2 Vec(Length-BackPanelOffset, -Depth-Width-.00000001)
point3 Vec(Length-ShoulderHt-SlitLockExtra-SlitDown, -Depth-Width-TuckHt)

End of Tuck Top
----------------------------------------------------------
Start of Glue Flap - start from top

Cut 33 ; GFangle defaults to 10

line position Vec(0, -Depth)

n63 Vec(0.00, 0.00)
n64 Vec(-GFWidth/cos(GFangle),0).rotate(360-GFangle)

Cut 34 ; glue flap edge

n65 Vec(-GFWidth*tan(45),-Depth+GFWidth*tan(GFangle))
n66 Vec(-GFWidth/cos(GFangle),0).rotate(GFangle)

Cut 35 ; GFangle defaults to 10

n67 Vec(-GFWidth/cos(GFangle),0).rotate(GFangle)
n68 Vec(0.00, 0.00)

End of Glue Flap
----------------------------------------------------------
Start of Flap3

Cut 36 ; shoulder

n69 Vec(Length+BackPanelOffset, 0)
n70 Vec(Length+BackPanelOffset, ShoulderHt)

Cut 37 ; shoulder 45

n71 Vec(Length+BackPanelOffset, ShoulderHt)
n72 Vec(Length+BackPanelOffset+Shoulder45, ShoulderHt+Shoulder45)

Cut 38 ; taper default is 15

line position Vec(Length+BackPanelOffset+Shoulder45, 0+ShoulderHt+Shoulder45)

n73 Vec(0,0)
n74 Vec(TaperY/cos(TaperAngle),0).rotate(90-TaperAngle)

Cut 39

n75 Vec(Length+BackPanelOffset+Shoulder45+(TaperY*tan(TaperAngle)), (Width+TuckHt)/2)
n76 Vec(Length+Width, (Width+TuckHt)/2)

Reference 2 ; Guide for common line that is hidden

n77 Vec(Length+Width, (Width+TuckHt)/2)
n78 Vec(Length+Width, 0)

End of Flap3
-----------------------------------------------------------
Start of Tuck Buttom

Cut 40 ; width

n79 Vec(Length+Width, 0)
n80 Vec(Length+Width, Width)

Cut 41 ;slit lock

n81 Vec(Length+Width, Width)
n82 Vec(Length+Width+ShoulderHt+SlitLockExtra, Width)

Cut 42 ; slit down

n83 Vec(Length+Width+ShoulderHt+SlitLockExtra, Width)
n84 Vec(Length+Width+ShoulderHt+SlitLockExtra, Width-SlitDown)

Crease 43

n85 Vec(Length+Width+ShoulderHt+SlitLockExtra, Width-BackPanelOffset)
n86 Vec(Length+Width+Length-ShoulderHt-SlitLockExtra, Width-BackPanelOffset)

Cut 44 ; slit down

n87 Vec(Length+Width+Length-ShoulderHt-SlitLockExtra, Width-SlitDown)
n88 Vec(Length+Width+Length-ShoulderHt-SlitLockExtra, Width)

Cut 45 ; slit lock

n89 Vec(Length+Width+Length-ShoulderHt-SlitLockExtra, Width)
n90 Vec(Length+Width+Length, Width)

Cut 46 ; width

n91 Vec(Length+Width+Length, Width)
n92 Vec(Length+Width+Length, 0)

Cut 47 3 point Arc

point1 Vec(Length+Width+BackPanelOffset, Width)
point2 Vec(Length+Width+BackPanelOffset, Width+.00000001)
point3 Vec(Length+Width+ShoulderHt+SlitLockExtra+SlitDown, Width+TuckHt)

Cut 48 ; tuck edge

n93 Vec(Length+Width+ShoulderHt+SlitLockExtra+SlitDown, Width+TuckHt)
n94 Vec(Length+Width+Length-ShoulderHt-SlitLockExtra-SlitDown, Width+TuckHt)

Cut 49 3 point Arc

point1 Vec(Length+Width+Length-BackPanelOffset, Width)
point2 Vec(Length+Width+Length-BackPanelOffset, Width+.00000001)
point3 Vec(Length+Width+Length-ShoulderHt-SlitLockExtra-SlitDown, Width+TuckHt)

End of Tuck Btm
----------------------------------------------------------
Start of Flap4

Cut 50 ; shoulder

n95 Vec(Length+Width+Length+Width-BackPanelOffset, -0)
n96 Vec(Length+Width+Length+Width-BackPanelOffset, 0+ShoulderHt)

Cut 51 ; shoulder 45

n97 Vec(Length+Width+Length+Width-BackPanelOffset, 0+ShoulderHt)
n98 Vec(Length+Width+Length+Width-BackPanelOffset-Shoulder45, 0+ShoulderHt+Shoulder45)

Cut 52 ; taper

position Vec(Length+Width+Length+Width-BackPanelOffset-Shoulder45, 0+ShoulderHt+Shoulder45)

n99  Vec(0, 0)
n100 Vec(TaperY/cos(TaperAngle),0).rotate(90+TaperAngle)

Cut 53 ; flap edge

n101 Vec(Length+Width+Length+Width-BackPanelOffset-Shoulder45-(TaperY*tan(TaperAngle)), (Width+TuckHt)/2)
n102 Vec(Length+Width+Length, (Width+TuckHt)/2)

Reference 3 ; common line

n103 Vec(Length+Width+Length, (Width+TuckHt)/2)
n104 Vec(Length+Width+Length, 0)

End of Flap4
----------------------------------------------------------

Bleeds - 0.125 default for all but flaps - flaps default to 0.1875

Anchor 1  Vec(-Bleed1, Bleed1)
Anchor 2  Vec(-Bleed1, -Depth-Width-Bleed1)
Anchor 3  Vec(Length+Bleed1, -Depth-Width-Bleed1)
Anchor 4  Vec(Length+Bleed1, -Depth-Bleed2)
Anchor 5  Vec(Length+Width+Bleed1, -Depth-Bleed2)
Anchor 6  Vec(Length+Width+Bleed1, -Depth-Bleed1)
Anchor 7  Vec(Length+Width+Length-Bleed1, -Depth-Bleed1)
Anchor 8  Vec(Length+Width+Length-Bleed1, -Depth-Bleed2)
Anchor 9  Vec(Length+Width+Length+Width-BackPanelOffset+Bleed1, -Depth-Bleed2)
Anchor 10 Vec(Length+Width+Length+Width-BackPanelOffset+Bleed1, Bleed1)
Anchor 11 Vec(Length+Width+Length+Bleed1, Bleed1)
Anchor 11 Vec(Length+Width+Length+Bleed1, Width+Bleed1)
Anchor 12 Vec(Length+Width+Bleed1, Width+Bleed1)
Anchor 13 Vec(Length+Width-Bleed1, Width+Bleed1)
Anchor 14 Vec(Length+Width-Bleed1, Bleed2)
Anchor 15 Vec(Length-Bleed1, Bleed2)
Anchor 16 Vec(Length-Bleed1, Bleed1)

End of Bleeds
--------------------------------------------------------------

Text Block

TextBlock contains Values for:

Length
Width
Depth
BlankSizeX
BlankSizeY

Values are formatted to 3 decimal points and have a double quote at end

V1  Length.toFixed(3) + "”"
V2   Width.toFixed(3) + "”"
V3   Depth.toFixed(3) + "”"

V4  BlankX.toFixed(3) + "”"
V5  BlankY.toFixed(3) + "”"

-----------------------------------------------------------------