Lệnh SVP0
Scale Viewport theo 1 tỉ lệ Scale cho trước.
Đoạn code đầu tiên được tạo bởi AI [GROK]
Lệnh SVP
Scale Viewport đến tỉ lệ Custom Scale mong muốn. Hệ số Scale đối tượng được tính tự động, dựa trên tỉ lệ Custom Scale mong muốn, chia cho tỉ lệ Custom Scale của từng Viewport.
1 Thêm class [SVP] by lisp.vn.lsp
Lưu mã sau dưới dạng tệp tin [SVP] by lisp.vn.lsp
Code:
; Lệnh để scale hàng loạt Viewport (defun C:SVP (/ ss) (vl-load-com) ; Load ActiveX interface ;Scale theo dung so nhap (defun sleep_osnap ()(setvar "OSMODE" (logior (getvar "OSMODE") 16384))) (defun wake_osnap ()(setvar "OSMODE" (logand (getvar "OSMODE") -16385))) (princ "\nChọn các Viewport để scale: ") (setq ss (ssget '((0 . "VIEWPORT")))) ; Chọn các Viewport (if ss (progn (setq scale_factor (getreal "\nNhập tỉ lệ scale: ")) ; Nhập tỉ lệ scale (if (and scale_factor (> scale_factor 0)) (progn (sleep_osnap) (repeat (sslength ss) (setq vp (ssname ss 0)) ; Lấy Viewport đầu tiên trong tập hợp (setq vp_obj (vlax-ename->vla-object vp)) ; Chuyển sang VLA object (setq old_scale (vlax-get vp_obj 'CustomScale)) ; Tính tâm hình học của Viewport (setq center_point (vlax-get vp_obj 'Center)) (setq new_scale (/ 1.0 scale_factor)) ; Scale Viewport tại tâm hình học (command "_.SCALE" vp "" center_point (/ (/ 1.0 old_scale) (/ 1.0 new_scale))) ; Lấy Customscale hiện tại ; Tính Customscale mới ; Cập nhật Customscale (vlax-put vp_obj 'CustomScale new_scale) (ssdel vp ss) ; Xóa Viewport đã xử lý khỏi tập hợp ) (wake_osnap) (princ "\nĐã scale và cập nhật Customscale cho tất cả Viewport.") ) (princ "\nTỉ lệ scale không hợp lệ!") ) ) (princ "\nKhông có Viewport nào được chọn!") ) (princ "\nFrom lisp.vn") (princ) ) (defun C:SVP0 (/ ss scale_factor vp center_point old_scale new_scale) (vl-load-com) ; Load ActiveX interface (princ "\nChọn các Viewport để scale: ") (setq ss (ssget '((0 . "VIEWPORT")))) ; Chọn các Viewport (if ss (progn (setq scale_factor (getreal "\nNhập tỉ lệ scale: ")) ; Nhập tỉ lệ scale (if (and scale_factor (> scale_factor 0)) (progn (repeat (sslength ss) (setq vp (ssname ss 0)) ; Lấy Viewport đầu tiên trong tập hợp (setq vp_obj (vlax-ename->vla-object vp)) ; Chuyển sang VLA object (setq old_scale (vlax-get vp_obj 'CustomScale)) ; Tính tâm hình học của Viewport (setq center_point (vlax-get vp_obj 'Center)) ; Scale Viewport tại tâm hình học (command "_.SCALE" vp "" center_point scale_factor) ; Lấy Customscale hiện tại ; Tính Customscale mới (setq new_scale (* old_scale scale_factor)) ; Cập nhật Customscale (vlax-put vp_obj 'CustomScale new_scale) (ssdel vp ss) ; Xóa Viewport đã xử lý khỏi tập hợp ) (princ "\nĐã scale và cập nhật Customscale cho tất cả Viewport.") ) (princ "\nTỉ lệ scale không hợp lệ!") ) ) (princ "\nKhông có Viewport nào được chọn!") ) (princ "\nFrom 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