Đến nội dung


Hình ảnh
- - - - -

xin các anh lisp bộ truyền bánh răng trụ răng thẳng!


  • Please log in to reply
14 replies to this topic

#1 vulinh3392

vulinh3392

    biết pan

  • Members
  • Pip
  • 5 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 01 April 2013 - 11:59 AM

Chào các anh trong forum!!. Có anh nào có lisp của bộ truyền bánh răng trụ răng thẳng không ạ. cho em xin với... em xin cảm ơn các anh ạ!!!

em có thông số của bộ truyền đây ạ, mong các anh giúp đỡ.http://www.cadviet.c..._thông_s_br.txt


  • 0

#2 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 01 April 2013 - 12:17 PM

Chào các anh trong forum!!. Có anh nào có lisp của bộ truyền bánh răng trụ răng thẳng không ạ. cho em xin với... em xin cảm ơn các anh ạ!!!

em có thông số của bộ truyền đây ạ, mong các anh giúp đỡ.http://www.cadviet.c..._thông_s_br.txt

Similar topics from web:
[Tổng Hợp]

Hề hề hề, 

Thông số của bộ truyền đâu ạ????


  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#3 vulinh3392

vulinh3392

    biết pan

  • Members
  • Pip
  • 5 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 01 April 2013 - 02:49 PM

Hề hề hề, 

Thông số của bộ truyền đâu ạ????

http://www.cadviet.c..._thông_s_br.pdf

 đây anh ạ :)


  • 0

#4 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 01 April 2013 - 03:31 PM

Bạn có biết cái lisp là cái j k đã ??


  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#5 Hoan1111

Hoan1111

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2587 Bài viết
Điểm đánh giá: 692 (tốt)

Đã gửi 01 April 2013 - 06:43 PM

Không biết có phải bác em tìm cái này không:

http://www.cadviet.c...h-cai-lisp-nay/

 

http://www.cadviet.c...14276_bai3b.pdf


  • 1

66 Câu Phật Học Cho Cuộc Sống : http://ngocchinh.com...-cho-cuoc-song/

Gió đưa cây cải về trời / Rau răm ở lại chịu lời đắng cay...

 

 


#6 Hoan1111

Hoan1111

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2587 Bài viết
Điểm đánh giá: 692 (tốt)

Đã gửi 01 April 2013 - 06:43 PM

Không biết có phải bác em tìm cái này không:

http://www.cadviet.c...h-cai-lisp-nay/

 

http://www.cadviet.c...14276_bai3b.pdf


  • 0

66 Câu Phật Học Cho Cuộc Sống : http://ngocchinh.com...-cho-cuoc-song/

Gió đưa cây cải về trời / Rau răm ở lại chịu lời đắng cay...

 

 


#7 vulinh3392

vulinh3392

    biết pan

  • Members
  • Pip
  • 5 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 01 April 2013 - 10:09 PM

Bạn có biết cái lisp là cái j k đã ??

hì em viết tắt của từ autolisp. Theo em hiểu thì là phần lập trình chương trình tự động  thiết kế cho 1 đối tượng nào đó trong autocad. như kiểu code trong c/c++ ạ. @@ không biết em hiểu thế đúng không?


  • 0

#8 vulinh3392

vulinh3392

    biết pan

  • Members
  • Pip
  • 5 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 01 April 2013 - 10:15 PM

Không biết có phải bác em tìm cái này không:

http://www.cadviet.c...h-cai-lisp-nay/

 

http://www.cadviet.c...14276_bai3b.pdf

gần giống ... anh ạ. thanks anh nhe!


  • 0

#9 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 02 April 2013 - 09:45 AM

hì em viết tắt của từ autolisp. Theo em hiểu thì là phần lập trình chương trình tự động  thiết kế cho 1 đối tượng nào đó trong autocad. như kiểu code trong c/c++ ạ. @@ không biết em hiểu thế đúng không?

Sai bét . 

Gió nhiệm vụ cho nó làm !!!

Bạn vui lòng tham khảo các bài người khác post yêu cầu hoặc đọc ở Link của mình, cách làm thế nào để người ta biết cái bạn cần ấy! Nhõn cái file, thì chả nói j những người ngoại đạo, bác Bình cũng thấy khó nữa cho xem


  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#10 mr.an1988

mr.an1988

    biết pan

  • Members
  • Pip
  • 8 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 02 April 2013 - 10:22 AM

chào bạn!

mình mới đăng ký diển đàn cadviet bạn có thể úp cho mình xin tài liệu học hoạ viên nha.

mình cảm ơn bạn.


  • 0

#11 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 04 April 2013 - 11:11 PM

gần giống ... anh ạ. thanks anh nhe!

Hề hề hề,

Cái ni có giống không hè???

 

(defun c:brang ( / echo oldos ort p1 m z gak goc R x y toado e1 e3 e4 e5 e6 e7 e8 e9 e10 e0 p0 p1 p2)
(vl-load-com)
(princ "\n DAY LA CHUONG TRINH VE BANH RANG THAN KHAI RANG THANG THEO Z & M")
(setq echo (getvar "cmdecho")  )
(setvar "cmdecho" 0)
(setq oldos (getvar "osmode")  )
(setvar "osmode" 4287)
(setq osm (getvar "osmode")
          ort (getvar "orthomode")  )
(command "undo" "be")
(setq pt (getpoint "\n Chon vi tri tam vong tron co so")
          m (getint "\n Nhap gia tri modun m: ")
          z (getint "\n Nhap so rang: ")
          gak (getint "\n Nhap goc an khop: ")          
          goc 0.0
)
(command "ucs" "n" pt)
(command "ucs" "z" 90)
(if (not gak) (setq gak 20))
(setvar "orthomode" 0)
(command "viewres" "y" 5000)
(command "color" 1)
(setvar "osmode" 0)
(defun dtr (x) (* x (/ pi 180)))
 
(command "spline")
(repeat 46
    (setq  R (/ (* m z (cos (dtr gak))) 2)
              x (+ (* R (cos (dtr goc))) (/ (* pi R goc (sin (dtr goc))) 180))   
              y (- (* R (sin (dtr goc))) (/ (* R pi goc (cos (dtr goc))) 180)) 
             goc (1+ goc)
             toado (list x y)   )
    (command toado)
)
(command "" "" "" )
(setq e1 (entlast))
(command "color" 7)
(command "circle" '(0 0) R)
 
(command "arc" "c" '(0 0) (setq p1 (polar '(0 0) 0 (* 0.5 z m))) "angle" (* 1.5 (/ 360 z)) ) 
(setq e3 (entlast))
(setq p0 (trans (car (acet-geom-intersectwith e1 e3 0)) 0 1))
(command "break" e3 p0 p0)
(command "erase" e3 "")
(setq e3 (entlast))
(setvar "cecolor" "2")
(command "arc" "c" '(0 0) p0 "angle" (* 0.25 (/ 360 z)))
(setq e6 (entlast))
(setvar "cecolor" "7")
(command "arc" "c" '(0 0) (polar '(0 0) 0 (* (+ (* 0.5 z) 1) m)) "angle" 30)
(setq e4 (entlast))
(setq p0 (trans (car (acet-geom-intersectwith e1 e4 0)) 0 1))
(command "break" e1 p0 p0)
(command "erase" (entlast) "")
(command "break" e4 p0 p0)
(command "erase" e4 "")
(setq e4 (entlast))
(command "zoom" "e")
(command "fillet" "r" (* 0.2 m) )
(vl-cmdf ".MATCHPROP" e1 e4 "")
(command "fillet"  e1 e4)
(setq e5 (entlast))
(command "arc" "c" '(0 0) (polar '(0 0) (dtr (- (* 1.5 (/ 360 z))))  (* (- (* 0.5 z) 1.25) m)) "a" (* 1.4 (/ 360 z)))
(setq e7 (entlast))
 
(if (acet-geom-intersectwith e1 e7 2)
    (progn
         (setq p0 (trans (car (acet-geom-intersectwith e1 e7 2)) 0 1))
         (command "extend" e1 "" e7 "")
         (command "break" e1 p0 p0)
         (command "erase" e1"")
         (setq e1 (entlast))
    )
)
(if (> z 30)
    (command "fillet" "r" (* 0.4 m) )
    (command "fillet" "r" (* 1.2 (- (* 0.5 m z (cos (dtr gak))) (* 0.5 m (- z 2.5))))  )
)
(vl-cmdf ".MATCHPROP" e1 e7 "")
(command "fillet" e1 e7 "erase" e7 "")
;;(command "erase" e7 "")
(setq e7 (entlast))
(setq p0 (trans (vlax-curve-getendpoint (vlax-ename->vla-object e6)) 0 1))
(command "mirror" e5 "" p0 '(0 0) "n")
(setq e8 (entlast))
(command "mirror" e7 "" p0 '(0 0) "n")
(setq e9 (entlast))
(command "mirror" e1 "" p0 '(0 0) "n")
(setq e10 (entlast))
(setq p0 (trans (car (acet-geom-intersectwith e4 e8 0)) 0 1) )
(command "break" e4 p0 p0)
(command "erase" (entlast) "")
(command "array" e1 e10 e5 e7 e8 e4 e9 "" "p" '(0 0) z 360 "y")
(command "erase" e3 e6 "")
(setq e0 (entlast))
(setq p1 (trans (vlax-curve-getstartpoint (vlax-ename->vla-object e0)) 0 1)
          p2 (trans (vlax-curve-getendpoint (vlax-ename->vla-object e7)) 0 1) )
(setvar "cecolor" "1")
(command "arc" "c" '(0 0) p1 p2)
(setq e0 (entlast))
(command "array" e0 "" "p" '(0 0) z 360 "y")
(command "linetype" "s" "center" "")
(setvar "cecolor" "2")
(command "ltscale" 10)
(command "circle" '(0 0) (* 0.5 m z))
(command "linetype" "s" "bylayer" "")
 
(command "regen")
(command "zoom" "all")
(command "ucs" "w")
(command "undo" "e")
(setvar "osmode" osm)
(setvar "orthomode" ort)
(setvar "cmdecho" echo)
(princ)
)
(prompt "\n Go lenh Brang de bat dau chuong trinh" )

  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#12 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 05 April 2013 - 09:55 AM

gần giống ... anh ạ. thanks anh nhe!

Hề hề hề,

Cái lisp mình viết trên đây chưa thật sự hoàn chỉnh. Còn có một số lỗi mà mình chưa rõ nguyên nhân. Lỗi xuất hiện do lệnh fillet, có những trường hợp không fillet được mà mình không biết cách khắc phục. Khi chạy lisp thì bị lỗi nhưng nếu dùng CAD fillet thì lại OK ngay. 

Mình cũng đã thử dùng fillet với sự hỗ trợ của pause để chọn đối tượng trên CAD, nhưng khi đó fillet xong thì lisp lại thoát luôn. Vậy nên bì quá. Bác nào có kinh nghiệm xử lý vấn đề này, xin giúp đỡ.

Cụ thể với lisp trên đây, khi số răng z > 130 thì việc fillet bị trục trặc. Hay với m=2, z=103 thì OK nhưng m=4 z=103 thì dính chấu.

Chủ thớt dùng thử và cho ý kiến nhé. Cũng có thể lỗi do bản CAD của mình chăng. 

Các bác khác nếu ai có gợi ý gì xin mạnh dạn giúp đỡ để lisp được hoàn chỉnh hơn.

Cám ơn mọi người đã đọc.


  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#13 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 07 April 2013 - 12:47 AM

gần giống ... anh ạ. thanks anh nhe!

Hề hề hề,
Sau khi mày mò, mình tìm ra giải pháp gỡ bí cho cái lệnh fillet bằng cách xài trực tiếp trên cad để khắc phục việc fillet nhầm. Tuy nhiên người sử dụng cần lưu ý khi chọn các đối tượng để fillet phải chọn tại vị trí gần với đỉnh cần fillet. Thao tác sử dụng lisp như sau:
1/- load lisp.
2/- gõ lệnh Brang để chạy.
3/- Nhập điểm tâm bánh răng
4/- Nhập giá trị mo dun m
5/- Nhập giá trị số răng z
6/- Nhập giá trị góc an khớp. Nếu bỏ qua lisp sẽ nhận góc ăn khớp là 20 độ
7/- Khi lisp thông báo fillet góc đỉnh rang, nhấn OK để tiếp tục
8/- Khi lisp yêu cầu chọn biên dạng thân khai, chọn điểm gần đỉnh răng trên biên dạng thân khai.
9/- Khi lisp yêu cầu chọn cung đỉnh răng, chọn điểm gần đỉnh răng trên cung tròn đỉnh răng.
10/- Làm tương tự với việc fillet chân răng.
11/- Chờ lisp hoàn thành toàn bộ vành răng.
12/- Xem và kiểm tra lại kết quả.
 
Và đây là lisp đã hoàn thiện:

 
(defun c:brang ( / echo oldos ort p1 m z gak goc R x y toado e1 e3 e4 e5 e6 e7 e8 e9 e10 e0 p0 p1 p2 ss)
(vl-load-com)
(princ "\n DAY LA CHUONG TRINH VE BANH RANG THAN KHAI RANG THANG THEO Z & M")
(setq echo (getvar "cmdecho")  )
(setvar "cmdecho" 0)
(setq oldos (getvar "osmode")  )
(setvar "osmode" 4287)
(setq osm (getvar "osmode")
          ort (getvar "orthomode")  )
(command "undo" "be")
(setq pt (getpoint "\n Chon vi tri tam vong tron co so")
          m (getreal "\n Nhap gia tri modun m: ")
          z (getint "\n Nhap so rang: ")
          gak (getint "\n Nhap goc an khop: ")          
          goc 0.0
)
(command "ucs" "n" pt)
(command "ucs" "z" 90)
(if (not gak) (setq gak 20))
(setvar "orthomode" 0)
(command "viewres" "y" 5000)
(command "color" 1)
(setvar "osmode" 0)
(defun dtr (x) (* x (/ pi 180)))
 
(command "spline")
(repeat 46
    (setq  R (/ (* m z (cos (dtr gak))) 2)
              x (+ (* R (cos (dtr goc))) (/ (* pi R goc (sin (dtr goc))) 180))   
              y (- (* R (sin (dtr goc))) (/ (* R pi goc (cos (dtr goc))) 180)) 
             goc (1+ goc)
             toado (list x y)   )
    (command toado)
)
(command "" "" "" )
(setq e1 (entlast))
(command "color" 7)
(command "circle" '(0 0) R)
 
(command "arc" "c" '(0 0) (setq p1 (polar '(0 0) 0 (* 0.5 z m))) "angle" (* 1.5 (/ 360.0 z)) ) 
(setq e3 (entlast))
(setq p0 (trans (car (acet-geom-intersectwith e1 e3 0)) 0 1))
(command "break" e3 p0 p0)
(command "erase" e3 "")
(setq e3 (entlast))
(setvar "cecolor" "2")
(command "arc" "c" '(0 0) p0 "angle" (* 0.25 (/ 360.0 z)))
(setq e6 (entlast))
(setvar "cecolor" "7")
(command "arc" "c" '(0 0) (polar '(0 0) 0 (* (+ (* 0.5 z) 1) m)) "angle" 30)
(setq e4 (entlast))
(setq p0 (trans (car (acet-geom-intersectwith e1 e4 0)) 0 1))
(command "break" e1 p0 p0)
(command "erase" (entlast) "")
(command "break" e4 p0 p0)
(command "erase" e4 "")
(setq e4 (entlast))
(setq ss (ssadd)
          ss (ssadd e1 ss)
          ss (ssadd e4 ss) 
          p1 (car (acet-ss-zoom-extents ss))
          p2 (cadr (acet-ss-zoom-extents ss)) )
(command "zoom" "w" p1 p2)
 
(alert "\n Fillet bien dang dinh rang ")
(setvar "osmode" 512)
(command "fillet" "r" (* 0.2 m) )
(vl-cmdf ".MATCHPROP" e1 e4 "")
(command "fillet"  (entsel "\n Chon bien dang than khai <e1> ")  (entsel "\n Chon cung dinh rang <e4> ") )
(setq e5 (entlast))
(command "arc" "c" '(0 0) (polar '(0 0) (dtr (- (* 1.5 (/ 360.0 z))))  (* (- (* 0.5 z) 1.25) m)) "a" (* 1.4 (/ 360.0 z)))
(setq e7 (entlast))
 
(setq ss (ssadd)
          ss (ssadd e1 ss)
          ss (ssadd e7 ss) 
          p1 (car (acet-ss-zoom-extents ss))
          p2 (cadr (acet-ss-zoom-extents ss)) )
(command "zoom" "w" p1 p2)
(if (acet-geom-intersectwith e1 e7 2)
    (progn
         (setq p0 (trans (car (acet-geom-intersectwith e1 e7 2)) 0 1))
         (command "extend" e1 "" e7 "")
         (command "break" e1 p0 p0)
         (command "erase" e1"")
         (setq e1 (entlast))
    )
)
(alert "\n Fillet bien dang chan rang")
(if (> z 30)
    (command "fillet" "r" (* 0.4 m) )
    (command "fillet" "r" (* 1.2 (- (* 0.5 m z (cos (dtr gak))) (* 0.5 m (- z 2.5))))  )
)
(vl-cmdf ".MATCHPROP" e1 e7 "")
(command "fillet" (entsel "\n Chon bien dang than khai <e1> ") (entsel "\n Chon cung chan rang <e7> ") )
(command "erase" e7 "")
(setq e7 (entlast))
(command "zoom"  "e")
(setvar "osmode" 0)
(setq p0 (trans (vlax-curve-getendpoint (vlax-ename->vla-object e6)) 0 1))
(command "mirror" e5 "" p0 '(0 0) "n")
(setq e8 (entlast))
(command "mirror" e7 "" p0 '(0 0) "n")
(setq e9 (entlast))
(command "mirror" e1 "" p0 '(0 0) "n")
(setq e10 (entlast))
(setq p0 (trans (car (acet-geom-intersectwith e4 e8 0)) 0 1) )
(command "break" e4 p0 p0)
(command "erase" (entlast) "")
(command "array" e1 e10 e5 e7 e8 e4 e9 "" "p" '(0 0) z 360 "y")
(command "erase" e3 e6 "")
(setq e0 (entlast))
(setq p1 (trans (vlax-curve-getstartpoint (vlax-ename->vla-object e0)) 0 1)
          p2 (trans (vlax-curve-getendpoint (vlax-ename->vla-object e7)) 0 1) )
(setvar "cecolor" "1")
(command "arc" "c" '(0 0) p1 p2)
(setq e0 (entlast))
(command "array" e0 "" "p" '(0 0) z 360 "y")
(command "linetype" "s" "center" "")
(setvar "cecolor" "2")
(command "ltscale" 10)
(command "circle" '(0 0) (* 0.5 m z))
(command "linetype" "s" "bylayer" "")
 
(command "regen")
(command "zoom" "all")
(command "ucs" "w")
(command "undo" "e")
(setvar "osmode" osm)
(setvar "orthomode" ort)
(setvar "cmdecho" echo)
(princ)
)
(prompt "\n Go lenh Brang de bat dau chuong trinh" )

 
Lưy ý rằng lisp này chỉ vẽ bánh răng thân khai răng thẳng  với hệ số dịch chỉnh răng bằng 0. Trong trường hợp cần vẽ bánh răng có hệ số dịch chỉnh răng khác 0, cần hiệu chỉnh lại lisp tại các dòng code xác định bán kính vòng tròn cơ sở R, các cung chân răng, đỉnh răng cũng như vòng tròn chia của bánh răng cho phù hợp.
Chúc mọi người thành công.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#14 vicman

vicman

    biết pan

  • Members
  • Pip
  • 6 Bài viết
Điểm đánh giá: -1 (bình thường)

Đã gửi 16 July 2014 - 10:34 AM

Hề hề hề,
Sau khi mày mò, mình tìm ra giải pháp gỡ bí cho cái lệnh fillet bằng cách xài trực tiếp trên cad để khắc phục việc fillet nhầm. Tuy nhiên người sử dụng cần lưu ý khi chọn các đối tượng để fillet phải chọn tại vị trí gần với đỉnh cần fillet. Thao tác sử dụng lisp như sau:
1/- load lisp.
2/- gõ lệnh Brang để chạy.
3/- Nhập điểm tâm bánh răng
4/- Nhập giá trị mo dun m
5/- Nhập giá trị số răng z
6/- Nhập giá trị góc an khớp. Nếu bỏ qua lisp sẽ nhận góc ăn khớp là 20 độ
7/- Khi lisp thông báo fillet góc đỉnh rang, nhấn OK để tiếp tục
8/- Khi lisp yêu cầu chọn biên dạng thân khai, chọn điểm gần đỉnh răng trên biên dạng thân khai.
9/- Khi lisp yêu cầu chọn cung đỉnh răng, chọn điểm gần đỉnh răng trên cung tròn đỉnh răng.
10/- Làm tương tự với việc fillet chân răng.
11/- Chờ lisp hoàn thành toàn bộ vành răng.
12/- Xem và kiểm tra lại kết quả.
 
Và đây là lisp đã hoàn thiện:


 
(defun c:brang ( / echo oldos ort p1 m z gak goc R x y toado e1 e3 e4 e5 e6 e7 e8 e9 e10 e0 p0 p1 p2 ss)
(vl-load-com)
(princ "\n DAY LA CHUONG TRINH VE BANH RANG THAN KHAI RANG THANG THEO Z & M")
(setq echo (getvar "cmdecho")  )
(setvar "cmdecho" 0)
(setq oldos (getvar "osmode")  )
(setvar "osmode" 4287)
(setq osm (getvar "osmode")
          ort (getvar "orthomode")  )
(command "undo" "be")
(setq pt (getpoint "\n Chon vi tri tam vong tron co so")
          m (getreal "\n Nhap gia tri modun m: ")
          z (getint "\n Nhap so rang: ")
          gak (getint "\n Nhap goc an khop: ")          
          goc 0.0
)
(command "ucs" "n" pt)
(command "ucs" "z" 90)
(if (not gak) (setq gak 20))
(setvar "orthomode" 0)
(command "viewres" "y" 5000)
(command "color" 1)
(setvar "osmode" 0)
(defun dtr (x) (* x (/ pi 180)))
 
(command "spline")
(repeat 46
    (setq  R (/ (* m z (cos (dtr gak))) 2)
              x (+ (* R (cos (dtr goc))) (/ (* pi R goc (sin (dtr goc))) 180))   
              y (- (* R (sin (dtr goc))) (/ (* R pi goc (cos (dtr goc))) 180)) 
             goc (1+ goc)
             toado (list x y)   )
    (command toado)
)
(command "" "" "" )
(setq e1 (entlast))
(command "color" 7)
(command "circle" '(0 0) R)
 
(command "arc" "c" '(0 0) (setq p1 (polar '(0 0) 0 (* 0.5 z m))) "angle" (* 1.5 (/ 360.0 z)) ) 
(setq e3 (entlast))
(setq p0 (trans (car (acet-geom-intersectwith e1 e3 0)) 0 1))
(command "break" e3 p0 p0)
(command "erase" e3 "")
(setq e3 (entlast))
(setvar "cecolor" "2")
(command "arc" "c" '(0 0) p0 "angle" (* 0.25 (/ 360.0 z)))
(setq e6 (entlast))
(setvar "cecolor" "7")
(command "arc" "c" '(0 0) (polar '(0 0) 0 (* (+ (* 0.5 z) 1) m)) "angle" 30)
(setq e4 (entlast))
(setq p0 (trans (car (acet-geom-intersectwith e1 e4 0)) 0 1))
(command "break" e1 p0 p0)
(command "erase" (entlast) "")
(command "break" e4 p0 p0)
(command "erase" e4 "")
(setq e4 (entlast))
(setq ss (ssadd)
          ss (ssadd e1 ss)
          ss (ssadd e4 ss) 
          p1 (car (acet-ss-zoom-extents ss))
          p2 (cadr (acet-ss-zoom-extents ss)) )
(command "zoom" "w" p1 p2)
 
(alert "\n Fillet bien dang dinh rang ")
(setvar "osmode" 512)
(command "fillet" "r" (* 0.2 m) )
(vl-cmdf ".MATCHPROP" e1 e4 "")
(command "fillet"  (entsel "\n Chon bien dang than khai <e1> ")  (entsel "\n Chon cung dinh rang <e4> ") )
(setq e5 (entlast))
(command "arc" "c" '(0 0) (polar '(0 0) (dtr (- (* 1.5 (/ 360.0 z))))  (* (- (* 0.5 z) 1.25) m)) "a" (* 1.4 (/ 360.0 z)))
(setq e7 (entlast))
 
(setq ss (ssadd)
          ss (ssadd e1 ss)
          ss (ssadd e7 ss) 
          p1 (car (acet-ss-zoom-extents ss))
          p2 (cadr (acet-ss-zoom-extents ss)) )
(command "zoom" "w" p1 p2)
(if (acet-geom-intersectwith e1 e7 2)
    (progn
         (setq p0 (trans (car (acet-geom-intersectwith e1 e7 2)) 0 1))
         (command "extend" e1 "" e7 "")
         (command "break" e1 p0 p0)
         (command "erase" e1"")
         (setq e1 (entlast))
    )
)
(alert "\n Fillet bien dang chan rang")
(if (> z 30)
    (command "fillet" "r" (* 0.4 m) )
    (command "fillet" "r" (* 1.2 (- (* 0.5 m z (cos (dtr gak))) (* 0.5 m (- z 2.5))))  )
)
(vl-cmdf ".MATCHPROP" e1 e7 "")
(command "fillet" (entsel "\n Chon bien dang than khai <e1> ") (entsel "\n Chon cung chan rang <e7> ") )
(command "erase" e7 "")
(setq e7 (entlast))
(command "zoom"  "e")
(setvar "osmode" 0)
(setq p0 (trans (vlax-curve-getendpoint (vlax-ename->vla-object e6)) 0 1))
(command "mirror" e5 "" p0 '(0 0) "n")
(setq e8 (entlast))
(command "mirror" e7 "" p0 '(0 0) "n")
(setq e9 (entlast))
(command "mirror" e1 "" p0 '(0 0) "n")
(setq e10 (entlast))
(setq p0 (trans (car (acet-geom-intersectwith e4 e8 0)) 0 1) )
(command "break" e4 p0 p0)
(command "erase" (entlast) "")
(command "array" e1 e10 e5 e7 e8 e4 e9 "" "p" '(0 0) z 360 "y")
(command "erase" e3 e6 "")
(setq e0 (entlast))
(setq p1 (trans (vlax-curve-getstartpoint (vlax-ename->vla-object e0)) 0 1)
          p2 (trans (vlax-curve-getendpoint (vlax-ename->vla-object e7)) 0 1) )
(setvar "cecolor" "1")
(command "arc" "c" '(0 0) p1 p2)
(setq e0 (entlast))
(command "array" e0 "" "p" '(0 0) z 360 "y")
(command "linetype" "s" "center" "")
(setvar "cecolor" "2")
(command "ltscale" 10)
(command "circle" '(0 0) (* 0.5 m z))
(command "linetype" "s" "bylayer" "")
 
(command "regen")
(command "zoom" "all")
(command "ucs" "w")
(command "undo" "e")
(setvar "osmode" osm)
(setvar "orthomode" ort)
(setvar "cmdecho" echo)
(princ)
)
(prompt "\n Go lenh Brang de bat dau chuong trinh" )

 
Lưy ý rằng lisp này chỉ vẽ bánh răng thân khai răng thẳng  với hệ số dịch chỉnh răng bằng 0. Trong trường hợp cần vẽ bánh răng có hệ số dịch chỉnh răng khác 0, cần hiệu chỉnh lại lisp tại các dòng code xác định bán kính vòng tròn cơ sở R, các cung chân răng, đỉnh răng cũng như vòng tròn chia của bánh răng cho phù hợp.
Chúc mọi người thành công.

Chào bạn, khi sử dụng lisp của bạn nếu mình nhập góc ăn khớp là 14.5 độ thì không được nhỉ?, có thể chỉ giúp mình được không?

thanks!


  • 0

#15 vicman

vicman

    biết pan

  • Members
  • Pip
  • 6 Bài viết
Điểm đánh giá: -1 (bình thường)

Đã gửi 16 July 2014 - 10:37 AM

Hề hề hề,
Sau khi mày mò, mình tìm ra giải pháp gỡ bí cho cái lệnh fillet bằng cách xài trực tiếp trên cad để khắc phục việc fillet nhầm. Tuy nhiên người sử dụng cần lưu ý khi chọn các đối tượng để fillet phải chọn tại vị trí gần với đỉnh cần fillet. Thao tác sử dụng lisp như sau:
1/- load lisp.
2/- gõ lệnh Brang để chạy.
3/- Nhập điểm tâm bánh răng
4/- Nhập giá trị mo dun m
5/- Nhập giá trị số răng z
6/- Nhập giá trị góc an khớp. Nếu bỏ qua lisp sẽ nhận góc ăn khớp là 20 độ
7/- Khi lisp thông báo fillet góc đỉnh rang, nhấn OK để tiếp tục
8/- Khi lisp yêu cầu chọn biên dạng thân khai, chọn điểm gần đỉnh răng trên biên dạng thân khai.
9/- Khi lisp yêu cầu chọn cung đỉnh răng, chọn điểm gần đỉnh răng trên cung tròn đỉnh răng.
10/- Làm tương tự với việc fillet chân răng.
11/- Chờ lisp hoàn thành toàn bộ vành răng.
12/- Xem và kiểm tra lại kết quả.
 
Và đây là lisp đã hoàn thiện:


 
(defun c:brang ( / echo oldos ort p1 m z gak goc R x y toado e1 e3 e4 e5 e6 e7 e8 e9 e10 e0 p0 p1 p2 ss)
(vl-load-com)
(princ "\n DAY LA CHUONG TRINH VE BANH RANG THAN KHAI RANG THANG THEO Z & M")
(setq echo (getvar "cmdecho")  )
(setvar "cmdecho" 0)
(setq oldos (getvar "osmode")  )
(setvar "osmode" 4287)
(setq osm (getvar "osmode")
          ort (getvar "orthomode")  )
(command "undo" "be")
(setq pt (getpoint "\n Chon vi tri tam vong tron co so")
          m (getreal "\n Nhap gia tri modun m: ")
          z (getint "\n Nhap so rang: ")
          gak (getint "\n Nhap goc an khop: ")          
          goc 0.0
)
(command "ucs" "n" pt)
(command "ucs" "z" 90)
(if (not gak) (setq gak 20))
(setvar "orthomode" 0)
(command "viewres" "y" 5000)
(command "color" 1)
(setvar "osmode" 0)
(defun dtr (x) (* x (/ pi 180)))
 
(command "spline")
(repeat 46
    (setq  R (/ (* m z (cos (dtr gak))) 2)
              x (+ (* R (cos (dtr goc))) (/ (* pi R goc (sin (dtr goc))) 180))   
              y (- (* R (sin (dtr goc))) (/ (* R pi goc (cos (dtr goc))) 180)) 
             goc (1+ goc)
             toado (list x y)   )
    (command toado)
)
(command "" "" "" )
(setq e1 (entlast))
(command "color" 7)
(command "circle" '(0 0) R)
 
(command "arc" "c" '(0 0) (setq p1 (polar '(0 0) 0 (* 0.5 z m))) "angle" (* 1.5 (/ 360.0 z)) ) 
(setq e3 (entlast))
(setq p0 (trans (car (acet-geom-intersectwith e1 e3 0)) 0 1))
(command "break" e3 p0 p0)
(command "erase" e3 "")
(setq e3 (entlast))
(setvar "cecolor" "2")
(command "arc" "c" '(0 0) p0 "angle" (* 0.25 (/ 360.0 z)))
(setq e6 (entlast))
(setvar "cecolor" "7")
(command "arc" "c" '(0 0) (polar '(0 0) 0 (* (+ (* 0.5 z) 1) m)) "angle" 30)
(setq e4 (entlast))
(setq p0 (trans (car (acet-geom-intersectwith e1 e4 0)) 0 1))
(command "break" e1 p0 p0)
(command "erase" (entlast) "")
(command "break" e4 p0 p0)
(command "erase" e4 "")
(setq e4 (entlast))
(setq ss (ssadd)
          ss (ssadd e1 ss)
          ss (ssadd e4 ss) 
          p1 (car (acet-ss-zoom-extents ss))
          p2 (cadr (acet-ss-zoom-extents ss)) )
(command "zoom" "w" p1 p2)
 
(alert "\n Fillet bien dang dinh rang ")
(setvar "osmode" 512)
(command "fillet" "r" (* 0.2 m) )
(vl-cmdf ".MATCHPROP" e1 e4 "")
(command "fillet"  (entsel "\n Chon bien dang than khai <e1> ")  (entsel "\n Chon cung dinh rang <e4> ") )
(setq e5 (entlast))
(command "arc" "c" '(0 0) (polar '(0 0) (dtr (- (* 1.5 (/ 360.0 z))))  (* (- (* 0.5 z) 1.25) m)) "a" (* 1.4 (/ 360.0 z)))
(setq e7 (entlast))
 
(setq ss (ssadd)
          ss (ssadd e1 ss)
          ss (ssadd e7 ss) 
          p1 (car (acet-ss-zoom-extents ss))
          p2 (cadr (acet-ss-zoom-extents ss)) )
(command "zoom" "w" p1 p2)
(if (acet-geom-intersectwith e1 e7 2)
    (progn
         (setq p0 (trans (car (acet-geom-intersectwith e1 e7 2)) 0 1))
         (command "extend" e1 "" e7 "")
         (command "break" e1 p0 p0)
         (command "erase" e1"")
         (setq e1 (entlast))
    )
)
(alert "\n Fillet bien dang chan rang")
(if (> z 30)
    (command "fillet" "r" (* 0.4 m) )
    (command "fillet" "r" (* 1.2 (- (* 0.5 m z (cos (dtr gak))) (* 0.5 m (- z 2.5))))  )
)
(vl-cmdf ".MATCHPROP" e1 e7 "")
(command "fillet" (entsel "\n Chon bien dang than khai <e1> ") (entsel "\n Chon cung chan rang <e7> ") )
(command "erase" e7 "")
(setq e7 (entlast))
(command "zoom"  "e")
(setvar "osmode" 0)
(setq p0 (trans (vlax-curve-getendpoint (vlax-ename->vla-object e6)) 0 1))
(command "mirror" e5 "" p0 '(0 0) "n")
(setq e8 (entlast))
(command "mirror" e7 "" p0 '(0 0) "n")
(setq e9 (entlast))
(command "mirror" e1 "" p0 '(0 0) "n")
(setq e10 (entlast))
(setq p0 (trans (car (acet-geom-intersectwith e4 e8 0)) 0 1) )
(command "break" e4 p0 p0)
(command "erase" (entlast) "")
(command "array" e1 e10 e5 e7 e8 e4 e9 "" "p" '(0 0) z 360 "y")
(command "erase" e3 e6 "")
(setq e0 (entlast))
(setq p1 (trans (vlax-curve-getstartpoint (vlax-ename->vla-object e0)) 0 1)
          p2 (trans (vlax-curve-getendpoint (vlax-ename->vla-object e7)) 0 1) )
(setvar "cecolor" "1")
(command "arc" "c" '(0 0) p1 p2)
(setq e0 (entlast))
(command "array" e0 "" "p" '(0 0) z 360 "y")
(command "linetype" "s" "center" "")
(setvar "cecolor" "2")
(command "ltscale" 10)
(command "circle" '(0 0) (* 0.5 m z))
(command "linetype" "s" "bylayer" "")
 
(command "regen")
(command "zoom" "all")
(command "ucs" "w")
(command "undo" "e")
(setvar "osmode" osm)
(setvar "orthomode" ort)
(setvar "cmdecho" echo)
(princ)
)
(prompt "\n Go lenh Brang de bat dau chuong trinh" )

 
Lưy ý rằng lisp này chỉ vẽ bánh răng thân khai răng thẳng  với hệ số dịch chỉnh răng bằng 0. Trong trường hợp cần vẽ bánh răng có hệ số dịch chỉnh răng khác 0, cần hiệu chỉnh lại lisp tại các dòng code xác định bán kính vòng tròn cơ sở R, các cung chân răng, đỉnh răng cũng như vòng tròn chia của bánh răng cho phù hợp.
Chúc mọi người thành công.

Chào bạn! Sao mình không nhập được góc 14.5 độ nhỉ? thanks!


  • 0