Преобразование модели ball-stick в STL из командной строки

У меня регулярно есть 3D-модели, которые состоят из булевого объединения шаров и цилиндров (модели молекул, звездные карты, математические модели), которые я затем хочу преобразовать в модель STL для печати в Shapeways. Но я не знаю, как легко это сделать! У меня уже есть модель в виде серии чисел с плавающей точкой (четыре для каждого шара и семь для каждого цилиндра), поэтому я не хочу входить в графический интерфейс, чтобы нажимать/перетаскивать точки. Вместо этого я хочу преобразовать свои списки чисел с плавающей запятой в STL из командной строки.

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

Я бы хотел, чтобы программное обеспечение для этого было "бесплатным", в том смысле, что оно не стоит денег. Кроме того, я не являюсь пользователем Windows, поэтому я хотел бы иметь возможность запускать это под Linux или macOS.

, 👍3

Обсуждение

Будучи наивным, я спросил об этом на бирже графического дизайна stackexchange, и мне сказали взять его здесь., @Freek Wiedijk

Может быть, возможно, OpenSCAD мог бы использовать эти ваши очки., @towe

Вот такой был ответ на графическом дизайне stackexchange: https://graphicdesign.stackexchange.com/questions/131653/convert-ball-stick-model-to-stl-from-the-command-line, @Freek Wiedijk

Я ценю поддержку GD SE. Если вы находите это приемлемым, пожалуйста, нажмите галочку на этом SE. Kevin Reid предоставил здесь хороший ответ и также должен получить upvote и acceptance. Я не вижу необходимости публиковать здесь свой ранее созданный ответ, тем более что вы связались с ним через комментарий., @fred_dot_u


1 ответ


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

4

Я бы предложил использовать для этого OpenSCAD. OpenSCAD изначально не поддерживает чтение файлов данных, которые не являются 3D/2D моделями или изображениями, но вы можете написать простую программу для создания кода OpenSCAD.

Я бы предложил сначала написать файл OpenSCAD, который реализует выбранный вами тип "мяча" и "палки", например:

module ball(x, y, z) {
    translate([x, y, z]) 
        sphere(d=10, $fn=60);
}
module stick(x, y, z, length, rx, ry, rz) {
    translate([x, y, z]) 
    rotate([rx, ry, rz]) 
        cylinder(d=5, length=length, $fn=60, center=true);
}

Затем возьмите файл данных — предположим, что это CSV —файл.

ball,0,0,0
ball,100,0,0
stick,50,0,0,100,0,90,0

и преобразовать его в OpenSCAD, добавив соответствующий синтаксис (это можно сделать даже с помощью базового инструмента поиска и замены):

import <ball-and-stick-definitions.scad>
ball(0,0,0);
ball(100,0,0);
stick(50,0,0,100,0,90,0);

Затем создание STL-это просто вопрос запуска команды openscad на вашем сгенерированном исходном коде OpenSCAD.

Если палка параметры не углов Эйлера, но "начальная точка" и "конечная точка" вам придется добавить "повернуть на..." и посчитайте сами, но это в OpenSCAD выступает в функции, как это имеет вектор математических операций и multmatrix, или тригонометрии если вы предпочитаете генерировать углов Эйлера; вам не нужно делать математику на файл-преобразование этапе.


,