Đến nội dung


Hình ảnh
5 stars - based on 24598 reviews
- - - - -

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


  • Please log in to reply
3 replies to this topic

#1 tinhyeu_forever2

tinhyeu_forever2

    Chưa sử dụng CAD

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

Đã gửi 11 August 2017 - 08:29 PM

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 đỡ :)


  • 0

#2 cuongtk2

cuongtk2

    biết lệnh mirror

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

Đã gửi 12 August 2017 - 11:27 AM

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)

)


  • 0

#3 tinhyeu_forever2

tinhyeu_forever2

    Chưa sử dụng CAD

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

Đã gửi 12 August 2017 - 01:28 PM

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


  • 0

#4 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 13 August 2017 - 06:27 PM

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.


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