Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
matran

[Đã xong] Nhờ giúp Lisp tính diện tích và lập bảng

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

Cám ơn thaistreetz và anh tuệ nhé đây la chương trình mình đã thêm phần tính khối lượng, vì mình làm đóng tàu nên khối lượng riêng mình lấy là của thép mọi người tham khảo nhé

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

 

Lisp của bạn chưa chạy được vì thiếu đâu đó một (hoặc vài) dấu đóng ngoặc.

mình đã xem qua lisp của bạn và có vài điều lưu ý bạn về lisp này.

- Xóa dòng (vl-load-com) đi vì lisp này không cần dùng đến nó. nếu để nó lại thì không sao đối với các bản cad từ 2004 trở lên. nhưng đối với các bản cad cũ như cad 14 sẽ không chạy được. Một số người vẫn phải dùng cad14 cho 1 vài việc.

- tuyệt đối không sử dụng chữ ký tự t làm biến nhé. (bạn tham khảo giải thích của Bác Hoành về biến này tại đây

- Nên có thêm phần khai báo khối lượng riêng của vật liệu cho phù hợp với nhu cầu chung của nhiều người, nhiều loại công việc.

- Nên sửa lại phần kẻ bảng cho gọn gàng hơn, giúp lisp chạy nhanh hơn đồng thời đỡ rác bản vẽ.

- Khi viêt lisp nên chú ý đặt ra trường hợp người dùng đang chạy thì nhất ESC bỏ dở lệnh giữa chừng dẫn đến việc rất nhiều biến hệ thống lisp can thiệp từ đầu sẽ bị thay đổi, dẫn đến khó khăn cho người vẽ. để giảm thiểu những thay đổi này thì nên trả lại giá trị ban đầu của các biến hệ thống ngay sau 1 thay đổi càng sớm càng tốt.

  • 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
Bạn Thaistreetz có thể xem lại giúp mình không, cái này khi tính với tỷ lệ 1/1 thì d/t đúng, nhưng với những tỷ lệ khác thì không chính xác

(VD: Mình có khu đất 10.000m2 (100x100) vẽ với tỷ lệ 1/10 thì chiều dài mỗi cạnh là 100, nhưng d/t tính ra là 1000m2, vậy thiếu đi 10 lần)

Mình muốn là nhập tỷ lệ bản vẽ vào thì lisp tự tính diện tích sao cho d/t đó là d/t thực của khu đất. Cảm ơn bạn

 

Chết thật. đúng là mình nhầm chỗ này. đúng ra diện tích đo được phải chia cho bình phương của tỷ lệ vẽ mới đúng. mình mới nhân 1 lần. cảm ơn bạn đã phát hiện ra sai sót chết người này. :bigsmile:

Mình sửa trực tiếp vào code đã post bên trên rồi nhé.

  • 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
Chết thật. đúng là mình nhầm chỗ này. đúng ra diện tích đo được phải chia cho bình phương của tỷ lệ vẽ mới đúng. mình mới nhân 1 lần. cảm ơn bạn đã phát hiện ra sai sót chết người này. :D

Mình sửa trực tiếp vào code đã post bên trên rồi nhé.

Vẫn chưa đúng bạn ơi, bây giờ thì diệất nhiều

(Cụ thể như: khu đất 10.000m2 (100x100) vẽ với tỷ lệ 1/10 thì chiều dài mỗi cạnh là 100, nhưng d/t tính ra là 1000.000m2, nhưng với khu đất 1000m2 vẽ với tỷ lệ 1/1 thì d/ là 1.000.000m2 gấp 1000 lần)

Nhờ bạn xem lại

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ẫn chưa đúng bạn ơi, bây giờ thì diệất nhiều

(Cụ thể như: khu đất 10.000m2 (100x100) vẽ với tỷ lệ 1/10 thì chiều dài mỗi cạnh là 100, nhưng d/t tính ra là 1000.000m2, nhưng với khu đất 1000m2 vẽ với tỷ lệ 1/1 thì d/ là 1.000.000m2 gấp 1000 lần)

Nhờ bạn xem lại

 

Đâu nhỉ. lần này mình chạy đúng mà.

khu đất 10.000m2 (100x100) vẽ với tỷ lệ 1/1 thì chiều dài mỗi cạnh là 100 trên bản vẽ => lisp chạy đc kq là 10000.00

khu đất 10.000m2 (100x100) vẽ với tỷ lệ 1/10 thì chiều dài mỗi cạnh là 10 trên bản vẽ => lisp chạy đc kq là 10000.00

Như vậy là chính xác. lần này thì bạn nhầm rồi. hehe

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
Đâu nhỉ. lần này mình chạy đúng mà.

khu đất 10.000m2 (100x100) vẽ với tỷ lệ 1/1 thì chiều dài mỗi cạnh là 100 trên bản vẽ => lisp chạy đc kq là 10000.00

khu đất 10.000m2 (100x100) vẽ với tỷ lệ 1/10 thì chiều dài mỗi cạnh là 10 trên bản vẽ => lisp chạy đc kq là 10000.00

Như vậy là chính xác. lần này thì bạn nhầm rồi. hehe

Bạn có nhầm không, sao lại 10.000m2, tỷ lệ 1/10 lại là mỗi cạnh là 10 trên bản vẽ, phải là 1000 mới đúng chứ nên kết quả là sai bạn à (100.000.000m2)

Bạn có thể xem lại được khô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
Bạn có nhầm không, sao lại 10.000m2, tỷ lệ 1/10 lại là mỗi cạnh là 10 trên bản vẽ, phải là 1000 mới đúng chứ nên kết quả là sai bạn à (100.000.000m2)

Bạn có thể xem lại được không

10.000m2 (100x100) , tỷ lệ 1/10 => mỗi cạnh là 10 => S= 100m2 ới đúng chứ phải không bạn HoangSon?

Bạn sửa dòng này :

(setq S (* (+ S (* dt 2)) tl tl) tdt (+ s tdt))

thành dòng này :

(setq S (/ (+ S (* dt 2)) tl tl) tdt (+ s tdt))

  • 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.000m2 (100x100) , tỷ lệ 1/10 => mỗi cạnh là 10 => S= 100m2 ới đúng chứ phải không bạn HoangSon?

Bạn sửa dòng này :

(setq S (* (+ S (* dt 2)) tl tl) tdt (+ s tdt))

thành dòng này :

(setq S (/ (+ S (* dt 2)) tl tl) tdt (+ s tdt))

Tue_NV xem lại dùm mình được không

Với tl vẽ 1/10 cho khu đất 10.000m2 thì đúng, nhưng cũng với tl vẽ đó (1/10) cho khu đất 1.000m2 thì không đúng (chỉ có 100m2, giảm đi 10 lầ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
Đâu nhỉ. lần này mình chạy đúng mà.

khu đất 10.000m2 (100x100) vẽ với tỷ lệ 1/1 thì chiều dài mỗi cạnh là 100 trên bản vẽ => lisp chạy đc kq là 10000.00

khu đất 10.000m2 (100x100) vẽ với tỷ lệ 1/10 thì chiều dài mỗi cạnh là 10 trên bản vẽ => lisp chạy đc kq là 10000.00

Như vậy là chính xác. lần này thì bạn nhầm rồi. hehe

Xin lỗi bạn Thaistreetz và Tue_NV mình đã nhầm

[ quote]khu đất 10.000m2 (100x100) vẽ với tỷ lệ 1/10 thì chiều dài mỗi cạnh là 100, nhưng d/t tính ra là 1000.000m2, nhưng với khu đất 1000m2 vẽ với tỷ lệ 1/1 thì d/ là 1.000.000m2 gấp 1000 lần[ /quote]

@Khu đất 1.000m2 nên mới có cạnh 100x100 t/l 1/10 dẫn tới sự hiểu lầm của 2 bạ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
Xin lỗi bạn Thaistreetz và Tue_NV mình đã nhầm

[ quote]khu đất 10.000m2 (100x100) vẽ với tỷ lệ 1/10 thì chiều dài mỗi cạnh là 100, nhưng d/t tính ra là 1000.000m2, nhưng với khu đất 1000m2 vẽ với tỷ lệ 1/1 thì d/ là 1.000.000m2 gấp 1000 lần[ /quote]

@Khu đất 1.000m2 nên mới có cạnh 100x100 t/l 1/10 dẫn tới sự hiểu lầm của 2 bạn.

 

Đúng rồi đó. Bạn chỉ cần hiểu đơn giản: Ngoài thực địa khu đất của bạn có mỗi cạnh là 100m. nhưng bạn vẽ với tỷ lệ 1/10 (1 đơn vị vẽ trong cad = 10m ngoài thực địa) thì bản vẽ của bạn sẽ có kích thước 10x10 như mình đã nói.

cách tính của lisp như sau:

đo diện tích trên bản vẽ được S = 10x10=100. => diện tích thực = S/(Tỷ lê)^2 = 100x10x10 = 10000.

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 mình không lầm thì bạn Hoangson614 cũng là bên nghành trắc địa nhưng mình. Bạn Thaistreetz có thể cho mình giải thích 1 tý về tỷ lệ bản vẽ như sau, khi bản đồ ở tỷ lệ 1/500 thì tương đương với bản vẽ khi tính diện tích là 1/1, khi bản đồ ở tỷ lệ 1/200 thì tương đương với bản vẽ khi tính diện tích là 5/2, khi bản đồ ở tỷ lệ 1/1000 thì tương đương với bản vẽ khi tính diện tích là 5/10 và khi bản đồ ở tỷ lệ 1/2000 thì tương đương với bản vẽ khi tính diện tích là 5/20. Do khi tính dt bằng lisp R của bạn nó không cho mình nhập tỷ lệ là 2/5 nên cùng 1 thửa đất mà 2 diện tích khác nhau. Đây là file cad mẫu của mình

http://www.cadviet.com/upfiles/2/mau_7.dwg

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 mình không lầm thì bạn Hoangson614 cũng là bên nghành trắc địa nhưng mình. Bạn Thaistreetz có thể cho mình giải thích 1 tý về tỷ lệ bản vẽ như sau, khi bản đồ ở tỷ lệ 1/500 thì tương đương với bản vẽ khi tính diện tích là 1/1, khi bản đồ ở tỷ lệ 1/200 thì tương đương với bản vẽ khi tính diện tích là 5/2, khi bản đồ ở tỷ lệ 1/1000 thì tương đương với bản vẽ khi tính diện tích là 5/10 và khi bản đồ ở tỷ lệ 1/2000 thì tương đương với bản vẽ khi tính diện tích là 5/20. Do khi tính dt bằng lisp R của bạn nó không cho mình nhập tỷ lệ là 2/5 nên cùng 1 thửa đất mà 2 diện tích khác nhau. Đây là file cad mẫu của mình

http://www.cadviet.com/upfiles/2/mau_7.dwg

Bạn lấy diện tích tính đc chia cho (500/mẫu số tỷ lệ bản đồ) bình phương

Với ví dụ của bạn.

- TH 1 : tl 1/500 = 4158.67 / sqr(500/500)=4158.67

- TH 2 : tl 1/200 = 25991.7089 / sqr(500/200) = 4158.67

- TH 3 : tl 1/1000 = 1039.6684 / sqr(500/1000) = 4158.67

- TH 4 : tl 1/2000 = 259.9171 / sqr(500/2000) = 4158.67

  • 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

Cá mơn bạn matran đã tính ra tỷ lệ cho mình, nhưng khi thực hiện công việc với nhiều vùng cần tính dt khác nhau thì chả lẽ bạn lấy từng dt trong bảng để chia cho tỷ lệ cần tính thì hơi mất công quá bạn ơi. Nên mình mới nhờ mọi người là chỉnh lisp này 1 ít để mình có thể nhập tỷ lệ bản đồ, nếu mình viết có gì sai xót xin bạn thông cảm bỏ qua cho.

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 bạn không vẽ tất cả bản vẽ của mình với tỷ lệ là 1/1. sau đó qua layout dùng viewport (lệnh MV) để zoom bản vẽ theo tỷ lệ bất kỳ nào mà bạn mong muốn nhỉ. Vẽ với tỷ lệ khác 1/1 rất khổ.

Mình góp ý thế thôi, còn nếu đó là thói quen làm việc hoặc do đặc thù riêng công việc của bạn thì bạn có thể sửa thế này cho fù hợp với nhu cầu của mình vậy.

Đối với Lisp thứ nhất.

bạn sửa dòng này: (setq dtcon (* (getvar "AREA") tl tl))

Thành: (setq dtcon (* (getvar "AREA") tl (/ tl 500 500) ))

 

Đối với lisp thứ 2:

Bạn sửa dòng này: (setq S (* (+ S (* dt 2)) tl tl) tdt (+ s tdt))

Thành: (setq S (* (+ S (* dt 2)) tl (/ tl 500 500)) tdt (+ s tdt))

 

PS: bạn dùng lisp thứ 2 là đủ.

  • 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
Tưởng mỗi mình thức đêm chứ. ^^

Mình đã sửa trực tiếp vào code trên theo như yêu cầu của bạn rồi đấy.

hix hix!sory bạn nhen!bạn có thể để lại cái Pline sau ko tính diện tích được ko vậy bạn!thanks!

Thanks!mình đã tự làm được rồi!

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ào mọi người. em có 1 trường hợp cũng giống như trên nhưng mà cái của em là các số diện tích đó nó không nhập trong file cad mà nó nhập trong file excel luôn. tự động nhập luôn. tức là thay vì khi mình kích vào đối tượng thì số diện tích hiện trong properties thì trường hợp của em là nó tự động nhập trong file excel luôn. em có gởi hình mình họa mong các anh có thể viết dùm em cái list được không à. và có thể tự động nhập khoảng lùi luôn. cảm ơn mấy anh trước

http://www.cadviet.com/upfiles/2/help_1.jpg

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ủa bạn đây. lisp sẽ tính diện tích thực theo tỷ lệ bản vẽ bạn nhập vào. đầu tiên bạn phải chọn vị trí đặt bảng thống kê diện tích trên bản vẽ rồi mới pick chọn các miền cần đo diện tích. pick tới đâu diện tích sẽ được thống kê vào bảng đến đó. Mình viết thêm cho bạn một ô tính tổng diện tích các miền đã đo (yêu cầu của bạn không thấy nêu vấn đề này), tuy nhiên bạn phải Enter để kết thúc lệnh (không nhấn Esc nhé) thì lisp mới vẽ được ô cuối cùng này.

(defun c:r()
 (setvar "cmdecho" 0)
 (setq lacol (getvar "CEColor"))
 (setq ladin (getvar "dimzin"))
 (setq laos (getvar "osmode"))  
 (if (not tl) (setq tl 1))
 (if (not h) (setq h 1))
 (setq tl1 (getreal (strcat "\nty le ban ve < 1/" (rtos tl 2 0) " >: 1/"))
caot1 (getreal (strcat "\nCao text < " (rtos h 2 0) " >: ")))
 (if tl1 (setq tl tl1))
 (if caot1 (setq h caot1))

 (setq	 k 0 
tdt 0)
 (setq ss (ssadd))

(setvar "dimzin" 0)
(setvar "OSMODE" 0)
(setq PT (getpoint "\nChon diem xuat bang thong ke dien tich (mep trai):"))
(setq 	P1 (list (+ (car PT)(* 6 h)) (cadr PT))
P2 (list (+ (car PT)(* 22 h)) (cadr PT))
P3 (list (car PT) (- (cadr PT)(* 3 h)))
P4 (list (car P1) (cadr P3))
P5 (list (car P2) (cadr P3))
P6 (list (+ (car PT)(* 11 h)) (+ (cadr PT)(* 2 h)))
P7 (list (+ (car PT)(* 3 h)) (- (cadr PT)(* 1.5 h)))
P8 (list (+ (car PT)(* 14 h)) (- (cadr PT)(* 1.5 h)))
);setq
(command 	"pline" PT P2 P5 P3 "C"
	"pline" P1 P4 ""
	"text" "m" P6 (* 1.2 h) 0 "%%UB¶ng thèng kª diÖn tÝch"
	"text" "m" P7 h 0 "STT"
	"text" "m" P8 h 0 "DiÖn tÝch (m2)"
);command

(setq pt1 (getpoint "\n Chon mien tinh dien tich : "))
 (while (/= pt1 nil)
(setq k (+ 1 k))
(command "TEXT" "m" pt1 (* 3 h) 0 (rtos k 2 0))
(setq 	PT (list (car P3) (cadr P3))
P1 (list (+ (car PT)(* 6 h)) (cadr PT))
P2 (list (+ (car PT)(* 22 h)) (cadr PT))
P3 (list (car PT) (- (cadr PT)(* 3 h)))
P4 (list (car P1) (cadr P3))
P5 (list (car P2) (cadr P3))
P7 (list (+ (car PT)(* 3 h)) (- (cadr PT)(* 1.5 h)))
P8 (list (+ (car PT)(* 14 h)) (- (cadr PT)(* 1.5 h)))
P9 (list (car PT) (- (cadr P3)(* 3 h)))
P10 (list (car P1) (cadr P9))
P11 (list (car P2) (cadr P9))
P12 (list (car P7) (- (cadr P3)(* 1.5 h)))
P13 (list (car P8) (cadr P12))
);setq
(command "CECOLOR" 4 "-boundary" pt1 "" )
(setvar "CECOLOR" lacol)
(setq et (entlast))
(ssadd et ss)
(command "area" "e" "last")				
(setq et (entlast))
(ssadd et ss)
(setq dtcon (* (getvar "AREA") tl tl))
(setq tdt (+ dtcon tdt))
(command "erase" ss "")

(command "pline" PT P2 P5 P3 "C"
	"pline" P1 P4 ""
	"text" "m" P7 h 0 (rtos k 2 0)
	"text" "m" P8 h 0 (rtos dtcon 2 2))

(setq pt1 (getpoint "\n chon mien tinh dien tich tiep theo hoac enter de ket thuc lenh..."))
);while
(setq ss nil)
(setvar "DIMZIN" ladin)
(command 	"pline" P3 P9 P11 P5 "C"
	"pline" P10 P4 ""
	"text" "m" P12 h 0 "Tæng"
	"text" "m" P13 h 0 (rtos tdt 2 2)
);command
(setvar "OSMODE" laos)
(setvar "cmdecho" 1)
)

Em thấy lisp mày của bác rất hay rùi nhưng nó vẫn còn hai nhược điểm lớn khiến cho tác dung của nó bị giảm rất nhiều

- Nó vô hiệu vơi các đường cong như spl, arc, elip...

-khi đường bao thay đổi kết quả không tự thay đổi theo.

Nếu bác khắc phục được 2 điểm này thì lisp này thật tuyệt, hic em hay phải tính diện tích lắm mà thấy các lisp hiện tại chưa giả quyết được triệt để vấn đề.mong các cao thủ có ý kiến nhé :undecided:

  • 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
Em thấy lisp mày của bác rất hay rùi nhưng nó vẫn còn hai nhược điểm lớn khiến cho tác dung của nó bị giảm rất nhiều

- Nó vô hiệu vơi các đường cong như spl, arc, elip...

-khi đường bao thay đổi kết quả không tự thay đổi theo.

Nếu bác khắc phục được 2 điểm này thì lisp này thật tuyệt, hic em hay phải tính diện tích lắm mà thấy các lisp hiện tại chưa giả quyết được triệt để vấn đề.mong các cao thủ có ý kiến nhé :blink:

:blink: Qua Lisp này mình xem cũng rất hay.

Nếu được áp dụng theo hàng ngang thì hay lắm, mà thống kê theo từng khu vực thì hay hơn nhiều. Xong một khu thì xuống một hàng, Tổng theo hàng ngang và cột .

:undecided: Rất được các anh giúp

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ủa bạn đây. lisp sẽ tính diện tích thực theo tỷ lệ bản vẽ bạn nhập vào. đầu tiên bạn phải chọn vị trí đặt bảng thống kê diện tích trên bản vẽ rồi mới pick chọn các miền cần đo diện tích. pick tới đâu diện tích sẽ được thống kê vào bảng đến đó. Mình viết thêm cho bạn một ô tính tổng diện tích các miền đã đo (yêu cầu của bạn không thấy nêu vấn đề này), tuy nhiên bạn phải Enter để kết thúc lệnh (không nhấn Esc nhé) thì lisp mới vẽ được ô cuối cùng này.

(defun c:r()
 (setvar "cmdecho" 0)
 (setq lacol (getvar "CEColor"))
 (setq ladin (getvar "dimzin"))
 (setq laos (getvar "osmode"))  
 (if (not tl) (setq tl 1))
 (if (not h) (setq h 1))
 (setq tl1 (getreal (strcat "\nty le ban ve < 1/" (rtos tl 2 0) " >: 1/"))
caot1 (getreal (strcat "\nCao text < " (rtos h 2 0) " >: ")))
 (if tl1 (setq tl tl1))
 (if caot1 (setq h caot1))

 (setq	 k 0 
tdt 0)
 (setq ss (ssadd))

(setvar "dimzin" 0)
(setvar "OSMODE" 0)
(setq PT (getpoint "\nChon diem xuat bang thong ke dien tich (mep trai):"))
(setq 	P1 (list (+ (car PT)(* 6 h)) (cadr PT))
P2 (list (+ (car PT)(* 22 h)) (cadr PT))
P3 (list (car PT) (- (cadr PT)(* 3 h)))
P4 (list (car P1) (cadr P3))
P5 (list (car P2) (cadr P3))
P6 (list (+ (car PT)(* 11 h)) (+ (cadr PT)(* 2 h)))
P7 (list (+ (car PT)(* 3 h)) (- (cadr PT)(* 1.5 h)))
P8 (list (+ (car PT)(* 14 h)) (- (cadr PT)(* 1.5 h)))
);setq
(command 	"pline" PT P2 P5 P3 "C"
	"pline" P1 P4 ""
	"text" "m" P6 (* 1.2 h) 0 "%%UB¶ng thèng kª diÖn tÝch"
	"text" "m" P7 h 0 "STT"
	"text" "m" P8 h 0 "DiÖn tÝch (m2)"
);command

(setq pt1 (getpoint "\n Chon mien tinh dien tich : "))
 (while (/= pt1 nil)
(setq k (+ 1 k))
(command "TEXT" "m" pt1 (* 3 h) 0 (rtos k 2 0))
(setq 	PT (list (car P3) (cadr P3))
P1 (list (+ (car PT)(* 6 h)) (cadr PT))
P2 (list (+ (car PT)(* 22 h)) (cadr PT))
P3 (list (car PT) (- (cadr PT)(* 3 h)))
P4 (list (car P1) (cadr P3))
P5 (list (car P2) (cadr P3))
P7 (list (+ (car PT)(* 3 h)) (- (cadr PT)(* 1.5 h)))
P8 (list (+ (car PT)(* 14 h)) (- (cadr PT)(* 1.5 h)))
P9 (list (car PT) (- (cadr P3)(* 3 h)))
P10 (list (car P1) (cadr P9))
P11 (list (car P2) (cadr P9))
P12 (list (car P7) (- (cadr P3)(* 1.5 h)))
P13 (list (car P8) (cadr P12))
);setq
(command "CECOLOR" 4 "-boundary" pt1 "" )
(setvar "CECOLOR" lacol)
(setq et (entlast))
(ssadd et ss)
(command "area" "e" "last")				
(setq et (entlast))
(ssadd et ss)
(setq dtcon (* (getvar "AREA") tl tl))
(setq tdt (+ dtcon tdt))
(command "erase" ss "")

(command "pline" PT P2 P5 P3 "C"
	"pline" P1 P4 ""
	"text" "m" P7 h 0 (rtos k 2 0)
	"text" "m" P8 h 0 (rtos dtcon 2 2))

(setq pt1 (getpoint "\n chon mien tinh dien tich tiep theo hoac enter de ket thuc lenh..."))
);while
(setq ss nil)
(setvar "DIMZIN" ladin)
(command 	"pline" P3 P9 P11 P5 "C"
	"pline" P10 P4 ""
	"text" "m" P12 h 0 "Tæng"
	"text" "m" P13 h 0 (rtos tdt 2 2)
);command
(setvar "OSMODE" laos)
(setvar "cmdecho" 1)
)

bạn quá giỏi,cảm ơn bạn nhiều nhé.ji

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 ơi nếu lips có phần tính tổng diện tích thì tốt quá

hơn nữa cách pick vào vùng diện tích kín đó cũng bất tiện với các đa giác chưa bo kín nếu cách tính đó them 1 lựa chọn theo đường bo ngoài thì tuyệt!!!

thak bạ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ạ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


×