Есть ли простой способ добавить закругленные края к полукругу в OpenSCAD?

Я собрал крепление для фонарика для камеры coldshoe в OpenSCAD. Я изначально смоделировал его в FreeCAD, и было легко закруглить края зажима с помощью филе, и это немного облегчает попадание света в крепление и выход из него.

Я не знаю, как это сделать в OpenSCAD. Наивно говоря, я уверен, что мог бы рассчитать, где на моем полукруге мне нужно будет добавить несколько цилиндров, чтобы закруглить острые углы, но, похоже, было бы что-то немного проще, чем это.

Я что-то упустил?

Вот файл coldshoe light mount SCAD и вот как он выглядит: coldshoe light mount

, 👍1


3 ответа


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

1

Я далеко не волшебник с OpenSCAD, но с удовольствием пользуюсь этой программой, каждый раз узнавая что-то новое. В вашем случае вполне вероятно, что вы можете использовать библиотеку roundanything для достижения своей цели.

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

На рисунке ниже показана деталь, радиусы которой были нанесены таким же образом, как и на вашем изображении:

round anything implementation


,

1

Если вы моделируете как 2D-объект и экструзируете с помощьюlinear_extrude , вы можете использовать транформацию смещения с положительным r на (изначально низкорослом) 2D-объекте для сглаживания углов.

,

0

Наверное, в конце концов я выбрал третий вариант. Я решил, что неправильно сокращаю разрыв. Я использовал разницу, чтобы вытащить прямоугольник из кольца.

Я решил упростить это и взять вытянутый треугольник.

ringRadius = radius + thickness;
verticalOffset = tan(gapAngle / 2) * ringRadius;

linear_extrude(height = height)
    polygon(points = [[0, 0], [ringRadius, verticalOffset], [ringRadius, -verticalOffset]]);

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

for(side = [-1, 1]) {
    cornerRadius = radius + thickness / 2;
      
    rotate([0, 0, gapAngle / 2 * side])
        translate([cornerRadius, 0, 0])
            color("blue") cylinder(r = thickness / 2, h = height);
}

В конце концов я хотел бы сделать его немного сложнее и помочь лучше приспособить свет, но пока он дает мне закругленные концы, которые я искал.

Rounded ends of ring

Я все еще собираюсь принять ответ round everything, потому что, хотя я решил, что он более сложен, чем стоит в этой модели, похоже, что он решит и другие проблемы округления.

,