KOmonitas oMOngn DOang

Berbuatlah apa yang bermanfaat untuk orang banyak

Senin, 14 Juni 2010

Contoh Membuat Garis

Teknik menggambar yang paling dasar adalah membuat garis, garis harus dibuat dari awal tujuan sampai ke akhir tujuan, contoh dibawah ini memperlihatkan sebuah program membuat garis, dengan bantuan fungsi seting “orthomode “ agar didapat kedudukan kursor hanya pada posisi horizontal atau vertikal, sebelum program ini bekerja seting orthomode harus diubah ke nilai satu, dengan bantuan fungsi “if”, akan memberikan alternative jika seting orthomode telah diset ke nilai satu, maka fungsi if ini tidak akan bekerja, tetapi bila seting orthomode itu selain nilai 1, maka fungsi if akan bekerja dan langsung diset ke angka 1.

Langkah selanjutnya mengeset variabel p1, disini program diset sedemikian rupa, langkah pertama yang muncul di layar monitor, adalah menanyakan kepada user atau pemakai, agar kursor di klik disembarang tempat, dan pada pertanyaan itu terdapat tanda “ <0,0,0> “, yang artinya bila pemakai tidak berkeinginan untuk melakukan proses klik, pemakai hanya dianjurkan menekan tombol enter saja, otomatis variabel p1 itu akan diset ke nilai (0 0 0) berkat bantuan fungsi if, demikian pula pada variabel p2, fungsi kerjanya sama dengan variabel p1, tapi ada satu tambahan setelah fungsi getpoint ditambahkan variabel p1, ini tujuannya agar garis kursor atau rubber band selalu mengikuti kemana arah kursor dialihkan.

Kemudian dengan bantuan fungsi if lagi, memastikan apakah varibel p1 dan p2 masih ada atau eksis , jika hasilnya betul , perintah pembuatan garis dilaksanakan, lantas dilanjutkan dengan perintah pembesaran agar garis tadi yang dibuat bisa terlihat dengan jelas.

Perintah terakhir adalah mengembalikan fungsi seting orthomode ke asal kembali, dan menutup program dengan fungsi princ, agar program keluar dengan tenang.
view sourceprint?
01.; cmg = contoh membuat garis
02.(defun c:cmg (/ om p1 p2)
03.(setq om (getvar "orthomode"))
04.(if
05.(/= om 1)
06.(setvar "orthomode" 1)
07.) ; if
08.(setq p1 (getpoint "nDi klik pada sembarang lokasi<0,0,0>: "))
09.(if (= p1 nil)(setq p1 '(0 0 0)))
10.(setq p2 (getpoint p1 "nDi klik pada sembarang lokasi<10,0,0>: "))
11.(if (= p2 nil)(setq p2 '(10 0 0)))
12.(if
13.(and p1 p2)
14.(command "_line" p1 p2 "")
15.) ; if
16.(command "_zoom" "e")
17.(setvar "orthomode" om)
18.(princ)
19.) ; defun
Contoh Membuat Kotak

Membuat kotak bisa dibuat berbagai cara , dengan menggunakan fungsi line akan terbentuk kotak dengan garis individual, dengan fungsi pline membentuk jadi satu entiti, serta dengan fungsi rectangular akan terbentuk jadi satu entiti pula.
view sourceprint?
01.; cmk = contoh membuat kotak
02.(defun c:cmk (/ om p1 p2 p3 p4)
03.(setq om (getvar "orthomode"))
04.(if
05.(/= om 1)
06.(setvar "orthomode" 1)
07.) ; if
08.(setq p1 (getpoint "nDi klik pada sembarang lokasi<0,0,0>: "))
09.(if (= p1 nil)(setq p1 '(0 0 0)))
10.(setq p2 (getpoint p1 "nDi klik pada sembarang lokasi<10,0,0>: "))
11.(if (= p2 nil)(setq p2 '(10 0 0)))
12.(setq p3 (getpoint p2 "nDi klik pada sembarang lokasi<10,5,0>: "))
13.(if (= p3 nil)(setq p3 '(10 5 0)))
14.(setq p4 (getpoint p3 "nDi klik pada sembarang lokasi<0,5,0>: "))
15.(if (= p4 nil)(setq p4 '(0 5 0)))
16.(command "_pline" p1 p2 p3 p4 "c" "")
17.(command "_zoom" "e")
18.(setvar "orthomode" om)
19.(princ)
20.) ; defun
Contoh Membuat Lingkaran

Lingkaran bisa pula dibuat dengan beberapa cara, umumnya dibuat dengan fungsi circle, objek menjadi satu entiti, tapi tidak tertutup kemungkinan bisa dibuat dengan menggunakan point
view sourceprint?
01.; cml = contoh membuat lingkaran
02.(defun c:cml (/ om p1 p2 p3 p4)
03.(setq om (getvar "orthomode"))
04.(if
05.(/= om 1)
06.(setvar "orthomode" 1)
07.) ; if
08.(setq rad (getdist "nMasukan radius lingkaran<5>: "))
09.(if (= rad nil)(setq rad 5))
10.(setq p1 (getpoint "nDi klik pada sembarang lokasi<0,0,0>: "))
11.(if (= p1 nil)(setq p1 '(0 0 0)))
12.(command "_circle" p1 rad "")
13.(command "_zoom" "e")
14.(setvar "orthomode" om)
15.(princ)
16.) ; defun
Contoh Membuat Elip

Elip adalah lingkaran yang radiusnya tidak sama, maka ada yang bernama radius besar dan radius kecil, elip bisa dibuat dari sebuah lingkaran , dengan trik tertentu maka sebuah lingkaran bisa menjadi sebuah elip
view sourceprint?
01.; cme = contoh membuat elip
02.(defun c:cme (/ om p1 p2 pt)
03.(setq om (getvar "orthomode"))
04.(if
05.(/= om 1)
06.(setvar "orthomode" 1)
07.) ; if
08.(setq minor (getdist "nMasukan jarak terpendek<5>: "))
09.(if (= minor nil)(setq minor 5))
10.(setq major (getdist "nMasukan jarak terpanjang<10>: "))
11.(if (= major nil)(setq major 10))
12.(setq pt (getpoint "nKlik lokasi untuk elip<0,0,0>: "))
13.(if (= pt nil)(setq pt '(0 0 0)))
14.(setq p1 (polar pt (* pi 0.5)(/ minor 2.0)))
15.(setq p2 (polar pt 0 (/ major 2.0)))
16.(command "_ellipse" pt p1 p2)
17.(command "_zoom" "e")
18.(setvar "orthomode" om)
19.(princ)
20.) ; defun
Contoh membuat Arc

Membuat busur atau arc, dibutuhkan tiga buah titik, yang berupa variabel, sebenarnya untuk membuat arc ada beberapa cara, tetapi disini hanya disajikan yang paling mudah dipelajari.
view sourceprint?
01.; cma = contoh membuat arc
02.(defun c:cma (/ om p1 p2 p3)
03.(setq om (getvar "orthomode"))
04.(if
05.(= om 1)
06.(setvar "orthomode" 0)
07.) ; if
08.(setq p1 (getpoint "nKlik untuk awal arc<0,0,0>: "))
09.(if (= p1 nil)(setq p1 '(0 0 0)))
10.(setq p2 (getpoint p1"nKlik untuk tengah arc<10,0,0>: "))
11.(if (= p2 nil)(setq p2 '(10 0 0)))
12.(setq p3 (getpoint p2"nKlik untuk akhir arc<10,10,0>: "))
13.(if (= p3 nil)(setq p3 '(10 10 0)))
14.(command "_arc" p1 p2 p3 "")
15.(command "_zoom" "e")
16.(setvar "orthomode" om)
17.(princ)
18.) ; defun
Contoh Membuat Segi banyak

Poligon atau segi banyak, adalah jumlah sudutnya atau seginya bisa diatur sesuai keinginan pemakai, dan bentuk segi tersebut akan dibentuk diluar atau didalam radius lingkaran, tergantung pilihan dari para pemakainya.
view sourceprint?
01.; cmsb = contoh membuat segi banyak
02.(defun c:cmsb (/ om p1 p2 p3)
03.(setq om (getvar "orthomode"))
04.(if
05.(= om 1)
06.(setvar "orthomode" 0)
07.) ; if
08.(setq jml (getint "nJumlah polygon<6>: "))
09.(if (= jml nil)(setq jml 6))
10.(setq opt (strcase (getstring "nPilih Inscribed/Circumscribed: ")))
11.(cond ((= opt nil)(setq opt "I"))
12.((= opt "C")(setq opt "C"))
13.) ; cond
14.(setq p1 (getpoint "nJarak radius polygon<0,0,0>: "))
15.(if (= p1 nil)(setq p1 '(0 0 0)))
16.(setq p2 (getdist p1"nJarak radius polygon<10>: "))
17.(if (= p2 nil)(setq p2 10))
18.(command "_polygon" jml p1 opt p2 "")
19.(command "_zoom" "e")
20.(setvar "orthomode" om)
21.(princ)
22.) ; defun

15.7. Contoh membuat Copy
Program ini akan bekerja hanya untuk mendeteksi sebuah lingkaran , dan akan membuat duplikat, serta akan menanyakan kepada pemakai, lokasi dimana diletakannya untuk objek baru.
view sourceprint?
01.; cmo = contoh membuat copy
02.(defun c:cmo (/ bp etyp om opt ss sse ssn)
03.(if
04.(setq ss (car (entsel "nPilih satu object lingkaran")))
05.(progn
06.(setq sse (entget ss))
07.(setq etyp (cdr (assoc 0 sse)))
08.(if
09.(= etyp "CIRCLE")
10.(progn
11.(setq bp (cdr (assoc 10 sse)))
12.(setq opt (getpoint "nPilih lokasi untuk copy<0,0,0>: "))
13.(command "_copy" ss "" bp opt)
14.) ; progn
15.(alert "nObjek bukan lingkaran")
16.) ; if
17.) ; progn
18.(alert "nObjek tidak terpilih,ulangi")
19.) ; if
20.(command "_zoom" "e")
21.(princ)
22.) ; defun

15.8. Contoh membuat copy array
Membentuk duplikat ada dua cara, salah satunya bentuk melingkar dan berbaris, dengan program ini kedua-duanya dipakai.
view sourceprint?
01.; cmca = contoh membuat copy array
02.(defun c:cmca (/ column etyp lok opt pitch pitch_column
03.pitch_row rotasi row ss sse total_polar)
04.(if
05.(setq ss (car (entsel "nPilih satu object lingkaran")))
06.(progn
07.(setq sse (entget ss))
08.(setq etyp (cdr (assoc 0 sse)))
09.(if
10.(= etyp "CIRCLE")
11.(progn
12.(setq opt (strcase (getstring "nPilih polar/rectang[P/R]: ")))
13.(cond
14.((= opt "P")
15.(progn
16.(setq opt "P")
17.(setq total_polar (getint "nJumlah polar<15>: "))
18.(if (= total_polar nil)(setq total_polar 15))
19.(setq rotasi (getreal "nSudut putar<360>: "))
20.(if (= rotasi nil)(setq rotasi 360))
21.(setq lok (getpoint "nBasis rotasi<0,0,0>: "))
22.(if (= lok nil)(setq lok '(0 0 0)))
23.(command "_array" ss "" opt lok total_polar rotasi "")
24.) ; progn
25.)
26.((and (= opt "R")(= opt ""))
27.(progn
28.(setq opt "R")
29.(setq row (getint "nJumlah baris<5>: "))
30.(if (= row nil)(setq row 5))
31.(setq column (getint "nJumlah kolom<5>: "))
32.(if (= column nil)(setq column 5))
33.(setq pitch (getreal "nJarak baris<10>: "))
34.(if (= pitch_row nil)(setq pitch_row 10))
35.(setq pitch_column (getreal "nJarak kolom<15>: "))
36.(if (= pitch_column nil)(setq pitch_column 15))
37.(command "_array" ss "" opt row column pitch_row pitch_column)
38.) ; progn
39.)
40.) ; cond
41.) ; progn
42.(alert "nObjek bukan lingkaran")
43.) ; if
44.) ; progn
45.(alert "nObjek tidak terpilih,ulangi")
46.) ; if
47.(command "_zoom" "e")
48.(princ)
49.) ; defun
Contoh membuat offset

Sebelum menjalankan program ini, buatlah terlebih dahulu sebuah garis, langkah berikutnya akan menanyakan jarak offsetnya yang harus diisi, nilainya bisa bilangan bulat ataupun bilangan real (yang memakai koma), kemudian akan menanyakan dimana lokasi untuk menaruh offsetnya.
view sourceprint?
01.; cmo = contoh membuat offset
02.(defun c:cmo (/ dis etyp pt ss sse)
03.(if
04.(setq ss (car (entsel "nPilih satu object garis")))
05.(progn
06.(setq sse (entget ss))
07.(setq etyp (cdr (assoc 0 sse)))
08.(if
09.(= etyp "LINE")
10.(progn
11.(setq dis (getdist "nJarak offset: "))
12.(setq pt (getpoint "nKlik disebelah garis: "))
13.(command "_offset" dis ss pt "")
14.) ; progn
15.(alert "nObjek bukan garis")
16.) ; if
17.) ; progn
18.(alert "nObjek tidak terpilih,ulangi")
19.) ; if
20.(command "_zoom" "e")
21.(princ)
22.) ; defun
Contoh membuat mirror

Buatlah sebuah rectangular atau kotak, disebelah kotak tersebut buat lagi sebuah garis dengan panjang sembarang, lalu jalankan program ini.
view sourceprint?
01.; cmm = contoh membuat mirror
02.(defun c:cmm (/ ep sp ss1 ss2 sse)
03.(if
04.(setq ss1 (car (entsel "nPilih satu object")))
05.(progn
06.(if
07.(setq ss2 (car (entsel "nPilih satu object sebagai referensi")))
08.(progn
09.(setq sse (entget ss2))
10.(setq sp (cdr (assoc 10 sse)))
11.(setq ep (cdr (assoc 11 sse)))
12.(command "_mirror" ss1 ss2 "" sp ep "")
13.) ; progn
14.(alert "nObjek tidak terpilih,ulangi")
15.) ; if
16.) ; progn
17.(alert "nObjek tidak terpilih,ulangi")
18.) ; if
19.(command "_zoom" "e")
20.(princ)
21.) ; defun
Contoh membuat move

Buatlah sebuah lingkaran dengan diameter bebas, jalankan program ini dan ikuti petunjuknya yang dikeluarkan oleh program ini.
view sourceprint?
01.; cmmo = contoh membuat move
02.(defun c:cmmo (/ bp etyp om opt ss sse ssn)
03.(if
04.(setq ss (car (entsel "nPilih satu object lingkaran")))
05.(progn
06.(setq sse (entget ss))
07.(setq etyp (cdr (assoc 0 sse)))
08.(if
09.(= etyp "CIRCLE")
10.(progn
11.(setq bp (cdr (assoc 10 sse)))
12.(setq opt (getpoint "nPilih lokasi untuk lokasi baru<0,0,0>: "))
13.(if (= opt nil)(setq opt '(0 0 0)))
14.(command "_move" ss "" bp opt)
15.) ; progn
16.(alert "nObjek bukan lingkaran")
17.) ; if
18.) ; progn
19.(alert "nObjek tidak terpilih,ulangi")
20.) ; if
21.(command "_zoom" "e")
22.(princ)
23.) ; defun
Contoh membuat trim

Buat garis horizontal, kemudian buat lagi garis bentuk vertikal dengan memotong garis horizontal, kemudian jalankan program ini.
view sourceprint?
01.; cmt = contoh membuat trim
02.(defun c:cmt (/ om opt ss1 ss2)
03.(if
04.(and
05.(setq ss1 (car (entsel "nPilih satu object garis horizontal")))
06.(setq ss2 (car (entsel "nPilih satu object garis vertical")))
07.) ; and
08.(progn
09.(setq om (getvar "osmode"))
10.(if
11.(/= om 1)
12.(setvar "osmode" 1)
13.) ; if
14.(setq opt (getpoint "nPilih salah satu ujung garis: "))
15.(setvar "osmode" om)
16.(command "_trim" ss1 ss2 "" opt "")
17.) ; progn
18.(alert "nObjek tidak terpilih,ulangi")
19.) ; if
20.(command "_zoom" "e")
21.(princ)
22.) ; defun
Contoh membuat fillet

Ikuti langkah sebelumnya, program ini masih ada kaitannya dengan aturan tersebut.
view sourceprint?
01.; cmf = contoh membuat fillet
02.(defun c:cmf (/ f1 f2 om opt)
03.(setq om (getvar "osmode"))
04.(if
05.(/= om 2)
06.(setvar "osmode" 2)
07.) ; if
08.(if
09.(and
10.(setq f1 (car (entsel "nPilih satu object garis horizontal")))
11.(setq f2 (car (entsel "nPilih satu object garis vertical")))
12.) ; and
13.(progn
14.(setq opt (getdist "nMasukan radius untuk fillet<1>: "))
15.(if (= opt nil)(setq opt 1))
16.(setvar "osmode" om)
17.(command "_fillet" "r" opt "_fillet" f1 f2 )
18.) ; progn
19.(alert "nObjek tidak terpilih,ulangi")
20.) ; if
21.(command "_zoom" "e")
22.(princ)
23.) ; defun
Contoh membuat extend

Dibutuhkan dua buah garis, salah satu berbentuk horizontal, dari kordinat 0,0 sampai dengan 10,0. Buat lagi sebuah garis vertikal dengan kordinat 15,-5 sampai dengan kordinat 15,15.
Ujilah program ini, sejauhmana manfaatnya, perhatikan pemakaian fungsi osnap, banyak programmer yang menggunakan fungsi ini , karena osnap banyak sekali manfaatnya untuk digunakan pada program Autolisp.
view sourceprint?
01.; cmge = contoh membuat garis extend
02.(defun c:cmge (/ f2 lst om ss ssn1 ssn2)
03.(princ "nPilih dua garis object")
04.(setq ss (ssget))
05.(setq ssn1 (ssname ss 0))
06.(setq ssn2 (ssname ss 1))
07.(setvar "osmode" 1)
08.(setq str "nPilih yg mau dipanjangkan")
09.(setq f2 (osnap (cadr (entsel str))) "endp"))
10.(setvar "osmode" 0)
11.(command "_extend" ssn1 ssn2 "" "e" "e" f2 "")
12.(command "_zoom" "e")
13.(princ)
14.) ; defun
Contoh membuat chamfer

Buatlah garis dari kordinat 0,0 sampai dengan 10,0 dan sambungkan dari kordinat 10,0 sampai dengan 10,15, cobalah program ini anda akan merasakan manfaatnya.
view sourceprint?
01.; cmch = contoh membuat chamfer
02.(defun c:cmch (/ f1 f2 dis)
03.(setq om (getvar "osmode"))
04.(if
05.(/= om 2)
06.(setvar "osmode" 2)
07.) ; if
08.(if
09.(and
10.(setq f1 (car (entsel "nPilih garis horizontal")))
11.(setq f2 (car (entsel "nPilih garis vertical")))
12.) ; and
13.(progn
14.(setvar "osmode" om)
15.(setq dis (getdist "nMasukan jarak untuk chamfer: "))
16.(command "_chamfer" "d" dis dis "" "_chamfer" f1 f2 "")
17.) ; progn
18.(alert "nObjek tidak terpilih,ulangi")
19.) ; if
20.(princ)
21.) ; defun

Tidak ada komentar: