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

[Yêu cầu] Lisp vẽ đường cong CYCLOID và TROCHOID

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

Mình đã tìm lisp này nhưng không thấy. Mình có tìm được tài liệu của BKDN hướng dẫn nhưng mình ko biết về viết lisp, copy vào thì ko dùng đc.

Nhờ các bạn trên cadviet viết giúp lisp này. hoặc xem lại hộ mình cái lisp này.

Mình cảm ơn!

(defun C:CYTROID ()
 (princ
         "\nDAY LA CHUONG TRINH VE DUONG CONG CYCLOID VA TROCHOID"
(  
(setq echo (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setvar "osmode" 4287)
(setq  Osm  (getvar "osmode")
Ort  (getvar "orthomode")
(  
(setq org  (getpoint "\nNhap goc cua he truc toa do: ")
(
(command "UCS" "N" org)
(setq an  (getdist "\nNhap goc quay cua he truc toa do quanh truc Z <0>: " )
(  
(command "UCS" "Z" an)
(setq a  (getdist "\nNhap ban kinh duong tron lan: ")
(
(setq P1 (polar '(0 0) (/  pi  2)  a)
(
(initget 1)
(setq ang  (getint "\nNhap goc quay cua ban kinh duong tron lan: ")
(
(setq goc 0.0)
(setvar "orthomode" 0)
(command "undo" "be")
(command "Viewres" "" 5000)
(command "color" 1)
(setvar "osmode" 0)
(defun dtr (x) (* x (/ pi 180)))
(defun CYCLO ()
    (command "spline")
(repeat Ang
      (setq  X  (* a
(- (/  (* pi goc) 180)
    (sin (dtr goc))
(
(       
(       
(setq  Y  (* a
(- 1
   (cos (dtr goc))
(
(       
(       
(setq goc (+ goc 1))
(setq Toado (list X Y))
(command Toado)
(     
(setq  X  (* a
       (- (/  (* pi goc) 180)
  (sin (dtr goc))
(        
(     
(     
(setq  Y  (* a
       (- 1
  (cos (dtr goc))
(        
(     
(     
(setq Toado (list X Y))
(command Toado)
(command "" "" "")
(Command "Circle" P1 a)
(command  "line" '(0 0) P1 "")
 );K?t thúc defun1
(defun TROCHO ()
(setq b    (getdist 
                               "\nNhap khoang cach diem bat dau tao duong trochoid toi tam duong tron lan: ")
           P2   (polar P1 (- (* 0.5 pi)) B)
(      
    (command "spline")
   (repeat Ang
      (setq  X  (- (* a
(/  (* pi goc) 180)
(
(* b
(sin (dtr goc)
(
(
(
        (setq  Y  (- a
(* b
(cos (dtr goc) )
(
(       
(       
(setq goc (+ goc 1))
(setq Toado (list X Y))
(command Toado)
(     
(setq  X  (- (* a
(/  (* pi goc) 180)
(
(* b
(sin (dtr goc))
(
(
(     
(setq  Y  (- a
(* b
 (cos (dtr goc))
(
(    
(     
(setq Toado (list X Y))
(command Toado)
(command "" "" "")
(Command "Circle" P1 a)
(command  "line" P1 P2 "")
 );K?t thúc defun2
(initget 1 "Cycloid Trochoid eXit")
(Setq CT (getkword "\nNhap mot tuy chon [Cycloid/Trochoid/eXit]: ")
(
(Cond
    ((= "Cycloid" CT) (CYCLO))
((= "Trochoid" CT) (TROCHO))
((= "eXit" CT)
     (princ "\nThoat chuong trinh")
(
(  
(command "Regen")
 (command "Zoom" "all")
(command "ucs" "")
(command "undo" "e")
(setvar "osmode" osm)
(setvar "orthomode" ort)
(setvar "cmdecho" echo)
(princ)
); Ket thuc chuong trinh

  • Vote giảm 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

Mình k biết nó thực hiện như thế nào, chỉ thấy những chỗ đáng ra đóng ngoặc thì nó lại thành mở ngoặc, sửa lại cho bạn cho đúng cú pháp thôi ^^

(defun C:CYTROID ()
(princ "\nDAY LA CHUONG TRINH VE DUONG CONG CYCLOID VA TROCHOID")
(setq echo (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setvar "osmode" 4287)
(setq  Osm  (getvar "osmode")
	Ort  (getvar "orthomode")
	org  (getpoint "\nNhap goc cua he truc toa do: ")
)
(command "UCS" "N" org)
(setq an  (getdist "\nNhap goc quay cua he truc toa do quanh truc Z <0>: " )) 
(command "UCS" "Z" an)
(setq a  (getdist "\nNhap ban kinh duong tron lan: ")
	P1 (polar '(0 0) (/  pi  2)  a))
(initget 1)
(setq ang  (getint "\nNhap goc quay cua ban kinh duong tron lan: ")
	goc 0.0)
(setvar "orthomode" 0)
(command "undo" "be")
(command "Viewres" "" 5000)
(command "color" 1)
(setvar "osmode" 0)
(defun dtr (x) (* x (/ pi 180)))
(defun CYCLO ()
    (command "spline")
(repeat Ang 
(setq  X  (* a (- (/  (* pi goc) 180) (sin (dtr goc))))
		Y  (* a (- 1(cos (dtr goc))))
		goc (+ goc 1)
	Toado (list X Y)
)
(command Toado)
)    
(setq  X  (* a       (- (/  (* pi goc) 180) (sin (dtr goc)))))   
(setq  Y  (* a
       (- 1
  (cos (dtr goc))
)))    
(setq Toado (list X Y))
(command Toado)
(command "" "" "")
(Command "Circle" P1 a)
(command  "line" '(0 0) P1 "")
 );K?t thúc defun1
(defun TROCHO ()
(setq b    (getdist 
                               "\nNhap khoang cach diem bat dau tao duong trochoid toi tam duong tron lan: ")
           P2   (polar P1 (- (* 0.5 pi)) B)
)

    (command "spline")
   (repeat Ang
      (setq  X  (- (* a (/  (* pi goc) 180)
)
(* b
(sin (dtr goc)))))

        (setq  Y  (- a
(* b
(cos (dtr goc) )
)))     
(setq goc (+ goc 1))
(setq Toado (list X Y))
(command Toado)
)    
(setq  X  (- (* a
(/  (* pi goc) 180)
)
(* b
(sin (dtr goc))
)))    
(setq  Y  (- a
(* b
 (cos (dtr goc))
)))   
(setq Toado (list X Y))
(command Toado)
(command "" "" "")
(Command "Circle" P1 a)
(command  "line" P1 P2 "")
 );K?t thúc defun2
(initget 1 "Cycloid Trochoid eXit")
(Setq CT (getkword "\nNhap mot tuy chon [Cycloid/Trochoid/eXit]: "))
(Cond
    ((= "Cycloid" CT) (CYCLO))
((= "Trochoid" CT) (TROCHO))
((= "eXit" CT)
     (princ "\nThoat chuong trinh")
)
)  
(command "Regen")
 (command "Zoom" "all")
(command "ucs" "")
(command "undo" "e")
(setvar "osmode" osm)
(setvar "orthomode" ort)
(setvar "cmdecho" echo)
(princ)
)

  • 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  

×