首页/文章/ 详情

FLAC3D 6.0的两种数组建立方法

10月前浏览957
摘要:本文介绍了数组array的两种建立方法。


1 问题描述

在后台看到有粉丝对于定义动态数组有以下疑问:

图1 粉丝提问截图
图2 报错详情(整数必须在1和2147483647之间。)
故此介绍两种数组array的建立方法。

2 代码展示

2.1 非动态数组

本文提到的非动态数组指:使用者在建立数组时,已明确数组的维度与尺寸。代码如下:





fish def _arrCre    array arr1(10)    array arr2(3,4)end@_arrCre
上述代码建立了一个尺寸为10行1列的一维数组与一个3行4列的二维数组。
2.2 动态数组

本文的动态数组指使用者在建立数组时,数组的维度和尺寸是一个变量,比如要使用一维数组接收网格点位移时,则数组的尺寸应为网格点的个数。此时若运行以下代码,则会报图2中的错误,提醒你应该在array arr( )的括号中填入1~2147483647间的整数。








model newzone create brick size 6 6 6fish def _arrCre    gpNum = gp.num()    array arr(gpNum)end@_arrCre

此时我们关注一下变量gpNum的类型与值,从图3可以看出,此时gpNum = 0,不在[1,2147483647]这个区间内,因此系统报错。对于这种情况,我个人的猜测是:在fish语言中,array命令的执行优先级大于gp.num( )函数,系统在执行上述代码时首先创建创建数组,而此时gpNum还没有被赋值,因此出现图2所示的报错。

图3 变量gpNum的值与类型

针对上述问题,本文提出了两种解决方案,见代码:




























; 方案1———使用array.create()函数; 该函数的表达式为数组名 = array.create(数组尺寸)model newzone create brick size 6 6 6fish def _arrCre    gpNum = gp.num()    arr1 = array.create(gpNum)    ; 输出数组尺寸以确认创建了目标尺寸数组    io.out(array.size(arr1,1))end@_arrCre
; 方案2——新建fish函数model newzone create brick size 6 6 6; 获取模型节点数并赋值给变量gpNumfish def _getGpNum    gpNum = gp.num()end@_getGpNum; 创建数组fish def _arrCre    array arr1(gpNum)    arr1 = array.create(gpNum)    ; 输出数组尺寸以确认创建了目标尺寸数组    io.out(array.size(arr1,1))end@_arrCre

3 小结

没有小结。


来源:FLAC3D小技巧
UMFLAC3D
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-12-26
最近编辑:10月前
FLAC3D小技巧
硕士 专注FLAC3D中的小技巧分享...
获赞 34粉丝 199文章 40课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈