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  
nhocbabi

Đổi tên của layout

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

Mình có một bản vẽ cad với khoảng 20 layout. Mỗi layout đấy đã được đặt tên, ví dụ A-100.1; A-100.2;A-100.3....Bây giờ mình muốn thay đổi một loạt tất cả các tên như thế, thêm số 01 ở đằng sau, ví dụ A-100.1.01; A-100.2.01...Có cách nào làm nhanh được không ạ. Vì nếu đi đổi tên từng thẻ một thì sẽ mất rất nhiều thời gian. Vì mình có khoảng gần chục bản vẽ quản lý layout kiểu này!

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ẽ làm gì đến tận 20 layout trong 1 bản vẽ xong lại bảo không quản lý được. Vậy bạn đổi sang vẽ 20 bản vẽ, mỗi bản vẽ 1 layout, đổi tên bản vẽ theo ý thích. Quản lý sẽ dễ hơn đó :angry2:

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ới yêu cầu làm hàng loạt thì tốt nhất là hỏi thăm anh Lisp ^^

Ví dụ :

(defun C:test (/ item *doc* after)
;Ketxu
(vl-load-com)
(setq after (getstring "\nHau to can them vao :")
 *doc* (vla-get-layouts(vla-get-activedocument (vlax-get-acad-object))))
(foreach lay(layoutlist)
(vla-put-name (setq item (vla-item *doc* lay)) (strcat (vla-get-name item) after))
)
 (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

Vẽ làm gì đến tận 20 layout trong 1 bản vẽ xong lại bảo không quản lý được. Vậy bạn đổi sang vẽ 20 bản vẽ, mỗi bản vẽ 1 layout, đổi tên bản vẽ theo ý thích. Quản lý sẽ dễ hơn đó :angry2:

Bạn thật là, đã vội nóng tính thế. Mình đâu có muốn mất thời gian vì cái việc vô ích đó. Yêu cầu là do sếp đặt ra, đến hạn nộp bài thì yêu cầu như thế. Mình làm trên layout vì nhiều mục đích, chứ không phải vì mỗi việc đổi tên này!

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ới yêu cầu làm hàng loạt thì tốt nhất là hỏi thăm anh Lisp ^^

Ví dụ :

(defun C:test (/ item *doc* after)
;Ketxu
(vl-load-com)
(setq after (getstring "\nHau to can them vao :")
 *doc* (vla-get-layouts(vla-get-activedocument (vlax-get-acad-object))))
(foreach lay(layoutlist)
(vla-put-name (setq item (vla-item *doc* lay)) (strcat (vla-get-name item) after))
)
 (princ)
)

Cảm ơn bạn nhé, mình sẽ load về dùng thử!

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 đã dùng lisp của bạn ketxu cho rồi, thật tuyệt vời! Một lần nữa cảm ơn bạn nhé!

Tham lam thêm một chút :P. Cho mình hỏi, có lisp để thay đổi tên của các layout theo kiểu chức năng replace không ạ. Nghĩa là thay một cụm text cũ bằng một cụm text mới ở vị trí bất kỳ trong chuỗi text ấy ạ!

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ất nhiên là được bạn ạ. Bạn nêu yêu cầu cụ thể, lúc rảnh mình sẽ viết. Lưu ý với bạn là bạn phải ghi chú rõ công việc của lisp khi thay thế, ví dụ thay cụm "AB"thành "12" trong tên "ABCDABCD" -> "12CDABCD" hay là "12CD12CD" ....

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ất nhiên là được bạn ạ. Bạn nêu yêu cầu cụ thể, lúc rảnh mình sẽ viết. Lưu ý với bạn là bạn phải ghi chú rõ công việc của lisp khi thay thế, ví dụ thay cụm "AB"thành "12" trong tên "ABCDABCD" -> "12CDABCD" hay là "12CD12CD" ....

Việc mình cần đây ạ: đổi "BC" thành "1234", kết quả là: "ABCDABCD" thành "A1234DA1234D"

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 định tạo chủ đề trong mục Lisp, nhung search thì thấy có mục này. Nhờ pác Ketxu viết tiếp theo yêu cầu cuối cùng của nhocbabi được không. Lisp này dạng như Find > Replace all có sẵn trong Cad, nhưng chỉ áp dụng cho các đối tượng text trong "layout name". Việc này rất tốt cho quản lý và in bản vẽ bằng Sheet set.

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

Việc mình cần đây ạ: đổi "BC" thành "1234", kết quả là: "ABCDABCD" thành "A1234DA1234D"

minhf xin phép sửa lại code cua ketxu theo yeu cầu của Bạn

(defun C:test (/ item *doc* pre after fin rep nam)
;Ketxu
 (vl-load-com)
 (command "_.undo" "be")
 (setq pre (getstring "\nTien to can them vao : ")
after (getstring "\nHau to can them vao : ")
fin (getstring T "\nChuoi can thay the : ")
rep (getstring T "\nChuoi thay the : ")
*doc* (vla-get-layouts(vla-get-activedocument (vlax-get-acad-object)))
)
 (foreach lay(layoutlist)
(setq nam (vla-get-name (vla-item *doc* lay)))
(while (vl-string-search fin nam)
 	(setq nam (vl-string-subst rep fin nam))
 	)
(vla-put-name (setq item (vla-item *doc* lay)) (strcat pre nam after));(strcat pre (vla-get-name item) after))
)
 (command "_.undo" "end")
 (princ)
)

 

@ketxu: Bạn có thể giúp mình thêm đoạn code lấy các layout theo thứ tự được không, việc này có thể thay đổi toàn bộ tên các layout mà không phụ thuộc vào các tên cũ nhưng vẫn đảm bảo tính thứ tự của các layout. Các hàm VLA muốn tìm hiểu thêm thì tìm ở đâu để biết các ứng dụng và cú pháp lệnh, mong 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

Anh, chị, em nào viết giúp mình lips đổi tên các layout được chọn với; các layout sau đổi tên sẽ có thứ tên theo thứ tự + với tiền tố thêm vào. Cảm ơ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

minhf xin phép sửa lại code cua ketxu theo yeu cầu của Bạn

Bạn có thể viết giúp mình lips đổi tên các layout được chọn với; các layout sau đổi tên sẽ có thứ tên theo thứ tự + với tiền tố thêm vào. Cảm ơn nhiều :wub: 

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  

×