Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
2 replies to this topic

#1 lp_hai

lp_hai

    biết lệnh measure

  • Members
  • PipPipPipPipPipPip
  • 456 Bài viết
Điểm đánh giá: 202 (khá)

Đã gửi 29 May 2010 - 11:33 AM

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
  • 0
Hình đã gửi

#2 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3805 (đỉnh cao)

Đã gửi 29 May 2010 - 02:27 PM

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
  • 1

#3 lp_hai

lp_hai

    biết lệnh measure

  • Members
  • PipPipPipPipPipPip
  • 456 Bài viết
Điểm đánh giá: 202 (khá)

Đã gửi 31 May 2010 - 08:28 AM

thanks pac nhiều nha! để em làm thử cái coi
  • 0
Hình đã gửi