Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] Lisp làm tròn số TEXT


  • Please log in to reply
9 replies to this topic

#1 autocad2012

autocad2012

    biết zoom

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

Đã gửi 17 November 2012 - 11:34 AM

Mới bị xóa nên làm lại cái topic mới ^^

Ví dụ em có 1 số như thế này: 90.58
Em muốn chỉnh hàng loạt những số tương tự như thế này thành:
90 (bỏ luôn cả dấu chấm)
90.0
90.00

Mình có thể chỉnh được số chữ số 0 phía sau dấu chấm hoặc có thể bỏ luôn.

Cảm ơn mọi người đã giúp đỡ.
  • 0

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 17 November 2012 - 11:41 AM

Lisp tùy chọn số chữ số 0 sau dấu chấm thập phân:

;Doan Van Ha - CADViet.com - Ngay 17/11/2012
;Chuc nang: Tuy chon so chu so 0 sau dau cham.
(defun C:HA( / txt)
(or (and *stp* (= (type *stp*) 'INT)) (setq *stp* 0))
(setq stp (getint (strcat "\nSo chu so thap phan sau dau cham <" (itoa *stp*) ">: ")))
(if (not stp) (setq stp *stp*) (setq *stp* stp))
(while (setq ss (ssget '((0 . "TEXT,MTEXT"))))
(foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
(if (setq txt (distof (cdr (assoc 1 (entget ent)))))
(entmod (subst (cons 1 (rtos (fix txt) 2 stp)) (assoc 1 (entget ent)) (entget ent))))))
(princ))

  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#3 autocad2012

autocad2012

    biết zoom

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

Đã gửi 17 November 2012 - 11:51 AM

Thank bác Doan Van Ha.
Chỉnh sửa giùm mình chút nữa ko bạn.
Ví dụ 90.58
Mình muốn làm tròn số lên 91 luôn
hoặc nếu 1 số thập phân thì nó thành: 90.6

Thanks bác
  • 0

#4 avi612

avi612

    biết lệnh move

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

Đã gửi 17 November 2012 - 12:13 PM

Lần sau nhớ xác định rõ mục đích và yêu cầu của bạn trước khi nhờ người khác giúp nhá....

; Write by avi612
(defun C:LTT( / ss n i oldDimzin e d v S)

(defun etype (e) ;;;Entity Type
(cdr (assoc 0 (entget e)))
)

(if (not n0) (setq n0 2))
(setq
ss (ssget '((0 . "TEXT,MTEXT")))
n (getint (strcat "\nS\U+1ED1 ch\U+1EEF s\U+1ED1 th\U+1EADp ph&#226;n: <" (itoa n0) ">"))
i 0
oldDimzin (getvar "dimzin")
)
(if n (setq n0 n) (setq n n0))
(setvar "dimzin" 1)
(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)
)

  • 4

#5 Hoan1111

Hoan1111

    biết lệnh adcenter

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

Đã gửi 17 November 2012 - 01:48 PM

Mới bị xóa nên làm lại cái topic mới ^^

Ví dụ em có 1 số như thế này: 90.58
Em muốn chỉnh hàng loạt những số tương tự như thế này thành:
90 (bỏ luôn cả dấu chấm)
90.0
90.00

Mình có thể chỉnh được số chữ số 0 phía sau dấu chấm hoặc có thể bỏ luôn.

Cảm ơn mọi người đã giúp đỡ.

Hoằn cũng được vinh dự vào thùng rác, cùng chung ngửi mùi hôi với chủ thớt!
  • 1

66 Câu Phật Học Cho Cuộc Sống : http://ngocchinh.com...-cho-cuoc-song/

Gió đưa cây cải về trời / Rau răm ở lại chịu lời đắng cay...

 

 


#6 BuiHuuNghia

BuiHuuNghia

    biết zoom

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

Đã gửi 03 January 2014 - 01:02 AM

Ai giúp sửa lisp này thành lisp làm tròn lên với. VD: 90.1 --> 91; 90.6 --> 91; 91.05 --> 92


  • 0

#7 Polyline

Polyline

    biết lệnh mirror

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

Đã gửi 03 January 2014 - 08:32 AM

<p>Theo như c&aacute;c y&ecirc;u cầu của bạn th&igrave; c&aacute;ch l&agrave;m tr&ograve;n l&agrave; kh&aacute;c nhau, tương đương với 3 h&agrave;m trong MS Excel:<br />
- H&agrave;m Round: L&agrave;m tr&ograve;n th&ocirc;ng thường với số lẻ t&ugrave;y &yacute;, v&iacute; dụ: Round(9.16,1) &nbsp; &nbsp;-&gt; 9.2; Round(7.61,1) &nbsp; &nbsp;-&gt; 7.6; Round (7.61,0) -&gt; 8.<br />
- H&agrave;m Ceiling: L&agrave;m tr&ograve;n tr&ecirc;n với bước t&ugrave;y &yacute;, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; v&iacute; dụ: Ceiling(9.16,0.1) -&gt; 9.2; Ceiling(7.61,0.1) -&gt; 7.7;&nbsp;Ceiling (7.61,1) -&gt; 8.<br />
- H&agrave;m Floor: L&agrave;m tr&ograve;n dưới với bước t&ugrave;y &yacute;, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; v&iacute; dụ: Floor &nbsp;(9.16,0.1) -&gt; 9.1; Floor &nbsp;(7.61,0.1) &nbsp;-&gt; 7.6; Floor &nbsp; (7.61,1) -&gt; 7.</p>
<p>&nbsp;</p>
<p>Ngo&agrave;i ra, c&aacute;c h&agrave;m n&agrave;y c&ograve;n cho ph&eacute;p nhập đối số &acirc;m. V&iacute; dụ Round(123456,-3)-&gt;123000.</p>
<p>Như vậy, bạn cần 3 h&agrave;m xử l&yacute; kh&aacute;c nhau t&ugrave;y theo y&ecirc;u cầu, c&oacute; thể gộp chung trong 1 lisp hoặc t&aacute;ch ri&ecirc;ng từng h&agrave;m một.</p>
<p>&nbsp;</p>
<p>Hehe, y&ecirc;u cầu th&igrave; như vậy, nhờ b&aacute;c n&agrave;o upgrade c&aacute;c lisp ở tr&ecirc;n.</p>
<p>&nbsp;</p>
<p>P/s: N&ecirc;n bổ sung t&iacute;nh năng lọc số trước khi l&agrave;m tr&ograve;n, nghĩa l&agrave; nếu n&oacute; l&agrave; số th&igrave; l&agrave;m tr&ograve;n, kh&ocirc;ng l&agrave; số th&igrave; bỏ qua.</p>
  • 0

#8 Polyline

Polyline

    biết lệnh mirror

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

Đã gửi 03 January 2014 - 08:37 AM

Hic, cái gì thế kia! Mình soạn thảo bình thường mà sao lại có kết quả như trên hả bác Admin ơi!!!


  • 0

#9 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 03 January 2014 - 03:51 PM

Ai giúp sửa lisp này thành lisp làm tròn lên với. VD: 90.1 --> 91; 90.6 --> 91; 91.05 --> 92

Đây là cách dùng cho số >=0, nếu muốn cho số âm. bạn tự sửa

(defun RoundUp (x)(+ (fix x) (if (> (rem x 1) 0) 1 0)))


  • 1

#10 BuiHuuNghia

BuiHuuNghia

    biết zoom

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

Đã gửi 05 January 2014 - 11:17 PM

He, làm được rồi. Rất cám ơn bạn đã giúp!

Đây là cách dùng cho số >=0, nếu muốn cho số âm. bạn tự sửa

(defun RoundUp (x)(+ (fix x) (if (> (rem x 1) 0) 1 0)))


  • 0