Rumah  >  Artikel  >  tutorial komputer  >  Ajar diri anda cara menulis program Lisp untuk CAD

Ajar diri anda cara menulis program Lisp untuk CAD

王林
王林ke hadapan
2024-01-08 14:02:121214semak imbas

Cara memprogram lisp sendiri dalam CAD

Membuat dua arahan: sembunyi dan tunjukkan.

Saya menulisnya secara ringkas, tetapi ia tidak mempunyai semua fungsi Anda boleh menggunakannya sesuka hati

Salin kod berikut dan buat acad.lsp Letakkannya dalam folder lapisan pertama direktori pemasangan CAD dan ia boleh dimuatkan secara automatik:

; Masukkan command hidsel pada baris arahan, dan kemudian pilih elemen grafik Akibatnya, elemen yang tidak dipilih ditukar kepada lapisan tersembunyi

(defun C:hidsel(/ semua; semua primitif

xs; primitif bukan tersembunyi

yc;Sembunyikan primitif

n nam dat)

(setvar "CMDECHO" 0); .

(setvar "CMDECHO" 1)

(setq semua (ssget "x"));

(setq xs (ssget)); pilih primitif bukan tersembunyi

(setq n -1 yc semua);

(ulang (slength xs)

(setq n (+ n 1))

(setq nam (ssname xs n)); Mengembalikan nama primitif Nth

(setq yc (ssdel nam yc))

)

(setq N -1);sembunyi

(ulang (slength yc)

(setq N (+ n 1))

(setq nam (ssname yc n)); Mengembalikan nama primitif Nth

(setq dat (entget nam));DAT menyimpan data elemen ke-N

(entmod (subst (cons 8 "Lapisan tersembunyi sementara") (Assoc 8 dat) dat));

)

(setq semua nil xs nil yc nil n nil nam nil dat nil);

(putera)

)

;Tunjukkan semua primitif

(defun c:shoal(/ all n nam dat)

(setq semua (ssget "x"));

(setq N -1);sembunyi

(ulang (slength semua)

(setq N (+ n 1))

(setq nam (ssname all n)); Mengembalikan nama primitif Nth

(setq dat (entget nam));DAT menyimpan data elemen ke-N

(entmod (subst (cons 8 "0") (Assoc 8 dat) dat));

)

(setvar "CMDECHO" 0)

(COMMAND "PURGE" "LA" "Sementara Sembunyikan Lapisan" "Y" "Y" "")

(setvar "CMDECHO" 1)

(setq semua nil n nil nam nil dat nil); clear data occupied memory

(putera)

)

Apakah fungsi lisp dalam CAD Bagaimana cara menggunakannya?

Lisp sendiri adalah program pembangunan milik CAD Ia menyediakan beberapa pengiraan fungsi yang mudah, dan selebihnya adalah untuk fungsi lukisan autocad. Program lisp adalah serupa dengan prosedur tersimpan dalam pangkalan data dan boleh memproses dan melukis grafik cad dalam kelompok.

Mempelajari Lisp adalah sangat mudah Anda hanya perlu menguasai beberapa arahan utama Anda juga perlu mempelajari format pernyataan dengan sangat teliti, jadi anda tidak perlu menghafalnya.

Muat LISP

1 Anda boleh menggunakan arahan APPLOAD, kemudian cari fail LISP yang anda ingin muatkan dan muatkannya.

2 Anda boleh menyeret fail LISP daripada pengurus fail ke tetingkap grafik ACAD, atau memuatkannya

3. Selepas menggunakan baris arahan, (muat "c:\temp\xxx.lsp") juga boleh dimuatkan. Sila masukkan laluan sebenar untuk nama laluan.

Satu lagi: Untuk program LSP, (apa yang berikut defun ialah arahan atau fungsi. Secara amnya, program harus mempunyai gesaan. Jika tidak, perkataan yang mengikuti pengecam c: ialah arahan yang boleh digunakan di bawah ACAD, yang boleh dimasukkan terus selepas COMMAND: , boleh dilaksanakan.

Cara memprogram dalam bahasa LISP dalam beberapa CAD

Bahasa AutoLISP ialah bahasa pengaturcaraan berdasarkan bahasa LISP biasa dan dikembangkan dengan banyak fungsi yang sesuai untuk aplikasi CAD. Ia adalah bahasa nilai tafsiran yang lambat dan sukar untuk dirahsiakan Ia boleh diedit dengan mana-mana perisian penyuntingan teks dan disimpan dalam format teks biasa. Contohnya:

(setq i 1); iaitu nilai kod i ialah 1

(arahan "CIRCLE" '(0 0) 100);

Semua komponen dalam bahasa AutoLISP diberikan dalam bentuk fungsi, dan ia tidak mempunyai konsep pernyataan atau struktur tatabahasa yang lain. Melaksanakan program AutoLISP bermakna melaksanakan beberapa fungsi dan kemudian memanggil fungsi lain. Contohnya:

(setq pt1 (getpoint"nSila pilih titik sisipan tengah"))

(arahan "CIRCLE" pt1 100); Perintahkan titik sisipan ini untuk melukis bulatan dengan jejari 100

AutoLISP menyatakan data dan atur cara ke dalam struktur jadual bersatu, jadi atur cara boleh diproses sebagai data, dan data juga boleh dilaksanakan sebagai atur cara.

Contohnya: garis lurus, koordinat titik permulaan' (0 0), koordinat titik akhir' (1000 0), lapisan 0, warna 1 [merah] Ini ialah beberapa data garis lurus, cara melaksanakannya dan mengubahnya menjadi kod program adalah seperti berikut:

(entmake (senarai '(0 . "LINE") '(8 . "0") '(62 . 1) '(10 0 0) '(11 1000 0)))

Anda boleh melihat data secara visual, atau anda boleh menampalnya ke dalam baris arahan AutoCAD untuk melukis garis lurus yang anda inginkan di atas.

Proses menjalankan program dalam bahasa AutoLISP ialah proses memproses nilai fungsi, dan fungsi fungsi direalisasikan dalam proses memproses nilai fungsi. Dalam AutoCAD, semua objek boleh dianggap sebagai terdiri daripada titik yang tidak terkira banyaknya, setiap titik mempunyai koordinat sendiri Operasi fungsi ini adalah untuk mengira nilai mata ini dan membuat pertimbangan berdasarkan nilai yang diperoleh.

Struktur kawalan utama bahasa AutoLISP adalah rekursif. Penggunaan rekursi menjadikan pengaturcaraan mudah dan mudah difahami. Contohnya:

(setq &k1 (entsel));

(setq &k1 (kereta &k1));

(setq #g1 (entget &k1));

(setq c0 (cdr (assoc 0 #g1))); Dapatkan nama primitif

Di atas ditulis satu persatu boleh ditulis seperti berikut:

(setq c0 (cdr (assoc 0 (entget (car (entsel))))))); mudah dan mudah difahami

Oleh kerana autolisp mudah dan mudah, anda boleh bermula dengan cepat. Selepas menulis program, kecekapan lukisan boleh dipertingkatkan dengan banyak Pemalam [Tianzheng] yang terkenal ialah pembantu yang baik untuk melukis.

Program autolisp juga mempunyai kekurangan, seperti mengekstrak koordinat Ini hanya boleh diekstrak daripada atribut primitif Dalam kes ini, akan ada had Nilai koordinat 1 dan -1 biasa, tetapi kedudukan grafik adalah berbeza, menghasilkan koordinat yang dikira, jadi sebaiknya gunakan fungsi VLAX untuk mengekstrak nilai koordinat.

Atas ialah kandungan terperinci Ajar diri anda cara menulis program Lisp untuk CAD. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:docexcel.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam