Senin, 27 November 2023

Belajar Autolisp dengan Praktek Langsung - 10. Menggambar Berbagai Ukuran Kertas

Program di upgrade agar bisa menggambar berbagai ukuran kertas, misal :

Ukuran kertas A4 : 297mm x 210mm

Ukuran kertas A3 : 420mm x 297mm

Ukuran kertas A2 : 594mm x 420mm

Ukuran kertas A1 : 840mm x 594mm

Jika kecepatan kerja yang diinginkan, program ini lebih baik dibuat untuk masing kertas-kertas, misalnya seperti ini :

(defun c:ka4( / oldos panjang lebar ttk1 ttk2 ttk3 ttk4 koorx koory) 
(setq oldos (getvar "OSMODE"))
(setvar "OSMODE" 0)
(setq panjang 297) 
(setq lebar 210) 
(setq ttk1 (getpoint "Tentukan titik sisip kertas...")) 
(setq koorx (car ttk1)) (setq koory (car (cdr ttk1))) 
(setq koorx (+ koorx panjang)) 
(setq ttk2 (list koorx koory)) 
(setq koory (+ koory lebar)) 
(setq ttk3 (list koorx koory)) 
(setq koorx (- koorx panjang)) 
(setq ttk4 (list koorx koory)) 
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
(setvar "OSMODE" oldos) 
(princ) 
)

(defun c:ka3( / oldos panjang lebar ttk1 ttk2 ttk3 ttk4 koorx koory) 
(setq oldos (getvar "OSMODE"))
(setvar "OSMODE" 0)
(setq panjang 420) 
(setq lebar 297) 
(setq ttk1 (getpoint "Tentukan titik sisip kertas...")) 
(setq koorx (car ttk1)) (setq koory (car (cdr ttk1))) 
(setq koorx (+ koorx panjang)) 
(setq ttk2 (list koorx koory)) 
(setq koory (+ koory lebar)) 
(setq ttk3 (list koorx koory)) 
(setq koorx (- koorx panjang)) 
(setq ttk4 (list koorx koory)) 
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
(setvar "OSMODE" oldos) 
(princ) 
)
(defun c:ka2( / oldos panjang lebar ttk1 ttk2 ttk3 ttk4 koorx koory) 
(setq oldos (getvar "OSMODE"))
(setvar "OSMODE" 0)
(setq panjang 594) 
(setq lebar 420) 
(setq ttk1 (getpoint "Tentukan titik sisip kertas...")) 
(setq koorx (car ttk1)) (setq koory (car (cdr ttk1))) 
(setq koorx (+ koorx panjang)) 
(setq ttk2 (list koorx koory)) 
(setq koory (+ koory lebar)) 
(setq ttk3 (list koorx koory)) 
(setq koorx (- koorx panjang)) 
(setq ttk4 (list koorx koory)) 
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
(setvar "OSMODE" oldos) 
(princ) 
)
(defun c:ka1( / oldos panjang lebar ttk1 ttk2 ttk3 ttk4 koorx koory) 
(setq oldos (getvar "OSMODE"))
(setvar "OSMODE" 0)
(setq panjang 840) 
(setq lebar 594) 
(setq ttk1 (getpoint "Tentukan titik sisip kertas...")) 
(setq koorx (car ttk1)) (setq koory (car (cdr ttk1))) 
(setq koorx (+ koorx panjang)) 
(setq ttk2 (list koorx koory)) 
(setq koory (+ koory lebar)) 
(setq ttk3 (list koorx koory)) 
(setq koorx (- koorx panjang)) 
(setq ttk4 (list koorx koory)) 
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
(setvar "OSMODE" oldos) 
(princ) 
)

Biasanya untuk perintah-perintah yang jarang digunakan jika harus mengingat banyak perintah membuat tidak nyaman, dan secara memori komputer tidak efisien (sekarang mungkin tidak masalah ya, karena program Autolsip dibanding RAM komputer jaman sekarang).

Disini akan dibuat program alternatif untuk membuat keempat program di atas menjadi satu perintah aja, nanti didalamnya pengguna diminta memilih opsi ukuran kertas yang digunakan.

Fungsi-fungsi tambahan yang akan digunakan adalah:

Fungsi Initget

Fungsi ini menentukan kata kunci yang tersedia (fungsi  (entsel) (getangle) (getcorner) (getdist) (getint) (getkword) (getorient) (getpoint) (getreal) (getstring) (nentsel) (nentselp) ) untuk input pengguna berikutnya.

format fungsi initget  pada BricsCAD V22 - Developer Reference :

(initget  [ bitflags ]  [ keywords ] )

bitflags : (opsional) kombinasi nilai bit untuk mengontrol perilaku;
bit 0 = 1 : jika disetel, tidak mengizinkan input kosong
bit 1 = 2 : jika disetel, tidak mengizinkan nilai 0 sebagai input
bit 2 = 4 : jika disetel, tidak mengizinkan nilai negatif sebagai input
bit 3 = 8 : jika disetel, titik di luar batas gambar diterima (abaikan pengaturan LIMCHECK)
bit 5 = 32 : jika disetel, menggunakan garis karet pada kursor mouse
bit 6 = 64 : jika disetel, hanya titik 2D yang dikembalikan (koordinat Z diabaikan)
bit 7 = 128 : jika disetel, memungkinkan input sewenang-wenang (bit 0 diabaikan, input kosong mengembalikan string kosong)
bit 8 = 256 : jika disetel, masukan jarak diprioritaskan daripada masukan sembarang
bit 9 = 512 : jika disetel, (getpoint) dan (getcorner) akan menggunakan UCS dinamis sementara, ketika mouse mengarahkan suatu entitas
bit 10 = 1024 : jika disetel, ORTHO, POLAR, Z-SNAPPING, dan tracking dinonaktifkan/diabaikan

keywords : (opsional) string kata kunci dalam format "Panjang Lebar..." atau "Panjang Lebar _ Length Width"; 

Fungsi Getkword

Fungsi ini menjeda input pengguna untuk menentukan string kata kunci, seperti yang ditentukan oleh panggilan sebelumnya (initget) ; mengembalikan string kata kunci lengkap atau NIL.

Format fungsi initget  pada BricsCAD V22 - Developer Reference :

(getkword  [ prompt ] )

Prompt - (opsional) string prompt yang akan ditampilkan; jika diabaikan, tidak ada string prompt yang ditampilkan

(defun c:kertas( / oldos pilih panjang lebar ttk1 ttk2 ttk3 ttk4 koorx koory)

(setq oldos (getvar "OSMODE"))
(setvar "OSMODE" 0)
(initget "1 2 3 4 _A1 A2 A3 A4")
(setq pilih (getkword "\nPilih 1 untuk A1, 2 untuk A2 dst (1.A1/2.A2/3.A3/4.A4): "))
(setq ttk1 (getpoint "Tentukan titik sisip kertas..."))
(cond
((= pilih "A1")
(progn
(setq panjang 840)
(setq lebar 594)
(setq koorx (car ttk1)) (setq koory (car (cdr ttk1)))
(setq koorx (+ koorx panjang))
(setq ttk2 (list koorx koory))
(setq koory (+ koory lebar))
(setq ttk3 (list koorx koory))
(setq koorx (- koorx panjang))
(setq ttk4 (list koorx koory))
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
))
((= pilih "A2")
(progn
(setq panjang 594)
(setq lebar 420)
(setq koorx (car ttk1)) (setq koory (car (cdr ttk1)))
(setq koorx (+ koorx panjang))
(setq ttk2 (list koorx koory))
(setq koory (+ koory lebar))
(setq ttk3 (list koorx koory))
(setq koorx (- koorx panjang))
(setq ttk4 (list koorx koory))
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
))
((= pilih "A3")
(progn
(setq panjang 420)
(setq lebar 297)
(setq koorx (car ttk1)) (setq koory (car (cdr ttk1)))
(setq koorx (+ koorx panjang))
(setq ttk2 (list koorx koory))
(setq koory (+ koory lebar))
(setq ttk3 (list koorx koory))
(setq koorx (- koorx panjang))
(setq ttk4 (list koorx koory))
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
))
((= pilih "A4")
(progn
(setq panjang 297)
(setq lebar 210)
(setq koorx (car ttk1)) (setq koory (car (cdr ttk1)))
(setq koorx (+ koorx panjang))
(setq ttk2 (list koorx koory))
(setq koory (+ koory lebar))
(setq ttk3 (list koorx koory))
(setq koorx (- koorx panjang))
(setq ttk4 (list koorx koory))
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
))
) ;; end cond
(setvar "OSMODE" oldos)
(princ)
)

Tentu saja program ini bisa dibuat lebih ringkas dengan membuat fungsi, dengan parameter panjang dan lebar. Silahkan dicoba sendiri dan kalau ada kesulitan silahkan dishare saja.

---000---

Minggu, 22 Oktober 2023

Belajar Autolisp dengan Praktek Langsung - 9. Menggambar Ukuran Kertas A4 dengan Manipulasi List (Fungsi List, Car, Cdr)

Selain menggunakan polar, cara lainnya yaitu dengan manipulasi list, dengan fungsi list, car dan cdr. Selain fungsi tersebut terdapat juga fungsi cons dan append untuk manipulasi list.

Fungsi List berfungsi untuk membuat data list

format fungsi list pada BricsCAD V22 - Developer Reference :

(list  [ item [ item [ item ... ]]] )

- item : apapun berupa list atau atom list 

contoh penggunaan 

(list 1 2 3 4) -> (1 2 3 4)

Fungsi car berfungsi untuk mendapatkan elemen list yang pertama

format fungsi car pada BricsCAD V22 - Developer Reference :

(car  lst)

- lst : list atau dottetpair, bisa juga NIL (list kosong / ()), bingung? lain kali dibahas ya. sementara list dulu.

contoh penggunaan 

(car '(1 2 3 4)) -> 1

Fungsi cdr berfungsi untuk mendapatkan list tanpa elemen pertama.

format fungsi cdr pada BricsCAD V22 - Developer Reference :

(cdr  lst)

contoh penggunaan 

(cdr '(1 2 3 4)) -> (2 3 4)


(defun c:ka4( / panjang lebar ttk1 ttk2 ttk3 ttk4 koorx koory)
(setq panjang 297)
(setq lebar 210)
(setq ttk1 (getpoint "Tentukan titik sisip kertas..."))
(setq koorx (car ttk1))
(setq koory (car (cdr ttk1)))
(setq koorx (+ koorx panjang))
(setq ttk2 (list koorx koory))
(setq koory (+ koory lebar))
(setq ttk3 (list koorx koory))
(setq koorx (- koorx panjang))
(setq ttk4 (list koorx koory))
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
(princ)
)


---000---

Jumat, 13 Oktober 2023

Belajar Autolisp dengan Praktek Langsung - 8. Menggambar Ukuran Kertas A4 dengan Perintah Fungsi Command secara Interaktif dengan Fungsi Polar

Menggambar Ukuran Kertas A4 dengan Perintah Fungsi Command 

Interaktif disini maksudnya saat program berjalan pengguna bisa berinteraksi dengan Bricscad/ Autocad. Misal titik awal penggambaran kertasnya adalah diserahkan pengguna, yaitu dengan memilih titik pada layar. 

Untuk memilih titik pada layar fungsi yang digunakan adalah fungsi getpoint

format fungsi getpoint  pada BricsCAD V22 - Developer Reference :

(getpoint  [ refPoint ]  [ prompt ] )

refPoint : (opsional) titik acuan 2d/3d; jika ditentukan, digunakan sebagai titik awal rubberband; jika dihilangkan, '(0 0) digunakan

prompt : (opsional) teks pada command prompt yang akan ditampilkan; jika dihilangkan, prompt standar akan ditampilkan

fungsi getpoint ini akan mengembalikan list berupa koordinat 3D (x y z), setelah data titik awal diperoleh maka data titik-titik berikutnya bisa diperoleh dari ukuran panjang dan lebar ukuran kertas. Fungsi yang paling banyak digunakan (mungkin karena kemudahannya) adalah polar.

Fungsi Polar digunakan untuk mencari titik terhadap suatu titik lain dengan argument titik, sudut dan jarak.

format fungsi polar  pada BricsCAD V22 - Developer Reference :

(polar point angle distance)

point : titik acuan

angle : sudut, dalam radian

distance : jarak

pada fungsi polar satuan sudut tidak menggunakan derajat melain radian, dimana pi rad = 180 derajat.

Untuk kemudahannya fungsi berikut adalah fungsi untuk mengubah dari derajat ke radian:

(defun d2r (derajat) (* pi (/ derajat 180.0)))

berikut kodenya

(defun c:ka4( / oldos d2r panjang lebar ttk1 ttk2 ttk3 ttk4)
(setq oldos (getvar "OSMODE"))
(setvar "OSMODE" 0)
(defun d2r (derajat) (* pi (/ derajat 180.0)))
(setq panjang 297)
(setq lebar 210)
(setq ttk1 (getpoint "Tentukan titik sisip kertas..."))
(setq ttk2 (polar ttk1 (d2r 0) panjang))
(setq ttk3 (polar ttk2 (d2r 90) lebar))
(setq ttk4 (polar ttk3 (d2r 180) panjang))
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
(setvar "OSMODE" oldos)
(princ)
)


catatan:

- (setq ttk4 (polar ttk3 (d2r 180) panjang)) bisa juga diganti dengan (setq ttk4 (polar ttk1(d2r 90) lebar))

- fungsi d2r bisa juga diletakkan diluar program, tetapi fungsi ini akan tetap ada meskipun program selesai berjalan.



Rabu, 11 Oktober 2023

Belajar Autolisp dengan Praktek Langsung - 7. Menggambar Ukuran Kertas A4 dengan Perintah Fungsi Command secara Sederhana


Menggambar Ukuran Kertas A4 dengan Perintah Fungsi Command 

Metode untuk menggambar dengan autolisp :

1. Metode "command", metode ini paling mudah digunakan. Dalam pembuatan codenya seperti menggambar dengan memasukkan perintah-perintah pada command prompt.

2. Metode "activex", metode ini menggunakan cara-cara seperti dalam visual basic application.

3. Metode "entmake", metode ini langsung dengan mengubah data base Bricscad/ Autocad

Untuk menggambar garis persegi panjang sesuai ukuran keras meskipin kelihatan sederhana, pembuatan program ini nantinya akan banyak menggunakan fungsi-fungsi yang ada di autolisp. Disini akan digunakan cara bertahap, dari yang paling mudah terlebih dahulu kemudian bertahap ke yang lebih komplek. Untuk membuat gambar dengan autolisp diperlukan pemahaman cara menggambar sesuai prosedur baku penggambaran dalam Bricscad/ Autocad. Jadi bagi para pengguna Bricscad/ Autocad yang belajarnya secara praktis silahkan baca-baca materi menggambar Autocad dari dasar (yang isinya koordinat UCS danWCS, input kooordinat secara relatif maupun absolut, perintah membuat objek/ entity dengan urutan perintah serta opsi-opsinya)

Ukuran kertas A4 : 297mm x 210mm

Fungsi Command

Fungsi command berfungsi menjalankan perintah Bricscad/ Autocad

Format fungsi command di BricsCAD V22 - Developer Reference adalah sebagai berikut : 

(command  [ item1 [ item2 ... ]] )

item1 : perintah atau opsi BricsCAD asli apa pun, atau ekspresi Lisp apa pun yang valid
item2 : perintah atau opsi BricsCAD asli apa pun, atau ekspresi Lisp apa pun yang valid

Karena fungsi command bekerja dengan berinteraksi dengan Bricscad/ Autocad maka saat menjalankan program opsi entity snap (ESNAP di Bricscad/ OSNAP di Autocad) perlu dimatikan semua. Daripada mematikan ESNAP setiap kali mau menjalankan program, maka proses mematikan/menghidupkan dilakukan didalam program. Fungsi yang digunakan adalah fungsi setvar dan getvar.

Format fungsi setvar di BricsCAD V22 - Developer Reference adalah sebagai berikut : 
(setvar sysvar value)

Format fungsi getvar di BricsCAD V22 - Developer Reference adalah sebagai berikut : 
(getvar  sysvar)

sysvar : string atau simbol, yaitu nama variabel sistem, untuk ESNAP adalah "OSMODE"
value : nilai yang akan diberikan (integer, string, double, ...), bergantung pada SystemVariable tertentu

Untuk memudahkan prosedur penggambaran titik awal penggambaran dimulai dari titik 0,0 dan untuk sekarang setiap penggambaran satu ukuran kertas akan dijalankan dengan satu perintah :

Kertas A4,
titik ke-1 : 0,0
titik ke-2 : 297,0
titik ke-3 : 297,210
titik ke-4 : 0,210

Cara 1
Cara ini langsung memasukkan koordinat sebagai teks biasa. dengan tipe objek garis/ line, dan menggunakan acuan koordinat absolut.

codenya adalah sebagai berikut :

(defun c:ka4( / oldos)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0) 
(command "line" "0,0" "297,0" "297,210" "0,210" "0,0" "")
(setvar "osmode" oldos)  
(princ))

untuk mengakhiri perintah line dengan "" yang sama dengan menekan tombol [enter]

bisa juga dengan menyimpan titik-titik tersebut kedalam sebuah variabel

 (defun c:ka4( / oldos ttk1 ttk2 ttk3 ttk4)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq ttk1 "0,0"
      ttk2 "297,0"
      ttk3 "297,210"
      ttk4 "0,210")
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
(setvar "osmode" oldos) 
(princ)
)

Cara 2
Cara ini langsung memasukkan koordinat sebagai teks biasa. dengan tipe objek garis/ line, dan menggunakan acuan koordinat relatif.

codenya adalah sebagai berikut :

(defun c:ka4( oldos)  
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(command "line" "0,0" "@297,0" "@0,210" "@-297,0" "@0,-210" "")
(setvar "osmode" oldos) 
(princ)
)

tentu saja nilai-nilai relatif ini bisa saja disimpan dalam variabel, tetapi karena sifatnya relatif mungkin penamaan variabelnya agar mudah dibaca seperti ini....

(defun c:ka4( / oldos awal kekanan297 keatas210 kekiri297 kebawah210)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0) 
(setq awal "0,0" 
     kekanan297 "@297,0" 
     keatas210 "@0,210" 
     kekiri297 "@-297,0" 
     kebawah210 "@0,-210") 
(command "line" awal kekanan297 keatas210 kekiri297 kebawah210 "")
(setvar "osmode" oldos) 
(princ) 
)

Cara 3
Cara ini dengan memasukkan koordinat sebagai data list. dengan tipe objek garis/ line.
List adalah format dasar dalam autolisp, bahkan program Autolisp sendiri adalah List. (Lisp adalah singkatan dari List Processing). Titik koordinat dalam Bricscad/Autocad dalam Autolisp bisa berupa titik 2D maupun 3D.
2D -> (x y)
3D -> (x y z)
Untuk tipe garis data titiknya boleh 2D maupun 3D.

codenya adalah sebagai berikut :

(defun c:ka4( / oldos )
(setq oldos (getvar "osmode"))
(setvar "osmode" 0) 
(command "line" '(0 0) '(297 0) '(297 210) '(0 210) '(0 0) "")
(setvar "osmode" oldos) 
(princ)
)



atau 

(defun c:ka4( / oldos ttk1 ttk2 ttk3 ttk4)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0) 
(setq ttk1 '(0 0)
          ttk2  '(297 0)
          ttk3  '(297 210)
          ttk4 '(0 210) )
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
(setvar "osmode" oldos) 
(princ)
)


Selanjutnya untuk titik akan digunakan format list, karena memang nantinya fungsi-fungsi dalam Autolisp adalah memanipulasi data list.

Untuk menggambar dititik yang lain perlu dihitung lagi titik-titiknya, misal jika dimulai dari titik 150,150 codenya menjadi seperti berikut :

(defun c:ka4( / oldos ttk1 ttk2 ttk3 ttk4)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0) 
(setq ttk1 '(150 150)
          ttk2  '(447 150)
          ttk3  '(447 360)
          ttk4 '(150 360) )
(command "line" ttk1 ttk2 ttk3 ttk4 ttk1 "")
(setvar "osmode" oldos) 
(princ)
)

Pada materi kali ini sengaja dibuat dengan perintah yang sederhana dan statis, tetapi dibuat dengan banyak cara dengan harapan ada pemahaman bahwa untuk membuat program dengan hasil akhir yang sama ada banyak cara. Cara mana yang paling baik? Tentu saja tergantung......
Pada materi berikutnya program akan dibuat lebih interaktif.

Selasa, 10 Oktober 2023

Belajar Autolisp dengan Praktek Langsung - 6. Menggabung String dengan Fungsi strcat dan Konversi Data Bilangan ke String

Format fungsi strcat di BricsCAD V22 - Developer Reference adalah sebagai berikut :

(strcat [ stringA [ stringB ... ] ] )

Fungsi ini digunakan untuk menggabungkan semua string masukan yang disediakan stringA, stringB, ...


contoh 1

 (strcat "saya " "sedang " "belajar " "autolisp ")

jika kita ketikkan langsung di command prompt :


: (strcat "saya " "sedang " "belajar " "autolisp ") [enter]

"saya sedang belajar autolisp "


contoh 2

(setq a "saya ")

(setq b "sedang ") 

(setq c "belajar ")

(setq d "autolisp ")

(strcat a b c d)

jika kita ketikkan langsung di command prompt :

: (setq a "saya ") [enter]

"saya "

: (setq b "sedang ") [enter]

"sedang "

: (setq c "belajar ") [enter]

"belajar "

: (setq d "autolisp ") [enter]

"autolisp "

: (strcat a b c d) [enter]

"saya sedang belajar autolisp "


Program f2c bisa dirubah agar lebih ringkas :

(defun c:f2c ( / f)

(princ "Program untuk Konversi dari Fahrenheit ke Celcius")

(setq f (getreal "Berapa Fahrenheit : "))

(princ (strcat "Nilai Fahrenheit : " (rtos f 2 1) "\n"))

(princ (strcat "Nilai Celcius : " (rtos (+ (* (/ 9.0 5.0)  f) 32) 2 2) ))

(princ)

)


Argument fungsi strcat memerlukan jenis data/ variabel berupa deretan huruf, atau dalam pemrograman disebut dengan jenis data "string". Untuk mengubah data dari bilangan real ke data string yaitu dengan fungsi rtos.

format fungsi rtos di BricsCAD V22 - Developer Reference adalah sebagai berikut :

(rtos number [ mode [ precision ] ] )

keterangan :
  * number : bilangan yang akan diubah menjadi string
  * mode :  
       1 scientific
       2 decimal
       3 engineering
       4 architectural
       5 fractional
 * precision : jumlah  desimal yang dinginkan

Kamis, 05 Oktober 2023

Belajar Autolisp dengan Praktek Langsung - 4. Menyimpan Nilai (variabel) dengan fungsi set/ setq

 Pada program sebelumnya 

(defun c:f2c()

(+ (* (/ 9.0 5.0) (getreal "Berapa Fahrenheit : ")) 32)
)

Pada fungsi (getreal "Berapa Fahrenheit : "), nilai yang kita masukan/ketik, bisa kita simpan dalam suatu variabel, misalnya f, sehingga program yang dibuat lebih mudah terbaca dan bisa digunakan berulang-ulang. Fungsi untuk menyimpan nilai kedalam suatu variabel yaitu set dan setq.

Fungsi Set

(defun c:f2c()

(set 'f  (getreal "Berapa Fahrenheit : "))

(+ (* (/ 9.0 5.0)  f) 32)
)



Fungsi Setq

(defun c:f2c()

(setq f  (getreal "Berapa Fahrenheit : "))

(+ (* (/ 9.0 5.0)  f) 32)
)

sepintas mirip ya, perhatikan tanda petik (quote) sebelum huruf f pada fungsi set. Setq sama saja dengan set quote. Pada prakteknya nanti seringnya fungsi setq ini yang sering dipakai, tetapi fungsi set sebenarnya lebih fleksible (karena dengan fungsi set bisa membuat variabel saat program berjalan, atau kerennya saat "run time")

contoh lain, misal kita ingin menghitung luas empat persegi panjang

(defun c:lpp()

(setq p  (getreal "Panjang : "))

(setq l  (getreal "lebar : "))

(* p l)
)

variabel yang sudah kita buat pada contoh diatas (f, p, l) tidak hilang setelah program selesai, bisa dicek dengan perintah !f, !p, !l pada command prompt.



Variabel seperti ini istilahnya adalah variabel global. Variabel global ini,  untuk alasan "security pemrograman", mestinya secara otomatis hilang saat program selesai ( atau memang jika betul-betul diperlukan baru tidak hilang). Variabel yang hilang saat program (atau fungsi) saat selesai dijalankan dinamakan variable lokal, dalam autolisp dibuat dengan cara menulisan variabel-variabel tersebut di dalam parameter fungsinya setelah tanda slash\ forward slash (/).

contoh 1:

(defun c:f2c( / f)

(setq f  (getreal "Berapa Fahrenheit : "))

(+ (* (/ 9.0 5.0)  f) 32)
)

contoh 2 :

(defun c:lpp( / p l)

(setq p  (getreal "Panjang : "))

(setq l  (getreal "lebar : "))

(* p l)
)








Rabu, 04 Oktober 2023

Belajar Autolisp dengan Praktek Langsung - 5. Menampilkan pesan di Command Prompt dengan Fungsi Princ

Selama ini hasil program yang di buat langsung menampilkan hasilnya setelah program dijalankan, seringnya program memerlukan pesan baik sebelum suatu permintaan input (atau bahkan sebagai judul program), pesan tertentu saat program berjalan, maupun untuk menampilkan hasil program agar lebih mudah dibaca.

Fungsi Princ

Fungsi Princ adalah fungsi yang paling umum digunakan pemrogram lisp untuk menampilkan pesan.

format fungsi princ di BricsCAD V22 - Developer Reference adalah sebagai berikut :

(princ [ expression [ fileHandle ] ] )

expression  (opsional) ekspresi atau nilai Lisp apa pun; jika tidak ada, argumen sama dengan NIL 

fileHandle  (optional) referensi (handle) file dari fungsi (open); jika tidak ada argumen output diarahkanke command prompt.

 contoh pengunaannya :

(defun c:f2c ( / f)

(princ "Program untuk Konversi dari Fahrenheit ke Celcius")

(setq f (getreal "Berapa Fahrenheit : "))

(princ "Nilai Fahrenheit : ")

(princ f)

(princ "\n")

(+ (* (/ 9.0 5.0)  f) 32)
)

(princ "\n"), argumen "\n" artinya kita menyisipkan ganti baris. karakter \n dalam komputer berarti representasi dari karakter/tombol newline atau [enter]
Jika program dijalankan hasilnya seperti berikut


Jika hasil perhitungan ingin lebih "mudah terbaca", maka programnya bisa seperti ini :

(defun c:f2c ( / f)

(princ "Program untuk Konversi dari Fahrenheit ke Celcius")

(setq f (getreal "Berapa Fahrenheit : "))

(princ "Nilai Fahrenheit : ")

(princ f)

(princ "\n")

(princ "Nilai Celcius : ")

(princ (+ (* (/ 9.0 5.0)  f) 32) )

(princ)

)


Fungsi (princ) tanpa argumen berguna untuk menutup program tanpa mengembalikan nilai fungsinya, sehingga tidak muncul hasilnya dua kali/ sperti diulang silahkan dicoba dengan membuang (princ)

Selain dengan fungsi princ, untuk menampilkan pesan di command prompt bisa menggunakan fungsi Print, Print1 dan Prompt . Untuk menampilkan kotak peringatan digunakan perintah alert. Silahkan di coba.
-- 000 ---



Belajar Autolisp dengan Praktek Langsung - 3. Autolisp untuk membuat rumus interaktif dan bisa dipanggil langsung dari Bricscad/ Autocad (seperti perintah bawaaan)

Rumus yang dibuat pada materi sebelumnya menggunakan parameter sebagai input fungsinya, yang mana pengguna harus tahu jumlah dan jenis parameter yang harus digunakan, tentunya jika fungsi ini yang akan menjalankannya adalah pengguna yang tidak paham autolisp maka pengguna ini tidak bisa menggunakannya. Untuk membuat parameter (atau dinamakan argumen saat fungsi dipanggil) ini menjadi suatu input yang interakfif bisa dengan fungsi-fungsi berikut ini :

- getint : fungsi untuk mendapatkan bilangan bulat (integer)

- getreal : fungsi untuk mendapatkan bilangan nyata/pecahan (real)

- getsring : fungsi untuk mendapatkan deretan huruf (string)

- dan get-get lainnya, akan dibahas jika diperlukan


misalkan fungsi pada materi sebelumnya:

;(defun f2c(f)
(+ (* (/ 9.0 5.0) f) 32)
)

versi interaktifnya adalah sebagai berikut :

(defun f2c()
(+ (* (/ 9.0 5.0) (getreal "Berapa Fahrenheit : ")) 32)
)

load programnya, kemudian jalankan fungsinya dengan cara ketik (f2c) [enter], kemudian ketik 10, hasilnya seperti berikut pada command prompt :

: (f2c)
Berapa Fahrenheit : 10 [enter]
50.0

untuk menjalakan fungsi ini seperti perintah Bricscad, tambahkan c: sebelum nama fungsi pada program yang kita buat.

(defun c:f2c()
(+ (* (/ 9.0 5.0) (getreal "Berapa Fahrenheit : ")) 32)
)

load kembali programnya, jalankan fungsinya (sekarang bisa disebut perintah atau program) dengan ketik langsung f2c [enter]

f2c
Berapa Fahrenheit : 10 [enter]
50.0

Belajar Autolisp dengan Praktek Langsung - 2. Autolisp untuk membuat rumus

 Jika perhitungan-perhitungan yang dilakukan ternyata dilakukan berulang-ulang maka perlu dibuat suatu program (disebut fungsi/function) sehingga lebih efisien, contoh sederhana. misal untuk menghitung konversi suhu dari fahrenheit ke celcius, rumusnya adalah sebagai berikut :

                    ,

jika kita menghitung secara langsung untuk nilai F = 5, kita tuliskan di command prompt sebagai berikut:

(+ (* (/ 9.0 5.0) 5) 32)

, untuk nilai F = 10,

(+ (* (/ 9.0 5.0) 10) 32)

dan seterusnya.

Untuk efisiennya buat fungsinya sebagai berikut :

(defun f2c(f)
(+ (* (/ 9.0 5.0) f) 32)
)
, silahkan diketik baris per baris, setiap akhir baris tekan enter untuk memulai baris berikutnya, command prompt bricscad akan mengecek langsung bila tanda kurung tutup masih kurang.   

setelah enter pada baris terbawah akan menampilkan "F2C", yang artinya definisi fungsi f2c  telah dibuat.
untuk menghitung nilai F = 5, kita tinggal menjalankan fungsi tersebut dengan argumen 5

(f2c 5)



untuk menghitung nilai F = 10, 

(f2c 10)

untuk menghitung nilai F = 15, 

(f2c 15),

dan seterusnya....

Fungsi ini hanya ada pada jendela file autocad yang sedang aktif, agar fungsi ini bisa digunakan pada file autocad yang lainnya fungsi ini harus disimpan pada file selanjutnya bisa di "load" saat membutuhkannya atauapun bisa di "load" secara otomatis.

Untuk menyimpannya buka text editor (misal notepad, sublime, emacs atau sejenisnya), pada contoh ini menggunakan text editor notepad yang sudah terinstal di windows.


saat menyimpan file, ektesinya adalah .lsp, misal f2c.lsp, pilih All Files (*.*) pada Save as Type.


misal file f2c.lsp nya di simpan di Direktory D:, untuk me-loadnya gunakan perintah seperti berikut :

(load "d:\\f2c")




selanjutnya, untuk menjalakannya sama seperti di atas.



Selasa, 29 Agustus 2023

Belajar Autolisp dengan Praktek Langsung - 1. Autolisp sebagai Kalkulator Sederhana

Praktek disini dilakukan dengan BricsCAD versi 2018 tetapi bisa dilakukan

BricsCAD dan Autocad versi manapun.


1. Autolisp sebagai Kalkulator

Secara sederhana autolisp bisa dijalankan secara langsung dari command prompt

misal untuk penambahan 2 + 3, ketikkan secara langsung di command prompt :

(+ 2 3)

kemudian tekan enter.

Penjelasan :

- tanda kurung buka dan kurung tutup adalah format baku autolisp

- tanda plus adalah nama fungsi, nama fungsi bisa berupa fungsi bawaan autolisp

  maupun fungsi buatan sendiri. tanda ples adalah fungsi bawaan autolisp untuk

  penambahan, untuk fungsi-fungsi matematika lainnya misalnya :

      - pengurangan, -

      - perkalian, *

      - pembagian, /

     - akar kuadrat, sqrt

     - nilai minimal, min

     - nilai maksimal, max

     - pangkat bilangan e, exp

     - pangkat bilangan, expt

     - log basis bilangan e, log

     - nilai sin sudut dalam radian, sin

     - nilai cos sudut dalam radian, cos

     - nilai arcus tangen dalam radian, atan

     - nilai mutlak (absolut), abs

     - sisa pembagian, rem

     - nilai faktor persekutuan terbesar (FPB), gcd

     - penambahan 1, 1+

     - Pengurangan 1, 1-

- angka 2 dan 3 adalah argumen fungsi plus, yang sebenarnya argumen fungsi ples ini tidak 

  harus 2 argumen, boleh satu argumen, lebih dari dua argumen, atau tidak memiki argumen.

Untuk operasi aritmatika yang lebih komplek berikut contohnya:

untuk menghitung
 , penulisan di autolispnya sebagai berikiut :

(sqrt (/ (+ 9 3) (- 7 4))), 




Jumat, 23 Juni 2023

Fungsi vlax-curve-getDistAtParam

Fungsi autolisp kategori ActiveX ini baik contoh di Autocad maupun di Bricscad sempat membuat pusing lo. Di Bricscad contohnya cuma begini:

(setq vlaLine (vlax-ename->vla-object (entlast)))  #<VLA-OBJECT IAcadCircle 000000003A012150>
(vlax-curve-getdistatparam vlaLine 0.75)  188.669747018779

terus dikasih keterangan seperti ini :

the "distance" is a relative length value, for some curve types !
to obtain the real distance, in such cases, you need to determine the point at the parameter, and use (vlax-curve-getdistatpoint)

Di Autocad sebenarnya lebih detil penjelasannya dengan contoh yang lebih jelas pula, tetapi saya aplikasikan di objek arc (busur) yang lebih sederhana hasilnya malah "nil".

ternyata Argument Param yang dimaksud adalah harus dalam jangkauan pada fungsi vlax-curve-getStartParam dan vlax-curve-getEndParam, pada contoh di Autocad nilai vlax-curve-getStartParam adalah 0.0 dan nilai vlax-curve-getEndParam adalah 17.1546 sehingga nilai Param lebih kecil dari 0.0 atau lebih besar 17.154 akan menghasilkan nilai "nil".

berikut coba-coba fungsi nya sehingga menjadi paham : 

silahkan gambar arc dengan panjang 300

(setq objekku (car(entsel)))  => <Entity name: 772ca8a0> (Tentu saja nantinya Entity namenya berbeda)


(setq awal (vlax-curve-getStartParam objekku )) => 0.501547233590248 (nilainya bisa saja berbeda)

nilai ini adalah nilai parameter titik start kurvanya, jadi jika Argument Param diisi dengan nilai ini fungsi vlax-curve-getDistAtParam akan menghasilkan nilai 0.0 (pada parameter ini panjangnya 0.0)


(setq akhir (vlax-curve-getEndParam objekku)) => 1.55726844093916 (nilainya bisa saja berbeda)

nilai ini adalah nilai parameter titik terakhir kurvanya, jadi jika Argument Param diisi dengan nilai ini fungsi vlax-curve-getDistAtParam akan menghasilkan nilai 300.0 (pada parameter ini panjangnya 300.0)

singkatnya :

(setq panjang (vlax-curve-getDistAtParam objekku awal)) => 0.0

(setq panjang (vlax-curve-getDistAtParam objekku akhir)) => 300.0

Mudah-mudahan bermanfaat.


ps: karena kurva yang dicoba baru "arc" bisa jadi keterangan pada Bricscad pada kurva objek lain memang perlu perhatian.


Sabtu, 01 April 2023

Menampilkan nama file dan folder (direktori)

Kadang ketika kita melakukan pencarian file dan direktori dengan Windows File Explorer di Server membutuhkan waktu yang lama untuk menampilkannya (malah kadang layarnya jadi putih (blank). Kita bisa memanfaatkan "Command Prompt"nya Windows dan wildcard untuk menampilkan  dengan lebih cepat. Karena bisa dilakukan dengan "Command Prompt" maka perintah-perintahnya juga bisa dilakukan didalam Bricscad, yaitu dengan printah "shell", sayangnya untuk menampilkan file (dengan perintah "dir") hasilnya tidak akan tampil, kita bisa mengakalinya dengan bantuan notepad atau text editor lainnya (saya lebih suka emacs karena fitur-fiturnya lebih banyak, terutama search regular expressionnya). 

Berikut perintahnya dengan bantuan autolisp, layar notepad akan muncul dengan isi direktori yang kita cari, kemudian kita bisa melakukan searching dari Notepad (Ctr-F) maupun Emacs (C-s).

(command "shell" "dir p: /A:D /O:N /B >d:xyz.txt")(command "shell" "notepad  d:\\xyz.txt")(princ)

untuk Emacs :

(command "shell" "dir p: /A:D /O:N /B >d:xyz.txt")(command "shell" "runemacs  d:\\xyz.txt")(princ)

lokasi file runemacs.exe terlebih dahulu harus disetting di Environmet Variablesnya windows.

Kita bisa memasukan perintah tersebut kedalam shorcut keyboard atau menu.

Menyesuaikan Bricscad untuk Autolisp

 Mengapa harus disesuaiakan? Apakah program sekelas Bricscad belum komplit?

Tergantung dari kebutuhan kita tentunya, perusahaan yang lingkup pekerjaannya semakin spesifik bisa jadi membeli aplikasi CAD sesuai dengan disiplin pekerjaannya bisa jadi solusi mudah, tetapi apakah biaya untuk membeli aplikasi tersebut sepadan dengan hasil yang didapat? atau malah harus beli dua-duanya.

Lalu, kalau Bricscad bisa disesusaikan (customize), sejauh mana bisanya? Saya sendiri sebenarnya sudah lama tidak ngoprek program ini, hanya dulu (dulu sekali...)  pernah bermain-main Autocad dengan makro, menu, perintah samaran (command aliases), jenis garis, pola arsir (tapi ini seringnya gagal), sedikit autolisp, dan sedikit banget VBA (sekarang malah tidak tertarik VBA). Dan ternyata hal ini bisa dilakukan dengan Bricscad juga. 

Sekarang ini, keinginan ngoprek sebenarnya masih ada, tapi rasa-rasanya otak sudah semakin susah diajak "mikir". Saya coba me-refresh aja ya, semoga bermanfaat.

Untuk yang penasaran dengan cara menyesuaikan Bricscad secara detil dan lengkap, silahkan download aja manual di sini atau alamat ini https://boa.bricsys.com/bricscad/docs/en_INTL/V20/Customizing-BricsCAD-V20.pdf

Disini saya akan berbagi cara menyesuaiakan Bricscad yang sudah saya pernah lakukan yang terkait dengan autolisp saja, tetapi tentu tidak membatasi jika ada rekan-rekan drafter/ engineer diskusi cara yang lain (kecuali VBA, karena saya memang sudah tidak tertarik). 

1. Command Aliases ( perintah samaran)

Jika filenautolisp yang kita punya sudah dienkripsi (.des) dan perintahnya terlalu panjang atau kurang praktis untuk membuat perintah alternatifnya gunakan perintah "customize" atau "cui". Pilih tab "Aliases" , klik tombol "Add", Isikan alternatif pertintahnya pada Alias, dan isikan perintah aslinya pada Command. Klik tombol "OK".

Contoh isian Alias

Selalu cek dulu perintah aliasnya, pastikan belum digunakan untuk perintah yang sudah ada biar tidak menindih perintah sebelumnya. Pastikan juga program autolisp yang akan dibuat aliasnya sudah di load terlebih dahulu atau diload otomatis agar lebih aman.

2. Membuat perpus blok simbol atau detil yang sering dipakai

Mengumpulkan sumber daya program dalam satu folder khusus sehingga nantinya bisa langsung dipanggil dari Autolisp langsung (dan Bricscad juga tentunya). Alamat folder disimpan di "Support File Search Path". Cara menyimpan foldernya dengan perintah "Settings" -> "Program options" -> "Files"    -> "Support file search path" selanjutnya pilih ... pada bagian kanannya sehingga tampil kotak dialog Folder List.

 

Tampilan kotak dialog Folder List
Tinggal klik icon "Add Folder" seperti yang dilingkari. Tambahkan alamat foldernya, selanjutnya tekan "OK" untuk menyimpannya.

3. Membuat menu

Untuk membuat program autolisp bisa dijalankan dari menu Bricscad, gunakan perintah "customize" atau "cui".

Gambar Tampilan kotak dialog Customize


Pada tab "Menu", pada "Main Menu" klik kanan, pilih "Append Main Menu" untuk menambahkan menu utama, selajutnya menu utama yang kita buat bisa ditambah submenu atau item, item berarti menu yang akan menjalankan program kita, untuk mengatur tampilan di session bricscad, pilih tan "Workspace".

Gambar Tampilan kotak Add Menu Item

Untuk menu item, pilih "Create new tool", Isikan tulisan yang akan muncul di menu pada kotak isian "Title" dan perintahnya pada kotak isian "Command". Pada kotak isian Command, jika program autolispnya sudah kita load (atau load otomatis) tinggal diisi dengan perintahnya aja. Misalnya ^c^cSISFF. Jika mau load manual dari menu bisa dengan perintah load atau autoload, contohnya ^c^c(load "sisff.des" "tidak berhasil")(princ). Tanda ^c^c (dibricscad boleh cuma ^c) artinya seperti menekan tombal [ESC] dua kali.

4. Membuat shortcut

Langkah-langkahnya hampir sama dengan membuat menu, hanya prosesnya ada di tab "Keyborad"


As a pioneer in the CAD world emphasized, "You should never have to draw the same line twice." (In practice, we do of course.)

Sabtu, 04 Maret 2023

Membuat Sistem Pompa Pemadam Kebakaran sesuai SNI/NFPA

Sistem pompa yang saya maksud disini adalah ukuran pipa dan aksesoriesnya.

perintah : sisff

Input/ouput perintah sisff



Menggambar Dinding dengan Cepat

Beberapa konten youtube lokal menampilkan cara membuat dinding dari objek "line" dengan cepat, meskipun kalau dikaitkan dengan disiplinnya mungkin lebih ke arsitek saya tertarik mencoba membuat programnya. 

Saya tidak tahu persis sebenarnya hasil objek dinding yang dihasilkan program di youtube itu terdiri dari apa saja dan apakah kolomnya bersih (maksudnya tidak tumpang tindih), karena awalnya saya buat kolomnya tumpang tindih. Dari sini saya coba cari-cari referensi mencari cara biar kolom yang dihasilkan tidak tumpang tindih. Akhirnya menemukannya di websitenya Lee Mac (http://lee-mac.com/uniqueduplicate.html) dengan judul "Unique & Duplicate List Functions".

perintah : dinding

Input program dinding

Output program dinding


untuk merubah kerapatan arsiran gunakan perintah "hpscale".

Minggu, 19 Februari 2023

Mencari Diameter dan Debit Pipa (dari Kecepatannya)

 perintah :

mencari diameter --> diapipa

mencari debit/flow --> debpipa


 
Gambar input/output perintah diapipa



Gambar input/output perintah debpipa



Download .des untuk Bricscad

Sabtu, 18 Februari 2023

Kapasitas Pipa Air Hujan

 referensi : SNI (tapi lupa yang 2015 atau tahun yang lama, tapi tidak jauh berbeda nilainya)

perintah :

pipa horisontal --> ahh

pipa vertikal --> ahv

Input/output perintah ahh



Input/output perintah ahv



Download .des untuk Bricscad

Download .vlx untuk Autocad


Minggu, 12 Februari 2023

Menghitung Flow Air Terjun Taman

 Program autolisp ini digunakan untuk menghitung flow air terjun berdasarkan input tebal dan panjang air terjun yang akan didesain.

perintah : tat

Gambar input/output perintah tat

Download debitAirTerjun.des untuk Bricscad

Download debitAirTerjun.vlx untuk Autocad



Skedul Pompa Pemadam Kebakaran

 Membuat tabel/ skedul peralatan dengan kw pompa dihitung secara otomatis.

perintah : ff_eq


Gambar input perintah ff_eq


Gambar output perintah ff_eq


Download ff_eq.des untuk Bricscad

Download ff_eq.vlx untuk Autocad





Operator Bitwise di Autolisp

 Di autolisp fungsi bitwise antara lain :

  1. ~ (bitwise not)
  2. lsh
  3. logand
  4. logior
  5. boole
Untuk memahami fungsi bitwise dan perilakunya, sebaiknya terlebih dahulu memahami tipe data integer dan representasinya dalam bilangan biner yang digunakan dalam autolisp. 
Bilangan integer AutoLISP adalah bilangan bertanda 32-bit dengan nilai mulai dari +2.147.483.647 hingga -2.147.483.648.
representasi bilangan +2.147.483.647 dalam bilangan biner bertanda 32-bit adalah

0111 1111 1111 1111 1111 1111 1111 1111 

representasi bilangan -2.147.483.648 dalam bilangan biner bertanda 32-bit adalah

1000 0000 0000 0000 0000 0000 0000 0000

Untuk bilangan positif mungkin ngga aneh ya, karena nilainya bisa dikonversi dari penambahan bilangan binernya, misal
0000 0000 0000 0000 0000 0000 0000 0001  =  (1x20) = 1
0000 0000 0000 0000 0000 0000 0000 0010  =  (1x21)  + (0x20) = 2
0000 0000 0000 0000 0000 0000 0000 0011  =  (1x21)  + (0x21) = 3
dan seterusnya

Kalau bilangan negatif, bit paling kiri jika nilainya 1 maka negatif, tetapi bit lainnya tidak sama dengan bilangan positif nya.
11111111111111111111111111111111 = -1
11111111111111111111111111111110 = -2
11111111111111111111111111111101 = -3
Representatif bilangan negatif seperti ini dinamakan komplemen 2, yaitu komplemen bilangan positif + 1.

Untuk mengecek integer autolisp menggunakan komplemen dua dengan cara:
(~ 0) = -1 = - (0 + 1)
(~ 1) = -2 = - (1 + 1)
.
.
.
(~ 100) = -101 = - (100 + 1)


1. fungsi ~ (bitwise not)
Fungsi ini membalik nilai bit. nilai bit 0 menjadi 1, nilai bit 1 menjadi 0. kenapa ~0 nilainya jadi -1, karena nilai integer autolisp selalu disimpan dalam 32 bit. nilai integer 0 representasinya dalam integer 32 bit bertanda adalah :
0000 0000 0000 0000 0000 0000 0000 0000
sehingga (~ 0) menghasilkan :
11111111111111111111111111111111 = -1

2, lsh
syntak : (lsh  [ integer [ numbits ]] )
fungsi ini menggeser nilai bit. jika numbits bernilai positif maka akan digeser ke kiri sesuai nilai numbit sebaliknya jika numbits bernilai negatif akan digeser ke kanan. nilai bit yang kosong setelah penggeseran akan diisi nilai 0.

contoh :
(lsh 1 1)
integer 1, 0000 0000 0000 0000 0000 0000 0000 0001 digeser ke kiri sebanyak 1 bit, sehingga menjadi

0000 0000 0000 0000 0000 0000 0000 0010, yang nilainya 2

3. logand
syntak: (logand [int int ...])
menghasilkan nilai bitwise logis AND dari bilangan integer.

4. logior
syntak: (logior [int int ...])
menghasilkan nilai bitwise logis OR dari bilangan integer.

5. Boole
Syntak: (boole operator int1 [int2 ...])
merupakan fungsi umum untuk operasi bit pada autolisp.

operator merupakan bilangan integer antara 0-15.

Tabel kebenaran operator bit
Int1Int2Operator Bit
008
014
102
111

Dari operator bit diatas berikut ekuivalensi fungsi-fungsi bitwise yang umum :
OperatorOperationResulting bit is 1 if
1ANDBoth input bits are 1
6XOROnly one of the two input bits is 1
7OREither or both of the input bits are 1
8NORBoth input bits are 0 (1's complement)

Note : saya masih bingung di Bricscad 2018 mengapa (boole 8 0 0) maupun (boole 1 -1 -1) menghasilkan bilangan integer 4294967295, bukan -1.
saya cek di Bricscad 2013 ternyata menghasilkan nilai -1.
----000--------


Minggu, 05 Februari 2023

Sabtu, 04 Februari 2023

Menghitung flow (debit) dari nilai fu/ubap (fixture unit/ unit beban alat plambing)

 Program ini dibuat untuk mengkonversi dari fixture unit/ unit beban alat plambing air bersih, denga referensi Buku Handbook of Utilities and Services for Buildings Planning, Design, and Installation, Cyril M. Harris.

perintah :

fut --> untuk fu/ unit beban alat plambing dominan tangki gelontor (flush tank)

fuv --> untuk fu/ unit beban alat plambing dominan katup gelontor (flush valve)

Gambar input dan output program fut



Gambar input dan output program fuv


Download untuk autocad

Sabtu, 28 Januari 2023

Menghitung ukuran Grill diffuser

 kalkukator untuk menghitung ukuran grill diffuser, dengan asumsi kecepatan udara sebesar 500fpm.

perintah : ukgril1   --> untuk grill diffuser persegi (ukuran sisinya sama panjang)

perintah : ukgril2   --> untuk grill diffuser persegi panjang (ukuran sisinya  tidak sama panjang)


Input dan output perintah ukgril1


Input dan output perintah ukgril2




Download untuk bricscad

Menampilkan Data Pompa Pemadam Kebakaran sesuai NFPA/SNI

 Program ini menampilkan ukuran pipa hisap, pipa keluaran (discharge), main relief valve, waste cone, meter air, katup uji dan header uji berdasarkan NFPA atau SNI.

Gambar input program

perintah yang digunakan : pnfpa

kapasitas pompa yang dimasukkan harus sesuai dengan kapasitas yang tersedia dalam tabel NFPA atau SNI. 


Gambar output program

Download untuk bricscad

Download untuk autocad



Senin, 23 Januari 2023

Kumpulan program bantu/ autolisp untuk Mekanikal Elektrikal dan Plambing

 Biar lebih mudah dan ringkas, saya buatkan ringkasan-ringkasan autolisp yang saya buat sendiri, untuk autolisp yang saya download dari situs lain rencananya saya tampilkan dihalaman lain. Kalau ada yang minta dibuatkan autolisp untuk keperluan sendiri atau perusahaan, silahkan kirim email via baidinbaid@gmail.com. Bisa tidaknya saya buat programnya saya kasih info secepatnya. Program yang sudah jadi  nantinya saya buatkan versi online-nya (gratis). Dan jika berkenan programnya bisa dipakai untuk umum nanti program akan saya upload disini. 

Untuk detil dan tempat downloadnya bisa diklik nama programnya.
--> -->
NoNama ProgramFungsiKeterangan
1JumKomaMenjumlahkan Teks dengan desimal komaBricscad dan Autocad
2JumTitikMenjumlahkan Teks dengan desimal titikBricscad dan Autocad
3vacDuctSizing ducting ACBricscad dan Autocad
4HazenUkuran pipa dan pressure drop dengan HazenBricscad dan Autocad
5GensetMenampilkan data gensetBricscad dan Autocad
6pNFPAMenampilkan data pompa sesuai NFPA/SNIBricscad dan Autocad
7ukGrillDiffKalkulator ukuran grill diffuserBricscad dan Autocad
8fu2flowKonversi fu ke flowBricscad dan Autocad
9fuPipaDiameter pipa berdasar fuBricscad dan Autocad
10kebAirMenampilkan data kebutuhan airBricscad dan Autocad
11ffEquipSkedul Peralatan Utama PemadamBricscad dan Autocad
12kapPipaAirHujKapasitas pipa air hujanBricscad dan Autocad
13diaDebFrKecMencari diameter dan debit pipaBricscad dan Autocad
14DindingMenggambar dinding dengan cepatBricscad dan Autocad
15SisPoPKMembuat sistem pompa pemadam sesuai SNI/NFPABricscad dan Autocad


-----------ooo------------