Download - Draft Lisp
BAB I
PENGENALAN VISUAL LISP
1.1 Bahasa Pemrograman LISP
1.2 AutoLISP atau Visual LISP
1.3 Editor Auto LISP
1
BAB IIOPERASI ARTIMATIKA,
TRIGONOMETRI, DAN SENARAI
Operasi aritmatika, trigonometri, dan senarai (list) langsung dari command promt AutoCAD dapat memberikan pemahaman bahwa AutoCAD memiliki kemampuan bukan sekedar menjadi alat bantu gambar. Kemampuan ini dalam pemrograman Visual LISP dapat langsng dieksekusi setelah menuliskan sintaknya dalam kode program.
2.1 Operasi Aritmatika dan TrigonometriPenulisan perintah aritmatika pada command
prompt AutoCAD menggunakan cara pre order atau prefix, yaitu operator disusul dengan operan. Oleh karena itu kita harus mengubah bentuk inorder atau infix menjadi pre order atau prefix. Berikut adalah contohnya:
Tabel 2.1 Sintak operasi aritmatikBentuk infix Bentuk prefix125 + 50 (+ 125 50)85 – 17 (- 85 17)9 x 6 (* 9 6)12 / 3 (/ 12 3)16 (sqrt 16) ingat squarerootsin 30o ( sin (* pi (/ 30 180.0)))
ingat 30o = 30/180* (radian)cos 30o ( cos (* pi (/ 30 180.0)))
Selanjutnya pengoperasian dari aritmatika dan trigonometri di atas dapat dilakukan sebagai berikut:
2
Gambar 2.1 Luaran operasi artimatik dan trigonometri
2.2 Operasi Senarai
Senarai merupakan himpunan yang memiliki sejumlah elemen/anggota. Lihat contoh himpunan di bawah ini, a. Himpunan x memiliki elemen a b c d (e f g) goodb. Himpunan y memiliki anggota 1 2 3 (100 200
300) 666Jika digambarkan sebagai diagram venn menjadi:
3
x b c a d
e f g good
y 2 3 1
100200 300 666
Gambar 2.2 Diagram ven dari senaraiMendefinisikan senarai pada LISP dilakukan
dengan:Command : (setq x(list ‘a b c d ‘(e f g) ‘good))Command : (setq y(list ‘1 ‘2 ‘3 ‘(100 200 300) ‘666))
Sintaks setq merupakan gabungan dari set dan
quote, berfungsi untuk mendefinisikan variabel beserta harganya. Selengkapnya pedoman penulisan fungsi-fungsi Visual LISP dapat dilihat pada apendiks A.
Mengoperasikan list dapat dilakukan dengan memberi perintah-perintah seperti berikut:
car = untuk mengambil elemen senarai terdepan (head)
cdr = untuk mengambil elemen senarai selain terdepan, yaitu ekor (tail)
car cdr = cadr = mengambil elemen terdepan dari ekor atau elemen kedua
car cdr cdr = caddr = mengambil elemen terdepan dari ekor kedua = elemen ketiga
(nth 0 x) = mengambil elemen terdepan dari list x (head = 0th)
(nth 1 x) = mengambil elemen kedua dari list x (1th)
(nth 2 x) = mengambil elemen ketiga dari list x (2th)
Tabel 2.2 menunjukkan contoh mendefinisikan sebuah senarai yang dapat dilanjutkan dengan operasi terhadap senarai yang telah didefinisikan. Sedangkan luaran hasilnya dapat dilihat pada gambar 2.3. Secara lengkap jenis sintak, arti, dan cara menuliskannya dapat dilihat pada apendik A.
4
Tabel 2.2 Menulis sintak dan mengoperasikan senaraiSintaks: Hasil:(setq x(list ‘a ‘b ‘c ‘d ‘(e f g) ‘good))
(A B C D (E F G) GOOD)
(car x) A(cdr x) (B C D (E F G) GOOD)(cadr x) atau (car (cdr x)) B(cddr x) = (cdr (cdr x)) ( C D (E F G) GOOD)(caddr x) = (car (cdr (cdr x))) C(cdddr x) = (cdr(cdr(cdr x))) ( D (E F G) GOOD)(cadddr x) = (car(cdr(cdr(cdr x))))
D
(cddddr x) ((E F G) GOOD)(nth 0 x) A (anggota list dihitung
dari kiri 0,1,2,dst)(nth 1 x) B(nth 2 x) C(nth 3 x) D(nth 0 (nth 4 x)) E (anggota list ke-0 dari
sublist (E F G)(nth 2 (nth 4 x)) G Sintaks: Hasil : (setq y(list 1 2 3 ‘(100 200 300) 666))
(1 2 3 (100 200 300) 666)
(car y) 1(cdr y) (2 3 ‘(100 200 300)
666))(cadr y) atau (car (cdr y)) 2(nth 0 y) 1(nth 1 y) 2(nth 1 (nth 3 y)) 200
5
(nth 2 (nth 3 y)) 300(setq z(list 8 9 12 17) (8 9 12 17)(* (nth 2 y) (nth 3 z)) 51 (hasil dari 3 x 17)(/ (nth 1 (nth 3 y)) (nth 3 z)) 11 (hasil 200/17 tanpa
desimal)
Gambar 2.3 Hasil operasi senarai
6
BAB IIIMEMULAI PROGAM SEDERHANA
Dalam menggambar menggunakan AutoCAD dikenal dua pendekatan, yaitu berdasarkan pendekatan koordinat polar dan koordinat cartesian. Pendekatan ini berlaku pula dalam menyusun program Visual LISP, yaitu program yang dapat melakukan otomasi penggambaran.
3.1 Editor Visual LISP untuk Membuat Kode Program
Struktur kode program Visual LISP selalu diawali dengan ( sebagai tanda begin atau awal program dan diakhiri dengan ) sebagai tanda end atau akhir program. Penulisan begin dan end ini dapat dilakukan tersarang, artinya terdapat begin-end di dalam begin-end. Lihat contoh berikut
(defun c: ())
Dan (defun c: ()
()
)
7
Langkah untuk memulai membuat program adalah dengan membuka Visual LISP Editor melalui menu Manage.
(a) Menu Manage dan klik Visula LISP Editor
(b) Tampilan console untuk hasil kompilasi
8
(c) Membuka editor denganCtrl+NGambar 3.1 Membuka editor Visual LISP
Editor tempat menuliskan kode program Visual LISP adalah pada lembar <Untitled-1>, selanjutnya file ini dapat disimpan dengan nama sesuai kehendak anda.
Gambar 3.2 Editor Visual LISP yang belum diberi nama
9
3.2 Kode Program Visual LISP dengan Koordinat Polar
Prinsip dari koordinat polar adalah membuat garis dari sebuah titik awal menuju arah/kutub (pole) tertentu dengan panjang garis tertentu. Perintah AutoCAD untuk membuat garis mendatar dengan koordinat polar melalui command prompt adalah:
Command :line Specify first point: 100,100 Specify next point or undo :@100<0 Specify next point or undo :
Titik awal gambar adalahtitik (100,100) dilanjutkan dengan garis sepanjang 100 mm dengan sudut 0o.
Sedangkan untuk membuat garis tegak lurus dapat dilakukan dengan perintah:
Command :line Specify first point: 100,100 Specify next point or undo :@100<0 Specify next point or undo :@75<90 Specify next point or undo :
Kedua perintah menggambar garis di atas dapat disusun menjadi sebuah program yang sewaktu-waktu dapat dijalankan untuk menghasilkan gambar garis lainnya. Selanjutnya kita akan berlatih menyusun kode program beberapa bentuk geometri sederhana.
3.2.1 Membuat program garis tunggal dengan sudut 0o dan panjang 100 mm
Langkah 1: menulis kode program pada editor
10
Gambar 3.3 Kode program membuat garis tunggal
Penjelasan:- defun c: sintak untuk membuat fungsi baru dan
memberi nama panggilan sub rutin- garis1, nama file dan nama fungsi yang akan
dipanggil - rad (a) (* pi(/ a 180.0)), membuat variabel a
sebagai konversi sudut ke radian- getpoint, meminta variabel titik koordinat x,y- titik1 (polar awal (rad 0) 100), membuat variabel
titik1 berupa koordinat dengan sudut 0o dan panjang 100 mm
- "line" awal titik1, membuat garis dari koordinat awal menuju koordinat titik1
- “” perintah cariage return atau
Langkah 2: Menyimpan dengan nama garis1.lsp
11
Gambar 3.4 Menyimpan program
Langkah 3: Lakukan kompilasi terhadap program untuk mengetahui apakah ada kesalahan, dengan menekan menu (Load
Active Edit Window)
Gambar 3.5 Mengkompilasi program
Bila tidak terdapat kesalahan maka pada lembar console maka akan muncul pesan seperti gambar 3.6
12
Gambar 3.6 Kompilasi program tanpa pesan kesalahan
Langkah 4: Mengaktifkan AutoCAD dengan menekan
menu .
Gambar 3.7 Mengaktifkan AutoCAD sebelum menjalankan program
Langkah 5: Untuk menjalankan program tulis garis1 pada command prompt dan tekan enter. Maka akan muncul tulisan “titik awal gambar:”
13
Gambar 3.8 Kompilasi program tanpa pesan kesalahan
Langkah 6 : Klik sembarang titik pada permukaan lembar kerja. Maka akan tampil sebuah garis yang dihasilkan oleh program.
14
Gambar 3.9 Tampilan hasil dan perintah mejalankan program pada command prompt
3.2.2 Membuat program garis tunggal dengan sudut 0o dengan panjang 100 mm dan sudut 90o dengan panjang 75 mm
Langkah 1: Membuka berkas kosong pada Visual LISP Editor dan tulis kode program seperti pada kotak di bawah ini.
Gambar 3.10 Kode program garis2.lsp
Penjelasan :- defun c:, untuk membuat fungsi baru dan
memberi nama panggilan sub rutin- garis1, nama file dan nama fungsi yang akan
dipanggil - rad (a) (* pi(/ a 180.0)), membuat variabel a
sebagai konversi sudut ke radian- getpoint, meminta variabel titik koordinat x,y- titik1 (polar awal (rad 0) 100), membuat
variabel titik1 berupa koordinat dengan sudut 0o dan panjang 100 mm
15
- titik2 (polar awal (rad 90) 75), membuat variabel titik2 berupa koordinat dengan sudut 90o dan panjang 75 mm
- "line" awal titik1 titik2, membuat gari dari koordinat awal menuju koordinat titik1 dan diakhiri pada koordinat titik2
- “”, perintah cariage return atau
Langkah 2: Menyimpan dengan nama file garis2.
Langkah 3: Mengkompolasi program sampai tidak terdapat kesalahan
Gambar 3.11. Hasil kompilasi program gris2.lsp
Langkah 4: Menjalankan program dengan menulis garis2 pada command propt
16
Gambar 3.11 Tampilan hasil program garis2.lsp
3.2.3 Membuat program segitiga
Langkah 1: Membuka berkas kosong pada Visual LISP Editor dan tulis kode program seperti pada kotak di bawah ini.
Langkah 2: Menyimpan dengan nama file segitiga.Langkah 3: Mengkompolasi program sampai tidak
terdapat kesalahanLangkah 4: Menjalankan program dengan menulis
segitiga pada command propt
17
Gambar 3.12. Kode program segitiga.lsp
Gambar 3.13 Hasil dari program segitiga.lsp
18
3.2.4 Membuat program segiempat
Langkah 1: Membuka berkas kosong pada Visual LISP Editor dan tulis kode program seperti pada kotak di bawah ini.
Gambar 3.14 Kode program segiempat.lsp
Langkah 2: Menyimpan dengan nama file segiempat.Langkah 3: Mengkompolasi program sampai tidak
terdapat kesalahanLangkah 4: Menjalankan program dengan menulis
segiempat pada command propt
3.2 Kode Program Visual LISP dengan Koordinat Cartesian
Otomasi penggambaran dengan koordinat cartesian berarti harus mementukan nilai koordinat setiap titik yang akan dihubungkan dengan garis. Koordinat (x,y) harus ditulis dalam bentuk senarai (list). Anggota senarai berturut-turut dibaca dari koordinat dengan nth, ingat 1st, 2nd, 3rd, 4th, 5th, ... nth, jadi nth artinya ke- . Misalnya anggap suatu senarai P={100,125), nilai 100 adalah ordinat
19
dan 125 adalah absis. Maka pembacaan ordinat adalah list (nth 0 P) dan pembacaan absis adalah list (nth 1 P). Karena pembacaan anggota senarai dimulai dengan 0,1,2,3, dst.
Gambar 3.15 Hasil program segiempat.lsp
3.2.1 Membuat program garis tunggal ke kanan dengan sudut 0o dan panjang 200 mm
Langkah 1: Menulis program pada editor Langkah 2: Menyimpan dengan nama file grskanan
20
Langkah 3: Mengkompolasi program sampai tidak terdapat kesalahan
Langkah 4: Menjalankan program dengan menulis grskanan pada command propt
Gambar 3.16 Kode program grskanan.lsp
Gambar 3.17 Hasil program grskanan.lsp
3.2.2 Membuat program garis tunggal ke kiri dengan sudut 0o dan panjang 200 mm
Langkah 1: Menulis program pada editor Langkah 2: Menyimpan dengan nama file grskiri
21
Langkah 3: Mengkompolasi program sampai tidak terdapat kesalahan
Langkah 4: Menjalankan program dengan menulis grskiripada command propt
Gambar 3.18 kode program grskiri.lsp
Gambar 3.19 Hasil program grskiri.lsp
3.2.3 Membuat program garis tunggal ke atas dengan sudut 90o dan panjang 200 mm
Langkah 1: Menulis program pada editor
22
Langkah 2: Menyimpan dengan nama file grstegakLangkah 3: Mengkompolasi program sampai tidak
terdapat kesalahanLangkah 4: Menjalankan program dengan menulis
grstegak pada command propt
Gambar 3.20 Kode program grstegak.lsp
Gambar 3.20 Hasil program grstegak.lsp
23
3.2.4 Membuat program garis tunggal miring ke kiri dengan sudut 30o dan panjang 100 mm
Langkah 1: Menulis program pada editor Langkah 2: Menyimpan dengan nama file grsmiringLangkah 3: Mengkompolasi program sampai tidak
terdapat kesalahanLangkah 4: Menjalankan program dengan menulis
segitiga pada command propt
Gambar 3.21Kode program grsmiring.lsp
3.2.5 Membuat program dua buah garis lurus membentuk sudut tertentu dengan panjang garis tertentu
Langkah 1: Menulis program pada editor Langkah 2: Menyimpan dengan nama file duagrsLangkah 3: Mengkompolasi program sampai tidak
terdapat kesalahanLangkah 4: Menjalankan program dengan menulis
duagrs pada command propt
24
Gambar 3.22 Hasil program grsmiring.lsp
Gambar 3.23 Kode program duagrs.lsp
25
Gambar 3.24 Hasil program duagrs.lsp
3.2.6 Membuat program segitiga dengan lingkaran pada tiap sudut
Langkah 1: Menulis program pada editor Langkah 2: Menyimpan dengan nama file segi3Langkah 3: Mengkompolasi program sampai tidak
terdapat kesalahanLangkah 4: Menjalankan program dengan menulis
segi3 pada command propt
26
Gambar 3.25 Kode program segi3.lsp
3.3 Kode Program Visual LISP Bentuk Geometri Lebih Rumit
Dalam sub bab ini akan disusun kode program Visual LISP untuk menggambarkan bentuk geometri bintang lima beraturan dan segilima beraturan. Selanjutnya penyusunan bentuk kubus. Bentuk-bentuk ini dapat memberikan gambaran rumitnya menentukan sudut-sudutnya dan harus menuangkannya kedalam kode program dengan benar. Kode program disusun baik dengan koordinat polar maupun koordinat cartesian.
27
Gambar 3.26 Hasil program segi3.lsp
3.3.1 Membuat program bintang dengan koordinat polar
Program otomasi penggambaran bintang berdasarkan koordinat polar & cartesian
28
29
3.3.1 Membuat program bintang dengan koordinat polar
30
3.3.1 Membuat program bintang dengan koordinat cartesian
31
3.3.1 Membuat program segi-5 dengan koordinat polar
Koordinat Cartesian(defun c:segi5() (setq a (getpoint "\n titik awal gambar segi-5: ")) (setq s (getreal "\n panjang sisi:"))
(setq b (list (+ (nth 0 a) s) (nth 1 a))) (setq c (list (+ (nth 0 b) (* (cos(* pi(/ 72 180.0))) s)) (+ (nth 1 b) (* (sin(* pi(/ 72 180.0))) s)))) (setq d (list (- (nth 0 c) (* (cos(* pi(/ 36 180.0))) s)) (+ (nth 1 c) (* (sin(* pi(/ 36 180.0))) s)))) (setq e (list (- (nth 0 a) (* (cos(* pi(/ 72 180.0))) s)) (+ (nth 1 a) (* (sin(* pi(/ 72 180.0))) s)))) (command "line" a b "" "line" b c ""
"line" c d "" "line" d e ""
"line" e a "")
); (nth 0 a) dapat digantikan dengan (car a); (nth 1 a) dapat digantikan dengan (cadr a)
3.3.1 Membuat program bintang dengan koordinat polar
Program otomasi penggambaran kubus berdasarkan koordinat polar & cartesianKoordinat polar(defun c:kubus() (defun rad (r) (* pi(/ r 180.0))) (setq a (getpoint "\n titik awal gambar: "))
32
(setq x (getreal "\n panjang kotak (x):")) (setq y (getreal "\n panjang tinggi(y):")) (setq z (getreal "\n panjang lebar (z):"))
(setq b (polar a (rad 150) z)c (polar a (rad 90) y)
e (polar a (rad 30) x)g (polar e (rad 90) y)d (polar b (rad 90) y)f (polar b (rad 30) x)h (polar f (rad 90) y))
(command "line" a b "" "line" a c ""
"line" a e "" "line" e g "" "line" b d "" "line" b f "" "line" e f "" "line" f h "" "line" d h "" "line" g h "" "line" d c "" "line" c g "" )
)
3.3.1 Membuat program bintang dengan koordinat polar
Koordinat Cartesian(defun c:kubus()
33
(setq a (getpoint "\n titik awal gambar: ")) (setq x (getreal "\n panjang kotak (x):")) (setq y (getreal "\n panjang tinggi(y):")) (setq z (getreal "\n panjang lebar (z):"))
(setq b (list(- (nth 0 a) (* (cos(* pi(/ 30 180.0))) z)) (+ (nth 1 a) (* (sin(* pi(/ 30 180.0))) z)))) (setq c (list (nth 0 a) (+ (nth 1 a) y))) (setq e (list(+ (nth 0 a) (* (cos(* pi(/ 30 180.0))) x)) (+ (nth 1 a) (* (sin(* pi(/ 30 180.0))) x)))) (setq d (list (nth 0 b) (+ (nth 1 b) y))) (setq g (list (nth 0 e) (+ (nth 1 e) y))) (setq f (list(- (nth 0 e) (* (cos(* pi(/ 30 180.0))) z)) (+ (nth 1 e) (* (sin(* pi(/ 30 180.0))) z)))) (setq h (list(- (nth 0 g) (* (cos(* pi(/ 30 180.0))) z)) (+ (nth 1 g) (* (sin(* pi(/ 30 180.0))) z)))) (command "line" a b "" "line" a c ""
"line" a e "" "line" b d ""
"line" e g "" "line" d c "" "line" c g "" "line" b f "" "line" e f "" "line" f h "" "line" d h "" "line" h g "" )
)
34
2. Strategi pembelajaran
Membuat bintang 5 Beraturan dengan koordinat polar:
1. Dosen mendemokan program membuat bintang 5 beraturan 2 hingga 3 kali
2. Mahasiswa diminta mengulangi menjalankan program yang sama, setelah dipinjami disket berisi file) program
3. Dosen mendemokan program garis tunggal 2 hingga 3 kali namun dengan mengaktifkan animate & break on error pada menu debug. Layar di atur agar terdiri dari layar AutoCAD dan layar Visual LISP agar proses menggambar pada layar dapat di amati
4. Mahasiswa diminta mengulangi menjalankan program seperti butir 3
5. Dosen menjelaskan logika program baris demi baris seperti yang didemokan pada butir 3 dengan langkah-langkah:
Menggambar bintang 5 beraturan dan menghitung besar sudut tiap garis yang berhubungan.
Sudut luar adalah 3600 / 5 = 720
Sudut dalam adalah 1800 – 720 = 1080
Sudut pembentuk segi-3 adalah (3600-1080)/2=360
Sudut dalam dibagi menjadi 3 bagian masing-masing 360
35
Urutan penggambaran dimulai dari awal menuju 1-2-3-4-5(awal)Besar sudut garis awal-1 =360; 1-2=1800; 2-3=3600 - 360 =3240; 3-4=720+360=1080; 4-5(awal)=2700-(360
/ 2)=2520
Menyusun langkah penggambaran dan mengubah menjadi sintaks Visual LISP
36
1080
720
360
1080
1
awal
360
180o 1
awal
108o36
o
720
3
324o 2
252o 4
Langkah Sintaks- Menentukan nama
pemanggil program- Membuat rumus
pengubah sudut menjadi radian
- Mengambil titik awal penggambaran dan meminta panjang sisi bintang
- Menentukan titik 1 thdp awal sejauh L
- Menentukan titik 2 thdp 1 sejauh L
- Menentukan titik 3 thdp 2 sejauh L
- Menentukan titik 4 thdp 3 sejauh L
- Menentukan titik 5 thdp 4 sejauh L
- Membuat perintah menggaris polyline dari awal-5
(defun c:bintang ()(defun rad (a) (* pi (/ a 180.0)))
(setq awal (getpoint “\n titik awal gbr : “) L (getreal “\n Panjang Sisi : “))(setq titik1 (polar awal (raf 36) L) titik2 (polar titik1 (rad 180) L) titik3 (polar titik2 (rad 324) L) titik4 (polar titik3 (rad 108) L) titik5 (polar titik4 (rad 252) L))(command “pline” awal titik1 titik2 titik3 titik4 titik5 “”)
6. Mahasiswa di minta untuk analisis dan diskusi7. Mahasiswa di minta menuliskan alternatif
logika/penalaran lain namun untuk menghasilkan keluaran program yang sama
8. Mahasiswa diminta menuliskan program alternative pada Visual LISP dan di jalankan hingga memberikan hasil yang benar dan sama dengan program yang sudah ada.
Membuat bintang 5 Beraturan dengan koordinat Cartesian:
37
1. Dosen mendemokan program membuat bintang 5 beraturan 2 hingga 3 kali
2. Mahasiswa di minta mengulangi menjalankan program yang sama, setelah dipinjami disket berisi file program
3. Dosen mendemokan program garis tunggal 2 hingga 3 kali namun dengan mengaktifkan animate & break on error pada menu debug. Layar di atur agar terdiri dari layar AutoCAD dan layar Visual LISP agar proses menggambar pada layar dapat diamati
4. Mahasiswa di minta mengulangi menjalankan program seperti butir 3
5. Dosen menjelaskan logika program baris demi baris seperti yang di demokan pada butir 3 dengan langkah-langkah:
Menggambar bintang 5 beraturan dan menghitung besar sudut tiap garis yang berhubungan
38
360 360720
d
b
a
c
e
00
Menyusun langkah penggambaran dan mengubah menjadi sintaks Visual LISP
- Menentukan nama pemanggil program (defun c:bnt5()- Menentukan titik a sebagai titik awal
penggambaran (setq a (getpoint “\n titik awal gambar bintang: “))- Meminta panjang sisi bintang (setq s (getreal “\n panjang sisi: “))- Menentukan titik b (Xb,Yb) sejauh L dengan
sudut 360 terhadap titik a(Xa,Ya) maka Xb=L cos 360 dan Yb=L sin 360
(setq b (list (+ (nth 0 a) (* (cos(* pi(/ 36 180.0))) s)) (+ (nth 1 a) (* (sin(* pi(/ 36 180.0))) s))))- Menentukan titik c(Xc,Yc) sejauh L dengan
sudut 00 terhadap titik b(Xb,Yb) maka Xc=Xb-L dan Yc=Yb
(setq c (list (- (nth 0 b) s) (nth 1 b)))- Menentukan titik c(Xd,Yd) sejauh L dengan
sudut 360 terhadap titik c(Xc,Yc) maka Xd=Xc-L cos 360 dan Yd=Yc-L sin 360
(setq d (list (+ (nth 0 c) (*(cos(* pi(/ 36 180.0))) s)) (- (nth 1 c) (* (sin(* pi(/ 36 180.0))) s))))
39
- Menentukan titik e(Xe,Ye) sejauh L dengan sudut 720 terhadap titik d(Xd,Yd) maka Xe=Xd-L cos 720 dan Ye=Yd+L sin 720
(setq e (list (- (nth 0 d) (*(cos(* pi(/ 72 180.0))) s)) (+ (nth 1 d) (* (sin(* pi(/ 72 180.0))) s))))- Perintah membuat garis polyline a-b-c-d-e-a (command “pline” a b c d e a “”) )6. Mahasiswa diminta melakukan analisis dan
diskusi7. Mahasiswa diminta menuliskan alternative
logika/penalaran lain namun untuk menghasilkan keluaran program yang sama
8. Mahasiswa diminta menuliskan program alternatif pada Visual LISP dan dijalankan hingga memberikan hasil yang benar dan sama dengan program yang sudah ada
40
BAB IVPEMROGRAMAN MODULAR
Rencana Pembelajaran 5
Mata Kuliah : CAD 2&3 D (AutoCAD)Pokok Bahasan :
Sub Pokok Bahasan : Menyusun program Visual LISP untuk otomasi penggambaran geometris secara modular berdasarkan koordinat polar & Cartesian
Semester : IVAlokasi Waktu : 4x50 menitPertemuan ke- : 3
Pemrograman modular terdiri dari program utama dan prosedur. Program utama dijalankan pertama kali oleh interpreter, kemudian satu per satu prosedur dipanggil dan dijalankan. Setiap prosedur berisi suatu fungsi tertentu.
Pada progrm di bawah ini prosedur satu, prosedur dua, dan prosedur tiga dipanggil satu demi satu oleh program utama pilih.
41
Demikian pula progam untuk menghitung volume di bawah ini.; program modular dengan pencabangan IF-THEN pada program utama
(defun C:pilih();(setvar "cmdecho" 0)(initget 1 "A a b B C c")(setq pilihan (getkword "\nPilihan Anda Apa? ( [a] satu / [b] dua / [c] tiga ) : "))(if (= pilihan "A") (satu)
(if (= pilihan "B") (dua) (tiga))) ; IF pilihan=A then prosedur satu ELSEIF pilihan=B THEN dua ELSE tiga
(defun satu() (princ "ini yang pertama") (princ))(defun dua() (princ "ini yang kedua") (princ))(defun tiga() (princ "ini yang tiga") (princ))
42
; program modular degan pencabangan COND pada program utama
(defun c:pilih()
(initget 1 "A a b B C c")(setq pilihan (getkword "\nPilihan Anda Apa? ( [a] satu / [b] dua / [c] tiga ) : "))(cond ((= pilihan "A")
(progn ; lompat ke fungsi/prosedur satu (satu)))
((= pilihan "B")(progn (dua)))
((= pilihan "C")(progn (tiga)))
))
(defun satu() (princ "ini yang pertama") (princ))(defun dua() (princ "ini yang kedua") (princ))(defun tiga() (princ "ini yang tiga") (princ))
43
; Program modular untuk menghitung volume silinder, volume kubus (defun volsil() (princ "Menghitung Volume Silinder") (setq g (getreal "\n tinggi silinder = ")) (setq d (getreal "\n diameter silinder = ")) (setq vs (* g d (/ pi 4))) (princ "Volume Silinder (VS)= ") (float vs) (princ vs) (princ " mm^3") (princ "\n") (princ))
(defun volkub() (princ "Menghitung Volume Kubus") (setq s (getreal "\n sisi kubus = ")) (setq vk (* s s s)) (princ "Volume Kubus (VK)= ") (princ vk) (princ " mm^3") (princ))
44
(defun c:vol()(setvar "cmdecho" 0)(initget 1 "A a b B")
(princ "\npilihan: a. Volume Silinder \n b. Volume Kubus ")(setq pilihan (getkword "\nPilihan: "))
(if (or (= pilihan "a") (= pilihan "A") (progn
(volsil)))
(or (= pilihan "b") (= pilihan "A")(progn (volkub)))
) ; akhir dari cond )
Mata Kuliah : CAD 2&3 D (AutoCAD)Pokok Bahasan : Prinsip pemrograman Visual LISP untuk otomasi penggambaran
menggunakan perintah –perintah yang ada pada AutoCADSub Pokok Bahasan : Menyusun program Visual LISP untuk otomasi penggambaran
menggunakan perintah –perintah: fillet, arc, trim, mirror, entlast
Semester : IVAlokasi Waktu : 4x50 menitPertemuan ke- : 4
1. Mahasiswa dapat menyusun program Visual LISP untuk perintah: fillet
2. Mahasiswa dapat menyusun program Visual LISP untuk perintah: arc
45
3. Mahasiswa dapat menyusun program Visual LISP untuk perintah: trim
4. Mahasiswa dapat menyusun program Visual LISP untuk perintah: mirror
5. Mahasiswa dapat menyusun program Visual LISP untuk perintah: entlast
Materi
Program menggunakan perintah fillet dan arc pada sebuah kotak
(defun gambar() (setq a (getpoint "\n titik awal gambar: ")) (setq x (getreal "\n panjang kotak (x): ")) (setq y (getreal "\n lebar kotak (y): "))
(setq b (list (+ (car a) x) (cadr a))) (setq c (list (car b) (+ (cadr b) y))) (setq d (list (- (car c) x) (cadr c ))) (command "line" a b "" (setq grs1(entlast)) "line" b c "" (setq grs2(entlast))
"line" d a "" (setq grs3(entlast)) "fillet" "r" (* 0.1 x) "fillet" grs1 grs2 "" "fillet" "r" (* 0.1 x) "fillet" grs1 grs3 "" ))
(defun lingkaran() (setq x1(/ x 2)) (setq r(/ y 3)) (setq e(list (- (car c) x1) (cadr c )))
(setq f(list (- (car e) r) (cadr e )))(setq g(list (+ (car e) r) (cadr e )))
46
(command "line" c g "" "line" f d "") (command "arc" "ce" e f g) )
(defun c:kotak() (gambar) (lingkaran) (titik_dimensi) (command "zoom" "w" "") )
; perintah (car) dan (cadr) dapat diganti dengan (nth 0) dan (nth 1)
Program menggunakan perintah trim dan mirror
(defun c:gambar() (kepala) (mata) (hidung) (mulut) (telinga) ;(topi) (command "zoom" "e" "") )
(defun kepala() (setq a(getpoint "\n Titik awal gambar : ")) (command "circle" a 150 "" ); titik a pusat lingkaran (setq lingk1(entlast)))
(defun telinga() (setq b(list (- (car a) 150) (cadr a )))
47
(setq c(list (+ (car a) 150) (cadr a))); center of telinga kanan (setq x(list (car a)(+ (cadr a) 150) )); titik puncak lingkaran (command "circle" c 40 "" ) (setq lingk3(entlast)) (command "trim" lingk1 "" lingk3 "") (setq arc3(entlast)) (command "mirror" arc3 "" a x "") )
(defun mata() (setq d (list (- (car a) 75) (cadr a ))) (command "circle" d 30 "") (setq e (list (+ (car a) 75) (cadr a ))) (command "circle" e 30 "") (setq d1 (list (- (car d) 35) (+ (cadr d) 35))) (setq d2 (list (+ (car d) 35) (+ (cadr d) 35))) (setq e1 (list (- (car e) 35) (+ (cadr e) 35))) (setq e2 (list (+ (car e) 35) (+ (cadr d) 35))) (command "arc" "ce" d d2 d1 "") (command "arc" "ce" e e2 e1 ""))
(defun hidung() (setq f (list (car a) (- (cadr a) 75))) (command "circle" f 30 ""))
(defun mulut() (setq g1(list (- (car a) 90) (- (cadr a) 90))) (setq g2(list (+ (car a) 90) (- (cadr a) 90))) (command "arc" "ce" a g1 g2 ""))
48
Program penggambaran kotak menggunakan perintah fillet dan arc :
Menggambar kotak yang terdapat fillet dan arc seperti gambar di bawah ini beserta ukurannya.
Menjelaskan urutan – urutan penggambarannya.
Menuntun mahasiswa menyusun logika sintaks
- Memberi nama pemanggil prosedur(defun gambar())
- Menentukan titik a sebagai titik awal gambar(setq a (getreal “\n titik awal gambar: “))
- Meminta masukan variable panjang kotak (x)
49
(setq x (getreal “\n panjang kotak (x): “))- Meminta masukan variable tinggi kotak (y)
(setq y (getreal “\n lebar kotak (y): “))- Menentukan koordinat titik b sejauh x
terhadap titik a(setq b (list (+ (car a)x) (cadr a)))
- Menentukan koordinat titik c sejauh y terhadap titik b(setq c(list (car b) (+(cadr b) y)))
- Menentukan koordinat titik d sejauh x terhadap titik c(setq d (list (- (car c) x) (cadr c )))
- Memberi perintah membuat garis a – b dan hasilnya dinamai grs1(command “line” a b “” (setq grs1(enlist))
- Memberi perintah membuat garis b – c dan hasilnya dinamai grs2“line” b c “” (setq grs29enlast))
- Memberi perintah membuat garis d – a dan hasilnya dinamai grs3grs3(entlast))
- Memberi perintah membuat fillet (jari – jari 900) antara grs1 terhadap grs2 “fillet” “r” (* 0.1 x) “fillet” grs1 grs2 “”
- Memberi perintah membuat fillet (jari – jari) antara grs1 terhadap grs3“fillet” “r” (* 0.1 x) “fillet” grs1 grs3 “”))
- Memberi nama pemanggil prosedur pembuat busur(defun busur()
- Menentukan X1=X/2 (setq x1(/ x 2))- Menentukan r=y/3 (setq r(/ y 3))- Menentukan titik e sejauh X1 sebelah kiri titik
c(setq e (list (- (car c) x1) (cadr c)))
50
- Menentukan titik f sejauh r disebelah kiri titik e(setq f(list (- (car e) r) (cadr e)))
- Menentukan titik g sejauh r disebelah kanan titik e(setq g(list (+ (car e) r) (cadr e)))
- Perintah membuat garis c-g dan f-d(command “line” c g “” “line” f d “”)
- Perintah membuat busur f-g dengan pusat titik e(commad “arc” “ce” e f g))
- Membuat program utama pemanggil prosedur(defun c:kotak()
(gambar) (lingkaran)
(command “zoom” “w” “”))
Meminta mahasiswa mempraktekanya hingga berhasil
Program menggunakan perintah trim dan mirror :
Menggambar bentuk yang dapat untuk mengaplikasikan perintah trim dan mirror seperti gambar di bawah ini beserta ukuranya
51
Menggambar kepala boneka seperti berikut :
Menjelaskan urutan langkah menggambar kepala boneka terdiri dari prosedur:- Menggambar kepala - Menggambar hidung- Menggambar mulut- Menggambar telinga
52
kepala 300 300telinga 40 150mata 30 75 75hidung 30titik pusat alis = titik pusat matatitik pusat mulut = titik pusat kepala
35
80 75 150
37,5 37,5
90 90
Menjelaskan prosedur menggambar kepala boneka terdiri dari langkah:- Menentukan titik sembarang, titik a, sebagai
titik awal penggambaran lingkar kepala - Membuat lingkaran jari-jari 150- Hasil penggambaran diberi nama lingk1
Menjelaskan prosedur menggambar telinga boneka terdiri dari langkah:- Menentukan titik b sebagai ttk pusat
lingkaran telinga kanan pd posisi (150,0) thdi a
- Menentukan titik c sebagai titik pusat lingkaran telinga kiri pada posisi (150,0) thd a (namun titik ini tidak harus ada)
- Menentukan titik x pada pubcak kepala yang akan digunakan titik bantu pencerminan telinga. Yaitu pada posisi (0,150) terhadap a
- Membuat lingkaran jari-jari 40 pada titik c, dan hasilnya diberi nama lingk3
- Melakukan pengirisan (trim) lingk3 menggunakan lingk1, dan hasilnya diberi nama arc3
- Busur arc3 dicerminkan terjadap titik a-x agar menjadi telinga kiri.
Menjelaskan prosedur menggambar mata boneka terdiri dari langkah:- Menentukan titik d sebagai ttk pusat
lingkaran mata kiri pd posisi (-75,0) thd a- Membuat lingkaran mata dengan jari-jari 30
pada titik d- Menentukan titik e sebagai ttk pusat
lingkaran mata kanan pd posisi (+75,0) thd a
53
- Membuat lingkaran mata dengan jari-jari 30 pada titik e
- Menentukan titik d1 sebagai ttk akhir alis kiri pd posisi (-35,+35) thd d
- Menentukan titik d2 sebagai ttk awal alis kiri pd posisi (+35,+35) thd d
- Menentukan titik e1 sebagai ttk akhir alis kiri pd posisi (-35,+35) thd e
- Menentukan titik e2 sebagai ttk awal alis kiri pd posisi (+35,+35) thd e
- Membuat busur alis kiri dari d2 menuju d1 dengan pusat d
- Membuat busur alis kanan dari e2 menuju e1 dengan pusat e
Menjelaskan prosedur menggambar hidung boneka terdiri dari langkah:- Menentukan titik f sebagai ttk pusat lingkaran
hidung pd posisi (0, -75) thd a- Membuat lingkaran jari-jari 30 dengan pusat f
Menjelaskan prosedur menggambar mulut boneka terdiri dari langkah:- Menentukan titik g1 sebagai awal gambar
mulut pd posisi (-90, -90) thd a- Menentukan titik g2 sebagai akhir gambar
mulut pd posisi (+90, -90) thd a- Membuat busurg1 g2 dengan pusat a
Selanjutnya menuntun mahasiswa untuk mengubah setiap langkah pada masing-masing prosedur menjadi sintaks program dan menulis program utama dan menjalankannya hingga diperoleh hasil yang benar.
54
Rencana Pembelajaran 7
Mata Kuliah : CAD 2&3 D (AutoCAD)Pokok Bahasan : Prinsip pemrograman Visual LISP untuk otomasi penggambaran
komponen mesin Sub Pokok Bahasan : Menyusun program Visual LISP untuk otomasi penggambaran
komponen mesin sederhana Semester : IVAlokasi Waktu : 4x50 menitPertemuan ke- : 5
1. Mahasiswa dapat menyusun program Visual LISP untuk otomasi penggambaran komponen mesin sederhana berupa mur
2. Mahasiswa dapat menyusun program Visual LISP untuk otomasi penggambaran komponen mesin sederhana berupa baut
MateriMahasiswa latihan memprogram membuat program otomasi untuk mengambar mur.
; defun-defun dibawah ini merupakan defun masukan utama
(defun angl (ap) ; konversi sudut dari radian ke derajat(* pi (/ ap 180.0))
55
)
(defun masukan () ; menentukan masukan diameter nominal ulir yang dikehendaki(setq d (getreal "\nTentukan diameter nominal (M) : ")))
(defun tebmur () ; menentukan tebal dari mur(setq tebal (* 0.8 d)))
(defun jarak2 () ; menentukan jarak pada mur(setq P (polar Ps (angl 90) (* 2 d))))
; sub-sub program untuk membuat garis center
(defun center1 () ; menentukan garis center pand depan mur(setq cen1 (polar Ps (angl 90) d))(setq cen2 (polar Ps (angl 270) d))(setq cen3 (polar Ps (angl 180) (+ (* 0.27 d) d)))(setq cen4 (polar Ps (angl 0) (+ (* 0.27 d) d)))(command "line" cen1 cen2 "")(setq cena (entlast))(command "line" cen3 cen4 "")(setq cenb (entlast))(command "change" cena cenb "" "p" "lt" "center" "s" (* 0.3 d) "")(command "change" cena cenb "" "p" "c" "blue" ""))
(defun center2 () ; menentukan garis center pand atas mur(setq cent1 (polar P (angl 90) d))(setq cent2 (polar P (angl 270) (* d 0.2)))(command "line" cent1 cent2 "")(setq centa (entlast))(command "change" centa "" "p" "c" "blue" "")(command "change" centa "" "p" "lt" "center" "s" (* 0.3 d) ""))
56
; sub-sub program untuk menentukan titik-titik penggambaran
(defun perintah1 () ; menentukan titik-titik penggambaran pandangan depan mur (setq point1 (polar Ps (angl 60) d))
(setq point2 (polar Ps (angl 120) d))(setq point3 (polar Ps (angl 180) d))(setq point4 (polar Ps (angl 240) d))(setq point5 (polar Ps (angl 300) d))(setq point6 (polar Ps (angl 0) d))(setq pointa (polar Ps (angl 255) (/ d 2)))(setq rp (* (cos (angl 30)) d))(setq dd (/ d 2))(setq tinggi_ulir (/ d 8))(setq dl (- dd tinggi_ulir)))
(defun perintah2 () ; menentukan titik-titik penggambaran pandangan atas mur (setq pnt1 (polar P (angl 180) (/ d 2)))
(setq pnt2 (polar P (angl 180) d))(setq pnt3 (polar pnt2 (angl 90) tebal))(setq pnt4 (polar pnt3 (angl 0) (/ d 2)))(setq pnt5 (polar pnt4 (angl 0) d))(setq pnt6 (polar pnt5 (angl 0) (/ d 2)))(setq pnt7 (polar pnt6 (angl 270) tebal))(setq pnt8 (polar pnt7 (angl 180) (/ d 2)))(setq pnt9 (polar pnt3 (angl 0) (/ d 4)))(setq pnt10 (polar pnt5 (angl 0) (/ d 4)))(setq pnta (polar pnt3 (angl 300) (* d 2)))(setq pntb (polar pnt3 (angl 300) (/ d 2)))(setq pntc (polar pnt6 (angl 240) (/ d 2)))(setq pnti11 (polar pntb (angl 54.8) (* (/ d 2) (cos (angl 30)))))(setq pnti12 (polar pntc (angl 54.8) (* (/ d 2) (cos (angl 30)))))(setq pnti15 (polar pntb (angl 180) (* (/ d 2) (cos (angl 30)))))(setq pnti16 (polar pntc (angl 180) (* (/ d 2) (cos (angl 30)))))(setq rb (* (* 2 d) (cos (angl 30))))
57
(setq pnti13 (polar pnta (angl 120) rb))(setq pnti14 (polar pnta (angl 60) rb))(setq rk (* (cos (angl 30)) (/ d 2)))(setq pnt30 (polar pnt4 (angl 0) (/ d 2)))(setq pnt31 (polar pnt3 (angl 270) (/ (- (/ d 2) rk) (cos (angl 30)))))(setq pnt32 (polar pnt31 (angl 0) (/ d 2)))(setq pnt33 (polar pnt32 (angl 0) d))(setq pnt34 (polar pnt33 (angl 0) (/ d 2)))(setq tr4 (polar pnta (angl 130) rb))(setq tr5 (polar pnta (angl 270) rb))(setq tr6 (polar pnta (angl 50) rb)))
; sub-sub program untuk kalkulasi penggambaran
(defun kalkulasi_gambar1 () ; kalkulasi menggambar pand atas mur(command "line" pnt2 pnt31 "")(command "arc" pnt32 pnt9 pnt31)(command "line" pnt32 pnt1 "")(command "arc" pnt33 pnt30 pnt32)(command "line" pnt33 pnt8 "")(command "arc" pnt34 pnt10 pnt33)(command "line" pnt34 pnt7 "")(command "line" pnt9 pnt10 "")(command "line" pnt2 pnt7 "")
)
(defun gambar1_mur () ; proses menggambar pandangan depan dari mur(command "pline" point1 point2 point3 point4 point5 point6 "c")(command "zoom" "e")(command "circle" Ps rp)(command "circle" Ps dl)(command "arc" "c" Ps pointa "a" "300")(setq asu (entlast))(command "zoom" "e")(command "change" asu "" "p" "color" "red" "")(command "zoom" "a")
58
)
(defun gambar2_mur () ; proses menggambar pandangan atas dari mur(kalkulasi_gambar1))
; merupakan program utama dari proses penggambaran mur
(defun c:mur ()(masukan)(mskan)(perintah1)(gambar1_mur)(center1)(jarak2)(tebmur)(perintah2)(gambar2_mur)(center2)(command "zoom" "e")(command "regen")
)
Rencana Pembelajaran 8
Mata Kuliah : CAD 2&3 D (AutoCAD)Pokok Bahasan : Prinsip pemrograman Visual LISP untuk otomasi penunjukan
ukuran pada gambar teknik Sub Pokok Bahasan : Menyusun program Visual LISP untuk otomasi penunjukan
ukuran pada gambar teknik Semester : IVAlokasi Waktu : 4x50 menitPertemuan ke- : 6
59
Sasaran Pendidikan:Mahasiswa akan dapat menyusun program Visual LISP untuk otomasi penunjukan ukuran pada gambar teknik
Sasaran Pembelajaran
1. Mahasiswa dapat menyusun program Visual LISP untuk otomasi penunjukan ukuran linier
2. Mahasiswa dapat menyusun program Visual LISP untuk otomasi penunjukan ukuran angular
Materi:Melengkapi materi pembelajaran 5 dengan penunjukan ukuran
Program penunjukan ukuran pada gambar kotak dari materi pembelajaran 5
(defun gambar() (setq a (getpoint "\n titik awal gambar: ")) (setq x (getreal "\n panjang kotak (x): ")) (setq y (getreal "\n lebar kotak (y): "))
(setq b (list (+ (car a) x) (cadr a))) (setq c (list (car b) (+ (cadr b) y))) (setq d (list (- (car c) x) (cadr c ))) (command "line" a b "" (setq grs1(entlast)) "line" b c "" (setq grs2(entlast))
"line" d a "" (setq grs3(entlast)) "fillet" "r" (* 0.1 x) "fillet" grs1 grs2 ""
60
"fillet" "r" (* 0.1 x) "fillet" grs1 grs3 "" ))
(defun lingkaran() (setq x1(/ x 2)) (setq r(/ y 3)) (setq e(list (- (car c) x1) (cadr c )))
(setq f(list (- (car e) r) (cadr e )))(setq g(list (+ (car e) r) (cadr e )))
(command "line" c g "" "line" f d "") (command "arc" "ce" e f g) )
(defun titik_dimensi() (defun rad (a) (* pi(/ a 180.0))) (setq b (list (+ (car a) x) (nth 1 a))) (setq c (list (car b) (+ (nth 1 b) y))) (setq d (list (- (car c) x) (nth 1 c ))) (command "dimlinear" b c "v" (polar b (rad 0) 10 )) (command "dimlinear" c e "h" (polar c (rad 90) 10 )) (command "dimlinear" c d "h" (polar c (rad 90) 20 )) )
(defun c:kotak() (gambar) (lingkaran) (titik_dimensi) (command "zoom" "w" "") )
; perintah (car) dan (cadr) dapat diganti dengan (nth 0) dan (nth 1)
61
Rencana Pembelajaran 9
Mata Kuliah : CAD 2&3 D (AutoCAD)Pokok Bahasan : Pemrograman Visual LISP untuk gambar teknik yang terdiri dari
pandangan atas, pandangan muka, pandangan sisi kanan, dan dilengkapi dengan ukuran menggunakan koordinat polar
Sub Pokok Bahasan : Menyusun program Visual LISP untuk gambar teknik yang terdiri dari pandangan atas, pandangan muka, pandangan sisi kanan, dan dilengkapi dengan ukuran menggunakan koordinat polar
Semester : IVAlokasi Waktu : 2x50 menitPertemuan ke- : 7
Sasaran Pendidikan:Mahasiswa mampu menyusun program otomasi gambar teknik yang terdiri dari pandangan atas, pandangan muka, pandangan sisi kanan, dan dilengkapi dengan ukuran menggunakan koordinat polar
Sasaran Pembelajaran
1. Mahasiswa dapat menyusun program Visual LISP untuk otomasi pandangan atas dari gambar yang diberikan menggunakan koordinat polar
2. Mahasiswa dapat menyusun program Visual LISP untuk otomasi pandangan muka dari gambar yang diberikan menggunakan koordinat polar
3. Mahasiswa dapat menyusun program Visual LISP untuk otomasi pandangan sisi kanan dari
62
gambar yang diberikan menggunakan koordinat polar
4. Mahasiswa dapat menyusun program Visual LISP untuk otomasi penulisan ukuran dari pandangan atas, pandangan muka, dan pandangan sisi kanan dari gambar yang diberikan menggunakan koordinat polar
Materi :
Dari gambar isometric di atas (diambilkan dari soal R pada soal pretes) harus disusun program otomasi penggambaran pandangan atas, disusul pandangan muka, lalu pandangan sisi kanan. Bila kketiga gambar telah selesai, selanjutnya gambar kerja harus dilengkapi dengan ukuran.
Untuk mempermudah penyusunan program, maka tiap titik pada gambar diberi nomor. Pandangan atas penomoran dimulai dari 1, 2, 3 dst. Pandangan muka penomoran dimulai dari 11, 12, 13, dst. Pandangan sisi kanan dimulai dari 21,22,23,dst. Maka akan diperoleh gambar
63
seperti berikut : (kunci jawaban soal R adalah gambar 13)
64
1 2 3
4
5
6
7
12
10
9
8
11
18
17
13
16 29 28 25 24
14
21 22
2326 27
20
15
Penyusunan program utama penampilan seluruh gambar
(defun c:tigabls() (pandatas) (pandmuka) (pandkanan) (dim1) (dim2) (command "zoom" "e" ""))Penyusunan program otomasi gambar pandangan atas: ; PANDANGAN ATAS (defun pandatas() (defun rad (a) (* pi (/ a 180.0))) (setq t1(getpoint "\n Titik Awal Gambar Pandangan Atas: "))
; PANDANGAN ATAS (setq t2 (polar t1 (rad 0) 28)
t3 (polar t2 (rad 0) 15) t4 (polar t3 (rad 270) 10) t5 (polar t4 (rad 270) 15) t6 (polar t5 (rad 270) 10) t7 (polar t6 (rad 180) 15) t8 (polar t7 (rad 180) 28) t9 (polar t8 (rad 90) 10) t10 (polar t9 (rad 90) 15))
(Command "pline" t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t1 "") (command "line" t2 t7 "") (command "line" t10 t4 "")(setq putus1(entlast))
65
(command "line" t9 t5 "")(setq putus2(entlast)))
Penambahan putus1 dan putus2 diperlukan untuk mengubah garis menjadi garis putus-putus melalui progam utama.Untuk mendapatkan hasil jalankan program utama.
Penyusunan program otomasi gambar pandangan muka:
; PANDANGAN MUKA(defun pandmuka() (defun rad (a) (* pi (/ a 180.0)))
(setq t11(list (car t1) (- (cadr t1) 55))); jarak antara t1 terhadap t11 adalah 55 (setq t12 (polar t11 (rad 0) 28) t13 (polar t12 (rad 270) 15)
t14 (polar t13 (rad 0) 15) t15 (polar t14 (rad 270) 10) t16 (polar t15 (rad 270) 10) t17 (polar t16 (rad 180) 43) t18 (polar t17 (rad 90) 10))
(Command "pline" t11 t12 t13 t14 t15 t16 t17 t18 t11 "")
66
(command "line" t18 t15 "")(setq putus3(entlast)))
Penambahan putus3 diperlukan untuk mengubah garis menjadi garis putus-putus melalui progam utama.Untuk mendapatkan hasil jalankan program utama.
Penyusunan program otomasi gambar pandangan sisi kanan:
; PANDANGAN SISI KANAN(defun pandkanan() (defun rad (a) (* pi (/ a 180.0))) (setq t21(list (+ (car t11) 63) (cadr t11))) ; jarak antara t11 terhadap t21 adalah 63 (setq t22 (polar t21 (rad 0) 35)
t23 (polar t22 (rad 270) 15) t24 (polar t23 (rad 270) 20) t25 (polar t24 (rad 180) 10) t26 (polar t25 (rad 90) 10) t27 (polar t26 (rad 180) 15) t28 (polar t27 (rad 270) 10) t29 (polar t28 (rad 180) 10) t20 (polar t29 (rad 90) 20))
(Command "pline" t21 t22 t23 t24 t25 t26 t27 t28 t29 t20 t21 "") (command "line" t20 t23 "") )
Untuk mendapatkan hasil jalankan program utama.
67
Penyusunan program untuk menampilkan dimensi (ukuran) dim1 untuk penunjukan ukuran pada pandangan muka dan dim2 untuk penunjukan ukuran pada pandangan sisi kanan.
; DIMENSI PANDANGAN MUKA (defun dim1(); (setq t11(list (car t1) (- (cadr t1) 55))) (setq t17(list (car t11) (- (cadr t11) 35))) (setq t16(list (+ (car t17) 43) (cadr t17))) (command "dimlinear" t16 t17 "h" (polar t17 (rad 90) -10 )) (command "dimlinear" t11 t17 "v" (polar t17 (rad 180) 10 ))
(setq t13(list (+ (car t11) 28) (- (cadr t11) 15))) (setq t14(list (+ (car t11) 43) (- (cadr t11) 15))) (command "dimlinear" t13 t14 "h" (polar t13 (rad 90) 25)) ) ; DIMENSI PANDANGAN SISI KANAN (defun dim2() (setq t22(list (+ (car t11) 98) (cadr t11))) (setq t23(list (car t22) (- (cadr t22) 15))) (command "dimlinear" t22 t23 "v" (polar t22 (rad 180) -10 ))
(setq t25(list (+ (car t15) 45) (cadr t15))) (setq t26(list (+ (car t16) 45) (cadr t16)))
68
(command "dimlinear" t25 t26 "v" (polar t25 (rad 180) -20))
(setq t24(list (+ (car t25) 10) (cadr t25))) (command "dimlinear" t24 t25 "h" (polar t25 (rad 90) -20))
(setq t28(list (- (car t25) 15) (cadr t25))) (setq t29(list (- (car t28) 10) (cadr t25))) (command "dimlinear" t28 t29 "h" (polar t28 (rad 90) -20)) )Selanjutnya tambahkan sintask (dim1) dan (dim2) pada program utama, dan jalankan programnya untuk melihat hasil dari seluruh gambar beserta dengan ukurannya.
Untuk mendapatkan garis putus putus perlu ditambahkan dua baris pada bagian akhir program utama, sehingga menjadi:
(defun c:tigabls() (pandatas) (pandmuka) (pandkanan) (dim1) (dim2) (command "zoom" "e" "") (command "regen") (command "change" putus1 putus2 putus3 "" "p" "LType" "ACAD_ISO02W100" "c" "")
69
)
Rencana Pembelajaran 10
Mata Kuliah : CAD 2&3 D (AutoCAD)Pokok Bahasan : Pemrograman Visual LISP untuk gambar teknik yang terdiri dari
pandangan atas, pandangan muka, pandangan sisi kanan, dan dilengkapi dengan ukuran menggunakan koordinat cartesian
Sub Pokok Bahasan : Menyusun program Visual LISP untuk gambar teknik yang terdiri dari pandangan atas, pandangan muka, pandangan sisi kanan, dan dilengkapi dengan ukuran menggunakan koordinat Cartesian
Semester : IVAlokasi Waktu : 2x50 menitPertemuan ke- : 8
Sasaran Pendidikan:Mahasiswa mampu menyusun program otomasi gambar teknik yang terdiri dari pandangan atas, pandangan muka, pandangan sisi kanan, dan dilengkapi dengan ukuran menggunakan koordinat cartesian
Sasaran Pembelajaran
1. Mahasiswa dapat menyusun program Visual LISP untuk otomasi pandangan atas dari gambar yang diberikan menggunakan koordinat cartesian
2. Mahasiswa dapat menyusun program Visual LISP untuk otomasi pandangan muka dari gambar yang diberikan menggunakan koordinat cartesian
3. Mahasiswa dapat menyusun program Visual LISP untuk otomasi pandangan sisi kanan dari gambar yang diberikan menggunakan koordinat cartesian
70
4. Mahasiswa dapat menyusun program Visual LISP untuk otomasi penulisan ukuran dari pandangan atas, pandangan muka, dan pandangan sisi kanan dari gambar yang diberikan menggunakan koordinat cartesian
Materi :
Dari gambar isometric di atas (diambilkan dari soal R pada soal pretes) harus disusun program otomasi penggambaran pandangan atas, disusul pandangan muka, lalu pandangan sisi kanan. Bila kketiga gambar telah selesai, selanjutnya gambar kerja harus dilengkapi dengan ukuran.
Untuk mempermudah penyusunan program, maka tiap titik pada gambar diberi nomor. Pandangan atas penomoran dimulai dari 1, 2, 3 dst. Pandangan muka penomoran dimulai dari 11, 12, 13, dst. Pandangan sisi kanan dimulai dari 21,22,23,dst. Maka akan diperoleh gambar seperti berikut : (kunci jawaban soal R adalah gambar 13)
71
Penyusunan program utama otomasi :
(defun c:tgblscart() (pandatas) (pandmuka) (pandkanan) (defun rad (a) (* pi (/ a 180.0))) (dimensi) (command "zoom" "e" "") )
72
1 2 3
4
5
6
7
12
10
9
8
11
18
17
13
16 29 28 25 24
14
21 22
2326 27
20
15
Penyusunan program otomasi pandangan atas ::
;PANDANGAN ATAS(defun pandatas() (setq t1(getpoint "\n Titik awal Penggambaran : ")) (setq t2(list (+ (car t1) 28) (cadr t1))
t3(list (+ (car t1) 43) (cadr t1)) t4(list (+ (car t1) 43) (- (cadr t1) 10)) t5(list (+ (car t1) 43) (- (cadr t1) 25)) t6(list (+ (car t1) 43) (- (cadr t1) 35)) t7(list (+ (car t1) 28) (- (cadr t1) 35)) t8(list (car t1) (- (cadr t1) 35)) t9(list (car t1) (- (cadr t1) 25)) t10(list (car t1) (- (cadr t1) 10)) t11(list (+ (car t1) 28) (- (cadr t1) 10)) t12(list (+ (car t1) 28) (- (cadr t1) 25)))
(command "pline" t1 t3 t6 t8 t1 "") (command "line" t2 t7 "") (command "line" t10 t4 "")(setq putus1(entlast)) (command "line" t9 t5 "")(setq putus2(entlast)))
Untuk mendapatkan hasil, jalankan program utama.
Penyusunan program otomasi pandangan muka:
;PANDANGAN MUKA(defun pandmuka() (setq t21(list (car t1) (- (cadr t1) 55)))
73
(setq t22(list (+ (car t21) 28) (cadr t21)) t23(list (+ (car t21) 28) (- (cadr t21) 15))
t24(list (+ (car t21) 43) (- (cadr t21) 15)) t25(list (+ (car t21) 43) (- (cadr t21) 25))
t26(list (+ (car t21) 43) (- (cadr t21) 35)) t27(list (car t21) (- (cadr t21) 35)) t28(list (car t21) (- (cadr t21) 25)))
(command "pline" t21 t22 t23 t24 t26 t27 t21 "") (command "line" t28 t25 "")(setq putus3(entlast)))
Untuk mendapatkan hasil, jalankan program utama.
Penyusunan program otomasi pandangan sisi kanan:
;PANDANGAN SISI KANAN(defun pandkanan() (setq t31(list (+ (car t21) 65) (cadr t21))) (setq t32(list (+ (car t31) 35) (cadr t31))
t33(list (+ (car t31) 35) (- (cadr t31) 15))
t34(list (+ (car t31) 35) (- (cadr t31) 35))
t35(list (+ (car t31) 25) (- (cadr t31) 35))
t36(list (+ (car t31) 25) (- (cadr t31) 25))
t37(list (+ (car t31) 10) (- (cadr t31) 25))
t38(list (+ (car t31) 10) (- (cadr t31) 35))
74
t39(list (car t31) (- (cadr t31) 35)) t30(list (car t31) (- (cadr t31) 15)))
(command "pline" t31 t32 t34 t35 t36 t37 t38 t39 t31 "") (command "line" t30 t33 ""))
Untuk mendapatkan hasil, jalankan program utama.
Penyusunan program otomasi penunjukan ukuran/dimensi:
(defun dimensi() ; PANDANGAN MUKA (command "dimlinear" t21 t27 "v" (polar t21 (rad 180) 10)) (command "dimlinear" t23 t24 "h" (polar t23 (rad 90) 25)) (command "dimlinear" t27 t26 "h" (polar t27 (rad 270) 10)) ; PANDANGAN SAMP KANAN (command "dimlinear" t32 t33 "v" (polar t32 (rad 0) 10)) (command "dimlinear" t35 t36 "v" (polar t36 (rad 0) 20)) (command "dimlinear" t39 t38 "h" (polar t39 (rad 270) 10))
75
(command "dimlinear" t35 t34 "h" (polar t35 (rad 270) 10)))
Untuk mendapatkan hasil, jalankan program utama.Untuk mendapatkan garis putus putus perlu ditambahkan dua baris pada bagian akhir program utama, sehingga menjadi
(defun c:tgblscart() (pandatas) (pandmuka) (pandkanan) (defun rad (a) (* pi (/ a 180.0))) (dimensi) (command "zoom" "e" "") (command "regen") (command "change" putus1 putus2 putus3 "" "p" "LType" "ACAD_ISO02W100" "c" "") )
Strategi pembelajaran:
1. Menjalankan program 2. Menampilkan gambar isometrik (soal R)
dan membahas gambar proyeksinya (pandangan atas, pandangan muka, pandangan sisi kanan) beserta dengan ukurannya
3. menjelaskan penyusunan program otomasi penggambaran tiap pandangannya
4. menjelaskan program utama untuk mejalankan program
76
5. menjelaskan programpenggambaran ukuran
6. menugaskan mahasiswa untuk menyusun program hingga berhasil
12
77
3456789012345678901234567890123456
78