Странности OpenSCAD с импортированным STL

Я попытался переделать эту модель: https://www.thingiverse.com/thing:90933 (Набор шахмат Баухауза), уменьшив его масштаб и вставив маленькие магнитные отверстия в нижнюю сторону фигур. Мой файл SCAD выглядит следующим образом:

difference() { 

    scale([0.5,0.5,0.5]) import("Bauhaus2Set.stl");

    translate([ 6, 11  ,0]) cylinder(h=20.5,r=2.5,center=true,$fn=20); // WTH?

    // King/Queen
    translate([ 6, 11  ,0]) cylinder(h=3.5,r=2.5,center=true,$fn=20);
    translate([-6, 11  ,0]) cylinder(h=3.5,r=2.5,center=true,$fn=20);

    // Rooks
    translate([ 6,-11.5,0]) cylinder(h=3.5,r=2.5,center=true,$fn=20);
    translate([-6,-11.5,0]) cylinder(h=3.5,r=2.5,center=true,$fn=20);

[...]

Обратите внимание на третью строку с "WTH?" - я проделал довольно много проб и ошибок, и если я удалю эту строку, то я больше не получу никаких вычитаемых отверстий, когда я визуализирую все это (F6). В предварительном просмотре (F5) отверстия всегда присутствуют, но в окончательном рендеринге мне нужно включить больший вычитаемый цилиндр, иначе это не сработает.

Файл STL, кажется, сам по себе в порядке, что здесь происходит?

, 👍1

Обсуждение

Каковы размеры z исходной модели?, @R.. GitHub STOP HELPING ICE

Хорошо, я подтвердил, что исходная модель не распространяется ниже z=0, поэтому я думаю, что это либо ошибка в openscad, либо (вероятно, более вероятно) ошибка в сетке., @R.. GitHub STOP HELPING ICE


2 ответа


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

1

Интересно, что и первая строка, и следующая строка должны удалять цилиндр одинакового диаметра из одного и того же места. Только высота другая.

Было бы интересно удалить первую линию Короля/Королевы и посмотреть, есть ли изменения.

Вы проверяли файл STL с помощью другого инструмента, кроме OpenSCAD? В STL может быть излом, который сбивает с толку механизм геометрии в OpenSCAD. Первое отличие может заключаться в том, чтобы поймать изгиб, а второе-вырезать корпус магнита в нижней части.


,

Также, возможно, попробуйте пересечение вместо различия, чтобы посмотреть, что произойдет., @R.. GitHub STOP HELPING ICE

Отличное объяснение, спасибо. Цилиндр" С " центрирован на фигуре ферзя, и у нее есть сфера с _lots _ граней сверху. Таким образом, похоже, что "излом" находится внутри королевы, где сфера и базовый куб перекрываются, и случайно мое удаление цилиндров методом проб и ошибок также удалило нужное место., @Florian Echtler


4

Я вижу, что вы приняли ответ cmm, но я все равно хотел бы взглянуть на механизм сбоя, основываясь на вашем комментарии по этому поводу:

Отличное объяснение, спасибо. Цилиндр "WTH" центрирован на фигуре королевы, и на нем есть сфера с множеством граней сверху. Таким образом, похоже, что "излом" находится внутри королевы, где сфера и базовый куб перекрываются, и случайно мое удаление цилиндров методом проб и ошибок также удалило нужное место.

Я предполагаю, что если вы посмотрите на набор треугольников в файле STL, вы обнаружите, что внутренняя часть королевы содержит части куба, которые находятся внутри сферы, и части сферы, которые находятся внутри куба; они могут даже не быть обрезаны, чтобы правильно встретиться там, где они пересекают поверхности друг друга. К сожалению, существует множество инструментов, создающих недопустимые файлы STL, подобные этому. Более длинный цилиндр, вероятно, достаточен для перекрытия того места, где пересекаются куб и сфера, что вынуждает OpenSCAD разбивать модель в этой области и пересчитывать сетку, в которой компоненты перекрываются. Без этого повторного вычисления различия, скорее всего, в конечном итоге будут взаимодействовать только с "сферической частью" сетки STL.

Это объяснение также, по-видимому, согласуется с описанием вещи в thingiverse:

Я гораздо больше предпочитал стиль Баухауза, разработанный TeamTeaUSA, но было много возни с королевой, и рыцарь не стал бы печатать без поддержки. Поэтому я поместил сферу королевы дальше в корпус, чтобы она печаталась стоя, добавил опоры для рыцаря и покрыл все это.

где похоже, что создатель взял чьи-то файлы STL и переместил части, чтобы создать перекрытие, вероятно, без надлежащих инструментов, которые могли бы восстановить правильную сетку.

,

Спасибо за подробное объяснение!, @Florian Echtler