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  
tinhyeu_forever2

Giúp Đỡ Lisp Chọn Tất Cả Đối Tượng Thuộc Layer 1 Rồi Chuyển Về Layer 2

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

Chào các bạn, mình đang cần làm 1 cái lisp có tính năng là chọn 1 đối tượng, sau đó lisp sẽ chọn tất cả các đối tượng mà có cùng layer như đối tượng được chọn, sau đó tự động chuyển thành 1 layer mới mà mình định sẵn và đã có sẵn ở trong bản vẽ. Mình có mày mò, xem các bài viết trên diễn đàn nhưng không tìm thấy. Mình cũng biết lệnh LAYMRG, nhưng vì 1 vài lý do nên các bạn có thể giúp mình làm lisp như mình trình bày ở trên không ạ.

Mình có xem qua các bài viết, xong viết 1 cái như thế này nhưng không chạy được ạ :)

(defun c:qqq1 (/ targent)
  (setq TargEnt (car (entsel "\nSelect object on layer to select: ")))
  (Setq chuyen (sssetfirst nil (ssget "_X" (list (assoc 8 (entget TargEnt)))))
  (command "chprop" chuyen "" "la" "Hidden"  "")
  (princ)

Mong các bạn giú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

Chào các bạn, mình đang cần làm 1 cái lisp có tính năng là chọn 1 đối tượng, sau đó lisp sẽ chọn tất cả các đối tượng mà có cùng layer như đối tượng được chọn, sau đó tự động chuyển thành 1 layer mới mà mình định sẵn và đã có sẵn ở trong bản vẽ. Mình có mày mò, xem các bài viết trên diễn đàn nhưng không tìm thấy. Mình cũng biết lệnh LAYMRG, nhưng vì 1 vài lý do nên các bạn có thể giúp mình làm lisp như mình trình bày ở trên không ạ.

Mình có xem qua các bài viết, xong viết 1 cái như thế này nhưng không chạy được ạ :)

(defun c:qqq1 (/ targent)

  (setq TargEnt (car (entsel "\nSelect object on layer to select: ")))

  (Setq chuyen (sssetfirst nil (ssget "_X" (list (assoc 8 (entget TargEnt)))))

  (command "chprop" chuyen "" "la" "Hidden"  "")

  (princ)

Mong các bạn giúp đỡ :)


(defun c:qqq1 (/ targent chuyen)    

(setq TargEnt (car (entsel "\nSelect object on layer to select: ")))

(Setq chuyen (ssget "_X" (list (assoc 8 (entget TargEnt)))))

(command "chprop" chuyen "" "la" "Hidden" "")

(princ)

)

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


(defun c:qqq1 (/ targent chuyen)    

(setq TargEnt (car (entsel "\nSelect object on layer to select: ")))

(Setq chuyen (ssget "_X" (list (assoc 8 (entget TargEnt)))))

(command "chprop" chuyen "" "la" "Hidden" "")

(princ)

)

Mình cảm ơn bạn nhiề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

Chào các bạn, mình đang cần làm 1 cái lisp có tính năng là chọn 1 đối tượng, sau đó lisp sẽ chọn tất cả các đối tượng mà có cùng layer như đối tượng được chọn, sau đó tự động chuyển thành 1 layer mới mà mình định sẵn và đã có sẵn ở trong bản vẽ. Mình có mày mò, xem các bài viết trên diễn đàn nhưng không tìm thấy. Mình cũng biết lệnh LAYMRG, nhưng vì 1 vài lý do nên các bạn có thể giúp mình làm lisp như mình trình bày ở trên không ạ.

Mình có xem qua các bài viết, xong viết 1 cái như thế này nhưng không chạy được ạ :)

(defun c:qqq1 (/ targent)

  (setq TargEnt (car (entsel "\nSelect object on layer to select: ")))

  (Setq chuyen (sssetfirst nil (ssget "_X" (list (assoc 8 (entget TargEnt)))))

  (command "chprop" chuyen "" "la" "Hidden"  "")

  (princ)

Mong các bạn giúp đỡ :)

Hề hề hề,

1/- Lisp của bạn không chạy vì có lỗi cơ bản như sau:

- Hàm (sssetfirst .....) chỉ trả về hiển thị trên màn hình chứ không trả về biến trong lisp.

- code thiếu hai ngoặc đóng

2/ Để sửa lại bạn có thể làm như sau:

- Xóa các ký tự sau :  (sssetfirst nil 

- Thêm một dấu ngoặc đóng vào cuối code , dưới dòng (princ)

3/- Bạn có thể test chức năng của hàm (sssetfirst ... ) bằng cách :

- Thêm dòng code sau

(sssetfirst nil chuyen)

vào dươi dòng code

(setq chuyen (ssget "_x" (list (assoc 8 (entget targent)))))

- Thêm vái dấu ;;; vào trước dòng code (command ......)

 

Sau đó load lại lisp và chạy lệnh qqq1 để thấy kết quả. Từ đó sẽ ngộ ra cái chưa đúng của bạ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

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  

×