用户名密码 太空模具网  | 宇宙五金网 | 星星电子网 | 银河汽车网 | 人才频道 | 技术休闲
 
首    页
价格行情
供求商机 产 品 库
求职信息 招聘信息
企 业 库 机床百科 行业资讯
招标信息 展会信息   
人力资讯 图书频道 网上课堂
软件下载 视频教育 网上助手
数控系统 变频器 稳压器 伺服系统
机床附件 机床仪表 机床刀夹具

车床

铣床

刨床

磨床

镗床

钻床

冲床

拉床

锯床

雕刻机

加工中心

电火花机

剪板机

折弯机
市场行情:广东 浙江 江苏 北京 上海 山东 安徽 天津 河北 重庆 台湾 湖北 辽宁 四川 陕西 福建 吉林 黑龙江 山西 云南 贵州
浙江数控装备产业萧山基地正式启动    我国机械工业领域标准化工作取得可喜成绩     采用丝半径补偿线切割加工带锥度的复杂工件    软件正版化时间表确定 中国软件产业加速振兴    FARO Laser Tracker激光跟踪仪在大型焊接生产线装配上的应用    SolidWorks“授权CAM软件产品”给谁    直线导轨和滚珠丝杠的发展趋势    第五届武汉国际机床工具展览会组展筹备工作会议举行     德国机械设备制造业连续5年创增长新高    磁化处理改善麻花钻使用寿命及机理研究    民营企业不容忽视    发展通用型逆变焊机及逆变气体保护焊机    沈阳铸造研究所“西区”产业基地投产    12月机械工业经济运行形势分析会商会    1Cr18Ni9Ti不锈钢细长孔的钻削攻丝工艺研究    复合加工机床需强化售后服务    装配式铰刀    老部长何光远:汽车零部件业应该学习机床业    贵州磨料磨具行业整体实力明显提升     误差补偿系统:提高滚齿机加工精度的方法    2008第三届中国国际机床工模具新技术新设备(宁波)展览会    粉末冶金高速钢刀具展现其强大竞争力    金属切削机床常见研伤的原因与排除    推广焊接自动化相关技术、促进我国机械制造业更上台阶     中国超硬工具走向国际市场需解决三个问题    中达电通控制方案为铁路焊接添动力    精达——量仪行业的一颗新星    面向绿色制造的切削液综合选择模型及其应用实例    华工科技携手团结激光成立华工团结    宝力、宝惠先进机械展销会圆满结束    国产机床基础配件遭到冷遇    森精机正式运行MCC-TMS刀具管理系统    2007年机床工具行业发展平稳    中国最大机器人制造商新松拟深圳上市    参数曲面的快速实时插补    微型机械加工技术国内外发展现状及趋势    台湾召开机械零组件竞争力高峰论坛    1-10月中国金属加工机床及附件进出口状况    各类机床导轨的比较及其分析    用ATD控制库存    
<% if pyg2("img")<>"" then%><%end if%>
 中国数控机床网 > 新闻中心 > 新品与技术    
AutoCAD齿轮开发
NEWS.C-CNC.COM   2007-12-26    来源:    阅读:生意人使用生意宝,生意越来越旺盛!

一、齿轮轮齿渐开渐开线

(defun c:gear(/)
(
 setq
p0 (getpoint"输入齿轮中心p0: ")
m  (getreal"输入齿轮模数M: ")
z  (getint"输入齿轮齿数Z: ")
ha 1
c 0.25
a (/ pi 9)
ra(/ (* (+ z (+ ha ha)) m) 2)
rf(/ (* (- z (+ (+ ha ha) c)) m) 2)
r(/ ( * m z) 2)
rb ( * r (cos a))
ri rb
ang 0
g (polar p0 ang rb)
)
(command "circle" p0 ra)
(command "circle" p0 rf)
(command "circle" p0 r)
(command "line"  g)
  
(while (< ri ra)
(setq
ang ( + ang(/ pi 360))
ri ( / rb (cos ang))
cta ( - (/ (sin ang) (cos ang)) ang)
g(polar p0 cta ri)
)

(command g)
)
(command ) 
)

二、螺旋源程序

(defun errMsg (s)
  (if (/= s "function cancelled") (princ (strcat "\nError: " s)))
     ; 当命令执行时出现错误
  (setvar "cmdecho" ocmdold)                                      ; 例如用户按下了CTRL + C
  (setvar "osmode" osmold)
  (setq *error* olderr)   ; 恢复旧的错误处理
  (princ)
)

(defun c:3Dthread (/ radouter threadpitch threadlength threadangle 
                   ptStart innerdiafactor radmid radinner ocmdold osmold 4H 5H 6H h6 g6)
   ;-------------------------------------------------------------------
   ; 获取公制外径大小、螺距总长
   ; 然后计算一系列几何点
   ; 并且关闭对象捕捉、命令回显
   ;-------------------------------------------------------------------
   (setq 4H (list 0.0015 0.002 0.002 0.0025 0.003 0.0035 0.004 0.005 0.006 0.007
 0.008 0.009 0.010))  
   (setq 5H (list 0.002 0.0025 0.003 0.004 0.0045 0.0055 0.0065 0.0075 0.009 0.010
 0.0115 0.0125 0.0135))  
   (setq 6H (list 0.003 0.004 0.0045 0.0055 0.0065 0.008 0.0095 0.011 0.0125 0.0145
 0.016 0.018 0.020))  
   (setq h6 (list -0.003 -0.004 -0.0045 -0.0055 -0.0065 -0.008
 -0.0095 -0.011 -0.0125 -0.0145 -0.016 -0.018 -0.020))  
   (setq g6 (list -0.005 -0.008 -0.0095 -0.0115 -0.0135 -0.017
 -0.0195 -0.023 -0.0265 -0.0295 -0.033 -0.036 -0.0515))   

   (setq osmold (getvar "osmode"))                       ; 保存调用前的osmode系统变量值
   (setq ocmdold (getvar "cmdecho"))                     ; 保存调用前的cmdecho系统变量值
   (setvar "osmode" 0)                                   ; 关闭对象捕捉         
   (setvar "cmdecho" 0)                                  ; 关闭命令的回显
 
   (setq innerdiafactor 1.5)                             ; 设置内径系数
   (initget 7)                                           ; radmid 必须非零、非空、非负
   (setq radmid (getdist "\n公制外径: "))
   (initget 7)                                           ; threadpitch 必须非零、非空、非负
   (setq threadpitch (getreal "\n螺距: "))
   (initget 1)                                           ; ptStart 必须非空
   (setq ptStart (getpoint "\n起始点: "))
   (initget 3)                                           ; threadlength 必须非零、非空、非负
   (setq threadlength (getdist "\n螺纹总长(Y方向): "))   ; 对公制外径添加公差
    (if (<= radmid 3) (setq order 0)                     ; 根据公制外径确定公差带中位置
    (if (<= radmid 6) (setq order 1)
    (if (<= radmid 10) (setq order 2)
    (if (<= radmid 18) (setq order 3)
    (if (<= radmid 30) (setq order 4)
    (if (<= radmid 50) (setq order 5)
    (if (<= radmid 80) (setq order 6)
    (if (<= radmid 120) (setq order 7)
    (if (<= radmid 180) (setq order 8)
    (if (<= radmid 250) (setq order 9)
    (if (<= radmid 315) (setq order 10)
    (if (<= radmid 400) (setq order 11)
    (if (<= radmid 500) (setq order 12)
   )))))))))))))

    (if (< threadpitch 0.25) (setq radmid (+ radmid (nth order 4H)))        ; 根据螺距确定公差带
    (if (< threadpitch 0.35) (setq radmid (+ radmid (nth order 5H)))
    (if (>= threadpitch 0.35) (setq radmid (+ radmid (nth order 6H)))
    )))
   
   (setq h (* 0.866025 threadpitch))                          ; 计算齿高
   (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)
      pttmp10 (list (car pttmp9) (cadr pttmp3)  (caddr pttmp3))
      pttmp11 (polar ptStart (/ pi 2.0) threadpitch)
      pttmp12 (polar pttmp11 (/ pi 2.0) (abs threadlength))
   )

   ;-------------------------------------------------------------------
   ; 绘制两个倒置的并偏移1/2螺距的圆锥
   ; 这两个圆锥都以中剖面剖分
   ; 进行并集运算
   ;-------------------------------------------------------------------

(SETQ startcone "order")
(SETQ endcone "Y")
   (command "zoom" "w" (list (car pt1a) (+ (cadr pt1a) (abs threadlength)) (caddr pt1a)) pt3b)

   (princ "\n正在绘制三维螺纹,请等待")
   (command "pline" pttmp1 pttmp5 pttmp6 "c")
   (command "revolve" "l" "" pttmp5 pttmp6 "")
   (command "slice" "l" "" pttmp1 pttmp3 pt1z pttmp5)
   (command "slice" "l" "" pt1a pt3a pt1az pttmp3)
   (setq tstmp (ssadd (entlast)))
   (command "pline" pttmp3 pttmp9 pttmp10 "c")
   (command "revolve" "l" "" pttmp9 pttmp10 "")
   (command "slice" "l" "" pttmp1 pttmp3 pt1z pttmp9)
   (command "slice" "l" "" pt1b pt3b pt1bz pttmp3)
   (setq tstmp (ssadd (entlast) tstmp))
   (command "union" tstmp "")

   ;-------------------------------------------------------------------
   ; 上面的实体被剖切成两份,然后进行镜像以获得螺旋线的螺旋
   ; 单线的高度实际上等于两倍螺距,但是超出或者是在内部或者是
   ; 在最后一步被切除
   ;-------------------------------------------------------------------

   (command "slice" tstmp "" "xy" ptStart "b")
   (setq tstmp (ssadd (entlast) tstmp))
   (command "mirror" "l" "" pttmp1 "@10<0" "y")
   (command "union" tstmp "")

   ;-------------------------------------------------------------------
   ; 螺旋进行阵列操作,然后再作并集(可能会耗费一定时间)
   ; 得到的实体再切除到指定的螺旋高度
   ;-------------------------------------------------------------------

   (setq e (entlast))
   (command "array" tstmp "" "r" ttal 1 threadpitch)
   (repeat (1- ttal)
      (setq e (entnext e)
         tstmp (ssadd e tstmp)
      )
   )
   (command "union" tstmp "")

; 若开始创建45度的圆锥
   (if (/= startcone "order")
    (progn (setq e (entlast))
     (command "cone" (list (car ptStart) (+ (cadr ptStart) threadpitch) (caddr ptStart)) "d" radmid "a"
(list (car ptStart) (+ (+ (cadr ptStart) (/ radmid 2)) threadpitch) (caddr ptStart)))
     (command "union" "l" e "")
    )
   )

   (command "slice" "l" "" "zx" pttmp11 pttmp12)
   (command "slice" "l" "" "zx" pttmp12 pttmp11)
   (command "move" "l" "" ptStart (list (car ptStart) (- (cadr ptStart) threadpitch) (caddr ptStart))) 

; 创建最小直径的圆柱体,然后与螺旋作交集
   (setq e (entlast))
   (command "cylinder" ptStart "d" radinner "c" (list (car ptStart) (+ (cadr ptStart)
 (abs threadlength)) (caddr ptStart)))
   (command "union" "l" e "")
   (setq tstmp (entlast))

; 创建中空的圆柱体
   (command "cylinder" ptStart "d" radmid "c" (list (car ptStart) (+ (cadr ptStart)
 (abs threadlength)) (caddr ptStart)))     ; minor dia
   (setq e (entlast))

; 若最后创建45度的圆锥
   (if (/= endcone "order")
    (progn (command "move" "l" "" ptStart (list (car ptStart) (- (cadr ptStart) (/ (- radmid radinner) 2)) (caddr ptStart)))        
     (command "cone" ptStart "d" radmid "a" (list (car ptStart) (+ (cadr ptStart)
 (/ radmid 2)) (caddr ptStart))) 
     (command "move" "l" "" ptStart (list (car ptStart) (- (+ (cadr ptStart)
 (abs threadlength)) (/ (- radmid radinner) 2)) (caddr ptStart)))
     (command "union" "l" e "")                
     (setq e (entlast))
    )
   )

; 从大圆柱中减去小直径圆柱
   (command "cylinder" ptStart "d" (* radmid 1.5) "c" (list (car ptStart)
(+ (cadr ptStart) (abs threadlength)) (caddr ptStart)))

   (command "subtract" "l" "" e "")
   (setq e (entlast))

; 从螺旋中减去圆柱
   (command "subtract" tstmp "" e "")

; 如果螺旋长度为负然后镜像
   (setq e (entlast))
   (if (< threadlength 0) (mirror3d e "zx" ptStart "y"))

   (command "zoom" "p")
;   (command "undo" "end")                                 ; 结束undo步骤
)

;;;-----------------------------------------------------------------------------------;
(arxload "geom3d" nil)
(princ "\n3DThread 已加载。 ")
(princ)

三、弹簧源程序

(defun errMsg (s)                    ; 当命令执行时出现错误 
                                      ; 例如用户按下了CTRL + C
  (if (/= s "Function cancelled")
    (princ (strcat "\nError: " s))
  )
  (setvar "cmdecho" cmdch)            ; 恢复调用前的cmdecho系统变量值
  (setvar "blipmode" blpmd)       ; 恢复调用前的blipmode系统变量值
  (setq *error* olderror)             ; 恢复旧的错误处理
  (princ)
)

(defun spring (nRepeat cntPoint bhfac lr strad bvfac
                / angle distnc tp aGrw dhGrw dvGrw Pi2 dv)

  (setvar "blipmode" 0)               ; 关闭 blipmode 
  (setvar "cmdecho" 0)                ; 关闭 cmdecho
  (setq Pi2 (* 3.14159265 2))
  (setq aGrw (/ Pi2 lr))
  (setq dhGrw (/ bhfac lr))
  (if bvfac (setq dvGrw (/ bvfac lr)))
  (setq angle 0.0)
  (if bvfac
    (setq distnc strad dv 0.0)
    (setq distnc 0.0)
  )
  (if bvfac 
    (command "3dpoly")                 ; 开始绘制弹簧
    (command "pline" cntPoint)          ; 从基点开始绘制弹簧
  )
  (repeat nRepeat 
    (repeat lr 
      (setq tp (polar cntPoint (setq angle (+ angle aGrw))
                      (setq distnc (+ distnc dhGrw))
               )
      )
      (if bvfac
          (setq tp (list (car tp) (cadr tp) (+ dv (caddr tp)))
                dv (+ dv dvGrw)
          )
      )
      (command tp)                    ; 继续输入下一点
    )
  ) 
  (command "")                        ; 输入结束
  (princ)

;;;
;;;       生成三维弹簧函数调用接口
;;;

(defun C:3DSPRING (/ olderror cmdch blpmd cntPt RottCnt horiGrw vertGrw bgnRdtn ptCntPerCircle) 
  (setq cmdch (getvar "cmdecho"))      ; 获取cmdecho值,以便调用结束后恢复
  (setq blpmd (getvar "blipmode"))     ; 获取blipmode值,以便调用结束后恢复
  (setvar "cmdecho" 0)        ; 关闭 cmdecho 
  (initget 1)                         ; cntPt 必须非空
  (setq cntPt (getpoint "\n请输入底部中心点: "))
  (initget 7)                         ; RottCnt 必须非零、非空,不可忽略
  (setq RottCnt (getint "\n旋转的圈数: "))
  (initget 7)                         ; bgnRdtn 必须非零、非空,不可忽略
  (setq bgnRdtn (getdist cntPt "\n起始半径: "))
  (initget 1)                         ; cf 必须非零、非空
  (setq horiGrw (getdist "\n每一圈的水平增长距离: "))
  (initget 3)                         ; cf 必须非零、非空
  (setq vertGrw (getdist "\n每一圈的垂直增长距离: "))
  (initget 6)                         ; ptCntPerCircle 必须非零、不可忽略
  (setq ptCntPerCircle (getint "\n每一圈的插值点数<35>: "))
  (cond ((null ptCntPerCircle) (setq ptCntPerCircle 35))) 
  (spring RottCnt cntPt horiGrw ptCntPerCircle bgnRdtn vertGrw)
  (setvar "cmdecho" cmdch) ; 恢复调用前的cmdecho系统变量值
  (setvar "blipmode" blpmd) ; 恢复调用前的blipmode系统变量值
  (setq *error* olderror)               ; Restore old *error* handler
  (princ)

 ■ 相关链接
 · AutoCAD齿轮开发
 · AutoCAD中圆的绘制方法和编辑技巧
 · AutoCAD中圆的绘制方法和编辑技巧
 · 基于AutoCAD平台的换热设备零部件
 · AutoCAD线条加粗秘诀
 · AutoCAD的菜单介绍
 · 优化AutoCAD系统的方法
 · AutoCAD 2004的用户界面
 · AutoCAD 2004基本操作
热点新闻
机电一体化毕业论文
手机MP4怎样下载的?
国内机床企业名录
divx编码解码器下载站
2003年度全国工业重点行业效益十佳企业名单
什么是数控机床?
MasterCAM下载清单
Ug教程下载网址大全
计算机基础知识试题
2004年9月机械零部件厂商企业推荐
数控车床编程实例
机电一体化专业毕业生就业率连创新高
五菱集团CAD正版选择CAXA
无刷直流电机原理
CAD正版化浪潮正猛CAXA助力轻松实现
正版CAD成为制造业企业新宠
上市企业CAD正版选择CAXA
安利传销内幕揭秘
华中数控车床系统图片
蓝牙适配器下载

最新新闻
浙江数控装备产业萧山基地正式启动
我国机械工业领域标准化工作取得可喜成绩
采用丝半径补偿线切割加工带锥度的复杂工件
软件正版化时间表确定 中国软件产业加速振兴
FARO Laser Tracker激光跟踪仪在大型焊接生产线装配上的应用
SolidWorks“授权CAM软件产品”给谁
直线导轨和滚珠丝杠的发展趋势
第五届武汉国际机床工具展览会组展筹备工作会议举行
德国机械设备制造业连续5年创增长新高
磁化处理改善麻花钻使用寿命及机理研究
民营企业不容忽视
发展通用型逆变焊机及逆变气体保护焊机
沈阳铸造研究所“西区”产业基地投产
12月机械工业经济运行形势分析会商会
1Cr18Ni9Ti不锈钢细长孔的钻削攻丝工艺研究
复合加工机床需强化售后服务
装配式铰刀
老部长何光远:汽车零部件业应该学习机床业
贵州磨料磨具行业整体实力明显提升
误差补偿系统:提高滚齿机加工精度的方法
中国数控机床网关于本网 - 广告刊登-服务中心-网页设计- 域名空间-投稿信箱- 联系我们-投诉举报-友情链接
版权所有:泰州市德基软件公司   网络实名:中国数控机床网www.c-cnc.com
      腾讯QQ:498808488      客户服务热线:0523-86228810  86229597
传真:0523-86229597   E-mail:
jc@c-cnc.com
经营许可证编号:苏B2-20050154 苏ICP备05030923号