Deskripsi: Tingkatkan produktivitas Anda dengan mempelajari cara membuat perintah kustom sederhana menggunakan AutoLISP di AutoCAD 2013. Tutorial tingkat lanjut ini akan memandu Anda membuat rutin otomatisasi pertama Anda.
Sebagai pengguna AutoCAD 2013 yang sudah mahir dengan perintah-perintah standar, Anda mungkin sering menemukan diri Anda melakukan urutan perintah yang sama berulang kali. Inilah saatnya naik level: dengan mempelajari AutoLISP, bahasa pemrograman terintegrasi di AutoCAD, Anda dapat mengotomatisasi tugas-tugas repetitif, menciptakan perintah khusus, dan mengubah cara Anda bekerja selamanya.
Tutorial tingkat lanjut ini akan memandu Anda membuat rutin AutoLISP pertama Anda—sebuah perintah kustom yang menggambar grup blok dengan jarak spasi otomatis—langsung di AutoCAD 2013.
Apa Itu AutoLISP dan Mengapa Penting?
AutoLISP adalah dialek bahasa pemrograman LISP yang disematkan di AutoCAD. Dengan AutoLISP, Anda dapat:
Mengakses dan memodifikasi data dalam gambar.
Membuat perintah baru yang tidak tersedia secara default.
Mengotomatisasi alur kerja yang rumit.
Membuat dialog interaktif (dengan DCL).
Untuk pengguna tingkat lanjut, menguasai AutoLISP adalah lompatan dari sekadar "penggambar" menjadi "pengembang solusi CAD".
Persiapan: Mengenal Editor dan Struktur Dasar
Sebelum mulai menulis kode, kita perlu tahu di mana menulisnya.
Akses Editor Visual LISP (VLIDE): Ketik
VLIDEdi Command Line dan tekan Enter. Ini akan membuka lingkungan pengembangan terintegrasi untuk AutoLISP.Konsol AutoLISP: Di dalam VLIDE, Anda dapat mengetik kode langsung di jendela Console di bagian bawah, atau membuat file baru (
Ctrl+N).Struktur Dasar: AutoLISP menggunakan banyak tanda kurung
(). Setiap fungsi diawali dan diakhiri dengan tanda kurung. Contoh:(setq titik1 (getpoint "\nPilih titik dasar: "))
Proyek 1: Membuat Perintah "GRUPBLOCK" untuk Menduplikasi Blok dengan Spasi Rapi
Kita akan membuat perintah GRUPBLOCK yang meminta pengguna untuk:
Memilih sebuah blok sebagai referensi.
Menentukan jumlah duplikat secara horizontal dan vertikal.
Menentukan jarak spasi antar blok.
Secara otomatis membuat array/grid dari blok tersebut.
Langkah 1: Memulai Fungsi dan Mendapatkan Input Pengguna
Buat file baru di VLIDE (Ctrl+N) dan salin kode berikut:
;;; ============================================ ;;; GRUPBLOCK.LSP - Membuat array grid dari blok ;;; Oleh: [Nama Anda] ;;; Untuk: AutoCAD 2013 ;;; ============================================ (defun c:GRUPBLOCK ( / blkName insPt numX numY spcX spcY cntX cntY newPt) ; Deklarasi variabel lokal ; --- 1. Memilih Blok Referensi --- (setq blkName (car (entsel "\nPilih blok sumber: "))) (if (not blkName) (progn (alert "Tidak ada blok yang dipilih!") (exit) ; Keluar jika tidak ada pilihan ) ) ; --- 2. Mendapatkan Titik Penyisipan Awal --- (setq insPt (getpoint "\nTentukan titik dasar grid: ")) ; --- 3. Mendapatkan Parameter Grid dari User --- (setq numX (getint "\nJumlah blok arah X: ")) (setq numY (getint "\nJumlah blok arah Y: ")) (setq spcX (getdist "\nJarak spasi arah X: ")) (setq spcY (getdist "\nJarak spasi arah Y: ")) ; --- 4. Logika untuk Menggambar Grid --- ;; Loop untuk arah Y (setq cntY 0) (repeat numY ;; Loop untuk arah X (setq cntX 0) (repeat numX ;; Hitung koordinat titik baru (setq newPt (list (+ (car insPt) (* cntX spcX)) (+ (cadr insPt) (* cntY spcY)) (caddr insPt) ; Pertahankan nilai Z ) ) ;; Salin blok ke posisi baru menggunakan perintah COPY (command "_.copy" blkName "" "_non" insPt "_non" newPt) (setq cntX (1+ cntX)) ; Increment counter X ) (setq cntY (1+ cntY)) ; Increment counter Y ) ; --- 5. Pesan Konfirmasi --- (princ (strcat "\nGrid selesai! Total " (itoa (* numX numY)) " blok dibuat.")) (princ) ; Exit bersih )
Langkah 2: Menjelaskan Bagian-Bagian Kritis Kode
(defun c:GRUPBLOCK ... ): Mendefinisikan fungsi baru yang dapat dipanggil seperti perintah AutoCAD biasa dengan mengetikGRUPBLOCK.( / blkName ... ): Daftar variabel lokal. Variabel di sini akan dilupakan setelah perintah selesai, menghindari konflik.(entsel): Fungsi untuk memilih satu entitas (dalam hal ini, blok kita).(getpoint),(getint),(getdist): Fungsi untuk mendapatkan input dari pengguna (titik, bilangan bulat, jarak).(repeat): Loop untuk mengulangi operasi sebanyaknumXataunumYkali.(command "_.copy" ...): Cara untuk menjalankan perintah AutoCAD native (COPY) dari dalam AutoLISP."_non"memastikan pengambilan titik tanpa Osnap yang mengganggu.
Langkah 3: Memuat dan Menjalankan Rutin
Simpan file dengan ekstensi
.lsp(contoh:grupblock.lsp).Muat ke AutoCAD 2013: Di jendela AutoCAD, ketik
APPLOAD. Telusuri dan pilih file.lspAnda, lalu klik Load. Anda akan melihat pesan konfirmasi di Command Line.Jalankan Perintah: Ketik
GRUPBLOCKdi Command Line dan ikuti petunjuknya.
Langkah 4: Optimasi dan Tantangan Lanjutan
Kode di atas berfungsi, tetapi masih dasar. Mari kita tingkatkan dengan beberapa optimasi:
Optimasi 1: Menambahkan Validasi Input
;; Gantikan bagian input jumlah dengan validasi (setq numX (getint "\nJumlah blok arah X: ")) (while (<= numX 0) (princ "Jumlah harus lebih dari 0!") (setq numX (getint "\nJumlah blok arah X: ")) )
Lakukan hal yang sama untuk numY, spcX, dan spcY.
Optimasi 2: Menggunakan entmake untuk Efisiensi yang Lebih Tinggi
Metode (command "_.copy") lambat untuk jumlah blok yang sangat banyak. Cara yang lebih profesional adalah membuat instance blok baru langsung di database gambar menggunakan entmake. Ini lebih kompleks tetapi jauh lebih cepat.
;; (Alternatif dalam loop penggandaan) ;; Dapatkan data definisi blok (setq blkData (entget blkName)) (setq blkType (cdr (assoc 0 blkData))) ; Cek apakah benar entitas "INSERT" (if (= blkType "INSERT") (progn (setq blkNameRef (cdr (assoc 2 blkData))) ; Nama blok ;; Buat data entitas baru untuk setiap titik (entmake (list '(0 . "INSERT") (cons 2 blkNameRef) ; Nama blok (cons 10 newPt) ; Titik sisip (assoc 41 blkData) ; Skala X (dipertahankan) (assoc 42 blkData) ; Skala Y (assoc 43 blkData) ; Skala Z (assoc 50 blkData) ; Rotasi )) ) )
Kesimpulan dan Langkah Selanjutnya
Anda baru saja membuat alat produktivitas kustom pertama Anda! Dari sini, dunia AutoLISP terbuka lebar. Cobalah untuk:
Modifikasi skrip untuk menangani objek selain blok.
Tambahkan opsi rotasi untuk seluruh grid.
Buat versi yang menggunakan Array Rectangular dengan perintah
-ARRAYuntuk kinerja yang lebih baik pada jumlah yang sangat besar.Pelajari fungsi
ssgetuntuk menangani seleksi banyak objek sekaligus.
AutoLISP adalah investasi waktu yang sangat berharga bagi pengguna AutoCAD serius. Dengan dasar ini, Anda dapat mulai mengembangkan perpustakaan rutin pribadi yang akan menghemat waktu Anda berjam-jam setiap minggu.
Tips Debugging: Gunakan (princ variabel) untuk mencetak nilai variabel ke Command Line dan memastikan logika Anda berjalan dengan benar. Selalu deklarasikan variabel lokal (/ var1 var2) untuk menghindari efek samping.
Selamat mengotomasi! Mulailah dengan mengidentifikasi tugas paling repetitif dalam workflow Anda, dan cobalah untuk mengotomatisasinya dengan AutoLISP.
