Отверстие OpenSCAD закрывается изнутри при работе в слайсере

Привет, я сделал пончик с отверстием на внешней стороне, но когда я его разрезаю, внутренняя сторона цилиндра оказывается закрытой, в результате чего получается закрытое отверстие. Буду рад, если кто-нибудь объяснит мне, в чем проблема.

$fn = 100;
toroH3=30;
toroD3=38;
toroL3=20;

difference(){
  rotate_extrude(convexity = 10)
    translate([toroD3, (toroH3/2), 0])
      resize([toroL3,toroH3,0])
        circle(d = toroD3, $fn = 100);
  translate([0,47.2,9])
    rotate([74,0,0])
      cylinder(2,2,2);
}

Добавлено изображение слайсера

, 👍2


1 ответ


Лучший ответ:

1

Из ваших наблюдений следует, что вы ожидали полый бублик, где «текущее слепое отверстие» выдавливалось бы через оболочку бублика. Пожалуйста, обновите свой вопрос, если это не так.

Программы 3D-моделирования — это программы проектирования твердотельных моделей, в которых создаются твердые объекты, обычно путем выдавливания 2D-форм. Вы вращаете масштабированную 2D-окружность вокруг оси Z, чтобы получить твердую форму бублика. Хотя отверстие является глухим отверстием, и вы ожидаете, что слайсер прорежет отверстие через поверхность, когда вы не используете заполнение, глухое отверстие является частью внешней поверхности объекта; слайсер визуализирует стенку всей поверхности, включая стенку отверстия. Удаляете ли вы заполнение, это не меняет дела! Если вам нужно, чтобы он был полым, вам нужно создать карман в объекте.

Для получения полого пончика вам необходимо извлечь внутреннюю сердцевину из пончика:

$fn = $preview ? 90 : 360;
toroH3=30;
toroD3=38;
toroL3=20;

difference(){
  // Тело
  rotate_extrude(convexity = 10)
    translate([toroD3, (toroH3/2), 0])
      resize([toroL3,toroH3,0])
        circle(d = toroD3);
  // Извлечь внутреннее ядро тела
  rotate_extrude(convexity = 10)
    translate([toroD3, (toroH3/2), 0])
      resize([toroL3-2,toroH3-2,0])
        circle(d = toroD3);
  // Вырезать отверстие в теле
  translate([0,47.2,9])
    rotate([74,0,0])
      cylinder(2,2,2);
  // Вырез для просмотра внутри
  if ($preview) {
    // Вырезать, если в режиме предварительного просмотра (F5), а не в режиме рендеринга (F6)
    cube(50);
  }
}

Нажав «F5», вы получите вырезанный вид пончика, чтобы увидеть, что он пустой:

С помощью "F6" вы получаете идеально визуализированную версию с отверстием в оболочке:


,