程序功能:

  • 输入需求:

    • 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. Qt编写物联网管理平台(支持win/linux/mac/嵌入式linux/modbus等)

    一.前言 这个物联网综合管理平台前后迭代了五年,一点一滴慢慢积累起来,从最开始的只有modbus串口协议解析以及简单的表格显示数据,慢慢的逐渐增加了tcp_rtu支持,用户管理模块,地图监控模块,而后 ...

  2. Qt编写安防视频监控系统31-onvif设备搜索

    一.前言 做视频监控系统,绕不过onvif这玩意,这玩意主要就是为了统一一个大概的标准,能够对各个厂家的监控设备进行常用的一些操作,比如搜索.获取信息.云台控制.事件订阅.抓拍图片等,如果没有这个规范 ...

  3. TypeScript学习(二) - TypeScript的接口(interface)和类(class)

    1. 对象的类型--接口 1.1 什么是接口 1.2 简单的例子 1.3 可选属性 1.4 任意属性 1.5 只读属性 2. 类 2.1 类的概念 2.2 ES6 中类的用法 属性和方法 类的继承 存 ...

  4. 内华达大地测量实验室gnss数据半自动化下载

    内华达大地测量实验室GNSS数据半自动化下载 前言 目的:继上篇GNSS时序形变位移数据下载,介绍了内华达网站GNSS位移数据如何手动交互进行下载.后面发现若自己需要下载很多站点的数据,我要通过手动一 ...

  5. 使用Redis防止重复发送RabbitMQ消息

    问题 今天遇到一个问题,发送MQ消息的时候需要保证不会重复发送,注意不是可靠到达(可靠到达可以通过消息确认机制和回调接口保证),这里保证的是不会生产多条一样的消息. 方法 综合讨论下来决定使用Redi ...

  6. ATM 管理系统的设计与实现(类似毕业设计,附源代码)

    ATM 管理系统的设计与实现 作者前言:本系统通过基本规范化的设计,简单的利用了java基本功能实现了ATM系统,本系统虽然简单,但是逻辑很严密,对于有一定java知识的读者有较大帮助,可以用作参考. ...

  7. wix tool 打包官方例子

    wixtoolset 和VS 插件:https://wixtoolset.org/releases/ 教学:https://www.firegiant.com/wix/tutorial/getting ...

  8. 把.netcore console 安装到Windows 系统服务。

    用个工具:NSSM 下载:最新的那个pre版本 http://www.nssm.cc/download 测试.netcore 的一个控制台程序(Console),仅仅用来定时写入一些日志, 代码如下: ...

  9. sax, dom, jdom技术对比

    ---- sax, dom, jdom技术的优缺点比较 SAX分析器在对XML文档进行分析时,触发一系列的事件,应用程序通过事件处理函数实现对XML文档的访问.由于事件触发本身是有时序性的,因此,SA ...

  10. c++:-8

    上一节学习了C++的STL库和范型:c++:-7,本节学习c++的输入输出和流类库. I/O流 (1)程序与外界环境的信息交换 当程序与外界环境进行信息交换时,存在着两个对象:程序中的对象.文件对象. ...