Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
bach1212

[Nhờ chỉnh sửa] Thêm chức năng làm tròn số cho lisp tính chiều dài

Các bài được khuyến nghị

Hiện tại mình có lisp tính tổng chiều dài các đường thẳng , và kết quả thay vào 1 số có sẵn.

Mình muốn, kết quả đó được làm tròn số luôn thì phải làm như thế nào?

Hiện tại mình có 2 lisp riêng lẻ này: 1 là tính chiều dài, 2 là làm tròn số, không biết kết hợp lại như thế nào để được như ý?

;; free lisp from cadviet.com
;;;--------------------------------------------------------------------
(defun Length1(e) (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e)))
;;;--------------------------------------------------------------------
(defun C:TGL( / ss L e)
(setq
ss (ssget (list (cons 0 "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")))
L 0.0
)
(vl-load-com)
(while (setq e (ssname ss 0))
(setq L (+ L (length1 e)))
(ssdel e ss)
)


(setq te (entget(car(entsel"\n Chon Text de gan ket qua :")))
te (subst (cons 1 (rtos L 2 2)) (assoc 1 te) te))
(entmod te)
)
;;;--------------------------------------------------------------------
;; free lisp from cadviet.com
;;;-------------------------------------------------------
(defun etype (e);;;Entity Type
(cdr (assoc 0 (entget e)))
)
;;;-------------------------------------------------------
(defun C:LTT( / ss n i oldDimzin e d v S)
(if (not n0) (setq n0 2))
(setq
ss (ssget '((0 . "TEXT,MTEXT")))
n (getint (strcat "\nSo chu so thap phan <" (itoa n0) ">:"))
i 0
oldDimzin (getvar "dimzin")
)
(if n (setq n0 n) (setq n n0))
(setvar "dimzin" 8)
(repeat (sslength ss)
(setq e (ssname ss i))
(if (= (etype e) "MTEXT") (progn
(command "explode" e "")
(setq e (entlast))
))
(setq
d (entget e)
v (atof (cdr (assoc 1 d)))
S (rtos v 2 n)
d (subst (cons 1 S) (assoc 1 d) d)
)
(entmod d)
(setq i (1+ i))
)
(setvar "dimzin" oldDimzin)
(princ)
)

http://www.cadviet.com/upfiles/3/40304_ltt_n.lsp

http://www.cadviet.com/upfiles/3/40304_tgl.lsp

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Chỉ cần sửa lisp thứ 1:

Dòng:

(rtos L 2 2)

Thành:

(rtos L 2 0)

Hề hề hề,

Bác DoanVanHa ơi, làm như bác là làm tròn đến phần nguyên mất rùi. Còn làm tròn đến đâu thì chủ thớt chả nói. Vậy nên chả biết là trúng hay là trật bác ạ.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

đúng ý e rùi các bác ự. hề hề. e cũng đang định làm tròn đến phần nguyên mà quên chưa nêu ra bác phamthanhbinh ự. Thanks all!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay
Đăng nhập để thực hiện theo  

×