Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
cangua172

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

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

cangua172    1

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

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
phamthanhbinh    3.123

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

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
cangua172    1

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

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
phamthanhbinh    3.123

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

)

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
cangua172    1

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

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
phamthanhbinh    3.123

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.

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
cd2k44    121

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

  • 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
phamthanhbinh    3.123

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)

)

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

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.
 

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

Đăng nhập để thực hiện theo  

×