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

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

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

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.com/upfiles/3/118099_thông_s_br.txt

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

 

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.com/upfiles/3/118099_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 ạ????

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

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?

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

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

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

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" )

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

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.

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

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.

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

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!

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

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!

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  

×