Program di upgrade agar bisa menggambar berbagai ukuran kertas, misal :
Ukuran kertas A4 : 297mm x 210mm
Ukuran kertas A3 : 420mm x 297mm
Ukuran kertas A2 : 594mm x 420mm
Ukuran kertas A1 : 840mm x 594mm
Jika kecepatan kerja yang diinginkan, program ini lebih baik dibuat untuk masing kertas-kertas, misalnya seperti ini :
(defun c:ka4( / oldos panjang lebar ttk1 ttk2 ttk3 ttk4 koorx koory)
(setq oldos (getvar "OSMODE"))
(setvar "OSMODE" 0)
(setq panjang 297)
(setq lebar 210)
(setq ttk1 (getpoint "Tentukan titik sisip kertas..."))
(setq koorx (car ttk1))
(setq koory (car (cdr ttk1)))
(setq koorx (+ koorx panjang))
(setq ttk2 (list koorx koory))
(setq koory (+ koory lebar))
(setq ttk3 (list koorx koory))
(setq koorx (- koorx panjang))
(setq ttk4 (list koorx koory))
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
(setvar "OSMODE" oldos)
(princ)
)
(defun c:ka3( / oldos panjang lebar ttk1 ttk2 ttk3 ttk4 koorx koory)
(setq oldos (getvar "OSMODE"))
(setvar "OSMODE" 0)
(setq panjang 420)
(setq lebar 297)
(setq ttk1 (getpoint "Tentukan titik sisip kertas..."))
(setq koorx (car ttk1))
(setq koory (car (cdr ttk1)))
(setq koorx (+ koorx panjang))
(setq ttk2 (list koorx koory))
(setq koory (+ koory lebar))
(setq ttk3 (list koorx koory))
(setq koorx (- koorx panjang))
(setq ttk4 (list koorx koory))
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
(setvar "OSMODE" oldos)
(princ)
)
(defun c:ka2( / oldos panjang lebar ttk1 ttk2 ttk3 ttk4 koorx koory)
(setq oldos (getvar "OSMODE"))
(setvar "OSMODE" 0)
(setq panjang 594)
(setq lebar 420)
(setq ttk1 (getpoint "Tentukan titik sisip kertas..."))
(setq koorx (car ttk1))
(setq koory (car (cdr ttk1)))
(setq koorx (+ koorx panjang))
(setq ttk2 (list koorx koory))
(setq koory (+ koory lebar))
(setq ttk3 (list koorx koory))
(setq koorx (- koorx panjang))
(setq ttk4 (list koorx koory))
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
(setvar "OSMODE" oldos)
(princ)
)
(defun c:ka1( / oldos panjang lebar ttk1 ttk2 ttk3 ttk4 koorx koory)
(setq oldos (getvar "OSMODE"))
(setvar "OSMODE" 0)
(setq panjang 840)
(setq lebar 594)
(setq ttk1 (getpoint "Tentukan titik sisip kertas..."))
(setq koorx (car ttk1))
(setq koory (car (cdr ttk1)))
(setq koorx (+ koorx panjang))
(setq ttk2 (list koorx koory))
(setq koory (+ koory lebar))
(setq ttk3 (list koorx koory))
(setq koorx (- koorx panjang))
(setq ttk4 (list koorx koory))
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
(setvar "OSMODE" oldos)
(princ)
)
Biasanya untuk perintah-perintah yang jarang digunakan jika harus mengingat banyak perintah membuat tidak nyaman, dan secara memori komputer tidak efisien (sekarang mungkin tidak masalah ya, karena program Autolsip dibanding RAM komputer jaman sekarang).
Disini akan dibuat program alternatif untuk membuat keempat program di atas menjadi satu perintah aja, nanti didalamnya pengguna diminta memilih opsi ukuran kertas yang digunakan.
Fungsi-fungsi tambahan yang akan digunakan adalah:
Fungsi Initget
Fungsi ini menentukan kata kunci yang tersedia (fungsi (entsel) (getangle) (getcorner) (getdist) (getint) (getkword) (getorient) (getpoint) (getreal) (getstring) (nentsel) (nentselp) ) untuk input pengguna berikutnya.
format fungsi initget pada BricsCAD V22 - Developer Reference :
(initget [ bitflags ] [ keywords ] )
bit 0 = 1 : jika disetel, tidak mengizinkan input kosong
bit 1 = 2 : jika disetel, tidak mengizinkan nilai 0 sebagai input
bit 2 = 4 : jika disetel, tidak mengizinkan nilai negatif sebagai input
bit 3 = 8 : jika disetel, titik di luar batas gambar diterima (abaikan pengaturan LIMCHECK)
bit 5 = 32 : jika disetel, menggunakan garis karet pada kursor mouse
bit 6 = 64 : jika disetel, hanya titik 2D yang dikembalikan (koordinat Z diabaikan)
bit 7 = 128 : jika disetel, memungkinkan input sewenang-wenang (bit 0 diabaikan, input kosong mengembalikan string kosong)
bit 8 = 256 : jika disetel, masukan jarak diprioritaskan daripada masukan sembarang
bit 9 = 512 : jika disetel, (getpoint) dan (getcorner) akan menggunakan UCS dinamis sementara, ketika mouse mengarahkan suatu entitas
bit 10 = 1024 : jika disetel, ORTHO, POLAR, Z-SNAPPING, dan tracking dinonaktifkan/diabaikan
keywords : (opsional) string kata kunci dalam format "Panjang Lebar..." atau "Panjang Lebar _ Length Width";
Fungsi Getkword
Fungsi ini menjeda input pengguna untuk menentukan string kata kunci, seperti yang ditentukan oleh panggilan sebelumnya (initget) ; mengembalikan string kata kunci lengkap atau NIL.
Format fungsi initget pada BricsCAD V22 - Developer Reference :
(getkword [ prompt ] )
Prompt - (opsional) string prompt yang akan ditampilkan; jika diabaikan, tidak ada string prompt yang ditampilkan
(defun c:kertas( / oldos pilih panjang lebar ttk1 ttk2 ttk3 ttk4 koorx koory)
(setq oldos (getvar "OSMODE"))
(setvar "OSMODE" 0)
(initget "1 2 3 4 _A1 A2 A3 A4")
(setq pilih (getkword "\nPilih 1 untuk A1, 2 untuk A2 dst (1.A1/2.A2/3.A3/4.A4): "))
(setq ttk1 (getpoint "Tentukan titik sisip kertas..."))
(cond
((= pilih "A1")
(progn
(setq panjang 840)
(setq lebar 594)
(setq koorx (car ttk1)) (setq koory (car (cdr ttk1)))
(setq koorx (+ koorx panjang))
(setq ttk2 (list koorx koory))
(setq koory (+ koory lebar))
(setq ttk3 (list koorx koory))
(setq koorx (- koorx panjang))
(setq ttk4 (list koorx koory))
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
))
((= pilih "A2")
(progn
(setq panjang 594)
(setq lebar 420)
(setq koorx (car ttk1)) (setq koory (car (cdr ttk1)))
(setq koorx (+ koorx panjang))
(setq ttk2 (list koorx koory))
(setq koory (+ koory lebar))
(setq ttk3 (list koorx koory))
(setq koorx (- koorx panjang))
(setq ttk4 (list koorx koory))
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
))
((= pilih "A3")
(progn
(setq panjang 420)
(setq lebar 297)
(setq koorx (car ttk1)) (setq koory (car (cdr ttk1)))
(setq koorx (+ koorx panjang))
(setq ttk2 (list koorx koory))
(setq koory (+ koory lebar))
(setq ttk3 (list koorx koory))
(setq koorx (- koorx panjang))
(setq ttk4 (list koorx koory))
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
))
((= pilih "A4")
(progn
(setq panjang 297)
(setq lebar 210)
(setq koorx (car ttk1)) (setq koory (car (cdr ttk1)))
(setq koorx (+ koorx panjang))
(setq ttk2 (list koorx koory))
(setq koory (+ koory lebar))
(setq ttk3 (list koorx koory))
(setq koorx (- koorx panjang))
(setq ttk4 (list koorx koory))
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
))
) ;; end cond
(setvar "OSMODE" oldos)
(princ)
)
Tentu saja program ini bisa dibuat lebih ringkas dengan membuat fungsi, dengan parameter panjang dan lebar. Silahkan dicoba sendiri dan kalau ada kesulitan silahkan dishare saja.
---000---