Chuyển đến nội dung
Diễn đàn CADViet
Duong Nhat Duy

Share LISP Cắm mốc tọa độ

Các bài được khuyến nghị

+ Hoan nghênh bạn đã tham gia diễn đàn: ))

Góp ý:

+ Bạn nên có 1 video ngắn gọn để diễn giải trực quan hơn tác dụng của lisp:

+ Tài liệu học Visual Lisp tiếng Việt nổi tiếng nhất là "Lập trình thiết kế với AutoLisp và Visual Lisp" của tác giả Nguyễn Hữu Lộc. - Link thì đầy: https://www.cadviet.com/forum/topic/16105-bác-nào-có-quyển-lập-trình-thiết-kế-với-autolisp-vàvisual-lisp-2-tập-của-nguyễn-hữu-lộc-và-nguyễn-thành-trung-không/

Tuy nhiên thì nó chỉ đề cập các lệnh cơ bản của Lisp. Nâng cao hơn thì cần đọc ở diễn đàn. Và cuối cùng thì chỉ cần bấm F1 ra Help của Autocad là hết. 

 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Cố gắng phát huy nhé bạn :)
Trong lisp có nhiều đoạn mã nhìn cách viết tương đối quen :)

  • Like 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
22 giờ trước, Danh Cong đã nói:

+ Hoan nghênh bạn đã tham gia diễn đàn: ))

Góp ý:

+ Bạn nên có 1 video ngắn gọn để diễn giải trực quan hơn tác dụng của lisp:

+ Tài liệu học Visual Lisp tiếng Việt nổi tiếng nhất là "Lập trình thiết kế với AutoLisp và Visual Lisp" của tác giả Nguyễn Hữu Lộc. - Link thì đầy: https://www.cadviet.com/forum/topic/16105-bác-nào-có-quyển-lập-trình-thiết-kế-với-autolisp-vàvisual-lisp-2-tập-của-nguyễn-hữu-lộc-và-nguyễn-thành-trung-không/

Tuy nhiên thì nó chỉ đề cập các lệnh cơ bản của Lisp. Nâng cao hơn thì cần đọc ở diễn đàn. Và cuối cùng thì chỉ cần bấm F1 ra Help của Autocad là hết. 

 

Cảm ơn bạn, video thì hiện tại mình chưa làm luôn được, mn chịu khó đọc chay thôi.

 

16 giờ trước, ketxu đã nói:

Cố gắng phát huy nhé bạn :)
Trong lisp có nhiều đoạn mã nhìn cách viết tương đối quen :)

Đa số các hàm con mình lấy của ông Lee Mac mà, còn code chính thì mình tự viết, chả bắt chước ông nào.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Vào lúc 5/9/2018 tại 14:51, Duong Nhat Duy đã nói:

Chào cả nhà, mình mới học viết lách lisp được hơn 1 năm nay, gần đây mình mới gia nhập diễn đàn.

Hôm nay mình muốn chia sẻ với các bạn lisp cắm mốc tọa độ do mình viết, lấy cái cớ để nhờ các bạn chỉ mình thêm về Visual LISP, lát nữa mình sẽ nói sau.

 

- Cụ thể về lisp cắm mốc tọa độ:

  + Mình nhận thấy đa số các lisp cắm mốc tọa độ trên mạng đều có một số những hạn chế nhất định, ví dụ: nửa tự động (pick từng điểm); tọa độ xuất ra dạng field, gây khó khăn trong việc thống kê; tọa độ xuất ra là block do người viết chỉ định, đôi khi không phù hợp với nhu cầu người dùng; vv...

  + Lisp mình viết đề cao tính tự động, thích nghi, các block tọa độ do người dùng chỉ định. Lisp khá thích hợp với những người trong chuyên ngành quy hoạch, xây dựng, trắc địa.

  + Lisp hoạt động bằng cách rải các block mốc tọa độ theo ý muốn, sau đó có thể xuất tọa độ ra các block hoặc ra file txt, ngoài ra có thể cắm mốc từ các file txt có sẵn.

  + Lệnh và cách dùng cụ thể như sau:

      I1 - Tự động INSERT các block mốc (thường là cái hình tròn có tâm), do người dùng chỉ định, theo đỉnh của các PLINE (ví dụ nét ranh giới quy hoạch)

      I2 - Như lệnh I1 nhưng là INSERT theo giao cắt (ví dụ giao cắt tim đường để cắm mốc nút giao)

      I3 - Tự động INSERT block chỉ định vào vị trí các text, block được chọn (lệnh này mình nghĩ sẽ có nhiều ứng dụng, tuy nhiên trong lisp này thì nó không có tác dụng gì cả xD)

* Sau khi rải các block bằng lệnh, nếu có phát sinh các mốc khác, người dùng có thể copy hoặc insert tay các block đó tại các vị trí mong muốn

*Các block tên mốc theo mình nên để là các block thuộc tính, trong đó có ít nhất 1 thuộc nh, sau này để hiển thị tên mốc, hoặc có 3 thuộc tính, sau này để điền tên mốc, tọa độ X,Y, tất nhiên các block có trên 3 thuộc tính cũng không sao, vì sau này gán tọa độ vào thuộc tính nào cũng là do người dùng chỉ định, lát sẽ nói sau

     TT - Đánh số thứ tự tên mốc tự động. Các block sau khi tự động insert vẫn đang để giá trị att là mặc định, tất nhiên người dùng có thể đánh số tt bằng cách nhập tay, nhưng đối với những ranh giới lớn cần cắm mốc thì cách này hơi lâu. Cách dùng lệnh này: Nếu chọn các block theo thứ tự chọn thì lisp sẽ đánh số đúng theo thứ tự đó (có tiền tố và hậu tố); Nếu là cắm mốc ranh giới thì có thể chọn hết tất cả các block thuộc ranh giới + nét PLINE ranh giới, sau đó chỉ định điểm đầu+hướng đánh số tt.

*Sau khi đã có đầy đủ các mốc, tên mốc theo ý muốn, ta tiến hành cắm mốc tọa độ, có 2 cách:

     CM - Xuất tất cả các thuộc tính, tọa độ của các block được chọn ra file txt (lệnh này tương tự lệnh ATTOUT của CAD, nhưng có thêm 2 cột tọa độ X,Y)

     CN - Điền trực tiếp tọa độ vào block (yêu cầu block có 2 thuộc tính trở lên), giá trị X, Y điền vào thuộc tính nào là do người dùng chỉ định

*Ngoài ra lisp có lệnh cắm mốc từ file txt

     CX - Cắm mốc từ file txt, định dạng file txt gồm 3 cột: cột 1 là tên mốc, cột 2 là X, cột 3 là Y. Mốc xuất ra là block chỉ định, có thể là block thường (không có thuộc tính) hoặc block thuộc tính (nếu là block thuộc tính thì có thể tự động điền tên, tọa độ vào theo chỉ định)

 

- Bây giờ mới sang đến vấn đề chính của mình:

Chả là mình cũng mới học nên gần như code viết bằng AutoLISP, đa số các đoạn VisualLISP khác là do mình sưu tập trên mạng, và code mình cũng khá là gà và dài dòng, mong được các bạn chỉ bảo nhiều.

Mình rất muốn học kỹ hơn về VisualLISP, nhưng có 2 lý do: 1 là VisualLISP khá khó tiếp cận, trên mạng cũng không có nhiều, 2 là mình cũng đi làm rồi nên không có nhiều time. Vậy có ai am hiểu nhiều về VisualLISP, có nhiều tài liệu hướng dẫn (tiếng Việt càng tốt), hướng dẫn càng kỹ, càng nhiều hàm càng tốt thì cho mình xin nhé.

 

Cảm ơn các bạn ! Mình xin hết.

Cam moc Toa do.LSP

Rất cảm ơn ban, Nhưng khi mình dùng đến phần lệnh CX, chèn  theo file TXT tọa độ mốc rồi chon Block thường thì nó OK, nhưng khi chon Block thuộc tính thì nó báo lỗi này là sao hả ban, xin chỉ mình với có tệp kèm theo tại dòng Comman..

LOI KHI CHON BLOCK THUOC TINH DE CHEN.PNG

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

chờ bạn chỉ rõ chỗ xuất mốc từ file TXT

4 giờ trước, thanhmicco đã nói:

(nếu là block thuộc tính thì có thể tự động điền tên, tọa độ vào theo chỉ định)

bạn cho file cad ví dụ được ko? cảm ơn nhiều

 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
4 giờ trước, thanhmicco đã nói:

*Sau khi đã có đầy đủ các mốc, tên mốc theo ý muốn, ta tiến hành cắm mốc tọa độ, có 2 cách:

     CM - Xuất tất cả các thuộc tính, tọa độ của các block được chọn ra file txt (lệnh này tương tự lệnh ATTOUT của CAD, nhưng có thêm 2 cột tọa độ X,Y)

     CN - Điền trực tiếp tọa độ vào block (yêu cầu block có 2 thuộc tính trở lên), giá trị X, Y điền vào thuộc tính nào là do người dùng chỉ định

*Ngoài ra lisp có lệnh cắm mốc từ file txt

     CX - Cắm mốc từ file txt, định dạng file txt gồm 3 cột: cột 1 là tên mốc, cột 2 là X, cột 3 là Y. Mốc xuất ra là block chỉ định, có thể là block thường (không có thuộc tính) hoặc block thuộc tính (nếu là block thuộc tính thì có thể tự động điền tên, tọa độ vào theo chỉ định)

Xin bạn chỉ rõ đoạn này được ko ah, mình làm doạn này vẫn chưa được

+Thưa nhất chưa hiểu rõ Block 2 thộc tính

+ Thứ 2 la xuất ngược từ định dạng TXT bằng lệnh CX đối với Block thuộc tính chưa được

Mong bạn chỉ rõ cho mình với, kèm theo file cad ví dụ thì tốt quá. Xin cảm ơn nhiều

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
18 giờ trước, thanhmicco đã nói:

Xin bạn chỉ rõ đoạn này được ko ah, mình làm doạn này vẫn chưa được

+Thưa nhất chưa hiểu rõ Block 2 thộc tính

+ Thứ 2 la xuất ngược từ định dạng TXT bằng lệnh CX đối với Block thuộc tính chưa được

Mong bạn chỉ rõ cho mình với, kèm theo file cad ví dụ thì tốt quá. Xin cảm ơn nhiều

Mình fix lại lệnh CX rồi nhé, đã update lại ở trên kia.

Bạn cứ test với block 1 2 3 thuộc tính bất kỳ xem, chắc là được thôi, tại lisp cũ chưa fix phần đó nên nó bị lỗi ấy mà.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
11 giờ trước, Duong Nhat Duy đã nói:

Mình fix lại lệnh CX rồi nhé, đã update lại ở trên kia.

Bạn cứ test với block 1 2 3 thuộc tính bất kỳ xem, chắc là được thôi, tại lisp cũ chưa fix phần đó nên nó bị lỗi ấy mà.

Cảm ơn bạn nhiều lắm. nhưng mình còn nhờ bạn chỉnh thêm chút nữa được không?

- Khi sử dụng Lênh TT để thay đổi giá trị ATT trong Block để đánh thứ tự điểm ấy, bạn có thể thêm chức năng lệnh tt2 chẳng hạn để khi đánh thì nó sẽ hỏi Tiền tố thì như cũ rồi, nhưng khi hỏi Hậu tố thì mình có thể tùy chỉnh được không?

+ Ví dụ: với lần đánh lúc đầu đã nhập Tiền tố M, hậu tố để nguyên thì nó sẽ cho ra la M1,M, M3 M4 cho cột 1

              Với lần 2 lúc này vẫn tiền tố M nhưng Hậu tố là số bất kỳ như 5 chẳng hạn thì nó cho ra M5,M6,M7,M8

Cái của ban hiện tại nó giống như đánh số tăng dần, mặc định từ trái qua phải, trên xuống dưới. Vì vậy mình muốn nhờ bạn thêm LỆNH (TT2) để bổ sung cho ý của mình được không?

thưm ht.PNG

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Vào lúc 4/11/2018 tại 21:36, thanhmicco đã nói:

Cảm ơn bạn nhiều lắm. nhưng mình còn nhờ bạn chỉnh thêm chút nữa được không?

- Khi sử dụng Lênh TT để thay đổi giá trị ATT trong Block để đánh thứ tự điểm ấy, bạn có thể thêm chức năng lệnh tt2 chẳng hạn để khi đánh thì nó sẽ hỏi Tiền tố thì như cũ rồi, nhưng khi hỏi Hậu tố thì mình có thể tùy chỉnh được không?

+ Ví dụ: với lần đánh lúc đầu đã nhập Tiền tố M, hậu tố để nguyên thì nó sẽ cho ra la M1,M, M3 M4 cho cột 1

              Với lần 2 lúc này vẫn tiền tố M nhưng Hậu tố là số bất kỳ như 5 chẳng hạn thì nó cho ra M5,M6,M7,M8

Cái của ban hiện tại nó giống như đánh số tăng dần, mặc định từ trái qua phải, trên xuống dưới. Vì vậy mình muốn nhờ bạn thêm LỆNH (TT2) để bổ sung cho ý của mình được không?

thưm ht.PNG

Cái bạn nói không phải là hậu tố nhé.

M1A, M2A, M3A; M là tiền tố, A là hậu tố, 1 2 3 là STT.

Mình đã thêm 1 bước đánh STT bắt đầu vào lệnh TT, chứ thêm 1 lệnh TT2 nữa thì phức tạp quá.

 

Cam moc Toa do.LSP

  • Like 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
1 giờ} trướ}c, Duong Nhat Duy đã nói:

Cái bạn nói không phải là hậu tố nhé.

M1A, M2A, M3A; M là tiền tố, A là hậu tố, 1 2 3 là STT.

Mình đã thêm 1 bước đánh STT bắt đầu vào lệnh TT, chứ thêm 1 lệnh TT2 nữa thì phức tạp quá.

Cam moc Toa do.LSP

Không biết nói gì hơn ngoài sự cảm ơn bạn nhiều, chúc bạn mạnh khỏe

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

×