首页/文章/ 详情

算例丨ANSYS法兰有限元分析实例(附命令流)

10月前浏览4132
     
一、前言        
     

本文为 ANSYS 有限元分析 系列博客中所采用的法兰分析实例的系列命令流。

   
二、创建法兰      
     
    FINISH                                ! 退出当前处理器/CLEAR,ALL                            ! 清除所有/PREP7                                ! 进人前处理器*AFUN,RAD                             ! 指定角度单位为弧度(非必要步骤)pi = ACOS(-1)                         ! 获取圆周率pi的数值(非必要步骤)*AFUN,DEG                             ! 将角度单位切换为度(非必要步骤)/com,************* 1. 创建坐标系 *************CSYS,0                                ! 激活总体直角坐标系统xc = 500 $ yc = 0 $ zc = 0            ! 局部坐标系原点位置(相对应当前激活坐标系)thxy = 0 $ thyz = 0 $ thzx = 90       ! 局部坐标轴旋转角度度(相对应当前激活坐标系)LOCAL,15,0,xc,yc,zc,thxy,thyz,thzx    ! 创建局部直角坐标系15CSYS,15                               ! 激活局部坐标系15xc = 1000 $ yc = 0 $ zc = 0           ! 局部坐标系原点位置(相对应当前激活坐标系)thxy = 0 $ thyz = 0 $ thzx = 0        ! 局部坐标轴旋转角度度(相对应当前激活坐标系)CLOCAL,16,1,xc,yc,zc,thxy,thyz,thzx   ! 根据激活的局部坐标系15定义新的局部柱坐标系16/com,************** 2. 创建几何 **************CSYS,16                               ! 激活局部柱坐标系16WPCSYS,-1                             ! 根据当前坐标系定义工作平面d0 = 40                               ! 螺栓孔直径为40K,1,d0/2,0 $ K,2,d0/2,45 $ K,3,d0/2,90 $ K,4,d0/2,135 $ K,5,d0/2,180 L,1,2                                 ! 由两个关键点创建一条线(可以是直线或是弧线取决于坐标系)*REPEAT,4,1,1                         ! 上一条命令重复执行4次,始末关键点编号增量为1。CSYS,15                               ! 激活局部坐标系15CLOCAL,17,1                           ! 根据激活的局部坐标系15定义新的局部柱坐标系17WPCSYS,-1,                            ! 根据当前坐标系定义工作平面width = 88                            ! 环带宽度为88num = 55                              ! 螺栓总数Ds = 2000                             ! 螺栓分度圆直径K,6,Ds/2+width/2 $ K,7,Ds/2+width/2,180/num  $ K,8,Ds/2,180/num K,9,Ds/2-width/2,180/num $ K,10,Ds/2-width/2,0L,6,7 *REPEAT,4,1,1L,1,6*REPEAT,5,1,1  /PNUM,KP,1                            ! 显示关键点编号/PNUM,LINE,1                          ! 显示线编号/REPLOT                               ! Replot GPLOT                                 ! Multi-Plots AL,1,10,5,9                           ! 创建平面,平面由边界线围成,边界线的编号分别为1、10、5、9。*REPEAT,4,1,1,1,1                     ! 上一条命令重复执行4次,各边界线编号增量均为1。/PNUM,KP,0                            ! 关闭关键点编号显示/PNUM,LINE,0                          ! 关闭线编号显示/PNUM,AREA,1                          ! 显示面的编号                 /REPLOT                               ! ReplotGPLOT                                 ! Multi-Plots/com,************** 3. 定义材性 **************ALLSEL,ALL                        ! *GET前最好全选,以免出现意向不到的错误。*GET,mtmax,MAT,,NUM,MAX           ! 获取当前定义的最大单元类型编号并将其赋予变量mtmax。MPTEMP,,,,,,,,                    ! 为材料属性定义温度表MPTEMP,1,0                        ! 为材料属性定义温度表MPDATA,EX,mtmax+3,,2e5            ! 定义mtmax+1号材料属性弹性模量     MPDATA,PRXY,mtmax+3,,0.28         ! 定义mtmax+1号材料属性泊松比MPDATA,DENS,mtmax+3,,2700         ! 定义mtmax+1号材料属性密度/com,************** 4. 定义单元 **************! MESH200单元*GET,etmax,ETYP,,NUM,MAX          ! 获取当前定义的最大单元类型编号并将其赋予变量etmax (etmax=0)。ET,etmax+2,MESH200                ! 定义单元类型为Mesh200,其单元识别号为etmax+2。KEYOPT,etmax+2,1,7                ! 设置单元etmax+2的关键选项,即令 Keyoption(1)=7。! SOLID186单元ET,etmax+3,SOLID186               ! 定义单元类型为SOLID186,其单元识别号为etmax+3。KEYOPT,etmax+3,2,1                ! 设置单元关键选项,将单元类型参考号为etmax+1的单元设置为完全积分单元。/com,************** 5. 设置种子 **************LESIZE,9, , ,2, , , , ,0              ! 设置组成面的边(线)的网格大小,编号为9的线被分成2段。*REPEAT,5,1                           ! 上一条命令重复执行5次LESIZE,1, , ,2, , , , ,0              ! 设置线的网格大小,编号为1的线被分成2段。*REPEAT,4,1                           ! 上一条命令重复执行4次LESIZE,8, , ,2, , , , ,0              ! 设置线的网格大小,编号为8的线被分成2段。/com,************** 6. 创建网格 **************MAT,mtmax+3                           ! 给随后生成的单元激活一个材料号TYPE,etmax+2                          ! 给随后生成的单元激活一个单元类型号MSHAPE,0,2D                           ! 指定划分单元的形状,生成四边形单元。MSHKEY,1                              ! 采用映射网格划分方式划分网格AMESH,ALL                             ! 将所有面划分网格/PNUM,ELEM,1                          ! 显示单元编号/REPLOT                               ! Replot EPLOT                                 ! Elements plots/VIEW,1,-1                            ! Left View       /ANG,1  /REP,FAST MAT,mtmax+3                           ! 给随后生成的单元激活一个材料号TYPE,etmax+3                          ! 给随后生成的单元激活一个单元类型号! 执行拉伸EXTOPT,ESIZE,8,1,                     ! EXTOPT:由面单元生成体单元的控制选项;                                      ! 8表示在体生成或体扫略方向上单元分割数量为8;                                      ! 1表示在体生成或体扫略方向上的间隔率为1(默认)。EXTOPT,ACLEAR,1                       ! 体单元网格生成后清除面单元网格即MESH200。tf = 40                               ! 法兰厚度为40VEXT,ALL, , ,0,0,tf                   ! 通过给的偏移量由面生体EPLOT                                 ! Elements plots/REPLOT                               ! Replot/com,************** 7. 镜像及阵列 **************CSYS,15                               ! 激活局部直角坐标系15VSYMM,Y,ALL, , , ,0,0                 ! 对所有几何体进行镜像操作,镜像平面为xoz平面。CSYS,17                                      ! 激活局部柱坐标系17num = 55                                     ! 螺栓总数VGEN,4,ALL, , , ,360/num, , ,0               ! 复 制体,重复生成次数4,复 制全部体。                                             ! 当前激活坐标系下,关键点坐标值的偏移量为(--,360/num,0)                                             ! 单个偏转角度为360/num/PNUM,ELEM,0                                 ! 关闭单元编号显示/REPLOT                                      ! ReplotEPLOT                                        ! Elements plotsNUMMRG,ALL                                   ! 对实体进行合并NUMCMP,ALL                                   ! 压缩所定义项的编号ALLSEL,ALL,ELEM                              ! Selects all elements.CM,TopFlangeElems,ELEM                       ! 由所选实体生成一个组件                                             ! 元件名称:TopFlangeElems;元件中的数据类型:单元。CSYS,16                                      ! 激活局部柱坐标系16CLOCAL,19,0                                  ! 创建局部直角坐标系19VSYMM,Z,ALL, , , ,0,0                        ! 对所有几何体进行镜像操作,镜像平面为局部坐标系19的xoY平面。ALLSEL,ALL,ELEM                              ! Selects all elements.CMSEL,U,TopFlangeElems                       ! 上一选择集中除去组件TopFlangeElems内的单元CM,BotFlangeElems,ELEM                       ! 由所选实体生成一个组件                                             ! 元件名称:BotFlangeElems;元件中的数据类型:单元。/com,************ 8. 输出cdb文件 *************ALLSEL,ALL                                   ! 全选 select all entitiesCDWRITE,DB,'PartFlange','cdb',,'',''         ! 当前模型另存为 PartFlange.cdb 文件。

    法兰模型

       
    三、创建垫片      
         
      FINISH                                ! 退出当前处理器/CLEAR,ALL                            ! 清除所有/PREP7                                ! 进人前处理器*AFUN,RAD                             ! 指定角度单位为弧度(非必要步骤)pi = ACOS(-1)                         ! 获取圆周率pi的数值(非必要步骤)*AFUN,DEG                             ! 将角度单位切换为度(非必要步骤)/com,************* 1. 创建坐标系 *************CSYS,0                                ! 激活总体直角坐标系统xc = 500 $ yc = 0 $ zc = 0            ! 局部坐标系原点位置(相对应当前激活坐标系)thxy = 0 $ thyz = 0 $ thzx = 90       ! 局部坐标轴旋转角度度(相对应当前激活坐标系)LOCAL,15,0,xc,yc,zc,thxy,thyz,thzx    ! 创建局部直角坐标系15CSYS,15                               ! 激活局部坐标系15xc = 1000 $ yc = 0 $ zc = 0           ! 局部坐标系原点位置(相对应当前激活坐标系)thxy = 0 $ thyz = 0 $ thzx = 0        ! 局部坐标轴旋转角度度(相对应当前激活坐标系)CLOCAL,16,1,xc,yc,zc,thxy,thyz,thzx   ! 根据激活的局部坐标系15定义新的局部柱坐标系16/com,************* 2. 创建几何体 *************CSYS,16tf = 40                               ! 法兰盘厚度CLOCAL,18,0,0,0,tf                    ! 创建局部直角坐标系18*GET,vlmax,VOLU,,NUM,MAX              ! 获取当前定义的最大几何体编号并将其赋予变量vlmax。WPCSYS,-1,                            ! 定义工作平面,工作平面为局部直角坐标系18的xoy平面。d0 = 40                               ! 螺栓孔直径为40d1 = 70 $ tw = 5                      ! 垫片外径为70,垫片厚度为5。CYL4,0,0,d0/2,0,d1/2,90,tw            ! 创建四分之一垫片,其编号为V1,见下图。CYL4,0,0,d0/2,90,d1/2,180,tw          ! 创建四分之一垫片,其编号为V2,见下图。CYL4,0,0,d0/2,180,d1/2,270,tw         ! 创建四分之一垫片,其编号为V3,见下图。CYL4,0,0,d0/2,270,d1/2,360,tw         ! 创建四分之一垫片,其编号为V4,见下图。VPLOT                                 ! Volumes plots/PNUM,AREA,0                          ! 关闭几何面编号显示/PNUM,VOLU,1                          ! 显示几何体编号/REPLOT                               ! ReplotVGLUE,1,2,3,4                         ! 粘接1号、2号、3号和4号几何体。! VGLUE,ALL                           ! 粘接全部几何体。/com,************** 3. 定义材性 ***************GET,mtmax,MAT,,NUM,MAX               ! 获取当前定义的最大单元类型编号并将其赋予变量mtmax。MPTEMP,1,0                            ! 为材料属性定义温度表MPDATA,EX,mtmax+1,,2e5                ! 定义mtmax+1号材料属性弹性模量     MPDATA,PRXY,mtmax+1,,0.28             ! 定义mtmax+1号材料属性泊松比MPDATA,DENS,mtmax+1,,7.85e-9          ! 定义mtmax+1号材料属性密度/com,************** 4. 定义单元 ***************GET,etmax,ETYP,,NUM,MAX              ! 获取当前定义的最大单元类型编号并将其赋予变量etmax。ET,etmax+1,SOLID185                   ! 定义单元类型为SOLID185,其单元识别号为etmax+1。KEYOPT,etmax+1,2,2                    ! 设置单元关键选项,KEYOPT(2)=2,Enhanced strain formulation。/com,************** 5. 划分网格 **************CSYS,18                               ! 激活局部主坐标系18tw = 5                                ! 垫片厚度为5MAT,mtmax+1TYPE,etmax+1LSEL,S,LENGTH,,tw                     ! 按长度选线,选择垫片厚度方向上的全部线。LESIZE,ALL, , ,3, , , , ,0            ! 分3段(布种子)LSEL,S,LENGTH,,0,d1/2-d0/2            ! 按长度选线,选择垫片半径方向上的全部线。LESIZE,ALL, , ,3, , , , ,0            ! 分3段(布种子)LSEL,S,LINE, ,ALL                     ! 选择全部线LSEL,U,LENGTH,,tw                     ! 上一选择集中除去长度为tw的线LSEL,U,LENGTH,,0,d1/2-d0/2            ! 上一选择集中除去长度为d1/2-d0/2的线LESIZE,ALL, , ,10, , , , ,0           ! 分10段(布种子)VSWEEP,1                              ! 对1号几何体进行扫掠分网VSWEEP,5                              ! 对5号几何体进行扫掠分网VSWEEP,6                              ! 对6号几何体进行扫掠分网VSWEEP,7                              ! 对7号几何体进行扫掠分网! VSWEEP,ALL /com,************** 6. 环形阵列 **************CSYS,18                               ! 激活局部直角坐标系18tw = 5 $ tf = 40                      ! 分别为垫片厚度和法兰厚度VSEL,S,VOLU, ,ALL                     ! 选择所有几何体VGEN,2,ALL, , , 0,0, -(tw+2*tf)       ! 沿局部轴z轴阵列,坐标增量为-(tw+2*tf),生成相关结点和单元。CSYS,15                               ! 激活局部坐标系15CLOCAL,17,1                           ! 根据激活的局部坐标系15定义新的局部柱坐标系17CSYS,17                               ! 激活局部柱坐标系17num = 55                              ! 螺栓总数VSEL,S,VOLU, ,ALL                     ! 选择所有几何体VGEN,4,ALL, , , ,360/num              ! 复 制体,重复生成次数4。                                      ! 当前激活坐标系下,关键点坐标值的偏移量为(--,360/num,0)                                      ! 单个偏转角度为360/numNUMMRG,ALL                            ! 对实体进行合并NUMCMP,ALL                            ! 压缩所定义项的编号ALLSEL,ALL,ELEM                       ! Selects all elements.CM,WasherElems,ELEM                   ! 由所选实体生成一个组件                                      ! 元件名称:WasherElems;元件中的数据类型:单元。/com,************ 7. 输出cdb文件 *************ALLSEL,ALL                            ! 全选 select all entitiesCDWRITE,DB,'PartWasher','cdb',,'',''  ! 当前模型另存为 PartWasher.cdb 文件。

      垫片模型
           
      四、创建螺栓        
           
        FINISH                                ! 退出当前处理器/CLEAR,ALL                            ! 清除所有/PREP7                                ! 进人前处理器*AFUN,RAD                             ! 指定角度单位为弧度(非必要步骤)pi = ACOS(-1)                         ! 获取圆周率pi的数值(非必要步骤)*AFUN,DEG                             ! 将角度单位切换为度(非必要步骤)/com,************* 1. 创建坐标系 *************CSYS,0                                ! 激活总体直角坐标系统xc = 500 $ yc = 0 $ zc = 0            ! 局部坐标系原点位置(相对应当前激活坐标系)thxy = 0 $ thyz = 0 $ thzx = 90       ! 局部坐标轴旋转角度度(相对应当前激活坐标系)LOCAL,15,0,xc,yc,zc,thxy,thyz,thzx    ! 创建局部直角坐标系15CSYS,15                               ! 激活局部坐标系15xc = 1000 $ yc = 0 $ zc = 0           ! 局部坐标系原点位置(相对应当前激活坐标系)thxy = 0 $ thyz = 0 $ thzx = 0        ! 局部坐标轴旋转角度度(相对应当前激活坐标系)CLOCAL,16,1,xc,yc,zc,thxy,thyz,thzx   ! 根据激活的局部坐标系15定义新的局部柱坐标系16/com,************** 2. 定义材料 ***************GET,mtmax,MAT,,NUM,MAX               ! 获取当前定义的最大单元类型编号并将其赋予变量mtmax。MPTEMP,,,,,,,,                        ! 为材料属性定义温度表MPTEMP,1,0                            ! 为材料属性定义温度表MPDATA,EX,mtmax+1,,2e5                ! 定义mtmax+1号材料属性弹性模量     MPDATA,PRXY,mtmax+1,,0.28             ! 定义mtmax+1号材料属性泊松比MPDATA,DENS,mtmax+1,,2700             ! 定义mtmax+1号材料属性密度/com,************** 3. 定义单元 ***************GET,etmax,ETYP,,NUM,MAX              ! 获取当前定义的最大单元类型编号并将其赋予变量etmax。ET,etmax+1,BEAM189                    ! 定义梁单元/com,************** 4. 定义截面 ***************GET,scmax,SECP,,NUM,MAX              ! 获取当前定义的最大梁截面编号并将其赋予变量scmax。SECTYPE,scmax+1,BEAM,CSOLID, ,0       ! 定义梁截面SECOFFSET,CENT                        ! 设置截面偏置,即梁杆轴端点位于梁截面形心上。de = 38                               ! 螺栓有效直径SECDATA,de/2,10,3                     ! 应力截面直径,圆周方向10份,半径方向3份。SECTYPE,scmax+2,BEAM,CSOLID, ,0 SECOFFSET,CENTds = 26                               ! 螺栓缩进段直径SECDATA,ds/2,10,3         /com,************* 5. 创建关键点 *************CSYS,16CLOCAL,19,0                           ! 创建局部直角坐标系19tf = 40 $ tw = 5                      ! 分别为法兰厚度及垫片厚度startPntZ = -(tf+tw)                  ! 在局部坐标系19下,梁轴线起点z坐标值。midPntZ = 0                           ! 螺栓预紧力施加位置处endPntZ= tf+tw                        ! 在局部坐标系19下,梁轴线终点z坐标值。*GET,lnmax,LINE,,NUM,MAX              ! 获取当前定义的最大几何线编号并将其赋予变量lnmax。*GET,kpmax,KP,,NUM,MAX                ! 获取当前定义的最大关键点编号并将其赋予变量kpmax。K, ,0,0,startPntZ                     ! 创建关键点K, ,0,0,midPntZ K, ,0,0,20K, ,0,0,endPntZ /com,************** 6. 连点成线 **************LSTR,kpmax+1,kpmax+2                  ! 创建直线*REPEAT,3,1,1/com,*************** 7. 布种子 ***************LESIZE,lnmax+1, , ,6,1, , , ,0        ! 单元数量6LESIZE,lnmax+2, , ,6,1, , , ,0        ! 单元数量6LESIZE,lnmax+3, , ,3,1, , , ,0        ! 单元数量3/com,************** 8. 分配属性 **************TYPE,etmax+1                          ! 激活单元类型号MAT,mtmax+1                           ! 激活材料编号SECNUM,scmax+1                        ! 激活截面编号LMESH,lnmax+1                         ! 为编号为lnmax+1的线划分网格LMESH,lnmax+2                         ! 为编号为lnmax+2的线划分网格TYPE,etmax+1                          ! 激活单元类型号MAT,mtmax+1                           ! 激活材料编号SECNUM,scmax+2                        ! 激活截面编号LMESH,lnmax+3                         ! 为编号为lnmax+2的线划分网格/ESHAPE,1                             ! 显示梁截面/REPLOT                               ! Replot/com,************** 9. 环形阵列 **************CSYS,15                               ! 激活局部坐标系15CLOCAL,17,1                           ! 根据激活的局部坐标系15定义新的局部柱坐标系17CSYS,17                               ! 激活局部柱坐标系17num = 55                              ! 螺栓总数!LSEL,S,LINE, ,ALL                    ! 选择全部线LGEN,4,ALL, , , ,360/num, , ,0        ! 执行阵列,额外阵列数为3。ALLSEL,ALLNUMMRG,ALL                            ! 对实体进行合并NUMCMP,ALL                            ! 压缩所定义项的编号/ESHAPE,0                             ! 关闭梁截面显示/REPLOT                               ! ReplotALLSEL,ALL,ELEM                       ! Selects all elements.CM,BoltElems,ELEM                     ! 由所选实体生成一个组件                                      ! 元件名称:BoltElems;元件中的数据类型:单元。/com,*********** 10. 创建预紧单元 ***********CSYS,15                               ! 激活局部坐标系15CLOCAL,17,1                           ! 根据激活的局部坐标系15定义新的局部柱坐标系17CSYS,17                               ! 激活局部柱坐标系17num = 55                              ! 螺栓总数radius = 1000                         ! 法兰螺栓分度圆半径*DO,i,1,4    CMSEL,S,BoltElems                     ! 选择组件BoltElems(全部螺栓杆单元)    ALLSEL,BELOW,ELEM                     ! 选择单元以下附属即构成单元的结点    startAngle = (360/num)*(i-1)-(360/num/2-1)    endAngle = (360/num)*(i-1)+(360/num/2-1)    NSEL,R,LOC,Y,startAngle,endAngle    ESLN,,1    ESEL,R,ENAME,,BEAM189                 ! 选择BEAM189单元    zmid = 0                              ! 预紧力施加位置处的z坐标值    CLOCAL,201,1,radius,360/num*(i-1),0   ! 创建螺栓杆处的局部柱坐标系201    PSMESH,1001+i, , ,ALL, , 15,Z, ,node(0,0,zmid),, , ,  !螺栓杆中间位置处插入预紧单元    CSYS,17                               ! 激活局部柱坐标系17*ENDDOALLSEL,ALLEPLOT ALLSEL,ALL,ELEM                       ! Selects all elements.CM,BoltElems,ELEM                     ! 由所选实体生成一个组件                                      ! 元件名称:BoltElems;元件中的数据类型:单元。/com,************* 11. 输出cdb文件 *************ALLSEL,ALL                            ! 全选 select all entitiesCDWRITE,DB,'PartBolt','cdb',,'',''    ! 当前模型另存为 PartBolt.cdb 文件。

        螺栓模型

        179 选择预紧单元
           
        五、创建接触      
             
          FINISH                                ! 退出当前处理器/CLEAR,ALL                            ! 清除所有/PREP7                                ! 进人前处理器/com,************** 1. 导入cdb文件 **************CDREAD,db,'PartFlange','cdb',,'',''   ! 导入法兰模型CDREAD,db,'PartWasher','cdb',,'',''   ! 导入垫片模型CDREAD,db,'PartBolt','cdb',,'',''     ! 导入栓杆模型ALLSEL,ALL/ESHAPE,0                             ! 显示梁截面/REPLOT                               ! ReplotEPLOT                                 ! Elements plots/com,************** 2. 创建坐标系 **************CSYS,0                                ! 激活总体直角坐标系统xc = 500 $ yc = 0 $ zc = 0            ! 局部坐标系原点位置(相对应当前激活坐标系)thxy = 0 $ thyz = 0 $ thzx = 90       ! 局部坐标轴旋转角度度(相对应当前激活坐标系)LOCAL,15,0,xc,yc,zc,thxy,thyz,thzx    ! 创建局部直角坐标系15CSYS,15                               ! 激活局部坐标系15xc = 1000 $ yc = 0 $ zc = 0           ! 局部坐标系原点位置(相对应当前激活坐标系)thxy = 0 $ thyz = 0 $ thzx = 0        ! 局部坐标轴旋转角度度(相对应当前激活坐标系)CLOCAL,16,1,xc,yc,zc,thxy,thyz,thzx   ! 根据激活的局部坐标系15定义新的局部柱坐标系16/com,************** 3. 螺栓端部与上法兰侧垫片间MPC绑定接触*GET,etmax,ETYP, ,NUM,MAX             ! 获取模型空间当前最大单元类型号*GET,rlmax,RCON, ,NUM,MAX             ! 获取模型空间当前最大实常数号ET,etmax+1,TARGE170                   ! 定义目标面单元 - 连续面KEYOPT,etmax+1,2,1                    ! 用户指定 rigid target nodesET,etmax+2,CONTA174                   ! 定义接触面单元 - 离散面KEYOPT,etmax+2,2,2                    ! 接触算法:MPC。KEYOPT,etmax+2,4,1                    ! 接触探测点位置:On nodal point - normal from contact surface 。KEYOPT,etmax+2,12,5                   ! 接触面行为:始终绑定。num = 55                              ! 螺栓总数radius = 1000                         ! 法兰螺栓分度圆半径tf = 40 $ tw = 5                      ! 分别为法兰厚度及垫片厚度startPntZ = -(tf+tw)                  ! 在局部坐标系15下,梁轴线起点z坐标值。midPntZ = 0                           ! 螺栓预紧力施加位置处endPntZ= tf+tw                        ! 在局部坐标系15下,梁轴线终点z坐标值。d0 = 40                               ! 螺栓孔直径/垫片内径d1 = 70                               ! 垫片外径CSYS,17                               ! 激活局部坐标系17*DO,i,1,4                                 ! DO循环,分别执行 i=1,2,3,4 共执行4次。    CLOCAL,201,1,radius,360/num*(i-1),0   ! 螺栓杆处的局部柱坐标系201    R,rlmax+i                             ! 定义新的实常数    REAL,rlmax+i                          ! 激活实常数    TYPE,etmax+1                          ! 激活目标单元类型号    TSHAP,PILO                            ! 目标单元几何形状为导向结点    CMSEL,S,BoltElems                     ! 选择组件BoltElems(全部螺栓杆单元)    ALLSEL,BELOW,ELEM                     ! 选择单元以下附属即构成单元的结点    E,NODE(0,0,endPntZ)                   ! 在结点(0,0,endPntZ)处创建目标单元    ALLSEL,ALL                            ! 全选,清除上述选择集。    TYPE,etmax+2                          ! 激活接触单元类型号    CMSEL,S,WasherElems                   ! 选择组件WasherElems(全部垫片单元)    ALLSEL,BELOW,ELEM                     ! 选择单元以下附属即构成单元的结点    NSEL,R,EXT                            ! 选择外表面结点    ! 按坐标位置选择结点,最终选出垫片外表面结点。    NSEL,R,LOC,X,0,d1/2+0.5                 NSEL,R,LOC,Z,endPntZ-0.5,endPntZ+0.5    ESURF, ,TOP                           ! 在存在已选单元的自由面上生成重叠单元,即创建接触单元。    ALLSEL,ALL    CSYS,17*ENDDO/com,************** 4. 螺栓端部与下法兰侧垫片间MPC绑定接触*GET,etmax,ETYP, ,NUM,MAX             ! 获取模型空间当前最大单元类型号*GET,rlmax,RCON, ,NUM,MAX             ! 获取模型空间当前最大实常数号ET,etmax+1,TARGE170                   ! 定义目标面单元 - 连续面KEYOPT,etmax+1,2,1                    ! 用户指定 rigid target nodesET,etmax+2,CONTA174                   ! 定义接触面单元 - 离散面KEYOPT,etmax+2,2,2                    ! 接触算法:MPC。KEYOPT,etmax+2,4,1                    ! 接触探测点位置:On nodal point - normal from contact surface 。KEYOPT,etmax+2,12,5                   ! 接触面行为:始终绑定。num = 55                              ! 螺栓总数radius = 1000                         ! 法兰螺栓分度圆半径tf = 40 $ tw = 5                      ! 分别为法兰厚度及垫片厚度startPntZ = -(tf+tw)                  ! 在局部坐标系15下,梁轴线起点z坐标值。midPntZ = 0                           ! 螺栓预紧力施加位置处endPntZ= tf+tw                        ! 在局部坐标系15下,梁轴线终点z坐标值。d0 = 40                               ! 螺栓孔直径/垫片内径d1 = 70                               ! 垫片外径CSYS,17                               ! 激活局部坐标系17*DO,i,1,4                                 ! DO循环,分别执行 i=1,2,3,4 共执行4次。    CLOCAL,201,1,radius,360/num*(i-1),0   ! 螺栓杆处的局部柱坐标系201    R,rlmax+i                             ! 定义新的实常数    REAL,rlmax+i                          ! 激活实常数    TYPE,etmax+1                          ! 激活目标单元类型号    TSHAP,PILO                            ! 目标单元几何形状为导向结点    CMSEL,S,BoltElems                     ! 选择组件BoltElems(全部螺栓杆单元)    ALLSEL,BELOW,ELEM                     ! 选择单元以下附属即构成单元的结点    E,NODE(0,0,startPntZ)                 ! 在结点(0,0,startPntZ)处创建目标单元    ALLSEL,ALL                            ! 全选,清除上述选择集。    TYPE,etmax+2                          ! 激活接触单元类型号    CMSEL,S,WasherElems                   ! 选择组件WasherElems(全部垫片单元)    ALLSEL,BELOW,ELEM                     ! 选择单元以下附属即构成单元的结点    NSEL,R,EXT                            ! 选择外表面结点    ! 按坐标位置选择结点,最终选出垫片外表面结点。    NSEL,R,LOC,X,0,d1/2+0.5                 NSEL,R,LOC,Z,startPntZ-0.5,startPntZ+0.5    ESURF, ,TOP                           ! 在存在已选单元的自由面上生成重叠单元,即创建接触单元。    ALLSEL,ALL    CSYS,17*ENDDO/com,************** 5. 创建法兰与垫片间标准接触*GET,etmax,ETYP, ,NUM,MAX             ! 获取模型空间当前最大单元类型号*GET,rlmax,RCON, ,NUM,MAX             ! 获取模型空间当前最大实常数号R,rlmax+1                             ! 定义新的实常数ET,etmax+1,170                        ! 定义目标面单元 - 连续面ET,etmax+2,174                        ! 定义接触面单元 - 离散面KEYOPT,etmax+2,2,0                    ! 接触算法:增广拉格朗日乘子法。KEYOPT,etmax+2,4,0                    ! 接触探测点位置:高斯积分点。KEYOPT,etmax+2,5,4                    ! CNOF/ICONT Automated adjustment: Auto ICONT.KEYOPT,etmax+2,9,2                    ! 初始穿透/间隙效应:包含初始几何穿透或间隙和偏置,但带有坡道效应。KEYOPT,etmax+2,10,2                   ! 接触刚度更新:在每个迭代步基于下层单元目前的平均应力进行更新,                                      ! 但在整个求解过程中实际弹性滑移始终不超过最大允许极限。MP,MU,etmax+1,0.3                     ! 定义摩擦系数CSYS,17                               ! 激活局部坐标系17REAL,rlmax+1                          ! 激活实常数MAT,etmax+1                           ! 激活材料编号tf = 40 $ tw = 5                      ! 分别为法兰厚度及垫片厚度TYPE,etmax+1                          ! 激活目标单元类型号CMSEL,S,WasherElems                   ! 选择组件WasherElems(全部螺栓杆单元)ALLSEL,BELOW,ELEM                     ! 选择单元以下附属即构成单元的全部结点NSEL,R,EXT                            ! 选择表面全部结点NSEL,R,LOC,Z,-tf-0.5,tf+0.5           ! 选择位于接触面上的全部结点ESLN,S,0                              ! 选择结点附属单元,0表示单元的任何一个结点被选中,则该单元被选中。ESURF                                 ! 在存在已选单元的自由面上生成重叠单元,即创建接触单元。ALLSEL,ALL                            ! 全选,清除上述选择集。TYPE,etmax+2                          ! 激活接触单元类型号CMSEL,S,TopFlangeElems                ! 选择组件TopFlangeElems(上法兰全部单元)CMSEL,A,BotFlangeElems                ! 补选组件BotFlangeElems(上法兰全部单元)ALLSEL,BELOW,ELEM                     ! 选择单元以下附属即构成单元的结点NSEL,R,EXT                            ! 选择外表面结点NSEL,U,LOC,Z,-tf+0.5,tf-0.5           ! 选择位于接触面上的全部结点ESURF                                 ! 在存在已选单元的自由面上生成重叠单元,即创建接触单元。ALLSEL,ALL                            ! 全选,清除上述选择集。/com,************** 6. 创建法兰间的标准接触*GET,etmax,ETYP, ,NUM,MAX             ! 获取模型空间当前最大单元类型号*GET,rlmax,RCON, ,NUM,MAX             ! 获取模型空间当前最大实常数号R,rlmax+1                             ! 定义新的实常数ET,etmax+1,170                        ! 定义目标面单元 - 连续面ET,etmax+2,174                        ! 定义接触面单元 - 离散面KEYOPT,etmax+2,2,0                    ! 接触算法:增广拉格朗日乘子法。KEYOPT,etmax+2,4,0                    ! 接触探测点位置:高斯积分点。KEYOPT,etmax+2,5,4                    ! CNOF/ICONT Automated adjustment: Auto ICONT.KEYOPT,etmax+2,9,2                    ! 初始穿透/间隙效应:包含初始几何穿透或间隙和偏置,但带有坡道效应。KEYOPT,etmax+2,10,2                   ! 接触刚度更新:在每个迭代步基于下层单元目前的平均应力进行更新,                                      ! 但在整个求解过程中实际弹性滑移始终不超过最大允许极限。MP,MU,etmax+1,0.3                     ! 定义摩擦系数CSYS,17                               ! 激活局部坐标系17REAL,rlmax+1                          ! 激活实常数MAT,etmax+1                           ! 激活材料编号tf = 40 $ tw = 5                      ! 分别为法兰厚度及垫片厚度TYPE,etmax+1                          ! 激活目标单元类型号CMSEL,S,TopFlangeElems                ! 选择组件TopFlangeElems(上法兰全部单元)ALLSEL,BELOW,ELEM                     ! 选择单元以下附属即构成单元的结点NSEL,R,EXT                            ! 选择外表面结点NSEL,R,LOC,Z,-0.5,0.5                 ! 选择位于接触面上的全部结点ESURF                                 ! 在存在已选单元的自由面上生成重叠单元,即创建接触单元。ALLSEL,ALL                            ! 全选,清除上述选择集。TYPE,etmax+2                          ! 激活接触单元类型号CMSEL,S,BotFlangeElems                ! 选择组件BotFlangeElems(下法兰全部单元)ALLSEL,BELOW,ELEM                     ! 选择单元以下附属即构成单元的结点NSEL,R,EXT                            ! 选择外表面结点NSEL,R,LOC,Z,-0.5,0.5                 ! 选择位于接触面上的全部结点ESURF                                 ! 在存在已选单元的自由面上生成重叠单元,即创建接触单元。ALLSEL,ALL                            ! 全选,清除上述选择集。(select all entities)/com,************** 7. 定义加载点 ***************GET,rlmax,RCON,0,NUM,MAX   ! 获取模型空间当前最大实常数号*GET,etmax,ETYP,,NUM,MAX    ! 获取模型空间当前最大单元类型号*GET,ndmax,NODE,,NUM,MAX    ! 获取模型空间当前最大结点编号R,rlmax+1                   ! 定义新实常数ET,etmax+1,TARGE170         ! 定义目标面单元 - 连续面   KEYOPT,etmax+1,2,1          ! Boundary conditions for rigid target nodes: Specified by user.ET,etmax+2,CONTA174         ! 定义接触面单元 - 离散面KEYOPT,etmax+2,2,2          ! Contact algorithm: Multipoint constraint (MPC).KEYOPT,etmax+2,4,1          ! Location of contact detection point:                             ! On nodal point - normal from contact surfaceKEYOPT,etmax+2,12,5         ! Behavior of contact surface: Bonded (always).CSYS,17                               ! 激活局部坐标系17num = 55                              ! 螺栓总数tf = 40                               ! 法兰厚度N,ndmax+1,1000,-360/num,0.5*tf        ! 新建结点,结点编号为ndmax+1。NSEL,,NODE,,NODE(1000,-360/num,0.5*tf)CM,loadNode,Node                      ! 为加载点创建一组件ALLSEL,ALL                            ! 退出选择集,显示全部。CSYS,15CMSEL,S,loadNodeNROTAT,ALL                            ! 旋转结点坐标系,方便加载。ALLSEL,ALL                            ! 退出选择集,显示全部。CSYS,17                               ! 激活局部坐标系17REAL,rlmax+1                          ! 激活实常数TYPE,etmax+1                          ! 激活目标单元类型号TSHAP,PILO                            E,ndmax+1                             ! 创建目标单元ALLSEL,ALL                            ! 退出选择集,显示全部。REAL,rlmax+1                          ! 激活实常数TYPE,etmax+2                          ! 激活目标单元类型号CMSEL,S,TopFlangeElems                ! 选择组件TopFlangeElems(上法兰全部单元)ALLSEL,BELOW,ELEM                     ! 选择单元以下附属即构成单元的结点NSEL,R,EXT                            ! 选择外表面结点NSEL,R,LOC,Y,-(360/num/2+0.5),-(360/num/2-0.2)      ! 选择位于加载面上的全部结点ESURF                                 ! 在存在已选单元的自由面上生成重叠单元,即创建接触单元。ALLSEL,ALL                            ! 全选,清除上述选择集。(select all entities)EPLOT   !NUMCMP,ALL                           ! 压缩所定义项的编号(存在预紧单元时别瞎压缩全部)!/DELETE,'PartFlange','cdb'           ! 删除部件文件PartFlange.cdb!/DELETE,'PartWasher','cdb'           ! 删除部件文件PartWasher.cdb!/DELETE,'PartBolt','cdb'             ! 删除部件文件PartBolt.cdb/com,************ 8. 输出装配cdb文件 ************CDWRITE,DB,'AllAsmbs','cdb',,'',''    ! 当前模型另存为 AllAsmbs.cdb 文件。                                      ! AllAsmbs.cdb为装配及接触创建完成后的有限元模型文件。

          接触的创建
               
          六、加载及求解        
               

          load.csv文件
            FINISH                                ! 退出当前处理器/CLEAR,ALL                            ! 清除所有FINISH                                ! Exits normally from a processor./FILNAME,BoltPreloadCase,0            ! Changes the Jobname for the analysis. FINISH /PREP7                                ! 访问前处理器*AFUN,DEG                             ! 设置角度单位为度SHPP,OFF,,NOWARN                      ! 关闭单元形状检测警告/com,************** 1. 导入cdb文件 **************CDREAD,DB,'AllAsmbs','cdb',,'',''     ! 导入装配体模型/com,************** 2. 读取荷载文件 ***************DIM,csvLoads,TABLE,7,6,1             ! 矩阵维度:7行6列1页;Table Array 名称为:csvLoads。*TREAD,csvLoads,'loads','csv',''      ! .csv文件名为loads.csv,load.csv文件见上图。/com,************* 3. 压缩模型编号 **************NUMCMP,NODE                           ! 压缩结点编号NUMCMP,ELEM                           ! 压缩单元编号NUMCMP,MAT                            ! 压缩材料编号NUMCMP,TYPE                           ! 压缩单元类型号NUMCMP,REAL                           ! 压缩实常数编号EPLOT                                 ! Plot elements/com,************ 4. 指定位移边界条件 *************CSYS,17                               ! 激活局部坐标系17CMSEL,S,BotFlangeElems                ! 选择组件BotFlangeElems(下法兰全部单元)ALLSEL,BELOW,ELEM                     ! 选择单元以下附属即构成单元的结点NSEL,R,EXT                            ! 选择外表面结点NSEL,R,LOC,Y,(7*360/num/2-0.5),(7*360/num/2+0.5)     ! 选择位于加载面上的全部结点CM,BCNodes,NODE                       ! 创建组件CSYS,0D,BCNodes,ALL,0                       ! 约束组件BCNodes内所有结点的全部自由度ALLSEL,ALL/com,************ 5. 施加螺栓预紧力 *************preload=790*1000                      ! 施加790KN的预紧力num = 4                               ! 施加预紧力的螺栓个数*DO,i,1,num    SLOAD,1001+i,9,LOCK,FORC,preload,1,2 *ENDDO/com,************ 6. 预紧工况分析 *************/SOLU                 ! 访问求解器! 6.1 设置求解控制ANTYPE,STATIC         ! 静力分析NLGEOM,OFF            ! Ignores large-deflection effects 关闭几何非线性EQSLV,PCG,1E-4        ! 预条件共轭梯度法/公差:1E-4。NSUBST,2,2,2          ! 荷载子步数2,最大子步数2,最小子步数2。AUTOTS,ON             ! 自动荷载步(浮动荷载步)/默认OUTRES,ERASE          ! Resets OUTRES specifications to their default values.OUTRES,ALL,ALL        ! Writes the solution of the specified solution results item for every substep. LSWRITE,1             ! LSNUM=1 载荷步文件编号ALLSEL,ALLSOLVE                 ! 提交求解器进行求解FINISH! 6.2 删除非必要文件/DELETE,'','esav',''   /DELETE,'','emat',''   /DELETE,'','PCS',''/DELETE,'','stat',''/DELETE,'','mntr','' /DELETE,'','osav','' !!! 特别注意:rdb、r001、ldhi文件务必保留,以便后续重启动使用。/com,************ 7. 荷载工况分析 *************! 分工况加载求解loadCaseNum = 7*DO,i,1,loadCaseNum,1      ! 循环变量i的初值为1终止为7增量为1          /FILNAME,LoadCase%i%,0    ! 设置 Job Name     /COPY, 'BoltPreloadCase','rdb','','LoadCase%i%','rdb',''            ! **文件BoltPreloadCase.rdb并重命名为LoadCase1.rdb    /COPY, 'BoltPreloadCase','r001','','LoadCase%i%','r001',''     /COPY, 'BoltPreloadCase','ldhi','','LoadCase%i%','ldhi',''    /SOLU                          ! 访问求解器    /DELETE,'parameter','txt',''     PARSAVE,SCALAR,parameter,txt    ANTYPE,STATIC,RESTART,1,2,0    ! 静力/重启动/LDSTEP=1/SUBSTEP=2    PARRES,CHANGE,'parameter','txt',''    NSUBST,5,5,5                   ! 荷载子步数5,最大子步数5,最小子步数5。    AUTOTS,ON                      ! 自动荷载步(浮动荷载步)/默认    KBC,0                          ! 渐变方式荷载步    !OUTRES,ALL,ALL                ! 写入每个荷载步的全部子步内容    OUTRES,ALL,LAST                ! 写入每个荷载步的最后一个子步内容    CSYS,15    F,loadNode,FX,csvLoads(i,1)    F,loadNode,FY,csvLoads(i,2)    F,loadNode,FZ,csvLoads(i,3)    F,loadNode,MX,csvLoads(i,4)    F,loadNode,MY,csvLoads(i,5)    F,loadNode,MZ,csvLoads(i,6)    ALLSEL,ALL    SOLVE    FINISH    /DELETE,,'emat'    /DELETE,,'esav'    /DELETE,,'osav'    /DELETE,,'r001'    /DELETE,,'r002'    /DELETE,,'rdb'     /DELETE,,'full'     /DELETE,,'ldhi'    /DELETE,,'mntr'    /DELETE,,'pcs'    /DELETE,,'pc6'    /DELETE,,'stat' *ENDDO

            边界条件的指定
            以上命令运行后,得到如下 8 个计算结果文件,分别为 BoltPreloadCase.rst、LoadCase1.rst ~ LoadCase7.rst 。其中,BoltPreloadCase.rst 为结构仅在螺栓预紧力作用下的计算结果文件,LoadCase1.rst ~ LoadCase7.rst 为结构在螺栓预紧力和附加外载共同作用下的计算结果文件。  

                 
            七、后处理        
                   
              FINISH                                ! 退出当前处理器/CLEAR,ALL                            ! 清除所有FINISH                                ! Exits normally from a processor. /PREP7                                ! 访问前处理器*AFUN,DEG                             ! 设置角度单位为度SHPP,OFF,,NOWARN                      ! 关闭单元形状检测警告CDREAD,DB,'AllAsmbs','cdb',,'',''     ! 导入装配体模型/com,******************** 1. 螺栓参数 ********************pi = 3.14159265As = 1120                             ! 应力面积de = SQRT(As*4/pi)                    ! 有效直径d = 42                                ! 公称直径d2 = 39.08                            ! 螺纹中径p = 4.5                               ! 螺纹螺距num = 4                               ! 螺栓个数loadCaseNum = 7                       ! 工况个数preload=790*1000                      ! 预紧力W = pi*(de**3)/32.0                   ! 抗弯截面模量Wt = 2*W                              ! 抗扭截面模量! 螺栓等效应力计算/POST1num = 55                              ! 螺栓总数radius = 1000                         ! 法兰螺栓分度圆半径tf = 40 $ tw = 5                      ! 分别为法兰厚度及垫片厚度startPntZ = -(tf+tw)                  ! 在局部坐标系15下,梁轴线起点z坐标值。midPntZ = 0                           ! 螺栓预紧力施加位置处(梁单元预紧位置点)endPntZ= tf+tw                        ! 在局部坐标系15下,梁轴线终点z坐标值。d0 = 40                               ! 螺栓孔直径/垫片内径d1 = 70                               ! 垫片外径calBoltNum = 4                        ! 模型中螺栓个数*DEL,boltResults*DIM,boltResults,ARRAY,calBoltNum,9torsion = preload*d2*(p/(pi*d2)+1.155*0.09)/2   ! 预紧扭矩 VDI2230-Part1tau = torsion/wt                                ! 预紧扭转剪应力/COPY, 'BoltPreloadCase','rst','','LoadCase0','rst',''  ! 复 制预紧力工况结果文件/com,************* 2. 内力提取并计算等效应力 **************DO,i,0,loadCaseNum,1     ! 工况循环    FILE,LoadCase%i%,'rst'   ! .rst文件名    INRES,ALL                ! 从结果文件中读取全部数据    SET,LAST                 ! 从结果文件中读取最后一个荷载步的数据    loadCaseNum = i    *DO,j,1,calBoltNum,1        ! 螺栓循环        CSYS,17        ESEL,S,ENAME,,189               ! 选择189单元        ALLSEL,BELOW,ELEM               ! 选择单元附属结点        startAngle = (360/num)*(j-1)-(360/num/2-1)        endAngle = (360/num)*(j-1)+(360/num/2-1)        NSEL,R,LOC,Y,startAngle,endAngle        NSEL,R,LOC,Z,startPntZ+7.5-0.5,startPntZ+2*7.5+0.5        ESLN,R,1                        ! 单元全部结点被选中该单元才被选中        *GET,elenum,ELEM,,NUM,Min       ! 获取梁单元编号        ETABLE,ForceX,SMISC,1           ! 梁单元始端截面轴向力        ETABLE,MomentY,SMISC,2          ! 梁单元始端截面绕局部y轴弯矩        ETABLE,MomentZ,SMISC,3          ! 梁单元始端截面绕局部z轴弯矩        ! ETABLE,ForceX,SMISC,14        ! 梁单元终端截面轴向力        ! ETABLE,MomentY,SMISC,15       ! 梁单元终端截面绕局部y轴弯矩        ! ETABLE,MomentZ,SMISC,16       ! 梁单元终端截面绕局部z轴弯矩        *GET,FxVal,ELEM,elenum,ETAB,ForceX       ! 获取梁单元终端截面轴向力数值        *GET,MyVal,ELEM,elenum,ETAB,MomentY      ! 获取梁单元终端截面绕局部y轴弯矩数值        *GET,MzVal,ELEM,elenum,ETAB,MomentZ      ! 获取梁单元终端截面绕局部z轴弯矩数值        boltID = j                                      ! 螺栓编号        MyzVal = SQRT( MyVal**2 + MzVal**2 )            ! 合弯矩        sigmaN = ABS(FxVal/As)                          ! 拉压正应力绝对值        sigmaM = MyzVal/W                               ! 弯曲正应力绝对值        Sigma = sigmaN + sigmaM                         ! 最大正应力        eqvStress = SQRT( Sigma**2 + 3*(0.5*tau)**2 )   ! VDI2230-Part1        ALLSEL,ALL        CSYS,17        boltResults(j,1) = loadCaseNum        boltResults(j,2) = boltID        boltResults(j,3) = FxVal/1E3        boltResults(j,4) = MyzVal/1E6        boltResults(j,5) = sigmaN        boltResults(j,6) = sigmaM        boltResults(j,7) = sigma        boltResults(j,8) = tau        boltResults(j,9) = eqvStress    *ENDDO    !*    !*  汇总计算结果输出    !*     outFileName='BoltResultsLoadCase%i%'     ! 指定.txt文件名    *CFOPEN,outFileName,'txt'                ! 打开文件LoadCase1BoltResults.txt    *VWRITE,    ('  LoadCaseNum    BoltNum    N (kN)    M (kN·m)    SigmaN (N/mm^2)    SigmaM (N/mm^2)    Sigma (N/mm^2)    Tau (N/mm^2)    EqvStress (N/mm^2)  ')    *VWRITE,boltResults(1,1), boltResults(1,2),boltResults(1,3), boltResults(1,4), boltResults(1,5), boltResults(1,6), boltResults(1,7), boltResults(1,8), boltResults(1,9)        (F9.1,F13.1, F12.2, F11.3, F16.2, F18.2, F19.2, F18.2, F19.2)    *CFCLOS   *ENDDO
               
              该命令流运行后,将得到 8 个 .txt 文件,文件内存储这每个工况下,每个螺栓的计算结果数据,如下图所示。  

               
              来源:CAE仿真学社
              VDI2230非线性UM材料控制FAST螺栓ANSYS
              著作权归作者所有,欢迎分享,未经许可,不得转载
              首次发布时间:2023-06-12
              最近编辑:10月前
              CAE仿真学社
              硕士 | CAE仿真工程师 万物皆可仿,关注CAE仿真学社
              获赞 127粉丝 207文章 289课程 0
              点赞
              收藏
              未登录
              还没有评论

              课程
              培训
              服务
              行家

              VIP会员 学习 福利任务 兑换礼品
              下载APP
              联系我们
              帮助与反馈