工具推荐:Abaqus名称标准化助手


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





01—标准化思路

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

ABAQUS名称标准化工具的图1

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, 报错如下:

ABAQUS名称标准化工具的图2

   

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-80个字符,不能以下划线开头或结尾,不能以破折号开头,不能包含双引号、句号、反斜杠或不可打印字符或以下字符:......

   为了简化处理这个问题, 我建议将所有规则做一个并集, 在符合该规则的情况下可以为所有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 be begin or end with中的字符串转换为"+"
  6. 返回结果字符串



02—源代码


# -*- coding: utf-8 -*-
# -*- coding: mbcs -*-  
# @Time    : 2021-1-20 13:55
# @Author  : Group
# @Email   : **********
# @File    : standard.py
# @Software: PyCharm
import re


def 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 be begin or end with则更改第48行的正则表达式.


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空