首页/文章/ 详情

FLAC3D 6.0的两种数组建立方法

8月前浏览783
摘要:本文介绍了数组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
        最近编辑:8月前
        FLAC3D小技巧
        硕士 专注FLAC3D中的小技巧分享...
        获赞 31粉丝 171文章 40课程 0
        点赞
        收藏
        未登录
        还没有评论
        课程
        培训
        服务
        行家
        VIP会员 学习 福利任务 兑换礼品
        下载APP
        联系我们
        帮助与反馈