Thứ Hai, 10 tháng 3, 2025

Lisp vẽ nhà siêu tốc | Lisp vui vẻ | 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ải lisp



1 Thêm class VeNha.lsp

Lưu mã sau dưới dạng tệp tin AJS_VeNha.lsp
Code:
(defun C:VeNha (/ p1 p2 N D H rect pt_center pt_wc pt_water txt_height)
	(vl-load-com)
	(setvar "CMDECHO" 0)
	
	; Bước 1: Nhập dữ liệu từ người dùng
	(initget 1)
	(setq N (getint "\nNhập số lượng hình chữ nhật (N): "))
	(initget 1)
	(setq D (getreal "\nNhập chiều dài hình chữ nhật (D): "))
	(initget 1)
	(setq H (getreal "\nNhập chiều cao hình chữ nhật (H): "))
	
	; Bước 2: Chọn điểm gốc để vẽ hình chữ nhật đầu tiên
	(while (not (setq p1 (getpoint "\nChọn điểm gốc để vẽ hình chữ nhật: ")))
		(princ "\nVui lòng chọn điểm gốc!"))
	
	; Bước 3: Vẽ hình chữ nhật đầu tiên
	(setq p2 (list (+ (car p1) D) (+ (cadr p1) H)))
	(command "_RECTANG" p1 p2)
	(setq rect (entlast))
	
	; Bước 4: Array hình chữ nhật theo phương thẳng đứng
	(command "_ARRAY" rect "" "_R" N 1 (* H 1) "") ; Khoảng cách giữa các hình là 2H
	
	; Bước 5: Thêm text ghi chú cho từng hình chữ nhật
	(setq txt_height (/ H 10.0)) ; Chiều cao text dựa trên chiều cao H
	(if (< txt_height 2.5) (setq txt_height 2.5)) ; Đảm bảo text không quá nhỏ
	
	(setq i 0)
	(while (< i N)
		; Tính toán điểm giữa của hình chữ nhật thứ i
		(setq pt_center (list (+ (car p1) (/ D 2.0)) (+ (cadr p1) (* i (* H 1)) (/ H 2.0))))
		; Tính toán điểm góc phải (cho "WC")
		(setq pt_wc (list (- (+ (car p1) D) txt_height) (+ (cadr p1) (* i (* H 1)) (- H txt_height))))
		; Tính toán điểm phía dưới "WC" (cho "Nước ra")
		(setq pt_water (list (car pt_wc) (- (cadr pt_wc) (* txt_height 1.5))))
		
		; Thêm text "DxH" ở giữa hình chữ nhật
		(command "_TEXT" "_J" "_MC" pt_center txt_height 0 (strcat (rtos D 2 0) "x" (rtos H 2 0)))
		
		; Thêm text "WC" ở góc phải
		(command "_TEXT" "_J" "_TR" pt_wc txt_height 0 "WC")
		
		; Vẽ rectangle bao quanh "WC"
		(setq wc_rect_p1 (list (- (car pt_wc) (* txt_height 0.5)) (- (cadr pt_wc) (* txt_height 0.5))))
		(setq wc_rect_p2 (list (+ (car pt_wc) (* txt_height 2.5)) (+ (cadr pt_wc) (* txt_height 1.5))))
		(command "_RECTANG" wc_rect_p1 wc_rect_p2)
		
		; Thêm text "Nước ra" phía dưới "WC"
		(command "_TEXT" "_J" "_TL" wc_rect_p2 txt_height 0 "Nước ra")
		
		(setq i (1+ i))
	)
	
	(setvar "CMDECHO" 1)
	(princ "\nAJS - www.lisp.vn")
	(princ)
)
(princ "\nGõ RECTARRAY để chạy chương trình!")


Link tải (MediaFire)



Nhóm AutoLISP Kiến trúc Nội thất

Tham gia nhóm Zalo AutoLISP Kiến trúc nội thất để cùng chia sẻ, kết nối đam mê!




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

eTransmit trong AutoCAD | Đóng gói và Chuyển giao bản vẽ dwg trong AutoCAD | 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: 👉👉👉