Contoh program

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.

[sourcecode language=’cpp’]
; cmg = contoh membuat garis
(defun c:cmg (/ om p1 p2)
(setq om (getvar “orthomode”))
(if
(/= om 1)
(setvar “orthomode” 1)
) ; if
(setq p1 (getpoint “nDi klik pada sembarang lokasi<0,0,0>: “))
(if (= p1 nil)(setq p1 ‘(0 0 0)))
(setq p2 (getpoint p1 “nDi klik pada sembarang lokasi<10,0,0>: “))
(if (= p2 nil)(setq p2 ‘(10 0 0)))
(if
(and p1 p2)
(command “_line” p1 p2 “”)
) ; if
(command “_zoom” “e”)
(setvar “orthomode” om)
(princ)
) ; defun
[/sourcecode]

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.

[sourcecode language=’cpp’]
; cmk = contoh membuat kotak
(defun c:cmk (/ om p1 p2 p3 p4)
(setq om (getvar “orthomode”))
(if
(/= om 1)
(setvar “orthomode” 1)
) ; if
(setq p1 (getpoint “nDi klik pada sembarang lokasi<0,0,0>: “))
(if (= p1 nil)(setq p1 ‘(0 0 0)))
(setq p2 (getpoint p1 “nDi klik pada sembarang lokasi<10,0,0>: “))
(if (= p2 nil)(setq p2 ‘(10 0 0)))
(setq p3 (getpoint p2 “nDi klik pada sembarang lokasi<10,5,0>: “))
(if (= p3 nil)(setq p3 ‘(10 5 0)))
(setq p4 (getpoint p3 “nDi klik pada sembarang lokasi<0,5,0>: “))
(if (= p4 nil)(setq p4 ‘(0 5 0)))
(command “_pline” p1 p2 p3 p4 “c” “”)
(command “_zoom” “e”)
(setvar “orthomode” om)
(princ)
) ; defun
[/sourcecode]

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

[sourcecode language=’cpp’]
; cml = contoh membuat lingkaran
(defun c:cml (/ om p1 p2 p3 p4)
(setq om (getvar “orthomode”))
(if
(/= om 1)
(setvar “orthomode” 1)
) ; if
(setq rad (getdist “nMasukan radius lingkaran<5>: “))
(if (= rad nil)(setq rad 5))
(setq p1 (getpoint “nDi klik pada sembarang lokasi<0,0,0>: “))
(if (= p1 nil)(setq p1 ‘(0 0 0)))
(command “_circle” p1 rad “”)
(command “_zoom” “e”)
(setvar “orthomode” om)
(princ)
) ; defun
[/sourcecode]

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

[sourcecode language=’cpp’]
; cme = contoh membuat elip
(defun c:cme (/ om p1 p2 pt)
(setq om (getvar “orthomode”))
(if
(/= om 1)
(setvar “orthomode” 1)
) ; if
(setq minor (getdist “nMasukan jarak terpendek<5>: “))
(if (= minor nil)(setq minor 5))
(setq major (getdist “nMasukan jarak terpanjang<10>: “))
(if (= major nil)(setq major 10))
(setq pt (getpoint “nKlik lokasi untuk elip<0,0,0>: “))
(if (= pt nil)(setq pt ‘(0 0 0)))
(setq p1 (polar pt (* pi 0.5)(/ minor 2.0)))
(setq p2 (polar pt 0 (/ major 2.0)))
(command “_ellipse” pt p1 p2)
(command “_zoom” “e”)
(setvar “orthomode” om)
(princ)
) ; defun
[/sourcecode]

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.

[sourcecode language=’cpp’]
; cma = contoh membuat arc
(defun c:cma (/ om p1 p2 p3)
(setq om (getvar “orthomode”))
(if
(= om 1)
(setvar “orthomode” 0)
) ; if
(setq p1 (getpoint “nKlik untuk awal arc<0,0,0>: “))
(if (= p1 nil)(setq p1 ‘(0 0 0)))
(setq p2 (getpoint p1″nKlik untuk tengah arc<10,0,0>: “))
(if (= p2 nil)(setq p2 ‘(10 0 0)))
(setq p3 (getpoint p2″nKlik untuk akhir arc<10,10,0>: “))
(if (= p3 nil)(setq p3 ‘(10 10 0)))
(command “_arc” p1 p2 p3 “”)
(command “_zoom” “e”)
(setvar “orthomode” om)
(princ)
) ; defun
[/sourcecode]

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.

[sourcecode language=’cpp’]
; cmsb = contoh membuat segi banyak
(defun c:cmsb (/ om p1 p2 p3)
(setq om (getvar “orthomode”))
(if
(= om 1)
(setvar “orthomode” 0)
) ; if
(setq jml (getint “nJumlah polygon<6>: “))
(if (= jml nil)(setq jml 6))
(setq opt (strcase (getstring “nPilih Inscribed/Circumscribed: “)))
(cond ((= opt nil)(setq opt “I”))
((= opt “C”)(setq opt “C”))
) ; cond
(setq p1 (getpoint “nJarak radius polygon<0,0,0>: “))
(if (= p1 nil)(setq p1 ‘(0 0 0)))
(setq p2 (getdist p1″nJarak radius polygon<10>: “))
(if (= p2 nil)(setq p2 10))
(command “_polygon” jml p1 opt p2 “”)
(command “_zoom” “e”)
(setvar “orthomode” om)
(princ)
) ; defun
[/sourcecode]
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.
[sourcecode language=’cpp’]
; cmo = contoh membuat copy
(defun c:cmo (/ bp etyp om opt ss sse ssn)
(if
(setq ss (car (entsel “nPilih satu object lingkaran”)))
(progn
(setq sse (entget ss))
(setq etyp (cdr (assoc 0 sse)))
(if
(= etyp “CIRCLE”)
(progn
(setq bp (cdr (assoc 10 sse)))
(setq opt (getpoint “nPilih lokasi untuk copy<0,0,0>: “))
(command “_copy” ss “” bp opt)
) ; progn
(alert “nObjek bukan lingkaran”)
) ; if
) ; progn
(alert “nObjek tidak terpilih,ulangi”)
) ; if
(command “_zoom” “e”)
(princ)
) ; defun
[/sourcecode]
15.8. Contoh membuat copy array
Membentuk duplikat ada dua cara, salah satunya bentuk melingkar dan berbaris, dengan program ini kedua-duanya dipakai.
[sourcecode language=’cpp’]
; cmca = contoh membuat copy array
(defun c:cmca (/ column etyp lok opt pitch pitch_column
pitch_row rotasi row ss sse total_polar)
(if
(setq ss (car (entsel “nPilih satu object lingkaran”)))
(progn
(setq sse (entget ss))
(setq etyp (cdr (assoc 0 sse)))
(if
(= etyp “CIRCLE”)
(progn
(setq opt (strcase (getstring “nPilih polar/rectang[P/R]: “)))
(cond
((= opt “P”)
(progn
(setq opt “P”)
(setq total_polar (getint “nJumlah polar<15>: “))
(if (= total_polar nil)(setq total_polar 15))
(setq rotasi (getreal “nSudut putar<360>: “))
(if (= rotasi nil)(setq rotasi 360))
(setq lok (getpoint “nBasis rotasi<0,0,0>: “))
(if (= lok nil)(setq lok ‘(0 0 0)))
(command “_array” ss “” opt lok total_polar rotasi “”)
) ; progn
)
((and (= opt “R”)(= opt “”))
(progn
(setq opt “R”)
(setq row (getint “nJumlah baris<5>: “))
(if (= row nil)(setq row 5))
(setq column (getint “nJumlah kolom<5>: “))
(if (= column nil)(setq column 5))
(setq pitch (getreal “nJarak baris<10>: “))
(if (= pitch_row nil)(setq pitch_row 10))
(setq pitch_column (getreal “nJarak kolom<15>: “))
(if (= pitch_column nil)(setq pitch_column 15))
(command “_array” ss “” opt row column pitch_row pitch_column)
) ; progn
)
) ; cond
) ; progn
(alert “nObjek bukan lingkaran”)
) ; if
) ; progn
(alert “nObjek tidak terpilih,ulangi”)
) ; if
(command “_zoom” “e”)
(princ)
) ; defun
[/sourcecode]

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.

[sourcecode language=’cpp’]
; cmo = contoh membuat offset
(defun c:cmo (/ dis etyp pt ss sse)
(if
(setq ss (car (entsel “nPilih satu object garis”)))
(progn
(setq sse (entget ss))
(setq etyp (cdr (assoc 0 sse)))
(if
(= etyp “LINE”)
(progn
(setq dis (getdist “nJarak offset: “))
(setq pt (getpoint “nKlik disebelah garis: “))
(command “_offset” dis ss pt “”)
) ; progn
(alert “nObjek bukan garis”)
) ; if
) ; progn
(alert “nObjek tidak terpilih,ulangi”)
) ; if
(command “_zoom” “e”)
(princ)
) ; defun
[/sourcecode]

Contoh membuat mirror

Buatlah sebuah rectangular atau kotak, disebelah kotak tersebut buat lagi sebuah garis dengan panjang sembarang, lalu jalankan program ini.
[sourcecode language=’cpp’]
; cmm = contoh membuat mirror
(defun c:cmm (/ ep sp ss1 ss2 sse)
(if
(setq ss1 (car (entsel “nPilih satu object”)))
(progn
(if
(setq ss2 (car (entsel “nPilih satu object sebagai referensi”)))
(progn
(setq sse (entget ss2))
(setq sp (cdr (assoc 10 sse)))
(setq ep (cdr (assoc 11 sse)))
(command “_mirror” ss1 ss2 “” sp ep “”)
) ; progn
(alert “nObjek tidak terpilih,ulangi”)
) ; if
) ; progn
(alert “nObjek tidak terpilih,ulangi”)
) ; if
(command “_zoom” “e”)
(princ)
) ; defun
[/sourcecode]

Contoh membuat move

Buatlah sebuah lingkaran dengan diameter bebas, jalankan program ini dan ikuti petunjuknya yang dikeluarkan oleh program ini.
[sourcecode language=’cpp’]
; cmmo = contoh membuat move
(defun c:cmmo (/ bp etyp om opt ss sse ssn)
(if
(setq ss (car (entsel “nPilih satu object lingkaran”)))
(progn
(setq sse (entget ss))
(setq etyp (cdr (assoc 0 sse)))
(if
(= etyp “CIRCLE”)
(progn
(setq bp (cdr (assoc 10 sse)))
(setq opt (getpoint “nPilih lokasi untuk lokasi baru<0,0,0>: “))
(if (= opt nil)(setq opt ‘(0 0 0)))
(command “_move” ss “” bp opt)
) ; progn
(alert “nObjek bukan lingkaran”)
) ; if
) ; progn
(alert “nObjek tidak terpilih,ulangi”)
) ; if
(command “_zoom” “e”)
(princ)
) ; defun
[/sourcecode]

Contoh membuat trim

Buat garis horizontal, kemudian buat lagi garis bentuk vertikal dengan memotong garis horizontal, kemudian jalankan program ini.
[sourcecode language=’cpp’]
; cmt = contoh membuat trim
(defun c:cmt (/ om opt ss1 ss2)
(if
(and
(setq ss1 (car (entsel “nPilih satu object garis horizontal”)))
(setq ss2 (car (entsel “nPilih satu object garis vertical”)))
) ; and
(progn
(setq om (getvar “osmode”))
(if
(/= om 1)
(setvar “osmode” 1)
) ; if
(setq opt (getpoint “nPilih salah satu ujung garis: “))
(setvar “osmode” om)
(command “_trim” ss1 ss2 “” opt “”)
) ; progn
(alert “nObjek tidak terpilih,ulangi”)
) ; if
(command “_zoom” “e”)
(princ)
) ; defun
[/sourcecode]

Contoh membuat fillet

Ikuti langkah sebelumnya, program ini masih ada kaitannya dengan aturan tersebut.
[sourcecode language=’cpp’]
; cmf = contoh membuat fillet
(defun c:cmf (/ f1 f2 om opt)
(setq om (getvar “osmode”))
(if
(/= om 2)
(setvar “osmode” 2)
) ; if
(if
(and
(setq f1 (car (entsel “nPilih satu object garis horizontal”)))
(setq f2 (car (entsel “nPilih satu object garis vertical”)))
) ; and
(progn
(setq opt (getdist “nMasukan radius untuk fillet<1>: “))
(if (= opt nil)(setq opt 1))
(setvar “osmode” om)
(command “_fillet” “r” opt “_fillet” f1 f2 )
) ; progn
(alert “nObjek tidak terpilih,ulangi”)
) ; if
(command “_zoom” “e”)
(princ)
) ; defun
[/sourcecode]

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.

[sourcecode language=’cpp’]
; cmge = contoh membuat garis extend
(defun c:cmge (/ f2 lst om ss ssn1 ssn2)
(princ “nPilih dua garis object”)
(setq ss (ssget))
(setq ssn1 (ssname ss 0))
(setq ssn2 (ssname ss 1))
(setvar “osmode” 1)
(setq str “nPilih yg mau dipanjangkan”)
(setq f2 (osnap (cadr (entsel str))) “endp”))
(setvar “osmode” 0)
(command “_extend” ssn1 ssn2 “” “e” “e” f2 “”)
(command “_zoom” “e”)
(princ)
) ; defun
[/sourcecode]

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.

[sourcecode language=’cpp’]
; cmch = contoh membuat chamfer
(defun c:cmch (/ f1 f2 dis)
(setq om (getvar “osmode”))
(if
(/= om 2)
(setvar “osmode” 2)
) ; if
(if
(and
(setq f1 (car (entsel “nPilih garis horizontal”)))
(setq f2 (car (entsel “nPilih garis vertical”)))
) ; and
(progn
(setvar “osmode” om)
(setq dis (getdist “nMasukan jarak untuk chamfer: “))
(command “_chamfer” “d” dis dis “” “_chamfer” f1 f2 “”)
) ; progn
(alert “nObjek tidak terpilih,ulangi”)
) ; if
(princ)
) ; defun
[/sourcecode]

  • http://handoko.info handoko

    terima kasih mas atas artikelnya, saya coba posting di website saya untuk pengajaran anak-anak SMK jurusan Teknik Gambar Bangunan, semoga bermanfaat, guna membangun generasi muda yang mandiri. sekian dan terima kasih

  • Ike Tina

    Saya sangat senang dengan adanya artikel yang telah dibuat, karena artikel diatas telah membantu saya melengkapi tugas saya yang rumpang dan program-program yang telah saya buat.

  • http://bhddsp.com hasan

    ada yg bisa bantu gak..???
    bikin autolisp untuk menghitung lenght dari polyline.
    kl pake command, pake area trus lenghtnya ditulis dipolyline tsb.
    thanks bgt kl ada yang mo bantu…

  • http://cadesu.multiply.com Adesu

    Untuk membuat program menampilkan ukuran bisa di buat dengan Autolisp,alangkah baiknya anda lemparkan ke forum saja

  • JUNINAWAN

    TOLONG KIRIMKAN KAN CONTOH PROGRAM AUTOLIST UNTUK MEMBUAT JALAN DAN ELEMEN PENDUKUNG NYA