iCAx开思工具箱

标题: 急需螺旋线生成命令 [打印本页]

作者: shi813    时间: 2005-5-29 11:04
标题: 急需螺旋线生成命令
各位高手,现在急需用UG/GRIP中的螺旋线生成命令,即helix生成命令,但是我自己又找不到,请指点!谢谢
作者: shi813    时间: 2005-5-29 11:06
希望大家能给一点指点! x谢谢!
作者: h2023197    时间: 2005-5-31 19:05
同问同问,哪位GRIP高手解答一下!!
作者: peter1024    时间: 2005-6-1 08:17
据我所知,好象没有.GRIP手册有提供双曲线,二次曲线,椭圆的命令.但是没有HELIX的提示,可以自己写.以下是我写的.
  
$$ PROGRAM: AHELIX.GRS
$$
$$ KEYWORDS:
$$
$$ ABSTRACT:
$$          CREATE A HELIX  
$$          (1 PITCH ONLY)
$$ RELEASE HISTORY:
$$                           
$$
$$ Required Subroutines: (None)
$$
$$ REQUIRED DATA/PART FILES: (NONE)
$$
$$ AUTHOR:  PETER1024
$$
$$ COMPANY:  
$$
$$ SYSTEM TYPE: ALL
$$
$$ THEORY/VARIABLE USAGE:
$$
  
ENTITY/POINT1(361),HELIX1
NUMBER/V1,V2,R1,A1,X1,Y1,Z1
  
V1=0
V2=1  $$ DEFAULT RIGHT HAND
A1=10 $$ DEFAULT ANGLE EQUAL TO 20 DEGREE
R1=5  $$ DEFAULT DIAMETER IS 10 MM
  
JP1:
  
IFTHEN/V1==361
JUMP/JP2:
ENDIF
  
X1=R1*SINF(V1)
Y1=R1*COSF(V1)
Z1=(&I*R1*V1/180)*V2*(SINF(A1)/COSF(A1))
  
POINT1(V1+1)=POINT/X1,Y1,Z1
V1=V1+1
JUMP/JP1:
  
JP2:
HELIX1=BCURVE/POINT1(1..V1),DEGREE,3,IFERR,JEND:
  
JEND:
DELETE/POINT1(1..V1)
HALT
  
$$这是作为主程序写的,已调试通过.如果真正要用的话可该为子程序,同过传递参数R1,A,V2. R1--控制螺旋线半径,A--控制螺旋线角度,V2--控制螺旋线左或右旋.在此基础上还可以写出锥螺旋线等,这就让大家自由发挥了.注:这是一条近似螺旋线.
作者: h2023197    时间: 2005-6-1 11:40
谢谢仁兄,我用了一下你的程序,为什么点一增多(比如增加到3610),画的螺旋线就看不出来了,还有我想使螺旋线的转数多一些,比如转数是10,可是发现做不出来,不知是我没有正确的应用,还是那个B-曲线的生成有问题呢?
希望帮我解答一下,谢谢!!!

作者: shi813    时间: 2005-6-1 15:41
太感谢peter1024了,虽然只有一个螺距的螺旋线,但是给我渺茫的思路指明了方向。谢谢
作者: shi813    时间: 2005-6-1 15:45
需要peter1024的支持!!谢谢
作者: peter1024    时间: 2005-6-1 18:54
$$ PROGRAM: AHELIX.GRS
$$
$$ KEYWORDS:
$$
$$ ABSTRACT:
$$          CREATE A HELIX BY INPUT RADIUS AND ANGLE
$$          (MAX 20 PITCH )
$$ RELEASE HISTORY:
$$                           
$$
$$ Required Subroutines: (None)
$$
$$ REQUIRED DATA/PART FILES: (NONE)
$$
$$ AUTHOR:  PETER1024
$$
$$ COMPANY:  
$$
$$ SYSTEM TYPE: ALL
$$
$$ THEORY/VARIABLE USAGE:
$$
  
ENTITY/POINT1(601),HELIX1
NUMBER/V1,V2,v3,R1,A1,X1,Y1,Z1
  
V1=0
V2=1  $$ DEFAULT RIGHT HAND
A1=10 $$ DEFAULT ANGLE EQUAL TO 10 DEGREE
R1=5  $$ DEFAULT DIAMETER IS 10 MM
v3=8  $$ DEFAULT PITCH IS 8
  
JP1:
  
IFTHEN/V1==30*V3+1
JUMP/JP2:
ENDIF
  
X1=R1*SINF(V1*12)
Y1=R1*COSF(V1*12)
Z1=(&I*R1*V1*12/180)*V2*(SINF(A1)/COSF(A1))
      
  
POINT1(V1+1)=POINT/X1,Y1,Z1
V1=V1+1
JUMP/JP1:
  
JP2:
HELIX1=BCURVE/POINT1(1..V1),DEGREE,3,IFERR,JEND:
  
JEND:
DELETE/POINT1(1..V1)
HALT
  
$$V3--控制几转
作者: h2023197    时间: 2005-6-2 08:59
感谢仁兄,非常谢谢!!我还想问个问题,GRIP中那个扫略向导的命令有吗?还是需要自己做呢?
作者: peter1024    时间: 2005-6-2 11:12
你指的是EXTRUDE,还是SWEPT?
作者: h2023197    时间: 2005-6-2 11:51
指的是SWEPT,就是想建立一个三角形,然后让它按着刚刚画出的螺旋线的方向进行扫略,我试了一个管子的命令,就是SOLTUB,它只能扫略出横截面为圆的实体,要想实现三角形的该如何做啊?
谢谢兄台!!
作者: peter1024    时间: 2005-6-2 12:54
用 SSURF/obj1,obj2,p,c[,ent3] 这个命令.SSURF--SWEPT SURFACE
当然用好这个命令,还要一番测试.但别人教的不一定能记住,自己学到的却是忘不掉.
作者: h2023197    时间: 2005-6-2 17:31
这个命令我用了一下,就是发现obj1必须是个一个曲线实体,而三角形的有三条边,如果每条边都用一次SSURF的话,得出得是个空心的实体,而我想得到一个实心的实体,这样就必须把三条边合并起来进行SSURF命令,这个合并的命令该是啥呢,peter1024兄,你看看我的思路对吗?
谢谢指教!!!
作者: peter1024    时间: 2005-6-2 19:53
1.
  你着个思路也不错,要想把三条边合并起来就要调用BCURVE/CURVE 这条命令,然后再用它扫描.这中间又多了一次数据的转换运算,容易失真.
2.
   既然你已经得到了比较复杂的三个面,何不在两端做两个小平面,然后调用  SEW这条命令来得到你所要的实体.实体本来就是一组封闭的片体,失真不可能发生.
3.
   可以试一下这条命令:
   BSURF/SWPSRF..........具体参数可查找GRIP手册.
  以上只是一个思路方向,没有亲自试过.
作者: h2023197    时间: 2005-6-3 08:33
谢谢peter1024兄,我试试!!!
作者: h2023197    时间: 2005-6-5 10:06
peter1024兄,你的办法我都试了一下,感觉我都没有做出来,可能是我的GRIP语言掌握不够,你能帮我看看吗?满足上面我提出的要求!
谢谢!!!
作者: h2023197    时间: 2005-6-5 17:17
关于你的那三个建议方向,我都试了试,具体见下:
1:用了那个命令之后,感觉好像没有合并啊,出来的仍然是空心的;
2:这个办法挺好的,可是有一点,在起始点还好作出平面来,可是终点的平面做不出来,因为终点组建三角形的点不好找,我想通过在终点做大平面来和三片形成的平面相交出线来构建小平面,仍然不行,终点的平面不是竖直的;
3:这个命令也是针对横截面是曲线的
peter1024兄,你看我上面做的有问题吗?
谢谢帮忙!!!!
焦急等待你的解答!!
作者: peter1024    时间: 2005-6-6 10:59
$$ PROGRAM: AHELIX.GRS
$$
$$ KEYWORDS:
$$
$$ ABSTRACT:
$$          CREATE A HELIX BY INPUT RADIUS AND ANGLE
$$          (MAX 20 PITCH )
$$ RELEASE HISTORY:
$$                           
$$
$$ Required Subroutines: (None)
$$
$$ REQUIRED DATA/PART FILES: (NONE)
$$
$$ AUTHOR:  PETER1024
$$
$$ COMPANY:  
$$
$$ SYSTEM TYPE: ALL
$$
$$ THEORY/VARIABLE USAGE:
$$
  
ENTITY/POINT1(601),HELIX1,LINE1(3),SP1,BODY1
NUMBER/V1,V2,v3,R1,A1,X1,Y1,Z1
  
V1=0
V2=1  $$ DEFAULT RIGHT HAND
A1=5 $$ DEFAULT ANGLE EQUAL TO 5 DEGREE
R1=8  $$ DEFAULT DIAMETER IS 16 MM
v3=2  $$ DEFAULT PITCH IS 2
  
JP1:
  
IFTHEN/V1==30*V3+1
JUMP/JP2:
ENDIF
  
X1=R1*SINF(V1*12)
Y1=R1*COSF(V1*12)
Z1=(&I*R1*V1*12/180)*V2*(SINF(A1)/COSF(A1))
    
  
POINT1(V1+1)=POINT/X1,Y1,Z1
V1=V1+1
JUMP/JP1:
  
JP2:
HELIX1=BCURVE/POINT1(1..V1),DEGREE,3,IFERR,JEND:
  
LINE1(1)=LINE/0,8,1,0,7.134,-0.5
LINE1(2)=LINE/0,7.134,-0.5,0,8.866,-0.5
LINE1(3)=LINE/0,8.866,-0.5,0,8,1
  
SP1=SPLINE/APPROX,BLANK,TOLER,0.002,LINE1(1..3)
BODY1=SSURF/SP1,HELIX1,3,3
  
JEND:
DELETE/POINT1(1..V1)
HALT
  
$$供你参考.还有一些建议来不及写.
作者: h2023197    时间: 2005-6-6 14:39
真是感谢peter1024兄,非常感谢!!
作者: shi813    时间: 2005-7-6 16:23
呵呵 ,真的很感谢peter1024兄,看来你是这方面的专家了
作者: shi813    时间: 2005-7-6 16:29
h2023197的螺旋线及三角形截面扫描出来了吗?我所做的扫面是一个梯形截面,有时间大家再交流啊,再次感谢peter1024!!
作者: shi813    时间: 2005-7-7 11:06
$$子程序 706sub
PROC/ENT,S,E
ENTITY/ENT
NUMBER/S(3),E(3)
     S=&Spoint(ent)
     E=&Epoint(ent)
RETURN
  
$$主程序 706
ENTITY/ent
  NUMBER/A(3),B(3)
  MASK/3
LD:
  IDENT/'PICK LINE',ent,resp
  JUMP/LD:,trm:,,resp
  CALL/'706sub',ent,A,B
  PRINT/A,B
  MASK/ALL
TRM:
  HALT
我先把二者分别编译了,然后再链接,结果调试的结果是,找不到706sub.gri
请给予解答 ,先谢谢
作者: peter1024    时间: 2005-7-7 18:59
shi813 wrote:
$$子程序 706sub  
  PROC/ENT,S,E  
  ENTITY/ENT  
  NUMBER/S(3),E(3)  
       S=&Spoint(ent)  
       E=&Epoint(ent)  
  RETURN  
  
  $$主程序 706  
  ENTITY/ent  
  NUMBER/A(3),B(3)  
  MASK/3  
  LD:  
  IDENT/'PICK LINE',ent,resp  
  JUMP/LD:,trm:,,resp  
  CALL/'706sub',ent,A,B  
 &nbspRINT/A,B  
  MASK/ALL  
  TRM:  
  HALT  
  我先把二者分别编译了,然后再链接,结果调试的结果是,找不到706sub.gri  
  请给予解答 ,先谢谢

  
1 把A B 改为S E 在主程序中.试一下
2 是否与你子程序名称的第一个字符为数字有关系.
作者: me2003    时间: 2005-7-7 19:13
peter1024 ,你好!看的出来您是这方面的行家啊,能留下联系方式么。有机会向您请教几个grip方面的问题。
我的qq:183787150
作者: shi813    时间: 2005-7-8 17:10
$$主程序
ENTITY/ENT
  NUMBER/S(3),E(3)
  MASK/3
LD:
  IDENT/'PICK LINE',ent,resp
  JUMP/LD:,trm:,,resp
  CALL/'sub1',ENT,S,E
  PRINT/S,E
  MASK/ALL
TRM:
  HALT
$$子程
PROC/ENT,S,E
ENTITY/ENT
NUMBER/S(3),E(3)
     S=&Spoint(ent)
     E=&Epoint(ent)
RETURN
  
peter1024:我安你说的,改了一下,怎么还不行呢?请指点
谢谢!!
作者: peter1024    时间: 2005-7-8 20:43
把你里面的汉语字去掉后,应该就什么问题都没有了.
作者: rainman417    时间: 2005-7-11 00:56
今天小弟我把peter1024的程序进行参数化设计时。。发现好象有点问题。。不知道哪位大虾也改一下。。将V1,V2,v3,R1,A1这几个都进行参数化。。我觉得这样用途应大一点吧。。望指点。。。
作者: peter1024    时间: 2005-7-11 07:55
建一对话框,让用户输入参数,并放入TOOL-EXPRESSION中就比较好用了.这样最多转数也可以修改一下,到无限.
作者: rainman417    时间: 2005-7-11 10:09
我也是这么弄的。。可当用PARAM命令进行编程后。。。结果显示下面的算法有错误。。PETER哥能不能弄一下啊。。谢谢了哈
作者: peter1024    时间: 2005-7-11 15:20
建议你详细看一下程序,了解了每个参数的用途,用法及限制,还有如何消除限制.应该就没有问题了.注:V2只能设为-1或多或1,来控制左右旋.我提示的可是够详细了把,兄弟.
作者: shi813    时间: 2005-7-11 15:29
在此非常感谢peter1024兄,同时也希望别的兄弟姐妹,要以peter1024兄为榜样,在自己问题被解决之余,也帮帮别的兄弟姐妹,也许只有大家互帮互助,我们才能共同进步!!!
作者: rainman417    时间: 2005-7-12 09:49
谢谢PETER兄的提示。。今天早上我又试着改了一下。。一不小心就可以了。。呵呵。。也许是昨天的程序中逗号打的太少了。。HOHO。。真的很谢谢PETER兄
作者: peter1024    时间: 2005-7-12 12:54
建议你把源代码贴上来,让大家能学习一下.因为这是一个从无到有,从不完善到完善的过程.让初学者也从中学点经验.
作者: rainman417    时间: 2005-7-12 17:52
我改的很少。。就把你的程序中的几个数值进行了参数化设计。。用的是PARAM语句。。。
  
ENTITY/POINT1(601),HELIX1  
NUMBER/V1,V2,V3,R1,A1,X1,Y1,Z1  
  
V1=0
I10:
PARAM/'inter the number','V2=',V2,'V3=',V3,'R1=',R1,'A1=',A1,RPS
JUMP/I10:,hal:,,,,,,rps
hal:
  
JP1:  
  
IFTHEN/V1==30*V3+1  
JUMP/JP2:  
ENDIF  
  
X1=R1*SINF(V1*12)  
Y1=R1*COSF(V1*12)  
Z1=(&I*R1*V1*12/180)*V2*(SINF(A1)/COSF(A1))  
     
  
POINT1(V1+1)=POINT/X1,Y1,Z1  
V1=V1+1  
JUMP/JP1:  
  
JP2:  
HELIX1=BCURVE/POINT1(1..V1),DEGREE,3,IFERR,JEND:  
  
JEND:  
DELETE/POINT1(1..V1)  
HALT
作者: 29131678    时间: 2005-7-13 17:11
peter1024,你好!
你的程序我试过了,有个问题想请教一下,就是扫略的时候截面三角形在旋转,螺旋线的层数多了之后就不能生成规则图形了,请指教,谢谢!
作者: 29131678    时间: 2005-7-14 08:51
这是我改的程序  请大家帮忙看看 怎么改简单一些
ENTITY/POINT1(601),HELIX1(99),LINE1(3),SP1,BODY1,sp2  
NUMBER/V1,V2,v3,R1,A1,X1,Y1,Z1,mat(12)  
  
V1=0  
V2=1 $$ DEFAULT RIGHT HAND  
A1=2 $$ DEFAULT ANGLE EQUAL TO 5 DEGREE  
R1=8 $$ DEFAULT DIAMETER IS 16 MM  
v3=8 $$ DEFAULT PITCH IS 2  
  
JP1:  
  
IFTHEN/V1==30*V3+1  
JUMP/JP2:  
ENDIF  
  
X1=R1*SINF(V1*12)  
Y1=R1*COSF(V1*12)  
Z1=(&I*R1*V1*12/180)*V2*(SINF(A1)/COSF(A1))  
     
  
POINT1(V1+1)=POINT/X1,Y1,Z1  
V1=V1+1  
JUMP/JP1:  
  
JP2:  
HELIX1(1)=BCURVE/POINT1(1..V1),DEGREE,3,IFERR,JEND:
mat=matrix/transl,0,0,2
HELIX1(2)=transf/mat,HELIX1(1)
mat=matrix/transl,0,0,1  
HELIX1(4)=transf/mat,HELIX1(1)
mat=matrix/scale,1.25,1.25,1  
HELIX1(3)=transf/mat,HELIX1(4)
LINE1(1)=LINE/0,8,0,0,8,2
LINE1(2)=LINE/0,8,2,0,10,1  
LINE1(3)=LINE/0,10,1 ,0,8,0  
SP1=SPLINE/APPROX,BLANK,TOLER,0.002,LINE1(1..3)  
BODY1=BSURF/SWPSRF,TRACRV,HELIX1(1..3),GENCRV,SP1,IFERR,JEND:
JEND:  
DELETE/POINT1(1..V1)  
HALT  
  
生成的图片如下:
作者: peter1024    时间: 2005-7-14 19:03
没有时间去仔细研究,不过可以和UG中的SWEEP ALONG GUIDE的效果来参考一下.无论如何你的这个思路是不错的.这么老的贴,看的别人都累了.干脆开个新贴算了.
作者: shi813    时间: 2005-7-14 20:15
29131678,你做的是不是一个螺钉的螺纹啊?效果还是可以的!祝贺你,同时感谢peter1024 兄
作者: 29131678    时间: 2005-7-15 07:40
恩   谢谢大家的帮助了,呵呵 有机会再向大家学习了。
作者: weixinxin    时间: 2005-7-17 00:43
请教各位高手:
   生成螺纹时用扫掠的程序后,为什么不能进行布尔操作呢,要怎么解决这个问题呢?
作者: shi813    时间: 2005-7-18 19:50
请教各位高手:  
   生成螺纹时用扫掠的程序后,为什么不能进行布尔操作呢,要怎么解决这个问题呢?
  
如果扫掠生成的是实体,应该可以进行布尔运算吧!
作者: shi813    时间: 2005-7-18 22:45
Peter1024兄,在您的下面程序中,其中的v3,应该是转数(Turn),而不是螺距(pitch)吧? 谢谢
  
第 8 楼  
  
--------------------------------------------------------------------------------
  
$$ PROGRAM: AHELIX.GRS  
$$  
$$ KEYWORDS:  
$$  
$$ ABSTRACT:  
$$ CREATE A HELIX BY INPUT RADIUS AND ANGLE  
$$ (MAX 20 PITCH )  
$$ RELEASE HISTORY:  
$$  
$$  
$$ Required Subroutines: (None)  
$$  
$$ REQUIRED DATA/PART FILES: (NONE)  
$$  
$$ AUTHOR: PETER1024  
$$  
$$ COMPANY:  
$$  
$$ SYSTEM TYPE: ALL  
$$  
$$ THEORY/VARIABLE USAGE:  
$$  
  
ENTITY/POINT1(601),HELIX1  
NUMBER/V1,V2,v3,R1,A1,X1,Y1,Z1  
  
V1=0  
V2=1 $$ DEFAULT RIGHT HAND  
A1=10 $$ DEFAULT ANGLE EQUAL TO 10 DEGREE  
R1=5 $$ DEFAULT DIAMETER IS 10 MM  
v3=8 $$ DEFAULT PITCH IS 8  
  
JP1:  
  
IFTHEN/V1==30*V3+1  
JUMP/JP2:  
ENDIF  
  
X1=R1*SINF(V1*12)  
Y1=R1*COSF(V1*12)  
Z1=(&I*R1*V1*12/180)*V2*(SINF(A1)/COSF(A1))  
     
  
POINT1(V1+1)=POINT/X1,Y1,Z1  
V1=V1+1  
JUMP/JP1:  
  
JP2:  
HELIX1=BCURVE/POINT1(1..V1),DEGREE,3,IFERR,JEND:  
  
JEND:  
DELETE/POINT1(1..V1)  
HALT  
  
$$V3--控制几转
作者: shi813    时间: 2005-7-18 22:51
下面是仿照Peter1027兄编的一个生成螺旋线的程序,在这个程序中,当输入的螺旋线长度不能被螺距整除,或者小数点后大于两位时,在生成螺旋线过程中就会出现错误!请大家指教 谢谢!!
  
ENTITY/POINT1(601),HELIX1(199)  
NUMBER/V1,V2,v3,R1,A1,X1,Y1,Z1 ,a
  
V1=0  
V2=1 $$ DEFAULT RIGHT HAND  
PARAM/'ENTER PARAMS', $  
'DIA=',D1,$   
'PITCH=',S,$
'length=',L,RPS
  
v3=(L/S)
  
A1=ATANF(S/D1*1/3.14) $$ DEFAULT ANGLE EQUAL TO 10 DEGREE  
R1=D1/2 $$ DEFAULT DIAMETER IS 10 MM  
  
JP1:  
  
IFTHEN/V1==30*V3+1  
JUMP/JP2:  
ENDIF  
  
X1=R1*SINF(V1*12)  
Y1=R1*COSF(V1*12)  
Z1=(&I*R1*V1*12/180)*V2*(SINF(A1)/COSF(A1))  
     
  
POINT1(V1+1)=POINT/X1,Y1,Z1  
V1=V1+1  
JUMP/JP1:  
  
JP2:  
HELIX1(199)=BCURVE/POINT1(1..V1),DEGREE,3,IFERR,JEND:  
  
JEND:  
DELETE/POINT1(1..V1)  
HALT
作者: peter1024    时间: 2005-7-19 19:33
我觉得如果把思路改为,首先计算要建立这样长的螺旋线最少需要多少转,建立螺旋线。第二步来控制螺旋线的长度,会不会更容易一点。
作者: niuzilianmeng    时间: 2005-7-20 20:20
首先感谢peter兄,我做了个生成N(6)角螺栓三维实体的程序,老师评价了个“优”,都得感谢peter兄以及shi813兄,其中用到的螺旋线就有大部分引用他的,而且我感到原理很简单。关于上面shi813的程序,可以令螺旋升角A1=P/2πR,P是螺距。这样在引用程序的时候会方便很多吧。
还有一个问题:BODY1=BSURF/SWPSRF,TRACRV,HELIX1(1..3),GENCRV,SP1,IFERR,JEND:命令中   HELLIX1(1..3)好象不可以改成4个或4个以上的对象如HELLIX1(N。。(N+3)),是吗?
我想用梯形截面沿4条线扫,但都不行,后来只能改成3条。请各位高手解释一下。不胜感激
作者: niuzilianmeng    时间: 2005-7-20 20:33
还有个改进就是关于旋向的控制:
用块IF语句令V2=1(左旋)时,X1=R1*SINF(V1*12)
                 V2=-1(右旋)时,X1=-R1*SINF(V1*12)。
  Y1表达式不变,Z1中的“V2”去掉就OK了
在用PARAM命令时可以加入“左旋”、“右旋”选项…………
作者: shi813    时间: 2005-7-22 09:39
niuzilianmeng :
  
大家互相学习吧,四条螺旋线是可以生成的,我现在已经完成了截面是矩形的螺杆,但是只是限于等矩的。
作者: shi813    时间: 2005-7-22 09:40
peter兄是肯定要感谢的,真的发自内心的感谢!呵呵
作者: shi813    时间: 2005-7-22 09:42
此外还有一个问题,请peter兄和其他兄台提示一下,就是如何生成锥形螺旋线? 谢谢先
作者: peter1024    时间: 2005-7-22 17:57
建一变量,V4控制锥度.修改X1和Y1的方程.这时候X1和Y1的值与Z1有关连.
建议先计算Z1.大家试着去改一下.
作者: shi813    时间: 2005-7-23 22:31
peter1024 兄,这是我改写的生成锥形螺旋线的程序,你帮忙给看一下,为什么长度L改变是,实际生成的螺旋线长度还是不变,只是锥度增大了,谢谢
  
ENTITY/POINT1(601),HELIX2  
NUMBER/V1,V2,v3,R1,R2,R,A1,X1,Y1,Z1,L
  
V1=0  
V2=1 $$ DEFAULT RIGHT HAND  
A1=20.24  
R1=38 $$ 小端半径
R2=60 $$ 大端半径
L=1000 $$ 螺旋线长度
v3=8 $$ 螺距
  
JP1:  
  
IFTHEN/V1==30*V3+1  
JUMP/JP2:  
ENDIF  
Z1=(&I*R1*V1*12/180)*V2*(SINF(A1)/COSF(A1))
R=R1+Z1*(R2-R1)/L $$变化的半径
X1=R*SINF(V1*12)  
Y1=R*COSF(V1*12)   
     
  
POINT1(V1+1)=POINT/X1,Y1,Z1  
V1=V1+1  
JUMP/JP1:  
  
JP2:  
HELIX2=BCURVE/POINT1(1..V1),DEGREE,3,IFERR,JEND:  
  
JEND:  
DELETE/POINT1(1..V1)  
HALT
作者: niuzilianmeng    时间: 2005-7-24 06:03
R的表达式好象错了
应该是R=R1+(R2-R1)*(L-Z1)/L
Z1的表达式也有待商榷,严格来说是一个关于V1为无穷小量时对原式的积分
不过用在这里显然不实际,引入一个系数比较准确,不过这个系数的确定也有些麻烦,不如用(R+R2)/2代替Z1表达式中的R1项得到的曲线会更精确
作者: peter1024    时间: 2005-7-24 10:18
很高兴看到大家的讨论,让我也学到不少.建议斑主给两位仁兄加分,也鼓励其他的XDJM来参加讨论.
TO:SHI813 在你的方程中,L实际对螺旋线的高度不起作用.只起了对锥度的辅助运算.实际上螺旋角和转数已经限制了螺旋线的高度.请兄台参考.
TO:NIU....看到你的分析也决的满有道理的.(由于本人没读过大学,对微积分久仰大名,一直想找机会借几本书来看一下,但没时间.请大家不要丢砖头)但假设从侧面对螺旋线投影的话,应该可以得到一个等腰梯形,只用得到Z1的数值,也就可以间接得到R的数值,再算取X1,Y1的值.
另:假设我们把R的方程改为二次曲线方程结果会是怎样.那位兄台有时间改一下,并贴个图上来让大家看一下.
作者: shi813    时间: 2005-7-24 10:47
niuzilianmeng :
这我的R推导过程,请指教
作者: shi813    时间: 2005-7-24 10:52
niuzilianmeng兄,在你下边的叙述种,是不是应该用(R1+R2)/2,而不是(R+R2)/2,来代替Z1表达式中的R1项得到的曲线会更精确?
  
R的表达式好象错了  
应该是R=R1+(R2-R1)*(L-Z1)/L  
Z1的表达式也有待商榷,严格来说是一个关于V1为无穷小量时对原式的积分  
不过用在这里显然不实际,引入一个系数比较准确,不过这个系数的确定也有些麻烦,不如用(R+R2)/2代替Z1表达式中的R1项得到的曲线会更精确
作者: shi813    时间: 2005-7-24 10:54
呵呵非常感谢两位兄台的指导,还有发现我偶尔把字打错了,在此向大家道歉了!希望大家多多讨论
作者: shi813    时间: 2005-7-24 11:02
等螺距螺杆的一部分:
作者: niuzilianmeng    时间: 2005-7-24 12:28
呵呵,微积分是个好东西,优势在它的建模思想和解决问题的手段,可惜偶当时贪玩,只学了些皮毛…………
又发现原来我和楼主的模型刚好倒个180度,所以按楼主的模型,R的表达式是正确的;另一方面,我之所以取(R+Rx)/2  [Rx为下底面的圆半径]
是从一个更小的范围内精确Z1的值,按照这个程序的几何原理,这个分式的值带入Z1表达式后得到的Z1值更接近微积分原理中用中值定理所得出Z1的值,他是随着R的变化动态变化的,倘若GRIP中存在或编写出积分程序的话可以直接引入,即可免去中值。
楼主欲用(R1+R2)/2也可以的,就如用原来的R1值也行的通一样,差别是前者比后者对Z1的值能更精确定位。
综上所述:用哪个3个值的任何一个都可以,带R的就更精确,更接近理论情况。小弟我没有想到有合适的2次方程求R,也认为原来的R表达式已完全能满足设计要求及精度要求,也许有高人能提出闪亮见解,还请赐教,定洗耳恭听~~~
作者: niuzilianmeng    时间: 2005-7-24 12:32
由于客观原因
偶上网不便,仅周末有机会,若参与讨论、回复的慢敬请谅解。
昨晚通宵了,头脑不是很清醒,又没有纸笔在手边,以上的仅经过深思得出,
如有疏漏错误还请原谅。
作者: peter1024    时间: 2005-7-24 13:23
微积分,不错,下定决心学会它.
作者: shi813    时间: 2005-7-24 15:42
呵呵,科学的发现就是在大家讨论中得到的,在这里没有什么不好意思的,只要大家能真诚的互相讨论就行了。
  
今天一直在思考一个问题,就是锥形螺旋线的螺旋角应该是变值,而不是个常量,应该用一个表达式来表示。对吧?各位
作者: shi813    时间: 2005-7-24 15:45
微积分我道学了不少,但是好像只是理论学习,忘了与实际结合了,谢谢niuzilianmeng 兄的提醒,看来以后还是要学以致用的!!
  
作者: niuzilianmeng    时间: 2005-7-25 14:15
我觉得螺旋角的值应该与螺距及R(当量半径,无锥度时是常数,有锥度则是(R+Rx)/2)有关系,
也就是说,当已经定了螺旋线的基本参数(半径、螺距)以后螺旋角就不在变化了。课程设计的时候我选的题目是GRIP实现螺栓三维实体,当中用“a=atanf(p/(2*&pi*r))”来表示螺旋角随用户定义参数P及国标r值的变化关系,如果有需要我可以发上来,很easy的一个程序,就是分支罗嗦。
作者: shi813    时间: 2005-7-25 22:30
niuzilianmeng ,那就麻烦贴上来吧,谢谢了
作者: niuzilianmeng    时间: 2005-7-26 09:20
270多行,为了方便读懂有很多空行我没有删,在Z1坐标的地方可以精简一段程序,也懒的管了,毕竟这个程序是按课程设计的要求写的,如果使用中带来不便或不爽请别烦躁。题目是:N(六)角螺栓…………有些参数表达式是由国标尺寸得出的,如果只看螺旋程序可忽略,如果由兴趣读完建议弄本螺栓设计相关的手册在手边。俺水平极为有限,看了程序想飞刀的尽管使劲…………文档的压缩件附上:
作者: shi813    时间: 2005-7-26 10:10
呵呵,还没有拜读,先谢谢了
作者: shi813    时间: 2005-8-6 11:58
以下是生成四条螺旋线,而以这四条螺旋线作为引导线,用swept命令,扫描的结果,很不理想,各位兄弟姐妹给看看,给点建议,谢谢。
在程序运行过程中参数依次输入:120,76,80,12,10,1
  
ENTITY/POINT1(1000),HELIX2 ,HELIX3,HELIX1,HELIX4,p(4),ln(4),SP1,C1(2)
NUMBER/V1(3),V2,v3,R1,R2,R,A1,B1,X1,Y1,Z1,L,MAT1(12),D1,D2,S,w,a
PARAM/'ENTER PARAMS', $  
'out diameter=',D1,$
'in diameter =',D2,$   
'PITCH=',S,$
' screw width=',w,$
'turn=',v3,$
'turn direction=',a,RPS
L=v3*s
D1=120
D2=76
S=80
w=12
a=1
  
V1(1)=0  
V2=a $$ DEFAULT RIGHT HAND  
  
R1=D2/2 $$ 小端半径
R2=D1/2 $$ 大端半径
  
   
  
JP1:  
IFTHEN/V1(1)==30*v3+1  
JUMP/JP2:  
ENDIF  
Z1=(&I*R*V1(1)*12/180)*V2*(SINF(A1)/COSF(A1))
R=R1+(R2-R1)*Z1/L  $$变化的半径
A1=ATANF(S/(2*R*&I))
  
X1=R*SINF(V1(1)*12)*a  
Y1=R*COSF(V1(1)*12)   
     
  
POINT1(V1(1)+1)=POINT/X1,Y1,Z1  
V1(1)=V1(1)+1  
JUMP/JP1:  
  
JP2:  
HELIX2=BCURVE/POINT1(1..V1(1)),DEGREE,3,IFERR,JEND:  
  
JEND:  
DELETE/POINT1(1..V1(1))  
  
V1(2)=0  
V2=a $$ DEFAULT RIGHT HAND  
  
B1=ATANF(S/D1*1/&pi) $$ DEFAULT ANGLE EQUAL TO 10 DEGREE  
  
JP3:  
  
IFTHEN/V1(2)==30*V3+1  
JUMP/JP4:  
ENDIF  
  
X1=a*R2*SINF(V1(2)*12)  
Y1=R2*COSF(V1(2)*12)  
Z1=(&I*R2*V1(2)*12/180)*(SINF(B1)/COSF(B1))  
     
  
POINT1(V1(2)+1)=POINT/X1,Y1,Z1  
V1(2)=V1(2)+1
JUMP/JP3:  
  
JP4:  
HELIX1=BCURVE/POINT1(1..V1(2)),DEGREE,3,IFERR,JEND2:  
  
JEND2:  
DELETE/POINT1(1..V1(2))
  
MAT1=MATRIX/TRANSL,0,0,w
HELIX3=TRANSF/MAT1,HELIX2
HELIX4=TRANSF/MAT1,HELIX1
作者: shi813    时间: 2005-8-6 12:03
这是截面为四边形的扫面结果
作者: shi813    时间: 2005-8-6 12:04
请帮忙看看,给点建议,谢谢
作者: shi813    时间: 2005-8-8 10:12
peter兄啊,请帮忙看看了,谢谢先
作者: lnw430522    时间: 2007-9-14 20:55
用UG/KF语言能做出螺旋线来吗?谢谢了。
作者: lnw430522    时间: 2007-9-17 10:28
请问下:
程序中:' screw width=',w,$
                w=12
                     Z1=(&I*R*V1(1)*12/180)*V2*(SINF(A1)/COSF(A1))
                X1=R*SINF(V1(1)*12)*a  
              Y1=R*COSF(V1(1)*12)  
  的w=12这个参数对于螺旋线来说起到什么作用?这个一直看不明白。谢谢了。还有参考什么样的书才能找到上面的方程式呢?十分感谢
作者: lnw430522    时间: 2007-10-14 00:20
请楼上讨论的高手们解答一下吧 大家也来讨论下吧 我觉得这个帖子真的挺不错的  。只是我不会而已。谢谢了
作者: Repa    时间: 2008-9-6 11:47
刚好看过,正在做
12只是控制点的疏密




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3