Tuesday, April 19, 2016

membuat kotak bottom-lock dengan Adobe Illustrator scripts

Jumpa lagi para surfers, :). di blog sebelumnya saya sudah post tentang pembuatan AI script sederhana yang dapat bermanfaat membuat gambar kotak di AI. nah untuk selanjutnya saya mau bahas mengenai bagaimana pembuatan AI scripts untuk kotak bottom-lock, baik auto maupun manual akan saya bahas disini.

Kotak bottom lock merupakan kotak yang bagian bawahnya mengunci, tujuannya adalah agar dapat menahan beban yang lebih berat. Jenis bottom lock secara general dan yang biasa digunakan ada 2.
yaitu

1. bottom lock manual
aturan-aturan pembuatan kotak bottom lock sendiri tidak lah susah. Banyak versi aturan pembuatanya, akan tetapi secara general tetap sama. Bros dapat searching ke Google untuk mendapatkan aturannya. Saya coba jelaskan dengan pengertian saya sendiri.

 
keterangan :
"A" = jaraknya dapat disesuaikan dengan ukuran kotaknya, ketiga ukuran tersebut digambar harus sama, jika mau diberi kompensasi kertas juga boleh, asal tidak terlalu besar (0.25 - 0.5 mm, tergantung kertas yang dipakai)
gambar terlampir di atas merupakan aturan utama pembuatan kotak bottom lock, untuk jarak-jarak yang lain dapat disesuaikan dengan penggunaannya.

2. auto-bottom Lock
Aturan pembuatan auto-bottom lock ini sedikit lebih rumit daripada bottom lock manual.Perhitungan jaraknya juga harus presisi. agar pada saat kotak dibuka, bottom lock nya dapat mengunci dengan sempurna dan tanpa hambatan (setidaknya hambatanny bukan dari bentuk kotaknya)

untuk gambar dibawah yang dilingkari merah, bagian tersebut sebenarnya tidak ada aturan tetapnya, akan tetapi harus dibuat demikian agar saat melipat dan pengeleman lebih mudah.


Okay, demikian penjelasan singkat mengenai aturan pembuatan bottom-lock. Dengan ketentuan-ketentuan tersebut dapat kita definisikan kedalam scripts sebagai berikut :

untuk script variable-variable, rectangle, dan line dapat dilihat di-post saya sebelumnya di sini, hanya beberapa tambahan script saja yang akan saya bahas di sini.

1. round corner
Untuk membuat round corner sempurna, kita harus mengetahui posisi tangan curve dari titik atau path points tersebut. hitungannya cukup membingungkan dan ada kaitannya dengan rumus matematika untuk menghitung keliling lingkaran (kalo nggak salah, hahaha), untuk itu kita membutuhkan "function" supaya mudah memanggilnya kembali dan tidak berulang-ulang menghitungnya manual.
note function ini saya create sendiri akan tetapi rumusnya diambil dari penggalan script SATO Hiroyuki "circle.js".
Script ini dapat membuat lingkaran dengan jumlah pathPoints yang beragam (biasanya kalo lingkaran yang dibuat di Illustrator hanya 4 pathPoints). Jika circle.js nya tidak dapat dibuka, buka aja melalui AdobeEST.

function round_corner(x){
    var x;
    rc = (x*mp)*4/3*(1-Math.cos((Math.PI/2)/2))/Math.sin(((Math.PI/2)/2));
}



cara pakainya sebagai berikut :
round_corner(5); //jika round corner yg kita kehendaki berjari-jari 5mm
var kotak = utama.pathItems.add();
with (kotak.pathPoints.add()){
        anchor = [0, 0];
        rightDirection = [anchor[0], anchor[1]];
        leftDirection = [anchor[0],anchor[1]];
}

with (kotak.pathPoints.add()){
        anchor = [0, 10*mp];
        rightDirection = [anchor[0], anchor[1]+rc];
        leftDirection = [anchor[0],anchor[1]];
}

with (kotak.pathPoints.add()){
        anchor = [5*mp, 15*mp];
        rightDirection = [anchor[0], anchor[1]];
        leftDirection = [anchor[0]-rc,anchor[1]];
}

with (kotak.pathPoints.add()){
        anchor = [20*mp, 15*mp];
        rightDirection = [anchor[0]+rc, anchor[1]];
        leftDirection = [anchor[0],anchor[1]];
}

with (kotak.pathPoints.add()){
        anchor = [25*mp, 10*mp];
        rightDirection = [anchor[0], anchor[1]];
        leftDirection = [anchor[0],anchor[1]+rc];
}

with (kotak.pathPoints.add()){
        anchor = [25*mp, 0];
        rightDirection = [anchor[0], anchor[1]];
        leftDirection = [anchor[0],anchor[1]];
}
 

hasil script di atas adalah seperti gambar dibawah ini, dimana round corner tersebut berjari-jari 5mm sesuai dengan saat "round_corner(5);" dipanggil kembali dengan pemberian nilai 5.
Perlu diperhatikan bahwa function ini hanya memberi nilai kepada "rc" yang akan digunakan untuk menempatkan posisi tangan curve yang akan membuat round corner menjadi smooth pada saat jari-jarinya 5mm. Dan hal tersebut hanya dapat tercapai jika jarak antara kedua titik tersebut adalah 5mm x 5mm. akan tetapi jika jaraknya tidak 5mm x 5mm. maka curvenya tentu juga akan berbeda.
note. function dapat dipanggil berulang-ulang jika dibutuhkan untuk round corner dengan nilai yang berbeda, 

    
Perhatikan gambar dibawah ini jika nilai yang diberi tidak sesuai dengan jaraknya


 
gambar di atas menggunakan function "round_corner(10);" dengan jarak 5mm x 5mm.

2.  script round pada setiap sudut bottom lock.



 
sudut ini berfungsi untuk mencegak kotak mengoyak pada saat ditekuk ataupun pada saat dibuka menjadi kotak. ukurannya tergantung kertas yang dipakai, dan sudut ini hanya digunakan untuk kertas yang berukuran tebal (diatas 400gr).
untuk menghasilkan sudut yang smooth (tidak ada sudut-sudut siku yang nantinya akan menyulitkan pada saat pembuatan diecut manual maupun laser), maka dengan itu script ini diperlukan, scriptnya sebagai berikut :
note. script ini juga penggalan dari script SATO Hiroyuki "circle.js", dimana saya mengambil rumus SATO yang saya revisi sedikit agar menghasilkan lingkaran dengan pathPoint sebanyak 9 titik dalam 1/4 lingkaran.

mp = 2.834645731787465;

app.activeDocument.defaultStroked = true;
app.activeDocument.defaultStrokeWidth = 0.1*mp;
app.activeDocument.defaultFilled = false;

var utama = app.activeDocument.layers[0].testgambar.groupItems.add()

var loopx = -Math.sin(Math.PI/(2*(4/3)))*(Math.cos(Math.PI/(2*(4/3)))*(0.8*mp));
var loopy = -10 + (-Math.cos(Math.PI/(2*(4/3)))*(Math.cos(Math.PI/(2*(4/3)))*(0.8*mp))) + ((0.8*mp)/2);
var handle_length = ((0.8*mp) / 100 ) * 50 * 4/3 * (1- Math.cos(Math.PI /24)) / Math.sin(Math.PI / 24);
var handle = Math.PI/4;
var loopakhirx = 0;
var loopakhiry = 0;
var pslb1 = 0;

var tst = utama.pathItems.add();
with(tst.pathPoints.add()){
        anchor = [-2*mp, -5*mp];
        rightDirection = [anchor[0], anchor[1]];
        leftDirection = [anchor[0],anchor[1]];
    }

for (i=0;i<9;i++){   
    with(tst.pathPoints.add()){
        anchor = [loopx, loopy];
        rightDirection = [anchor[0]+(Math.sin(handle)*handle_length), anchor[1]+(Math.cos(handle)*handle_length)];
        leftDirection = [anchor[0]-(Math.sin(handle)*handle_length),anchor[1]-(Math.cos(handle)*handle_length)];
    }
    loopakhirx = loopx;
    loopakhiry = loopy;
    loopx = loopx + (Math.sin((Math.PI/24)+handle)*((Math.sin(Math.PI/24))*((0.8*mp))));
    loopy = loopy + (Math.cos((Math.PI/24)+handle)*((Math.sin(Math.PI/24))*((0.8*mp))));   
    handle = handle + Math.PI/24*2;
    pslb1 = loopx;
}
with(tst.pathPoints.add()){
        anchor = [1*mp, -6*mp];
        rightDirection = [anchor[0], anchor[1]];
        leftDirection = [anchor[0],anchor[1]];
    }


Penerapan script diatas bisa beragam, tergantung posisi round tersebut diperlukan. Demikian penambahan script yang diperlukan untuk membuat kotak bottom lock. script untuk bottom lock dapat di download dengan link di bawah ini.

untuk melihat hasil pembuatan script bisa check link youtube berikut ini.


Download.

4 comments:

  1. Have done for FEFCO 0201 box?

    ReplyDelete
  2. unable to download the script, could you please upload it again.
    Thanks

    ReplyDelete
    Replies
    1. Its been years since I open this blog, sorry.
      updated the link

      Delete
  3. unable to download the script, could you please upload it again.
    Thanks

    ReplyDelete