stldice

module
v4.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 20, 2020 License: Apache-2.0

README

stldice

Experimental code to work with STL and voxelized designs in Go

Overview

Traditional CAD tools were designed to perform constuctive solid geomtery (CSG) (aka "Boolean") operations on simple, regular shapes such as cylinders, cubes, spheres, and toroids. However, as 3D printers are continually producing higher resolution parts, the designs being printed are becoming more complex. The existing tools provided by major CAD corporations simply are not capable of using the traditional algorithms that got them this far, even when running on distributed machines in large data centers. The algorithms themselves have exhausted their usefulness.

It is time for a paradigm shift.

Voxels

Voxels are the paradigm shift that is needed. Just as desktop (2D) printers started out simple in the form of dot matrix printers and have improved exponentially in quality, 3D printers are experiencing the same fantastic progression. Likewise, the concept of rasterizing 2D images into pixels translates into 3D by rasterizing designs into 3D pixels or "voxels". Using this technique, a design can be rasterized at any desired resolution, as high as the 3D printer supports.

The greatest advantage of voxels, though, is the ability to perform extremely detailed and complex boolean operations that traditional mesh algorithms are not able to do.

This repo provides a set of tools that enable high resolution STL designs to be diced, cut, then recontructed back to STL so that the large corpus of tools available today can be used to further manipulate the meshes and so that the designs can be printed on any 3D printers.

The suite of tools consists of:

  • binvox - package to read/write binvox files
  • stl - package that provides STL merge capabilities
  • stl2svx - experimental Kubernetes cluster to batch process voxel designs
  • stldice - dices up STL meshes into one or more vox files
  • tri2stl - combines tri files back into STL mesh files
  • voxcut-dice - writes to stdout many voxcut commands to cover a full model
  • voxcut - performs boolean operations on binvox files
  • vox2tri - converts vox files to tri files
  • vshell - start of experiment to represent a voxel model by its shell only

Enjoy!


License

Copyright 2018 Glenn Lewis. All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Directories

Path Synopsis
Package binvox provides functions for reading and writing binvox files.
Package binvox provides functions for reading and writing binvox files.
cmd
binvox-dice
binvox-dice takes an STL bounding box and writes commands to stdout to dice the model into subsections to be processed by binvox.
binvox-dice takes an STL bounding box and writes commands to stdout to dice the model into subsections to be processed by binvox.
manifold-mesh
manifold-mesh reads a .binvox file and writes a simple .stl file that is topologically closed (manifold).
manifold-mesh reads a .binvox file and writes a simple .stl file that is topologically closed (manifold).
marching-cubes
marching-cubes reads a .binvox file and writes a simple .stl file using the marching cubes algorithm.
marching-cubes reads a .binvox file and writes a simple .stl file using the marching cubes algorithm.
merge-binvox
merge-binvox takes a filename prefix and reads in all files matching prefix*.binvox.
merge-binvox takes a filename prefix and reads in all files matching prefix*.binvox.
merge-stl
merge-stl takes a filename prefix and reads in all files matching prefix*.stl.
merge-stl takes a filename prefix and reads in all files matching prefix*.stl.
stl2svx
stl2svx is a MapReduce that reads one "base" STL file and zero or more "cut" STL files, dices them into voxels, then produces a stack of images resulting from cutting the "base" model with all the subsequent "cuts".
stl2svx is a MapReduce that reads one "base" STL file and zero or more "cut" STL files, dices them into voxels, then produces a stack of images resulting from cutting the "base" model with all the subsequent "cuts".
stldice
stldice dices up STL meshes into one or more 'binvox' files.
stldice dices up STL meshes into one or more 'binvox' files.
stldice-mr
stldice-mr is a MapReduce that reads one "base" STL file and zero or more "cut" STL files, dices them into voxels, then produces a stack of images resulting from cutting the "base" model with all the subsequent "cuts".
stldice-mr is a MapReduce that reads one "base" STL file and zero or more "cut" STL files, dices them into voxels, then produces a stack of images resulting from cutting the "base" model with all the subsequent "cuts".
voxcut
voxcut performs boolean operations on 'binvox' files.
voxcut performs boolean operations on 'binvox' files.
voxcut-dice
voxcut-dice reads a binvox model and writes commands to stdout to dice the model into subsections to be processed by voxcut.
voxcut-dice reads a binvox model and writes commands to stdout to dice the model into subsections to be processed by voxcut.
Package mr is a generated protocol buffer package.
Package mr is a generated protocol buffer package.
Package ms is a generated protocol buffer package.
Package ms is a generated protocol buffer package.
server
stldice-master
stldice-master is a gRPC server that listens for commands from the dicer command-line tool and communicates with stldice-slave servers to process the requests.
stldice-master is a gRPC server that listens for commands from the dicer command-line tool and communicates with stldice-slave servers to process the requests.
stldice-slave
stldice-slave is a gRPC server that listens for commands from the stldice-master server and processes the requests.
stldice-slave is a gRPC server that listens for commands from the stldice-master server and processes the requests.
Package stl provides some useful STL-handling utilities.
Package stl provides some useful STL-handling utilities.
stl2svx
agent
Packate agent implements the agent part of the stl2svx-server.
Packate agent implements the agent part of the stl2svx-server.
master
Packate master implements the master part of the stl2svx-server.
Packate master implements the master part of the stl2svx-server.
proto
Package stl2svx is a generated protocol buffer package.
Package stl2svx is a generated protocol buffer package.
stl
Package stl gets processes pb.STLFiles.
Package stl gets processes pb.STLFiles.
stl2svx-client
stl2svx-client sends jobs to stl2svx-server and writes the results to local disk.
stl2svx-client sends jobs to stl2svx-server and writes the results to local disk.
stl2svx-server
stl2svx-server contains the master and agent services that are run remotely.
stl2svx-server contains the master and agent services that are run remotely.
Package stldice is a generated protocol buffer package.
Package stldice is a generated protocol buffer package.
Package vshell provides functions for reading and writing .vsh files.
Package vshell provides functions for reading and writing .vsh files.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL