ANSYS中弯矩、剪力图的绘制

一段一段的,好像马赛克,其实上面整体弯矩图也是,不过不是 很明显罢了。这是EULER-BEONOULI梁理论以及ANSYS输出定义造成 的(详细原因就不展开了,看看梁理论的书和ANSYS的说明吧)。 为了修正重影和节点两边内力值不一样的问题,遍制了宏文件ITFAVG.MAC 命令文件内容如下:

!---------------------------------------------------------------------

!宏:ITFAVG.MAC(INTERNAL FORCE AVERAGE MACRO) !获取线性单元内力,并对单元边界处的内力进行平衡

!输入信息

!内力类型:MFORX,MFORY,MFORZ,MMOMX,MMOMY,MMOMZ

*ASK,ITFTYPE,'PLEASE INPUT THE TYPE OF INTERNAL FORCE','MMOMY' !需处理的单元包

*ASK,EASSEMBLY,'PLEASE INPUT THE COMPONENT NAME OF ELEMENTS TO BE PROCESSED!', 'EOUTER'

!需处理的节点包

*ASK,NASSEMBLY,'PLEASE INPUT THE COMPONENT NAME OF NODE TO BE PROCESSED!','NOU TER'

!无需处理的节点包

*ASK,UNASSEMBLY,'PLEASE INPUT THE COMPONENT NAME OF THE UNCHANGED NODE!(NONE I

F THERE'S NO SUCH COMPONENT)','NONE' /POST1

!输入信息:内力类型,欲处理单元的集合,欲处理节点的集合 !ITFTYPE='MMOMY' !EASSEMBLY='EOUTER' !NASSEMBLY='NOUTER'

!按内力类型确定ANSYS输出信息SMISC的编号 *IF,ITFTYPE,EQ,'MFORX',THEN

ITFINUM=1 ITFJNUM=7

*ELSEIF,ITFTYPE,EQ,'MFORY',THEN ITFINUM=2 ITFJNUM=8

*ELSEIF,ITFTYPE,EQ,'MFORZ',THEN ITFINUM=3 ITFJNUM=9

*ELSEIF,ITFTYPE,EQ,'MMOMX',THEN ITFINUM=4 ITFJNUM=10

*ELSEIF,ITFTYPE,EQ,'MMOMY',THEN ITFINUM=5 ITFJNUM=11

*ELSEIF,ITFTYPE,EQ,'MMOMZ',THEN ITFINUM=6 ITFJNUM=12 *ELSE *ENDIF

!对不需平均的节点进行处理

*IF,UNASSEMBLY,NE,'NONE',THEN

!选出不进行处理的节点包并获取不进行处理节点的数目 CMSEL,S,UNASSEMBLY

*GET,UNNODNUM,NODE,0,COUNT

!定义长度为UNNODNUM的数组(UNNOD),以存放选中单元的单元编号 *DIM,UNNOD,ARRAY,UNNODNUM

!将选中单元的编号按顺序存入数组UNNOD *DO,I,0,UNNODNUM-1,1 UNNOD(I+1)=NDNEXT(I) *ENDDO *ELSE

UNNODNUM=0 *ENDIF

!选出所需的单元和节点包 CMSEL,S,EASSEMBLY CMSEL,S,NASSEMBLY

!获得当前选中单元总数(存入变量SELELENUM) *GET,SELELENUM,ELEM,0,COUNT

!定义长度为SELELENUM的数组(ELENUM),以存放选中单元的单元编号 *DIM,ELENUM,ARRAY,SELELENUM !将选中单元的编号按顺序存入数组ELENUM *DO,I,0,SELELENUM-1,1 ELENUM(I+1)=ELNEXT(I) *ENDDO

!获得当前选中节点总数(存入变量SELNODNUM) *GET,SELNODNUM,NODE,0,COUNT

!定义长度为SELNODNUM的数组(NODNUM),以存放选中单元的单元编号 *DIM,NODNUM,ARRAY,SELNODNUM !将选中单元的编号按顺序存入数组NODNUM *DO,I,0,SELNODNUM-1,1 NODNUM(I+1)=NDNEXT(I) *ENDDO

!定义所需的线性单元内力ETABLE,节点I的内力存入数组ITNFI, !节点J的内力存入数组ITNFJ ETABLE,ITNFI,SMISC,ITFINUM ETABLE,ITNFJ,SMISC,ITFJNUM

!定义所需的结果数组,并将其置零 ETABLE,ITNFINEO,SMISC,5 SADD,ITNFINEO,ITNFI,,1 ETABLE,ITNFJNEO,SMISC,11 SADD,ITNFJNEO,ITNFJ,,1 *DO,K,1,SELNODNUM,1 !处理不需平均的节点 INDEX=0

*IF,UNNODNUM,GE,1,THEN *DO,J,1,UNNODNUM

*IF,NODNUM(K),EQ,UNNOD(J),THEN INDEX=1 *ELSE *ENDIF *ENDDO *ELSE *ENDIF

*DO,J,1,SELELENUM,1

!选出和节点K相连的线性单元中,I节点(对线性单元而言)为节点K的单元编号 *IF,NELEM(ELENUM(J),1),EQ,NODNUM(K),THEN ELEI=ELENUM(J) *EXIT *ELSE *ENDIF *ENDDO

*DO,J,1,SELELENUM,1

!选出和节点K相连的线性单元中,J节点(对线性单元而言)为节点K的单元编号 *IF,NELEM(ELENUM(J),2),EQ,NODNUM(K),THEN ELEJ=ELENUM(J) *EXIT

联系客服:779662525#qq.com(#替换为@)