2016-07-26 1 views
1

В сценарииПочему мой «водонепроницаемый» многогранник вызывает «ПРЕДУПРЕЖДЕНИЕ: Объект не может быть действительным 2-коллектором и может потребоваться ремонт!»?

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! быть зарегистрированным и выход только сделать некоторые части некоторых поверхностей.

Я использую OpenSCAD 2015.03-1 на Ubuntu 16.04.

ответ

4

Это связано с тем, что у вашего 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.

 Смежные вопросы

  • Нет связанных вопросов^_^