Đến nội dung


Hình ảnh

Đổi tên của layout


  • Please log in to reply
11 replies to this topic

#1 nhocbabi

nhocbabi

    biết vẽ rectang

  • Members
  • PipPip
  • 83 Bài viết
Điểm đánh giá: -3 (bình thường)

Đã gửi 01 October 2011 - 09:10 AM

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!
  • 0

#2 Moihoccad_dasieu

Moihoccad_dasieu

    biết zoom

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

Đã gửi 01 October 2011 - 09:26 AM

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:
  • 0
Á, cái này tui giờ mới biết!!! Bà con mà biết gì thêm, chỉ tui với nhé:
YH: Kinhbacstar
EMail: Kinhbacstar@gmail.com

#3 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 01 October 2011 - 09:32 AM

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

  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#4 nhocbabi

nhocbabi

    biết vẽ rectang

  • Members
  • PipPip
  • 83 Bài viết
Điểm đánh giá: -3 (bình thường)

Đã gửi 01 October 2011 - 10:35 AM

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!
  • 0

#5 nhocbabi

nhocbabi

    biết vẽ rectang

  • Members
  • PipPip
  • 83 Bài viết
Điểm đánh giá: -3 (bình thường)

Đã gửi 01 October 2011 - 10:36 AM

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ử!
  • 0

#6 nhocbabi

nhocbabi

    biết vẽ rectang

  • Members
  • PipPip
  • 83 Bài viết
Điểm đánh giá: -3 (bình thường)

Đã gửi 01 October 2011 - 10:48 AM

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 ạ!
  • 0

#7 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 01 October 2011 - 11:03 AM

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" ....
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#8 nhocbabi

nhocbabi

    biết vẽ rectang

  • Members
  • PipPip
  • 83 Bài viết
Điểm đánh giá: -3 (bình thường)

Đã gửi 01 October 2011 - 12:26 PM

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"
  • 0

#9 mokara30

mokara30

    biết zoom

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

Đã gửi 31 May 2012 - 09:13 AM

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

#10 tien2005

tien2005

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 257 Bài viết
Điểm đánh giá: 94 (tàm tạm)

Đã gửi 01 June 2012 - 09:08 AM

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
  • 0

#11 hung_vinaconex

hung_vinaconex

    Chưa sử dụng CAD

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

Đã gửi 19 August 2016 - 05:17 PM

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


  • 0

#12 hung_vinaconex

hung_vinaconex

    Chưa sử dụng CAD

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

Đã gửi 19 August 2016 - 05:21 PM

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

 

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: 


  • 0