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

Lisp replace nhiều đối tượng 1 lúc

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

 

Em chào các bác. Các bác cho em hỏi có lisp nào hỗ trợ replace 1 lúc nhiều text không ạ. như hình ảnh bên dưới e sẽ phải replace 4 lần, e muốn chỉ phải nhập 1 lượt các find text và replace text rồi nó sẽ tự thay đổi hàng loạt. Em cảm ơn ạ

image.png

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

Đây không phải bài toán Repalce, vì nó không thay thế cái gì cả, mà chỉ là bạn thêm tiền tố có tăng dần, nên chắc chắn không thể dùng lệnh Find của CAD để xử lý. Nếu yêu cầu đúng như bạn chụp ảnh thì cũng không có gì khó, đợi chút minh quick_code
 

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

Quick code cho bạn,
Code lọc các text có cấu trúc (.....) sau đó xử lý. Bạn cần điền tiền tố và số bắt đầu. Như trong hình của bạn thì tiền tố là L1., còn Start là 1. Nếu cần chi tiết hơn hoặc xử lý các trường hợp khác thì bạn nhờ mọi ng trên đây sửa tiếp hoặc liên hệ riêng ai đó để đặt hàng ^^

 

(defun c:foo(/ s pre start dump obj)
(and 
	(setq s (ssget (list (cons 0 "*TEXT")(cons 1 "(*)"))))
	(setq pre (getstring "\nPrefix :"))
	(setq start (getint "\nStart Number:"))
	(setq dump (if (< start 10) "0" ""))
	(foreach obj (acet-ss-to-list s)
		(vla-put-Textstring (setq obj (vlax-ename->vla-object obj))
			(strcat pre dump (itoa start) (vla-get-Textstring obj))
		)			
	)
)
(princ)
)

 

  • Like 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
5 giờ trước, quangcda đã nói:

cái tên lệnh nhìn quen quen!

K hiểu ý câu này lắm, ý là sao ta =)) Ai ở trên đây đều biết lúc quick code t hay học đòi Hacker để tên lệnh tạm là foo cho nó mơ hồ =))

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
16 giờ trước, ketxu đã nói:

Đây không phải bài toán Repalce, vì nó không thay thế cái gì cả, mà chỉ là bạn thêm tiền tố có tăng dần, nên chắc chắn không thể dùng lệnh Find của CAD để xử lý. Nếu yêu cầu đúng như bạn chụp ảnh thì cũng không có gì khó, đợi chút minh quick_code
 

Em cảm ơn bác, nhờ bác mà em mới nghĩ ra, kết hợp với AI em có tạo ra được lisp này, nó có thể đánh tên tự động trong cad theo đúng yêu cầu của em rồi nhưng có 1 số vấn đề sau ạ
- không thể xuất ra bảng excel được. (bảng excel có định dạng như ở dưới hoặc vẽ luôn bảng trong cad)

- Lisp không đánh theo thứ tự từ bé đến lớn (em muốn đánh theo thứ tự dựa vào chiều rộng dầm)

Bác có thể xem giúp em không ạ

image.png

thongkedam.lsp

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ào lúc 16/7/2025 tại 22:13, ketxu đã nói:

Quick code cho bạn,
Code lọc các text có cấu trúc (.....) sau đó xử lý. Bạn cần điền tiền tố và số bắt đầu. Như trong hình của bạn thì tiền tố là L1., còn Start là 1. Nếu cần chi tiết hơn hoặc xử lý các trường hợp khác thì bạn nhờ mọi ng trên đây sửa tiếp hoặc liên hệ riêng ai đó để đặt hàng ^^

 


(defun c:foo(/ s pre start dump obj)
(and 
	(setq s (ssget (list (cons 0 "*TEXT")(cons 1 "(*)"))))
	(setq pre (getstring "\nPrefix :"))
	(setq start (getint "\nStart Number:"))
	(setq dump (if (< start 10) "0" ""))
	(foreach obj (acet-ss-to-list s)
		(vla-put-Textstring (setq obj (vlax-ename->vla-object obj))
			(strcat pre dump (itoa start) (vla-get-Textstring obj))
		)			
	)
)
(princ)
)

 

Xin bác chỉ giáo lisp chuyển text thành mtext ạ.Chuyển mà vẫn giữ nguyên được thứ tự của các text. Và có thể gộp nhiều text thành mtext với 1 lần chọ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

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

×