draft lisp

94
BAB I PENGENALAN VISUAL LISP 1.1 Bahasa Pemrograman LISP 1.2 AutoLISP atau Visual LISP 1.3 Editor Auto LISP 1

Upload: dayad-delsworth

Post on 04-Aug-2015

132 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Draft Lisp

BAB I

PENGENALAN VISUAL LISP

1.1 Bahasa Pemrograman LISP

1.2 AutoLISP atau Visual LISP

1.3 Editor Auto LISP

1

Page 2: Draft Lisp

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

Page 3: Draft Lisp

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

Page 4: Draft Lisp

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

Page 5: Draft Lisp

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

Page 6: Draft Lisp

(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

Page 7: Draft Lisp

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

Page 8: Draft Lisp

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

Page 9: Draft Lisp

(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

Page 10: Draft Lisp

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

Page 11: Draft Lisp

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

Page 12: Draft Lisp

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

Page 13: Draft Lisp

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

Page 14: Draft Lisp

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

Page 15: Draft Lisp

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

Page 16: Draft Lisp

- 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

Page 17: Draft Lisp

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

Page 18: Draft Lisp

Gambar 3.12. Kode program segitiga.lsp

Gambar 3.13 Hasil dari program segitiga.lsp

18

Page 19: Draft Lisp

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

Page 20: Draft Lisp

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

Page 21: Draft Lisp

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

Page 22: Draft Lisp

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

Page 23: Draft Lisp

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

Page 24: Draft Lisp

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

Page 25: Draft Lisp

Gambar 3.22 Hasil program grsmiring.lsp

Gambar 3.23 Kode program duagrs.lsp

25

Page 26: Draft Lisp

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

Page 27: Draft Lisp

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

Page 28: Draft Lisp

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

Page 29: Draft Lisp

29

Page 30: Draft Lisp

3.3.1 Membuat program bintang dengan koordinat polar

30

Page 31: Draft Lisp

3.3.1 Membuat program bintang dengan koordinat cartesian

31

Page 32: Draft Lisp

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

Page 33: Draft Lisp

(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

Page 34: Draft Lisp

(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

Page 35: Draft Lisp

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

Page 36: Draft Lisp

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

Page 37: Draft Lisp

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

Page 38: Draft Lisp

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

Page 39: Draft Lisp

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

Page 40: Draft Lisp

- 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

Page 41: Draft Lisp

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

Page 42: Draft Lisp

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

Page 43: Draft Lisp

; 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

Page 44: Draft Lisp

; 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

Page 45: Draft Lisp

(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

Page 46: Draft Lisp

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

Page 47: Draft Lisp

(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

Page 48: Draft Lisp

(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

Page 49: Draft Lisp

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

Page 50: Draft Lisp

(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

Page 51: Draft Lisp

- 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

Page 52: Draft Lisp

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

Page 53: Draft Lisp

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

Page 54: Draft Lisp

- 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

Page 55: Draft Lisp

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

Page 56: Draft Lisp

)

(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

Page 57: Draft Lisp

; 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

Page 58: Draft Lisp

(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

Page 59: Draft Lisp

)

(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

Page 60: Draft Lisp

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

Page 61: Draft Lisp

"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

Page 62: Draft Lisp

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

Page 63: Draft Lisp

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

Page 64: Draft Lisp

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

Page 65: Draft Lisp

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

Page 66: Draft Lisp

(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

Page 67: Draft Lisp

(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

Page 68: Draft Lisp

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

Page 69: Draft Lisp

(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

Page 70: Draft Lisp

)

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

Page 71: Draft Lisp

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

Page 72: Draft Lisp

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

Page 73: Draft Lisp

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

Page 74: Draft Lisp

(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

Page 75: Draft Lisp

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

Page 76: Draft Lisp

(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

Page 77: Draft Lisp

5. menjelaskan programpenggambaran ukuran

6. menugaskan mahasiswa untuk menyusun program hingga berhasil

12

77

Page 78: Draft Lisp

3456789012345678901234567890123456

78