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 :
sekedar hobi otak atik autolisp untuk membantu pekerjaan dalam CAD Engineering
Rabu, 04 Oktober 2023
Belajar Autolisp dengan Praktek Langsung - 2. Autolisp untuk membuat rumus
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 menghitungJumat, 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".
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.
3. Membuat menu
Untuk membuat program autolisp bisa dijalankan dari menu Bricscad, gunakan perintah "customize" atau "cui".
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".
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.)