Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
15 replies to this topic

#1 victor85

victor85

    biết lệnh stretch

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

Đã gửi 24 May 2012 - 09:02 AM

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ẻ!
  • 0

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 24 May 2012 - 09:58 AM

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))

  • 4

* 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 victor85

victor85

    biết lệnh stretch

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

Đã gửi 24 May 2012 - 10:09 AM

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é!
  • 0

#4 quang_lac

quang_lac

    biết lệnh mirror

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

Đã gửi 24 May 2012 - 10:16 AM

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

#5 victor85

victor85

    biết lệnh stretch

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

Đã gửi 24 May 2012 - 10:20 AM

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ơ
  • 0

#6 redsea_tq

redsea_tq

    biết lệnh erase

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

Đã gửi 24 May 2012 - 12:40 PM

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 đó.
  • 0

#7 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 24 May 2012 - 06:11 PM

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

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#8 whatcholingon

whatcholingon

    biết lệnh break

  • Members
  • PipPipPipPip
  • 222 Bài viết
Điểm đánh giá: 37 (tàm tạm)

Đã gửi 24 May 2012 - 07:14 PM

Đâ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.
  • 0

#9 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 25 May 2012 - 06:46 AM

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?????
  • 1

#10 whatcholingon

whatcholingon

    biết lệnh break

  • Members
  • PipPipPipPip
  • 222 Bài viết
Điểm đánh giá: 37 (tàm tạm)

Đã gửi 25 May 2012 - 08:48 AM

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.
  • 0

#11 victor85

victor85

    biết lệnh stretch

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

Đã gửi 25 May 2012 - 03:09 PM

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.
  • 0

#12 victor85

victor85

    biết lệnh stretch

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

Đã gửi 25 May 2012 - 03:12 PM

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 ;)
  • 0

#13 victor85

victor85

    biết lệnh stretch

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

Đã gửi 28 May 2012 - 10:54 AM

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 ạ?
  • 0

#14 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 28 May 2012 - 02:04 PM

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))

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


#15 victor85

victor85

    biết lệnh stretch

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

Đã gửi 28 May 2012 - 02:58 PM

Em cảm ơn bác Doan Van Ha nhé!
  • 0

#16 namnhim

namnhim

    biết vẽ polygon

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

Đã gửi 01 March 2015 - 09:19 PM

Đâ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.c...5_khoanh_ve.dwg62465_20150228_071319.jpg


  • 0