20/09/2025

Lisp Scale viewport theo tỉ lệ | SPV SPV0 Scale Viewport | 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: 👉👉👉

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)




---------------------------------------------------------------------------------------------
Ứ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

Lisp Scale viewport theo tỉ lệ | SPV SPV0 Scale Viewport | 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: 👉👉👉