23 May, 2013

Mengenal Fungsi WHILE Pada Autolisp

041210_0331_MengenalFun1.png

Fungsi “while” hampir menyerupai fungsi “repeat”, tapi beda, kalau repeat fungsinya sudah jelas mengulang dengan sekian kali , tapi kalau while sangat beda dan lebih luas cara penggunaannya, fungsi while bisa di gabung pengunaanya dengan fungsi lain sehingga menjadi lebih efektif, para programer propesional sangat sering menggunakan fungsi while ini.

Gambar 1. Format utama dari fungsi while.

Kelebihannya bisa di pakai untuk mengulang, dari yang di batasai sampai yang tidak terbatas

Contoh pengulangan dengan batasan tertentu

Gambar 2. While untuk membuat daftar kordinat atau mengumpulkan.

Gambar 3. While ketika mencetak.

Gambar 4. Sama seperti gambar 3.

Contoh pengulangan yang tidak terbatas

Gambar 5. Pengulangan yang memakai while tak terbatas.

Contoh lain penggunaan while yang lebih luas

Gambar 6. Fungsi while di gabung dengan fungsi cond dan getstring.

Gambar 7. Fungsi while di gabung dengan cond, nul dan getdist.

Gambar 8. Fungsi while dengan progn, getdist, getpoint dll.

Mencari Kekeliruaan di Program DCL

041010_0331_MencariKeke1.png

“Saya coba memodifikasi program tersebut menjadi lebih detail namun gak bisa proses. Gambar tidak muncul di previewnya dan bila di OK programnya tidak membuat gambar…”

Anda bisa buka topik yang dibicarakan dan bisa mengunduh kode lisp, dcl maupun slide, pada kalimat di bawah ini

[url]http://forum.tentangcad.com/viewtopic.php?f=6&t=503[/url]

Kalimat paling atas sering di temui, ketika programer pemula membuat program Autolisp maupun DCL nya, keluhan tersebut adalah saya sunting dari sebuah topik yang di sampaikan oleh rekan kita, yaitu Bung “Pither”, saya bukan untuk mengekspos Bung Pither, tapi saya akan mempersembahkan buat semua pembaca tutorial ini, “cara mencari di mana letak kekeliruan” kode Autolisp maupun pada dclnya, hal ini paling sering di temui oleh programer pemula, sangat beruntung Bung Pither punya masalah “tidak” di telan sendiri, tetapi di lempar ke forum yang tepat sehingga saya bisa ikut memecahkan permasalahan yang di hadapinya. Kesulitan yang di hadapi oleh Bung Pither merupakan inspirasi buat saya lebih korektif melihat dan mencari kekeliruan pada setiap kode.

Pertama kita akan bahas dulu kode dclnya, mengapa kode dcl ini tidak bisa tampil ketika kode lisp sudah di panggil

Gambar 1. Sebuah kode dcl yang akan di cari kekeliruannya.

Langkah pertama buka editor Autolisp anda, lantas buka file dcl yang bernama “pondt.dcl” , arahkan kursor anda ke “Tools -> Interface Tools -> Preview DCL in Editor”, setelah itu akan tampil sebuah dialog box, lihat gambar di bawah ini dan coba perhatikan pada kotak editnya tidak tampil kode panggil dari kode dcl itu.

Gambar 2. Dialog box yang akan menampilkan kode panggil dcl.

Seharusnya kode panggil yang bernama “pondt” harus muncul di kotak edit, ini artinya ada ketidak beresan dengan kode panggil, atau memang pada kode nya sendiri ada yang tidak beres, maka kita coba lagi “Tools -> Interface Tools -> Preview DCL in Editor”, setelah muncul ketik “pondt”.

Gambar 4. Kata “pondt” sudah di ketik pada kotak edit.

Sekarang anda lakukan tekan tombol “OK” untuk melihat kejadian yang akan datang

Gambar 5. Dialog box yang menampilkan kekeliruan.

Ini artinya ada ketidak beresan pada akhir kode, mungkin tanda tutup “kurung kurawalnya” kurang atau keliru, kita lanjutkan dengan tekan tombol “OK”, maka akan muncul lagi dialog berikutnya.

Gambar 6. Dialog box lanjutan menampilkan kekeliruan.

Pada dialog box ini masih terjadi kekeliruan pada syntaxnya, mari kita koreksi kodenya.

Gambar 7. Kode dcl yang terdapat kekeliruan lihat tanda kotak merah bandingkan dengan gambar 1.

Mari kita kode pada gambar 7 kita eksekusi gimana hasilnya

Gambar 8. Kode panggil dcl langsung muncul dengan sendirinya.

Ternyata setelah di revisi kode pada gambar 1 diatas, ketika di eksekusi kode panggilnya langsung muncul tanpa kita melakukan pengetikan, ini artinya kode tersebut sudah bisa tampil.

Gambar 9. Tampilan dialog box dari kode gambar 7

Kita sekarang beralih ke kode lispnya

Gambar 10. Kode lisp yang di potong karena terlalu panjang

Gambar 11. Kode sambungan dari gambar 10

Gambar 12. Kode sambungan dari gambar 11.

Dari kode yang di tampilkan oleh gambar 10 s/d 12, kita eksekusi lihat hasilnya

Gambar 13. Hasil eksekusi dari kode lisp

Ternyata dialog sudah bisa tampil, tapi kenapa gambar “image” tidak muncul, ini artinya kode dcl maupun kode lispnya masih ada kekeliruan, mari kita koreksi

Pada kode dcl kita tambahkan kalimat ini, agar gambar image bisa tampil

“: radio_button {label = “Tampilkan”;key = “gbr”;}”

Lihat pada gambar 14 setelah kode di tambah kode tambahan.

Gambar 14. Lihat tanda kotak merah adalah kode tambahan.

Alihkan perhatian kita pada kode lispnya, lihat atau bandingkan gambar 10 dengan gambar 15 yang telah di revisi

Gambar 15 . Gambar 10 yang di revisi, lihat tanda kotak merah.

 

Gambar 16. Gambar image sudah muncul.

Ketik “pondt” pada command prompt maka akan muncul dialog gambar 16,di klik radio button “tampilkan” dan isi setiap kotak dengan data ini

Panjang = T1 = 1000

Lebar = T2″ = 800

Tebal = T3″ = 250

Panjang = K1 = 400

Lebar = K2 = 350

Pedestal Kolom = K4 =1500

Kedalaman Kolom = K3 = 600

Lapisan Pasir = L1 = 100

Lapisan Pemadatan = L2 = 200

Kemudian tekan tombol “Ok” dan lihat hasilnya

 

Gambar 17. Terjadi error saat eksekusi lisp di atas

 

Jalan satunya kita harus melakukan eksekusi baris perbaris atau manual, agar di ketahui letak kesalahan tiap barisnya, di blok lah gambar 10 mulai kalimat ini “(setq dcl_id (load_dialog “Pondt Revisi.DCL”))”, kemudian tekan “tombol selection”.

Di blok lagi pada di gambar di bawah in

Gambar 18.Contoh kode yang di blok

Gambar 19, Hasil kode yang di blok

Nah sekarang dengan cara manual sudah di ketahui letak kekeliruannya, ternyata terletak pada baris ke 7, coba anda perhatikan disana ada variable “T4″, yang tidak di ketahui asal usulnya sehingga kekeliruan program yang di buat oleh rekan kita sudah ketahuan.

Mengenal Fungsi OPERATORS Pada Autolisp

040810_0211_MengenalFun1.png

Apa sih “Operators”, yang pasti anda akan berpikiran lain, karena kata itu konotasinya lebih ke objek manusia, seperti operator mesin, radio atau yang lainnya. Tapi di program Autolisp kata “operator s” lebih menitik beratkan pada sejumlah fungsi matematis, diantaranya perkalian, penjumlahan, pembagian dan pengurangan serta yang lainnya.

Gambar 1. Sejumlah fungsi operators pada program Autolisp.

Yang biasa menjalankan atau menggunakan program VBA, kalau melihat fungsi operators di program Autolisp, selalu bilang bikin pusing ketika menjalankan perhitungan matematisnya, memang betul karena fungsi matematis di program VBA dengan di program Autolisp sangat beda, di program VBA kalau kita ingin membuat perkalian sebagai contoh sangat mudah, tapi kalau di program Autolisp bentuknya akan di balik, hal inilah yang kurang di sukai oleh programer yang biasa menjalankan VBA.

Gambar 2. Perbedaan bentuk perkalian antara VBA dan Autolisp.

Pada program Autolisp semua fungsi operators (tambah, bagi, perkalian dll) selalu di tempatkan di depan variablenya (angka), tapi kalau anda sudah biasa menjalankan program Autolisp, menemui hal itu bukan suatu masalah jadi prinsipnya tergantung kebiasaan anda program apa yang anda jalankan.

Contoh fungsi operator yang di gunakan.

Gambar 3. Fungsi tambah, kurang, kali dan bagi.

Gambar 4. Bentuk fungsi persamaan atau lebih besar, kecil dan lainnya.

Gambar 5. Bentuk bitwise serta penabahn/ pengurangan.

Mengenal Fungsi CAR, CADR, CADDR dan CDR Pada Autolisp

040710_1311_MengenalFun1.png

Salah satu fungsi untuk mengurai data atau daftar (list) adalah dengan fungsi “Car”, car adalah singkatan untuk “Contents of the Address Register”, selain car masih ada fungsi lain yaitu “cadr”,”caddr” serta masih banyak anakan dari ketiga kode tersebut .

Gambar 1. Fungsi car,cadr,caddr dan cdr serta hasilnya.

Car bila di fungsikan pada sebuah daftar (list) akan di dapat daftar pertama dari daftar tersebut.

Cadr bila di fungsikan pada sebuah daftar (list) akan di dapat daftar kedua dari daftar tersebut.

Caddr bila di fungsikan pada sebuah daftar (list) akan di dapat daftar ketiga dari daftar tersebut.

Cdr bila di fungsikan pada sebuah daftar (list) akan di dapat daftar kedua dan seterusnya dari daftar tersebut, atau daftar pertama tidak di tampilkan.

Contoh lain yang di dapat dari sumber lain.

Gambar 2. Contoh car dan turunannya serta hasilnya.

Pemahaman terhadap car,cadr,caddr maupun cdr masih mudah di pahami (lihat gambar 1), tapi kalau sudah mengarah kepada turunannya akan lebih ngejelimet, lihat gambar 3 sebelah kiri namun untuk memudahkan arti lebih luas anda bisa lihat sebelah kanannya.

Gambar 3. Equivalent antara car dan uraiannya.

Fungsi car dan cdr bisa membuat turunannya sampai 4 level

Gambar 4. Car dengan turunannya.

 

Mengenal Fungsi GETKWORD Pada Autolisp

040710_0124_MengenalFun1.png

Getkword adalah sebuah fungsi untuk memasukin data dengan di gabung fungsi initget dan di kontrol oleh batasan bit, artinya bila anda menggunakan fungsi ini, maka data yang akan di masukin sudah di set sedemikian rupa, bila memasukin data di luar batasan maka hasilnya akan “Invalid option keyword.”, biasanya fungsi getkword terlebih dahulu di ikuti oleh fungsi “initget”, fungsi ini akan mengontrol terhadap fungsi getkword, fungsi initget selalu di ikuti sebuah nilai bit, nilai bit dengan angka tertentu akan membatasi pemakai memasukin data di luar dari ketentuan initget tadi.


Gambar 1. Format utama dari fungsi getkword.


Gambar 2. Fungsi getkword yang di ikuti oleh fungsi initget.

Nilai bits dengan ketentuannya.

Kode bit akan mengijinkan atau tidak mengijinkan terhadap pemakai ketika memasukin input data, bit bisa ditambahkan bersama yang lain untuk mendapatkan nilai kombinasi dari mulai nilai 0 s/d 255, jika nilai bit tidak di sertakan asumsinya tanpa kondisi.

1 (bit 0)  Mencegah pemakai menekan tombol enter.

2 (bit 1)  Mencegah pemakai menekan tombol nol.

4 (bit 2)  Mencegah pemakai memasukan nilai negatif.

8 (bit 3)  Mengijinkan ke pemakai untuk memasukan sebuah titik di luar batasan gambar, kondisi bisa di pergunakan untuk fungsi pemasukan yang akan datang dari pemakai, jika variable “limcheck” di set ke yang berlaku.

16 (bit 4)  tidak di gunakan.

32 (bit 5)  Menggunakan garis dashed ketika menggambar sebuah garis rubber band atau kotak, Untuk itu fungsi ini pemakai dapat memilih sebuah titik yang terpilih lokasinya di area gambar, nilai bit ini menyebabkan garis rubber band atau kotak menjadi dashed sebagai pengganti solid. (beberapa tampilan drivers di gunakan khusus membedakan warna sebagai pengganti garis dashed, jika systim variable POPUPS adalah 0, AutoCAD akan mengabaikan bit itu.

64 (bit 6)  Melarang memasukan input kordinat Z pada fungsi getdist, sebuah aplikasi akan menjamin fungsi ini kembali ke nilai 2D.

128 (bit 7)  Mengijinkan bebas data input jika itu sebagai kunci kata, sebagai penghotmatan terhadap kontrol bit yang lain dan kata kunci yang terdaftar. Bit ini lebih di utamakan di atas bit 0, jika bit 7 dan 0 di set maka pemakai cukup tekan tombol enter, maka akan di hasilkan sebuah kalimat batal.

 

 

CATATAN : Masa yang akan datang atau ke depannya versi Autolisp mungkin akan menggunakan initget kontrol bit, untuk mencegah setting yang tidak terdaftar.

 

Contoh fungsi getkword dengan fungsi initget dan fungsi lainnya.


Gambar 3. Fungsi getkword di gabung dengan fungsi lain.

 

Contoh lain


Gambar 4. Fungsi initget dengan nilai kode 1.