首页/文章/ 详情

ABAQUS名称标准化工具

1年前浏览877

 作为一个ABAQUS二次开发者, 肯定少不了批量建立工况名称, Job名称之类的操作, 而从csv以及Excel文件导进来的字符串并不能很好地符合ABAQUS标准, 所以才有了这个小工具的面世。

01


标准化思路



    我们先在ABAQUS中随便创建一个不符合命名规定的step, 将报错窗口截图如下:

Invalid name:

Names must be 1-38 characters long, may not begin with a number, may not begin or end with space or an underscore, and may not contain double quotes, periods, backward slashes, or non-printable characters.


    译文如下:

无效的名称:

名称必须长度为1-38个字符,不能以数字开头,不能以空格或下划线开头或结尾,不能包含双引号、句号、反斜杠或不可打印的字符。

    再建立一个不符合要求的Job, 报错如下:

Invalid name:

Names must be 1-80 characters long, may not begin or end with an underscore, and may not begin with a dash, and may not contain double quotes, periods, backward slashes, or non-printable characters or the following characters:......

    译文如下:

无效的名称:

名称必须长度为1-38个字符,不能以下划线开头或结尾,不能以破折号开头,不能包含双引号、句号、反斜杠或不可打印字符或以下字符:......

    为了简化处理这个问题, 我建议将所有规则做一个并集, 在符合该规则的情况下可以为所有ABAQUS的前处理进行命名.

    暂时以这两个为例, 总结一下命名规则:

  1. may not be begin or end with: 

    1. 数字(0123456789)

    2. 空格(" ")

    3. 下划线("_")

    4. 破折号("-")

  2. may not contain:  .  $  &  *  ~  !  (  )  [  ]  {  }  |  ;  :  '  `  "  <  >  ?  /  \  

  3. 总长度不超过38

    这些不符合规定的字符串, 我们都有转换为符合规定的字符串, 这些不符合规定的字符串大多数都是起着链接的作用, 我找了一圈, 发现加号(+)是一个不错的代替者, 所以我将所有不能使用的字符均代替为"+"

    接下来按照惯例, 我们整理一下流程:

  1. 输入的变量必须判断类型.

  2. 解决中英文符号的问题, 并将多空格转换为单空格.

  3. may not contain中的字符串全部转为"+".

  4. 判断字符串长度是否超过需求, 若超过则截断.

  5. may not bebegin or end with中的字符串转换为"+"

  6. 返回结果字符串

02


源代码

    import redef standard_str(s, length=20, flag='+'):    """    为防止出现不标准的名称导致错误, 将所有字符串进行标准化.    该方法应根据已知的ABAQUS命名规则编写, 并在日常使用中进行丰富和扩展.    :return: s    """    """    输入的变量必须判断类型    """    if s is None:        s = ''    elif not isinstance(s, str):        s = str(s.encode("utf-8"))    """    解决中英文符号的问题, 并将多空格转换为单空格.    """    # 中英文符号统一    s = s.replace('(', '(').replace(')', ')').replace('【', '[').replace('】', ']'). \        replace(',', ',').replace('。', '.').replace(';', ';').replace('\n', '')    # 多个空格替换为1个空格    s = re.sub(' +', ' ', s)    """    将may not contain中的字符串全部转为"+".    """    chars = [".", "$", "&", "*", "~", "!", "(", ")", "[", "]", "{", "}", "|", ";", "'", "\"", "`", "<", ">", "?",             "\\", "/"]    for char in chars:        s = s.replace(char, flag)    """    判断字符串长度是否超过需求, 若超过则截断.    """    if len(s) > length:        s = s[:length]    """    将may not be begin or end with中的字符串转换为"+"    """    s = re.sub('(^[-_\d ])|([-_\d ]$)', flag, s)    return s.lower()
       

        由于我们并没有将所有的ABAQUS命名规则找出来, 所以该工具以后还可以工具个人的使用情况做升级. 如发现新的may not contain则在charts里面添加, 如发现新的may not bebegin or end with则更改第48行的正则表达式.

    来源:SimCoder
    二次开发
    著作权归作者所有,欢迎分享,未经许可,不得转载
    首次发布时间:2023-02-02
    最近编辑:1年前
    签我的导演他姓张
    本科 怕什么真理无穷进一寸有一寸欣喜
    获赞 47粉丝 39文章 44课程 0
    点赞
    收藏
    未登录
    还没有评论

    课程
    培训
    服务
    行家

    VIP会员 学习 福利任务 兑换礼品
    下载APP
    联系我们
    帮助与反馈