Đến nội dung


Hình ảnh
- - - - -

Hoi ve Lisp tinh dien tich


  • Please log in to reply
1 reply to this topic

#1 cuong_lvxd

cuong_lvxd

    biết zoom

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

Đã gửi 19 October 2010 - 11:28 AM

Em co cai LISP tính diện tích như sau(LOAD trên diễn đàn của bác Hoành) muốn hỏi về đơn vị của nó:em tính diện tích và trong bản vẽ của em để đơn vị là (mm).Khi dùng LISP này tính diện tích ra diện tích có phải là diện tích theo đơn vị mà mình đã định trong CAD(mm) không? hoặc nếu có thể tùy chọn theo mình mong muốn thì mình sẽ sửa ở đoạn nào trong code này.Thanh kiu các bác....
.................................................................

;; free lisp from cadviet.com
(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 "B?ng th?ng kê di?n tích"
        "text" "m" P7 h 0 "STT"
        "text" "m" P8 h 0 "Di?n tích (mm2)"
);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)
)
  • 0

#2 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 19 October 2010 - 12:55 PM

Em co cai LISP tính diện tích như sau(LOAD trên diễn đàn của bác Hoành) muốn hỏi về đơn vị của nó:em tính diện tích và trong bản vẽ của em để đơn vị là (mm).Khi dùng LISP này tính diện tích ra diện tích có phải là diện tích theo đơn vị mà mình đã định trong CAD(mm) không? hoặc nếu có thể tùy chọn theo mình mong muốn thì mình sẽ sửa ở đoạn nào trong code này.Thanh kiu các bác....
.................................................................

Chào bạn cuong_lvxd,
Lisp bạn post sẽ trả về diện tích với đơn vị tính là mm2 nếu bạn đang chọn hệ đơn vị đo là mm.
Muốn thay đổi thành cm2, dm2, m2, km2..... bạn phải chía kết quả cho 10^2, 10^4, 10^6, 10^12.....
Bạn có thể bổ sung vào lisp hay tự chia thì tùy bạn. Nếu bổ sung vào lisp bạn bổ sung ở dòng (setq tdt ......).
Chúc bạn vui.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.