功能

  • 提取hypermesh2020(其他版本也可以)中的节点、单元信息,并保留elem set信息。
  • 返回的是一个结构体

输入输出参数

输入:

  • inp文件路径,如:'example.inp'、"inp\ex.inp"

输出:

  • 一个结构体,包含节点信息、单元信息、单元集合信息、部件名字。
Struct
-- Name
-- Nodes
-- ElemSets

matlab代码

% --------------------------------------------------------------- %
% Loads the inp(generated by HM2020) data to a parts struct array %
% --------------------------------------------------------------- % function part = loadinp_GeByHm2020(inp)
% inp='SmallLXJ_TETmesh_size2mm-20230704.inp'; % Get and process text from the file
text = fileread(inp); % read all the text
text = strtrim(text); % remove leading and trailing whitespaces
text = strrep(text, ' ', ''); % remove any in-between whitespaces
text = lower(text); % lower the case
text = inpremcom(text); % remove comment lines from inp text data % get nodes infomation
data =strsplit(text, '*element')';% split char vector at '*element'——>n X 1 的cell array; % create struct :part
name=strsplit(inp,'.');
part.Name=name{1}; % Extract nodes data
nodes=data{1};
part.Nodes=getnodes(nodes);
% Extract set data
% create a cell array ,contain each elemset struct
ElementSets=cell(size(data,1)-1,1);
numOftet=0; for i=1:1:size(ElementSets,1)
% a char vector including element define info: setname,elemtype,elem label,connectivity
elemsetInfo=data{i+1};
ElementSets{i}=getelementOFset(elemsetInfo);
numOftet=numOftet+size(ElementSets{i}.Elements,1);
end
part.ElemSets=ElementSets;
%show number of tet elements
disp(['**number of tet =',num2str(numOftet)])
end function output = inpremcom(text) % ---------------------------------------- %
% Removes comment lines from inp text data %
% ---------------------------------------- % text = splitlines(text);% split string at the actual \n ,rather than char \n。 output = {};
j = 1; for i = 1:1:size(text, 1)
if ~startsWith(text{i}, '**')
output{j, 1} = text{i};
j = j + 1;
end
end
% 文本\n 会转换为实际的换行符
output = strjoin(output, '\n');%将元胞数组中的字符向量联接为一个字符向量。指定\n作为分隔符。 end function Nodes = getnodes(nodes) % --------------------------------------------------------------------------- %
% Gets the nodes from the *node data,return a containers.Map var called Nodes %
% --------------------------------------------------------------------------- %
%create a empty Map var
Nodes=containers.Map('KeyType','double','ValueType','any');
% loop *node data
lines = splitlines(nodes);
for i = 1:1:size(lines, 1)
line = lines{i};
if contains(line, '*node')
for j = (i + 1):1:size(lines, 1)
line = lines{j};
if contains(line, '*') || isempty(line)
return
else
data = str2num(line);
% key: node label
% value: 1X1 cell array ,contain coordinates value
Nodes(data(1)) = {data(2:end)};
end
end
end
end end function ElemSet = getelementOFset(elemdata) % --------------------------------------------------------- %
% Gets the elements from the *element data ,return a struct %
% ----------------------------------------------------------% ElemSet=struct;
%create a empty Map var
Els=containers.Map('KeyType','double','ValueType','any'); lines = splitlines(elemdata); % read elemsert's name and elemtype
if contains(lines{1},'elset')
line_1=strsplit(lines{1},',');
for i=2:1:size(line_1,2)
tempcell=strsplit(line_1{i},'=');
if strcmp( tempcell{1},'type')
ElemSet.ElemType=tempcell{2};
elseif strcmp(tempcell{1},'elset')
ElemSet.SetName=tempcell{2};
end
end
end % read element's label and connectivity
for i = 2:1:size(lines, 1)
line = lines{i};
if contains(line, '*') || isempty(line)
break;
else
data = str2num(line);
% key: elem label
% value: 1X1 cell array ,contain elem connectivity
Els(data(1)) = {data(2:end)};
end
end ElemSet.Elements=Els;
end

【Matlab函数】提取inp文件中的节点、单元数据并保留集合信息的更多相关文章

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

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

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

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

  3. MATLAB 在同一个m文件中写多个独立的功能函数

    MATLAB 在同一个m文件中写多个独立的功能函数,从而实现在外部可以直接调用这个文件中的某一个函数. 鉴于MATLAB的函数文件的函数名与文件名要一样,就需要有一个统一的接口来涵盖这些功能函数. 例 ...

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

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

  5. 提取PPT文件中的Vba ProjectStg Compressed Atom。Extract PPT VBA Compress Stream

    http://msdn.microsoft.com/en-us/library/cc313106(v=office.12).aspx  微软文档 PartI ********************* ...

  6. C#如何提取.txt文件中的每个字符串

    C#如何提取.txt文件中的每个字符串,并将其存放到一个类中. 将其中的编号 菜名 价格 分别存入不同的数组中. 注:在用ReadLine读取一行信息时为什么读取的中文字符变成了乱码. 20 满意答案 ...

  7. 另类爬虫:从PDF文件中爬取表格数据

    简介   本文将展示一个稍微不一样点的爬虫.   以往我们的爬虫都是从网络上爬取数据,因为网页一般用HTML,CSS,JavaScript代码写成,因此,有大量成熟的技术来爬取网页中的各种数据.这次, ...

  8. 【译】 AWK教程指南 3计算并打印文件中指定的字段数据

    awk 处理数据时,它会自动从数据文件中一次读取一条记录,并会将该记录切分成一个个的字段:程序中可使用 $1, $2,... 直接取得各个字段的内容.这个特色让使用者易于用 awk 编写 reform ...

  9. matlab之导入txt文件并取其中一列数据

    1.我想导入下面这个文件的内容,并且获取这个文件中的两列数据. 2.首先确保Matlab当前所在文件夹为txt文件所在文件夹,然后命令行执行: X = load('2019_03_21_08_59_0 ...

  10. 从PCD文件中读取点云数据

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=84 在本小节我们学习如何从PCD文件中读取点云数据. 代码 章例1文件夹中, ...

随机推荐

  1. 聊一聊 C#后台线程 如何阻塞程序退出

    一:背景 1. 讲故事 这篇文章起源于我的 C#内功修炼训练营里的一位朋友提的问题:后台线程的内部是如何运转的 ? ,犹记得C# Via CLR这本书中 Jeffery 就聊到了他曾经给别人解决一个程 ...

  2. 【Rive】Android与Rive交互

    1 Android与Rive交互的常用接口 1.1 RiveAnimationView参数 <app.rive.runtime.kotlin.RiveAnimationView android: ...

  3. docker limit

    我给docker的systemd

  4. mac 10.15 国内如何安装brew

    下载文件  brew_install.sh,然后执行 sh brew_install.sh 通常会卡在 tapping homebrew/core ,没关系, 执行如下命令即可 解决方法,手动执行下面 ...

  5. Vue3封装一个ElementPlus自定义上传组件2--无弹窗

    Vue3封装一个ElementPlus自定义上传组件2--无弹窗 写在前面: 无弹窗的上传组件它来了,依旧是小巧又好用,只不过这回我用的是前端直传的方式,采用http-request进行文件上传,中间 ...

  6. Qt编写地图综合应用45-路径规划

    一.前言 路径规划一般是根据起始点坐标经纬度和结束点坐标经纬度,查询出合适的路线.关于起始坐标和结束坐标,最开始做的是直接传入具体中文地址即可,后面百度地图不再开放此功能,貌似变成了收费功能,但是经纬 ...

  7. Qt项目架构经验总结

    (一)通用规则 除了极小的微型demo级别项目外,其余项目建议用pri分门别类不同文件夹存放代码文件,方便统一管理和查找. 同类型功能的类建议统一放在一起,如果该目录下代码文件数量过多,也建议拆分多个 ...

  8. SpringBoot整合WebSocket实践

    简介 先来看下维基百科WebSocket的简介: WebSocket是一种与HTTP不同的协议.两者都位于OSI模型的应用层,并且都依赖于传输层的TCP协议. 虽然它们不同,但是RFC 6455中规定 ...

  9. java通过apache poi框架读取2007版Excel文件

    java系读写excel文件既可以用jxl库,也可以用POI库,但是,jxl库只支持低版本的excel2003,不支持更高版本,无法直接输出*.xlsx文件,只能输出*.xls文件,另外,更新也不频繁 ...

  10. 即时通讯技术文集(第9期):Java NIO和Netty入门系列 [共19篇]

    为了更好地分类阅读52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第9 期. [-1-] 少啰嗦!一分钟带你读懂Java的NIO和经典IO的区别 [链接] http ...