常用曲线源程序.doc_第1页
常用曲线源程序.doc_第2页
常用曲线源程序.doc_第3页
常用曲线源程序.doc_第4页
常用曲线源程序.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、齿轮轮齿渐开渐开线(defun c:gear(/)(setqp0 (getpoint输入齿轮中心p0: )m (getreal输入齿轮模数M: )z (getint输入齿轮齿数Z: )ha 1c 0.25a (/ pi 9)ra(/ (* (+ z (+ ha ha) m) 2)rf(/ (* (- z (+ (+ ha ha) c) m) 2)r(/ ( * m z) 2)rb ( * r (cos a)ri rbang 0g (polar p0 ang rb)(command circle p0 ra)(command circle p0 rf)(command circle p0 r)(command line g) (while ( ri ra)(setqang ( + 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 Error: 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 公制外径: ) (initget 7) ; threadpitch 必须非零、非空、非负 (setq threadpitch (getreal 螺距: ) (initget 1) ; ptStart 必须非空 (setq ptStart (getpoint 起始点: ) (initget 3) ; threadlength 必须非零、非空、非负 (setq threadlength (getdist 螺纹总长(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 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 三维螺纹创建完成) (setvar osmode osmold) ; 恢复调用前的osmode系统变量值 (setvar cmdecho ocmdold) ; 恢复调用前的cmdecho系统变量值 (princ)(defun auxithread (radouter radmid radinner threadpitch threadlength threadangle ptStart / ttal pt1z ang pt1apt1az 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 正在绘制三维螺纹,请等待) (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 100 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 3DThread 已加载。 )(princ)三、弹簧源程序(defun errMsg (s) ; 当命令执行时出现错误 ; 例如用户按下了CTRL + C (if (/= s Function cancelled) (princ (strcat Error: 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 cmdc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论