Rabu, 04 Oktober 2023

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.)