Chuyển block thường sang block Attribute
Chào các bạn, ngày hôm nay AutoLISP Reviewer sẽ hướng dẫn các bạn sử dụng 1 lisp nhỏ, có chức năng chuyển đổi text thành Attribute tag, qua đó, sẽ biến một block thường thành block attribute
Ưu điểm Block Attribute
Như các bạn đã biết attribute trong block có các ưu điểm như
- Dễ dàng chỉnh sửa, thay đổi thông tin
- Có thể thoải mái đối xứng mirror
- Có thể tổng hợp thông tin block theo Attribute
Chuyển đổi block
Vậy làm cách nào để tạo 1 block Attribute từ 1 block thường. Chúng ta sẽ tuần tự thực hiện các bước sau:
Bước 1: Tạo mới 1 block nếu chưa có
Bước 2: Chỉnh sửa block đã tạo bằng lệnh BE (BEDIT). Các bạn lưu ý, đây là lệnh chỉnh sửa block nguyên bản nhất. Nhiều bạn đã quen sử dụng chuột click đúp mà không biết rằng đó chính là lệnh BE này.
Lưu ý, chọn block trước, rồi gõ lệnh BE để không mất công tìm tên block.
Bước 3: Biến đổi text thường thành một định nghĩa Attribute bằng lệnh TXT2ATT
Lisp này bạn có thể tải trên mạng, hoặc trang web lisp.vn. Link tải mình có để trong bài viết.
Các bạn lưu ý, một attribute có 3 thông số cơ bản là Tag Nhãn, Prompt và Default. Trong đó nên lưu ý giá trị Default là giá trị mặc định.
Bước 4: Lưu lại và Đóng block.
Bước 5: Các bạn lưu ý, khi thay đổi Attribute cho block, một công đoạn bắt buộc là phải đồng bộ Sync.
Gõ lệnh ATTSYNC, chọn block để đồng bộ.
Đây là bước bắt buộc mà những người mới làm quen không biết, dẫn đến việc Attribute chưa được cập nhật.
Kết quả chuyển đổi
Sau khi đồng bộ ATTSYNC, các Attribute trong block mới thể hiện đúng. Từ đó, có thể dễ dàng thay đổi thông tin, có thể đối xứng block và Tổng hợp một cách đơn giản.
Tải lisp TXT2ATT
1 Lưu tệp tin txt2att.lsp
(Copy nội dung sau)
Code:
(defun c:txt2att (/ ss ct en ed)
(while (not ss)
(princ "\nSelect TEXT(s) to Convert to ATTDEF(s): ")
(setq ss (ssget "_:L" (list (cons 0 "TEXT"))))
(repeat (setq i (sslength ss))
(setq en (ssname ss (setq i (1- i))))
(setq ed (entget en))
(entmake (list (cons 0 "ATTDEF")
(assoc 8 ed)
(assoc 10 ed)
(assoc 11 ed)
(assoc 7 ed)
(assoc 40 ed)
(assoc 41 ed)
(assoc 50 ed)
(assoc 51 ed)
(cons 70 0)
(assoc 71 ed)
(assoc 72 ed)
(cons 74 (cdr (assoc 73 ed)))
(assoc 210 ed)
(cons 1 (cdr (assoc 1 ed)))
(cons 2 (vl-string-translate " " "_" (cdr (assoc 1 ed))))
(cons 3 (vl-string-translate " " "_" (cdr (assoc 1 ed))))
(if (assoc 6 ed) (assoc 6 ed)'(6 . "BYLAYER"))
(if (assoc 39 ed) (assoc 39 ed)'(39 . 0))
(if (assoc 62 ed) (assoc 62 ed)'(62 . 256)))
)
(entdel en)
)
)
(redraw)
(princ "www.lisp.vn")
(princ)
)
(defun c:att2txt (/ ss ct en ed)
(while (not ss)
(princ "\nSelect ATTDEF(s) to Convert to TEXT(s): ")
(setq ss (ssget "_:L" (list (cons 0 "ATTDEF"))))
(repeat (setq i (sslength ss))
(setq en (ssname ss (setq i (1- i))))
(setq ed (entget en))
(entmake (list (cons 0 "TEXT")
(assoc 8 ed)
(assoc 10 ed)
(assoc 11 ed)
(assoc 7 ed)
(assoc 40 ed)
(assoc 41 ed)
(assoc 50 ed)
(assoc 51 ed)
(assoc 71 ed)
(assoc 72 ed)
(cons 73 (cdr (assoc 74 ed)))
(assoc 210 ed)
(cons 1 (vl-string-translate " " "_" (cdr (assoc 2 ed))))
(if (assoc 6 ed) (assoc 6 ed)'(6 . "BYLAYER"))
(if (assoc 39 ed) (assoc 39 ed)'(39 . 0))
(if (assoc 62 ed) (assoc 62 ed)'(62 . 256)))
)
(entdel en)
)
)
(redraw)
(princ "www.lisp.vn")
(princ)
)
hoặc từ Mediafire: https://www.mediafire.com/file/1kcjvj7v4qnzd17/txt2att.lsp/file
Cảm ơn các bạn đã theo dõi.
---------------------------------------------------------------------------------------------
Mọi thông tin xin liên hệ Fanpage AutoLISP Thật là đơn giản!
Cảm ơn bạn đã theo dõi!
Không có nhận xét nào:
Đăng nhận xét