为什么我的 "waterproof" 多面体导致 "WARNING: Object may not be a valid 2-manifold and may need repair!"?
Why is my "waterproof" polyhedron causing "WARNING: Object may not be a valid 2-manifold and may need repair!"?
在脚本中
difference() {
polyhedron(
points=[[0,0,0],
[2,0,0],
[2,1,0],
[0,1,0],
[0,0,2],
[0,1,2]],
faces=[[0,1,2,3],
[5,4,1,2],
[5,4,0,3],
[0,1,4],
[2,3,5]]);
cube([1,1,1]);
};
polyhedron
单独工作正常(呈现时没有警告),但添加上面的 cube
会导致记录警告 WARNING: Object may not be a valid 2-manifold and may need repair!
并且输出仅呈现部分一些表面。
我在 Ubuntu 16.04 上使用 OpenSCAD 2015.03-1。
这是因为您的 polyhedron
有些面孔指向错误的方向,导致计算 difference()
时出现问题。
更改受影响多边形的缠绕顺序可修复 polyhedron
:
difference() {
polyhedron(
points=[[0,0,0],
[2,0,0],
[2,1,0],
[0,1,0],
[0,0,2],
[0,1,2]],
faces=[[0,1,2,3],
[2,1,4,5],
[5,4,0,3],
[0,4,1],
[2,5,3]]);
cube([1,1,1]);
};
差异仍然是非流形的,因为切割 cube
会导致 2 个棱柱形物体仅在一个边缘接触。根据定义,这也不是 2-流形,因此警告仍然存在。
根据应该如何使用导出的模型,您可以选择忽略此警告,并希望处理 3d 模型的工具能够处理。
要解决这个问题,例如 cube
可以像 cube([1, 1, 0.999])
一样小一点。
一个不相关但仍然有用的策略可以防止以后出现问题,那就是始终使切割对象大一点,以确保不会留下非常薄的平面,例如使用 cube([2,3,1.999], center = true)
。这也将删除 display artifacts in preview mode.
在脚本中
difference() {
polyhedron(
points=[[0,0,0],
[2,0,0],
[2,1,0],
[0,1,0],
[0,0,2],
[0,1,2]],
faces=[[0,1,2,3],
[5,4,1,2],
[5,4,0,3],
[0,1,4],
[2,3,5]]);
cube([1,1,1]);
};
polyhedron
单独工作正常(呈现时没有警告),但添加上面的 cube
会导致记录警告 WARNING: Object may not be a valid 2-manifold and may need repair!
并且输出仅呈现部分一些表面。
我在 Ubuntu 16.04 上使用 OpenSCAD 2015.03-1。
这是因为您的 polyhedron
有些面孔指向错误的方向,导致计算 difference()
时出现问题。
更改受影响多边形的缠绕顺序可修复 polyhedron
:
difference() {
polyhedron(
points=[[0,0,0],
[2,0,0],
[2,1,0],
[0,1,0],
[0,0,2],
[0,1,2]],
faces=[[0,1,2,3],
[2,1,4,5],
[5,4,0,3],
[0,4,1],
[2,5,3]]);
cube([1,1,1]);
};
差异仍然是非流形的,因为切割 cube
会导致 2 个棱柱形物体仅在一个边缘接触。根据定义,这也不是 2-流形,因此警告仍然存在。
根据应该如何使用导出的模型,您可以选择忽略此警告,并希望处理 3d 模型的工具能够处理。
要解决这个问题,例如 cube
可以像 cube([1, 1, 0.999])
一样小一点。
一个不相关但仍然有用的策略可以防止以后出现问题,那就是始终使切割对象大一点,以确保不会留下非常薄的平面,例如使用 cube([2,3,1.999], center = true)
。这也将删除 display artifacts in preview mode.