Involute Curve Autolisp Routine
Involute Curve Autolisp Routine
(OP)
In thread406-103836, which is a couple of years old now, diamondjim provided an Autolisp routine for drawing involute gears in Autocad. The routine works great. However, I wasn't able to follow all the equations in the routine to verify if this draws a true involute. It looks similar to involute equations I have seen, but isn't exactly like the ones I am familiar with. I will use this to creaste an internal spline and am concerned about how it will fit the mating external spline.
Can diamondjim or anyone else verify if the equations here will create a true involute curve.
Thanks.
Phil
Can diamondjim or anyone else verify if the equations here will create a true involute curve.
Thanks.
Phil





RE: Involute Curve Autolisp Routine
Before he returns, few words about his lisp program.
This program creates involute curves for an external tooth.
If you want to use it for an internal tooth, then you have to use the size of the TOOTH SPACE as the "tooth thickness" input.
Check the created geometry for the actual tooth thickness (space) created, I am not sure about that feature of the program and I do not use ACAD. As you obviously know, the tooth thickness/space is measured as a length of an arc on the pitch diameter.
gearguru
RE: Involute Curve Autolisp Routine
There are several involute equations, his is right.
Here below I attached a lisp file which creates involute curve only, it can also create "short" or "long" involute, that means: the curve is not generated from the point on generate line, but some point offset from the line. So the curve generated from inside of base circle, when you set "h" negetive. By this, gear root fillet can be exactly drawn.
;
(defun c:involute ()
(command "_undo" "be")
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(setq q 0)
(setq f 0)
(setq h (getreal "\nDistance Offset:"))
(setq r (getreal "\nRadius of Practical Circle:"))
(setq t (getreal "\nAngle to go:"))
(setq n (getreal "\nAccurancy:")) ;set it in a degital smaller the 1
(setq cent (getpoint "\nCenter of Curve:"))
(if (= h 0) (command "pline" (list (+ (/ r 1) (car cent)) (cadr cent))
(list (+ (/ r 2) (car cent)) (cadr cent)) ""
)
(command "pline" (setq trimpoint (list (+ h r (car cent)) ((if (> h 0) - +) (cadr cent) (/ r 1))))
(list (+ h r (car cent)) ((if (> h 0) - +) (cadr cent) (/ r 2))) ""
)
)
(while (< f (* t (/ pi 180)))
(setq a (atan (* r f) (+ r h)))
(setq ri (/ (+ r h) (cos a)))
(setq q (- f a))
(setq pt0 (polar cent q ri))
(command "pline" "" pt0 "")
(setq f (+ f n))
)
(command "pedit" (entlast) "j" "all" "" "f" "")
(command "circle" cent r)
(setq bs (entlast))
(command "line" cent (list (+ 1 r h (car cent)) (cadr cent)) "")
(setq lt (entlast))
(if (= h 0) (command "trim" bs "" cent "")
(command "trim" lt "" trimpoint "")
)
(command "erase" lt "")
(setvar "osmode" os)
(command "_undo" "e")
(princ)
)
RE: Involute Curve Autolisp Routine
Phil
RE: Involute Curve Autolisp Routine
I am glad the program is of use to you.
I used it for many years to draw profiles
for gear templates etc.
It does have its limitations however near the
base diameter. I tried using more points in
the program but could not find full compatability
in that area so I ended up using I think 19
points as that number has some special significance
to me.