最近用到耦合,写了一段小程序,奉献出来,与大家共享。
如果有很多节点,每两个节点位置相同,如果将这些杂乱无章的节点
耦合,是件很麻烦的事,可用这段程序,轻松解决。
cpnum=0
cmsel,s,n-zhong !需要耦合的节点
*GET,n_num,NODE,,COUNT, , , , !节点总数
*do,i,1,n_num
cmsel,s,n-zhong
*GET,n_lowest,NODE,,NUM,MIN, , , , !号码最小的节点
*GET,n_x,NODE,n_lowest,LOC,X !该节点坐标
*GET,n_y,NODE,n_lowest,LOC,Y
*GET,n_z,NODE,n_lowest,LOC,Z
NSEL,s,LOC,X,n_x-0.3,n_x+0.3 !寻找与该节点位置相同的节点
NSEL,R,LOC,Y,n_y-0.3,n_y+0.3
NSEL,R,LOC,z,n_z-0.3,n_z+0.3
cm,n_cp_cp,node !位置相同的节点形成一个组
cmsel,s,n-zhong
cmsel,u,n_cp_cp
cm,n-zhong,node !取消这些点后剩余的点形成组
*GET,n_num_1,NODE,,COUNT, , , , !节点总数
*if,n_num_1,lt,2,exit !如果节点数小于二则退出
cmsel,s,n_cp_cp
*GET,n_num,NODE,,COUNT, , , ,
*if,n_num,gt,1,then
CP,cpnum+1,ux,all
CP,cpnum+2,uy,all
CP,cpnum+3,uz,all
cpnum=cpnum+3
*else
*endif
*enddo
:8):8):8)
该段程序可用
CPINTF,UX,0.001
CPINTF,UY,0.001
CPINTF,UZ,0.001
代替
耦合与共节点的差别的大小在于耦合的自由度.
如果Ux、Uy、Uz、ROTx、ROTy、ROTz都耦合,与MERGE的结果是一样的。
上面的例子只耦合Ux、Uy、Uz,与MERGE的差别就大了。
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
如果节点有规律,可做一个循环语句简化程序:
*DO,I,1,N
CP,I,Ux,I,I+720 !UX是自由度,可以修改为Uy或ALL等
*ENDDO
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
耦合是在位置相同、节点号不同的节点间进行的,如果将一条线分成N条
线,线与线之间是共KEYPOINT的,分网后直接共节点,即该处的节点NODE
号相同,不需要耦合的。
若想耦合,可以复制分成N段的线,查看每条线的KEYPOINT在连接处
是两个点,这样分网后,可以对NODE进行耦合。