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

bach1212    2

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
bach1212    2

Việc này làm với số lượng lớn. Nên "ma" thì không xuể được bạn ah.
 

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
Tue_NV    3.841

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
bach1212    2

E làm được rùi. hề hề, thanks 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
dunguss3581    5

 

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
quocmanh04tt    385

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
dunguss3581    5

 

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
quocmanh04tt    385

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
dunguss3581    5

 Đổ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
Doan Van Ha    2.676

 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
dunguss3581    5

Đượ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
Doan Van Ha    2.676

Đâ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
dunguss3581    5

 

Đâ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
dunguss3581    5

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  

×