Đến nội dung


Hình ảnh
- - - - -

Lọc đối tượng, nil bylayer


  • Please log in to reply
1 reply to this topic

#1 dkkx3a

dkkx3a

    biết lệnh trim

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

Đã gửi 26 August 2009 - 12:34 PM

Mình đang học và tập viết một số lisp đơn giản, có chút vấn đề ko giải quyết được mong các bạn trên diễn đàn giải đáp hộ: (mình đã search nhưng vẫn chưa xong).
Mình viết đoạn lisp như sau, dùng để lọc đối tượng như lệnh filter (lọc theo mầu đối tượng), nhưng khi chọn đối tượng theo mầu thì các đối tượng ở chế độ bylayer ko hiểu, mong giải đáp hộ thắc mắc:

;===========================================
(defun c:locmau()
(setq dtuong (entsel "\nChon doi tuong lay mau chuan: "))
(if (cdr(assoc 62 (entget(car dtuong))))
(setq mau (cdr(assoc 62 (entget(car dtuong)))))
(setq mau (cdr(assoc 62 (tblsearch "layer" (cdr (assoc 8 (entget(car dtuong))))))))
)
(setq thop (ssget (list(cons 62 mau))))
(sssetfirst thop thop)
(princ))
;===========================================

Xin cảm ơn!!!
  • 0
TỰ SỰ
Biển vào chiều buồn giữa cô liêu
Sóng vỗ bờ bạc đầu con nước
Khi biển động như lòng ta chợt động
Biển ồn ào nhưng thực rất dịu êm.......

#2 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 26 August 2009 - 01:03 PM

Mình đang học và tập viết một số lisp đơn giản, có chút vấn đề ko giải quyết được mong các bạn trên diễn đàn giải đáp hộ: (mình đã search nhưng vẫn chưa xong).
Mình viết đoạn lisp như sau, dùng để lọc đối tượng như lệnh filter (lọc theo mầu đối tượng), nhưng khi chọn đối tượng theo mầu thì các đối tượng ở chế độ bylayer ko hiểu, mong giải đáp hộ thắc mắc:

;===========================================
(defun c:locmau()
(setq dtuong (entsel "\nChon doi tuong lay mau chuan: "))
(if (cdr(assoc 62 (entget(car dtuong))))
(setq mau (cdr(assoc 62 (entget(car dtuong)))))
(setq mau (cdr(assoc 62 (tblsearch "layer" (cdr (assoc 8 (entget(car dtuong))))))))
)
(setq thop (ssget (list(cons 62 mau))))
(sssetfirst thop thop)
(princ))
;===========================================

Xin cảm ơn!!!

Các đối tượng có màu ByLayer không có mã DXF là 62 nên với đoạn này
(setq thop (ssget (list(cons 62 mau))))
thì bạn sẽ không chọn được đối tượng có màu ByLayer vì bản thân nó không có mã DXF=62
=> Cho nên bạn phải chuyển màu ByLayer sang màu của chính nó thì mới chọn được
Bằng cách thêm vào thông tin về đối tượng mã DXF = 62 (dùng hàm append)
Bạn xây dựng code thử nhé
  • 1