Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
bach1212

[Yêu cầu] Nhờ viết lisp copy text, kết quả đổi sang layer hiện hành

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

Mình có 1 công việc như này phải lặp đi lặp lại. Copy 1 đối tượng  (layer 1) sang bên cạnh rồi lại đổi nó về layer khác (layer hiện hành: layer 2)
Muốn nhờ các bạn viết giùm 1 lisp copy thực hiện được kết quả luôn như thế. Kết quả: sẽ chuyển sang layer hiện hành

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

Mình có 1 công việc như này phải lặp đi lặp lại. Copy 1 đối tượng  (layer 1) sang bên cạnh rồi lại đổi nó về layer khác (layer hiện hành: layer 2)

Muốn nhờ các bạn viết giùm 1 lisp copy thực hiện được kết quả luôn như thế. Kết quả: sẽ chuyển sang layer hiện hành

 

Bạn có thể dùng lệnh copytolayer hoặc lệnh -copytolayer

Dùng Lisp thì mình quick code cho bạn:

 

(defun c:cpl()  (command "-copytolayer" (ssget) "" (getvar "cLayer")))

  • Vote tăng 2

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

 

Bạn có thể dùng lệnh copytolayer hoặc lệnh -copytolayer

Dùng Lisp thì mình quick code cho bạn:

 

(defun c:cpl()  (command "-copytolayer" (ssget) "" (getvar "cLayer")))

anh cho tui hỏi chút sao khi tui gõ dòng lệnh này (command "-copytolayer" ) thì cad 2005 báo nill vậy? hướng xử lý ntn? xin 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

anh cho tui hỏi chút sao khi tui gõ dòng lệnh này (command "-copytolayer" ) thì cad 2005 báo nill vậy? hướng xử lý ntn? xin cảm ơn. Hình như cad2005 không có lệnh -copytolayer. ???

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

 

anh cho tui hỏi chút sao khi tui gõ dòng lệnh này (command "-copytolayer" ) thì cad 2005 báo nill vậy? hướng xử lý ntn? xin cảm ơn. Hình như cad2005 không có lệnh -copytolayer. ???

 

nếu vậy giải quyết vấn đề này thế nào bác?

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

Có cái này bạn dùng tạm:

(defun c:cpl (/ ss pt1 pt2 i sn lst l)

(if (and (setq ss (ssget "_:L"))

(setq pt1 (getpoint "\nSpecify base point: "))

(setq pt2 (acet-ss-drag-move ss pt1 "\nSpecify second point: "))

(repeat (setq i (sslength ss))

(setq sn (ssname ss (setq i (1- i))))

(setq lst (cons (vla-copy (vlax-ename->vla-object sn)) lst))

)

) (progn (foreach ent lst (vla-move ent (vlax-3d-point pt1) (vlax-3d-point pt2)))

(foreach obj lst (vla-put-layer obj (getvar "cLayer")))

)

)

(princ)

)

  • 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

 Đổi về tên người ấngườichuyển(getvar "cLayer") thành "Tên_ngườichuyêok.

 vậy mình muốn chuyển cpl thành hàm con của 3 biến ss pt1 pt2 được k?

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

 vậy mình muốn chuyển cpl thành hàm con của 3 biến ss pt1 pt2 được k?

Được chứ sao không! Thêm cả biến Layer nữa cũng được.

  • 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

Được chứ sao không! Thêm cả biến Layer nữa cũng được.

mình làm không được. kiến thức hẹp quá. chỉnh giúp tui được không bác Ha?

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

Đây!

 

(defun c:cpl (/ ss pt1 pt2)
 (if
  (and
   (setq ss (ssget "_:L"))
   (setq pt1 (getpoint "\nSpecify base point: "))
   (setq pt2 (acet-ss-drag-move ss pt1 "\nSpecify second point: ")))
  (cpl ss pt1 pt2))
 (princ)) 
(defun cpl (ss pt1 pt2 / i sn)  
 (repeat (setq i (sslength ss))
  (setq sn (vla-copy (vlax-ename->vla-object (ssname ss (setq i (1- i))))))
  (vla-move sn (vlax-3d-point pt1) (vlax-3d-point pt2))
  (vla-put-layer sn (getvar "cLayer"))))

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

 

Đây!

(defun c:cpl (/ ss pt1 pt2)
 (if
  (and
   (setq ss (ssget "_:L"))
   (setq pt1 (getpoint "\nSpecify base point: "))
   (setq pt2 (acet-ss-drag-move ss pt1 "\nSpecify second point: ")))
  (cpl ss pt1 pt2))
 (princ)) 
(defun cpl (ss pt1 pt2 / i sn)  
 (repeat (setq i (sslength ss))
  (setq sn (vla-copy (vlax-ename->vla-object (ssname ss (setq i (1- i))))))
  (vla-move sn (vlax-3d-point pt1) (vlax-3d-point pt2))
  (vla-put-layer sn (getvar "cLayer"))))

bác giúp tôi cái: có cách nào ngắn gọn cho việc thay đổi lớp một đối tượng vừa tạo ra của bản vẽ không? code ntn?

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

Không biết có đúng ý bạn không?

(vla-put-layer (vlax-ename->vla-object (entlast)) (getvar "cLayer"))

 

ok. chuẩn ý tôi luôn bác ạ. cảm ơn bác nhiều. mà cấu trúc mấy cái hàm VLA-PUT-LAYER ở đâu mà tôi tìm trong help visual lisp không thấy nhỉ? Tuy tôi dùng được rồi nhưng cấu trúc hàm tôi chưa hiể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

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  

×