程序功能:

  • 输入需求:

    • fibersim导出的ply 的xml文件,可以很多个也没问题。但名字要有规律,不然没法循环读写。比如我自己用的就是x1.xml、x2.xml、Y1.xml......的文件名
    • 定义一些需要的变量,看名字都可以知道什么意思
  • 输出:
    • 程序会输出每个xml文件中每个ply对应的node.csv和mesh.csv

code

import re
# 打开一个txt文本文件,写入所有ply信息
Finfo=open('Plyinfo.txt','w') # define vars
prefix_1=['x','Y']
prefix_2=range(1,14)
xmlsDir='I:\\3 Group Project\\05 Focus on propeller surface\\20230314\\20230316-xml\\' # start loop
for q in prefix_1:
for p in prefix_2:
print('now='+q+str(p))
numOfElem=0
numOfNode=0
fibersimXmlPath=xmlsDir+q+str(p)+'.xml'
with open(fibersimXmlPath, 'r',encoding="utf-8") as f1:
flag=0
for i in f1:
if '<Ply' in i:
# split string i
i=i.split('"')
# get the name of Ply
ply_name=i[-2]
node_file_name=ply_name+'_node.csv'
mesh_file_name=ply_name+'_mesh.csv'
# Finfo.write('')
if '<Material' in i:
i=i.split('"')
ply_thickness=i[-2]
# 把ply 铺层的信息都写入为一行,逗号分隔,方便在matlab中使用split和str2num函数转化为可用的检索信息
Finfo.write(ply_name+','+ply_thickness+','+node_file_name+','+mesh_file_name+'\n') if '<Mesh_Point_Table' in i :
# 检测到节点的起始,打开文件
fn = open(node_file_name, 'w')
fn.write('node_index,X Coordinate,Y Coordinate,Z Coordinate\n')
flag=1
if '</Mesh_Point_Table' in i:
print('!'+q+str(p)+' number of nodes ='+str(numOfNode))
flag=0
numOfNode=0
fn.close() if '<Mesh_Polygon_Table' in i :
fm = open(mesh_file_name, 'w')
fm.write('element_index,Node 1,Node 2,Node 3,Warp ,Weft\n')
flag=2
if '</Mesh_Polygon_Table' in i:
print('!'+q+str(p)+' number of elements ='+str(numOfElem))
print(numOfElem)
fm.close()
numOfElem=0
flag=0
#进入下一行
# true则表示,现在遍历为节点信息
if '<R/>' in i:
# 说明现在是单元信息
if flag==2:
# elem index
numOfElem=numOfElem+1
temp=i.replace('<R/>','')
mcsvline=temp.replace(' ', ',')
mcsvline=str(numOfElem)+','+mcsvline
fm.write(mcsvline)
elif flag==1 :
# , not in i 说明现在是节点信息
numOfNode=numOfNode+1
temp=i.replace('<R/>','')
csvline=temp.replace(' ', ',')
csvline=str(numOfNode)+','+csvline
fn.write(csvline)
Finfo.close()

【Python】批量提取Fibersim xml文件中的节点网格数据的更多相关文章

  1. C#程序中:如何修改xml文件中的节点(数据)

    要想在web等程序中实现动态的数据内容给新(如网页中的Flash),不会更新xml文件中的节点(数据)是远远不够的,今天在这里说一个简单的xml文件的更新,方法比较基础,很适合初学者看的,保证一看就懂 ...

  2. C#程序中:如何向xml文件中插入节点(数据)

    向xml文件中动态的添加节点(数据)是一件很爽的事,可以给你的程序带来很多的方便,比如在web中,如果你的Flash用到了xml文件,这个方法可以让你在后台就轻轻松松的更新你的Flash内容哦!一起研 ...

  3. C#程序中:如何删除xml文件中的节点、元素。

    C#中动态的清理xml文件中的垃圾信息是程序员必会的哦.这就像数据库一样,不会清理数据怎么可以呢?其实xml文件就可以用作一个小的数据库,存储一些简单的信息.所以,用C#程序实现xml文件的增.删.改 ...

  4. vue项目中使用bpmn-流程图xml文件中节点属性转json结构

    内容概述 本系列“vue项目中使用bpmn-xxxx”分为七篇,均为自己使用过程中用到的实例,手工原创,目前陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意事项,具 ...

  5. python读取xml文件中的坐标点

    用labelImg工具制作好xml文件后,需要读取其中img路径和坐标点,生成一个label.txt <annotation> <folder>big</folder&g ...

  6. 【python小练】0017-将xls文件内容写入xml文件中

    第 0017 题: 将 第 0014 题中的 student.xls 文件中的内容写到 student.xml 文件中,如 下所示: <?xml version="1.0" ...

  7. python解析VOC的xml文件并转成自己需要的txt格式

    在进行神经网络训练的时候,自己标注的数据集往往会有数据量不够大以及代表性不强等问题,因此我们会采用开源数据集作为训练,开源数据集往往具有特定的格式,如果我们想将开源数据集为我们所用的话,就需要对其格式 ...

  8. 【MyBatis学习05】SqlMapConfig.xml文件中的配置总结

    经过上两篇博文的总结,对mybatis中的dao开发方法和流程基本掌握了,这一节主要来总结一下mybatis中的全局配置文件SqlMapConfig.xml在开发中的一些常用配置,首先看一下该全局配置 ...

  9. Python:Dom生成XML文件(写XML)

    http://www.ourunix.org/post/327.html 在python中解析XML文件也有Dom和Sax两种方式,这里先介绍如何是使用Dom解析XML,这一篇文章是Dom生成XML文 ...

  10. (转)MyBatis框架的学习(四)——Mapper.xml文件中的输入和输出映射以及动态sql

    http://blog.csdn.net/yerenyuan_pku/article/details/71893689 前面对MyBatis框架的学习中,我们对Mapper.xml映射文件多少有些了解 ...

随机推荐

  1. shell 判断是否已安装了某个软件

    判断是否安装了node 复制if ! type node >/dev/null 2>&1; then echo 'node 未安装'; else echo 'node 已安装'; ...

  2. logback高级特性使用(二) 自定义Pattern模板

    原文链接:https://blog.csdn.net/chenjie2000/article/details/8892764 创建自定义格式转换符有两步: 1.写一个转换器类,继承ClassicCon ...

  3. 在C#中如何设置DateTimePicker控件显示“年-月-日 时:分:秒”的格式

    在C#中DateTimePicker控件默认显示的日期格式为"年-月-日",并未显示"时:分:秒",如何设置DateTimePicker控件显示"年- ...

  4. 搞懂现代Web端即时通讯技术一文就够:WebSocket、socket.io、SSE

    本文引用自" 豆米博客"的<JS实时通信三把斧>系列文章,有优化和改动. 1.引言 有关Web端即时通讯技术的文章我已整理过很多篇,阅读过的读者可能都很熟悉,早期的We ...

  5. 记录以下uniapp写小程序然后进行图片上传压缩

    今天记录一下uniapp写小程序上传图片压缩的功能 首先定义上传图片的方法 然后res.tempFilePath[0]就是图片的临时路径 其次定义压缩图片然后获取压缩后图片大小的方法,方法使用canv ...

  6. 使用GTD工作法提升效率

    前言 近年来随着工作.副业的开展,每天要做的事情越来越多,而且还积攒了很多工作,每天大脑被各种事情充斥着,乱糟糟的,不仅效率很低,还很容易导致焦虑. 为此我一直有在寻找合适的项目管理工具,也看了一些相 ...

  7. java解析CSV文件三种方法(openCSV)

    一.简介1.pom.xml<!-- csv文件解析依赖 --><dependency> <groupId>com.opencsv</groupId> & ...

  8. uni-app选中状态并改变颜色

    思路 定义一个数组来记录被点击的元素 arr 数组通过indexOf来来查找 如果有,激活类就是true 没有: 激活类为false 这一步最关键的是查找的内容就是显示出来的index, 点击的时候传 ...

  9. 虚拟化技术 - CPU虚拟化

    本文分享自天翼云开发者社区<虚拟化技术 - CPU虚拟化>,作者:谢****悦 物理机器是由CPU,内存和I/O设备等一组资源构成的实体.虚拟机也一样,由虚拟CPU,虚拟内存和虚拟I/O设 ...

  10. MTV和MVC模式,初识模板

    MTV和MVC模式,初识模板1.MTV和MVC模式:分层级进行管理 说到框架模式我们有必要简单的说下设计模式,了解下设计模式这个概念,因为有人对设计模式和框架模式的概念经常混淆 设计模式: 是一套被反 ...