PEMBAHASAN I PENGENALAN
AutoLISP merupakan salah satu API (Application Programming Interface) yang terdapat pada AutoCAD. Bahasa pemrograman yang satu ini sangat dikenal oleh para pengguna AutoCAD pada khususnya dikarenakan ukuran file yang dihasilkan tergolong kecil. Dimana bahasa ini terdiri dari beberapa list untuk membentuk sebuah objek. Sehingga LISP dikatakan sebagai List Processing ataupun List Programming. Untuk mempelajari AutoLISP ada beberapa hal dasar yang harus diketahui dimana didalam pemrograman AutoLISP akan selalu terdapat : 1. Tanda buka kurang atau parenthesis “(“ “)” (defun c:hi () (alert "Apa Kabar") (princ) ) 2. Variables. Dimana variable merupakan sebuah penamaan atau pendefinisian dari sebuah data. Contoh : (setq udaaf “Afrizanirman”) 3. Functions. Dimana function ini berfungsi untuk pendefinisian satu function baru atau command baru yang dapat dijalankan di AutoCAD. Penulisan dapat dibagi menjadi beberapa bagian. Contoh : (defun ATC () atau (defun c:ATC (). Berikut contoh penulisannya : (defun ATC () (princ "Authorized Training Center") (Princ) ) Maka di command harus kita ketik seperti terlihat pada gambar dibawah ini :
dan kita pun dapat menuliskan seperti ini : (defun C:ATC () (princ "Authorized Training Center") (Princ) ) Maka di command prompt kita ketik seperti terlihat pada gambar dibawah ini :
Jadi yang membedakannya adalah perintah masukan untuk mengeksekusi functions 4. Data Types. AutoLISP membagai data menjadi beberapa tipe antara lain : ◦ String. Type data ini terdiri dari karakter alphanumeric yang terdapat dalam tanda quote “ “. Contoh : “Afrizanirman” “iDraf” “17 Agustus 1945” ◦ Integers. Type data ini terdiri dari angka yang tidak terdapat tanda koma dibelakangnnya. Contoh : 1
23
456
-1
-23
-456
◦ Real. Type data ini terdiri dari angka yang terdapat tanda koma dibelakangnnya. Contoh : 1.1 1.2345
-21.0679
-1.02345
◦ List. Type data ini merupakan kombinasi dari beberapa data yang terdapat dalam tanda buka kurung/parenthesis. Contoh : (410 . "Model")
(11 2870.68 1103.34 0.0)
(2870.68 1103.34 0.0)
◦ File Descriptor. Type data ini digunakan untuk mengakses data file luar baik digunakan untuk membaca atau menulis data. Contoh :
◦ Selection Set. Type data ini digunakan untuk pendifinisan objek terpilih. Contoh : <Selection set: c>
Untuk program pertama kita akan mencoba membuat sebuah program sederhana dengan contoh code seperti keterangan dibawah ini :
Gunakan CTRL+A untuk memilih seluruh code. Dan gunakan CTRL+SHIFT+E untuk me-load code. Kemudian ketikan pakabar pada command prompt.
PEMBAHASAN II FUNCTION
Pada pemrograman AutoLISP banyak sekali functions yang bisa digunakan. Akan tetapi untuk materi kali ini kita hanya membahas functions dasar yang seringkali digunakan pada saat pembuatan program. Adapun function yang akan dipelajari adalah : 1. User input functions 2. List Function 3. Number functions 4. Math functions 5. String functions 6. Selecting Entities 7. Selection Set Functions 8. Entity Functions 9. File Functions 10. Group Codes/Associated List 11. DXF Group Code Table 2.1.
User Input functions Ada beberapa function yang digunakan sebagai input masukan data diantaranya getint, getkword, getorient, getpoint, getreal dan getstring •
getint getint berfungsi untuk mengambil input data berupa nilai interger syntax(cara penulisan) sebagai berikut : (getint [msg]) contoh : (setq nilai (getint “\nSilahkan Masukan 'ilai Integer:”))
•
getkword
getkword berfungsi untuk membuat pilihan menggunakan kata kunci. Dan syntax(cara penulisan) sebagai berikut : (getkword [msg]) contoh : (initget 1 "Radius Diameter") (setq x (getkword "Pilih Input Masukan? (Radius or Diameter) ")) •
getpoint getpoint berfungsi untuk mendapatkan nilai koordinat dari titik pemilihan. syntax(cara penulisan) sebagai berikut : (getpoint [msg]) contoh : (setq pt (getpoint "\nTentukan titik pemilihan: "))
•
getorient getorient berfungsi mendapatkan nilai sudut dalam satuan radian berdasarkan 2 buah point atau titik. syntax(cara penulisan) sebagai berikut : (getorient [pt] [msg]) contoh : (setq pt1 (getpoint "\nTentukan Titik Pertama:") sudut (getorient pt1 "\nTentukan Titik Kedua:") ) (alert (strcat "sudut yang tebentuk adalah" " "(angtos sudut 3 3) " " "radian"))
•
getreal getreal berfungsi untuk mengambil input data berupa nilai real syntax(cara penulisan) sebagai berikut : (getreal [msg]) contoh : (setq nilai (getreal “\nSilahkan Masukan 'ilai Real:”))
•
getstring getstring berfungsi untuk mengambil input data berupa nilai string syntax(cara penulisan) sebagai berikut : (getrstring [msg]) contoh : (setq nama (getstring “\nSilahkan Masukan 'ama Anda:”))
Setelah kita mempelajari fungsi diatas maka kita akan mencoba membuat sebuah program sederhana untuk membuat sebuah flange seperti tampak pada gambar dibawah ini :
Kalau kita perhatikan disana terdapat 8 data yang kita butuhkan. Antara lain : Dia.dalam, Dia. Luar, PCD, Sudut awal, Jumlah Lubang, Diameter lubang, titik peletakan center flange dan titik peletakan lubang. Hampir secara keseluruhan program yang akan kita buat adalah menggunakan input masukan hanya titik peletakan lubang yang memerlukan sedikit pengolahan data. Maka code yang akan kita buat seperti tampak pada keterangan dibawah ini :
2.2.
List Function Fungsi ini digunakan untuk mengolah data variable berupa list. Berikut beberapa fungsi List yang sering digunakan. •
Car Car digunakan untuk mengambil data pertama dari sebuah list. Contoh (setq L1 (list 1 2 3)) (setq X (car L1)) Pada varibale L1 akan terbentuk menjadi sebuah list yaitu (1 2 3). Dan pada
variable X akan menghasilkan nilai 1. Karena nilai pertama dari L1 adalah 1 •
Cdr Cdr digunakan untuk mengambil semua data dari sebuah list kecuali data pertama. Contoh (setq L1 (list 1 2 3)) (setq X (cdr L1)) Pada varibale L1 akan terbentuk menjadi sebuah list yaitu (1 2 3). Maka variable X akan menghasilkan nilai (2 3)
•
Cadr Cadr digunakan untuk mengambil data kedua dari sebuah list. Contoh (setq L1 (list 1 2 3)) (setq X (cadr L1)) Pada varibale L1 akan terbentuk menjadi sebuah list yaitu (1 2 3). Maka variable X akan menghasilkan nilai (2)
•
Caddr Caddr digunakan untuk mengambil data ketiga dari sebuah list. Contoh (setq L1 (list 1 2 3)) (setq X (caddr L1)) Pada varibale L1 akan terbentuk menjadi sebuah list yaitu (1 2 3). Maka variable X akan menghasilkan nilai (3)
•
Caar Caar digunakan untuk mengambil data pertama di list pertama dari beberapa list. Contoh (setq L1 (list '(4 5 6) '(1 2 3))) (setq X (caar L1)) Pada varibale L1 akan terbentuk menjadi sebuah list yaitu ((4 5 6) (1 2 3)). Maka
variable X akan menghasilkan nilai (4) •
Cddr Cddr digunakan untuk mengambil semua list setelah list kedua dari beberapa list. Contoh (setq L1 (list '("Af" "RI") '("ZA" "'IR") '("M" "A" "'") '(21 06 79))) (setq X (cddr L1)) Pada varibale L1 akan terbentuk menjadi sebuah list yaitu (("Af" "RI") ("ZA" "NIR") ("M" "A" "N") (21 6 79)) . Maka variable X akan menghasilkan nilai (("M" "A" "N") (21 6 79))
•
Foreach Foreach digunakan untuk mengevaluasi nilai dari list yang ada akan tetapi nilai yang dihasilkan adalah evaluasi terakhir dari list yang ada. Syntax sebagai berikut (foreach var'ame list [expr...]) Contoh (foreach afri '(1 2 3) (setq x afri)) afri sebagai nama variable. '(1 2 3) adalah list yang akan dievaluasi nilai x adalah 3 karena merupakan nilai terakhir dari list yang dievaluasi
•
List List digunakan untuk membuat sebuah list Syntax sebagai berikut (list [expr...]) Contoh (list 1 2 3) akan menghasilkan (2 3 4) (list “Af” “ri”) akan menghasilkan ("Af" "ri") (list (1'(2 3))) akan menghasilkan (1 (2 3))
•
Cons Cons digunakan untuk membuat sebuah list dengan mengambil element pertama untuk membuat list atau membuat list yang terdapat tanda titik (dot list) Syntax sebagai berikut (cons new-first-element list-or-atom) Contoh (cons 0 "Line") akan menghasilkan (0 . "Line") (cons 'a '(b c d)) akan menghasilkan (A B C D) (cons 'a 2) akan menghasilkan (A . 2)
•
Nth Nth digunakan untuk mencari nilai ke n dari sebuah list. Hitungan n dimulai dari nilai 0 Syntax sebagai berikut (nth n lst) Contoh (nth 0 (list 1 2 3 4 5 6)) akan menghasilkan 1 (nth 4 (list "Af" "Ri" "Za" "'ir" "Man")) akan menghasilkan “Man”
Di sub penjelasan kali ini kita akan coba membuat sebuat program sederhana untuk membuat kotak seperti tampak pada gambar dibawah ini :
Kalau kita lihat dari gambar kotak yang ada maka kita memerlukan data berupa panjang dan lebar kotak. Dari data tersebut nantinya akan diolah hingga mendapatkan nilai untuk point PT1, PT2, PT3 dan PT4. Data-data point akan kita olah menggunakan fungsi list kecuali data PT1 menggunakan fungsi user-input. Maka code pemrograman akan tampat seperti keterangan dibawah ini :
2.3.
Number Function Fungsi ini digunakan untuk mengolah data numeric untuk di convert ke jenis data yang
lain. •
Abs abs berfungsi untuk merubah nilai menjadi absolute atau selalu bernilai positif. Syntax : (abs number) contoh : (abs -234) akan menghasilkan nilai 234
•
atoi atoi berfungsi untuk merubah nilai string menjadi integer Syntax : (atoi “string”) Contoh : (atoi “2.34”) akan menghasilkan nilai 2 (atoi “ “) akan menghasilkan nilai 0
•
itoa itoa berfungsi untuk merubah nilai integer menjadi string Syntax : (itoa integer) Contoh : (itoa 234) akan menghasilkan nilai “234” (itoa 5) akan menghasilkan nilai “5”
•
atof atof berfungsi untuk merubah nilai string menjadi real Syntax : (atof “string”) Contoh : (atof “30”) akan menghasilkan nilai 30.0
•
fix fix berfungsi untuk merubah nilai real menjadi integer Syntax : (fix real)
Contoh : (fix 10.9) akan menghasilkan nilai 10 •
float float berfungsi untuk merubah nilai real atau integer menjadi real Syntax : (float real) (float integer)
•
Rtos rtos befungsi untuk merubah nilai real menjadi string Syntax : (rtos number [mode [precision]]) Mode : 1 Scientific 2 Decimal 3 Engineering (feet and decimal inches) 4 Architectural (feet and fractional inches) 5 Fractional Contoh : (rtos 30.12345 2 3) maka akan menghasilkan "30.123"
•
angtos angtos befungsi untuk merubah nilai sudut dalam radian menjadi string Syntax : (angtos angle [unit [precision]]) unit : 0 -- Degrees 1 -- Degrees/minutes/seconds 2 -- Grads 3 -- Radians 4 -- Surveyor's units Contoh :
(angtos 0.785398 0 2) maka akan menghasilkan "45"
2.4.
Math Function Fungsi ini digunakan untuk mengolah data numeric dengan rumus matematika. •
+ (addition) addition berfungsi untuk melakukan fungsi penjumlahan Syntax : (+ number number) contoh : (+ 2 3 4) akan menghasilkan nilai 9
•
- (substraction) subsctraction berfungsi untuk melakukan fungsi pengurangan Syntax : (- number number) contoh : (- 2 3 ) akan menghasilkan nilai -1
•
/ (division) division berfungsi untuk melakukan fungsi pembagian Syntax : (/ number number) contoh : (/ 4 2 ) akan menghasilkan nilai 2
•
* (multiplication) multiplication berfungsi untuk melakukan fungsi pengalian Syntax : (* number number) contoh : (* 4 2 ) akan menghasilkan nilai 8
•
* (multiplication) multiplication berfungsi untuk melakukan fungsi pengalian
Syntax : (* number number) contoh : (* 4 2 ) akan menghasilkan nilai 8 •
cos cos berfungsi untuk menghasilkan nilai cosine dari sebuah sudut bersatuan radian Syntax : (cos number) contoh : (cos 0 ) akan menghasilkan nilai 1.0
•
sin sin berfungsi untuk menghasilkan nilai sinus dari sebuah sudut bersatuan radian Syntax : (sin number) contoh : (cos 0 ) akan menghasilkan nilai 0.0
•
sqrt sqrt berfungsi untuk melakukan fungsi pengakaran Syntax : (sqrt number) contoh : (sqrt 4 ) akan menghasilkan nilai 2.0
•
expt expt berfungsi untuk melakukan fungsi pangkat Syntax : (expt number power) contoh : (expt 2 2 ) akan menghasilkan nilai 4 (expt 2 3) akan menghasilkan nilai 8
Berikut sebuah contoh hasil pengolahan number function dan math function. Misal kita ingin menghitung sisi diagonal dari sebuah segitiga seperti tampak pada gambar dibawah ini
:
Maka code yang kita tuliskan adalah seperti tampak pada keterangan dibawah ini :
2.5.
String Function Fungsi ini digunakan untuk mengolah data string. Berikut beberapa fungsi string yang sering digunakan. Berikut beberapa fungsi string
•
Substr substr berfungsi untuk mengambil sebagian data dari sebuah string Syntax : (substr string start [length]) contoh : (substr "Afrizanirman" 1 4) akan menghasilkan “Afri”
•
Strcase strcase berfungsi untuk mengubah string menjadi huruf besar atau huruf kecil Syntax : (strcase string flag) untuk flag terdapat dunia nila jika kita pilih T maka semua string akan berubah menjadi huruf kecil. Kalau nil akan berubah menjadi huruf besar contoh : (strcase "AfriZanirmaN" T) akan menghasilkan "afrizanirman" (strcase "AfriZanirmaN" nil) akan menghasilkan "AFRIZANIRMAN"
•
Strlen strlen berfungsi untuk menghitung jumlah huruf pada sebuah string Syntax : (streln string) contoh : (strlen "AfriZanirmaN") akan menghasilkan nilai 12 (strlen "AfriZanirmaN") akan menghasilkan nilai 14
•
Strcat strcat berfungsi untuk menggabungkan beberapa string menjadi satu string Syntax : ((strcat [string[string]...]) contoh : (strcat "Afri" "Zanir" "maN") akan menghasilkan "AfriZanirmaN"
2.6.
Selecting Entities
Fungsi ini berguna untuk memilih entity di area gambar. Baik pemilihan satu persatu ataupun secara berkelompok. Berikut beberapa fungsi pemilihan object •
entsel entsel digunakan untuk memilih satu objek pada area gambar Syntax : (entsel) Contoh : (entsel “\nSilahkan Pilih Objeck:”) maka akan menghasilkan (<Entity name: 7ef03540> (2064.41 1253.42 0.0))
•
ssget ssget digunakan untuk mengambil lebih dari satu objek pada area gambar Syntax : (ssget) Syntax : (ssget sel-methode) sel-methode : “W” = pemilihan dengan cara windows selection “C” = pemilihan objek dengan cara cross selection “L” = pemilihan objek yang terakhir kali dibuat “P” = memilih kembali objek yang terakhir kali dipilih “X” = untuk memilih semua entity Syntax : (ssget filter_List) atau (ssget mode filter_List) Contoh : (setq edat (ssget "X" (list (cons 0 "LINE")))) hasil <Selection set: 16> variable diatas digunakan untuk memilih semua objek line yang berada pada area gambar.
Perhatikan contoh program dibawah ini :
2.7.
Selection Set Functions Fungsi ini digunakan untuk mengolah lebih lanjut data hasil dari fungsi selecting entities. Berikut berbagai fungsi dari Selection Set Functions •
ssadd ssadd digunakan untuk mencatat/mengambil data pemilihan dari fungsi selecting entities dan data tersebut dapat dibuatkan variable baru. Syntax : (ssadd) | (ssadd entity'ame) | (ssadd entity'ame SS) entity'ame adalah variable yang dihasilkan dari fungsi ssname atau entsel SS adalah variable yang dihasilkan dari fungsi ssget contoh : (setq ss (ssadd)) hasil <Selection set: 3>
•
ssdel ssdel digunakan untuk membuang objek pemilihan atau kebalikan dari fungsi ssadd Syntax : (ssdel entity'ame SS)
•
sslength sslength digunakan untuk menghitung jumlah pemilihan objek dari fungsi ssget. Syntax : (sslength ss) contoh : (setq ss (ssget "X")) ; misal objek yang terdapat didalam gambar 1 (setq entQty (sslength ss)) ; menghasilkan nilai 1
•
ssname ssname digunakan untuk mengambil nama entity dari hasil pemilihan objek menggunakan ssget Syntax : (ssname ss index) contoh : (setq ss (ssget "_X")) hasil <Selection set: 11> (setq ename (ssname ss 0)) hasil <Entity name: 7ef03548>
Berikut contoh pemrograman gabungan antara selecting entities dengan selection set untuk memeriksa dimensi yang sudah diganti (override).
2.8.