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

[Yêu cầu] Nhờ viết lisp chọn nhanh text cùng nội dung

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

Nhờ các bác viết dùm lisp chọn nhanh các text có cùng nội dung trong một vùng lựa chọn dùm em với. Em thấy thao tác này rất hay gặp, bình thường có thể dùng lệnh find nhưng thao tác hơi rườm rà, ngoài ra với các bản từ cad 2010 trở đi em thấy tốc độ sử dụng lệnh find rất chậm, rất ức chế. Cụ thể lisp như sau:

 

Lisp quick_select_text: lệnh qst

+ Chọn text mẫu lấy nội dung cần tìm

+ chọn vùng đối tượng cần lấy các text cùng nội dung text mẫu

 

Kết quả lựa chọn được các text cùng nội dung text mẫu trong vùng lựa chọn.

Cho em cảm ơn trước các bác nhé. Chúc các bác một ngày vui vẻ!

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 bác viết dùm lisp chọn nhanh các text có cùng nội dung trong một vùng lựa chọn dùm em với. Em thấy thao tác này rất hay gặp, bình thường có thể dùng lệnh find nhưng thao tác hơi rườm rà, ngoài ra với các bản từ cad 2010 trở đi em thấy tốc độ sử dụng lệnh find rất chậm, rất ức chế. Cụ thể lisp như sau:

 

Lisp quick_select_text: lệnh qst

+ Chọn text mẫu lấy nội dung cần tìm

+ chọn vùng đối tượng cần lấy các text cùng nội dung text mẫu

Kết quả lựa chọn được các text cùng nội dung text mẫu trong vùng lựa chọn.

Cho em cảm ơn trước các bác nhé. Chúc các bác một ngày vui vẻ!

Đây bạn ơi! Lisp chọn text cùng nội dung.

(defun C:HA( / txt)
(setq txt (cdr (assoc 1 (entget (car (entsel "\nChon Text mau: "))))))
(princ "\nChon nhom Text...")
(setq ss (ssget (list '(0 . "*TEXT") (cons 1 txt))))
(sssetfirst nil ss))

  • Like 1
  • Vote tăng 4

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

hì, code ngắn gọn quá. Vậy mà đỡ được bao nhiêu công đoạn. Cảm ơn bác Doan Van Ha 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

sài lệnh fi của cad là được mà

 

Mình hiểu là có một vài con đường khác nhau để đi đến một cái đích. Ở đây mình đang bàn đến con đường ngắn nhất 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

Nếu bạn hay làm việc với các đối tượng kiểu này thì bạn nên tìm hiểu về fi đi, nó cực kỳ mạnh cho những thao tác kiểu này đó.

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

Đây bạn ơi! Lisp chọn text cùng nội dung.

(defun C:HA( / txt)
(setq txt (cdr (assoc 1 (entget (car (entsel "\nChon Text mau: "))))))
(princ "\nChon nhom Text...")
(setq ss (ssget (list '(0 . "*TEXT") (cons 1 txt))))
(sssetfirst nil ss))

Mình thấy Lsp này cũng hay,

Lsp này có thể chỉnh sửa: Thay vì chọn đối tượng TEXT, mà là chọn đối tượng mẫu ( mọi đối tượng) sau đó chọn vùng thì có được không ah.

  • 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

Mình thấy Lsp này cũng hay,

Lsp này có thể chỉnh sửa: Thay vì chọn đối tượng TEXT, mà là chọn đối tượng mẫu ( mọi đối tượng) sau đó chọn vùng thì có được không ah.

Vấn đề bạn đặt ra Tue_NV thấy thiếu ý :

Chọn đối tượng mẫu ( mọi đối tượng) sau đó chọn vùng -> để chọn ra đối tượng giống đối tượng mẫu" ->

Tue_NV hỏi bạn giống chổ này hơi khó hiểu là giống cái gì -> Text thì giống nhau về nội dung hay Layer hay màu sắc...... và các đối tượng khác giống đối tượng mẫu về cái gì. Hay là giống nhau cả? (Chắc là không giống nhau hết được đâu bạn nhỉ?)

 

Vấn đề đặt ra của bạn tương đối hay nhưng thiếu dữ kiện nên phải đầy đủ mới có thể giải quyết được bạn ạ

Tue_NV hay sử dụng lệnh Fi để lọc các đối tượng có điều kiện khác nhau và viết Lisp có hay chăng nữa cũng không bằng lệnh Fi dược

Vậy trong trường hợp này sao không sử dụng lệnh Fi?????

  • 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

Vấn đề bạn đặt ra Tue_NV thấy thiếu ý :

Chọn đối tượng mẫu ( mọi đối tượng) sau đó chọn vùng -> để chọn ra đối tượng giống đối tượng mẫu" ->

Tue_NV hỏi bạn giống chổ này hơi khó hiểu là giống cái gì -> Text thì giống nhau về nội dung hay Layer hay màu sắc...... và các đối tượng khác giống đối tượng mẫu về cái gì. Hay là giống nhau cả? (Chắc là không giống nhau hết được đâu bạn nhỉ?)

 

Vấn đề đặt ra của bạn tương đối hay nhưng thiếu dữ kiện nên phải đầy đủ mới có thể giải quyết được bạn ạ

Tue_NV hay sử dụng lệnh Fi để lọc các đối tượng có điều kiện khác nhau và viết Lisp có hay chăng nữa cũng không bằng lệnh Fi dược

Vậy trong trường hợp này sao không sử dụng lệnh Fi?????

 

Ở đây đối tượng mẫu cũng giống như nội dung như đối tượng TEXT.

VD: khi ta chọn một block thì khi đó những block cùng tên (or cùng một kiểu) sẽ được chọn,

Đối tượng line cùng màu thì cũng chọn hết.

...

ở lệnh FI nó mất công hơn một chút là nếu muốn chọn đối tượng về điểm trung thì phải xóa hết thông số riêng của đối tượng đó.

VD: mình muốn chọn hết TEXT trong bản vẽ thì chỉ để lại Objest là TEXT thui. còn lại là xóa layer, màu. linetype...

 

( Giờ mình cũng mới thấy phức tạp ở chỗ, Text thì nó chung một nội dung. còn các đối tượng khác. VD : khi chọn đối tượng LINE thì không biết nó lọc kiểu màu, layer., linetype or tọa độ nhỉ)

Chắc sài lệnh FI là chuẩn nhất.

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

Fi là chuẩn rồi. chỉ là trường hợp vic hay gặp chọn text cùng nội dung nên muốn nó thánh lisp cho nhanh 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

Victor request hơi nhiều quá thì phải :o Có lẽ phải đề nghị hạn mức thôi

 

Vic yêu cầu cũng xoay quanh các vấn đề chủ yếu hay gặp và mình nghĩ các bạn dùng cad khác cũng sẽ hay gặp như mình nên yêu cầu thôi. Tuyệt đối ko có tham lam j :D. Mong ketxu đèn trời soi xét ;)

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ó bác nào bonus dùm em lisp chọn nhanh các text có nội dung là các số thuộc tập số nguyên Z ( -n, .. , -2, -1, 0, 1, 2, .... n) trong vùng lựa chọn được ko ạ?

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ó bác nào bonus dùm em lisp chọn nhanh các text có nội dung là các số thuộc tập số nguyên Z ( -n, .. , -2, -1, 0, 1, 2, .... n) trong vùng lựa chọn được ko ạ?

Lisp chọn text thuộc tập số nguyên Z.

;Doan Van Ha - CADViet.com - Ngay 28/5/2012
;Muc dich: Chon tap hop text bao gom cac so nguyen am, nguyen duong va so 0 (tap hop Z).
(defun C:HA()
(princ "\nChon cac text thuoc tap hop Z...")
(setq so (ssget '((0 . "*TEXT") (-4 . "<AND") (1 . "~*[~-0--9]*") (-4 . "<NOT") (1 . "*[`.]*") (-4 . "NOT>") (-4 . "AND>"))))
(sssetfirst nil so))

  • 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

Em cảm ơn bác Doan Van Ha 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

Đây bạn ơi! Lisp chọn text cùng nội dung.

(defun C:HA( / txt)
(setq txt (cdr (assoc 1 (entget (car (entsel "\nChon Text mau: "))))))
(princ "\nChon nhom Text...")
(setq ss (ssget (list '(0 . "*TEXT") (cons 1 txt))))
(sssetfirst nil ss))

nhờ các bác giựa vào code loc text này giúp em chọn các Text có cùng nội dung trong các thửa đất liền kề và sau đó BOUNDARY các thửa đó thành 1 đường bao các thửa ngoài xung quanh các thửa đó với ạ! có bệnh vái tứ phương nhưng chưa có thuốc trị, nhờ các bác giúp em với!

http://www.cadviet.com/upfiles/4/62465_khoanh_ve.dwg62465_20150228_071319.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
Vào lúc 28/5/2012 tại 14:04, Doan Van Ha đã nói:

Lisp chọn text thuộc tập số nguyên Z.

 


;Doan Van Ha - CADViet.com - Ngay 28/5/2012
;Muc dich: Chon tap hop text bao gom cac so nguyen am, nguyen duong va so 0 (tap hop Z).
(defun C:HA()
(princ "\nChon cac text thuoc tap hop Z...")
(setq so (ssget '((0 . "*TEXT") (-4 . "<AND") (1 . "~*[~-0--9]*") (-4 . "<NOT") (1 . "*[`.]*") (-4 . "NOT>") (-4 . "AND>"))))
(sssetfirst nil so))
 

 

Nhờ Bác Hà giải thích cụ thể 2 cái cons này được không ạ

(1 . "~*[~-0--9]*") và (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
2 giờ trước, Học Sinh Lớp 1 đã nói:

Nhờ Bác Hà giải thích cụ thể 2 cái cons này được không ạ

(1 . "~*[~-0--9]*") và (1 . "*[`.]*")

Chà, thôi thì xem help vậy, chứ "Học sinh lớp 1" mà quá thông minh thì đâu có được. Hehe

Bạn tìm hiểu hàm Wcmatch í.

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
10 giờ trước, Doan Van Ha đã nói:

Chà, thôi thì xem help vậy, chứ "Học sinh lớp 1" mà quá thông minh thì đâu có được. Hehe

Bạn tìm hiểu hàm Wcmatch í.

^^ em có đọc qua rồi nhưng cũng chưa hiểu kỹ càng lắm nhờ thầy Hà giảng bài giúp với ạ.

Mong bác hồi âm để e còn tốt nghiệp lên lớp 2 với chứ :P

 

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
31 phút trước, Doan Van Ha đã nói:

Bạn tìm hiểu hàm Wcmatch đi. Tôi giải thích sao hay bằng sách được.

có sách phải có thầy nữa mà ^^ thế mới gọi là đi học chứ bác :P ^^

đọc cũng hiểu sơ sơ nhưng ko rõ ràng bản chất lắm nên cần bác chỉ điểm nữa ^^

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

Doan Van Ha

(defun C:HA( / txt) (setq txt (cdr (assoc 1 (entget (car (entsel "\nChon Text mau: ")))))) (princ "\nChon nhom Text...") (setq ss (ssget (list '(0 . "*TEXT") (cons 1 txt)))) (sssetfirst nil ss))

 

Bác Ha ơi xin bác giúp e: vấn đề e gặp là File cad thoát nước họ gửi file có text gom chung lại 1 layer. Ví dụ Hố Ga A1, A2, A3..., B1, B2, B3..., C1, C2, C3..., họ kg tách ra riêng layer A, B, C cho mình dễ chọn á.

Bây giờ e muốn chọn các Text có cùng nội dung bắt đầu chữ A, đầu tiên thì các text từ A1 - ...  An, hoặc chọn B thì các text từ B1 ... cho tới Bn được chọn vv...,  để e chuyển sang text sang layer khác cho dễ quản lý (hoặc rộng hơn là chọn text bắt đầu bằng chữa cái nào thì các chuổi text trong vùng trọn bắt đầu bằng chữ cái đó  đều đc chọn, bất kể Chuổi  đó gắn liền với số hay text..  ,. Nhờ bác và mọi người giúp đỡ, 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

Ví dụ chọn Text bắt đầu bằng chữ "A":

(ssget (list (cons 0 "*text") (cons 1 "A*")))

   ----------------------------------

Dạ vâng đúng ý mình cám ơn bác Ha, Nhưng Bác có thể giúp e thêm tùy chọn là tại dòng nhắc là: hỏi là mình muốn chọn chữ cái đầu tiên là chữ nào. Vậy là mình có thể chọn được 24 chữ cái rồi, và cả số nửa. Cám ơn 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

Đây:


(defun C:HA( / txt ss)
 (setq txt (getstring "\nNhap chu cai dau tien: "))
 (princ "\nChon cac doi tuong Text...")
 (setq ss (ssget (list '(0 . "*TEXT") (cons 1 (strcat txt "*")))))
 (sssetfirst nil ss))

  • Like 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

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

×