首页/文章/ 详情

ANSA二次开发_Python基础-列表

27天前浏览557

回顾一下以前的笔记,便于以后的查看,以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"list_from_s = s.split()print(list_from_s)list_from_s.append("NEW_ITEM")print(list_from_s)list_from_s = " ".join(list_from_s)print(list_from_s)vals = {'Name':list_from_s,}# ANSA命名是会自动将首位的空格字符移除base.SetEntityCardValues(constants.NASTRAN, part, vals)

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

    1. split() 方法 
     将字符串转换为列表
      s = "HWCOLOR PROP 1001199 24"list_from_s = s.split()print(list_from_s)#使用join方法将列表转化为字符串string = ' '.join(list_from_s )print(string)
      2. append() 方法 
       在列表末尾添加新的对象
        list_from_s.append("NEW_ITEM")print(list_from_s)
        3. extend() 方法 
        在列表末尾一次性追加另一个列表中的多个值
          list_from_s.extend(["ITEM1", "ITEM2"]) #['HWCOLOR', 'PROP', '1001199', '24', 'ITEM1', 'ITEM2']print(list_from_s)
          4. insert() 方法 
          将对象插入列表
            list_from_s.insert(1, "INSERTED_ITEM") #['HWCOLOR', 'INSERTED_ITEM', 'PROP', '1001199', '24']print(list_from_s)
            5. remove() 方法 
            移除列表中某个值的第一个匹配项
              list_from_s.remove("1001199") #['HWCOLOR', 'PROP', '24']print(list_from_s)
              6. pop() 方法 
              移除列表中的一个元素,默认最后一个元素,并且返回该元素的值
                popped_item = list_from_s.pop() print(list_from_s) #['HWCOLOR', 'PROP', '1001199']print("被pop出的元素:", popped_item)
                7. clear() 方法 
                清空列表
                  list_from_s.clear() #[]print(list_from_s)
                  8. index() 方法 
                  从列表中找出某个值第一个匹配项的索引位置
                    index_of_1001199 = list_from_s.index("1001199") #2print("1001199的索引位置:", index_of_1001199)  #1001199的索引位置: 2
                    9. count() 方法 
                    统计某个元素在列表中出现的次数
                      count_of_24 = list_from_s.count("24") #1print("24出现的次数:", count_of_24)
                      10. sort() 方法 
                       对列表进行排序
                        # 如果列表元素类型不同,直接调用sort()会报错list_from_s.sort() #['1001199', '24', 'HWCOLOR', 'PROP']print(list_from_s)
                        11. reverse() 方法 
                         反向列表中的元素
                          list_from_s.reverse() #['24', '1001199', 'PROP', 'HWCOLOR']print(list_from_s)
                          12. copy() 方法
                          返回列表的浅复制
                            list_copy = list_from_s.copy()print("列表的浅复制:", list_copy)

                            来源:TodayCAEer
                            Nastran二次开发ANSApython
                            著作权归作者所有,欢迎分享,未经许可,不得转载
                            首次发布时间: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
                            联系我们
                            帮助与反馈