程序功能:

  • 输入需求:

    • 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. 【Python】【Pandas】将符合条件行的某列数值改为负数

    萌狼蓝天情景还原: 支付宝/微信导出的账单,不管支出还是收入都是正数. 我想把支出的金额改成负数,其他不变就这样. 解决办法 这里用到的是pandas.apply e--下面的写法虽然比较麻烦,但是 ...

  2. python -- json与dict

    一.python中的dict 与 json 1.dict 的表现形式 dict中的 key和value,不论写的是 双引号 还是 单引号,最后 python的dict都会转成 单引号. 2.json ...

  3. Mapstruct使用时报Unknown property xxx in result type xxx. Did you mean null

    0.背景 使用mapstruct时出现: Unknown property "xxx" in result type xxx. Did you mean "null&qu ...

  4. 谈谈 HTTP/2 的协议协商机制

    在过去的几个月里,我写了很多有关 HTTP/2 的文章,也做过好几场相关分享.我在向大家介绍 HTTP/2 的过程中,有一些问题经常会被问到.例如要部署 HTTP/2 一定要先升级到 HTTPS 么? ...

  5. Qt采集本地摄像头推流成rtsp/rtmp(可网页播放/支持嵌入式linux)

    一.功能特点 支持各种本地视频文件和网络视频文件. 支持各种网络视频流,网络摄像头,协议包括rtsp.rtmp.http. 支持将本地摄像头设备推流,可指定分辨率和帧率等. 支持将本地桌面推流,可指定 ...

  6. elementPlus 问题总结

    第一次搞,遇上很多弱智问题,记录一下 安装elementPlus $ npm install element-plus --save 全局引入 import ElementPlus from 'ele ...

  7. Redis源码历史版本下载地址和Redis的Windows版本服务端/客户端下载地址

    Redis源码历史版本下载地址:http://download.redis.io/releases/ Redis的Windows版本服务端/客户端下载地址:https://github.com/mic ...

  8. 抖音技术分享:抖音Android端手机功耗问题的全面分析和详细优化实践

    本文由字节跳动技术团队高原.汤中峰分享,原题"抖音功耗优化实践",本文有修订和改动. 一.引言 功耗优化是应用体验优化的一个重要课题,高功耗会引发用户的电量焦虑,也会导致糟糕的发热 ...

  9. IM开发干货分享:网易云信IM客户端的聊天消息全文检索技术实践

    1.引言 在IM客户端的使用场景中,基于本地数据的全文检索功能扮演着重要的角色,最常用的比如:查找聊天记录.联系人,就像下图这样. ▲ 微信的聊天记录查找功能 类似于IM中的聊天记录查找.联系人搜索这 ...

  10. 基于Netty,从零开发IM(四):编码实践篇(系统优化)

    本文由作者"大白菜"分享,有较多修订和改动.注意:本系列是给IM初学者的文章,IM老油条们还望海涵,勿喷! 1.引言 前两篇<编码实践篇(单聊功能)>.<编码实践 ...