LINUX.ORG.RU

Релиз OpenSCAD 2019.05

 , , ,


5

1

16-го мая после четырёх лет разработки вышла новая стабильная версия OpenSCAD – 2019.05.

OpenSCAD – это неинтерактивный 3D CAD, являющийся чем-то вроде 3D-компилятора, который генерирует модель по скрипту на специальном языке программирования. OpenSCAD хорошо подходит для 3D печати, а также для автоматической генерации большого количества однотипных моделей по заданному набору параметров. Для полноценного использования требует только клавиатуру и базовые навыки написания кода.

OpenSCAD написан на C++, распространяется под лицензией GPLv2 и работает на всех основных ОС: Linux, *BSD, macOS, Windows.

Новое в этой версии

Ссылки

>>> Подробности

Deleted

Проверено: Shaman007 ()
Последнее исправление: Virtuos86 (всего исправлений: 8)

Ответ на: комментарий от anonymous

причин нет, кроме желания велосипедить

Сфига сабж велосипед? Аналоги есть?

Разделение между языками определяют отношение к полноте, отношение к побочным эффектам, используемые парадигмы для контроля сложности, но никак не детали синтаксиса

Одно другому не мешает.

S-выражения

Убожество уровня брейнфака, неудобное ни для того, ни для другого. Эмаксерам чисто повезло, что хотя для эмакса из лиспа слепили приличную замену DSL — которая жрёт память и тормозит даже на расчёте номеров строк, ЧИТД.

anonymous
()
Ответ на: комментарий от urxvt

Лучше ещё одну поню рисуй. Можно даже обоих одновременно.

anonymous
()

а в анимацию эта штука умеет? экспорт в колладу или в другой открытый формат есть?

anonymous
()
Ответ на: комментарий от anonymous

Убожество уровня брейнфака, неудобное ни для того, ни для другого.

Обнаруживается специалист по CAD'ам, хорошо знакомый с продукцией Autodesk.

anonymous
()
Ответ на: комментарий от anonymous

Дело не в скриптоте, а в OpenCascade. Другое математическое ядро. Полигональный мэш строится только на этапе экспорта в STL.

anonymous
()

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

ChekPuk ★★★
()

Кто-нибудь brlcad пробовал?

einhander ★★★★★
()
Ответ на: комментарий от ChekPuk

Для шестеренок есть замечательные библиотеки на тингверсе. Я постоянно рисую и печатаю на заказ. С недоумением смотрю на тех, кто шестеренки мишкой рисуют. Мазохисты какие то.

Я благодарен тем, кто эти библиотеки сделал. Очень упростили мне жизнь - до ввода нескольких цифр.

anonymous
()
Ответ на: комментарий от anonymous

Не, я хотел для ознакомления и практики. Использовать чужую либу не рассматривалось. В результате сделал во фрикаде, забив формулы в его таблицу. В чём его плюс перед опенскадом - это можно на детали выбрать ребро и добавить, например, фаску, легко и иногда даже непринуждённо. Но им обоим не хватает интерактивности. Да, спускаться в недра программирования бывает необходимо, но в основном работа проходить должна мышкой, привязками, ограничителями. «лучше день потерять, но потом за пять минут долететь» устарело. Из подготовленной заранее заготовки (аналог твоей библиотеки и заготовкам ящиков в опенскаде, которые кто-то в прошлый раз представлял) в «нормальном» каде всё делается столь же быстро. Но остальное в нём делается проще и удобнее. Единственное что тебе не дадут сделать в «нормальном» каде - это напрямую напрограммировать деталь (и чтобы она и осталась программой, а не преобразовалась бы в твёрдое тело или набор точек и граней) - вот это беда, да.

ChekPuk ★★★
()
Ответ на: комментарий от ChekPuk

«лучше день потерять, но потом за пять минут долететь» устарело

Оно ещё толком и не начиналось. Например, любителей говнякать на коленке охвесные документики в 90–00-х нынче таки приучают к приличным системам документооборота. Ибо разгребать всё это дерьмо никакой автоматизации не хватает. Проприетарное ПО во многих сферах вытесняется свободным, потому что проще пилить всем миром, чем ждать, когда #конторанейм наконец починит своё проприетарное дерьмо по многочисленным реквестам недовольных клиентов. И с мышевознёй вашей будет то же самое; растёт поколение, которое мышку в руках не держало и умеет только в экран пальчиком тыкать — это раз; внутри у высранных в графических редакторах поделий структурный швах, и следить за порядком они юзера никак не мотивируют, ну максимум слоёв/групп насоздавать — это два.

anonymous
()
Ответ на: комментарий от anonymous

нынче таки приучают к приличным системам документооборота. Ибо разгребать всё это дерьмо никакой автоматизации не хватает.

эээ... мы как-то знакомы? Я ровно сегодня изливал струи поноса и именно эти слова в адрес... эээ Данила, ты?

ChekPuk ★★★
()
Ответ на: комментарий от anonymous

а вообще смешно, меня мышевозником объявили :)

ChekPuk ★★★
()
Ответ на: комментарий от nikitos

Появляется проблема: как это все отрендерить на экране, так как рендер убог, и надо треугольники (для STL тоже), а не так как там в математике все красиво с параметрическими поверхностями.

В этой версии как раз сделали костыль, который может помочь с отрисовкой упрощённой модели для препросмотра: $preview.

По поводу идеального внутреннего представления без аппроксимации треугольниками - люди вон пилят ImplicitCAD: http://www.implicitcad.org/docs/faq.

Deleted
()
Ответ на: комментарий от CYB3R

=)

FORM_WIDTH_BOTTOM = 60.0;
FORM_DEPTH_BOTTOM = 140.0;
FORM_WIDTH_TOP = 80.0;
FORM_DEPTH_TOP = 160.0;
FORM_HEIGHT = 75.0;

BODY_HAT_HEIGHT = 20.0;
BODY_SMOOTH_R = 20.0;
BODY_COLOR = "SaddleBrown";

TIRE_COLOR = "Black";
TIRE_WIDTH = 15.0;
TIRE_R = 20.0;
WHEEL_COLOR = "Silver";
WHEEL_WIDTH = 10.0;
WHEEL_R = 15.0;

AXLE_COLOR = "Gold";
AXLE_WIDTH = 110.0;
AXLE_R = 2.0;
AXLE_OVERLAP = 1.5;

HEADLIGHT_COLOR = "Yellow";
HEADLIGHT_DEPTH = 6.0;
HEADLIGHT_R = 7.0;

CONTACT_PAD_COLOR = "DarkSlateGray";
CONTACT_PAD_WIDTH = 40.0;
CONTACT_PAD_DEPTH = 60.0;
CONTACT_PAD_HEIGHT = 5.0;
CONTACT_COLOR = "Fuchsia";
CONTACT_LENGTH = 170.0;
CONTACT_R = 1.0;
CONTACT_ANGLE = 70.0;

O = 1.0;
OA = 0.1;

module body_form(wb, db, wt, dt, h)
{
    polyhedron(
        points=[
            [-wb / 2.0, -db / 2.0, 0.0],
            [-wb / 2.0,  db / 2.0, 0.0],
            [ wb / 2.0,  db / 2.0, 0.0],
            [ wb / 2.0, -db / 2.0, 0.0],
    
            [-wt / 2.0, -dt / 2.0, h],
            [-wt / 2.0,  dt / 2.0, h],
            [ wt / 2.0,  dt / 2.0, h],
            [ wt / 2.0, -dt / 2.0, h],
        ],
        faces=[
            [0, 1, 2, 3],
            [0, 1, 5, 4],
            [1, 2, 6, 5],
            [2, 3, 7, 6],
            [3, 0, 4, 7],
            [4, 5, 6, 7],
        ]
    );
}

module body(body_color, wb, db, wt, dt, h, h_hat, r_smooth)
{
    color(body_color) {
        translate([0.0, 0.0, r_smooth]) {
            minkowski() {
                hull() {
                    body_form(wb, db, wt, dt, h);
                    translate([0.0, 0.0, h + h_hat])
                        body_form(wb, db, wt, dt, -h_hat);
                }
                sphere(r_smooth);
            }
        }
    }
}

module wheel(tire_color, wheel_color, tire_w, tire_r, wheel_w, wheel_r)
{
    rotate([0.0, 90.0, 0.0]) {
        color(tire_color) {
            difference() {
                cylinder(h = tire_w, r = tire_r, center = true);
                cylinder(h = tire_w + O * 2.0, r = wheel_r, center = true);
            }
        }
        color(wheel_color)
            cylinder(h = wheel_w, r = wheel_r + OA, center = true);
    }
}

module axle(
        axle_color, axle_w, axle_r, axle_o,
        tire_color, wheel_color,
        tire_w, tire_r, wheel_w, wheel_r)
{
    color(axle_color)
        rotate([0.0, 90.0, 0.0])
            cylinder(
                    h = axle_w + wheel_w * 2.0 - OA * 2.0 + axle_o * 2.0,
                    r = axle_r, center = true);

    for (x_off = [-axle_w / 2.0 - wheel_w / 2.0, axle_w / 2.0 + wheel_w / 2.0]) {
        translate([x_off, 0.0, 0.0])
            wheel(tire_color, wheel_color, tire_w, tire_r, wheel_w, wheel_r);
    }
}

module headlights(headlight_color, headlight_depth, headlight_r, dist)
{
    for (x_off = [-dist / 2.0, dist / 2.0]) {
        translate([x_off, -OA, 0.0])
            rotate([90.0, 0.0, 0.0])
                color(headlight_color)
                    cylinder(
                            h = headlight_depth,
                            r = headlight_r,
                            center = true);
    }
}

module contact_pad(
        cont_pad_color, cont_pad_w, cont_pad_d, cont_pad_h,
        cont_color, cont_l, cont_r, cont_a)
{
    translate([0.0, 0.0, cont_pad_h / 2.0 - OA])
        color(cont_pad_color)
            cube([cont_pad_w, cont_pad_d, cont_pad_h], center = true);
    
    for (x_off = [-cont_pad_w * 0.25, cont_pad_w * 0.25]) {
        translate([x_off, 0.0, cont_pad_h - OA - cont_r])
            rotate([cont_a, 0.0, 0.0])
                color(cont_color)
                    cylinder(h = cont_l, r = cont_r);
    }
}

module trolleybus()
{
    body(
            BODY_COLOR,
            FORM_WIDTH_BOTTOM,
            FORM_DEPTH_BOTTOM,
            FORM_WIDTH_TOP,
            FORM_DEPTH_TOP,
            FORM_HEIGHT,
            BODY_HAT_HEIGHT,
            BODY_SMOOTH_R);

    for (y_off = [-FORM_DEPTH_BOTTOM / 2.0, FORM_DEPTH_BOTTOM / 2.0]) {
        translate([0.0, y_off, 0.0])
            axle(
                    AXLE_COLOR,
                    AXLE_WIDTH,
                    AXLE_R,
                    AXLE_OVERLAP,
                    TIRE_COLOR,
                    WHEEL_COLOR,
                    TIRE_WIDTH,
                    TIRE_R,
                    WHEEL_WIDTH,
                    WHEEL_R);
    }

    translate([0.0, FORM_DEPTH_BOTTOM / 2.0 + BODY_SMOOTH_R, FORM_HEIGHT * 0.4])
        headlights(
                HEADLIGHT_COLOR,
                HEADLIGHT_DEPTH,
                HEADLIGHT_R,
                FORM_WIDTH_BOTTOM);
    
    translate([
            0.0,
            FORM_DEPTH_TOP * 0.25,
            FORM_HEIGHT + BODY_HAT_HEIGHT + BODY_SMOOTH_R * 2.0])
        contact_pad(
                CONTACT_PAD_COLOR,
                CONTACT_PAD_WIDTH,
                CONTACT_PAD_DEPTH,
                CONTACT_PAD_HEIGHT,
                CONTACT_COLOR,
                CONTACT_LENGTH,
                CONTACT_R,
                CONTACT_ANGLE);
}

trolleybus();

translate([160.0, 20.0, 0.0])
    rotate([0.0, 0.0, 90.0])
        color("Red")
            text(
                    "Затем!",
                    30.0,
                    font="Liberation Sans:style=Bold");
Deleted
()
Ответ на: комментарий от Puzan

Я вот тут недавно заглянул, на каких условиях они дают его, по крайней мере демо версию. И там написано, что ты обязуешься не заниматься дронами, ракетами итп. А я может как раз хотел авиамоделизм попробовать?

cvs-255 ★★★★★
()
Ответ на: комментарий от nikitos

А язык позволяет тому же троллейбусу окна приделать? Ну то есть, делаем какой-то корпус для одноплатного компьютера, и в верхней панели надо отверстие оставить для дисплейчика? Или придётся эту верхнюю панель из отдельных частей выполнять?

// В конструировании полный мимокрокодил.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 2)
Ответ на: комментарий от hobbit

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

Я на нём и делал первый корпус для одного девайса несколько лет назад. Открыл в 1 раз, почитал туториалы (там с этим достаточно хорошо обстоит дело), пописал в свободное время и через 3 дня сделал довольно сложную конструкцию для одного девайса. После этого в опенскад и делаю некоторые штуки, разобраться не сложно.

fehhner ★★★★★
()

Лучше бы убрали глюк со стенками нулевой толщины. А то под печать предлагается ещё отдельно кучу лишних фигур делать их убрать.

fehhner ★★★★★
()
Последнее исправление: fehhner (всего исправлений: 1)
Ответ на: комментарий от fehhner

Лучше бы убрали глюк со стенками нулевой толщины. А то под печать предлагается ещё отдельно кучу лишних фигур делать их убрать.

А что мешает сразу при вырезании ненужного добавлять небольшое значение, типа 0.1 мм, чтобы точно прорезало насквозь? Или ты про какую-то другую проблему?

Deleted
()

а я, балбес, вместо утреннего чтения новостей на лоре и инсталяции из пакетов, собрал 2 часа назад его из сырцов - чтобы глянуть, не появились ли spline в dxf import - а они не появились.

azazello ★★★★
()
Ответ на: комментарий от azazello

чтобы глянуть, не появились ли spline в dxf import - а они не появились.

А issue на эту тему у них есть?

Deleted
()
Ответ на: комментарий от Deleted

А issue на эту тему у них есть?

есть запись в wiki об использовании самописного DXF парсера и необходимости перейти на стороннюю либу с оценкой сложности: «просто» от января 2015го

народ из-за этих spline сделал workaround для inkskape в виде extension ;)

azazello ★★★★
()
Последнее исправление: azazello (всего исправлений: 1)
Ответ на: комментарий от azazello

народ из-за этих spline сделал workaround для inkskape в виде extension ;)

А если из inkscape, то может лучше сразу попробовать svg импортировать? Импорт svg как раз в этой версии запилили.

P.S. Я не тестил, мне такое пока не нужно было.

Deleted
()
Ответ на: комментарий от Deleted

А что мешает сразу при вырезании ненужного добавлять небольшое значение, типа 0.1 мм, чтобы точно прорезало насквозь? Или ты про какую-то другую проблему?

Именно про эту проблему, которую они не исправляют годами. Приходится translate лишний делать на 1 вниз и размер больше на 2, например, чтобы сквозное с 2 сторон было. Потом везде муторно отслеживать эти изменения по разным осям. На углах гребёнки из-за этого дополнительный куб добавлять в difference, чтобы дорезал до конца.
И код становится не таким приятным и красивым, как сначала был, и мороки с этой ерундой иногда много...

fehhner ★★★★★
()
Ответ на: комментарий от fehhner

Именно про эту проблему, которую они не исправляют годами.

Это не баг, это floating point =). В том числе, артефакт преобразования double (8 байт, вся математика внутри openscad) во float (4 байта, именно он попадает в stl).

Deleted
()

Только сейчас в голову пришло: троллейбус - это намёк на троллейбус из буханки хлеба?

Erepb ★★★
()
Ответ на: комментарий от Erepb

А не видно, что троллейбус имеет форму буханки?

anonymous
()
Ответ на: комментарий от Deleted

А если из inkscape, то может лучше сразу попробовать svg импортировать? Импорт svg как раз в этой версии запилили.

Спасибо - гляну:)

azazello ★★★★
()
Ответ на: комментарий от Deleted

Ну студенческие версии это конечно >хорошо, а что если потом я потом выучив >этот пакет захочу какой-нибудь >мелкобизнес начать? Почку продавать >чтобы лицензию на один комп купить?

Если твой мелкобизнес не окупит затраты на инструмент может и заниматься им не стоит или инструмент соответствующий подобрать? Например ,что бы пробурить одну дырку дома ,например ,под картину ,можно взять перфоратор у друзей ,или в аренду в спецмагазах,а что бы куярить дырки в режиме 8/5 надо уже покупать свой и себестоимость дырки превращается в пыль ибо ты профи.. Так что все относительно

anonymous
()
Ответ на: комментарий от anonymous

Так софт же в аренду в магазине не возьмешь, посмотри сколько лицензия на тот же солид стоит

Deleted
()
Ответ на: комментарий от Deleted

Так софт же в аренду в магазине не возьмешь, посмотри сколько лицензия на тот же солид стоит

Так лицензия - это же и есть аренда 8). А вот купить да, обычно невозможно никаким образом.

Deleted
()
Ответ на: комментарий от Deleted

Так софт же в аренду в магазине не >возьмешь, посмотри сколько лицензия на >тот же солид стоит

Я знаю цены на солид и остальное. Просто меня умиляет Ваш подход ,если у вас мелкий бизнес то почему вы должны использовать именно солид? Если в Вашем проекте 5-10 деталей то солид совсем необязателен,а если порядка 5 то можно вообще в чем угодно рисовать

anonymous
()
Ответ на: комментарий от anonymous

Потому что я допустим уже научился работать в солиде по студенческой лицензии за $100, теперь что-то другое изучать

Deleted
()
Ответ на: комментарий от Uncle_Co

Они все либо отстойные, либо промышленные (т.е. стоят дорого). Под Венду есть Компас, и он стоит не больше штуки рублей для домашнего использования. Драфтсайд вроде бы подаёт надежды, я о нём раньше не знал, пока не смотрел. А Брикс – такое себе. Мне, как обычной домохозяйке, подавайте видеоуроки для чайников, базы там всякие, резьбы, болты, профили разные, двутавры. А с Бриксом даже с уроками не всё понятно. Хотя и уроки там так себе. Но может быть это у меня уже деменция, а САПРы тут не при чём, ах-ха-ха.

kostyarin_ ★★
()
Ответ на: комментарий от Deleted

Почему это невозможно?! Microsoft, cкупивший Series40, Skype, Electron — смеётся тебе в лицо.

anonymous
()
Ответ на: комментарий от Puzan

Как будто под винду кады бесплатно раздают.

внезапно! дезигнспарк механикал

anonymous
()
Ответ на: комментарий от kostyarin_

Девочка-биолог освоила брикс (на уровне нарисовать сегмент браслета) за пол часа, а ты не смог. Фу, таким быть!

anonymous
()
Ответ на: комментарий от anonymous

Оно бесполезно для практического применения.

Что именно?

Deleted
()
Ответ на: комментарий от Deleted

Потому что я допустим уже научился >работать в солиде по студенческой >лицензии за $100, теперь что-то другое >изучать

Ну всегда надо что то еще изучать это неизбежно,но если хотите ездить на мерседесе и не платить за него,то надо воровать и тихо выезжать по ночам что б никто не видел

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.