TĂNG HIỆU SUẤT LÀM VIỆC VỚI DYNAMIC BLOCK BẰNG AUTOLISP
Tự động tạo Action và đặt chỉ số DISTANCEMULTIPLIER
Như các bạn đã biết, Dynamic Block trong AutoCAD mang lại sự linh hoạt nhưng cũng có những hạn chế nhất định, đặc biệt khi làm việc với AutoLISP. Một trong những nguyên nhân là các API hỗ trợ cho đối tượng Dynamic Block chưa được cung cấp đầy đủ.
TỰ ĐỘNG TẠO ACTION VỚI THAM SỐ CHỌN TRƯỚC
Dưới đây là một số lệnh đơn giản giúp bạn tự động tạo Action Move và Action Stretch với tham số DistanceMultiplier được thiết lập trước. Điều này giúp tối ưu quá trình thiết lập Dynamic Block, đặc biệt khi làm việc với số lượng lớn.
Các lệnh được thiết lập như sau:
Lệnh Stretch:
S10
→ Stretch vớiDistanceMultiplier = 1
S01
→ Stretch vớiDistanceMultiplier = -1
S05
→ Stretch vớiDistanceMultiplier = -0.5
S5
→ Stretch vớiDistanceMultiplier = 0.5
Lệnh Move:
M1
→ Move vớiDistanceMultiplier = 1
M01
→ Move vớiDistanceMultiplier = -1
M5
→ Move vớiDistanceMultiplier = 0.5
M05
→ Move vớiDistanceMultiplier = -0.5
LỢI ÍCH CỦA VIỆC TỰ ĐỘNG THIẾT LẬP DISTANCEMULTIPLIER
Thông thường, khi thiết lập Dynamic Block, việc gán DistanceMultiplier thủ công cho từng Action có thể mất nhiều thời gian, đặc biệt khi làm việc với hơn 20 block. Với phương pháp này, quá trình cài đặt sẽ trở nên nhanh chóng và hiệu quả hơn, giúp tiết kiệm thời gian và công sức.
Một số lệnh tạo Action tự động
(defun c:m1 () (command "_BActionTool" "_MOVE" (cadr (entsel)) "_second" (ssget) "") (princ "\nwww.lisp.vn")(princ)) (defun c:m01 () (command "_BActionTool" "_MOVE" (cadr (entsel)) "_second" (ssget) "") (vlax-put-property (vlax-ename->vla-object (entlast)) 'DistanceMultiplier -1.0) (princ "\nwww.lisp.vn")(princ))(defun c:m5 () (command "_BActionTool" "_MOVE" (cadr (entsel)) "_second" (ssget) "") (vlax-put-property (vlax-ename->vla-object (entlast)) 'DistanceMultiplier 0.5)(princ "\nwww.lisp.vn") (princ) )(defun c:m05 () (command "_BActionTool" "_MOVE" (cadr (entsel)) "_second" (ssget) "") (vlax-put-property (vlax-ename->vla-object (entlast)) 'DistanceMultiplier -0.5)
(princ "\nwww.lisp.vn")
(princ)
)
(defun c:s10 ()
(command "_BActionTool" "_Stretch" (cadr (entsel)) "_second" (setq p (getpoint)) (getcorner p) "" (ssget) "")
(princ "\nwww.lisp.vn")
(princ)
)
(defun c:s01 () (command "_BActionTool" "_Stretch" (cadr (entsel)) "_second" (setq p (getpoint)) (getcorner p) "" (ssget) "") (vlax-put-property (vlax-ename->vla-object (entlast)) 'DistanceMultiplier -1.0)
(princ "\nwww.lisp.vn")
(princ)
)
(defun c:s05 ()
(command "_BActionTool" "_Stretch" (cadr (entsel)) "_second" (setq p (getpoint)) (getcorner p) "" (ssget) "")
(vlax-put-property (vlax-ename->vla-object (entlast)) 'DistanceMultiplier -0.5)
(princ "\nwww.lisp.vn")
(princ)
)
(defun c:s5 () (command "_BActionTool" "_Stretch" (cadr (entsel)) "_second" (setq p (getpoint)) (getcorner p) "" (ssget) "") (vlax-put-property (vlax-ename->vla-object (entlast)) 'DistanceMultiplier 0.5) (princ "\nwww.lisp.vn")(princ))
HẸN GẶP Ở BÀI VIẾT TIẾP THEO
Trong bài viết tiếp theo, mình sẽ tiếp tục chia sẻ một số AutoLISP hữu ích cho Dynamic Block. Hãy cùng đón chờ nhé! 🚀
Không có nhận xét nào:
Đăng nhận xét