Lattice2 Workbench

Introduction
'''This version is in devlopment. Breaking changes can be introduced at any point. If you want to make a project with use of Lattice workbench, it is recommended to stick with Lattice v1.'''

Lattice Workbench is a plug-in module (workbench) for FreeCAD.

The workbench purpose is working with placements and arrays of placements. It is a sort of assembly workbench, but with emphasis on arrays. There are no constraints and relations, there are just arrays of placements that can be generated, combined, transformed, superimposed and populated with shapes.

Ever wondered how to create a protractor with FreeCAD? That's the aim of the workbench (including tick labeling). Also, exploded assemblies can be made with the workbench.

Additionally, the workbench features a few general-purpose tools, such as parametric downgrade, bounding boxes, shape info tool, and tools for working with collections of shapes (compounds).

One of the big design goals of the workbench is being as parametric as possible.

Tools
Detailed description here

Toolbar




 * [[Image:Lattice2_Placement.svg|32px]] Placement
 * [[Image:Lattice2_Placement.svg|24px]] Single Placement: Custom
 * [[Image:Lattice2_Placement.svg|24px]] Single Placement: XY plane
 * [[Image:Lattice2_Placement.svg|24px]] Single Placement: XZ plane
 * [[Image:Lattice2_Placement.svg|24px]] Single Placement: YZ plane
 * [[Image:Lattice2_Placement.svg|24px]] Single Placement: along X
 * [[Image:Lattice2_Placement.svg|24px]] Single Placement: along Y
 * [[Image:Lattice2_Placement.svg|24px]] Single Placement: along Z
 * [[Image:Lattice2_Placement.svg|24px]] Single Placement: Euler angles
 * [[Image:Lattice2_PlacementFromShape.svg|32px]] Placement of shape: Copy object.Placement
 * [[Image:Lattice2_PlacementFromShape.svg|32px]] Placement of shape: Center of bounding box
 * [[Image:Lattice2_PlacementFromShape.svg|32px]] Placement of shape: Center of mass
 * [[Image:Lattice2_PlacementFromShape.svg|32px]] Placement of shape: Inertial axis system
 * [[Image:Lattice2_LinearArray.svg|32px]] Generate linear array
 * [[Image:Lattice2_PolarArray.svg|32px]] Generate polar array
 * [[Image:Lattice2_ArrayFromShape.svg|32px]] Array from shape
 * [[Image:Lattice2_ArrayFromShape.svg|32px]] Internal placements
 * [[Image:Lattice2_ArrayFromShape.svg|32px]] Center of bounding box
 * [[Image:Lattice2_ArrayFromShape.svg|32px]] Center of mass
 * [[Image:Lattice2_ArrayFromShape.svg|32px]] Inertial axis system
 * [[Image:Lattice2_InvertLattice.svg|32px]] Invert lattice
 * [[Image:Lattice2_JoinArrays.svg|32px]] Join arrays
 * [[Image:Lattice2_ArrayFilter.svg|32px]] Array filter
 * [[Image:Lattice2_ArrayFilter.svg|32px]] Selected items
 * [[Image:Lattice2_ArrayFilter.svg|32px]] Touching
 * [[Image:Lattice2_ArrayFilter.svg|32px]] Within distance window
 * [[Image:Lattice2_ArrayFilter.svg|32px]] Pointing at shape
 * [[Image:Lattice2_ExplodeArray.svg|32px]] Explode array
 * [[Image:Lattice2_ProjectArray.svg|32px]] Project array
 * [[Image:Lattice2_ResampleArray.svg|32px]] Resample array
 * [[Image:Lattice2_PopulateCopiesNormal.svg|32px]] Populate with copies
 * [[Image:Lattice2_PopulateCopiesNormal.svg|32px]] Populate with copies
 * [[Image:Lattice2_PopulateCopiesArray.svg|32px]] Populate with copies: Build array
 * [[Image:Lattice2_PopulateCopiesMove.svg|32px]] Moved object
 * [[Image:Lattice2_PopulateChildrenNormal.svg|32px]] Populate with children
 * [[Image:Lattice2_PopulateChildrenNormal.svg|32px]] Populate with children
 * [[Image:Lattice2_PopulateChildrenArray.svg|32px]] Populate with children: Build array
 * [[Image:Lattice2_PopulateChildrenMove.svg|32px]] Moved children
 * [[Image:Lattice2_ParametricDowngrade.svg|24px]] Parametric downgrade
 * [[Image:Lattice2_ParametricDowngrade.svg|24px]] Downgrade to 
 * [[Image:Lattice2_ParametricDowngrade.svg|24px]] Downgrade to Leaves
 * [[Image:Lattice2_ParametricDowngrade.svg|24px]] Downgrade to CompSolids
 * [[Image:Lattice2_ParametricDowngrade.svg|24px]] Downgrade to Shells
 * [[Image:Lattice2_ParametricDowngrade.svg|24px]] Downgrade to OpenWires
 * [[Image:Lattice2_ParametricDowngrade.svg|24px]] Downgrade to Faces
 * [[Image:Lattice2_ParametricDowngrade.svg|24px]] Downgrade to Wires
 * [[Image:Lattice2_ParametricDowngrade.svg|24px]] Downgrade to Edges
 * [[Image:Lattice2_ParametricDowngrade.svg|24px]] Downgrade to Seam edges
 * [[Image:Lattice2_ParametricDowngrade.svg|24px]] Downgrade to Non-seam edges
 * [[Image:Lattice2_ParametricDowngrade.svg|24px]] Downgrade to Vertices
 * [[Image:Lattice2_SubLink.svg|32px]] Sub link
 * [[Image:Lattice2_MakeCompound.svg|32px]] Make compound
 * [[Image:Lattice2_ExplodeCompound.svg|32px]] Explode compound
 * [[Image:Lattice2_FuseCompound.svg|32px]] Fuse compound
 * [[Image:Lattice2_BoundingBox.svg|32px]] Bounding box
 * [[Image:Lattice2_BoundingBox.svg|32px]] Whole
 * [[Image:Lattice2_BoundingBoxCompound.svg|32px]] Children
 * [[Image:Lattice2_ShapeString.svg|32px]] Shape string for array
 * [[Image:Lattice2_ParaSeries.svg|32px]] Para series
 * [[Image:Lattice2_Inspect.svg|32px]] Inspect
 * [[Image:Lattice2_InspectSelection.svg|32px]] Inspect seletion
 * [[Image:Lattice2_InspectShape.svg|32px]] Shape info (feature)
 * [[Image:Lattice2_SubstituteObject.svg|32px]] Substitute object
 * Expose links to subelements

Other
 * Recomputes
 * [[Image:Lattice2_RecomputeMakeFeature.svg|32px]] Make recompute locher object:
 * [[Image:Lattice2_RecomputeLock.svg|32px]] Lock recomputes:
 * [[Image:Lattice2_RecomputeUnlock.svg|32px]] Unlock recomputes:
 * [[Image:Lattice2_RecomputeFeature.svg|32px]] Recompute feature:
 * [[Image:Lattice2_RecomputeDocument.svg|32px]] Recompute document:
 * [[Image:Lattice2_RecomputeForce.svg|32px]] Force recompute:
 * [[Image:Lattice2_RecomputeTouch.svg|32px]] Touch selected feature:
 * [[Image:Lattice2_Lattice2.svg|32px]] Lattice2 icon

Automatic installation
See Installing

From GitHub
Prerequisites

Lattice2 WB requires FreeCAD no less than v0.16.5155.

Manual install
 * Scroll to the top of the page, and click 'download zip' button
 * Unpack the contents into a "Lattice2" folder created in \Path\to\FreeCAD\Mod, and restart FreeCAD.
 * Note that InitGui.py (and the rest of .py files) should end up directly under Mod\Lattice2 (not under nested directory like Mod\Lattice2\Lattice2).

After you install the workbench, it should appear at the bottom of list of workbench selector in FreeCAD.

Links to Lattice2 WB

 * Workbench Wiki: https://github.com/DeepSOIC/Lattice2/wiki
 * FreeCAD Wiki:
 * FreeCAD Forum: Lattice workbench - v2.0 is becoming stable
 * Tutorials: Gallery
 * Videos: [xxxxxxxxxxx]
 * Files: [xxxxxxxx]
 * Gallery: https://github.com/DeepSOIC/Lattice2/wiki/Gallery
 * Report bugs: Please report bugs at https://github.com/DeepSOIC/Lattice2/issues

Other useful links

 * Lattice old version
 * DevWorkbenches: List of workbenches in development.
 * Macros recipes
 * FreeCAD Download
 * FreeCAD Community Portal