| 
实验的目的
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?
 
 
 
 
 
 |