问题标签 [stl-fileformat]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3322 浏览

ios - 在 Swift 2 (Metal) 中加载 STL 对象

我正在尝试创建一个 3D 模型查看器,我已经阅读了一些关于 OpenGL 和 Metal 的教程来创建 3D 模型并使用平移手势等进行一些基本旋转。这个示例来自www.raywenderlich.com,一个示例项目Git(error free),网上的那个(原始代码)在 Xcode 7.1.1 上有一些错误。我想加载 STL 文件以显示在设备上而不是 Cube 上。我搜索了很多,但找不到加载 STL 文件以将 3d 对象投影到视图(Metal / Swift)的教程。

任何帮助都会很棒。我正在使用 swift 2 和 xCode 7.1.1

0 投票
1 回答
2333 浏览

fortran - 写入二进制文件

我正在尝试在 Fortran 90 中编写一个 STL 二进制文件。该文件具有以下格式

HEADER:一个 80 字节的 ASCII 标头 - TITLE

一个 4 字节的无符号长整数,NO。刻面

每个方面的格式:

法线向量,3 个浮点值,每个 4 字节;

顶点 1 个 XYZ 坐标,3 个浮点值,每个 4 字节;

顶点2个XYZ坐标,3个浮点值,每个4字节;

顶点 3 个 XYZ 坐标,3 个浮点值,每个 4 字节;

一个 2 字节的无符号整数,应该为零;

我正在尝试创建一个未格式化的文件来写入相关信息,但在定义正确的记录长度时遇到了麻烦。假设我有N个方面,我使用以下命令打开并写入信息

我可以发出第一个写语句来写出标题信息,然后发出第二个写语句(在 do 循环内)来写出方面信息吗?

如果是这样,每个写入语句我需要的记录号是多少,因为我有不同记录长度的标题和方面信息。

0 投票
2 回答
1160 浏览

javascript - THREE.js 中 BufferGeometry 的 STL 导出器

我有许多 BufferGeometries,它们组成一个场景,它们的网格已经转移到不同的位置。我想知道是否有办法将这个场景从包含 BufferGeometries 的网格导出到 STL 文件。非常感谢。

0 投票
1 回答
1226 浏览

node.js - 用 JavaScript 计算 STL 文件的边界框

所以我正在使用这个 npm 包:node-stl

它工作得很好。然而,正则表达式语法、数学和几何计算让我有些困惑。尤其是同时。

基本上我想要实现的是扩展脚本来计算 STL 的边界框。

这是计算正在解析/读取的 STL 的体积和重量的主文件。

如果有人可以帮助我,那就太好了。我知道,感觉很简单。我只需要知道不同方向(x,y,z)的最大/最小值,然后就可以计算边界框。

但我不明白 x、y 和 z 的最大/最小值是多少。如果您有想法,请回答。

0 投票
1 回答
1244 浏览

3d - 快速简化 3D 文件?

我正在使用 Sweet Home 3D 设计一个车间,这非常棒,但由于某种原因它没有 CNC 铣床、车床、激光切割机之类的东西 - 去看看,对我来说似乎是非常标准的家居用品(插入讽刺)。

令人敬畏的是它有一个导入家具功能,它让我可以在 GrabCAD 上找到一堆这些物品作为 STEP 或 STL。使用 FreeCAD,我可以打开它们,将它们导出为 OBJ 文件,这样我就可以导入 Sweet Home 3D。

我遇到的问题是其中一些项目,例如这个船拖车https://grabcad.com/library/boat-trailer-4有近一百万个顶点,是一个 70MB 的文件。激光雕刻机打开时间很长,文件大小为 130MB,而我真正需要的只是一个看起来有点像激光雕刻机的外壳。

我不需要内部的所有细节,例如制动器,绞盘上的齿轮等,并且使用没有内部结构的外壳就可以了,因为它只是用于可视化空间。

我尝试使用 FreeCAD 进行二进制组合,并尝试使用 MeshLab 的一些简化技术,但文件仍然很大,这使应用程序陷入困境,并使我的工作室文件的开头成为 800MB 文件并不断增长。

有没有一种简单的方法来获取 3D 文件并创建它的“轮廓”或外壳,而无需尝试识别您要删除的每个单独的东西?我没有任何更高端的 3d 设计软件,例如 3DS、Maya 或 Solidworks——但我很乐意使用所有开源/廉价选项。

在此处输入图像描述

0 投票
1 回答
836 浏览

3d - 如何将 .stl 导入 tetgen?

我试图让 tetgen 提供我的 stl 模型的 Delaunay 四面体化,但总是在相交方面出现一些错误。

该模型是人类心脏的 ascii .stl 模型,从计算机断层扫描数据中获得(如果需要,可以提供链接)。首先,我使用具有 100 个局部性和 1.00 个容差值的自适应渲染在 CTAn 软件中构建它,而不是使用 MeshFix 修复它。MeshFix 输出 .off 或二进制 .stl 文件。

如果我尝试将 .off 模型导入 tetgen,我总是会收到此错误

读取文件 off.off 中第 2 行标题的语法错误。

我无法直接将.stl文件导入tetgen,因为它不支持二进制.stl,所以我先使用MeshLab转换为acsii.stl,然后将结果导入tetgen。

但在这种情况下,我有另一个错误

找到两个几乎自相交的刻面

它建议我降低二面角公差。我这样做只是为了得到下一条消息:

找到两个完全自相交的刻面

它建议我使用 -d 前缀来检测所有这些方面。我这样做并收到下一条消息:

没有面相交

现在我很困惑,因为它给出了特殊的命题。

如果这里有人熟悉tetgen,请告诉我,如何将我的模型导入tetgen?我尝试了一些修复工具和不同的前缀,但到目前为止没有任何效果。

如果有人有 tetgen 社区的链接,我也将不胜感激,因为我没有找到任何东西,虽然试过了。

0 投票
1 回答
875 浏览

c# - STL 文件验证

我有一个 ASCII stl 文件,我需要通过以下标准为 3D 打印机验证此文件。

首先我想展示文件的结构:

上述格式的 ASCII stl 文件中有更多的方面(三角形)。三个顶点代表 3D 中的三个点,它们创建了一个 2D 三角形。然而,在实践中,所有的面都是简单的三角形。这些三角形创建一个或多个壳对象(一个简单的 3D 对象)。

我需要的是检查外壳的数量。换句话说,我想计算用这些三角形创建了多少个分离的对象。

我在MakePrintable在线 stl 文件修复软件上上传了我的 stl 文件,我从我的文件中获得了以下详细信息: 在此处输入图像描述 三角形计数 x 3 = 顶点计数(三个顶点(3D 点)创建一个三角形,就像我写的那样)

所以,我认为可以计算 shell 的数量,但我不知道,而且这个软件不是开源的(所以我也不能从这里复制 shell 计数器逻辑:))。如果有人可以帮助我,请给我一个答案。

0 投票
2 回答
2981 浏览

python - 使用 Python 脚本将 .sldprt 文件转换为 .stl

最近我一直致力于将五种文件格式(.dae、.stl、.step、igs、obj)转换为 .stl。使用 FreeCAD Python 控制台以及 StackOverflow 和 FreeCAD 论坛上人们的帮助,我能够做到这一点。

此任务的最后一部分是将 .sldprt(Solidworks 零件文件)转换为 .stl。不幸的是,FreeCAD 不支持导入此文件格式,我无法使用其 Python 控制台将此文件格式转换为 .stl。

我一直在搜索可以读取/导出 .sldprt 文件的 Python API,但我找不到任何东西。我确实找到了一些在线资源(GradCAD、Datakit Cross manager 等),但我需要通过 Python 脚本(最好是 Python 2)来完成这项工作。

还有另一种方法可以使用 Python 将 .sldprt 文件转换为 .stl 吗?有人可以指出我从哪里开始的正确方向吗?

0 投票
1 回答
70 浏览

javascript - 外部 JS 文件在 Angular 7 中工作,但在 8 中不工作

我正在尝试在 Angular 8 应用程序中运行这些 viewtl javascript 文件。通过执行以下基本操作,我已在 Angular 6 和 7 应用程序中成功运行它:

  • 将 .js 文件复制到应用程序,将 web worker 文件(load_stl.min.jsparser.min.js)保存在根目录中,其余文件保存在assets/scripts.

  • 按此工作顺序将 .js 文件添加到我的 angular.json 中的脚本数组

  • 在模板中添加了必要的代码:

    html <div id="stl_container"></div>

  • 最后stl_viewer.min.js从组件引用:

正如我所提到的,它在 Angular 6 中运行良好,但是从 Angular 8 运行时,一旦从组件初始化 javascript,我就会收到错误 - 我不明白为什么。

获取 http://localhost:4300/load_stl.min.js 404(未找到)

我不一定确定版本差异是否是问题所在

0 投票
0 回答
557 浏览

python - 测量网格之间的距离

对于我的项目,我需要测量两个 STL 文件之间的距离。我编写了一个脚本,允许读取文件,将它们相对于彼此定位在所需的位置。现在,在下一步中,我需要检查一个对象到另一个对象的距离。库中是否有可用的函数或脚本允许我执行此过程?因为那时我将要定义诸如互穿面积、最大负距离等指标,所以我需要首先检查这些对象之间的距离,看看是否有类似的网格相交并测量该距离。我将 url 用于我想测量距离的 2 个对象的组合:

https://imgur.com/wgNaalh