Đến nội dung


Hình ảnh
- - - - -

Lisp tính diện tích


  • Please log in to reply
12 replies to this topic

#1 ndn386

ndn386

    biết vẽ pline

  • Members
  • PipPip
  • 67 Bài viết
Điểm đánh giá: 17 (tàm tạm)

Đã gửi 16 January 2010 - 04:33 PM

Em có ví dụ như sau http://www.cadviet.c...les/2/vidu2.jpg
Cho em hỏi là các bác có thể giúp em viết 1 cái lisp tính diện tích phần gạch chéo không ạ?
Bác Tue_NV đã chỉ giúp em cách tính bằng lệnh Area nhưng tính như thế thì lâu quá, em muốn nhờ mọi nguời viết giúp em 1 cái lisp mà chỉ cần tích vào phần gạch chéo là có thể cho ra đuợc kết quả diện tích
Em xin cảm ơn mọi người.
  • 0
Ai đem chim sáo sang sông
Để cho chim sáo ...mất công bay về

#2 hoanghaiyp

hoanghaiyp

    biết lệnh minsert

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

Đã gửi 16 January 2010 - 06:02 PM

Em có ví dụ như sau http://www.cadviet.c...les/2/vidu2.jpg
Cho em hỏi là các bác có thể giúp em viết 1 cái lisp tính diện tích phần gạch chéo không ạ?
Bác Tue_NV đã chỉ giúp em cách tính bằng lệnh Area nhưng tính như thế thì lâu quá, em muốn nhờ mọi nguời viết giúp em 1 cái lisp mà chỉ cần tích vào phần gạch chéo là có thể cho ra đuợc kết quả diện tích
Em xin cảm ơn mọi người.

Bạn có sẵn Hatch, làm thử cách của Hà Anh xem được không?

Chỉ có cách tính hơi thủ công một chút:
Dùng lệnh Hachth , tạo ra một mặt cắt > Chọn đối tượng là mặt cắt đó > gõ Li > Sẽ biết được diện tích mặt cắt


  • 0

#3 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 16 January 2010 - 06:55 PM

Em có ví dụ như sau http://www.cadviet.c...les/2/vidu2.jpg
Cho em hỏi là các bác có thể giúp em viết 1 cái lisp tính diện tích phần gạch chéo không ạ?
Bác Tue_NV đã chỉ giúp em cách tính bằng lệnh Area nhưng tính như thế thì lâu quá, em muốn nhờ mọi nguời viết giúp em 1 cái lisp mà chỉ cần tích vào phần gạch chéo là có thể cho ra đuợc kết quả diện tích
Em xin cảm ơn mọi người.

Vấn đề này Tue_NV đã có viết Lisp rồi
Lisp tinhdien tich hinh kin bi khoet n lo ben trong - Bai viet so 4 - bai viet so 6
  • 1

#4 huong259

huong259

    biết lệnh refedit

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

Đã gửi 16 January 2010 - 09:52 PM

Vấn đề này Tue_NV đã có viết Lisp rồi
Lisp tinhdien tich hinh kin bi khoet n lo ben trong - Bai viet so 4 - bai viet so 6

Em hỏi anh Tuệ, lisp của anh có tính diện tích được nhiều hình kín khoét lỗ được không?
Nếu chỉ tính 1 hình thì cách của chị Hà Anh đỡ tốn nhanh hơn. Đầu óc thanh thoát nhẹ nhàng hơn đỡ phải nhớ xem lisp đó phải đánh chữ "jí", đỡ hại nơtron thần kinh!
Còn với hình chưa có hatch dùng lệnh BO > LI .

Giao tiếp bằng chữ không lời
Ha Anh (6/7/2009 9:59:55 AM): tại sao không khai thác hết tiềm năng của CAD, dùng lệnh ít nhất vẽ với năng suất cao nhất
Ha Anh (6/7/2009 10:01:16 AM): cha ông ta ngày xưa còn dùng cuốc xẻng thậm chí dùng cả tay ko để đánh lại tàu bay của giặc pháp !
tue_nvcc (6/7/2009 10:02:30 AM): tại sao ta ko dùng cuốc xèng để đánh máy vi tính

Mong anh Tuệ "hỉu iem" "hok pại" dị ứng với lisp đâu nhé, nhưng em dùng có chọn lựa, cái nào "hok thỉa" lạm dụng. "Giúng" như "uốn dị" ít thì có lợi cho sức khoẻ bản thân người uống, nhiều thì có lợi cho...bác sĩ !
  • 1

#5 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 16 January 2010 - 10:22 PM

Em hỏi anh Tuệ, lisp của anh có tính diện tích được nhiều hình kín khoét lỗ được không?
Nếu chỉ tính 1 hình thì cách của chị Hà Anh đỡ tốn nhanh hơn. Đầu óc thanh thoát nhẹ nhàng hơn đỡ phải nhớ xem lisp đó phải đánh chữ "jí", đỡ hại nơtron thần kinh!

Mong anh Tuệ "hỉu iem" "hok pại" dị ứng với lisp đâu nhé, nhưng em dùng có chọn lựa, cái nào "hok thỉa" lạm dụng. "Giúng" như "uốn dị" ít thì có lợi cho sức khoẻ bản thân người uống, nhiều thì có lợi cho...bác sĩ !

:cheers: :cheers:
Cảm ơn huong259 rất nhiều. Một ý kiến rất hay.

Lisp của mình chỉ tính được có 1 hình khoét lỗ thôi chứ chưa áp dụng cho nhiều hình có khoét lỗ.
Để Tue_NV khi nào rãnh thử viết xem cái Lisp tính diện tích áp dụng cho nhiều hình có khoét lỗ thử nhé.
Không biết có thành công không nữa nhưng cũng sẽ cố gắng để giúp cho các bạn.
Sao hôm nay huong259 sử dụng ngôn ngữ của "Xì tin". LẠ nhỉ? :cheers:
  • 1

#6 huong259

huong259

    biết lệnh refedit

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

Đã gửi 16 January 2010 - 11:25 PM

:cheers: :cheers:
Cảm ơn huong259 rất nhiều. Một ý kiến rất hay.

Lisp của mình chỉ tính được có 1 hình khoét lỗ thôi chứ chưa áp dụng cho nhiều hình có khoét lỗ.
Để Tue_NV khi nào rãnh thử viết xem cái Lisp tính diện tích áp dụng cho nhiều hình có khoét lỗ thử nhé.
Không biết có thành công không nữa nhưng cũng sẽ cố gắng để giúp cho các bạn.
Sao hôm nay huong259 sử dụng ngôn ngữ của "Xì tin". LẠ nhỉ? :cheers:

"Í củ iem" là lisp tính được diện tích của nhiều hình khoét một lỗ thì năng suât mới cao. Nếu anh có thời gian rảnh viết lisp để tích được diện tích nhiều hình khác nhau, mỗi hình lại có nhiều lỗ khác nhau. Em sẽ hậu đãi, cám ơn anh nhiều lắm!
  • 0

#7 ndn386

ndn386

    biết vẽ pline

  • Members
  • PipPip
  • 67 Bài viết
Điểm đánh giá: 17 (tàm tạm)

Đã gửi 17 January 2010 - 12:39 AM

Vấn đề này Tue_NV đã có viết Lisp rồi
Lisp tinhdien tich hinh kin bi khoet n lo ben trong - Bai viet so 4 - bai viet so 6

Cảm ơn anh Tue_NV nhiều nhé, nhưng em muốn hỏi là kết quả cho ra chỉ lấy 2 số sau dấu phẩy, vậy nếu em muốn lấy 3 số sau dấu phẩy thì anh có thể sửa lại 1 chút giúp em đuợc không ạ? E chỉ còn vuớng mỗi chỗ đó thôi mong anh giúp em với nhé
  • 0
Ai đem chim sáo sang sông
Để cho chim sáo ...mất công bay về

#8 ndn386

ndn386

    biết vẽ pline

  • Members
  • PipPip
  • 67 Bài viết
Điểm đánh giá: 17 (tàm tạm)

Đã gửi 17 January 2010 - 01:21 AM

Bạn có sẵn Hatch, làm thử cách của Hà Anh xem được không?

Vì số lượng hình cần tính của em rất nhiều (hơn 1000 mặt cắt) nên việc Hatch cũng khá lâu
  • 0
Ai đem chim sáo sang sông
Để cho chim sáo ...mất công bay về

#9 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 18 January 2010 - 05:32 AM

"Í củ iem" là lisp tính được diện tích của nhiều hình khoét một lỗ thì năng suât mới cao. Nếu anh có thời gian rảnh viết lisp để tích được diện tích nhiều hình khác nhau, mỗi hình lại có nhiều lỗ khác nhau. Em sẽ hậu đãi, cám ơn anh nhiều lắm!

Chào bạn huong259 và bạn ndn386
Đây là Lisp viết theo ý của bạn huong259.
Lisp tính diện tích nhiều hình khác nhau, mỗi hình lại có nhiều lỗ khác nhau. Đúng luôn cho trường hợp không có lỗ. Vì không có lỗ thì diện tích lỗ bằng 0. :cheers:
Đây là code. Các Bạn thử nhé :

(defun c:gb(/ p ss S frome cur toe tt)
(setq p (getpoint "\n Pick 1 diem vao mien trong hinh kin :")
ss (ssadd) S 0)
(while p
(setq frome (entlast))
(command ".boundary" p "")
(setq toe (entlast));;
(setq cur frome
)
(while (not (eq cur toe))
(setq cur (entnext cur)
ss (ssadd cur ss))
(command "area" "S" "O" ss "" "")
(setq tt (getvar "area"))
(setq S (+ S tt))
)
(command "area" "A" "O" "L" "" "")
(setq tt (getvar "area"))
(setq S (+ S (* tt 2)))
(sssetfirst ss ss)
(setq p (getpoint "\n Pick 1 diem vao mien trong hinh kin :"))

)
(if (> (sslength ss) 0)
(alert (strcat "Area = " (rtos S 2 2)))
(alert "\n Ban chua Pick vao mien kin nao ca ")
)
(command "erase" ss "")
(Princ)
)

@ ndn386 : Bạn muốn thêm 3 chữ số thập phân thì thay dòng này
(alert (strcat "Area = " (rtos S 2 2)))
thành dòng :
(alert (strcat "Area = " (rtos S 2 3)))
thay số 2 thành số 3 : chính là chữ số thập phân đó bạn
  • 1

#10 ndn386

ndn386

    biết vẽ pline

  • Members
  • PipPip
  • 67 Bài viết
Điểm đánh giá: 17 (tàm tạm)

Đã gửi 18 January 2010 - 08:40 AM

Chào bạn huong259 và bạn ndn386
Đây là Lisp viết theo ý của bạn huong259.
Lisp tính diện tích nhiều hình khác nhau, mỗi hình lại có nhiều lỗ khác nhau. Đúng luôn cho trường hợp không có lỗ. Vì không có lỗ thì diện tích lỗ bằng 0. :cheers:
Đây là code. Các Bạn thử nhé :


(defun c:gb(/ p ss S frome cur toe tt)
(setq p (getpoint "\n Pick 1 diem vao mien trong hinh kin :")
ss (ssadd) S 0)
(while p
(setq frome (entlast))
(command ".boundary" p "")
(setq toe (entlast));;
(setq cur frome
)
(while (not (eq cur toe))
(setq cur (entnext cur)
ss (ssadd cur ss))
(command "area" "S" "O" ss "" "")
(setq tt (getvar "area"))
(setq S (+ S tt))
)
(command "area" "A" "O" "L" "" "")
(setq tt (getvar "area"))
(setq S (+ S (* tt 2)))
(sssetfirst ss ss)
(setq p (getpoint "\n Pick 1 diem vao mien trong hinh kin :"))

)
(if (> (sslength ss) 0)
(alert (strcat "Area = " (rtos S 2 2)))
(alert "\n Ban chua Pick vao mien kin nao ca ")
)
(command "erase" ss "")
(Princ)
)

@ ndn386 : Bạn muốn thêm 3 chữ số thập phân thì thay dòng này
(alert (strcat "Area = " (rtos S 2 2)))
thành dòng :
(alert (strcat "Area = " (rtos S 2 3)))
thay số 2 thành số 3 : chính là chữ số thập phân đó bạn

Anh Tue_NV oi, cai lisp này chỉ tính diện tích cho hình khoét lỗ, nhưng em muốn tính diện tích phần giao của 2 hình thì không đuợc nó thông báo là "; error: Function cancelled
Polyline boundary could not be derived. Create Region? "
Hay là cái lisp này không phải giải quyết bài toán đó nhỉ?
Cảm ơn anh em đã làm cho ra kết quả 3 số sau dấu phẩy rồi anh ạ.
  • 0
Ai đem chim sáo sang sông
Để cho chim sáo ...mất công bay về

#11 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 18 January 2010 - 09:52 AM

Anh Tue_NV oi, cai lisp này chỉ tính diện tích cho hình khoét lỗ, nhưng em muốn tính diện tích phần giao của 2 hình thì không đuợc nó thông báo là "; error: Function cancelled
Polyline boundary could not be derived. Create Region? "
Hay là cái lisp này không phải giải quyết bài toán đó nhỉ?
Cảm ơn anh em đã làm cho ra kết quả 3 số sau dấu phẩy rồi anh ạ.

Thực ra Lisp đã giải bài toán đó rồi. Chỉ cần chỉnh lại 1 chút cho phù hợp mà thôi.
ndn386 thử lại code này xem nhé :

(defun c:gb(/ p ss S frome cur toe tt)
(setq p (getpoint "\n Pick 1 diem vao mien trong hinh kin :")
ss (ssadd) S 0)
(while p
(setq frome (entlast))
(command ".boundary" "A" "O" "R" "" p "")
(setq toe (entlast));;
(setq cur frome
)
(while (not (eq cur toe))
(setq cur (entnext cur)
ss (ssadd cur ss))
(command "area" "S" "O" ss "" "")
(setq tt (getvar "area"))
(setq S (+ S tt))
)
(command "area" "A" "O" "L" "" "")
(setq tt (getvar "area"))
(setq S (+ S (* tt 2)))
(sssetfirst ss ss)
(setq p (getpoint "\n Pick 1 diem vao mien trong hinh kin / An phim bat ki de xem ket qua:"))

)
(if (> (sslength ss) 0)
(alert (strcat "Area = " (rtos (abs S) 2 2)))
(alert "\n Ban chua Pick vao mien kin nao ca ")
)
(command "erase" ss "")
(Princ)
)

  • 2

#12 Gatesi

Gatesi

    biết vẽ arc

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

Đã gửi 18 January 2010 - 10:20 AM

Thực ra Lisp đã giải bài toán đó rồi. Chỉ cần chỉnh lại 1 chút cho phù hợp mà thôi.
ndn386 thử lại code này xem nhé :


(defun c:gb(/ p ss S frome cur toe tt)
(setq p (getpoint "\n Pick 1 diem vao mien trong hinh kin :")
ss (ssadd) S 0)
(while p
(setq frome (entlast))
(command ".boundary" "A" "O" "R" "" p "")
(setq toe (entlast));;
(setq cur frome
)
(while (not (eq cur toe))
(setq cur (entnext cur)
ss (ssadd cur ss))
(command "area" "S" "O" ss "" "")
(setq tt (getvar "area"))
(setq S (+ S tt))
)
(command "area" "A" "O" "L" "" "")
(setq tt (getvar "area"))
(setq S (+ S (* tt 2)))
(sssetfirst ss ss)
(setq p (getpoint "\n Pick 1 diem vao mien trong hinh kin / An phim bat ki de xem ket qua:"))

)
(if (> (sslength ss) 0)
(alert (strcat "Area = " (rtos (abs S) 2 2)))
(alert "\n Ban chua Pick vao mien kin nao ca ")
)
(command "erase" ss "")
(Princ)
)

Theo em nghĩ nên có 1,2 tính năng thêm nữa. Đầu tiên có lẽ là việc gán giá trị diên tích vào text trên màn hình, 2 là việc lựa chọn đưn vị diện tích( chỉ làm 1 lần đối với 1 bản vẽ mở ra), 3 là 1 việc hơi khó, e thấy trên mạng có lisp tính diện tích xong rồi tự cập nhật diện tích theo hình (Từ trang này :http://www.offshore-...load1/text.html
), bác nào xem hoàn thiện theo lisp này sẽ rất hay.
  • 0

#13 ndn386

ndn386

    biết vẽ pline

  • Members
  • PipPip
  • 67 Bài viết
Điểm đánh giá: 17 (tàm tạm)

Đã gửi 18 January 2010 - 11:00 AM

Thực ra Lisp đã giải bài toán đó rồi. Chỉ cần chỉnh lại 1 chút cho phù hợp mà thôi.
ndn386 thử lại code này xem nhé :


(defun c:gb(/ p ss S frome cur toe tt)
(setq p (getpoint "\n Pick 1 diem vao mien trong hinh kin :")
ss (ssadd) S 0)
(while p
(setq frome (entlast))
(command ".boundary" "A" "O" "R" "" p "")
(setq toe (entlast));;
(setq cur frome
)
(while (not (eq cur toe))
(setq cur (entnext cur)
ss (ssadd cur ss))
(command "area" "S" "O" ss "" "")
(setq tt (getvar "area"))
(setq S (+ S tt))
)
(command "area" "A" "O" "L" "" "")
(setq tt (getvar "area"))
(setq S (+ S (* tt 2)))
(sssetfirst ss ss)
(setq p (getpoint "\n Pick 1 diem vao mien trong hinh kin / An phim bat ki de xem ket qua:"))

)
(if (> (sslength ss) 0)
(alert (strcat "Area = " (rtos (abs S) 2 2)))
(alert "\n Ban chua Pick vao mien kin nao ca ")
)
(command "erase" ss "")
(Princ)
)

Cảm ơn anh Tue_NV bài toán của em đã được giải quyết rồi. Cảm ơn anh nhiều lắm
  • 1
Ai đem chim sáo sang sông
Để cho chim sáo ...mất công bay về