技术标签: tensorflow打印模型结构 x3g格式 3d打印
作者:魏鲁双 刘尚蔚 王 颖 魏 群
华北水利水电大学钢结构与工程研究院
中国科学院大学人工智能学院
摘 要
薄壁结构的3D打印STL文件是单侧外表面三角面网络,而钢结构模型体系的3D打印数据图形是由STL三角形沿着结构杆件、连接件各表面围成的空间三角面混合包络的集成,这与薄壁三角面网络存在较大差异。STL文件的复杂程度、单元数目都大为增加,也增加了STL三角面与有限元网格融合一体的难度。基于所建立数字图形模型,很容易得到STL的打印数据。为将STL三角面转换为满足有限元计算网格单元,需要预处理、清除、归并奇异点。通过建立结构整体节点编号和坐标体系,并依据STL三角面和法线向量,形成简化的六面体单元,进而形成整体几何矩阵,为生成有限元网格提供了有效方法,并开发了依据转换流程的计算机应用程序。通过计算实例,表明该方法为3D打印数据与有限元计算单元网格融合提供了一条可用的捷径。
由于计算机图形学软硬件的迅速发展,其处理问题的速度、规模和方式都有了极大的改善和提高,各种复杂结构都可以迅速准确地建立三维数字模型。3D打印的图形处理软件(例如CURA)可以在已建模型的各个表面形成STL格式的三角形面片包络体及相应的数据格式。可以发现,将结构离散化进行数值分析,与3D打印可属同一类的离散方式。相关研究人员曾对3D打印薄壁结构的打印STL三角面与三维有限元网格进行了研究,在基于单纯表面三角形STL网格上,提出了实用有效的薄壁结构3D打印与有限元计算统一网格的方法。对于具有一定厚度、切割打孔加工形状、焊接栓接等连接方式的钢结构体系,若采用有限元计算,其实体单元网格划分则比较困难,通常采用杆单元或简化连接节点的种类形式进行计算,单元处理的工作量相当繁琐巨大。与常规的STL转化有限元网格的思路和方法不同,3D打印结构包络面的STL数据体系和逐层增高的各平面切割数据,组合成实体的离散化计算单元,仅在数据层面上进行调整,避免了单独划分单元的复杂过程,保证了各部分满足有限单元的协调和精度要求。本文以钢结构体系的数字图形模型为例,利用融合方法进行研究,所得到的处理流程和计算结果可推广到更多的结构体系之中。
1 钢结构模型3D打印STL格式与有限元网格格式转换
1.1 3D打印STL格式
任一STL格式包括了三角形三个角点的坐标xi,yi,zi及外法线矢量ni。对于一个具有m个单元的结构而言,其STL文件将包括m段这样的循环表达式,格式如下:
(1,2,…,m个单元)
solid Object01
facet normal-7.078 227e-002 8.323 698e-001
5.496 821e-001
outer loop
vertex 3.325 273e+002 4.636 763e+002
1.153 948e+002
vertex 3.474 805e+002 2.071 548e+002
5.057 643e+002
vertex 3.803 828e+002 2.096 953e+002
5.061 541e+002
endloop
endfacet
……………………………………………………
……………………………………………………
facet normal 9.969 845e-001 7.670 629e-002
1.174 874e-002
outer loop
vertex 1.825 676e+003 2.013 525e+003
9.046 692e+001
vertex 1.872 824e+003 1.396 057e+003
1.208 904e+002
vertex 1.873 184e+003 1.396 084e+003
9.021 741e+001
endloop
endfacet
endsolid Object01
其中,facet normal为三角形的外法线方向单位矢量,关键词“outer loop”和“end loop”之间包含了三角形的三个顶点x,y,z坐标。
图1为STL格式的角点与法线示意,图2为有限元简化的六面体单元及角点示意。由图1、图2可知,对于m个三角面的结构则形成如下矩阵。
图1 STL格式的角点与法线
图2 有限元简化的六面体单元及角点
整体单元表达为:
对此矩阵给定容差值进行近似点合并、奇异点消除,形成该结构的n个整体节点列阵,其中n、m符合欧拉关系数。
在整体节点数表示中,m个三角形单元数列表示为9个x,y,z坐标转换为总节点[P]中相应的3个节点编号。
n个整体节点编号为:
m个单元表达为:
式中:a,b,c,d,e,f,i,j,k,n1,n2,n3为中元素,形成3D打印STL外表面三角网的矩阵形式。
1.2 有限元格式
对于钢结构模型要进行有限元力学计算分析,即要先将钢桁架3D打印STL外表面三角网的数据格式转换为用有限元方法表示的数据格式,3D打印STL表面三角网同m个单元数的表达。
1.3 三维有限元六面体单元的形成
由外表面三角生成三维六面体单元,在STL格式下,八结点六面体单元实体简化为六角点五面体单元,结构体由一系列空间三角形平面表示。产生三维有限元单元需要对外表面三角形网格进行归类调整,消除奇异点,如三角形角度太小或太大,两结点距离太小等。通过自主开发程序对其进行处理后,形成符合计算要求的三维空间三角形网格,以满足计算模式之需要。图3为描述于上述三步骤的处理流程;图4为处理过的钢结构外表面空间三角形网格。
图3 外表面三角网处理流程
图4 处理后的3D打印外表面三角形网格
1.4 形成三维有限元网格
本文仅针对杆件横断面为空心薄壁形状的钢桁架为例,将其外表面三角形的每一个结点沿着该结点连接处所有单元的外法线矢量合成的负方向拉伸出新的结点,形成内表面三角形,如图5所示。
图5 形成三角形内表面示意
以四个三角形(在钢桁架角点处会有更多的三角形)外表面为例,研究其生成内表面点的方法。四个三角形的外法线(归一化)方向分别为其中,
余类推,它们的合成矢量为:
(1)
式中:分别为x、y、z方向的单位矢量。
矢量的模为:
(2)
将矢量归一化为:
(3)
沿着的负方向产生新的内表面结点,设外表面与内表面的距离为D,在
负方向的截距为DL。D与DL的夹角α近似用
与
的夹角代替。
和
为归一化矢量,有:
(4)
(5)
(6)
产生的新内表面结点坐标为(在的负方向取长度DL):
x′=x-DL×ax (7a)
y′=y-DL×ay (7b)
z′=z-DL×az (7c)
每一个上表面结点都会按上述方法在下表面产生新的结点,并归入已有的总节点标号系列之中,根据上表面单元信息,可得到体单元信息。
2 3D打印与计算实例
与薄壁结构从STL文件转化为具有一定厚度的结构体数值计算网格不同,对钢结构体系数据建模产生的STL格式按照上节所述步骤方法进行处理,得到3D打印STL与有限元计算的统一网格。
2.1 钢桁架3D打印
笋溪河特大桥的三维钢桁架某一跨间的实体结构如图6所示。
图6 钢桁架实体结构
该钢桁架是一对称结构,将其输出为STL格式的文件,经过专用的切片软件“CURA”,将模型在高度方向切片。图7为某一高度切片图形。
图7 钢桁架某一高度切片
钢桁架模型尺寸为400 mm×254 mm×86 mm,每隔0.20 mm切一层,共430层,形成3D打印机打印文件“钢桁架.gcode”,并通过3D打印机打印。
2.2 钢桁架三维有限元建模及奇异点修正
单跨钢桁架杆件较少,STL文件长度约1 500行,通过“ZHSTL程序”将钢桁架的STL文件转换为有限元数据文件格式,形成具有一定厚度的三角形单元。结点数1 918个,单元数2 264个。相对于艺术花瓶的结点数和单元数少得多,由于桁架的杆件主要由平面组成,平面的数量较少,从而形成的三角形网格也很少。但同时也带来了不少问题,例如有许多网格的三角形非常细长,产生很尖或很钝的角,也有一定扭曲的或奇异的三角形单元,需要经过一定的处理,才指清除奇异点。
将有限元数据导入ADINA大型结构分析软件中,形成计算模型,如图8所示。
图8 钢桁架有限元模型
钢桁架的打印材料为聚乳酸(PLA),其力学参数如表1所示。
表1 PLA材料的力学参数
边界条件:钢桁架底部四个角固定,即约束底部四个角x=0、y=0、z=0。
计算工况:1)钢桁架在自重荷载下变形及应力状况;2)钢桁架在自重荷载、顶部承受总合力为10 N的荷载(平均分布于钢桁架顶部)下变形及应力状况。
2.3 钢桁架三维有限元计算结果
利用3D打印STL转换为有限元六面体网格进行了各工况计算。
图9、图10分别为钢桁架自重荷载作用下x向位移云图和最大主应力(σ1)云图。图11为钢桁架在自重荷载、顶部承受总合力为10 N荷载(平均分布于钢桁架顶部)下y向位移云图和最小主应力(σ3)云图。由图9~图11可知,计算结果合理,满足了工程需要。
图9 桁架自重x向位移云图 m
图10 桁架自重最大主应力(σ1)云图 MPa
图11 桁架加载y向位移云图 m
图12 桁架加载最小主应力(σ3)云图 MPa
3 结束语
在作者团队提出的数字图形介质理论当中,已经扩充并更新了数据采集的一些新技术,例如三维激光扫描方法、全景摄影方法、对视几何拍摄方法、无人机倾斜式摄影方法、室内全景摄影方法,它们都可以很容易得到结构的点云数据,据此得到的逆向数字模型可自动转化为STL或OBJ格式的文件,也就是包络整个工程的Polygon Soap,通过单体法分离,各个结构件可以进行三维单体打印。
本文基于STL格式,通过融合转化为数值计算网格,可以迅速进行数值计算,在测算与快速评估工程应力、应变、变形分布规律的过程中,提出了高效率的图形网格转换方法,具有较强的实用性与普遍性。随着研究的继续深入,可以预计该种方法一定会有更多的应用和提高。
来源:魏鲁双,刘尚蔚,王颖,等. 钢结构模型3D打印与有限元网格的融合方法[J]. 钢结构, 2019, 34(12): 88-92.
DOI: 10.13206/j.gjg201912017
点击
阅读原文
下载全文
推荐阅读:
文章精选 | 周绪红院士关于冷弯薄壁型钢(CFS)结构房屋关键技术及其应用的研究进展
装配式钢结构梁柱连接节点研究进展
论文推荐 | 3D打印技术在工程建设中的应用及前景
该篇文章刊载于《钢结构》2019年第12期,如需购买请点击以下链接:
文章浏览阅读1.4k次。自己的一个网站,因为服务器是海外的,虽然速度还不错,但延迟和丢包问题经常困扰着我。尤其是到了晚上,丢包情况就更加严重,所以需要一款免备案、有香港节点的CDN来提升一下访问体验。查了下资料,很多人推荐使用Nodecache,用了一段时间后感觉 Nodecache 确实还不错,下面给大家介绍一下。Nodecache是GlobalCache Technology Co., Ltd.旗下品牌,致力于为客户提供一站式的在线业务加速服务。Nodecache 主要提供的就是 免备案CDN 加速、SSL证书、DNS_console-api2 nodecache
文章浏览阅读182次。前言在ApplicationContext的refresh()中,Spring容器开始初始化,容器的初始化需要经历12个方法,本篇文章主要讲解bean实例化的方法:finishBeanFactoryInitialization(beanFactory)。一首先debug进入到finishBeanFactoryInitialization(beanFactory)中,前期会经过一些列的准备工作..._spring resolvebeforeinstantiation
文章浏览阅读641次。webrtc cdnIn the first part we have deployed a simple dynamic CDN for broadcasting WebRTC streams to two continents and have proved on the example of a countdown timer that the latency in this kind of..._webrtc cdn
文章浏览阅读8.5k次。转 glee Alex 的专栏文章:http://blog.csdn.net/qq690197664/article/details/18223495目标:1. 在eclipse环境下,编译Android原生的apk2. 在eclipse环境下,做system系统签名的方法。(有很多,这里在windowsxp下做脚本处理) _eclipse 编译android项目
文章浏览阅读299次。基于django的个人博客网站建立(二)基于django的个人博客网站建立(二)前言网站效果可点击这里访问-----------------------今天主要完成后台管理员登录的状态以及关于文章在后台的处理具体内容首先接上一次内容,昨天只是完成了一个登录的跳转,其他信息并没有保存到session中,今天先完善一下在用户登录时,先设置了一下sessionre..._基于 django 个人博客网站
文章浏览阅读1.5k次。一、微服务架构的高并发问题背景:由于服务器的最大处理线程数都是有上线的,比如tomcat等。当系统某时刻出现高并发请求时,如秒杀活动等,在瞬间服务器可处理线程数瞬间使用完,线程资源耗尽。当后面的其他请求在过来时,请求将一直处于一段等待空闲释放线程的时间,在此时间内对用户的体验就是一直未响应状态。如微服务中的雪崩效应,微服务A在对外提供服务时,需要调用微服务B,微服务B对A提供服务时,需要调用微服务C。如果服务C出现问题,对于服务器B和A都将无法释放请求占用的线程资源。如果请求较多,服务B和服务A服务_hystrix线程池导致线程数耗尽的问题
文章浏览阅读234次。本文接[url=http://sarin.iteye.com/blog/1148960]上一讲[/url]继续来说明 我们继续来制作饼图示例,结合CSS3。先说一下需求,就是一个展示的页面,用饼图来展示数据,下方给出各个扇形的含义,最后给一个按钮点击进入详情。饼图的上方有标题和简单的文字介绍,这些内容竖式结构,页面上显示散列,就是这么简单。 我们首先来设置背景样式,用C...
文章浏览阅读5.6w次,点赞31次,收藏242次。今天分享一下本人在笔记本上配置TensorFlow环境的过程。说明电脑配置:Acer笔记本CPU Inter Core i5-6200UGPU NVIDIA GeForce 940M(忽略掉我的渣渣GPU)Windows10所需的环境:Anaconda3(64bit)CUDA-8.0CuDNN-5.1Python-3.6TensorFlow 或者 Ten...
文章浏览阅读2.5w次,点赞11次,收藏21次。本文主要说明的是如何在网页中动态的显示日期时间,我们这儿使用js来实现,很简单,一看就会。为动态显示系统时间的javascript代码及页面代码: 网页中动态的显示系统日期时间 function startTime() { var today=new Date();//定义日期对象 var yyyy = today.getFu_浏览器 显示 日期
文章浏览阅读3.9k次。在Java中,变量的作用域分为四个级别:类级、对象实例级、方法级、块级。 类级变量又称全局级变量或静态变量,需要使用static关键字修饰。类级变量在类定义后就已经存在,占用内存空间,可以通过类名来访问,不需要实例化。 对象实例级变量就是在类中定义的变量,是成员变量,实例化后才会分配内存空间,才能访问。 方法级变量就是在方法内部定义的变量,是局部变量。 块级变量就是..._成员变量和局部变量的作用域
文章浏览阅读170次。<style>.Tpiaochuan { background: rgba(0, 0, 0, 0) url("") no-repeat scroll center center / 100% 100%; display: none; height: 300px; left: 50%; margin-left: -250px; margin-top: -185px; opacity: 0.9; position: fixed; ._jq写广告窗口
文章浏览阅读58次。实验环境:CentOS7[root@~ localhost]#yum -y install mariadb-server[root@~ localhost]#mysql_secure_installation #数据库安全加固NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB ..._加固mysql服务器