(setq radouter (+ radmid (/ h 4))) ; 计算外径
(setq radinner (- radouter (* h innerdiafactor))) ; 计算内径
(setq threadangle (+ 30 0)) ; 计算齿顶角
(auxithread radouter radmid radinner threadpitch
threadlength threadangle ptStart) ; 调用绘制三维螺纹的子函数
(princ "\n三维螺纹创建完成")
(setvar "osmode" osmold) ; 恢复调用前的osmode系统变量值
(setvar "cmdecho" ocmdold) ; 恢复调用前的cmdecho系统变量值
(princ)
)
(defun auxithread (radouter radmid radinner threadpitch threadlength threadangle ptStart
/ ttal pt1z ang pt1a pt1az pt3a pt1b pt1bz pt3b pttmp1 pttmp2 pttmp3 pttmp4 pttmp5
pttmp6 pttmp7 pttmp8 pttmp9 pttmp10 pttmp11 pttmp12 tstmp startcone endcone)
;(command "undo" "begin") ; 开始undo步骤
(setq ttal (+ (fix (/ (abs threadlength) threadpitch)) 3)
pttmp1 (list (- (car ptStart) (/ radouter 2.0)) (cadr ptStart) (caddr ptStart))
pt1z (list (- (car ptStart) (/ radouter 2.0)) (cadr ptStart) (+ (caddr pttmp1) 1.0))
pttmp2 (polar pttmp1 (/ (* threadangle pi) 180.0) 1)
pttmp3 (list (+ (car pttmp1) radouter) (+ (cadr pttmp1) (/ threadpitch 2.0)) (caddr ptStart))
ang (angle pttmp1 pttmp3)
pt1a (polar pttmp1 (+ ang (/ pi 2.0)) threadpitch)
pt1az (list (car pt1a) (cadr pt1a) (+ (caddr pt1a) 1.0))
pt3a (polar pt1a ang radouter)
pt1b (polar pttmp1 (- ang (/ pi 2.0)) threadpitch)
pt1bz (list (car pt1b) (cadr pt1b) (+ (caddr pt1b) 1.0))
pt3b (polar pt1b ang radouter)
pttmp4 (polar pttmp3 (/ (* (- 180 threadangle) pi) 180.0) 1)
pttmp5 (inters pttmp1 pttmp2 pttmp3 pttmp4 nil)
pttmp6 (list (car pttmp5) (cadr ptStart) (caddr ptStart))
pttmp7 (polar pttmp1 (/ (* (- 360 threadangle) pi) 180.0) 1)
pttmp8 (polar pttmp3 (/ (* (+ 180 threadangle) pi) 180.0) 1)
pttmp9 (inters pttmp1 pttmp7 pttmp3 pttmp8 nil)

