Menggambar Ukuran Kertas A4 dengan Perintah Fungsi Command
Metode untuk menggambar dengan autolisp :
1. Metode "command", metode ini paling mudah digunakan. Dalam pembuatan codenya seperti menggambar dengan memasukkan perintah-perintah pada command prompt.
2. Metode "activex", metode ini menggunakan cara-cara seperti dalam visual basic application.
3. Metode "entmake", metode ini langsung dengan mengubah data base Bricscad/ Autocad
Untuk menggambar garis persegi panjang sesuai ukuran keras meskipin kelihatan sederhana, pembuatan program ini nantinya akan banyak menggunakan fungsi-fungsi yang ada di autolisp. Disini akan digunakan cara bertahap, dari yang paling mudah terlebih dahulu kemudian bertahap ke yang lebih komplek. Untuk membuat gambar dengan autolisp diperlukan pemahaman cara menggambar sesuai prosedur baku penggambaran dalam Bricscad/ Autocad. Jadi bagi para pengguna Bricscad/ Autocad yang belajarnya secara praktis silahkan baca-baca materi menggambar Autocad dari dasar (yang isinya koordinat UCS danWCS, input kooordinat secara relatif maupun absolut, perintah membuat objek/ entity dengan urutan perintah serta opsi-opsinya)
Ukuran kertas A4 : 297mm x 210mm
Fungsi Command
Fungsi command berfungsi menjalankan perintah Bricscad/ Autocad
Format fungsi command di BricsCAD V22 - Developer Reference adalah sebagai berikut :
(command [ item1 [ item2 ... ]]
)
item1 : perintah atau opsi BricsCAD asli apa pun, atau ekspresi Lisp apa pun yang valid
item2 : perintah atau opsi BricsCAD asli apa pun, atau ekspresi Lisp apa pun yang valid
Karena fungsi command bekerja dengan berinteraksi dengan Bricscad/ Autocad maka saat menjalankan program opsi entity snap (ESNAP di Bricscad/ OSNAP di Autocad) perlu dimatikan semua. Daripada mematikan ESNAP setiap kali mau menjalankan program, maka proses mematikan/menghidupkan dilakukan didalam program. Fungsi yang digunakan adalah fungsi setvar dan getvar.
Format fungsi setvar di BricsCAD V22 - Developer Reference adalah sebagai berikut :
(setvar sysvar value)
Format fungsi getvar di BricsCAD V22 - Developer Reference adalah sebagai berikut :
(getvar sysvar)
sysvar : string atau simbol, yaitu nama variabel sistem, untuk ESNAP adalah "OSMODE"
value : nilai yang akan diberikan (integer, string, double, ...), bergantung pada SystemVariable tertentu
Untuk memudahkan prosedur penggambaran titik awal penggambaran dimulai dari titik 0,0 dan untuk sekarang setiap penggambaran satu ukuran kertas akan dijalankan dengan satu perintah :
Kertas A4,
titik ke-1 : 0,0
titik ke-2 : 297,0
titik ke-3 : 297,210
titik ke-4 : 0,210
Cara 1
Cara ini langsung memasukkan koordinat sebagai teks biasa. dengan tipe objek garis/ line, dan menggunakan acuan koordinat absolut.
codenya adalah sebagai berikut :
(defun c:ka4( / oldos)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(command "line" "0,0" "297,0" "297,210" "0,210" "0,0" "")
(setvar "osmode" oldos)
(princ))
untuk mengakhiri perintah line dengan "" yang sama dengan menekan tombol [enter]
bisa juga dengan menyimpan titik-titik tersebut kedalam sebuah variabel
(defun c:ka4( /
oldos ttk1 ttk2 ttk3 ttk4)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq ttk1 "0,0"
ttk2 "297,0"
ttk3 "297,210"
ttk4 "0,210")
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
(setvar "osmode" oldos)
(princ)
)
Cara 2
Cara ini langsung memasukkan koordinat sebagai teks biasa. dengan tipe objek garis/ line, dan menggunakan acuan koordinat relatif.
codenya adalah sebagai berikut :
(defun c:ka4(
/
oldos)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(command "line" "0,0" "@297,0" "@0,210" "@-297,0" "@0,-210" "")
(setvar "osmode" oldos)
(princ)
)
tentu saja nilai-nilai relatif ini bisa saja disimpan dalam variabel, tetapi karena sifatnya relatif mungkin penamaan variabelnya agar mudah dibaca seperti ini....
(defun c:ka4( /
oldos awal kekanan297 keatas210 kekiri297 kebawah210)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq awal "0,0"
kekanan297 "@297,0"
keatas210 "@0,210"
kekiri297 "@-297,0"
kebawah210 "@0,-210")
(command "line" awal kekanan297 keatas210 kekiri297 kebawah210 "")
(setvar "osmode" oldos)
(princ)
)
Cara 3
Cara ini dengan memasukkan koordinat sebagai data list. dengan tipe objek garis/ line.
List adalah format dasar dalam autolisp, bahkan program Autolisp sendiri adalah List. (Lisp adalah singkatan dari List Processing). Titik koordinat dalam Bricscad/Autocad dalam Autolisp bisa berupa titik 2D maupun 3D.
2D -> (x y)
3D -> (x y z)
Untuk tipe garis data titiknya boleh 2D maupun 3D.
codenya adalah sebagai berikut :
(defun c:ka4( /
oldos )
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(command "line" '(0 0) '(297 0) '(297 210) '(0 210) '(0 0) "")
(setvar "osmode" oldos)
(princ)
)
atau
(defun c:ka4( /
oldos ttk1 ttk2 ttk3 ttk4)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq ttk1 '(0 0)
ttk2 '(297 0)
ttk3 '(297 210)
ttk4 '(0 210) )
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
(setvar "osmode" oldos)
(princ)
)
Selanjutnya untuk titik akan digunakan format list, karena memang nantinya fungsi-fungsi dalam Autolisp adalah memanipulasi data list.
Untuk menggambar dititik yang lain perlu dihitung lagi titik-titiknya, misal jika dimulai dari titik 150,150 codenya menjadi seperti berikut :
(defun c:ka4( /
oldos ttk1 ttk2 ttk3 ttk4)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq ttk1 '(150 150)
ttk2 '(447 150)
ttk3 '(447 360)
ttk4 '(150 360) )
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
(setvar "osmode" oldos)
(princ)
)
Pada materi kali ini sengaja dibuat dengan perintah yang sederhana dan statis, tetapi dibuat dengan banyak cara dengan harapan ada pemahaman bahwa untuk membuat program dengan hasil akhir yang sama ada banyak cara. Cara mana yang paling baik? Tentu saja tergantung......
Pada materi berikutnya program akan dibuat lebih interaktif.