Rumah >tutorial komputer >pengetahuan komputer >Bagaimana untuk menjalankan pembangunan sekunder CAD Autolisp?

Bagaimana untuk menjalankan pembangunan sekunder CAD Autolisp?

王林
王林ke hadapan
2024-01-04 10:18:301375semak imbas

Bagaimana untuk melakukan pembangunan sekunder CAD autolisp

;;;Lampu T4

(menolak C:T4206()

Pengguna memasukkan arahan pelaksanaan T4206 (tanpa sebarang parameter) untuk memuatkan dan segera menjalankan program seterusnya.

(grafscr)

(setvar "cmdecho" 0)

;;;Paparan baris arahan dimatikan

(setq P1(getpoint "nSila nyatakan kedudukan peletakan lampu (T4 206.5mm 6W):"))

;;;Tetapkan titik sisipan P1 dan titik kembali

(arahan "-INSERT" "D:/YZ_ZCAD/TK/DGT/T4206.dwg" "S" "1" P1 "0")

Apabila melaksanakan arahan standard CAD, anda boleh menambah "-" (rujuk arahan CAD) di hadapan arahan untuk melaksanakan arahan terus dalam baris arahan tanpa menggunakan kotak dialog.

Apabila program dilaksanakan, anda tidak boleh menggunakan kotak dialog untuk beroperasi Anda boleh menambah simbol "-" sebelum arahan atau menggunakan pembolehubah FILEDIA untuk mengawalnya. Terdapat juga beberapa kes khas yang boleh dikawal dengan cara lain.

(setvar "cmdecho" 1)

;;;Paparan baris arahan dihidupkan

(putera)

;;;Kesimpulan

)

;;;Masukkan teks di atas ke dalam LISP dan simpan di bawah sebarang nama Inggeris

Selepas menyimpan fail, kita boleh menggunakan AP untuk memuatkan fail dalam CAD.

;; Jalankan arahan T4206 untuk melaksanakan arahan sisip, (sahkan kewujudan fail)

Pada pendapat peribadi saya, saya rasa pembangunan VBA lebih mudah daripada LISP. Untuk mempelajari LISP, anda hanya perlu menguasai ilmu asas, dan tidak perlu belajar secara mendalam. Pembangunan kotak dialog LISP (DCL) jauh lebih rumit daripada VBA. Walau bagaimanapun, kadangkala kita perlu menggunakan fungsi LISP untuk melaksanakan fungsi VBA. Dalam dokumen bantuan AutoCAD, terdapat bantuan yang disediakan khas untuk pembangun, yang mengandungi banyak kandungan terperinci. Banyak editor juga menggunakan sumber secara langsung daripada dokumen ini. Saya cadangkan anda lihat, mungkin membantu anda.

Pembangunan sekunder CAD dan pengubahsuaian LISP

(defun c:dz (/ oce1 n1 zn h1 sxh1 p1)

(vl-load-com)

(setq oce1 (getvar "cmdecho"))

(setvar "cmdecho" 0)

(setq ms (vla-get-modelspace

(vla-get-activedocument (vlax-get-acad-object)) Baris kod ini digunakan untuk mendapatkan objek dokumen yang sedang aktif dalam AutoCAD. Ia menggunakan antara muka VLAX (Visual LISP ActiveX) AutoCAD, mendapatkan objek aplikasi AutoCAD melalui fungsi vlax-get-acad-objek, dan kemudian menggunakan kaedah vla-get-activedocument untuk mendapatkan objek dokumen yang sedang aktif. Dengan cara ini, kita boleh melakukan pelbagai operasi pada dokumen semasa, seperti mengakses sifatnya, mengubah suai objek, dsb. Barisan kod ini sangat biasa dalam pengaturcaraan LISP AutoCAD dan sangat

apabila berurusan dengan objek dokumen

)

)

(jika qz

()

(setq qz "")

)

(jika hz

()

(setq hz "")

)

(initget "c")

(setq nqz (getstring (strcat "nSila masukkan awalan /c (kosong): " )))

(cond

((= nqz "c") (setq qz ""”))

(T (jika (/= nqz "")(setq qz nqz)))

)

(setq hz "")

(jika (tidak (setq n1 (getint "nSila masukkan nombor urutan permulaan : "))))

(setq n1 1)

)

(setq zn 1)

(jika (tidak (setq h1 (getreal "nSila nyatakan ketinggian teks : ")))

(setq h1 2.5)

)

(setq sxh1 (strcat qz (itoa n1) hz)) ialah ungkapan LISP biasa. Dalam ungkapan ini, qz, n1 dan hz ialah pembolehubah, dan rentetan baharu sxh1 dicipta dengan menggabungkan nilainya. Saya akan menerangkan kepada anda dengan tepat apa maksud ungkapan ini. - qz ialah pembolehubah yang mewakili awalan, yang menyimpan rentetan, seperti "awalan". - n1 ialah pembolehubah integer yang menyimpan nilai berangka seperti 10

(setq p1 (getpoint "nSila nyatakan titik sisipan: "))

(sementara (/= p1 sifar)

(setq p1 (vlax-3d-point p1))

(setq txt (vla-addtext

ms

sxh1

p1

h1

)

)

(setq

n1 (+ n1 zn)

sxh1 (strcat qz (itoa n1) hz)

p1 (getpoint "nSila nyatakan titik sisipan seterusnya:")

)

)

(setvar "cmdecho" oce1)

(vlax-release-object ms)

(putera)

)

Pakar LISP pembangunan menengah CAD menulis program

Tukar kepada yang berikut:

(defun c:sdd (dwg)

(setq dwg (dapat difailkan "Pilih laluan dan nama fail" "" "Dwg" 1))

(jika (wcmatch dwg "* ####-##-## ##:##.dwg")

(setq dwg (substr dwg 1 (vl-string-search " " dwg)))

Memandangkan pembolehubah rentetan `dwg`, kita boleh menggunakan `(setq dwg (substr dwg 1 (- (strlen dwg) 4)))` untuk memprosesnya. Fungsi baris kod ini adalah untuk memotong empat aksara terakhir rentetan `dwg` dan menetapkan semula hasilnya kepada pembolehubah `dwg`. Ini boleh dilakukan untuk menanggalkan sambungan fail daripada nama fail atau pengecam lain. Melalui baris kod ini, kami boleh mengubah suai rentetan `dwg` untuk menjadikannya memenuhi keperluan atau format tertentu.

)

(setq dwg (strcat dwg " " (menucmd "M=$(edtime,$(getvar,date),YYYY-MO-DD HH:MM)") ".dwg"))

(arahan "_.saveas" "" dwg)

(putera)

)

Atas ialah kandungan terperinci Bagaimana untuk menjalankan pembangunan sekunder CAD Autolisp?. 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