Thứ Bảy, 1 tháng 3, 2025

Lisp tạo action cho block động | Autolisp for action in dynamic block | AutoLISP Reviewer

Ứng dụng được phát triển/Sưu tầm bởi đội ngũ AutoLISP Thật là đơn giản
   

Thông tin thêm: 👉👉👉

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 MoveAction 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:

    • S10Stretch với DistanceMultiplier = 1
    • S01Stretch với DistanceMultiplier = -1
    • S05Stretch với DistanceMultiplier = -0.5
    • S5Stretch với DistanceMultiplier = 0.5
  • Lệnh Move:

    • M1Move với DistanceMultiplier = 1
    • M01Move với DistanceMultiplier = -1
    • M5Move với DistanceMultiplier = 0.5
    • M05Move với DistanceMultiplier = -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 


1 Thêm các Action Move với DistanceMultiplier chọn trước

Lưu mã sau dưới dạng tệp tin AJS_DynamicActions.lsp
Code:
(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)
)



2 Thêm các Action Stretch với DistanceMultiplier chọn trước

Lưu mã sau dưới dạng tệp tin AJS_DynamicActions.lsp
Code:
(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é! 🚀


Link tải (MediaFire)




---------------------------------------------------------------------------------------------
Ứng dụng được phát triển bởi đội ngũ AutoLISP Thật là đơn giản - Tác giả ứng dụng in D2P

    

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

[QD] LISP DIM CỰC NHANH trong Autocad | Hướng dẫn sử dụng QD1 QD2 QD3 QDA | AutoLISP Reviewer

Ứng dụng được phát triển/Sưu tầm bởi đội ngũ AutoLISP Thật là đơn giản     Thông tin thêm: 👉👉👉