Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
Tuynh

Thay Đổi Hàng Loạt Text Theo Hàng Cột

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

Vâng anh, nếu về thể hiện thì copy và xóa, nhưng do text mẫu và text đích mang thông tin của phần mềm nên nếu copy và xóa thì mất thông tin đó, do vậy em cần là Sau khi quét chọn thì text đích thành text mẫ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

Của bạn đây ^^

 

p/s:

Code chạy đúng với BV mẫu bạn đưa lên.

Khi k/c giữa các cột thay đổi thì "có thể" phải sửa một chút (đã đánh dấu trong code)

 

Con số trong code nhỏ hơn k/c tối thiểu giữa các cột

;Copy content of texts 
(defun c:CCT( / ss lst ss2 lst2 len cmd)
(setq cmd (getvar "cmdecho"))
(setvar "cmdecho" 0)
(prompt "\nChon cac doi tuong *TEXT mau !")
(setq ss (ssget '((0 . "*TEXT"))))
(if ss
	(progn
		(setq lst (H:sort_<x_>y ss))
		(setq len (length lst))
		;;;=====
		(prompt "\nChon cac doi tuong *TEXT dich !")
		(setq ss2 (ssget '((0 . "*TEXT"))))
		(if (and ss2 (= (sslength ss2) len))
			(progn
				(setq lst2 (H:sort_<x_>y ss2))
				(mapcar 'Put_content lst lst2)
			)
			(princ "*** Tap cac text dich ko cung form voi text mau ***")
		)
	)
	(princ "Khong chon duoc text mau !")
)
(setvar "cmdecho" cmd)
(princ)
)
;======================

;;;====================
(defun H:sort_>y(lst_ename_text)
	(if (> (length lst_ename_text) 1) (vl-sort lst_ename_text '(lambda (x y) (> (caddr (assoc 10 (entget x))) (caddr (assoc 10 (entget y)))))) lst_ename_text)
)
;;;====================
(defun H:sort_<x_>y(ss_text / lst hot lst1)
(setq lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss_text)))
	  lst (vl-sort lst '(lambda (x y) (< (cadr (assoc 10 (entget x))) (cadr (assoc 10 (entget y)))))))
(setq hot (car lst)
	  lst1 (cdr lst)
	  lst (list (list hot))
)
(foreach elem lst1
	(if (equal (cadr (assoc 10 (entget elem))) (cadr (assoc 10 (entget hot))) 30) 	;Thay doi k/c cot o so (30) hang nay
		(setq lst (append (reverse (cdr (reverse lst))) (list(append (last lst) (list elem)))))
		(setq lst (append lst (list (list elem)))
			  hot elem)
	)	  ;if
)	  ;for
(apply 'append (mapcar 'H:sort_>y lst))
)
;;;======================================
(defun Put_content(ename_get_cont ename_put_cont / info)
(setq info (entget ename_put_cont))
(entmod (subst (assoc 1 (entget ename_get_cont)) (assoc 1 info) info))
)
  • 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

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  

×