Chuyển đến nội dung
Diễn đàn CADViet
Kỹ sư

[Hỏi] Xóa text rỗng (không có nội dung)

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

Các có cách nào để xóa text rỗng, k0 có nội dung k0 ạ, chỉ em với.

 

Em thấy CAD 2012 trong lệnh purge, có chức năng xóa tất cả các text rỗng trong bản vẽ mà các phiên bản trước đó k0 có.

em đang làm mấy bản vẽ mà trong đó, có một vài text rỗng trùng với text có giá trị, mà Cad em đang dùng trên công ty là CAD 2004, công ty thì là cty nước ngoài, dùng phần mềm có bản quyền nên gần như k0 thể đề xuất nâng cấp cho em lên 2012 đc

 

Em xin cảm ơn ạ!

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

1 .Mượn anh cad 2012 ở gần đó

2 .COPY tạo bản mới

Em không hiểu text rỗng (không có nội dung) khác với text không rỗng ở chỗ nào, anh có thể minh họa bằng hình ảnh được không?

  • 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

Bạn có thể dùng lệnh PU (purge) để xóa các đối tượng rỗng bằng cách check vào ô Empty Object. Đối tượng rỗng là đối tượng text toàn dấu cách hoặc line có chiều dài bằng 0.

  • 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

Các có cách nào để xóa text rỗng, k0 có nội dung k0 ạ, chỉ em với.

 

Em thấy CAD 2012 trong lệnh purge, có chức năng xóa tất cả các text rỗng trong bản vẽ mà các phiên bản trước đó k0 có.

em đang làm mấy bản vẽ mà trong đó, có một vài text rỗng trùng với text có giá trị, mà Cad em đang dùng trên công ty là CAD 2004, công ty thì là cty nước ngoài, dùng phần mềm có bản quyền nên gần như k0 thể đề xuất nâng cấp cho em lên 2012 đc

 

Em xin cảm ơn ạ!

Bạn có thể thử

(defun c:thu123(/ ss i)
 (setq ss (ssget "x" (list (cons 0 "Text"))))
 (setq i 0)
 (while (< i (sslength ss))
(if (= "" (vl-string-trim " " (cdr(assoc 1 (entget(ssname ss i))))))     
 	(command "ERASE" (ssname ss i) "")
 	nil
 	)
(setq i (1+ 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

- Qselect hoặc lisp (đã có trên diễn đàn) đều sử dụng được bạn ạ

Bạn có thể dùng lệnh PU (purge) để xóa các đối tượng rỗng bằng cách check vào ô Empty Object. Đối tượng rỗng là đối tượng text toàn dấu cách hoặc line có chiều dài bằng 0.

 

 

Cũng không hẳn bác ạ, trong file em đính kèm ở bài này, có text không có nội dung j bác ạ

Tọa độ của nó là x=420.65, y=6.381.

Em dung tool Cad2file, xuất text ra file excel, thì có 1 text có tọa độ như trên và không có nội dung (em kiểm tra bằng hàm len() thì kết quả bằng 0)

 

Và em cũng thử dùng quickselect, filter để thử tìm nhưng CAD <2012 k0 thể tìm thấy text mà không có nội dung.

 

Bạn có thể thử

lisp

 

He he, thanks bác, cái này dùng ngon bác ạ!

 

Cảm ơn các bác ạ.

 

Đây là 1 file có text rỗng của em ạ:

http://www.cadviet.com/upfiles/3/3384_rl1c11.dwg

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

(sssetfirst nil (ssget "x" '((0 . "*Text") (1 . " ,"))))

Bác ketxu cho em hỏi ở dòng

'((0 . "*Text") (1 . " ,"))

Thì dấu phẩy phải chăng được hiểu giống như khi (ssget '( (0 . "Text,Mtext")))

Nếu như vậy thì tại sao lại chỉ cần " "(1 dấu cách) và ""(không có dấu cách) là đủ mà không cần vl-string-trim ạ

Hai là ở lisp của e, em dùng (command "erease" ..) để xóa nhưng mà cách này không hay bác gợi ý em (và cách dùng) của các cấu trúc tương đương với ạ (như kiểu: sẽ xóa đi 1 nhóm đối tượng chứ không xóa từng entname đối tượ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

Cần cải tiến một chút để lisp của Ketxu để xóa các đối tượng text rỗng (có thể có 0 hoặc n dấu cách):

 

Tên lệnh lisp là XR (Xóa Rỗng)

(defun c:xr()(command ".erase" (ssget "x" '((0 . "*TEXT")(1 . "~*[~ ]*"))) "")(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

Chuỗi "~*[~ ]*" khá phức tạp, bác Hoanh có thể diễn giải nó ra được không? (theo mình biết, dấu ~ đứng trước một chuỗi mang nghĩa phủ định).

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 là lisp của Ketxu chọn được cả không có dấu cách nào lẫn có nhiều dấu cách.

 

còn chuỗi "~*[~ ]*" có ý nghĩa gì thì phải lần lượt:

1. [~ ] nghĩa là chuỗi chỉ là 1 ký tự khác dấu trống

2. *[~ ]* nghĩa là chuỗi có tối thiểu 1 ký tự khác dấu trống

3. ~*[~ ]* nghĩa là ngược lại với điều 2. Có 2 khả năng xảy ra: chuỗi toàn dấu trống hoặc chuỗi không chứa gì.

  • 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

chuỗi không chứa gì.

Bác Hoành có thể giải thích "chuỗi không có gì" là chuỗi thế nào? Cách viết? Tôi không hình dung ra 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

Bác Hoành có thể giải thích "chuỗi không có gì" là chuỗi thế nào? Cách viết? Tôi không hình dung ra bác ạ.

Nghĩa là chuỗi mà người dùng nhập lệnh DT để viết nhưng sau đó nhập một, hoặc một số dấu cách và kết thúc lệnh enter(không phải ESC) tại vị trí người dùng nhập vẫn xuất hiện đối tượng Text, nhưng do không có nội dung lên hông nhìn thấy (hông hiển thị), khi zoom,pan đôi khi xuất hiện bóng mờ khá khó chịu

Do Text không có nội dung nên khi quét (từ phải sang, hoặc từ trái sang) đều không quét được nhưng khi dùng lệnh Ctrl+A, hoặc QuickSelect, hoặc Filled thì sẽ tìm thấy các text này trong tập chọn

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

Theo bác Hoành thì có chuỗi 1->n dấu cách và có chuỗi 0 dấu cách. Tôi muốn hỏi làm sao để viết chuỗi 0 dấu cách mà bác Hoành gọi là "chuỗi không có gì".

Enter 2 lần hoặc Esc thì chắc cũng giống nhau thô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

@LoveLisp : chính xác ^^ Cái đó thì do phát hiện tự hồi xưa thôi. Lisp của bạn thay vì command cũng nên dùng mapcar 'entdel sẽ đẹp hơn

Trên chỉ là 1 ví dụ đơn giản ket post làm hàng, còn chuỗi rỗng thì có cả các khái niệm về ký tự đặc biệt, xuống dòng ...., xử lý k dễ thế được ^^

 

@quansla : Chuỗi k có j trông nó thế này ^^ : (vla-put-textstring (vlax-ename->vla-object (car(entsel))) ""), khác với chuỗi nhiều dấu spcae nhé

  • 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

Theo bác Hoành thì có chuỗi 1->n dấu cách và có chuỗi 0 dấu cách. Tôi muốn hỏi làm sao để viết chuỗi 0 dấu cách mà bác Hoành gọi là "chuỗi không có gì".

Enter 2 lần hoặc Esc thì chắc cũng giống nhau thôi?

Chuỗi 0 dấu cách viết bằng cách:

- viết chữ bình thường.

- Chọn text vừa viết

- Nhấn Ctr+1

- Trong ô content, xóa hết đi.

 

Như vậy là có 1 đối tượng text nhưng giá trị là ""

  • 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

 

Cần cải tiến một chút để lisp của Ketxu để xóa các đối tượng text rỗng (có thể có 0 hoặc n dấu cách):

 

Tên lệnh lisp là XR (Xóa Rỗng)

(defun c:xr()(command ".erase" (ssget "x" '((0 . "*TEXT")(1 . "~*[~ ]*"))) "")(princ))

sao mình dowload về dùng cứ báo:

Command: ap

APPLOAD xr.lsp successfully loaded.

 

 

Command: xr

Unknown command "XR".  Press F1 for help.

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

×