首页/文章/ 详情

【Python二次开发】如何在Abaqus中更改云图配色风格

5月前浏览9935

摘要

本文介绍了如何更换有限元软件Abaqus中的云图配色。首先,通过Abaqus后处理界面的ContourPlot Options面板可以手动更改云图配色,但这种方法繁琐且不能保存自定义配色。为此,文章提供了基于Abaqus二次开发的脚本程序,该程序能自动载入用户自定义的云图配色,并集成了MATLAB后处理软件Tecplot的部分云图配色方案。用户只需保存脚本为Python文件并在Abaqus中运行,即可成功载入自定义颜色表,为Abaqus云图添加更多色彩选择。


正文

您是否觉得有限元软件Abaqus内置的云图颜色不够好看,或者想尝试其他风格的云图配色。如果您和我有同样的想法,那么就按照本文介绍的方法来更换Abaqus云图配色吧。

在有限元软件Abaqus中更改云图颜色非常简单,我们可以在Abaqus的后处理界面中,通过ContourPlot Options面板中的Spectrum选项来创建一个新的云图配色,如下图所示。

通过指定每一个颜色的RGB值,我们可以自由地更改Abaqus中的云图配色。但这样的处理方法非常繁琐,需要逐个输入每种颜色的RGB值。此外,当退出Abaqus后,用户自定义的云图配色不会被保存。这意味着当重新打开软件后,需要重新定义云图配色。

因此,本文基于Abaqus的二次开发功能,编写了自动更改Abaqus云图配色的脚本程序。通过该程序,可以将用户自定义的云图配色自动载入到Abaqus中。此外,笔者还将MATLAB的后处理软件Tecplot的部分云图配色方案集成在该脚本中。当然,你也可以将自己的云图配色方案集成到该脚本中。

脚本使用方法

脚本程序的完整源代码如下所示:

# -* - coding:UTF-8 -*-
# 文件名:ColorMap_Generator.py
from abaqus import *
from abaqusConstants import *


# -----------------------------定义存放颜色表的类(请勿更改)------------------------------
class ColorMap_List:
    def __init__(self, ColorMap_Name, ColorMap_Value):
        self.ColorMap_Name = ColorMap_Name
        self.ColorMap_Value = ColorMap_Value
        self.ColorMap_Validated = True

        if not (2 <= len(self.ColorMap_Value) <= 24):
            self.ColorMap_Validated = False
            return

        for Color in self.ColorMap_Value:
            if len(Color) != 3:
                self.ColorMap_Validated = False
                return
            for Value in Color:
                if not (0 <= Value <= 255):
                    self.ColorMap_Validated = False
                    return


# -----------------------------------------------------------------------------------

# ------------------------定义载入颜色表至Abaqus的函数(请勿更改)--------------------------
def Abaqus_Spectrum_Generator(My_ColorMap):
    # 判断当前颜色表是否有效
    if My_ColorMap.ColorMap_Validated == False:
        Error_Info = My_ColorMap.ColorMap_Name + "is not a valid color map"
        print(Error_Info)
        return
    # 转换RGB颜色为16进制颜色
    My_ColorMap.ColorMap_Value_Hex = []
    for RGB in My_ColorMap.ColorMap_Value:
        Color_Hex = '#{:02x}{:02x}{:02x}'.format(*RGB)
        My_ColorMap.ColorMap_Value_Hex.append(Color_Hex)
    My_ColorMap.ColorMap_Value_Hex = tuple(My_ColorMap.ColorMap_Value_Hex)
    # 载入颜色表至Abaqus
    session.Spectrum(name=My_ColorMap.ColorMap_Name,
                     colors=My_ColorMap.ColorMap_Value_Hex)
    Remind_Info = My_ColorMap.ColorMap_Name + "has been loaded."
    print(Remind_Info)


# ----------------------------------------------------------------------------------

# -----------------------------创建颜色表数据(支持添加颜色表)-----------------------------
# 创建MATLAB颜色表Parula
ColorMap_Name = "MATLAB_Parula"
ColorMap_Value = ([6238168], [6749200], [7162225], [7278241],
                  [7193250], [64109254], [49125252], [45140243],
                  [38154232], [30167225], [16178213], [1186196],
                  [32193177], [51199157], [75203132], [110205102],
                  [15020272], [18719647], [21918940], [24518659],
                  [25419755], [24921445], [24523237], [24824824],)
ColorMap_MATLAB_Parula = ColorMap_List(ColorMap_Name, ColorMap_Value)

# 创建MATLAB颜色表Turbo
ColorMap_Name = "MATLAB_Turbo"
ColorMap_Value = ([481859], [6050134], [6881191], [71110230],
                  [69138252], [56165251], [37192231], [24215202],
                  [31233175], [60245142], [101253105], [14325573],
                  [17525055], [20323752], [22721956], [24519758],
                  [25317252], [25314139], [24610825], [2347813],
                  [216556], [193352], [164191], [12962],)
ColorMap_MATLAB_Turbo = ColorMap_List(ColorMap_Name, ColorMap_Value)

# 创建MATLAB颜色表HSV
ColorMap_Name = "MATLAB_HSV"
ColorMap_Value = ([25500], [255660], [2551310], [2551970],
                  [2472550], [1812550], [1162550], [502550],
                  [025516], [025582], [0255147], [0255213],
                  [0231255], [0165255], [0100255], [034255],
                  [320255], [980255], [1630255], [2290255],
                  [2550215], [2550149], [255084], [255018],)
ColorMap_MATLAB_HSV = ColorMap_List(ColorMap_Name, ColorMap_Value)

# 创建MATLAB颜色表Hot
ColorMap_Name = "MATLAB_Hot"
ColorMap_Value = ([300], [3200], [6100], [9000],
                  [12000], [14900], [17800], [20700],
                  [23600], [255110], [255400], [255690],
                  [255980], [2551280], [2551570], [2551860],
                  [2552150], [2552440], [25525528], [25525572],
                  [255255116], [255255159], [255255203], [255255247],)
ColorMap_MATLAB_Hot = ColorMap_List(ColorMap_Name, ColorMap_Value)

# 创建MATLAB颜色表Cool
ColorMap_Name = "MATLAB_Cool"
ColorMap_Value = ([0255255], [11244255], [22233255], [33222255],
                  [44211255], [55200255], [66189255], [77178255],
                  [88167255], [99156255], [110145255], [121134255],
                  [132123255], [143112255], [154101255], [16590255],
                  [17679255], [18768255], [19857255], [20946255],
                  [22035255], [23124255], [24213255], [2532255],)
ColorMap_MATLAB_Cool = ColorMap_List(ColorMap_Name, ColorMap_Value)

# 创建MATLAB颜色表Spring
ColorMap_Name = "MATLAB_Spring"
ColorMap_Value = ([2550255], [25511244], [25522233], [25533222],
                  [25544211], [25555200], [25566189], [25577178],
                  [25588167], [25599156], [255110145], [255121134],
                  [255132123], [255143112], [255154101], [25516590],
                  [25517679], [25518768], [25519857], [25520946],
                  [25522035], [25523124], [25524213], [2552532],)
ColorMap_MATLAB_Spring = ColorMap_List(ColorMap_Name, ColorMap_Value)

# 创建MATLAB颜色表Summer
ColorMap_Name = "MATLAB_Summer"
ColorMap_Value = ([0128102], [11133102], [22139102], [33144102],
                  [44150102], [55155102], [66161102], [77166102],
                  [88172102], [99177102], [110183102], [121188102],
                  [132194102], [143199102], [154205102], [165210102],
                  [176216102], [187221102], [198227102], [209232102],
                  [220238102], [231243102], [242249102], [253254102],)
ColorMap_MATLAB_Summer = ColorMap_List(ColorMap_Name, ColorMap_Value)

# 创建MATLAB颜色表Autumn
ColorMap_Name = "MATLAB_Autumn"
ColorMap_Value = ([25500], [255110], [255220], [255330],
                  [255440], [255550], [255660], [255770],
                  [255880], [255990], [2551100], [2551210],
                  [2551320], [2551430], [2551540], [2551650],
                  [2551760], [2551870], [2551980], [2552090],
                  [2552200], [2552310], [2552420], [2552530],)
ColorMap_MATLAB_Autumn = ColorMap_List(ColorMap_Name, ColorMap_Value)

# 创建MATLAB颜色表Winter
ColorMap_Name = "MATLAB_Winter"
ColorMap_Value = ([00255], [011250], [022244], [033239],
                  [044233], [055227], [066222], [077217],
                  [088211], [099206], [0110200], [0121195],
                  [0132189], [0143184], [0154178], [0165173],
                  [0176167], [0187162], [0198156], [0209151],
                  [0220145], [0231140], [0242134], [0253129],)
ColorMap_MATLAB_Winter = ColorMap_List(ColorMap_Name, ColorMap_Value)

# 创建MATLAB颜色表Gray
ColorMap_Name = "MATLAB_Gray"
ColorMap_Value = ([000], [111111], [222222], [333333],
                  [444444], [555555], [666666], [777777],
                  [888888], [999999], [110110110], [121121121],
                  [132132132], [143143143], [154154154], [165165165],
                  [176176176], [187187187], [198198198], [209209209],
                  [220220220], [231231231], [242242242], [253253253],)
ColorMap_MATLAB_Gray = ColorMap_List(ColorMap_Name, ColorMap_Value)

# 创建MATLAB颜色表Bone
ColorMap_Name = "MATLAB_Bone"
ColorMap_Value = ([000], [101014], [191927], [292940],
                  [393953], [484867], [585880], [676793],
                  [7777107], [8788119], [96101128], [106115138],
                  [116128147], [125141157], [135154167], [144168176],
                  [154181186], [164194195], [177205205], [192215215],
                  [207224224], [222234234], [237244244], [252253253],)
ColorMap_MATLAB_Bone = ColorMap_List(ColorMap_Name, ColorMap_Value)

# 创建MATLAB颜色表Copper
ColorMap_Name = "MATLAB_Copper"
ColorMap_Value = ([000], [1495], [281711], [412616],
                  [553422], [694327], [835233], [966038],
                  [1106944], [1247749], [1388655], [1519560],
                  [16510366], [17911271], [19312077], [20612982],
                  [22013788], [23414693], [24815599], [255163104],
                  [255172109], [255180115], [255189120], [255198126],)
ColorMap_MATLAB_Copper = ColorMap_List(ColorMap_Name, ColorMap_Value)

# 创建MATLAB颜色表Pink
ColorMap_Name = "MATLAB_Pink"
ColorMap_Value = ([1500], [684343], [956161], [1157575],
                  [1338686], [1489797], [162106106], [175114114],
                  [187122122], [196133130], [201149137], [206163143],
                  [210175150], [214187156], [219199162], [223209167],
                  [227220173], [231229178], [235235190], [239239204],
                  [243243217], [247247230], [251251242], [254254253],)
ColorMap_MATLAB_Pink = ColorMap_List(ColorMap_Name, ColorMap_Value)

# 创建MATLAB颜色表Sky
ColorMap_Name = "MATLAB_Sky"
ColorMap_Value = ([230241248], [220235246], [210230243], [200224241],
                  [190219238], [180214236], [170208233], [160203230],
                  [150197228], [140192225], [131186223], [121181220],
                  [111175218], [101170215], [91164212], [81159210],
                  [71153207], [61148205], [51142202], [41137200],
                  [32131197], [22126195], [12120192], [2115189],)
ColorMap_MATLAB_Sky = ColorMap_List(ColorMap_Name, ColorMap_Value)

# 创建MATLAB颜色表Abyss
ColorMap_Name = "MATLAB_Abyss"
ColorMap_Value = ([93555], [114062], [124469], [134977],
                  [145384], [165891], [176298], [1867105],
                  [1971112], [2176120], [2280127], [2385134],
                  [2489141], [2594148], [2798155], [28103162],
                  [29107170], [30112177], [32117184], [33121191],
                  [34126198], [35130205], [37135212], [38139220],)
ColorMap_MATLAB_Abyss = ColorMap_List(ColorMap_Name, ColorMap_Value)

# 创建MATLAB颜色表Jet
ColorMap_Name = "MATLAB_Jet"
ColorMap_Value = ([00131], [00175], [00219], [08255],
                  [052255], [096255], [0139255], [0183255],
                  [0227255], [16255239], [60255195], [104255151],
                  [147255108], [19125564], [23525520], [2552310],
                  [2551870], [2551430], [2551000], [255560],
                  [255120], [22300], [17900], [13500],)
ColorMap_MATLAB_Jet = ColorMap_List(ColorMap_Name, ColorMap_Value)

# 创建Tecplot颜色表Rainbow1
ColorMap_Name = "Tecplot_Rainbow1"
ColorMap_Value = ([00130], [00255], [0255255], [2552550],
                  [25500], [13000],)
ColorMap_Tecplot_Rainbow1 = ColorMap_List(ColorMap_Name, ColorMap_Value)

# 创建Tecplot颜色表Hot
ColorMap_Name = "Tecplot_Hot"
ColorMap_Value = ([200], [12700], [25500], [2552550], [255255255],)
ColorMap_Tecplot_Hot = ColorMap_List(ColorMap_Name, ColorMap_Value)

# 创建Tecplot颜色表Viridis
ColorMap_Name = "Tecplot_Viridis"
ColorMap_Value = ([68184], [7231112], [6763133], [5492141],
                  [43117142], [33142141], [33166133], [64189114],
                  [11920983], [18622240], [25323137])
ColorMap_Tecplot_Viridis = ColorMap_List(ColorMap_Name, ColorMap_Value)
# -----------------------------------------------------------------------------------

# --------------------------------载入颜色表至Abaqus-----------------------------------
# 设置Abaqus中云图颜色数量(大于等于2且小于等于24)
session.viewports['Viewport: 1'].odbDisplay.contourOptions.setValues(numIntervals=24)

# 载入MATLAB颜色表Parula
Abaqus_Spectrum_Generator(ColorMap_MATLAB_Parula)
# 载入MATLAB颜色表Turbo
Abaqus_Spectrum_Generator(ColorMap_MATLAB_Turbo)
# 载入MATLAB颜色表HSV
Abaqus_Spectrum_Generator(ColorMap_MATLAB_HSV)
# 载入MATLAB颜色表Hot
Abaqus_Spectrum_Generator(ColorMap_MATLAB_Hot)
# 载入MATLAB颜色表Cool
Abaqus_Spectrum_Generator(ColorMap_MATLAB_Cool)
# 载入MATLAB颜色表Spring
Abaqus_Spectrum_Generator(ColorMap_MATLAB_Spring)
# 载入MATLAB颜色表Summer
Abaqus_Spectrum_Generator(ColorMap_MATLAB_Summer)
# 载入MATLAB颜色表Autumn
Abaqus_Spectrum_Generator(ColorMap_MATLAB_Autumn)
# 载入MATLAB颜色表Winter
Abaqus_Spectrum_Generator(ColorMap_MATLAB_Winter)
# 载入MATLAB颜色表Gray
Abaqus_Spectrum_Generator(ColorMap_MATLAB_Gray)
# 载入MATLAB颜色表Bone
Abaqus_Spectrum_Generator(ColorMap_MATLAB_Bone)
# 载入MATLAB颜色表Copper
Abaqus_Spectrum_Generator(ColorMap_MATLAB_Copper)
# 载入MATLAB颜色表Pink
Abaqus_Spectrum_Generator(ColorMap_MATLAB_Pink)
# 载入MATLAB颜色表Sky
Abaqus_Spectrum_Generator(ColorMap_MATLAB_Sky)
# 载入MATLAB颜色表Abyss
Abaqus_Spectrum_Generator(ColorMap_MATLAB_Abyss)
# 载入MATLAB颜色表Jet
Abaqus_Spectrum_Generator(ColorMap_MATLAB_Jet)
# 载入Tecplot颜色表Rainbow1
Abaqus_Spectrum_Generator(ColorMap_Tecplot_Rainbow1)
# 载入Tecplot颜色表Hot
Abaqus_Spectrum_Generator(ColorMap_Tecplot_Hot)
# 载入Tecplot颜色表Viridis
Abaqus_Spectrum_Generator(ColorMap_Tecplot_Viridis)
# -----------------------------------------------------------------------------------

在该脚本的开头,笔者定义了存放颜色表的类以及将颜色表载入至Abaqus的函数,该部分内容是不能更改的。而下图所示的颜色表数据则是允许用户自定义的内容。

其中,ColorMap_Name代表了颜色表的名称,即在Abaqus中创建的Spectrum的名称。ColorMap_Value用于定义不同颜色的RGB值。由于Abaqus最多只允许云图存在24种颜色,因此颜色数量不能超过24,也不能小于2ColorMap_List用于创建代表该颜色表的对象。

在脚本文件的末尾,Abaqus_Spectrum_Generator函数用于将该颜色表载入至Abaqus

将上述源代码保存为Python文件,并在Abaqus中通过Run Script选项运行脚本。运行完成后,Abaqus的消息面板将会给出颜色表是否被载入Abaqus的提示信息,如下图所示。如果颜色表定义错误,则将给出提示信息。

运行完成后,可以发现云图选项中多了一些新的配色方案,意味着定义的颜色表载入成功。笔者非常喜欢后处理软件Tecplot中的云图配色方案,相比于Abaqus的云图色彩更为浓郁。


来源:易木木响叮当
Abaqus二次开发MATLABpythonUMTecplot
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-06-01
最近编辑:5月前
易木木响叮当
硕士 有限元爱好者
获赞 220粉丝 263文章 349课程 2
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈