Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
20 replies to this topic

#1 bach1212

bach1212

    biết lệnh trim

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

Đã gửi 15 December 2013 - 08:02 PM

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


  • 0

Một môn tập luyện mang lại vô vàn lợi ích sức khỏe cho mọi người, nhiều bệnh tật nan y đều được chữa khỏi, hoàn toàn miễn phí. Hiệu quả chữa khỏi bệnh tật của nó lên đến hơn 90%.
Tài liệu tại đây: http://phapluan.org/

Rất vui được làm quen với mọi người trên facebook:
https://www.facebook...67946371&type=1

 

 


#2 DanKhaosat

DanKhaosat

    biết lệnh scale

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

Đã gửi 15 December 2013 - 08:16 PM

BẠN dùng lệnh Ma (cái chổi quét) còn nhanh hơn


  • 0

#3 bach1212

bach1212

    biết lệnh trim

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

Đã gửi 15 December 2013 - 08:46 PM

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


  • 0

Một môn tập luyện mang lại vô vàn lợi ích sức khỏe cho mọi người, nhiều bệnh tật nan y đều được chữa khỏi, hoàn toàn miễn phí. Hiệu quả chữa khỏi bệnh tật của nó lên đến hơn 90%.
Tài liệu tại đây: http://phapluan.org/

Rất vui được làm quen với mọi người trên facebook:
https://www.facebook...67946371&type=1

 

 


#4 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 15 December 2013 - 08:53 PM

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")))


  • 2

#5 bach1212

bach1212

    biết lệnh trim

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

Đã gửi 15 December 2013 - 09:02 PM

E làm được rùi. hề hề, thanks bác ự.


  • 0

Một môn tập luyện mang lại vô vàn lợi ích sức khỏe cho mọi người, nhiều bệnh tật nan y đều được chữa khỏi, hoàn toàn miễn phí. Hiệu quả chữa khỏi bệnh tật của nó lên đến hơn 90%.
Tài liệu tại đây: http://phapluan.org/

Rất vui được làm quen với mọi người trên facebook:
https://www.facebook...67946371&type=1

 

 


#6 dunguss3581

dunguss3581

    biết lệnh rotate

  • Advance Member
  • PipPipPip
  • 139 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 28 May 2015 - 02:59 PM

 

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.


  • 0

#7 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 665 Bài viết
Điểm đánh giá: 312 (khá)

Đã gửi 28 May 2015 - 03:36 PM

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. ???


  • 0

#8 dunguss3581

dunguss3581

    biết lệnh rotate

  • Advance Member
  • PipPipPip
  • 139 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 28 May 2015 - 04:06 PM

 

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?


  • 0

#9 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 665 Bài viết
Điểm đánh giá: 312 (khá)

Đã gửi 28 May 2015 - 04:46 PM

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)
)
  • 1

#10 dunguss3581

dunguss3581

    biết lệnh rotate

  • Advance Member
  • PipPipPip
  • 139 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 28 May 2015 - 04:52 PM

thankyou. mình muốn chuyển thẳng về lớp mới có tên xxx gì đó được không bác?


  • 0

#11 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 28 May 2015 - 05:02 PM

Đổi về tên người ấy thì sửa (getvar "cLayer") thành "Tên_người_ấy".


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#12 dunguss3581

dunguss3581

    biết lệnh rotate

  • Advance Member
  • PipPipPip
  • 139 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 28 May 2015 - 05:05 PM

 Đổ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?


  • 0

#13 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 28 May 2015 - 05:13 PM

 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.


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#14 dunguss3581

dunguss3581

    biết lệnh rotate

  • Advance Member
  • PipPipPip
  • 139 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 28 May 2015 - 05:14 PM

Đượ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?


  • 0

#15 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 28 May 2015 - 05:26 PM

Đâ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"))))

  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#16 dunguss3581

dunguss3581

    biết lệnh rotate

  • Advance Member
  • PipPipPip
  • 139 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 28 May 2015 - 05:39 PM

 

Đâ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?


  • 0

#17 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 665 Bài viết
Điểm đánh giá: 312 (khá)

Đã gửi 28 May 2015 - 06:18 PM

Là thế nào? Chỉ 1 đối tượng???


  • 0

#18 dunguss3581

dunguss3581

    biết lệnh rotate

  • Advance Member
  • PipPipPip
  • 139 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 28 May 2015 - 07:32 PM

Là thế nào? Chỉ 1 đối tượng???

ok.
  • 0

#19 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 665 Bài viết
Điểm đánh giá: 312 (khá)

Đã gửi 28 May 2015 - 07:50 PM

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

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


  • 1

#20 dunguss3581

dunguss3581

    biết lệnh rotate

  • Advance Member
  • PipPipPip
  • 139 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 28 May 2015 - 08:44 PM

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


  • 0