Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
duyhung

Viết lisp nhưng chưa được ổn

Các bài được khuyến nghị

Tình hình là mình muốn viết 1 lisp tính toán số lượng bóng đèn có thể bố trí theo trục x và trục y, với 2 điều kiện đặt ra:

- Khoảng cách đó phải cách nhau = kc trần giả

- Tổng Số lượng bóng phải > số bóng đã tính toán.

Cái giải thuật mình đưa ra chưa hay lắm vì đang lẫn lộn, mình up lên mong mọi người cho ý kiến và giải quyết.

Ý tưởng của mình:

 

(defun c:test ()
(setvar "CMDECHO" 0)
(setq cskc (list 1200 1800 2400 3000 3600 4200 4800 5400); Khoang cach giua cac den tuy vao tran gia
p1 (getpoint "\nChon diem thu nhat: ")
p2 (getcorner p1 "\nChon diem thu hai: ")
)
(setq	vx (abs (- (car p1) (car p2)))
	vy (abs (- (cadr p1) (cadr p2)))
	i 0 j 0
	sl (length cskc)
	list1 '()
)
(setq a (getreal "\nCho so bong can de tinh: "))
(while (< i sl)
(setq kc (nth i cskc))
(setq x (fix (/ vx kc)))
		(while (< j sl)
				(setq kc1 (nth j cskc))
				(setq y (fix (/ vy kc1)))
				(setq tich (* x y))
				(if (> tich a) 
					(setq list1 (append list1 (list tich)))
				)
				(setq j (1+ j))
		)
)
(kiem)
(defun kiem ()
(while (< i sl)
(setq kc (nth i cskc))
(progn (setq x (fix (/ vx kc)))
		(while (setq kc1 (nth j cskc))
				(setq y (fix (/ vy kc1)))
				(setq tich (* x y))
				(if (= tich (min list1) )
					(princ "Pro")
				)
				(setq j (1+ j))
		)
)
)
(princ (strcat "\nTruc x co the bo tri: " (rtos x 2 0) "Bong"))
(princ (strcat "\nTruc y co the bo tri: " (rtos y 2 0) "Bong"))
(princ (strcat "\nSo bong tren mat bang: " (rtos (apply 'min list1) 2 0) "Bong"))
(setvar "CMDECHO" 1)
(princ)
)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay
Đăng nhập để thực hiện theo  

×