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

Lisp tính chiều dài, diện tích hàng loạt

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

2 giờ trước, vostro 1500 đã nói:

Cảm ơn bạn @Duong Nhat Duy lips hay qua! :-)

Mình có 1 góp ý nhỏ: phần TL hậu tố bạn Duy có thể chỉnh sao chuyển tự động khi đo chiều dài là "m", đo diện tích là "m2"

Cái này mình đang chỉnh sửa lại trong bản cập nhật sắp tới rồi bạn nhé, dự kiến sẽ thêm các lệnh thống kê chiều dài, diện tích nữa, bạn chịu khó đợi xíu nhé !

  • 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

Cập nhật bản v1.03, ngày 07/01/2025:

(Link download xem trên đầu topic)

+ Sửa tên lệnh TL thành DTL

+ Sửa tên lệnh: DT1 và DT2 hoán đổi cho DT3 và DT4 (để tương ứng với các lệnh chọn đối tượng CD1, CD2, DD1, DD2)

+ Lệnh DTL: Tiền tố, hậu tố, Att ghi chiều dài, diện tích là riêng biệt

+ Thêm lệnh: DD1, DD2, TH1, TH2

 

DTL - Thiết lập

(Không bắt buộc)

DTL.png.1aa37fe575ea1b49cd983f04a4e831ba.png

- Giải thích một số nội dung:

+ Đơn vị bản vẽ - Đơn vị ghi kết quả: Đây là đơn vị quy ước khi vẽ, không phải đơn vị trong Units.

Giả sử bản vẽ vẽ bằng mm, các đoạn 1000, 2000 muốn tính ra 1.0, 2.0 thì đơn vị bản vẽ nhập mm, đơn vị kết quả nhập m.

+ Hệ số scale đối tượng: Mặc định là 1. Sửa khi bản vẽ đã bị scale ví dụ 2, 5 lần => Kết quả sẽ trả về giá trị trước khi scale.

+ Bội số làm tròn: Mặc định là 0 (không làm tròn). Sửa khi muốn làm tròn kết quả đến bội số của X, ví dụ X=0.25 thì kết quả sẽ dạng 10.25, 10.5, 10.75, 11.

+ Tạo Hatch (DT3, DT4): Hiển thị Hatch các vùng tính diện tích khi dùng các lệnh DT3, DT4. Lưu ý: Khi tạo Field thì bắt buộc phải tạo Hatch vì diện tích vùng kín link theo Hatch.

 

DD1 - Tính chiều dài và diện tích đối tượng - đơn lẻ

Gộp của 2 lệnh CD1 và DT1

 

DD2 - Tính chiều dài và diện tích đối tượng - cộng gộp

Gộp của 2 lệnh CD2 và DT2

 

TH1 - Thống kê chiều dài, diện tích từng đối tượng

TH1.png.376d6ce43ecb43b200d18da2b6764311.png

Giá trị trong bảng có thể khai báo là Field trong lệnh DTL

 

TH2 - Thống kê tổng chiều dài, diện tích theo Layer

TH2.png.d5bbb87b115d72dfcffc276b5419a72c.png

Giá trị trong bảng có thể khai báo là Field trong lệnh DTL

  • 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

anh có thể giải thích rõ hơn về 2 lệnh này đc ko: 

DD1 - Tính chiều dài và diện tích đối tượng - đơn lẻ

Gộp của 2 lệnh CD1 và DT1

DD2 - Tính chiều dài và diện tích đối tượng - cộng gộp

Gộp của 2 lệnh CD2 và DT2
May mà lisp này đổi đc tên lệnh tắt chứ lệnh DD1 và DD2 bị trùng vào phần mềm rồi :D

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
14 phút trước, Nguyễn Hà Huy đã nói:

anh có thể giải thích rõ hơn về 2 lệnh này đc ko: 

DD1 - Tính chiều dài và diện tích đối tượng - đơn lẻ

Gộp của 2 lệnh CD1 và DT1

DD2 - Tính chiều dài và diện tích đối tượng - cộng gộp

Gộp của 2 lệnh CD2 và DT2
May mà lisp này đổi đc tên lệnh tắt chứ lệnh DD1 và DD2 bị trùng vào phần mềm rồi :D

Bạn khai báo kết quả là Block 2 att, tương ứng với diện tích và chiều dài rồi test xem. Cái này chả qua là chiều ý người dùng, muốn tính cả chiều dài và diện tích trong cùng 1 lệnh thôi ấy mà.

  • Vote tăng 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
Vào lúc 7/1/2025 tại 16:53, Duong Nhat Duy đã nói:

Bạn khai báo kết quả là Block 2 att, tương ứng với diện tích và chiều dài rồi test xem. Cái này chả qua là chiều ý người dùng, muốn tính cả chiều dài và diện tích trong cùng 1 lệnh thôi ấy mà.

cảm ơn anh đã giải đáp, em đã hiểu công dụng của nó

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

Bác cho em hỏi nếu muốn diên tích quy đổi ra m2 thì làm cách nào ạ, em thấy diện tích đang quy đổi ra mm2

Em xin cảm ơn Bác!

  • Vote giảm 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
10 giờ trước, vcdichoi đã nói:

Bác cho em hỏi nếu muốn diên tích quy đổi ra m2 thì làm cách nào ạ, em thấy diện tích đang quy đổi ra mm2

Em xin cảm ơn Bác!

Bạn xem trong lệnh DTL nhé, và đọc kỹ trong hướng dẫn đầu topic luôn !

  • 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
2 giờ trước, Duong Nhat Duy đã nói:

Bạn xem trong lệnh DTL nhé, và đọc kỹ trong hướng dẫn đầu topic luôn !

Vâng em thấy rồi, cảm ơn bác ạ!

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ảm ơn Bộ lisp rất hay mình xin góp ý thêm 1 chức năng nhỏ hy vọng có thể cập nhật thêm sau này
- Thêm chức năng Chèn vào sau text hiện có
Ví dụ: Phòng khách
kết quả: Phòng khách (30m2) 
Nhưng cũng cảm ơn Pro..

Vào lúc 20/12/2022 tại 16:30, Duong Nhat Duy đã nói:

Gửi đến các bạn 1 lisp tính chiều dài, diện tích all-in-one, đơn giản, dễ dùng, và có thể tính được theo nhiều yêu cầu đề bài.

 

Công dụng
- Tính chiều dài, diện tích nhiều đối tượng (Line, Pline, Spline, Arc, Circle, Hatch, Region, ...), có thể tính riêng lẻ hoặc cộng gộp.
- Kết quả có thể xuất ra text mới, block att, hoặc cập nhật vào text cũ, block att cũ.

- Kết quả có thể ghi dưới dạng Field, tự động cập nhật khi đối tượng thay đổi.

- Có thể xuất bảng thống kê (định dạng AutoCAD Table).


Tên lệnh
   DTL - Thiết lập

   CD1 - Tính chiều dài các đối tượng đơn lẻ

   CD2 - Tính tổng chiều dài các đối tượng

   CD3 - Tính chiều dài 1 đoạn nằm trên đối tượng

   DT1 - Tính diện tích chọn đối tượng - đơn lẻ

   DT2 - Tính diện tích chọn đối tượng - cộng gộp

   DT3 - Tính diện tích pick điểm - đơn lẻ

   DT4 - Tính diện tích pick điểm - cộng gộp

   DD1 - Tính chiều dài và diện tích đối tượng - đơn lẻ

   DD2 - Tính chiều dài và diện tích đối tượng - cộng gộp

   TH1 - Thống kê chiều dài, diện tích từng đối tượng

   TH2 - Thống kê tổng chiều dài, diện tích theo Layer

 

DTL - Thiết lập

(Không bắt buộc)

DTL.png.1aa37fe575ea1b49cd983f04a4e831ba.png

- Giải thích một số nội dung:

+ Đơn vị bản vẽ - Đơn vị ghi kết quả: Đây là đơn vị quy ước khi vẽ, không phải đơn vị trong Units.

Giả sử bản vẽ vẽ bằng mm, các đoạn 1000, 2000 muốn tính ra 1.0, 2.0 thì đơn vị bản vẽ nhập mm, đơn vị kết quả nhập m.

+ Hệ số scale đối tượng: Mặc định là 1. Sửa khi bản vẽ đã bị scale ví dụ 2, 5 lần => Kết quả sẽ trả về giá trị trước khi scale.

+ Bội số làm tròn: Mặc định là 0 (không làm tròn). Sửa khi muốn làm tròn kết quả đến bội số của X, ví dụ X=0.25 thì kết quả sẽ dạng 10.25, 10.5, 10.75, 11.

+ Tạo Hatch (DT3, DT4): Hiển thị Hatch các vùng tính diện tích khi dùng các lệnh DT3, DT4. Lưu ý: Khi tạo Field thì bắt buộc phải tạo Hatch vì diện tích vùng kín link theo Hatch.

 

CD1 - Tính chiều dài các đối tượng đơn lẻ

CD1.gif.fbeeea099df1aca63a118f8a355c575b.gif

 

CD2 - Tính tổng chiều dài các đối tượng

CD2.gif.11a878073a651fadabe8947b3f91957c.gif

 

CD3 - Tính chiều dài 1 đoạn nằm trên đối tượng

CD3.gif.faced0f7801489da1b3eb72970b767fb.gif

 

DT1 - Tính diện tích chọn đối tượng - đơn lẻ

Text kết quả tạo mới tại trọng tâm các đối tượng

DT1.gif.2f244b4e4a0f53eb05e64788e1f672c7.gif

 

DT2 - Tính diện tích chọn đối tượng - cộng gộp

Text kết quả có thể tạo mới bằng cách bấm vào khoảng trắng hoặc cập nhật vào Text, Att có sẵn trên bản vẽ)

DT2.gif.499e00ef20cd3a774e485bf24f6a09c8.gif

 

DT3 - Tính diện tích pick điểm - đơn lẻ

DT3.gif.7323ef90ec7bcda5564876b9c2c7a9ad.gif

 

DT4 - Tính diện tích pick điểm - cộng gộp

Text kết quả có thể tạo mới bằng cách bấm vào khoảng trắng hoặc cập nhật vào Text, Att có sẵn trên bản vẽ)

DT4.gif.590c69ed1745f6981ee11faa2103feb3.gif

 

DD1 - Tính chiều dài và diện tích đối tượng - đơn lẻ

Gộp của 2 lệnh CD1 và DT1

 

DD2 - Tính chiều dài và diện tích đối tượng - cộng gộp

Gộp của 2 lệnh CD2 và DT2

 

TH1 - Thống kê chiều dài, diện tích từng đối tượng

Giá trị trong bảng có thể khai báo là Field trong lệnh DTL

TH1.png.376d6ce43ecb43b200d18da2b6764311.png

 

TH2 - Thống kê tổng chiều dài, diện tích theo Layer

Giá trị trong bảng có thể khai báo là Field trong lệnh DTL

TH2.png.d5bbb87b115d72dfcffc276b5419a72c.png

 

Một số tính năng khác

- Kết quả xuất ra có thể là Block do người dùng định nghĩa (ví dụ Block tem đất), khai báo trong lệnh DTL

DT-Block.gif.9f2a1964285fa1e98f99b8b3979e2303.gif

 

- Kết quả xuất ra có thể là Field (giá trị tự động cập nhật khi đối tượng thay đổi), khai báo trong lệnh DTL

DT-Field.gif.fd3d6a1368bdff9a7fe23ca89e720b7f.gif

 

- Để tra Field đang liên kết với những đối tượng nào, các bạn dùng lisp của Leemac trong link sau:

https://www.lee-mac.com/fieldobjects.html (Lệnh "fieldobjects", có thể tự đối lại tên)

fieldobjects.gif.cf13022fc5c11dc26c0db9c1fdea7fcd.gif

 

- Có thể thay đổi cài đặt mặc định mỗi khi dùng lisp bằng cách sửa trực tiếp file lisp (bằng Notepad hoặc các phần mềm tương tự)

1918954059_Suathongsomacdinh.thumb.png.5e12a5ba147faa1aea322621b7f2ff06.png


Cập nhật

- v1.00 (01/11/2023): Phiên bản đầu tiên

- v1.01 (01/02/2024): Người dùng có thể sửa file lisp theo cài đặt mặc định mong muốn + Sửa lỗi lệnh DT2 trên CAD2007

- v1.02 (13/06/2024): Thêm tính năng tạo Field (chiều dài, diện tích tự cập nhật khi đối tượng thay đổi)

- v1.03 (07/01/2025):

+ Thêm lệnh: DD1, DD2, TH1, TH2

+ Sửa tên lệnh TL thành DTL

+ Sửa tên lệnh: DT1 và DT2 hoán đổi cho DT3 và DT4 (để tương ứng với các lệnh chọn đối tượng CD1, CD2, DD1, DD2)

+ Lệnh DTL: Tiền tố, hậu tố, Att ghi chiều dài, diện tích là riêng biệt

- v1.03a (09/04/2025): Thêm tính năng ghi kết quả vào bảng (ghi đè)

 

Link download

https://drive.google.com/drive/folders/1i9s1v8KgnD4weWO6ZpPOB1IOqqgxbEPd


Chúc các bạn thành công :)))

 

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 13/4/2025 tại 16:01, chuong123 đã nói:

cảm ơn Bộ lisp rất hay mình xin góp ý thêm 1 chức năng nhỏ hy vọng có thể cập nhật thêm sau này
- Thêm chức năng Chèn vào sau text hiện có
Ví dụ: Phòng khách
kết quả: Phòng khách (30m2) 
Nhưng cũng cảm ơn Pro..

 

Bác cho mình hỏi chút là mình muốn chỉnh khoảng cách giữa text kết quả và đối tượng đo thì chỉnh như nào bác nhỉ?

image.png.e15f1aca2064aa84560c4724e59f0b10.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 13/4/2025 tại 16:01, chuong123 đã nói:

cảm ơn Bộ lisp rất hay mình xin góp ý thêm 1 chức năng nhỏ hy vọng có thể cập nhật thêm sau này
- Thêm chức năng Chèn vào sau text hiện có
Ví dụ: Phòng khách
kết quả: Phòng khách (30m2) 
Nhưng cũng cảm ơn Pro..

Cảm ơn bạn đã góp ý, mình đã thêm tính năng này vào bản 1.03b rồi nhé, bạn vui lòng down lại trong link gg.

 

1 giờ} trướ}c, nhjngj đã nói:

Bác cho mình hỏi chút là mình muốn chỉnh khoảng cách giữa text kết quả và đối tượng đo thì chỉnh như nào bác nhỉ?

Bạn tìm đến dòng này:

(setq pt (polar pt (+ ang (/ pi 2)) (if (= 3DUY-TDT-BLOCK 1) 0 (if (= 3DUY-TDT-AUTO 1) (/ (getvar "VIEWSIZE") 50) 3DUY-TDT-HEIGHT))))

và sửa nó thành:

(setq pt (polar pt (+ ang (/ pi 2)) (if (= 3DUY-TDT-BLOCK 1) 0 XXX)))

với XXX là khoảng cách mong muốn.

  • Like 2

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ảm ơn bác. Lisp rất hay và bớt được rất nhiều thời gian cho công việc !

18 giờ trước, Duong Nhat Duy đã nói:

Cảm ơn bạn đã góp ý, mình đã thêm tính năng này vào bản 1.03b rồi nhé, bạn vui lòng down lại trong link gg.

 

Bạn tìm đến dòng này:


(setq pt (polar pt (+ ang (/ pi 2)) (if (= 3DUY-TDT-BLOCK 1) 0 (if (= 3DUY-TDT-AUTO 1) (/ (getvar "VIEWSIZE") 50) 3DUY-TDT-HEIGHT))))

và sửa nó thành:


(setq pt (polar pt (+ ang (/ pi 2)) (if (= 3DUY-TDT-BLOCK 1) 0 XXX)))

với XXX là khoảng cách mong muốn.

 

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

Bạn hướng dẫn thêm về chức năng này với, Mình có áp dụng nhưng không thành công.
 

- Để tra Field đang liên kết với những đối tượng nào, các bạn dùng lisp của Leemac trong link sau:

https://www.lee-mac.com/fieldobjects.html (Lệnh "fieldobjects", có thể tự đối lại tên)

Thank chủ thớt/
image.png.112df888b8643f060006d1982aef7aed.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 18/4/2025 tại 13:14, chuong123 đã nói:

Bạn hướng dẫn thêm về chức năng này với, Mình có áp dụng nhưng không thành công.
 

- Để tra Field đang liên kết với những đối tượng nào, các bạn dùng lisp của Leemac trong link sau:

https://www.lee-mac.com/fieldobjects.html (Lệnh "fieldobjects", có thể tự đối lại tên)

Thank chủ thớt/
image.png.112df888b8643f060006d1982aef7aed.png

Cái này chỉ áp dụng khi kết quả bạn để dưới dạng Field.

Ví dụ trong hình trên: Bạn đã dùng lệnh DT2 tính tổng diện tích 3 hình, sau đó ghi ra 1 Text (dưới dạng Field). Để kiểm tra lại xem cái Text "48.152" đang tính diện tích của những đối tượng nào, bạn dùng lệnh Fieldobjects trong lisp của Leemac rồi bấm chọn Text, nó sẽ Highlight 3 đối tượng trong hình.

  • 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
38 phút trước, Duong Nhat Duy đã nói:

Cái này chỉ áp dụng khi kết quả bạn để dưới dạng Field.

Ví dụ trong hình trên: Bạn đã dùng lệnh DT2 tính tổng diện tích 3 hình, sau đó ghi ra 1 Text (dưới dạng Field). Để kiểm tra lại xem cái Text "48.152" đang tính diện tích của những đối tượng nào, bạn dùng lệnh Fieldobjects trong lisp của Leemac rồi bấm chọn Text, nó sẽ Highlight 3 đối tượng trong hình.

Thank bác.
Vậy chỉ áp dụng cho các lệnh DT1;CD1...: vì mấy lệnh này nó nằm trực tiếp trên hình rồi
Vậy có cách nào để Field từ các bảng tổng hợp không bác: Từ các lệnh: TH1; TH2,...

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
2 phút trước, chuong123 đã nói:

Thank bác.
Vậy chỉ áp dụng cho các lệnh DT1;CD1...: vì mấy lệnh này nó nằm trực tiếp trên hình rồi
Vậy có cách nào để Field từ các bảng tổng hợp không bác: Từ các lệnh: TH1; TH2,...

Áp dụng cho tất cả các lệnh trong lisp luôn bạn nhé (trừ lệnh CD3), chỉ cần bạn tick ô Tạo field trong DTL là được.

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
49 phút trước, Duong Nhat Duy đã nói:

Áp dụng cho tất cả các lệnh trong lisp luôn bạn nhé (trừ lệnh CD3), chỉ cần bạn tick ô Tạo field trong DTL là được.

cảm ơn bác đã trả trả lời.. 
Mình có dùng Field cho các bảng tổng hợp thì lỗi không nhận dữ liệu (như hình); còn dùng cho các lệnh khác thì Ok hết:
image.thumb.png.09372c27841af73e3d8cf9293b6bb8cf.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
25 phút trước, chuong123 đã nói:

cảm ơn bác đã trả trả lời.. 
Mình có dùng Field cho các bảng tổng hợp thì lỗi không nhận dữ liệu (như hình); còn dùng cho các lệnh khác thì Ok hết:
image.thumb.png.09372c27841af73e3d8cf9293b6bb8cf.png

Trước tiên bạn FIELDDISPLAY nhập 1 đi cho mình dễ hình dung ra mọi thứ trong ảnh. Vì nó lỗi hơi vô lý, nếu mà lỗi khi tạo Field thì nó sẽ ra #### chứ không thể ra chữ số bình thường được.

  • Vote tăng 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
10 phút trước, Duong Nhat Duy đã nói:

Trước tiên bạn FIELDDISPLAY nhập 1 đi cho mình dễ hình dung ra mọi thứ trong ảnh. Vì nó lỗi hơi vô lý, nếu mà lỗi khi tạo Field thì nó sẽ ra #### chứ không thể ra chữ số bình thường được.

cảm ơn bạn.  lỗi do chưa bật chức năng FIELDDISPLAY này nên không thể nhận đúng vị trí
thank bạn nhiều, chờ bạn có nhiều sản phẩm hay hơn...

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
5 giờ trước, xaythiendungdia đã nói:

Bạn cho mình hỏi chút: Mình không vào được lệnh DTL

nó báo lỗi

Capture.PNG

Khả năng cao là lỗi cad, bạn thử test trên 1 vài đời cad khác xem sao.

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

Sao lệnh CD2 mình thử trên một số bản vẽ ko ra được text nhỉ ?. Tạo 1 bản vẽ mới toanh, copy các polyline từ bản vẽ cũ sang cũng ko ra kết quả, cũng ko có thông báo gì. TEXTSIZE set thành 250, textstyle ko phải annotation, mà ko thấy kết quả đâu cả ý là text có kết quả ko thấy, còn F2 vẫn thấy tính ra được tổng chiều dài.

Nếu chọn 1 text có sẵn trong bản vẽ thì vẫn ghi giá trị vào được.

Trước đây vẫn tạo ra được 1 text mới có tổng giá trị.

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
2 giờ trước, Zoi đã nói:

Sao lệnh CD2 mình thử trên một số bản vẽ ko ra được text nhỉ ?. Tạo 1 bản vẽ mới toanh, copy các polyline từ bản vẽ cũ sang cũng ko ra kết quả, cũng ko có thông báo gì. TEXTSIZE set thành 250, textstyle ko phải annotation, mà ko thấy kết quả đâu cả ý là text có kết quả ko thấy, còn F2 vẫn thấy tính ra được tổng chiều dài.

Nếu chọn 1 text có sẵn trong bản vẽ thì vẫn ghi giá trị vào được.

Trước đây vẫn tạo ra được 1 text mới có tổng giá trị.

Bạn gửi bản vẽ bị lỗi lên đây nhé.

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

×