Chuyển đến nội dung
Diễn đàn CADViet
thichmacarong

Tính diện tích 1 miền bằng pick điểm

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

Hic em đang rất rất cần một lisp tính diện tích theo kiểu pick điểm để chọn vùng, giống như khi ta tạo hacht ấy, mod nào có hoặc viết hộ em thì tốt quá, em 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
Hic em đang rất rất cần một lisp tính diện tích theo kiểu pick điểm để chọn vùng, giống như khi ta tạo hacht ấy, mod nào có hoặc viết hộ em thì tốt quá, em cảm ơn nhiều.

 

http://www.cadviet.com/forum/index.php?showtopic=855

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, nhưng em thử cái lisp đó rồi, chỉ có 2 chế độ chọn là chọn đối tượng hoặc chọn điểm, nhưng chọn điểm thì nó sẽ tính diện tích vùng tạo bởi các điểm đó, còn em muốn tính diện tích của vùng bao quanh điểm đó, tức là khi ta bấm vào một điểm thì cad sẽ tự chọn một vùng kín bao quanh điểm đó để tính diện tích, giống như ta select object trong hatch ở chế độ pick point ấy.

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, nhưng em thử cái lisp đó rồi, chỉ có 2 chế độ chọn là chọn đối tượng hoặc chọn điểm, nhưng chọn điểm thì nó sẽ tính diện tích vùng tạo bởi các điểm đó, còn em muốn tính diện tích của vùng bao quanh điểm đó, tức là khi ta bấm vào một điểm thì cad sẽ tự chọn một vùng kín bao quanh điểm đó để tính diện tích, giống như ta select object trong hatch ở chế độ pick point ấy.

 

Cái này khó nhưng mà hay à nha.

HEHEHE :s_dead: HEHEH

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

Theo đúng yêu cầu, bạn thử xem nhé!

lệnh là DTM (diện tích miền)

(defun c:dtm()
 (defun ctext (diem gt / lst)    
   (setq lst
   (list
     (cons 0 "TEXT")
     (cons 1 gt)
     (cons 10 diem)
     (cons 40 (getdist p "\nChieu cao chu: "))
   )
   )
   (entmake lst)
 )
 (defun dtdoituong (entdt /)
   (command ".area" "o" entdt)
   (command ".erase" entdt "")
   (getvar "area")
 )
 (defun getbound(p)
   (setq ent (entlast))
   (command ".boundary" "A" "B" "E" "I" "Y" "" p "")
   (setq ent1 (entlast))
   (cond
     ((eq ent ent1) nil)
     (t ent1)
   )
 )
 (setq
   p (getpoint "\nVao diem can tinh dien tich: ")
   entpl (getbound p)	
 )
 (if entpl
   (ctext p (rtos (dtdoituong entpl)))
   (alert "Diem ban chon khong kin!")
 )
 (princ)
)

 

Lisp trên rất cơ bản, chỉ tính đúng với các miền không có "lỗ thủng".

  • 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
Theo đúng yêu cầu, bạn thử xem nhé!

lệnh là DTM (diện tích miền)

(defun c:dtm()
 (defun ctext (diem gt / lst)    
   (setq lst
   (list
     (cons 0 "TEXT")
     (cons 1 gt)
     (cons 10 diem)
     (cons 40 (getdist p "\nChieu cao chu: "))
   )
   )
   (entmake lst)
 )
 (defun dtdoituong (entdt /)
   (command ".area" "o" entdt)
   (command ".erase" entdt "")
   (getvar "area")
 )
 (defun getbound(p)
   (setq ent (entlast))
   (command ".boundary" "A" "B" "E" "I" "Y" "" p "")
   (setq ent1 (entlast))
   (cond
     ((eq ent ent1) nil)
     (t ent1)
   )
 )
 (setq
   p (getpoint "\nVao diem can tinh dien tich: ")
   entpl (getbound p)	
 )
 (if entpl
   (ctext p (rtos (dtdoituong entpl)))
   (alert "Diem ban chon khong kin!")
 )
 (princ)
)

 

Lisp trên rất cơ bản, chỉ tính đúng với các miền không có "lỗ thủng".

Nhờ các bạn sửa giúp lisp này để tôi có thể tính tổng diện tích cho nhiều đối tượng ( nhiều miền 1 lúc) , yêu cầu là pick chọn miền thứ 1, miền thứ 2... phải chuột , chương trình hỏi chiều cao chữ và vị trí đặt chữ mang giá trị tổng diện tích . 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
nhưng chọn điểm thì nó sẽ tính diện tích vùng tạo bởi các điểm đó

Ủa, hơi lạ. Tôi chưa dùng thử lisp này, nhưng nếu chọn các điểm bao chung quanh vùng muốn tính diện tích thì hình như CAD vẫn có 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

http://www.cadviet.com/upfiles/ae.lsp

 

Lệnh AE: tính diện tích nhiều vùng liên tiếp bằng cách pick điểm, có đánh dấu vùng đã chọn bằng pline màu đỏ (chú ý: đừng undo hoặc cancer giữa chừng, nếu ko là ....rác bản vẽ lắm đấy :lol: (Mình lười sửa nên chưa hoàn chỉnh lắm- các bác cản thận khi dùng vậy :rolleyes:

(Khuyến mại thêm lệnh kx, ky, kz: tính và điền giá trị khoảng cách giữa các điểm)

  • Vote tăng 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
Theo đúng yêu cầu, bạn thử xem nhé!

lệnh là DTM (diện tích miền)

cái này bác viết lâu rôi nhưng nay em mới thấy nên lấy về dùng thử . cảm ơn bác 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
Hic em đang rất rất cần một lisp tính diện tích theo kiểu pick điểm để chọn vùng, giống như khi ta tạo hacht ấy, mod nào có hoặc viết hộ em thì tốt quá, em cảm ơn nhiều.

 

tôi đang dung list của ban đang cần đấy, no cung khá hay, tính được toàn bộ các hình chi bằng một cái lick chuột, và tính với mọi tỷ lệ. ban tham khảo nha

http://www.cadviet.com/upfiles/tdt_1.lsp

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ôi đang dung list của ban đang cần đấy, no cung khá hay, tính được toàn bộ các hình chi bằng một cái lick chuột, và tính với mọi tỷ lệ. ban tham khảo nha

http://www.cadviet.com/upfiles/tdt_1.lsp

Mong các bạn giúp tôi hiệu chỉnh lisp trên như sau : text diện tích chỉ lấy 1 số lẻ thay vì 3 số.Thank all.

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
Mình đã sửa lại một chút, giờ số lẻ bạn có thể điều khiển bằng lệnh Units (un) của CAD nhé:

 

http://www.cadviet.com/upfiles/2/tdt_1.lsp

Ai giúp mình edit tí.làm cho lisp trên lấy 1 số lẻ mà ko cần đk lệnh units.vì thấy hơi bất tiện.Thank all.

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
Đây bạn, nhưng mình nghĩ có thể chỉnh sửa qua lệnh UN vẫn cơ động hơn.

Sửa hộ bạn:

http://www.cadviet.com/upfiles/2/tdt_1_sole.lsp

Thank's.Vì bản vẽ mình tính dt chỉ lấy 1 số lẻ,còn lại các số khác thì lấy 2-3 số lẻ nên xài lệnh Un thấy bất tiệ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

Tôi đã down về và dùng thử của các bạn rồi thì thấy nó xài tốt. Nhưng tôi thấy 1 cái bất tiện là:

- Tôi chỉ định nghĩa được 1 lần tỉ lệ, ví dụ: tôi chọn tỉ lệ 1/20, rồi tính diện tích của các hình, xuất ra kết quả, rồi tôi tính diện tích của các hình khác với tỉ lệ khác, tôi sử dụng lại lênh tdt thì nó lại không hiện ra tỉ lệ để chọn mà nó vẫn tính với tỉ lệ khai báo ban đầu.

- Mà muốn khai báo với tỉ lệ khác thì lại phải thoát ra rồi vào lại file, sử dụng lại lệnh thì nó mới cho khai báo tỉ lệ.

Mong các bác fix dùm lỗi này nha(mỗi lần sử dụng lệnh là nó luôn luôn hiện ra chọn tỉ lệ muốn tính diện tích).

  • 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
Tôi đã down về và dùng thử của các bạn rồi thì thấy nó xài tốt. Nhưng tôi thấy 1 cái bất tiện là:

- Tôi chỉ định nghĩa được 1 lần tỉ lệ, ví dụ: tôi chọn tỉ lệ 1/20, rồi tính diện tích của các hình, xuất ra kết quả, rồi tôi tính diện tích của các hình khác với tỉ lệ khác, tôi sử dụng lại lênh tdt thì nó lại không hiện ra tỉ lệ để chọn mà nó vẫn tính với tỉ lệ khai báo ban đầu.

- Mà muốn khai báo với tỉ lệ khác thì lại phải thoát ra rồi vào lại file, sử dụng lại lệnh thì nó mới cho khai báo tỉ lệ.

Mong các bác fix dùm lỗi này nha(mỗi lần sử dụng lệnh là nó luôn luôn hiện ra chọn tỉ lệ muốn tính diện tích).

Tác dụng và hướng dẩn:

-Đo diện tích pline bằng cách chọn pline: gọi lệnh: DTICH

-Đo chu vi pline bằng cách chọn pline: gọi bằng lệnh: CHUVI

-Đo chu diện tích chữ nhật bằng cách pick 2 điểm góc hình chử nhật: gọi bằng lệnh: 2D Kết quả viết ra tại tâm hình chữ nhật.

-Đo diện tích 1 vùng kín bằng cách pick vào 1 điểm trong vùng: gọi bằng lệnh: DTICHP

*Lưu ý lệnh cho phép xác định gí trị 1 mét là bao nhiêu để tính toán ra diện tích theo tỏ lệ đang vẽ. Mặc định 1 mét vẽ là 1000, bạn muốn thay đổi giá trị này thì để ý khi nào lisp hỏi:

Mot met hien hanh la (1000) :

Hoặc:

Mot met hien hanh la (1000) :

Thì gỏ M enter lisp sẽ hỏi bạn: Mot met ban ve la <1000> : Bạn nhập vào enter rồi tiếp tục lệnh. Giá trị này sẽ lưu cho các lần gọi lệnh sau trong 1 phiên làm việc.

 

http://www.4shared.com/file/217275086/1a92.../tienichdo.html

  • 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

Nếu khai báo như vậy thì quá bất tiện, vì khai báo như bạn thì bạn phải làm 1 phép tính thủ công ở ngoài, sao bạn không làm như các bạn đã hướng dẫn ở trên là chỉ cần chọn tỉ lệ thì nó sẽ xuất ra kết quả cho khỏe.

- Ý mình ở đây là các bạn sửa lại lỗi : chỉ đo diện tích các hình theo 1 tỉ lệ khai báo ban đầu mà không thể khai tỉ lệ khác.

----> File hoàn chỉnh là: mỗi lần dùng lệnh tdt thì nó cho mình khai báo tỉ lệ mà mình muốn tính diện tích chứ không phải là chỉ tính diện tích theo tỉ lệ nhất định như khai báo lần đầ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
Nếu khai báo như vậy thì quá bất tiện, vì khai báo như bạn thì bạn phải làm 1 phép tính thủ công ở ngoài, sao bạn không làm như các bạn đã hướng dẫn ở trên là chỉ cần chọn tỉ lệ thì nó sẽ xuất ra kết quả cho khỏe.

- Ý mình ở đây là các bạn sửa lại lỗi : chỉ đo diện tích các hình theo 1 tỉ lệ khai báo ban đầu mà không thể khai tỉ lệ khác.

----> File hoàn chỉnh là: mỗi lần dùng lệnh tdt thì nó cho mình khai báo tỉ lệ mà mình muốn tính diện tích chứ không phải là chỉ tính diện tích theo tỉ lệ nhất định như khai báo lần đầu.

Dạ thưa bác chắc bác chưa dùng và cũng chả chụi đọc bài viết của tui bên trên.

-Lisp này tui mặc định một mét là 1000. (bác vẽ 1 mét là bao nhiêu thì bác phải biết chứ làm phép tính làm qué gì).

-Khi bác chọn xong vùng thì khi viết kết quả nó bảo bác hoặc chọn 1 điểm để viết kết quả hoặc bác muốn thay đổi cái tỉ lệ thì bác đừng chọn điểm vội mà gò chử M rồi enter nó sẽ cho bác nhập lại cái giá trị 1 mét mà bác vẽ (tui dị ứng với những cây hỏi về tỉ lệ vì tỉ lệ theo quan niện của tui là khi in ra giấy mới tính nên tất cả các lisp tui viết khi cần tính toàn tui sẽ hỏi 1 mét vẽ bằng bao nhiêu).

-Rồi bác chỉ điểm để nó viết kết quả. Nếu lần sau trong phiên làm việc này lisp sẽ nhớ cái giá trị bác vừa nhập vào ấy, bác muốn thay lần nửa thì lại làm như thế. Mong bác khi phát biểu thì test trước phát và chịu khó dòm cái dòng command xem nó nói gì chứ ko phải cắm đầu mà nhấn với chọn xong bảo quá bất tiệ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
Nếu khai báo như vậy thì quá bất tiện, vì khai báo như bạn thì bạn phải làm 1 phép tính thủ công ở ngoài, sao bạn không làm như các bạn đã hướng dẫn ở trên là chỉ cần chọn tỉ lệ thì nó sẽ xuất ra kết quả cho khỏe.

- Ý mình ở đây là các bạn sửa lại lỗi : chỉ đo diện tích các hình theo 1 tỉ lệ khai báo ban đầu mà không thể khai tỉ lệ khác.

----> File hoàn chỉnh là: mỗi lần dùng lệnh tdt thì nó cho mình khai báo tỉ lệ mà mình muốn tính diện tích chứ không phải là chỉ tính diện tích theo tỉ lệ nhất định như khai báo lần đầu.

- Bác chưa tìm kỹ, chứ trên diễn đàn đã post rùi đấy thui. Đáp ứng cho bác 3 việc:

1. Pick chọn 1 điểm trong vùng muốn tính diện tích, vùng chọn (nếu kín) sẽ được tô Hatch

2. Có thể chọn tỷ lệ bất kỳ. Tỷ lệ này có thể thay đổi bất kỳ lúc nào và lưu đến lần chạy sau.

3. Muốn xuất kết quả lẻ 0.0 hay 0.0000 cũng được. Việc này cũng có thể thay đổi bất kỳ lúc nào.

- Bác tải và xem hướng dẫn để cài đặt nhé, gõ lệnh DDT để tính diện tích:

- Install: http://www.mediafire.com/file/z43aajcmjtz/DUYLISP.exe

- Hướng dẫn: http://www.mediafire.com/file/h3rwqf2nqn0/Huong dan cai dat DuyLisp.doc

  • 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

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

×