STL文件格式详解【3D】
STL(StereoLithography:立体光刻)文件是 3 维表面几何形状的三角形表示。 表面被逻辑地细分或分解为一系列小三角形(面)。 每个面由垂直方向和代表三角形顶点(角)的三个点来描述。 切片算法使用这些数据来确定制造商要构建的 3 维形状的横截面。
本文描述了 STL 文件格式的技术细节,主要面向有兴趣开发可读写 STL 文件的硬件或软件的人提供。大多数用户不需要关心,可以使用 3DConvert在线工具将其他格式的3D模型转换为STL格式。
推荐:用 NSDT设计器 快速搭建可编程3D场景。
1、STL格式规格
STL 文件由构面数据列表组成。 每个面由单位法线(垂直于三角形且长度为 1.0 的线)和三个顶点(角)唯一标识。 法线和每个顶点分别由三个坐标指定,因此每个面总共存储 12 个数字。
1.1 STL 文件中的面方向
图1:面的方向由单位法线的方向和顶点列出的顺序决定
面(facet)定义了 3 维对象的表面。 因此,每个面都是对象内部和外部之间边界的一部分。 面的方向(哪个方向是“外”,哪个方向路是“内”)以两种方式冗余指定,这两种方式必须一致。 首先,法线的方向是向外的。 其次,从外部观察对象时,顶点按逆时针顺序列出(右手定则)。 这些规则如图 1 所示。
1.2 顶点到顶点规则
每个三角形必须与其相邻的每个三角形共享两个顶点。 换句话说,一个三角形的顶点不能位于另一个三角形的一边上。 图 2 对此进行了说明。
图2:顶点到顶点规则。 左图显示了违反规则的情况。 正确的配置如右图所示
所代表的物体必须位于全正八分圆内。 换句话说,所有顶点坐标必须是正定(非负且非零)数。 STL文件不包含任何比例信息; 坐标采用任意单位。
官方 3D Systems StL 规范文档指出,有一项规定包含“建筑参数的特殊属性”,但没有给出包含此类属性的格式。 此外,该文件还指定了“三角形边的最小长度”和“三角形最大尺寸”的数据,但这些数字的含义是可疑的。
建议按 z 值升序对三角形进行排序,但不是必需的,以便优化切片程序的性能。
通常,STL 文件以扩展名“STL”保存,不区分大小写。 切片程序可能需要此扩展名,也可能允许指定不同的扩展名。
StL 标准包括两种数据格式:ASCII 和二进制。 下面分别进行描述。
2、STL ASCII 格式
ASCII 格式主要用于测试新的 CAD 界面。 其文件较大,不适合一般用途。
ASCII STL 文件的语法如下:
粗体表示关键字; 这些必须以小写形式出现。 注意:
- facet normal和 outer loop中都有空格, end开头的关键字都没有空格。
- 缩进必须有空格; 不允许使用 tab。
- 符号 {…}+表示大括号中的内容可以重复一次或多次。
- 斜体符号是要替换为用户指定值的变量。
- 平面法线和顶点线中的数值数据是单精度浮点数,例如 1.23456E+789。
- 面法线坐标可能有一个前导减号; 顶点坐标可能不会。
3、STL 二进制格式
二进制格式使用 IEEE 整数和浮点数值表示形式。
二进制 STL 文件的语法如下:
符号 {…}+ 表示大括号中的内容可以重复一次或多次。 属性语法未记录在正式规范中。 指定属性字节计数应设置为零。
原文链接:STL模型格式详解 — BimANt
相关文章:

STL文件格式详解【3D】
STL(StereoLithography:立体光刻)文件是 3 维表面几何形状的三角形表示。 表面被逻辑地细分或分解为一系列小三角形(面)。 每个面由垂直方向和代表三角形顶点(角)的三个点来描述。 切片算法使用…...

【分布式技术专题】RocketMQ延迟消息实现原理和源码分析
痛点背景 业务场景 假设有这么一个需求,用户下单后如果30分钟未支付,则该订单需要被关闭。你会怎么做? 之前方案 最简单的做法,可以服务端启动个定时器,隔个几秒扫描数据库中待支付的订单,如果(当前时间-订…...

Qt中ffmpeg API存储和显示摄像头视频
Qt中ffmpeg API存储和显示摄像头视频的功能需要之前写的视频ffmpegAPI的视频播放的流程。 代码源码位置:https://download.csdn.net/download/qq_43812868/88157743?spm1001.2014.3001.5503 一、存储和显示摄像头的视频的流程 这是读取打开视频文件的流程&#x…...
jfinal tomcat部署
首先明确一下 JFinal 项目是标准的 java web 项目,其部署方式与普通 java web 项目没有任何差别。Java Web 项目在 Tomcat 下部署有一些不必要的坑需要避免,所以撰写此文方便大家绕过一些坑,以下部署以 linux 为例,windows 与此类…...
Linux - MongoDB 数据库自动退出服务问题/闪退
问题:MongoDB 自动退出服务问题 原因: 由于 Mongodb 服务,使用过多系统内存,导致系统强制停止 Mongodb 服务。 解决方法: 在 mongodb.conf 配置文件内,添加新配置内容: wiredTigerCacheSi…...
B2B2C多语言电商系统平台搭建,多用户商城系统搭建(app、小程序、微商城)
搭建B2B2C多语言电商系统平台以及多用户商城系统(包括app、小程序、微商城)的步骤如下: 步骤一:需求分析和规划 1. 确定项目的目标和范围。明确平台所需的功能、支持的语言、用户权限等要求。 2. 分析竞争对手,并确定…...

【MySQL】创建高级联结
目录 一、使用表别名 二、使用不同类型的联结 1.自联结 2.自然联结 3.外部联结 3.使用带聚集函数的联结 4.使用联结和联结条件 一、使用表别名 别名除了用于列名和计算字段外,SQL还允许给表名起别名。 起别名有两个好处: 一个是缩短SQL语句&am…...

chatGPT应用于房地产行业
作为 2023 年的房地产专业人士,您无疑认识到技术对行业的重大影响。近年来,一项技术进步席卷了世界——人工智能。人工智能彻底改变了房地产业务的各个方面,从简化管理任务到增强客户互动。 在本文中,我们将探讨几种巧妙的人工智…...
java之jmh初识及使用
最近有场景需要数据支撑json的toJsonString方法和java原生的toString方法的运行速度,因此选用了JMH测试工具。 以下代码大致意思是:初始化一个list集合,放入100个对象,然后遍历这个集合,调用fastjson的toJsonString方…...

利用状态监测和机器学习提高冷却塔性能的具体方法
在现代工业生产中,冷却塔扮演着至关重要的角色,它们的性能直接影响着工艺流程的稳定性和效率。为了确保冷却塔的正常运行和减少系统故障,状态监测和机器学习成为了关键技术。 图.冷却塔(PreMaint) 在前文《基于人工智…...
LeetCode_02_1289. 下降路径最小和 II
1289. 下降路径最小和 II 给你一个 n x n 整数矩阵 grid ,请你返回 非零偏移下降路径 数字和的最小值。 非零偏移下降路径 定义为:从 grid 数组中的每一行选择一个数字,且按顺序选出来的数字中,相邻数字不在原数组的同一列。 示…...
consul servicecheck 查看健康信息
在浏览器中地址栏输入如下信息:http://localhost:8500/v1/agent/checks 返回信息如下: { "service:springboot-security-oauth2-zuul-sso-server-1881": { "Node": "8DBQ2F05HUXZ2QO", "Check…...

什么是信息孤岛?如何打破信息孤岛?
一文让你看懂:什么是信息孤岛?信息孤岛形成的原因?以及如何打破信息孤岛? 本文重点结合了企业信息系统的需求,给出了整合企业现有信息系统的方法,能有效解决企业信息孤岛的问题,并帮助企业快速…...

Android开源 Skeleton 骨架屏
目录 一、简介 二、效果图 三、引用 Skeleton 添加jitpack 仓库 添加依赖: 四、使用 Skeleton 1、VIew 骨架屏使用 ViewSkeletonScreen 2、列表类View 骨架屏 RecyclerViewSkeletonScreen、GridViewSkeletonScreen、 ListViewSkeletonScreen 一、简介 骨架屏的作用是…...

都说IT就业难?到底难在哪?
现在网上关于IT行业,劝退的帖子真的很多,很多人看了后无比焦虑,没入行的,还没开始学,就担心找不到工作了;在行业内的,想跳槽的也纷纷开始摆烂,觉得市场根本没啥机会,简历…...

STM32芯片的内部架构介绍
STM32芯片由内核和片上外设两部分组成。STM32F103采用Cortex-M3内核,该内核由ARM公司设计。芯片生产厂商ST则负责在内核之外设计部件并生产整个芯片。这些内核之外的部件被称为核外外设或片上外设,如GPIO、USART(串口)、I2C、SPI等…...
Angular FormControl value属性的一些事
背景:一个输入校验,允许输入多行,每一行是ip或网段。写了个校验,将其按行拆分后单独校验。 1. FormControl无法深复制 使用JSON.parse(JSON.stringify(control))进行简单深复制报错,因为不是json类型;使用d…...
Nim游戏:取石头
(一)一堆取石头 背景: 在博弈论中,有一种称为Nim游戏的经典问题,它涉及到取石子的问题,其中有许多变种。Nim游戏是一种零和博弈,即两名玩家交替行动,每次只能从一堆物品中取走一定数…...

springboot国际化
springboot国际化 不需要引入额外的jar包 参考:https://zhuanlan.zhihu.com/p/551605839 1.rources要创建Resource Bundle 2.yml配置中引入Resource Bundle 引入Resource Bundle spring:messages:encoding: UTF-8basename: i18n/messages_common3.创建国际化工具…...
12种不宜使用的Javascript语法
1. Javascript有两组相等运算符,一组是和!,另一组是和!。前者只比较值的相等,后者除了值以外,还比较类型是否相同。 请尽量不要使用前一组,永远只使用和!。因为默认会进行类型转换,规则十分难记。如果你…...

MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...

海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》
近日,嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》,海云安高敏捷信创白盒(SCAP)成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天,网络安全已成为企业生存与发展的核心基石,为了解…...

算法—栈系列
一:删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...
window 显示驱动开发-如何查询视频处理功能(三)
D3DDDICAPS_GETPROCAMPRANGE请求类型 UMD 返回指向 DXVADDI_VALUERANGE 结构的指针,该结构包含特定视频流上特定 ProcAmp 控件属性允许的值范围。 Direct3D 运行时在D3DDDIARG_GETCAPS的 pInfo 成员指向的变量中为特定视频流的 ProcAmp 控件属性指定DXVADDI_QUER…...