Объединение нескольких файлов STL

У меня есть коллекция STL-файлов, каждый из которых содержит отдельную движущуюся часть объекта, который я хочу распечатать. (Представьте себе набор шестеренок или что-то подобное, что печатает как один объект с несколькими движущимися частями.)

Мой план состоял в том, чтобы импортировать их все в Cura, затем нажать печать, а затем снять мой полностью собранный объект с пластины сборки. Однако Cura игнорирует систему координат в файлах STL и автоматически отделяет компоненты друг от друга на пластине сборки. Это обычно полезно, но это не то, что я хочу в этом случае.

Поэтому я ищу быстрый и простой способ объединить несколько STL-файлов в один STL-файл. Я знаю, что объекты не перекрываются, поэтому мне не нужно выполнять операцию объединения CSG - достаточно просто объединить объекты.

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

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

Edit Я принял ответ Триш (используйте блендер), но я бы все равно оценил опцию командной строки, если кто-то знает.

, 👍4

Обсуждение

Как бы вы ожидали, что 3D-принтер одновременно напечатает подвижные детали и их положение? Если они не будут размещены на платформе сборки, то потребуется большая поддержка., @Klaus D.

@KlausD. все они находятся в контакте с платформой сборки, и ни у одного из них нет выступов, которые нуждались бы в поддержке. Однако они, тем не менее, сцепляются друг с другом в трехмерном пространстве таким образом, что их невозможно разделить., @Nathaniel

(Если это кажется невозможным, представьте себе, что один объект-это песочные часы, а другой-окружающий их тор, с небольшим зазором между внутренней поверхностью тора и горлышком яйцеклеточного таймера. Оба соприкасаются с пластиной сборки, и ни один выступ не превышает 45 градусов, но песочные часы не могут быть удалены из тора.), @Nathaniel

@PᴀᴜʟSᴛᴇʀ2 именно так. Но с тем важным условием, что я знаю, что части не перекрываются, поэтому операция логического объединения не требуется., @Nathaniel

Забавно, что вы спрашиваете об этом ... [Кенигсегг должен напечатать это в 3d-формате. turbochargers](https://www.gizmodo.com.au/2014/05/the-koenigsegg-one1s-3d-printed-variable-turbo-is-a-design-masterpiece/) за его ультра-суперкары под названием "Один:1". Можно ли это сделать, да. Держу пари, что это больше относится к тому, как он спроектирован, чем к тому, как настраивается печать после дизайна., @Pᴀᴜʟsᴛᴇʀ2

@Pᴀᴜʟs22 это связано с тем, как хранится файл., @Trish

Тривиально расположить отдельные объекты в MeshMixer и экспортировать результат в виде одного STL. Я думаю, что вы пытаетесь заставить квадратное решение в круглое отверстие, @Carl Witthoft

@CarlWitthoft объекты уже расположены, просто в отдельных файлах, и идея состоит в том, чтобы *не* нужно было их переставлять. Здесь нет квадратных колышков, просто красивый круглый колышек, созданный доморощенным кодом C++, который нуждается в небольшой полировке, прежде чем он подойдет., @Nathaniel

(Ну, в той мере, в какой использование библиотеки C++ с чрезмерно ограничительными возможностями ввода-вывода является квадратным решением, я согласен, что это именно тот случай. Пожалуйста, обсудите это с авторами CGAL, а не со мной. В этом отношении это может быть квадратное решение, но в моем случае оно единственно жизнеспособно.), @Nathaniel


4 ответа


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

3

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

Чтобы сгенерировать модель PiP, вам нужно экспортировать весь ваш проект в виде одного STL-файла, содержащего все части, и тогда Cura не только не разорвет модель на части, но и не сможет этого сделать.

Обходной путь

Если вы не можете экспортировать весь проект целиком из вашего программного обеспечения для проектирования, вы можете использовать обходной путь, импортировав его в программное обеспечение, которое может экспортировать как один элемент. Среди них есть blender, поэтому импорт всех частей в blender, а затем экспорт всего проекта в виде одного STL-это простое решение. Другими вариантами были бы TinkerCAD или Fusion360.

Пошаговое руководство для blender очень простое, и общая идея этого рабочего процесса одинакова для других вариантов:

  1. Откройте блендер
  2. Новый проект
  3. удалите куб с помощью entf + enter
  4. Получите файлы в рабочую область с помощью любого из следующих способов:
    • Перетаскивание и падение
      1. Файл > Импорт >> Stl (.stl)>>
      2. выберите файл + enter
  5. Возможно, переместите объект, пока он не окажется в правильном положении
  6. Повторяйте с 4 по 6, пока все детали не будут импортированы
  7. Файл > Экспорт >> Stl (.stl)>> + enter

,

Моя проблема в том, что программа, которую я использую для создания объектов, не может экспортировать их в один файл, а только как отдельные. Они действительно должны быть в одном файле STL, но вопрос в том, как это сделать, учитывая, что программа всегда будет выводить их в отдельных файлах., @Nathaniel

Какая программа? Fusion360 может экспортировать целый проект., @Trish

Я сам написал эту программу. Библиотека C++, которую я использовал, не имеет возможности помещать более одного объекта в файл STL., @Nathaniel

@Натаниэль, тогда вы, возможно, захотите объединить с помощью блендера, просто импортировав все перед экспортом., @Trish

Спасибо за редактирование. (+1) Я не являюсь пользователем blender, и это довольно сложная программа - если у вас есть время, пошаговые инструкции были бы очень полезны., @Nathaniel

@Натаниэль, шаг за шагом прост и понятен., @Trish

другой вариант-импортировать их в Tinkercad, расположить и экспортировать в одну группу. Tinkercad бесплатен и существенно менее сложен, чем магия Blender, @fred_dot_u

@Триш клевая, это сработало, спасибо. (Мне не нужно было перемещать их, как вы сказали, это уважало их положение в исходных файлах.) Единственным недостатком является то, что Blender по какой-то причине использует свой собственный специальный диалог файлов, который использует соглашения, отличные от моей ОС, и поэтому его немного неудобно использовать. Тем не менее, я обнаружил, что могу перетащить, чтобы выбрать несколько файлов, и, таким образом, избежать их импорта по одному. Я приму это через день или два., @Nathaniel

@Натаниэль Только что вернулся к этому вопросу, когда я искал ссылку на этот рабочий процесс, спасибо, что выбрали предпочтительный рабочий процесс!, @Trish


6

Операция, которую вы хотите, почти просто собирает файлы вместе. Однако вам необходимо удалить 80-байтовый заголовок со всех файлов, кроме первого, и сразу же после этого добавить 32-разрядное число треугольников из каждого файла. Результат должен быть:

  1. Копия первых 80 байт файла 1
  2. Сумма int32 из смещения 80 каждого файла.
  3. Байты 84-заканчиваются из каждого файла.

Видишь https://en.m.wikipedia.org/wiki/STL_(формат файла)

,

4

Аналогично ответу @R.., вы можете легко объединить содержимое каждого файла, если у вас есть файлы ASCII .stl.

  1. Убедитесь, что файлы .stl имеют формат ASCII: откройте их в любом текстовом редакторе (например, Notepad++). Если это читабельно, все в порядке, переходите к (3)
  2. Если они не читаются, преобразуйте их в формат ASCII .stl с помощью инструмента преобразования (например, такого)
  3. Откройте каждый файл ASCII .stl
  4. Скопируйте вместе содержимое файлов, за исключением инструкций "solid" и "endsolid", в которых файлы встречаются
,

К сожалению, они двоичные. В противном случае я бы написал скрипт на Python, чтобы объединить их. Извините за неловкость!, @Nathaniel


1

Импортируйте их в Tinkercad, а затем выведите оттуда свой объединенный файл. Вы можете зайти в Tinkercad, и в правом верхнем углу вы увидите "импорт", нажмите на него, чтобы импортировать ваш файл (вы можете повторить процесс по своему желанию), и он поместит файлы в рабочую область .. на экране. Когда у вас все рабочее пространство настроено так, как вы хотите, выберите их все и нажмите кнопку "экспорт", и он экспортирует их все в один файл для вашего использования.

,

Мой ответ был отредактирован в соответствии с вашим запросом., @Nate E.