Как программно изменить существующий файл stl (стереолитография) на сервере linux?

Я хотел бы изменить некоторые аспекты STL-файла, созданного с помощью Solidworks, на сервере Linux. Есть ли проверенный способ решения такой задачи? Я сейчас смотрю на 3d библиотеки или meshlabserver.

1 ответ

Решение

Вы можете использовать meshlabserver, как это

meshlabserver -i sourcefilepath -o resaultfilepath -s process.mlx

Вам нужно написать файл process.mlx, чтобы определить операцию на вашей модели

Например, половина шкалы на оси Z с ниже process.mlx

<!DOCTYPE FilterScript>
<FilterScript>
 <filter name="Transform: Scale, Normalize">
  <Param value="1" type="RichFloat" description="X Axis" name="axisX" tooltip="Scaling"/>
  <Param value="1" type="RichFloat" description="Y Axis" name="axisY" tooltip="Scaling"/>
  <Param value="0.5" type="RichFloat" description="Z Axis" name="axisZ" tooltip="Scaling"/>
  <Param value="false" type="RichBool" description="Uniform Scaling" name="uniformFlag" tooltip="If selected an uniform scaling (the same for all the three axis) is applied (the X axis value is used)"/>
  <Param value="0" enum_val0="origin" enum_val1="barycenter" enum_val2="custom point" type="RichEnum" description="Center of scaling:" name="scaleCenter" enum_cardinality="3" tooltip="Choose a method"/>
  <Param type="RichPoint3f" x="0" y="0" description="Custom center" z="0" name="customCenter" tooltip="This scaling center is used only if the 'custom point' option is chosen."/>
  <Param value="false" type="RichBool" description="Scale to Unit bbox" name="unitFlag" tooltip="If selected, the object is scaled to a box whose sides are at most 1 unit lenght"/>
  <Param value="true" type="RichBool" description="Freeze Matrix" name="Freeze" tooltip="The transformation is explicitly applied, and the vertex coordinates are actually changed"/>
  <Param value="false" type="RichBool" description="Apply to all visible Layers" name="allLayers" tooltip="If selected the filter will be applied to all visible mesh layers"/>
 </filter>
</FilterScript>

Если вы не знакомы с файлом mashlab mlx, вы можете создать его с помощью mashlab следующим образом:

Filters > Normals, Curvatures and Orientation > Transform: Scale, Normalize

Затем установите масштаб в окне, вы можете снять Uniform Scaling флажок для масштабирования каждой оси отдельно

Затем нажмите apply кнопка.

В заключение, Filters > Show current filter scriptВы можете увидеть текущие сценарии здесь, выберите Tansform: Scale, Normalize и нажмите Save Script как process.mlx

Другие вопросы по тегам