Объединение нескольких файлов STL
У меня есть коллекция STL-файлов, каждый из которых содержит отдельную движущуюся часть объекта, который я хочу распечатать. (Представьте себе набор шестеренок или что-то подобное, что печатает как один объект с несколькими движущимися частями.)
Мой план состоял в том, чтобы импортировать их все в Cura, затем нажать печать, а затем снять мой полностью собранный объект с пластины сборки. Однако Cura игнорирует систему координат в файлах STL и автоматически отделяет компоненты друг от друга на пластине сборки. Это обычно полезно, но это не то, что я хочу в этом случае.
Поэтому я ищу быстрый и простой способ объединить несколько STL-файлов в один STL-файл. Я знаю, что объекты не перекрываются, поэтому мне не нужно выполнять операцию объединения CSG - достаточно просто объединить объекты.
Я попробовал OpenSCAD, который работает, но это занимает очень много времени, потому что сетки довольно сложны, и он выполняет полную логическую операцию. Есть ли другой быстрый и простой способ выполнить эту задачу?
Я бы предпочел утилиту командной строки, но я также был бы счастлив, если есть быстрый и простой способ сделать это в каком-то бесплатном графическом программном обеспечении. (Однако я не хочу тратить время на ручное позиционирование объектов - они уже находятся в нужных местах в STL-файлах, поэтому я просто хочу импортировать их и идти.)
Edit Я принял ответ Триш (используйте блендер), но я бы все равно оценил опцию командной строки, если кто-то знает.
@Nathaniel, 👍4
Обсуждение4 ответа
Лучший ответ:
То, что вы пытаетесь сделать, называется "Печать на месте". Однако это не делается путем импорта нескольких STL один за другим, так как cura удаляет источник и последние центры каждого импортированного объекта при импорте. Однако файл STL может содержать более одного тела.
Чтобы сгенерировать модель PiP, вам нужно экспортировать весь ваш проект в виде одного STL-файла, содержащего все части, и тогда Cura не только не разорвет модель на части, но и не сможет этого сделать.
Обходной путь
Если вы не можете экспортировать весь проект целиком из вашего программного обеспечения для проектирования, вы можете использовать обходной путь, импортировав его в программное обеспечение, которое может экспортировать как один элемент. Среди них есть blender, поэтому импорт всех частей в blender, а затем экспорт всего проекта в виде одного STL-это простое решение. Другими вариантами были бы TinkerCAD или Fusion360.
Пошаговое руководство для blender очень простое, и общая идея этого рабочего процесса одинакова для других вариантов:
- Откройте блендер
- Новый проект
- удалите куб с помощью
entf
+enter
- Получите файлы в рабочую область с помощью любого из следующих способов:
- Перетаскивание и падение
Файл > Импорт >> Stl (.stl)>>
- выберите файл +
enter
- Перетаскивание и падение
- Возможно, переместите объект, пока он не окажется в правильном положении
- Повторяйте с 4 по 6, пока все детали не будут импортированы
Файл > Экспорт >> Stl (.stl)>>
+enter
Моя проблема в том, что программа, которую я использую для создания объектов, не может экспортировать их в один файл, а только как отдельные. Они действительно должны быть в одном файле STL, но вопрос в том, как это сделать, учитывая, что программа всегда будет выводить их в отдельных файлах., @Nathaniel
Какая программа? Fusion360 может экспортировать целый проект., @Trish
Я сам написал эту программу. Библиотека C++, которую я использовал, не имеет возможности помещать более одного объекта в файл STL., @Nathaniel
@Натаниэль, тогда вы, возможно, захотите объединить с помощью блендера, просто импортировав все перед экспортом., @Trish
Спасибо за редактирование. (+1) Я не являюсь пользователем blender, и это довольно сложная программа - если у вас есть время, пошаговые инструкции были бы очень полезны., @Nathaniel
@Натаниэль, шаг за шагом прост и понятен., @Trish
другой вариант-импортировать их в Tinkercad, расположить и экспортировать в одну группу. Tinkercad бесплатен и существенно менее сложен, чем магия Blender, @fred_dot_u
@Триш клевая, это сработало, спасибо. (Мне не нужно было перемещать их, как вы сказали, это уважало их положение в исходных файлах.) Единственным недостатком является то, что Blender по какой-то причине использует свой собственный специальный диалог файлов, который использует соглашения, отличные от моей ОС, и поэтому его немного неудобно использовать. Тем не менее, я обнаружил, что могу перетащить, чтобы выбрать несколько файлов, и, таким образом, избежать их импорта по одному. Я приму это через день или два., @Nathaniel
@Натаниэль Только что вернулся к этому вопросу, когда я искал ссылку на этот рабочий процесс, спасибо, что выбрали предпочтительный рабочий процесс!, @Trish
Операция, которую вы хотите, почти просто собирает файлы вместе. Однако вам необходимо удалить 80-байтовый заголовок со всех файлов, кроме первого, и сразу же после этого добавить 32-разрядное число треугольников из каждого файла. Результат должен быть:
- Копия первых 80 байт файла 1
- Сумма int32 из смещения 80 каждого файла.
- Байты 84-заканчиваются из каждого файла.
Аналогично ответу @R.., вы можете легко объединить содержимое каждого файла, если у вас есть файлы ASCII .stl.
- Убедитесь, что файлы .stl имеют формат ASCII: откройте их в любом текстовом редакторе (например, Notepad++). Если это читабельно, все в порядке, переходите к (3)
- Если они не читаются, преобразуйте их в формат ASCII .stl с помощью инструмента преобразования (например, такого)
- Откройте каждый файл ASCII .stl
- Скопируйте вместе содержимое файлов, за исключением инструкций "solid" и "endsolid", в которых файлы встречаются
К сожалению, они двоичные. В противном случае я бы написал скрипт на Python, чтобы объединить их. Извините за неловкость!, @Nathaniel
Импортируйте их в Tinkercad, а затем выведите оттуда свой объединенный файл. Вы можете зайти в Tinkercad, и в правом верхнем углу вы увидите "импорт", нажмите на него, чтобы импортировать ваш файл (вы можете повторить процесс по своему желанию), и он поместит файлы в рабочую область .. на экране. Когда у вас все рабочее пространство настроено так, как вы хотите, выберите их все и нажмите кнопку "экспорт", и он экспортирует их все в один файл для вашего использования.
Мой ответ был отредактирован в соответствии с вашим запросом., @Nate E.
- Как вычислить поверхность и объем большого количества файлов STL?
- Как повернуть 3D-модель так, чтобы она была параллельна пластине сборки?
- 3D печать с использованием только двоичных тензоров, представляющих детали
- Инструмент для измерения в STL-файлах
- Каков самый простой способ изменить/изменить размер объекта внутри STL-файла?
- Экспорт STL как ASCII или двоичный?
- Разделить/редактировать часть в FreeCAD?
- Облако точек в файл STL
Как бы вы ожидали, что 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