[AutoLISP] Screw Convenyor

Bicara masalah LISP jadi inget nostalgia lama waktu masih jadi buruh pabrik (jadi kangen ama lingkungan pabrik). Banyak permasalahan yang bisa diangkat dan keinginan untuk memecahkannya. Disini saya mencoba mengambil salah satu contoh seperti pembuatan screw conveyor. Proses penggambaran sering berulang. Banyak waktu yang terbuang hanya untuk penggambaran ulang. Maklum dulu paling males kalau di suruh lembur :-P. Kemudian saya mencoba membuat sebuah coding untuk hal tersebut. Maka jadilah coding seperti dibawah ini.

Mungkin banyak rekan-rekan yang sudah mahir dalam pemrograman LISP contohnya guru saya Sie Abah Ade Suharna. Coding yang satu ini tidak luput dari tatapan matanya :-). Tapi ada hal yang bisa diperhatikan yaitu sebuah command yang terdapat di AutoCAD yang bernama wipeout. Dimana kemampuannya menuntup entity yang berada dalam areanya. Sehingga bisa memanipulasi pembuatan objek seperti rantai dan lain-lain.

Berikut coding AutoLISP untuk pembuatan screw conveyor.
[sourcecode language=’cpp’]
; Created by Afri 21/03/07

(defun c:scon (/ Pitch Oldpitch ShaftDia OldShaftDia ScrewDia OldScrewDia
NoOfScrew OldNoOfScrew ShaftLeng OldShaftLeng
a b c X Betha alpha e gama tetha g
Ang0 Ang90 Ang180 Ang270 OldEch
IP pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 getEnt)

(if (not Pitch )
(setq pitch 360)
)
(setq oldPitch pitch
pitch (getreal (strcat “\nEnter Pitch<" (rtos pitch) ">:”))
); akhir setq pitch
(if (null pitch)
(setq pitch oldPitch)
)
(if (not ShaftDia)
(setq ShaftDia 114.3)
)
(setq OldShaftDia ShaftDia
ShaftDia (getreal (strcat “\nEnter Shaft Diameter <" (rtos ShaftDia) ">:”))
); Akhir setq ShaftDia
(if (null ShaftDia)
(setq ShaftDia OldShaftDia)
)
(if (not ScrewDia)
(setq ScrewDia 450)
)
(setq OldScrewDia ScrewDia
ScrewDia (getreal (strcat “\nEnter Screw Diameter <" (rtos ScrewDia) ">:”))
); akhir setq ScrewDia
(if (null ScrewDia)
(setq ScrewDia OldScrewDia)
)
(if (not NoOfScrew)
(setq NoOfScrew 10)
) ; end if
(setq OldNoOfScrew NoOfScrew
NoOfScrew (getint (strcat”\nEnter Number of Screw <" (rtos NoOfScrew) ">:”))
) ; untuk array harus diambil integer bukan real
(if (null NoOfScrew)
(setq NoOfScrew OldNoOfScrew)
); end if
(if (not ShaftLeng)
(setq ShaftLeng (* pitch NoOfScrew))
) ; end if
(setq OldShaftLeng ShaftLeng
ShaftLeng (getreal (strcat “\nEnter Shaft Length <" (rtos ShaftLeng) ">:”))
)
(if (null ShaftLeng)
(setq ShaftLeng OldShaftLeng)
); end if

(setq b (/ Pitch 2)
c (sqrt (+ (expt ScrewDia 2 ) (expt (/ Pitch 2) 2)))
X (/ ScrewDia c)
Betha (+ (atan (/ X (sqrt (+(* (- X ) X) 1))))
(* 4 (atan 1))
) ; sudut pt1 248.199 mendapat sudut a
alpha (+ (atan (/ (- X) (sqrt (+(* (- X ) X) 1))))
(* 4 (atan 1))
); sudut pt2 mendapat sudut e
e (- (/ screwdia 2) (/ shaftdia 2))
gama (- alpha (* 2 (atan 1))) ; sudut E
tetha (- (* 2 (atan 1)) gama) ; sudut g
g (abs (/ (* e (sin gama)) (sin tetha))) ; formula mencari G

; formula ok
Ang0 (angtof “0” 0); degree to radian
Ang90 (angtof “90” 0)
Ang180 (angtof “180” 0)
Ang270 (angtof “270” 0)
IP (getpoint “\nSpecify insertion point>”)
pt1 (polar IP Ang90 (/ ScrewDia 2))
pt2 (polar pt1 betha c)
pt4 (polar pt2 Ang90 e)
pt3 (polar pt4 Ang180 g)
pt5 (polar pt1 Ang270 e)
pt6 (polar pt5 Ang0 g)
pt7 (polar pt6 ang180 ShaftLeng)
pt8 (polar pt6 ang270 shaftDia)
pt9 (polar pt8 ang180 ShaftLeng)
OldOsn (getvar “osmode”);Mengambil Setting Osnap awal
OldEch (getvar “cmdecho”)
)

; Akhir Pembuatan Parameter
(setvar “cmdecho” 0)
(setvar “osmode” 0)

(command “_.pline” pt1 pt2 pt3 pt4 pt5 pt6 pt1 “”
“_.line” pt6 pt7 “”
“_.line” pt6 pt8 “”
“_.line” pt8 pt9 “”
“_.line” pt7 pt9 “”
“_.wipeout” pt1 pt2 pt3 pt4 pt5 pt6 pt1 “”
)
(setq getEnt (entlast)) ; perbaikan pemilihan disini
(command “_.-array” getEnt “” “R” “1” NoOfScrew (- Pitch) ; masih gagal untuk pemilihan object

“_.zoom” “E”

) ; akhir perintah

(setvar “osmode” OldOsn) ; Osnap kembali kepada keadaan awal
(setvar “cmdecho” 1)
(princ) ; End Screw Conveyor
)
(princ”\nType Scon to run command”)
[/sourcecode]







  • Cupu

    mas cara pemakaiannya gimana di Autocad

  • siro

    gmn om cara pakenya?? saya mo buat screw dengan auto cad tapi masih kaku tolong diajarin ya

  • SAUKI

    BAGAI MANA MEMBUAT DENAH SECARA LIPS LANGSUNG LENGKAP DENGAN KETEBALAN TEMBOK ATAO PLESTERANNYA

  • udaaf

    Kenapa harus pakai LISP. Kenapa ngga gunain Multiline