Chuyển đến nội dung
Diễn đàn CADViet
banbe0274

Đếm số lượng text và Mtext trong 1 vùng kín

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

Nhờ các viết giùm cho 1 lisp đếm số lượng text và mtext trong 1 vùng kín được bao bọc bới polyline khép kín.

 

http://www.cadviet.com/upfiles/3/dem.dwg

Chào banbe0274,

Nhắc bạn lần sau nếu còn post nhiều bài trên các topic khác nhau với cùng nội dung như nhau sẽ bị xóa toàn bộ các bài viết đó. Đã tham gia diễn đàn , bạn nên đọc quy định chung của nó và hãy tôn trọng quy định đó. Đừng nghĩ đó là sân chơi cho riêng bạn, muốn làm chi thì làm.

 

Yếu cầu của bạn không có gì quá khó cả. Bạn hãy thử cái này xem có ưng không nhé.

(defun c:demt ()

(vl-load-com)

(setq plst (acet-geom-vertex-list (car (entsel "\n Chon pline kín")))

ss (ssget "wp" plst (list (cons 0 "text,mtext")))

n (sslength ss)

)

(princ (strcat "\nTong so text va mtext trong vung chon la: " (rtos n 2 0)))

(alert (strcat "\nTong so text va mtext trong vung chon la: " (rtos n 2 0)))

(princ)

)

  • Vote tăng 2

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ào banbe0274,

Nhắc bạn lần sau nếu còn post nhiều bài trên các topic khác nhau với cùng nội dung như nhau sẽ bị xóa toàn bộ các bài viết đó. Đã tham gia diễn đàn , bạn nên đọc quy định chung của nó và hãy tôn trọng quy định đó. Đừng nghĩ đó là sân chơi cho riêng bạn, muốn làm chi thì làm.

 

Yếu cầu của bạn không có gì quá khó cả. Bạn hãy thử cái này xem có ưng không nhé.

(defun c:demt ()

(vl-load-com)

(setq plst (acet-geom-vertex-list (car (entsel "\n Chon pline kín")))

ss (ssget "wp" plst (list (cons 0 "text,mtext")))

n (sslength ss)

)

(princ (strcat "\nTong so text va mtext trong vung chon la: " (rtos n 2 0)))

(alert (strcat "\nTong so text va mtext trong vung chon la: " (rtos n 2 0)))

(princ)

)

Lời giải của bác chỉ đúng với Pline kín có phân đoạn thẳng (Line segment) còn với Pline kín có phân đoạn (Arc segment) hay Spline kín thì 1 số trường hợp không còn đúng nữa

  • Vote tăng 1

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
Nhờ các viết giùm cho 1 lisp đếm số lượng text và mtext trong 1 vùng kín được bao bọc bới polyline khép kín.

 

http://www.cadviet.com/upfiles/3/dem.dwg

Có một cách làm thủ công là:

Chọn đối tượng các chữ >>> gõ M

Command: m MOVE 7 found

Specify base point or [Displacement] : *Cancel*

Command: Specify opposite corner:

Command: *Cancel*

Command: Specify opposite corner:

Command: m MOVE 8 found

Đỡ phải đỡ tốn ổ nhớ thêm lệnh lisp

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

Mình thì thấy cứ chọn = tay vùng nào muốn thống kê rồi dùng lệnh MO hoặc ctrl+1 ở phía bên trên bảng hiện ra nó có thống kê cho từng loại đối tượng trong cái tập mình chọn rồi.

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

Mình có 1 lisp này cũng có thể dùng được này.

Lisp có khả năng đếm số lần xuất hiện của 1 Dtext rồi lập thành bảng thống kê.

Nhưng mấy bác cao thủ chỉnh lại giùm em một chút này cho nó hay đi:

+ Có thể đếm được tất cả các loại text: Mtext, Dtext, Text.

+ Có dòng thông báo nhập chiều cao text trong bảng thống kế, nếu Enter thi dùng chiều cao chữ hiện hành.

+ Cuối cùng thì kẽ thành 1 bảng thống kê có dòng tổng số text.

 

Lisp này em sưu tầm trên mạng không biết của tác già nào nửa.

 

 

(defun c:tkt (/ lst msp pt ss str txtsiz)
(vl-load-com)
 (setq msp (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) lst (list))
(prompt (strcat "\nChon Text de Liet ke hay ENTER de chon tat ca :"))
 (if (null (setq ss (ssget(list (cons 0 "TEXT"))))) (setq ss (ssget "_X" (list(cons 410 (getvar "Ctab")) (cons 0 "TEXT")))))
 (if ss
(progn
 	(foreach e (mapcar 'vlax-ename->vla-object(vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
(setq str (vla-get-TextString e))
(if (not (assoc str lst))
 	(setq lst (cons (cons str 1) lst))
 	(setq lst (subst (cons str (1+ (cdr (assoc str lst))))
          	(assoc str lst) lst)))
)
 	(setq lst (vl-sort lst '(lambda (x y) (< (cdr x) (cdr y))))

	pt (getpoint "\nDiem dat Bang :" )
   	txtsiz (* (getvar "dimtxt")(getvar "dimscale")))
 	(foreach e lst
(vla-addtext msp (cdr e) (vlax-3d-point pt) txtsiz )
(vla-addtext msp (car e) (vlax-3d-point (polar pt 0 (* 5 txtsiz))) txtsiz ) 	; khoang cach tu so thong ke toi text
(setq pt (polar pt (/ pi -2) (* 1.5 txtsiz)))                 	; khoang cach 2 dong text cua bang thong ke
)
 	)
(alert "Khong chon duoc Text.")
)
 (princ))

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

Bài của bạn vi phạm gần hết các yêu cầu về post bài ở box Autolisp, bạn hãy đọc để sửa lại cho đúng nhé. Quy định dưới chữ ký của mình.

Lisp này của bác Gia_bach

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

Xin lỗi vì vi phạm nội quy, minh mới post bài lần đầu nên chưa hiểu luật.

Mà em cũng tìm được lisp này trên diển đàn mình rồi. http://www.cadviet.com/forum/index.php?showtopic=14684

Sau này e sẽ đọc kỹ hướng dẫn sử dụng trước khi dùng.

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

Vậy các bác có lisp nào như sau:

Trong nhiều vùng khép kín, ở mỗi vũng có “Text” và “số” , “Text” thì nằm không theo quy luật nào trong vùng khép kin đó cả, noi chung là năm bất kỳ trong vùng khép kín đó, nhưng “số” thì nằm tại tâm của vùng kín, vì đã có tâm điểm rồi,

Có lisp nào có thể đưa “Text” về “số” hay là tâm của vùng khép kin đó được không, cảm ơn các bác,

hoa

 

Công việc em ngày nào cũng phải nhặt thóc như thế này, lâu lắm

 

Hoặc gán “Text” và “số” ra file *.txt, hay *.csv cũng được. miên sao có định dạng

1 Text 10

2 Text 22

3 Text 34

4 Text 41

5 Text 57

……………….

……………….115001_toolwiz20121120152417jpgjpg.jpg

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

×