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

chỉ jùm cáh quay hình trong lisp

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

em mới tập đi trong lisp thôi! xin chỉ júp em cái này nha các pac!

Em muốn vẽ một đoạn thẳng trong lisp, rồi cho nó quay theo phương của một đường thẳng khác. Nhưng góc quay lại ko như ý muốn các pac ah! Đây là mấy dòng lệnh em viết nè:

 

(defun c:quay ()

(SETQ PT1 (GETPOINT))

(SETQ PT2 (GETPOINT PT1))

(command "LINE" PT1 PT2 "")

(SETQ PT3 (GETPOINT))

(SETQ PT4 (GETPOINT PT3))

(setq ang (angle PT3 PT4))

(command "rotate" "LAST" "" PT1 ang)

)

 

 

LISP quá đơn giản mà em ko biết nó sai chổ nào. đáng lẽ đoạn thẳng PT1 PT2 phải quay theo một góc bắng góc tạo bởi PT3&PT4 so với trục X chứ. nhưng ko được. xin chỉ júp em. Thanks

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
em mới tập đi trong lisp thôi! xin chỉ júp em cái này nha các pac!

Em muốn vẽ một đoạn thẳng trong lisp, rồi cho nó quay theo phương của một đường thẳng khác. Nhưng góc quay lại ko như ý muốn các pac ah! Đây là mấy dòng lệnh em viết nè:

 

(defun c:quay ()

(SETQ PT1 (GETPOINT))

(SETQ PT2 (GETPOINT PT1))

(command "LINE" PT1 PT2 "")

(SETQ PT3 (GETPOINT))

(SETQ PT4 (GETPOINT PT3))

(setq ang (angle PT3 PT4))

(command "rotate" "LAST" "" PT1 ang)

)

LISP quá đơn giản mà em ko biết nó sai chổ nào. đáng lẽ đoạn thẳng PT1 PT2 phải quay theo một góc bắng góc tạo bởi PT3&PT4 so với trục X chứ. nhưng ko được. xin chỉ júp em. Thanks

Chào lp_hai

Trong lệnh Rotate -> góc được tính bằng đơn vị độ

Cụ thể trong dòng này : (command "rotate" "LAST" "" PT1 ang)

-> Biến ang nhận đơn vị là độ thì mới đúng ý mình được

 

Thế nhưng, trong dòng này của bạn : (setq ang (angle PT3 PT4)) -> Biến ang này nhận đơn vị là Radian

 

-> Ta phải đổi Radian sang độ mới được. Cụ thể dòng này của bạn :

(setq ang (angle PT3 PT4))

phải được thay bằng dòng này :

(setq ang (/ (* 180 (angle PT3 PT4)) pi))

 

thì mới đúng như ý của bạn được

  • Vote tăng 1

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  

×