马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
实验的目的
想将所有节点号及相应x坐标填入表中,节点号作为第一列,再按照节点号提取节点的x作为第0列,其他值放在其他列,这样其他值就可以按照x坐标画曲线了。
实验1
用*get,e_table(1,1,1),node, ,num,min 给(1,1,1)附最小节点号,在给第1列的下一行附节点号时发现不能调用此列第一行的值,下面的程序段出现错误,执行后发现第二行及第二行以下都被附了相同的值。所以怀疑刚刚给表附值时不能用ndnext()函数调用它上面一行的值
*get,e_table(1,1,1),node, ,num,min
*DO,i,2,nnode
e_table(i,1,1)=ndnext(e_table(i-1,1,1))
!*get,e_table(i,1,1),node,e_table(i-1,1,1),nxth,
!j=e_table(i-1,1,1)
!e_table(i,1,1)=ndnext(j)
*ENDDO
循环体内任选其一都得到错误结果,如下:
于是猜想是不是应该把整个列附值完才能用*get调用,于是进行实验2
实验2
将所有节点号通过一维数组,先付给一个表的第1列,然后表的这一列做*get命令的参数提取数据付给其他列。结果出错,*get命令要寻找node 0
下面是命令流
*get,nnode,node, ,count
*DIM,e_table,TABLE,nnode,9,1
*dim,node_num,array,nnode,1,1
!一维数组用来存节点号
*get,node_num(1,1,1),node, ,num,min
*do,i,2,nnode
node_num(i,1,1)=ndnext(node_num(i-1,1,1))
e_table(i,1,1)=node_num(i,1,1)
*enddo
*DO,i,1,nnode
*get,E_TABLE(I,2,1),node,e_table(i,1,1),loc,x,
*get,E_TABLE(I,0,1),node,e_table(i,1,1),loc,y,
*get,E_TABLE(I,4,1),node,e_table(i,1,1),loc,z,
*ENDDO
Error信息
Node 0 of *GET command is undefined.
Line= *get,E_TABLE(I,0,1),node,e_table(i,1,1),loc,y,
The *GET command is ignored.
找到的解决办法
而只能将所有节点号先付给一个一维数组,然后按照这个数组中的编号,*get命令中的参数用这个一维数组的元素,提取x坐标放在第0列,其他值放在其他列
*DIM,e_table,TABLE,nnode,9,1
*dim,node_num,array,nnode,1,1
!一维数组用来存节点号
*get,node_num(1,1,1),node, ,num,min
*do,i,2,nnode
node_num(i,1,1)=ndnext(node_num(i-1,1,1))
*enddo
*DO,i,1,nnode
e_table(i,1,1)=node_num(i,1,1)
*get,E_TABLE(I,2,1),node, node_num(i,1,1),loc,x,
*get,E_TABLE(I,0,1),node, node_num(i,1,1),loc,y,
*get,E_TABLE(I,4,1),node, node_num(i,1,1),loc,z,
*ENDDO
产生的疑问,table的元素在某些函数里是不是不能做参数,例如ndnext(),*get?
|