Đến nội dung


Hình ảnh
- - - - -

Cần giúp đỡ về Lisp tính cao độ trung bình


  • Please log in to reply
4 replies to this topic

#1 vinhxtkt01

vinhxtkt01

    biết pan

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

Đã gửi 04 March 2014 - 08:16 AM

mình vừa tải về dc cái Lisp tính cao độ trung bình như thế này:

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

Anh nào biết xin giúp mình chỉnh thêm phần kết quả với:

- Trong trường hợp cao độ trung bình ra kết quả âm (-) thì ok rồi. Nhưng trường hợp ra kết quả dương (+) mình muốn có thêm dấu (+) ở phía trước.

Ai biết xin chỉ giáo với. Chân thành cảm ơn.

 


  • 0

#2 hiepttr

hiepttr

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1298 Bài viết
Điểm đánh giá: 518 (tốt)

Đã gửi 04 March 2014 - 08:42 AM

Tạm thế này:

(chổ màu xanh là mình sửa)

 

 

(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))
(if (> kqua 0) (setq kqua (strcat "+" (rtos kqua 2 2))))
(princ kqua)

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


  • 0

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#3 vinhxtkt01

vinhxtkt01

    biết pan

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

Đã gửi 04 March 2014 - 09:37 AM

Thanks bạn hiepttr. Tuyệt luôn


  • 0

#4 vinhxtkt01

vinhxtkt01

    biết pan

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

Đã gửi 04 March 2014 - 09:48 AM

Nhưng bạn chỉnh sao giờ không làm tròn số lẽ là 2 số sau rồi. Bạn chỉnh thêm lại giúp mình chút


  • 0

#5 hiepttr

hiepttr

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1298 Bài viết
Điểm đánh giá: 518 (tốt)

Đã gửi 04 March 2014 - 02:25 PM

Srr mình không nhìn kĩ !

Đây:

 

(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 (rtos (/ kqua sl) 2 2))
(if (/= (substr kqua 1 1) "-") (setq kqua (strcat "+" kqua)))
(princ kqua)

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


  • 0

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson