Это связано с тем, что у вашего polyhedron
есть некоторые лица, указывающие на неправильное направление, вызывая проблемы при расчете difference()
.
Для получения более подробной информации см. Manual и FAQ.
Изменение обмотки порядок пораженных полигонов фиксирует 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.