Cách bỏ số 0 sau dấu phẩy trong cad

Các bác à, em muốn có 1 lisp làm tròn số trong CAD, đề bài : Có các text là các số từ trước, bây giờ em muốn làm tròn các text đó ( lấy sau dấu phẩy x ký tự mình nhập vào ) . Bác Pro nào viết cho em đi ?


*


Các bác à, em muốn có 1 lisp làm tròn số trong CAD, đề bài : Có các text là các số từ trước, bây giờ em muốn làm tròn các text đó ( lấy sau dấu phẩy x ký tự mình nhập vào ) . Bác Pro nào viết cho em đi ?
*

*

Bạn vào Dimension style chỉnh trong Modify rồi chỉnh Primany unit /Precision = 0.0.........(tuỳ)

=0 làm tròn xoe :cheers:



Bạn vào Dimension style chỉnh trong Modify rồi chỉnh Primany unit /Precision = 0.0.........(tuỳ)

=0 làm tròn xoe :cheers:

 

Trời ạ ! Ở đây là các Text có sẵn từ trước rùi cơ mà, làm sao các cách thiết đặt có thể thay đổi được. Các các đó của các bác chỉ áp dụng cho bản vẽ mình làm ra từ đầu thôi, còn các bản vẽ do người khác làm mình phải làm tiếp thì phải Dùng Lisp mới làm tròn được chứ ? Mong có bác Pro nào quan tâm viết giúp !


duy782006 1.502

PHẠM QUỐC DUYphukien24h.org Team 1.5022.376 bài viếtGiới tính:MaleVị trí:Bình Sơn - Quảng Ngãi
Bạn vào Dimension style chỉnh trong Modify rồi chỉnh Primany unit /Precision = 0.0.........(tuỳ)

=0 làm tròn xoe :cheers:


hhhggg

-Dùng lisp thì có mấy cái vướng:

+Dấu phân cách là dấu phẩy hay dấu chấm là tùy thuộc vào thiết lập của bạn nên có khi lisp đúng có khi không (khi đọc giá trị).

Bạn đang xem: Cách bỏ số 0 sau dấu phẩy trong cad

+Phân biệt text số và text chữ (vấn đề này bàn vài lẩn rồi nhưng mình vẫn chưa nắm vấn đề).

+Làm tròn thì dư bỏ bớt còn thiếu thì sao. Ví dụ 12 thì ra 12 hay ra 12,00


Bạn vào Dimension style chỉnh trong Modify rồi chỉnh Primany unit /Precision = 0.0.........(tuỳ)

=0 làm tròn xoe :cheers:

 

Trời ạ ! Ở đây là các Text có sẵn từ trước rùi cơ mà, làm sao các cách thiết đặt có thể thay đổi được. Các các đó của các bác chỉ áp dụng cho bản vẽ mình làm ra từ đầu thôi, còn các bản vẽ do người khác làm mình phải làm tiếp thì phải Dùng Lisp mới làm tròn được chứ ? Mong có bác Pro nào quan tâm viết giúp !


Các bác phải phân biệt rõ, đây là text chứ ko phải Dim, như vậy làm sao chỉnh bằng Properties được ? Dấu ngăn cách hàng thập phân và chữ số ta dùng dâuc Chấm. Trong CAD hay Nova đều dùng dấu chấm mà. Và ta thống nhất là làm tròn sau dấu phẩy hai chữ số ! Tốt nhất là làm tròn với số chữ số sau dấu phẩy là do người dùng nhập vào ?


Các bác phải phân biệt rõ, đây là text chứ ko phải Dim, như vậy làm sao chỉnh bằng Properties được ? Dấu ngăn cách hàng thập phân và chữ số ta dùng dâuc Chấm. Trong CAD hay Nova đều dùng dấu chấm mà. Và ta thống nhất là làm tròn sau dấu phẩy hai chữ số ! Tốt nhất là làm tròn với số chữ số sau dấu phẩy là do người dùng nhập vào ?

Ứng dụng hàm Round của bác SSG đã trả lời trong topic Lisp nhân thêm hệ số K vào Text. Mình đã phát triển nên đoạn Code này để làm tròn các Text sau các chữ số thập phân

;;;-------------------------------------------------------;;;-------------------------------------------------------(defun etype (e);;;Entity Type(cdr (assoc 0 (entget e))));;;-------------------------------------------------------(defun rnd(x);;;Round x, return INT(if (>= x 0) (fix (+ x 0.5)) (fix (- x 0.5)))) ;;;-------------------------------------------------------(defun TP()(setq thapphan 2);Ban co the thay doi so thap phan o dong nay)(defun round3(x / tue S i j S1 S3)(setq tue (TP))(setq S (itoa (rnd (* (abs x) (expt 10 tue)))))(setqi (strlen S)j (- i tue)S1 (substr S 1 j)S3 (substr S (1+ j) tue))(if (>= x 0) (strcat S1 "." S3) (strcat "-" S1 "." S3)));;;-------------------------------------------------------(defun C:Round( / ss k i e d v S)(setqss (ssget "((0 . "TEXT,MTEXT")))i 0)(repeat (sslength ss)(setq e (ssname ss i))(if (= (etype e) "MTEXT") (progn(command "explode" e "")(setq e (entlast))))(setqd (entget e)v (atof (cdr (assoc 1 d)))S (round3 v)d (subst (cons 1 S) (assoc 1 d) d))(entmod d)(setq i (1+ i)))(princ))

 

Bạn có thể thay đổi số thập phân ở dòng này : (setq thapphan 2)

Đoạn Code này chưa được hoàn thiện lắm vì theo yêu cầu của người sử dụng là khi đánh số thập phân vào thì chương trình sẽ hiểu. Nhưng ở đây lại phải thay đổi số thập phân bằng cách vào file Lisp sửa lại dòng (setq thapphan 2) mới ra được kết quả như ý.

Xem thêm: Chia Sẻ 5 Cách Chế Biến Củ Dền Đỏ Cho Bé, Mẹ Nên Tham Khảo, Bác Sĩ Huyền Trang

 

Mình đã thử thay câu (setq thapphan 2) bằng câu (setq thapphan (getint "\nSo chu so thap phan la :"))

Nhưng kết quả lại không theo như ý. Vì dưới tác dụng của vòng lặp Repeat cái câu nhắc "nSo chu so thap phan la :" được lặp lại cho đến Text cuối cùng. Điều này nó không theo được ý của người sử dụng.

 

Mong bác SSG và tất cả mọi người cùng góp ý để đoạn Code trên được hoàn thiện một cách trọn vẹn.