Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
thanhdatkts

[Nhờ chỉnh sửa ] lisp tính tổng diện tích và chu vi các hình

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

(defun c:dt()
;tinh dien tich 1 hinh khep kin
(setq p (getpoint "Chon khu vuc kin can tinh dien tich:"))
(command "boundary" p "")
(command "area" "e" "l")
   	(command "erase" "l" "" )
(command "color" "bylayer")
 (command "text" "m" p pause "0" (strcat "%%u" "Dien tích = " (rtos (/ (getvar "area" ) 1000000) 2 2) " m2"  ))
   	(command "redraw" )
)
(defun c:cv()
;tinh chu vi 1 hinh khep kin
(setq p (getpoint "Chon khu vuc kin can tinh chu vi:"))
(command "boundary" p "")
(command "area" "e" "l")
   	(command "erase" "l" "" )
(command "color" "bylayer")
 (command "text" "m" p pause "0" (strcat "%%u" "Chu vi = " (rtos (/ (getvar "perimeter" ) 1000) 2 2) " m" ))
   	(command "redraw" )
)

mình có 1 lisp tính diện tích và chu vi rồi...nhưng cái hạn chế của nó chỉ tính cho 1 pline liền và vì công việc tính khối lượng nên cộng các hình hơi mất thời gian.....

 

mong các pro có thể giúp sửa nó tính cho nhiều hình thay vì chỉ có 1 hình

 

link ví dụ http://www.mediafire...anjdyg4oz7pykr4

 

thank các pro

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

(defun c:dt()
;tinh dien tich 1 hinh khep kin
(setq p (getpoint "Chon khu vuc kin can tinh dien tich:"))
(command "boundary" p "")
(command "area" "e" "l")
   	(command "erase" "l" "" )
(command "color" "bylayer")
 (command "text" "m" p pause "0" (strcat "%%u" "Dien tích = " (rtos (/ (getvar "area" ) 1000000) 2 2) " m2"  ))
   	(command "redraw" )
)
(defun c:cv()
;tinh chu vi 1 hinh khep kin
(setq p (getpoint "Chon khu vuc kin can tinh chu vi:"))
(command "boundary" p "")
(command "area" "e" "l")
   	(command "erase" "l" "" )
(command "color" "bylayer")
 (command "text" "m" p pause "0" (strcat "%%u" "Chu vi = " (rtos (/ (getvar "perimeter" ) 1000) 2 2) " m" ))
   	(command "redraw" )
)

mình có 1 lisp tính diện tích và chu vi rồi...nhưng cái hạn chế của nó chỉ tính cho 1 pline liền và vì công việc tính khối lượng nên cộng các hình hơi mất thời gian.....

 

mong các pro có thể giúp sửa nó tính cho nhiều hình thay vì chỉ có 1 hình

 

link ví dụ http://www.mediafire...anjdyg4oz7pykr4

 

thank các pro

Mình thấy theo cách chọn vùng để tính chu vi và diện tích bằng cách pick điểm thì ko ổn, vì nếu bạn muốn pick vào nhiều vùng khác nhau thì phải zoom toàn bộ vùng đó giống như trong lệnh Hatch. vì vậy nếu muốn dùng tốt lisp tính diện tích cũng như chu vi cho nhiều hình thì chọn các hình bằng cách chọn đối tượng là khả thi hơn!

Trên diễn đàn có rất nhiều lisp tính diện tích chu vi. Mình gửi bạn cái của mình đang xài. Bạn có thể tham khảo!

(defun c:tdt(/ dt sdt gt tgt id pt1)
 (setq dt (ssget
 	'((-4 . "<OR")
  (0 . "CIRCLE")
  (0 . "*POLYLINE")
  (-4 . "OR>")
    	))
)
 (setq
sdt (sslength dt)
id 0
tgt 0)
(testcaochu)
 (repeat sdt
(setq ent (ssname dt id)
  id (1+ id)
  )
(command "area" "o" ent "")
(setq gt (getvar "area"))
(setq tgt (+ tgt gt))
(princ)
)
(setq pt1 (getpoint "\nchon diem ghi chu:"))
 (command "text" "j" "mc" pt1 (rtos caochu) "0" (strcat(rtos (/ tgt 1000000) 2 1) "m2"))
 (princ)
 )
;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:tcd(/ DT SDT TCD PT1)
 (setq dt (ssget '((-4 . "<OR")
  (0 . "CIRCLE")
  (0 . "ELLIPSE")
  (0 . "SPLINE")
  (0 . "ARC")
  (0 . "LINE")
  (0 . "*POLYLINE")
  (-4 . "OR>")
	))
)
(testcaochu)
 (setq sdt (sslength dt))
 (setq
 	index 0
 	tcd 0
 	)
 (repeat sdt
(setq
 	ent (ssname dt index)
 	index (1+ index)    
 	)    
(command "lengthen" ent "")
(setq cd (getvar "perimeter"))
(setq tcd (+ tcd cd))
)
 (setq pt1 (getpoint "\nchon diem ghi chu:"))
 (command "text" "j" "mc" pt1 (rtos caochu) "0" (strcat(rtos (/ tcd 1000) 2 1) "m"))
 (princ)
 )
;;;;;;;;;;;;;;;;;;
(defun testcaochu()
 (if (not caochu1)
(setq caochu (getdist "\nchieu cao chu? :"))
(setq caochu (getdist (strcat "chieu cao chu <" (rtos caochu1) ">:")))
)
 (if (= caochu nil) (setq caochu caochu1))
 (setq caochu1 caochu)
 )

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 thấy theo cách chọn vùng để tính chu vi và diện tích bằng cách pick điểm thì ko ổn, vì nếu bạn muốn pick vào nhiều vùng khác nhau thì phải zoom toàn bộ vùng đó giống như trong lệnh Hatch. vì vậy nếu muốn dùng tốt lisp tính diện tích cũng như chu vi cho nhiều hình thì chọn các hình bằng cách chọn đối tượng là khả thi hơn!

Trên diễn đàn có rất nhiều lisp tính diện tích chu vi. Mình gửi bạn cái của mình đang xài. Bạn có thể tham khảo!

(defun c:tdt(/ dt sdt gt tgt id pt1)
 (setq dt (ssget)
sdt (sslength dt)
id 0
tgt 0)
 (repeat sdt
(setq ent (ssname dt id)
  id (1+ id)
  )
(command "area" "o" ent "")
(setq gt (getvar "area"))
(setq tgt (+ tgt gt))
(princ)
)
(setq pt1 (getpoint "\nchon diem ghi chu:"))
 (command "text" "j" "mc" pt1 "250" "0" (strcat(rtos (/ tgt 1000000) 2 1) "m2"))
 (princ)
 )
;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:tcd(/ DT SDT TCD PT1)
 (setq dt (ssget '((-4 . "<OR")
  (0 . "CIRCLE")
  (0 . "ELLIPSE")
  (0 . "SPLINE")
  (0 . "ARC")
  (0 . "LINE")
  (0 . "*POLYLINE")
  (-4 . "OR>")
	))
)
 (setq sdt (sslength dt))
 (setq
 	index 0
 	tcd 0
 	)
 (repeat sdt
(setq
 	ent (ssname dt index)
 	index (1+ index)    
 	)    
(command "lengthen" ent "")
(setq cd (getvar "perimeter"))
(setq tcd (+ tcd cd))
)
 (setq pt1 (getpoint "\nchon diem ghi chu:"))
 (command "text" "j" "mc" pt1 "250" "0" (strcat(rtos (/ tcd 1000) 2 1) "m"))
 (princ)
 )

lisp này thì đúng rồi như khi muốn phóng to text ra thì phải scan không tiện lắm bằng lisp trên vì cái pick điểm kéo ra thì nó cũng tự scan roài....bác sửa lại giúp đc không

 

cái lisp trên tính tổng chu vi thì đúng nhưng tổng diện tích các pline vùng kín >2 vùng thì sai.....

 

http://www.mediafire.com/?b11emefhg184uyy

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

Trên diễn đàn đã nói về vấn đề này rồi mà, hình như có cái lisp udt.lsp đấy, bạn thử tìm trên diễn đàn xem. Còn tính chu vi cũng có, hình như là ..._tg.lsp mình không nhớ lắ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

lisp này thì đúng rồi như khi muốn phóng to text ra thì phải scan không tiện lắm bằng lisp trên vì cái pick điểm kéo ra thì nó cũng tự scan roài....bác sửa lại giúp đc không

 

cái lisp trên tính tổng chu vi thì đúng nhưng tổng diện tích các pline vùng kín >2 vùng thì sai.....

 

http://www.mediafire...b11emefhg184uyy

Mình mới thêm điều kiện chọn chiều cao chữ.

Bạn nói sao chứ mình test thấy TDT là 7713.1m2 là dúng 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

Mình mới thêm điều kiện chọn chiều cao chữ.

Bạn nói sao chứ mình test thấy TDT là 7713.1m2 là dúng mà?!

cái đó mình cộng bằng máy mà

 

còn dùng lisp nó ra kết quả là 8133.8m2

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 vào đây tìm hiểu thêm nè, có lisp tính tổng diện tích đấy.

http://www.cadviet.com/forum/index.php?showtopic=2490&st=0

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ái đó mình cộng bằng máy mà

 

còn dùng lisp nó ra kết quả là 8133.8m2

 

Load lai lisp o tren roi thu lai xem nao?

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òn tính tổng chu vi hoặc chu vi hoặc tổng chiều dài các đoạn thẳng thì bạn tham khảo thêm ở đây nhé.

http://www.cadviet.com/forum/index.php?showtopic=763&st=0&p=2481&&do=findComment&comment=2481

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

không bác nào biết sửa lại cho đúng trong cái lisp vừa rồi à >_<

Hề hề hề,

Có nhẽ biết thì không ít người biết, nhưng sửa thì có nhẽ chả ai muốn sửa cho bạn cả vì thái độ thiếu cầu thị của bạn. Bạn chỉ biết kêu cứu giúp, nhưng những bài trả lời của mọi người thì bạn lại chả thèm quan tâm. Hãy chịu khó đọc lại các bài đã trả lời để tìm ra cái bạn cần.

Hề hề hề....

  • 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

không bác nào biết sửa lại cho đúng trong cái lisp vừa rồi à >_<

Hãy chịu khó phấn đấu làm sếp của mọi người trên 4room đi :)

Nhìn dấu -7 của bạn mình cũng không muốn nói nhiều về cách 1 người phải cư xử trên 1 cộng đồng nữa!

  • 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

Hãy chịu khó phấn đấu làm sếp của mọi người trên 4room đi :)

Nhìn dấu -7 của bạn mình cũng không muốn nói nhiều về cách 1 người phải cư xử trên 1 cộng đồng nữa!

 

....nếu đã kg giúp thì thôi sao việc gì phải nói thế.....

cảm thấy kg hợp thì cho ban nick kg phải nói đểu kiểu đó

 

trẻ ranh anh kg thèm chấp :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

Hề hề hề,

Có nhẽ biết thì không ít người biết, nhưng sửa thì có nhẽ chả ai muốn sửa cho bạn cả vì thái độ thiếu cầu thị của bạn. Bạn chỉ biết kêu cứu giúp, nhưng những bài trả lời của mọi người thì bạn lại chả thèm quan tâm. Hãy chịu khó đọc lại các bài đã trả lời để tìm ra cái bạn cần.

Hề hề hề....

 

ngu dốt cố tỏ ra nguy hiểm :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

 

....nếu đã kg giúp thì thôi sao việc gì phải nói thế.....

cảm thấy kg hợp thì cho ban nick kg phải nói đểu kiểu đó

 

trẻ ranh anh kg thèm chấp :D

Kẹo thì nhiều người có, nhưng phải ngoan thanhdatkts ạ :)

ngu dốt cố tỏ ra nguy hiểm :D

 

Ban nick theo đúng nguyện vọng và tầm trí tuệ của bạn!

  • 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

Gởi bạn nickname có cái đuôi là KTS!

Nếu bạn bình tâm 1 chút thì sẽ thấy CADViet không hề nghĩ như bạn nghĩ đâu. Mọi người vẫn sẵn sàng giúp bạn đấy thôi, nhưng bạn cũng nên tôn trọng họ, bởi họ là những lao động không ăn lương, chỉ làm việc theo đam mê, và có cái gì biết thì chia sẻ cho mọi người.

Thân thươ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

nick này tưởng rằng vào web rồi muốn làm gì thì làm.

khuyên you đừng nên để những ng quan trọng với you (đặc biệt là sếp của you đấy) đọc được trang này nếu ko you sẽ phải hối hận đấ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

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

Đăng nhập để thực hiện theo  

×