Lệnh T2Z
Move Text về cao độ Z = giá trị text
1 Thêm class T2Z by lisp.vn.lsp
Lưu mã sau dưới dạng tệp tin T2Z by lisp.vn.lsp
Code:
(defun c:T2Z (/ ss i ent pnt txt val new_pnt)
(princ "\nChọn Text để đưa về cao độ thực (Z)...")
(setq ss (ssget '((0 . "TEXT,MTEXT"))))
(if ss
(progn
(setq i 0)
(repeat (sslength ss)
(setq ent (entget (ssname ss i)))
(setq pnt (cdr (assoc 10 ent))) ; Lấy tọa độ hiện tại (X Y Z)
(setq txt (cdr (assoc 1 ent))) ; Lấy giá trị chữ
;; Chuyển nội dung text thành số thực
(setq val (distof txt))
(if val
(progn
;; Tạo tọa độ mới với Z = giá trị text
(setq new_pnt (list 10 (car pnt) (cadr pnt) val))
;; Cập nhật lại thực thể Text bằng entmod
(setq ent (subst new_pnt (assoc 10 ent) ent))
(entmod ent)
(setq i (1+ i))
)
)
)
(princ (strcat "\nĐã cập nhật cao độ Z cho " (itoa i) " đối tượng."))
)
(princ "\nKhông chọn được đối tượng nào.")
)
(princ "\nCreate by lisp.vn")
(princ)
)Lệnh T2P
Vẽ 1 point có cao độ bằng giá trị Text chọn.
1 Thêm class T2P by lisp.vn.lsp
Lưu mã sau dưới dạng tệp tin T2P by lisp.vn.lsp
Code:
(defun c:T2P (/ ss i ent pnt txt val)
(princ "\nChọn các đối tượng Text để chuyển thành Point...")
(setq ss (ssget '((0 . "TEXT,MTEXT")))) ; Chỉ chọn Text hoặc MText
(if ss
(progn
(setq i 0)
(repeat (sslength ss)
(setq ent (entget (ssname ss i)))
(setq pnt (cdr (assoc 10 ent))) ; Lấy tọa độ điểm chèn (X Y Z)
(setq txt (cdr (assoc 1 ent))) ; Lấy nội dung Text
;; Chuyển nội dung text thành số thực
(setq val (distof txt))
(if val
(progn
;; Tạo điểm Point mới với X, Y giữ nguyên và Z = val
(entmake (list
'(0 . "POINT")
(list 10 (car pnt) (cadr pnt) val)
)
)
)
)
(setq i (1+ i))
)
(princ (strcat "\nĐã chuyển đổi thành công " (itoa i) " điểm."))
)
(princ "\nKhông tìm thấy đối tượng Text nào.")
)
(princ "\nCreate by lisp.vn")
(princ)
)Link tải (MediaFire)
---------------------------------------------------------------------------------------------
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