【Python】批量提取Fibersim xml文件中的节点网格数据
程序功能:
- 输入需求:
- 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文件中的节点网格数据的更多相关文章
- C#程序中:如何修改xml文件中的节点(数据)
要想在web等程序中实现动态的数据内容给新(如网页中的Flash),不会更新xml文件中的节点(数据)是远远不够的,今天在这里说一个简单的xml文件的更新,方法比较基础,很适合初学者看的,保证一看就懂 ...
- C#程序中:如何向xml文件中插入节点(数据)
向xml文件中动态的添加节点(数据)是一件很爽的事,可以给你的程序带来很多的方便,比如在web中,如果你的Flash用到了xml文件,这个方法可以让你在后台就轻轻松松的更新你的Flash内容哦!一起研 ...
- C#程序中:如何删除xml文件中的节点、元素。
C#中动态的清理xml文件中的垃圾信息是程序员必会的哦.这就像数据库一样,不会清理数据怎么可以呢?其实xml文件就可以用作一个小的数据库,存储一些简单的信息.所以,用C#程序实现xml文件的增.删.改 ...
- vue项目中使用bpmn-流程图xml文件中节点属性转json结构
内容概述 本系列“vue项目中使用bpmn-xxxx”分为七篇,均为自己使用过程中用到的实例,手工原创,目前陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意事项,具 ...
- python读取xml文件中的坐标点
用labelImg工具制作好xml文件后,需要读取其中img路径和坐标点,生成一个label.txt <annotation> <folder>big</folder&g ...
- 【python小练】0017-将xls文件内容写入xml文件中
第 0017 题: 将 第 0014 题中的 student.xls 文件中的内容写到 student.xml 文件中,如 下所示: <?xml version="1.0" ...
- python解析VOC的xml文件并转成自己需要的txt格式
在进行神经网络训练的时候,自己标注的数据集往往会有数据量不够大以及代表性不强等问题,因此我们会采用开源数据集作为训练,开源数据集往往具有特定的格式,如果我们想将开源数据集为我们所用的话,就需要对其格式 ...
- 【MyBatis学习05】SqlMapConfig.xml文件中的配置总结
经过上两篇博文的总结,对mybatis中的dao开发方法和流程基本掌握了,这一节主要来总结一下mybatis中的全局配置文件SqlMapConfig.xml在开发中的一些常用配置,首先看一下该全局配置 ...
- Python:Dom生成XML文件(写XML)
http://www.ourunix.org/post/327.html 在python中解析XML文件也有Dom和Sax两种方式,这里先介绍如何是使用Dom解析XML,这一篇文章是Dom生成XML文 ...
- (转)MyBatis框架的学习(四)——Mapper.xml文件中的输入和输出映射以及动态sql
http://blog.csdn.net/yerenyuan_pku/article/details/71893689 前面对MyBatis框架的学习中,我们对Mapper.xml映射文件多少有些了解 ...
随机推荐
- 【MyBatis】学习笔记12:通过级联属性赋值解决多对一的映射关系
[Mybatis]学习笔记01:连接数据库,实现增删改 [Mybatis]学习笔记02:实现简单的查 [MyBatis]学习笔记03:配置文件进一步解读(非常重要) [MyBatis]学习笔记04:配 ...
- 如何调整Gitlab-Runner最大并发数?
概述: 我们在使用gitlab-runner做cicd时,如果安装之后没有配置gitlab-runner的最大并发数,在使用时候可能会碰到job的警告(job日志超过字节限制):job's log e ...
- shell脚本,主要是对输入参数检验
usage(){ echo "\nUSAGE:\n" echo "PmActivityReport.sh\t-type\t<latency|activity&g ...
- 图层级GIS数据格式概述
图层级GIS数据格式概述 1. GEOJSON的优缺点 优点: 开放标准:GEOJSON是一个开放的标准,这意味着它可以被任何支持JSON的平台或工具使用. 易于理解和使用:由于GEOJSON基于JS ...
- 中间件 vs 过滤器
在 ASP.NET Core 中,中间件(Middleware) 和 过滤器(Filters) 是两种不同的机制,用于处理请求和响应的管道.它们的作用和适用场景有所不同,以下是它们的对比和详细说明: ...
- 1011. 在 D 天内送达包裹的能力
在 D 天内送达包裹的能力 传送带上的包裹必须在 days 天内从一个港口运送到另一个港口. 传送带上的第 i 个包裹的重量为 weights[i].每一天,我们都会按给出重量(weights)的顺序 ...
- VAE模型简析和精要(原理和代码)
1. 前言 这篇博客主要用于记录VAE的原理部分. 一方面便于日后自己的温故学习,另一方面也便于大家的学习和交流. 如有不对之处,欢迎评论区指出错误,你我共同进步学习! 图均引用自4部分的博客!!!! ...
- 自定义swagger扩展解析jsondoc
需求规定 为了减少注释和swagger注解的重复定义, 通过规范注释, 让swagger可以通过javadoc来产生 替换@Api.@ApiOperation.@ApiModel.@ApiModelP ...
- java注释转json插件开发实战
目的 将java的代码注释转换为json格式,并写入文件 本文介绍了完整的开发流程及如何使用 运行环境 jdk1.8 maven3.x 设计思想 系统构思 编译完成的class里没有注释的,所以注释信 ...
- idea操作小技巧总结
一.热键 光标导航前进|后退 Ctrl+Alt+左右方向键 光标转到语句块的头尾 Ctrl+[|] 再次提示函数参数列表 Ctrl+P 插入实时模板 Ctrl+J 文件结构查看 Ctrl+F12 书签 ...