Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
16 replies to this topic

#1 thanhdatkts

thanhdatkts

    biết vẽ line

  • Members
  • PipPip
  • 24 Bài viết
Điểm đánh giá: -4 (bình thường)

Đã gửi 13 November 2011 - 11:49 PM


(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
  • 0

#2 lp_hai

lp_hai

    biết lệnh measure

  • Members
  • PipPipPipPipPipPip
  • 456 Bài viết
Điểm đánh giá: 202 (khá)

Đã gửi 14 November 2011 - 09:05 AM


(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)
)


  • 0
Hình đã gửi

#3 thanhdatkts

thanhdatkts

    biết vẽ line

  • Members
  • PipPip
  • 24 Bài viết
Điểm đánh giá: -4 (bình thường)

Đã gửi 14 November 2011 - 09:23 AM

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...b11emefhg184uyy
  • 0

#4 dovananh.xd

dovananh.xd

    biết lệnh offset

  • Members
  • PipPipPip
  • 174 Bài viết
Điểm đánh giá: 25 (tàm tạm)

Đã gửi 14 November 2011 - 09:55 AM

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.
  • 0

#5 lp_hai

lp_hai

    biết lệnh measure

  • Members
  • PipPipPipPipPipPip
  • 456 Bài viết
Điểm đánh giá: 202 (khá)

Đã gửi 14 November 2011 - 09:59 AM

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à?!
  • 1
Hình đã gửi

#6 thanhdatkts

thanhdatkts

    biết vẽ line

  • Members
  • PipPip
  • 24 Bài viết
Điểm đánh giá: -4 (bình thường)

Đã gửi 14 November 2011 - 10:05 AM

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
  • 0

#7 dovananh.xd

dovananh.xd

    biết lệnh offset

  • Members
  • PipPipPip
  • 174 Bài viết
Điểm đánh giá: 25 (tàm tạm)

Đã gửi 14 November 2011 - 10:08 AM

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.c...topic=2490&st=0
  • 0

#8 lp_hai

lp_hai

    biết lệnh measure

  • Members
  • PipPipPipPipPipPip
  • 456 Bài viết
Điểm đánh giá: 202 (khá)

Đã gửi 14 November 2011 - 10:10 AM

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?
  • 0
Hình đã gửi

#9 dovananh.xd

dovananh.xd

    biết lệnh offset

  • Members
  • PipPipPip
  • 174 Bài viết
Điểm đánh giá: 25 (tàm tạm)

Đã gửi 14 November 2011 - 10:14 AM

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.c...2481
  • 0

#10 thanhdatkts

thanhdatkts

    biết vẽ line

  • Members
  • PipPip
  • 24 Bài viết
Điểm đánh giá: -4 (bình thường)

Đã gửi 18 November 2011 - 01:46 PM

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

#11 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 18 November 2011 - 02:03 PM

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ề....
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#12 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5679 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 18 November 2011 - 02:13 PM

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!
  • 2

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#13 thanhdatkts

thanhdatkts

    biết vẽ line

  • Members
  • PipPip
  • 24 Bài viết
Điểm đánh giá: -4 (bình thường)

Đã gửi 18 November 2011 - 06:53 PM

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
  • 0

#14 thanhdatkts

thanhdatkts

    biết vẽ line

  • Members
  • PipPip
  • 24 Bài viết
Điểm đánh giá: -4 (bình thường)

Đã gửi 18 November 2011 - 06:59 PM

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
  • 0

#15 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5679 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 18 November 2011 - 08:42 PM


....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!
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#16 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 18 November 2011 - 09:06 PM

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!
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#17 Detailing

Detailing

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 667 Bài viết
Điểm đánh giá: 278 (khá)

Đã gửi 18 November 2011 - 09:44 PM

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.
  • 0

Ideas don't matter, execution does!

1908412_308002392716743_8165279281236341