首页/文章/ 详情

ANSA二次开发_Python基础-字典

27天前浏览695

回顾一下以前的笔记,便于以后的查看,以ANSA二次开发作为基础,记录下用到的基础知识。

字符串、列表、字典将以修改part的名字为例进行演示。

    import ansafrom ansa import basefrom ansa import constantspart = base.GetFirstEntity(constants.NASTRAN,"ANSAPART")vals = ('Name', 'Module Id')ret = base.GetEntityCardValues(constants.NASTRAN,part, fields=vals) oldname = ret['Name']print (oldname)# 固定字符串,测试时可以将该行注释s = "HWCOLOR PROP 1001199 24"keys = s.split()my_dict = {key: index for index, key in enumerate(keys)}print(my_dict)str_from_dict = ""for key, value in my_dict.items():    str_from_dict += f"{key} {value} "print(str_from_dict) #HWCOLOR 0PROP 11001199 224 3vals = {'Name':str_from_dict,}# ANSA命名是会自动将首位的空格字符移除base.SetEntityCardValues(constants.NASTRAN, part, vals)

    这是基础的修改代码,后续皆可使用上述代码进行测试

    我们需要将字符串 "HWCOLOR PROP 1001199 24" 转换为字典形式,才能调用字典的方法。
    1. 创建字典 
     通过将字符串转换为字典
      s = "HWCOLOR PROP 1001199 24" keys = s.split() my_dict = {key: index for index, key in enumerate(keys)} print("创建字典:", my_dict) #{'HWCOLOR': 0, 'PROP': 1, '1001199': 2, '24': 3} 
      单层字典转化为字符串
        my_dict = {"HWCOLOR": 0, "PROP": 1, "1001199": 2, "24": 3}str_from_dict = ""for key, value in my_dict.items():    str_from_dict += f"{key} {value}"print(str_from_dict) #HWCOLOR 0PROP 11001199 224 3
        2. get() 方法 
         返回指定键的值
          print("get()方法:", my_dict.get("HWCOLOR")) #get()方法: 0
          3. items() 方法 
           以列表返回可遍历的(键, 值) 元组数组
            print("items()方法:", list(my_dict.items()))#items()方法: [('HWCOLOR', 0), ('PROP', 1), ('1001199', 2), ('24', 3)]
            4. keys() 方法 
             返回所有key
              print("keys()方法:", list(my_dict.keys()))#keys()方法: ['HWCOLOR', 'PROP', '1001199', '24']
              5. values() 方法 
               返回所有值
                print("values()方法:", list(my_dict.values()))#values()方法: [0, 1, 2, 3]
                6. update() 方法 
                更新字典的值
                  my_dict.update({"NEW_KEY": 4})print("update()方法:", my_dict)#update()方法: {'HWCOLOR': 0, 'PROP': 1, '1001199': 2, '24': 3, 'NEW_KEY': 4}
                  7. pop() 方法 
                  删除字典给定键 key 所对应的值,返回这个值
                    popped_value = my_dict.pop("NEW_KEY")print("pop()方法:", my_dict)#pop()方法: {'PROP': 1, '1001199': 2, '24': 3}print("被pop出的值:", popped_value)#被pop出的值: 0
                    8. popitem() 方法 
                     随机返回并删除字典中的最后一对键和值
                      popped_item = my_dict.popitem()print("popitem()方法:", my_dict)#popitem()方法: {'HWCOLOR': 0, 'PROP': 1, '1001199': 2}print("被popitem出的键值对:", popped_item)#被popitem出的键值对: ('24', 3)

                      9. clear() 方法 
                       清空字典
                        my_dict.clear()
                        10. copy() 方法 
                         返回字典的浅复 制
                          my_dict_copy = my_dict.copy()print("copy()方法:", my_dict_copy)
                          11. setdefault() 方法 
                           如果键不存在于字典中,将会添加键并将值设为默认值
                            my_dict.setdefault("NEW_KEY", None)print("setdefault()方法:", my_dict)#setdefault()方法: {'HWCOLOR': 0, 'PROP': 1, '1001199': 2, '24': 3, 'NEW_KEY': None}
                            12. fromkeys() 方法 
                             创建一个新字典,以序列中元素做字典的键,value为字典所有键对应的初始值
                              new_keys = ["key1", "key2", "key3"]new_dict = dict.fromkeys(new_keys, "default_value")print("fromkeys()方法:", new_dict)#fromkeys()方法: {'key1': 'default_value', 'key2': 'default_value', 'key3': 'default_value'}
                              来源:TodayCAEer
                              Nastran二次开发ANSApythonUM
                              著作权归作者所有,欢迎分享,未经许可,不得转载
                              首次发布时间:2024-08-14
                              最近编辑:27天前
                              TodayCAEer
                              本科 签名征集中
                              获赞 16粉丝 8文章 163课程 0
                              点赞
                              收藏
                              作者推荐

                              ANSA二次开发_Python基础-基于matplotlib的模型厚度分布图

                              matplotlib是Python中的绘图库,它提供了大量的工具来创建静态、动态和交互式的可视化图形。需要注意的是这个库与自带的guitk库会起冲突,官方文档建议是不直接将所生成图表的显示出来,而是通过保存到文件中,再通过guitk库提供的控件显示图片。并且直接调用plot.show也是无法显示,会给出如下提示。 UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown添加这行代码后依然会出现如下的错误,后续还有解决方案,重装修改解释器,但是重装后是否会导致其他问题就不得而知了,所以就按照官方文档开发吧。 matplotlib.use('TkAgg') #No module named '_tkinter'matplotlib在ANSA中使用较少,使用场景可以用于单元质量统计,模型厚度分布等相关。主要是后处理开发中使用,在这里作为基础模块一同介绍下。本篇文章的案例,通过ANSA绘制模型厚度条形图,弥补deck info的功能。统计模型的厚度分布,这个需求,属实是为了这碟醋,包了一顿饺子,哈哈哈。常用的matplotlib方法1. 折线图(Line plot) 用于展示数据随时间或有序类别变化的趋势。2. 散点图(Scatter plot) 用于展示两个变量之间的关系,观察数据点的分布。3. 条形图(Bar chart) 用于比较不同类别之间的数值大小。可以是垂直的(plt.bar)或水平的(plt.barh)。4. 直方图(Histogram) 用于展示数据的分布情况,通过数据分组(bins)来观察频率分布。5. 饼图(Pie chart) 用于展示各部分占整体的比例关系。6. 箱型图(Box plot) 用于展示数据的分布情况,包括中位数、四分位数和异常值。7. 等高线图(Contour plot) 用于展示三维数据的二维等值投影,常用于地理数据的可视化。8. 3D 图形 - 包括3D 线图、3D 散点图、3D 条形图等,用于展示三维空间中的数据关系。9. 热图(Heatmap) 用于展示矩阵数据,颜色深浅表示数据大小,常用于展示相关性矩阵。10. 极坐标图(Polar plot) 用极坐标系统展示数据,适用于周期性数据的展示。11. 误差条形图(Error bar plot) 用于展示数据的变异情况,通过误差线表示数据的不确定性。12. 堆叠条形图(Stacked bar chart) 类似于条形图,但是将多个类别的数据堆叠在一起,用于展示总量及各部分的比例。13. 面积图(Area plot) 类似于线图,但是线下区域被填充颜色,用于展示随时间变化的数量累积效果。14. 阶梯图(Step plot) 类似于线图,但是数据点之间用水平和垂直线段连接,常用于展示离散变化。15. 棉棒图(Stem plot) 用于展示每个数据点的大小,类似于散点图,但每个点有一个从基线延伸的线段。16. 雷达图(Radar chart) 用于展示多变量数据,每个变量的值沿着轴线展示,常用于性能分析。下面是针对上述列举的图形类型的matplotlib代码示例: 1. 线图(Line plot)import matplotlib.pyplot as pltx = range(1, 6)y = [1, 4, 6, 8, 4]plt.plot(x, y)plt.title('Line Plot')plt.xlabel('X Axis')plt.ylabel('Y Axis')plt.show()2. 散点图(Scatter plot)import matplotlib.pyplot as pltx = [5, 7, 8, 5, 6, 7, 9, 2, 3, 4, 4, 4, 2, 6, 3, 6, 8, 6]y = [7, 4, 3, 9, 1, 3, 2, 5, 2, 4, 8, 7, 1, 6, 4, 9, 7, 8]plt.scatter(x, y)plt.title('Scatter Plot')plt.xlabel('X Axis')plt.ylabel('Y Axis')plt.show()3. 条形图(Bar chart)import matplotlib.pyplot as pltcategories = ['A', 'B', 'C', 'D']values = [23, 45, 56, 78]plt.bar(categories, values)plt.title('Bar Chart')plt.xlabel('Categories')plt.ylabel('Values')plt.show()4. 直方图(Histogram)import matplotlib.pyplot as pltimport numpy as npdata = np.random.randn(1000)plt.hist(data, bins=30)plt.title('Histogram')plt.xlabel('Value')plt.ylabel('Frequency')plt.show()5. 饼图(Pie chart)import matplotlib.pyplot as pltsizes = [215, 130, 245, 210]labels = ['A', 'B', 'C', 'D']plt.pie(sizes, labels=labels, autopct='%1.1f%%')plt.title('Pie Chart')plt.show()6. 箱型图(Box plot)import matplotlib.pyplot as pltimport numpy as npdata = np.random.rand(10, 4)plt.boxplot(data)plt.title('Box Plot')plt.show()7. 等高线图(Contour plot)import matplotlib.pyplot as pltimport numpy as npx = np.linspace(-3.0, 3.0, 100)y = np.linspace(-3.0, 3.0, 100)X, Y = np.meshgrid(x, y)Z = np.sin(X**2 + Y**2)plt.contour(X, Y, Z)plt.title('Contour Plot')plt.xlabel('X Axis')plt.ylabel('Y Axis')plt.show()8. 3D 散点图from mpl_toolkits.mplot3d import Axes3Dimport matplotlib.pyplot as pltimport numpy as npfig = plt.figure()ax = fig.add_subplot(111, projection='3d')x = np.random.standard_normal(100)y = np.random.standard_normal(100)z = np.random.standard_normal(100)ax.scatter(x, y, z)ax.set_title('3D Scatter Plot')plt.show()9. 热力图(Heatmap)import numpy as npimport matplotlib.pyplot as pltimport seaborn as sns; sns.set() # 使用seaborn样式# 生成数据data = np.random.rand(10, 12)# 绘制热图plt.figure(figsize=(8, 6))sns.heatmap(data, annot=True, fmt=".1f", linewidths=.5)plt.title('Heatmap')plt.show()10. 极坐标图(Polar plot)import numpy as npimport matplotlib.pyplot as plt# 生成数据r = np.arange(0, 2, 0.01)theta = 2 * np.pi * rplt.subplot(111, polar=True)plt.plot(theta, r)plt.title('Polar Plot')plt.show()11. 误差条形图(Error bar plot)import matplotlib.pyplot as pltimport numpy as npx = np.arange(0.1, 4, 0.5)y = np.exp(-x)# 定义误差error = 0.1 + 0.2 * np.sqrt(x)plt.errorbar(x, y, yerr=error, fmt='-o')plt.title('Error Bar Plot')plt.show()12. 堆叠条形图(Stacked bar chart)import matplotlib.pyplot as pltimport numpy as npN = 5menMeans = (20, 35, 30, 35, 27)womenMeans = (25, 32, 34, 20, 25)ind = np.arange(N) width = 0.35 plt.bar(ind, menMeans, width, label='Men')plt.bar(ind, womenMeans, width, bottom=menMeans, label='Women')plt.ylabel('Scores')plt.title('Scores by group and gender')plt.xticks(ind, ('G1', 'G2', 'G3', 'G4', 'G5'))plt.yticks(np.arange(0, 81, 10))plt.legend()plt.show()13. 面积图(Area plot)import matplotlib.pyplot as pltx = range(1, 6)y = [1, 4, 6, 8, 4]plt.fill_between(x, y)plt.title('Area Plot')plt.xlabel('X Axis')plt.ylabel('Y Axis')plt.show()14. 阶梯图(Step plot)import matplotlib.pyplot as pltx = range(1, 6)y = [1, 4, 6, 8, 4]plt.step(x, y)plt.title('Step Plot')plt.xlabel('X Axis')plt.ylabel('Y Axis')plt.show()15. 棉棒图(Stem plot)import matplotlib.pyplot as pltimport numpy as npx = np.linspace(0.1, 2 * np.pi, 10)y = np.cos(x)plt.stem(x, y)plt.title('Stem Plot')plt.xlabel('X Axis')plt.ylabel('Y Axis')plt.show()16. 雷达图(Radar chart)import numpy as npimport matplotlib.pyplot as pltfrom math import pi# 设置数据categories = ['A', 'B', 'C', 'D', 'E']values = [4, 3, 2, 5, 4]values += values[:1] # 闭合图形# 计算角度angles = [n / float(len(categories)) * 2 * pi for n in range(len(categories))]angles += angles[:1]# 绘图ax = plt.subplot(111, polar=True)plt.xticks(angles[:-1], categories)ax.plot(angles, values)ax.fill(angles, values, 'teal', alpha=0.1)plt.show()来源:TodayCAEer

                              未登录
                              还没有评论
                              课程
                              培训
                              服务
                              行家
                              VIP会员 学习 福利任务 兑换礼品
                              下载APP
                              联系我们
                              帮助与反馈