Giải thích cách hoạt động của lệnh:
- Tên lệnh: AJS-ADJUSTLTSCALE (người dùng gõ lệnh này để chạy).
- Chọn đối tượng: Sử dụng ssget để cho phép người dùng chọn các đối tượng trong bản vẽ.
- Nhập tỉ lệ SC: Yêu cầu người dùng nhập một giá trị thực (real number) làm tỉ lệ SC.
- Duyệt qua tập hợp đối tượng:
- Lặp qua từng đối tượng trong tập hợp đã chọn.
- Lấy giá trị linetypescale hiện tại của đối tượng (nếu không có, mặc định là 1.0).
- Nhân giá trị hiện tại với tỉ lệ SC để tính linetypescale mới.
- Sử dụng lệnh CHANGE để cập nhật linetypescale mới cho đối tượng.
- Thông báo kết quả: Sau khi hoàn tất, thông báo cho người dùng biết lệnh đã xong hoặc nếu có lỗi (không chọn đối tượng, không nhập SC).
Cách sử dụng:
- Tải đoạn code vào AutoCAD (dùng APPLOAD hoặc sao chép vào command line).
- Gõ ADJUSTLTSCALE để chạy lệnh.
- Chọn các đối tượng cần điều chỉnh (có thể chọn nhiều đối tượng cùng lúc).
- Nhập tỉ lệ SC (ví dụ: 2 để tăng gấp đôi, 0.5 để giảm một nửa).
- Nhấn Enter để kết thúc.
Lưu ý:
- Lệnh này hoạt động với các đối tượng có thuộc tính linetype (đường thẳng, polyline, v.v.).
- Nếu đối tượng không có linetypescale được định nghĩa, nó sẽ dùng giá trị mặc định là 1.0 để tính toán.
Hy vọng code này đáp ứng yêu cầu của bạn!
1 Thêm class AJS-ADJUSTLTSCALE.lsp
Lưu mã sau dưới dạng tệp tin AJS-ADJUSTLTSCALE.lsp
Code:
(defun C:AJS-ADJUSTLTSCALE (/ ss sc oldscale newscale ent) (vl-load-com) (princ "\nChọn các đối tượng để điều chỉnh linetypescale: ") ; Chọn tập hợp đối tượng (setq ss (ssget)) (if ss (progn ; Nhập tỉ lệ SC (setq sc (getreal "\nNhập tỉ lệ SC: ")) (if sc (progn ; Duyệt qua từng đối tượng trong tập hợp (setq i 0) (repeat (sslength ss) (setq ent (ssname ss i)) ; Lấy linetypescale hiện tại của đối tượng (setq oldscale (if (eq (cdr (assoc 48 (entget ent))) nil) 1.0 (cdr (assoc 48 (entget ent))))) (if (not oldscale) (setq oldscale 1.0)) ; Nếu không có linetypescale, mặc định là 1.0 ; Tính linetypescale mới (setq newscale (* oldscale sc)) ; Đặt lại linetypescale mới cho đối tượng (command "._CHANGE" ent "" "_P" "_LTSCALE" newscale "") (setq i (1+ i)) ) (princ "\nĐã điều chỉnh linetypescale cho tất cả đối tượng được chọn.") ) (princ "\nKhông có tỉ lệ SC được nhập. Lệnh kết thúc.") ) ) (princ "\nKhông có đối tượng nào được chọn. Lệnh kết thúc.") ) (princ "\nAJS - wwww.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