Skip to content

Command line

Scaffolder - generate 3D scaffold from STL file
Usage:
  Scaffolder [OPTION...] INPUT OUTPUT PARAMETERS

  -h, --help                    Print help
  -i, --input INPUT             Input file (STL/PLY/OFF/OBJ/VMI)
  -o, --output OUTPUT           Output filename with extension
                                stl,ply,obj,off,ctm
      --params PARAMETERS       Combined parameters list:
                                surface[,coff,isolevel,grid_size,k_slice,k_polygon]
  -q, --quiet                   Disable verbose output [default: false]
  -c, --coff DOUBLE             Angular frequency (pore size adjustment)
                                default:PI
  -t, --isolevel DOUBLE         isolevel (porosity adjustment) [default: 0]
  -n, --surface NAME            implicit surface: rectlinear, schwarzp,
                                schwarzd, gyroid, double-p, double-d,
                                double-gyroiod, lidinoid, schoen_iwp, neovius, bcc,
                                tubular_g_ab, tubular_g_c (default: bcc)
  -g, --grid_size INT (0..60000)
                                Grid size [default: 100]
  -s, --shell INT (0..60000)    Outer thickness (layers) [default:0]
      --grid_offset INT (0..60000)
                                [default:3]
  -m, --microstructure          Analysis microstructure with Slice contour
                                technique ( [default: false]
      --export_microstructure   Analysis microstructure and export the 2D
                                contours (for debugging) [default: false]
      --export_jpeg [X|Y|Z],INT
                                Export 2D JPEG (Default: Z,100)
      --k_slice INT (0..60000)  K_slice: the number of slicing layers in each
                                direction (used in microstructure analysis)
                                (default: 100)
      --k_polygon INT (>0)      K_polygon: the number of closest outer
                                contour (used in microstructure analysis) (default:
                                4)
  -z, --size_optimize DOUBLE (0..1)
                                Experimental Quadric simplification (default:
                                0)
      --smooth_step INT (0..60000)
                                Smooth with laplacian (default: 0)
      --dirty                   Disable autoclean
      --minimum_diameter DOUBLE (0..1)
                                used for removing small orphaned (between
                                0-1) (default: 0.25)
      --format FORMAT (default, csv)
                                Format of logging output (default: default)
      --output_inverse          additional output inverse scaffold
      --fix_self_intersect INT  Experimental fix self-intersect faces
                                (default: 0)
      --mean_curvature INT      Size of mean curvature histogram (default: 0)
      --no_intersect            Generate 3D mesh without intersect with
                                original mesh (false)

Examples

  • Generated BCC scaffold with \(w=\pi\), \(t=0\), and \(grid\_size=100\)

      Scaffolder input.stl output.stl bcc,3.14159,0,100
    

  • Generated custom implicit function (declaired in custom.lua) with \(w=\pi\), \(t=0\), \(grid\_size=100\), \(k_{slice}=100\), \(k_{polygon}=4\) and evaluated scaffold properties

      Scaffolder input.stl output.stl custom.lua,3.14159,0,100,100,4 -m
    

  • Generated and evaluated BCC scaffold (\(w=3.14159\), \(t=0\)) and reported in CSV

    Scaffolder input.stl output.stl bcc,3.14159,0 -m -q --format csv
    

Custom implicit function

If the built-in functions (rectlinear, schwarzp, schwarzd, gyroid, double-p, double-d, double-gyroiod, lidinoid, schoen_iwp, neovius, bcc, tubular_g_ab, tubular_g_c) was not satisfied, the custom implicit function can be used by creating a lua file and define the "surface" function that return the FRep

-- custom.lua 
-- define gyroid with
function surface (x, y, z)
    return -(sin(x) * cos(y) + sin(y) * cos(z) + sin(z) * cos(x) - params.isolevel)
end

The special symbols can be used in lua file:

  params = { coff, isolevel, k_splice, k_polygon }
  bbox = { min, max, length, grid_density }
  winding(x,y,z) -- function returning the winding number of position x,y,z
  signed_distance(x,y,z) -- function returning signed distance of position x,y,z
and also all functions in math module