2D:共面
我使用以下简单的 ASCII STL 文件作为自相交网格修复的输入。它基本上是同一平面上的五个三角形,即共面。三角形4
与三角形相交1
。FreeCAD无法检测刻面4
和1
.
solid Simple
facet normal 0.0e0 0.0e0 1.0e1
outer loop
vertex 0.0e1 0.0e1 1.0e1
vertex 0.0e1 +1.0e1 1.0e1
vertex +1.0e1 0.0e1 1.0e1
endloop
endfacet
facet normal 0.0e0 0.0e0 1.0e1
outer loop
vertex 0.0e1 +1.0e1 1.0e1
vertex +1.0e1 0.0e1 1.0e1
vertex 1.0e1 1.0e1 1.0e1
endloop
endfacet
facet normal 0.0e0 0.0e0 1.0e1
outer loop
vertex 0.0e1 0.0e1 1.0e1
vertex 0.0e1 +1.0e1 1.0e1
vertex -1.0e1 1.0e1 1.0e1
endloop
endfacet
facet normal 0.0e0 0.0e0 1.0e1
outer loop
vertex 0.0e1 0.0e1 1.0e1
vertex +1.0e1 0.0e1 1.0e1
vertex +1.0e1 -1.0e1 1.0e1
endloop
endfacet
facet normal 0.0e0 0.0e0 1.0e1
outer loop
vertex 0.6e1 0.8e1 1.0e1
vertex +1.6e1 0.8e1 1.0e1
vertex +0.6e1 1.8e1 1.0e1
endloop
endfacet
endsolid Simple
3D
作为另一个测试,我使用以下简单的 STL 文件。就像以前的 STL 一样,它由 5 个方面组成,但它们不在同一平面上。在这种情况下,FreeCAD 会检测到 facet 的交集4
并将1
其正确删除。
solid Simple
facet normal 0.0e0 0.0e0 1.0e1
outer loop
vertex 0.0e1 0.0e1 1.0e1
vertex 0.0e1 +1.0e1 1.0e1
vertex +1.0e1 0.0e1 1.0e1
endloop
endfacet
facet normal 0.0e0 0.0e0 1.0e1
outer loop
vertex 0.0e1 +1.0e1 1.0e1
vertex +1.0e1 0.0e1 1.0e1
vertex 1.0e1 1.0e1 1.0e1
endloop
endfacet
facet normal 0.0e0 0.0e0 1.0e1
outer loop
vertex 0.0e1 0.0e1 1.0e1
vertex 0.0e1 +1.0e1 1.0e1
vertex -1.0e1 1.0e1 1.0e1
endloop
endfacet
facet normal 0.0e0 0.0e0 1.0e1
outer loop
vertex 0.0e1 0.0e1 1.0e1
vertex +1.0e1 0.0e1 1.0e1
vertex +1.0e1 -1.0e1 1.0e1
endloop
endfacet
facet normal 0.0e0 0.0e0 1.0e1
outer loop
vertex 0.6e1 0.8e1 1.2e1
vertex +1.6e1 0.8e1 0.0e1
vertex +0.6e1 1.8e1 0.0e1
endloop
endfacet
endsolid Simple
问题
上面的 2D 情况就像 3D 情况一样,在Z
某些顶点的坐标上有一些细微差别。
我想知道为什么 FreeCAD 可以在 3D 情况下检测自相交?但不是在二维情况下?
FreeCAD 信息
以下是 的内容Help > About FreeCAD > "Copy to clipboard"
:
OS: Windows 10 Version 2009
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.24291 (Git)
Build type: Release
Branch: releases/FreeCAD-0-19
Hash: 7b5e18a0759de778b74d3a5c17eba9cb815035ac
Python version: 3.8.6+
Qt version: 5.15.2
Coin version: 4.0.1
OCC version: 7.5.0
Locale: English/United States (en_US)