Chuyển đến nội dung
Diễn đàn CADViet
leejang

Đổi tên Block được chọn !

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

Em muốn đổi tên các Blog nào được chọn thì làm thế nào ạ ? Bác nào biết chỉ giúp em với ạ !

Đổi tên Block thì dùng lệnh "Rename". Chọn vào block và tìm block nào cần thay thế. Gõ tên mới vào ô dưới là ok. Không biết có đúng ý bạn không? Vì cái từ các block được chọn nghe nó sao ý, không hiểu cho lắm

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

Em muốn đổi tên các Blog nào được chọn thì làm thế nào ạ ? Bác nào biết chỉ giúp em với ạ !

Bạn thử cái này xem

(defun c:dten(/ bl ten tm)
 (setq bl (car(entsel "\nChon block muon doi: "))
ten (cdr(assoc 2 (entget bl)))
tm (getstring "\nNhap ten muon doi: ")
)
 (command "rename" "b" ten tm)
 )

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 thử cái này xem

(defun c:dten(/ bl ten tm)
 (setq bl (car(entsel "\nChon block muon doi: "))
ten (cdr(assoc 2 (entget bl)))
tm (getstring "\nNhap ten muon doi: ")
)
 (command "rename" "b" ten tm)
 )

hic. Không được rồi bác ơi. Em muốn chọn 1 lần cả trăm blog để đổi tên cơ ạ ? Cái này chỉ chọn từng cái 1. Mất thời gian lắm ạ. Bác chỉnh giúp em với !

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

hic. Không được rồi bác ơi. Em muốn chọn 1 lần cả trăm blog để đổi tên cơ ạ ? Cái này chỉ chọn từng cái 1. Mất thời gian lắm ạ. Bác chỉnh giúp em với !

Hổng hiểu bạn này nói luôn.Pó tay

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

Blog khác Block trong AutoCAD đấy nhé, viết bài mà như thế thấy khó chịu lắm. Nên sửa lại cho đúng đi 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

Hic. E xin lỗi, ý của em là giả sử có 1000 cái Blog tên là A bi h e muốn đổi tên cả 1000 cái đó. Sau khi em đánh lệnh Lisp, nó cho phép chọn 1000 đối tượng trong 1 lầ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

Hic. E xin lỗi, ý của em là giả sử có 1000 cái Blog tên là A bi h e muốn đổi tên cả 1000 cái đó. Sau khi em đánh lệnh Lisp, nó cho phép chọn 1000 đối tượng trong 1 lần ý ạ !

Bó tay với bạn luôn. Nếu bạn có 1000 hay 1 tỉ cái block tên là A thì bạn chỉ cần đổi tên 1 cái block tên A là tất cả cái kia đổi theo luô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

Bó tay với bạn luôn. Nếu bạn có 1000 hay 1 tỉ cái block tên là A thì bạn chỉ cần đổi tên 1 cái block tên A là tất cả cái kia đổi theo luôn đó.

hic. Bạn không hiểu vấn đề rồi. E xin trình bày rõ là như thế này. Giả sử có 10 cái blog, Em chỉ muốn đổi tên 5 cái thôi, còn 5 cái để nguyên. Cái lisp hiện tại cho phép đổi tên từng đối tượng 1, mỗi lần chạy thì được đổi 1 đối tượng. Em muốn rằng 1 lần chạy có thể đổi tên được n đối tượng.

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

hic. Bạn không hiểu vấn đề rồi. E xin trình bày rõ là như thế này. Giả sử có 10 cái blog, Em chỉ muốn đổi tên 5 cái thôi, còn 5 cái để nguyên. Cái lisp hiện tại cho phép đổi tên từng đối tượng 1, mỗi lần chạy thì được đổi 1 đối tượng. Em muốn rằng 1 lần chạy có thể đổi tên được n đối tượng.

Blog khác Block trong AutoCAD đấy nhé, viết bài mà như thế thấy khó chịu lắm. Nên sửa lại cho đúng đi nhé!

Nếu muốn đổi tên nhiều tên file hãy dùng thử:

 

Flash Renamer v6.3 - Đổi tên nhiều file cùng lúc nhanh chóng

 

flashmain.gif

 

Flash Renamer là một tiện ích tiết kiệm thời gian cho người dùng có một số lượng lớn file, chẳng hạn người dùng máy ảnh số, quản trị website và người thích sưu tập tranh ảnh, phim. Flash Renamer đặt tên lại nhiều file cùng một lúc, hay còn gọi là đặt tên hàng loạt. Với Flash Renamer bạn có thể tự động hóa quá trình đặt tên hàng ngàn file chỉ với 1 click .

 

Sử dụng Flash Renamer để thiết lập in hoa cho tên file của bạn, hay chữ thường hoặc kiểu chữ cho ký tự đầu tiên. Giải nén và đặt tên với tag Mp3 ID3 để dọn dẹp bộ sưu tập âm nhạc của bạn. Tìm và thay thế các chuỗi ký tự trong tên file. Thiết lập ngày và thuộc tính. Xóa bỏ các khoảng trống không mong muốn. Thêm và xóa ký tự tại một vị trí xác định.

 

Quá trình đặt tên theo chuỗi cho phép bạn thêm các chuỗi số vào file name. Bạn có thể xuất các thông tin hữu ích, như chiều rộng/cao, chiều dài, bitrate và framerate trong phim, nhạc & file ảnh, và đưa chúng vào tên file. Và nếu như thế là chưa đủ, Flash Renamer có thể nhận diện định dạng của file mà đuôi file không đúng. Bạn thậm chí có thể sắp xếp bộ sưu tập âm nhạc của bạn theo tên ca sĩ và album.

 

Flash Renamer xử lý cả file và thư mục và hoạt động với mọi phiên bản của Windows. Khung xem trước theo thời gian thực hiển thị tên file mới sẽ trông như thế nào, do đó bạn không phải lo lắng sẽ mắc lỗi. Đừng phí thời gian đặt tên file lại bằng cách thủ công.

 

Home Page: http://www.rlvision.com/flashren/about.asp

 

(Sưu tầm)

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

hic. Bạn không hiểu vấn đề rồi. E xin trình bày rõ là như thế này. Giả sử có 10 cái blog, Em chỉ muốn đổi tên 5 cái thôi, còn 5 cái để nguyên. Cái lisp hiện tại cho phép đổi tên từng đối tượng 1, mỗi lần chạy thì được đổi 1 đối tượng. Em muốn rằng 1 lần chạy có thể đổi tên được n đối tượng.

Mình có 1 cách không dùng lisp hi vọng đáp ứng đc bạn.

Bạn chọn 1 cái block ( B ) nào đó muốn đổi tên, explore nó ra rùi B lại theo tên bạn muốn, dùng lệnh replace B with another B trong express tool là ok. chú ý vị trí base point của B trc và sau giống nhau để không phải chỉnh sửa sau khi replace.

B = block nhé.

Làm đc thì nhớ thanks + mình cái nha^^

  • 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

Mình có 1 cách không dùng lisp hi vọng đáp ứng đc bạn.

Bạn chọn 1 cái block ( B ) nào đó muốn đổi tên, explore nó ra rùi B lại theo tên bạn muốn, dùng lệnh replace B with another B trong express tool là ok. chú ý vị trí base point của B trc và sau giống nhau để không phải chỉnh sửa sau khi replace.

B = block nhé.

Làm đc thì nhớ thanks + mình cái nha^^

Không được bạn ạ ? Vì ở đây là mình không thay thế toàn bộ mà mình chỉ thay thế 1 phần. Lệnh đó không cho chọn vùng áp dụng ?

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 được bạn ạ ? Vì ở đây là mình không thay thế toàn bộ mà mình chỉ thay thế 1 phần. Lệnh đó không cho chọn vùng áp dụng ?

uh nhỉ. sorry vì không giúp đc bạn.

có 1 cách nữa dù rất thủ công nhé. bạn copy base point những B muốn đổi tên sang bản vẽ khác, đổi tên rùi copy về đúng vị trí cũ.

nhưng cho mình hỏi bạn cần đổi tên để làm j vậ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

Cái lisp hiện tại cho phép đổi tên từng đối tượng 1, mỗi lần chạy thì được đổi 1 đối tượng. Em muốn rằng 1 lần chạy có thể đổi tên được n đối tượng.

Nghe bạn nói câu này về lisp sử dụng lệnh Rename anh Tú viết mình bất ngờ quá ^^ Đúng là leejang đây rồi :)

Về vấn đề của bạn, bạn có thể làm qua 2 bước :

1- Tạo block tên mới từ block cũ (explode, tạo mới, hoặc block edit, save block as...)

2- Thay thế block mới vào chỗ các block cũ theo lựa chọn của bạn bằng lisp Matchprop block trong bộ ACV hoặc Vào đây để lấy cái tương tự

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

hic. Bạn không hiểu vấn đề rồi. E xin trình bày rõ là như thế này. Giả sử có 10 cái blog, Em chỉ muốn đổi tên 5 cái thôi, còn 5 cái để nguyên. Cái lisp hiện tại cho phép đổi tên từng đối tượng 1, mỗi lần chạy thì được đổi 1 đối tượng. Em muốn rằng 1 lần chạy có thể đổi tên được n đối tượng.

Bạn thử cái này xem có đúng ý không nhé.

bước1: Chọn block điển hình

bước2: Chon các block muốn đổi tên.

bước3: Nhập tên block mới.

(defun c:dt ()
 (setq oldos (getvar "osmode"))
 (setvar "osmode" 0)
 (command "undo" "be")
 (setq ten (cdr(assoc 2 (entget(car(entsel "\nChon block dien hinh: "))))))
 (princ "\nChon block can doi ten: ")
 (setq	ssc (ssget (list(cons 0 "INSERT")(cons 2 ten)))
tm (getstring "\nNhap ten moi: ")
)
 (command "rename" "b" ten tm)
 (command "copyclip" ssc "")
 (command "block" "block_temp" "0,0" ssc "")
 (command "insert" "block_temp" "0,0" 1 1 1 0 "")
 (setq el (entlast))
 (setq pt (car(acet-ent-geomextents el)))
 (command "undo" "e"
   "undo" 1)
 (command "erase" ssc "")
 (command "pasteclip" pt)
 (setvar "osmode" oldos)
 )

  • 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

Lisp của bạn Tú sau khi đổi được tên thì các block đã bị di chuyển so với điểm chèn. Bạn check lại 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

Lisp của bạn Tú sau khi đổi được tên thì các block đã bị di chuyển so với điểm chèn. Bạn check lại nhé.

Chào Giáp!

Mình đã kiểm tra rồi lisp chay đúng đấy không bị sai đâ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

Bác gp14 nói đúng đó bác ah,khi sửa tên block xong thì block đó bị di chuyển so với vị trí của block,tiện thể cho e hỏi hình như đối với block Att có liên quan tới block động thì không đổi tên được,bác xem lại sửa giúp e với.Thanks.

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ác gp14 nói đúng đó bác ah,khi sửa tên block xong thì block đó bị di chuyển so với vị trí của block,

Xin lỗi các bạn hôm trước mình đã sửa rồi quên up lại nên bị sai tí chút

code fix

(defun c:dt ()
 (setq oldos (getvar "osmode"))
 (setvar "osmode" 0)
 (command "undo" "be")
 (setq ten (cdr(assoc 2 (entget(car(entsel "\nChon block dien hinh: "))))))
 (princ "\nChon block can doi ten: ")
 (setq	ssc (ssget (list(cons 0 "INSERT")(cons 2 ten)))
tm (getstring "\nNhap ten moi: ")
)
 (command "rename" "b" ten tm)
 (command "copyclip" ssc "")
 (command "block" "block_temp" "0,0" ssc "")
 (command "insert" "block_temp" "0,0" 1 1 0)
 (setq el (entlast))
 (setq pt (car(acet-ent-geomextents el)))
 (command "undo" "e"
   "undo" 1)
 (command "erase" ssc "")
 (command "pasteclip" pt)
 (setvar "osmode" oldos)
 )

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

 

Xin lỗi các bạn hôm trước mình đã sửa rồi quên up lại nên bị sai tí chút

code fix

(defun c:dt ()
  (setq oldos (getvar "osmode"))
  (setvar "osmode" 0)
  (command "undo" "be")
  (setq ten (cdr(assoc 2 (entget(car(entsel "\nChon block dien hinh: "))))))
  (princ "\nChon block can doi ten: ")
  (setq	ssc (ssget (list(cons 0 "INSERT")(cons 2 ten)))
	tm (getstring "\nNhap ten moi: ")
	)
  (command "rename" "b" ten tm)
  (command "copyclip" ssc "")
  (command "block" "block_temp" "0,0" ssc "")
  (command "insert" "block_temp" "0,0" 1 1 0)
  (setq el (entlast))
  (setq pt (car(acet-ent-geomextents el)))
  (command "undo" "e"
	   "undo" 1)
  (command "erase" ssc "")
  (command "pasteclip" pt)
  (setvar "osmode" oldos)
  )

Bạn cho hiển thị tên block cũ vào trước đoạn chèn tên block mới thì tốt, dễ kiểm soát (xem hình đính kèm)

1609588_638393552882417_6017030616240096

Mình trích

(vl-load-com)
(or *kpblc-activedoc*
    (setq *kpblc-activedoc* (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of or

(defun c:vla-rename (/ ent name)
  (vla-startundomark *kpblc-activedoc*)
  (if
    (and (not (vl-catch-all-error-p
		(vl-catch-all-apply
		  '(lambda ()
		     (setq ent (car (entsel "\nSelect a block to be renamed")))
		     ) ;_ end of lambda
		  ) ;_ end of vl-catch-all-apply
		) ;_ end of vl-catch-all-error-p
	      ) ;_ end of not
	 ent
	 (= (cdr (assoc 0 (entget ent))) "INSERT")
	 (/= (substr (cdr (assoc 2 (entget ent))) 1 2) "*U")
	 (not (vl-catch-all-error-p
		(vl-catch-all-apply
		  '(lambda ()
		     (setq name	(getstring t
					   (strcat "\nEnter new name <"
						   (cdr (assoc 2 (entget ent)))
						   "> : "
						   ) ;_ end of strcat
					   ) ;_ end of getstring
			   ) ;_ end of setq
		     ) ;_ end of lambda
		  ) ;_ end of vl-catch-all-apply
		) ;_ end of vl-catch-all-error-p
	      ) ;_ end of not
	 (/= (vl-string-trim " " name))
	 ) ;_ end of and
     (if (vl-catch-all-error-p
	   (vl-catch-all-apply
	     '(lambda ()
		(vla-put-name
		  (vla-item (vla-get-blocks *kpblc-activedoc*)
			    (cdr (assoc 2 (entget ent)))
			    ) ;_ end of vla-item
		  name
		  ) ;_ end of vla-put-name
		) ;_ end of lambda
	     ) ;_ end of vl-catch-all-apply
	   ) ;_ end of vl-catch-all-error-p
       (princ (strcat "\nCan't rename a block "
		      (cdr (assoc 2 (entget ent)))
		      " with new name "
		      name
		      ) ;_ end of strcat
	      ) ;_ end of princ
       ) ;_ end of if
     (princ (strcat "\nA error has been catched:"
		    "\nSelection error | Selected entity isn't a block "
		    "| It's a unnamed or dynamic block"
		    ) ;_ end of strcat
	    ) ;_ end of princ
     ) ;_ end of if
  (vla-endundomark *kpblc-activedoc*)
  (princ)
  ) ;_ end of defun 

 

đoạn code có tính năng đó lên cho bạn tham khảo:

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


×