Đến nội dung


Hình ảnh
- - - - -

[Nhờ giúp đỡ] Lọc các Text có cùng chiều cao?


  • Please log in to reply
10 replies to this topic

#1 cangua172

cangua172

    biết vẽ line

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

Đã gửi 14 March 2013 - 10:52 AM

Em có một vấn đề sau:

+ Trên bản vẽ của em có rất nhiều text có chiều cao h khác nhau

+ Các text có cùng 1 layer

==> Xin hỏi cách "Lọc" các text có cùng chiều cao h, lọc theo kiểu chọn một nhóm đối tượng trên bản vẽ.

Xin chân thành cảm ơn!!!


  • 0

#2 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 14 March 2013 - 10:57 AM

Em có một vấn đề sau:

+ Trên bản vẽ của em có rất nhiều text có chiều cao h khác nhau

+ Các text có cùng 1 layer

==> Xin hỏi cách "Lọc" các text có cùng chiều cao h, lọc theo kiểu chọn một nhóm đối tượng trên bản vẽ.

Xin chân thành cảm ơn!!!

Hề hề hề,

Thử xài cái này coi sao:

(setq sst (ssget "x" (list (cons 1 "*text") (cons 40 (getreal "\n Nhap chieu cao text can chon: ")) (cons 8 (getstring "\n Nhap ten layer chua text can loc: ")))))


  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#3 cangua172

cangua172

    biết vẽ line

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

Đã gửi 14 March 2013 - 11:08 AM

Cảm ơn Anh Bình, anh viết giúp em cái Lisp luôn được không? Em không biết về Lisp.

1. Lệnh LOCTEXT

2. Chọn text mẫu trong bản vẽ

3. Chọn vùng cần lọc

kết quả: chọn các text có cùng chiều cao với text mẫu. :)


  • 0

#4 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 14 March 2013 - 11:19 AM

Cảm ơn Anh Bình, anh viết giúp em cái Lisp luôn được không? Em không biết về Lisp.

1. Lệnh LOCTEXT

2. Chọn text mẫu trong bản vẽ

3. Chọn vùng cần lọc

kết quả: chọn các text có cùng chiều cao với text mẫu. :)

Hề hề hề,

Mình code nháp để bạn test, nếu Ok thì hoàn chỉnh sau:

(defun c:loctext ( / )

(setq tm (car (entsel "\n Chon text mau: ")))

(setq ss (ssget (list (cons 0 "*text") (cons 40 (cdr (assoc 40 (entget tm)))) )))

)


  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#5 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 14 March 2013 - 11:28 AM

He, he, he! Bác Bình cỡi áo ra rồi mặc lại:

(cons 40 (cdr (assoc 40 (entget tm))))


  • 0

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


#6 cangua172

cangua172

    biết vẽ line

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

Đã gửi 14 March 2013 - 11:45 AM

Hề hề hề,

Mình code nháp để bạn test, nếu Ok thì hoàn chỉnh sau:

(defun c:loctext ( / )

(setq tm (car (entsel "\n Chon text mau: ")))

(setq ss (ssget (list (cons 0 "*text") (cons 40 (cdr (assoc 40 (entget tm)))) )))

)

Lisp thì ok rồi Anh ơi.. nhưng còn 1 vấn đề nữa là sau khi lọc text xong,khi kết thúc lệnh thì các text vừa lọc làm sao hiện được cái dấu màu xanh dưới chân text (giống như kiểu dùng chuột chọn một đối tượng trên bản vẽ ah), để em có thể thao tác trên các đối tượng vừa lọc... chứ Enter xong nó mất tiêu luôn... Anh xem lại giúp em...  :)


  • 0

#7 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 14 March 2013 - 12:02 PM

He, he, he! Bác Bình cỡi áo ra rồi mặc lại:

(cons 40 (cdr (assoc 40 (entget tm))))

Hề hề hề,

Quả là có hơi lẩm cẩm thiệt. Chả là mình cứ nháp theo cái nghĩ chợt đến mà không check lại cái logic của vấn đề. Cám ơn bác đã chỉ ra cái lẩm cẩm này.


  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#8 cd2k44

cd2k44

    Edu level: li5

  • Members
  • PipPipPipPipPipPipPip
  • 648 Bài viết
Điểm đánh giá: 121 (tàm tạm)

Đã gửi 14 March 2013 - 12:02 PM

Nếu vậy dùng lệnh Fi đi bạn, giữ lại thuộc tính chiều cao và quét các text
  • 1

#9 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 14 March 2013 - 12:09 PM

Lisp thì ok rồi Anh ơi.. nhưng còn 1 vấn đề nữa là sau khi lọc text xong,khi kết thúc lệnh thì các text vừa lọc làm sao hiện được cái dấu màu xanh dưới chân text (giống như kiểu dùng chuột chọn một đối tượng trên bản vẽ ah), để em có thể thao tác trên các đối tượng vừa lọc... chứ Enter xong nó mất tiêu luôn... Anh xem lại giúp em...  :)

Hề hề hề,

Nếu bạn muốn vậy, hãy bổ sung dòng code sau vào trước dấu ngoặc kết thúc lisp:

(sssetfirst nil ss)

Cụ tỷ như dưới đây:

(defun c:loctext ( / )
(setq tm (car (entsel "\n Chon text mau: ")))
(setq ss (ssget (list (cons 0 "*text") (assoc 40 (entget tm)) )))

(sssetfirst nil ss)
)



  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#10 mat_bun

mat_bun

    biết vẽ arc

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

Đã gửi 14 March 2013 - 03:58 PM

cái này e cũng nghĩ là bác nên dùng fi hay hơn, đúng các yêu cầu bác cần luôn, hehe, e xin đóng góp tí :D


  • 1

Cứ đi rồi sẽ đến!!!


#11 cangua172

cangua172

    biết vẽ line

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

Đã gửi 20 March 2013 - 07:58 AM

Cảm ơn Anh Phamthanhbinh và mọi người. 

 

(defun c:loctext ( / )
(setq tm (car (entsel "\n Chon text mau: ")))
(setq ss (ssget (list (cons 0 "*text") (assoc 40 (entget tm)) )))

(sssetfirst nil ss)
)

Code này đúng ý em rồi!! Một lần nữa xin chân thành cảm ơn, Chúc mọi người sức khỏe.
 
  • 0