Rated 5/5 based on 240179 internet user reviews

Đến nội dung


Hình ảnh
- - - - -

Lisp tính toán san nền !


  • Please log in to reply
1 reply to this topic

#1 hhhhgggg

hhhhgggg

    biết dimedit

  • Members
  • PipPipPipPipPip
  • 393 Bài viết
Điểm đánh giá: 31 (tàm tạm)

Đã gửi 13 January 2010 - 08:31 PM

Các bác Pro à, Chắc bài toán san nền thì nhiều người gặp phải. Nhưng 1 Lisp phục vụ hữu ích cho việc đó 1 cách đơn giản thì chưa hẳn đã nhiều người biết. Loay hoay viết mãi, Em cũng viết được 1 cái cho riêng mình. Nhưng lisp đó chỉ mang tính chất cục bộ mà không tổng quát. Em đưa đầu bài tổng quát để cả nhà cùng giải nhé.
Bài toán san nền:
Cao độ thiết kế là A
cao độ tự nhiên( Mặt đất hiện trạng) là B
Trước khi san nền, bóc bỏ toàn bộ mặt đất hiện trạng đi 1 bề dày bằng C
Kẻ lưới chia ô khu đất cần san nền, kích thưóc mắt lưới tùy chọn ( Thường là 5mx5m )
TRên các nút của mắt lưới, ta có các text A,B, (A-:cheers:
tại chính giữa ô lưới là thông số về diện tích ô, khối lượng đào, đắp.
Ban đầu, ta phải pick tay diện tích ô đất, trừ thủ công ra con số (A-:cheers:
Yêu cầu, Dựa vào hiệu (A-:cheers: để tính được khối lựợng san nền của các ô, trong các trường hợp ô là hình chữ nhật, là hình tam giác.
Bài toán này tưởng chừng phức tạp nhưng thật ra rất đơn giản. Mong các bác Pro quan tâm giúp đỡ.
đây là file em làm, File này chưa làm chính xác 100% nên các bác đừng cười em nhé !
http://www.cadviet.c...2/san_nen_1.dwg
Code lisp tính giá trị trung bình:
(defun c:snn ()
(prompt "\nChon text de tinh trung binh cong:")
(setq ss (ssget '((0 . "TEXT")))
sl (sslength ss)
kqua 0
)
(while (and ss (> (sslength ss) 0))
(setq
kqua (+ kqua
(atof (cdr (assoc 1 (entget (setq ent (ssname ss 0))))))
)
)
(ssdel ent ss)
)
(setq kqua (/ kqua sl))
(princ kqua)

(setq obj (vlax-ename->vla-object
(car (entsel "\nChon text de ghi ket qua:"))
)
)
(vla-put-TextString obj (rtos kqua 2 2))
)
  • 0
Hoàng Giang

#2 tdvn

tdvn

    biết lệnh rotate

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

Đã gửi 15 January 2010 - 02:07 AM

Các bác Pro à, Chắc bài toán san nền thì nhiều người gặp phải. Nhưng 1 Lisp phục vụ hữu ích cho việc đó 1 cách đơn giản thì chưa hẳn đã nhiều người biết. Loay hoay viết mãi, Em cũng viết được 1 cái cho riêng mình. Nhưng lisp đó chỉ mang tính chất cục bộ mà không tổng quát. Em đưa đầu bài tổng quát để cả nhà cùng giải nhé.
Bài toán san nền:
Cao độ thiết kế là A
cao độ tự nhiên( Mặt đất hiện trạng) là B
Trước khi san nền, bóc bỏ toàn bộ mặt đất hiện trạng đi 1 bề dày bằng C
Kẻ lưới chia ô khu đất cần san nền, kích thưóc mắt lưới tùy chọn ( Thường là 5mx5m )
TRên các nút của mắt lưới, ta có các text A,B, (A-:cheers:
tại chính giữa ô lưới là thông số về diện tích ô, khối lượng đào, đắp.
Ban đầu, ta phải pick tay diện tích ô đất, trừ thủ công ra con số (A-:cheers:
Yêu cầu, Dựa vào hiệu (A-:cheers: để tính được khối lựợng san nền của các ô, trong các trường hợp ô là hình chữ nhật, là hình tam giác.
Bài toán này tưởng chừng phức tạp nhưng thật ra rất đơn giản. Mong các bác Pro quan tâm giúp đỡ.
đây là file em làm, File này chưa làm chính xác 100% nên các bác đừng cười em nhé !
http://www.cadviet.c...2/san_nen_1.dwg
Code lisp tính giá trị trung bình:
(defun c:snn ()
(prompt "\nChon text de tinh trung binh cong:")
(setq ss (ssget '((0 . "TEXT")))
sl (sslength ss)
kqua 0
)
(while (and ss (> (sslength ss) 0))
(setq
kqua (+ kqua
(atof (cdr (assoc 1 (entget (setq ent (ssname ss 0))))))
)
)
(ssdel ent ss)
)
(setq kqua (/ kqua sl))
(princ kqua)

(setq obj (vlax-ename->vla-object
(car (entsel "\nChon text de ghi ket qua:"))
)
)
(vla-put-TextString obj (rtos kqua 2 2))
)

Bạn sưu tầm líp trên diễn đàn xem đã có những gì bạn cần chưa. Nếu đã có bạn hãy dùng và nêu ra những gì chưa có để mọi người giúp
  • 0