FreeCAD workbench about arrays of all sorts and kinds, and local coordinate systems
Go to file
2020-07-09 17:16:03 +03:00
ExampleProjects Add example: bike chain 2018-08-14 17:49:54 +03:00
fonts ShapeString: bundle a few OFL-licensed fonts for easy playaround 2015-11-01 20:00:57 +03:00
lattice2Base Fix typos and some whitespace 2019-10-26 02:17:10 +03:00
PyResources ViewFromPlacement: icon 2019-09-20 20:16:54 +03:00
shapes Lattice: cooler orientation marker 2015-11-01 23:19:24 +03:00
.gitignore .gitignore *.FCStd1 backup FreeCAD files 2015-09-15 00:23:46 +03:00
CompoundFilter2.py active body awareness 2018-06-14 01:39:28 +03:00
copying.lib Add licence (LGPL) 2015-10-17 20:35:16 +03:00
FuseCompound2.py active body awareness 2018-06-14 01:39:28 +03:00
InitGui.py New feature: ScLERP placement interpolation 2019-10-11 23:21:36 +03:00
lattice2_rc.py ViewFromPlacement: icon 2019-09-20 20:16:54 +03:00
Lattice2.py AttachablePlacement: create base class 2018-08-06 15:38:24 +03:00
Lattice2ArrayFeatures.py New feature: ScLERP placement interpolation 2019-10-11 23:21:36 +03:00
lattice2ArrayFilter.py Misc. typo fixes 2019-05-21 12:55:38 +03:00
lattice2ArrayFromShape.py FreeCADCmd: fix imports 2018-05-14 22:37:07 +03:00
lattice2AttachablePlacement.py fix #31 error when closing transform on polar array 2019-07-12 20:10:42 +03:00
lattice2BaseFeature.py Fix typo 2020-03-02 04:05:02 +03:00
lattice2BoundBox.py BoundBox: switch default to low-precision 2020-04-20 03:31:44 +03:00
Lattice2CodeModules.py New feature pack: Subsequencing and TopoSeries 2017-01-15 22:39:17 +03:00
lattice2Common.py Utils: print traceback for pop-up error messages 2018-08-06 15:36:57 +03:00
lattice2Compatibility.py fix #48 Attached Placement error in FC 0.18.4 2020-07-09 17:16:03 +03:00
lattice2CompoundExplorer.py Py3: fix syntax errors 2017-11-21 18:53:56 +03:00
Lattice2CompoundFeatures.py New feature pack: Subsequencing and TopoSeries 2017-01-15 22:39:17 +03:00
lattice2Downgrade.py active body awareness 2018-06-14 01:39:28 +03:00
lattice2Dummy.py V2: renaming .py files 2015-11-26 23:26:43 +03:00
lattice2Executer.py FreeCADCmd: fix imports 2018-05-14 22:37:07 +03:00
lattice2ExposeLinkSub.py FreeCADCmd: fix imports 2018-05-14 22:37:07 +03:00
lattice2GeomUtils.py Misc. typo fixes 2019-05-21 12:55:38 +03:00
Lattice2GuiTools.py New tool: View from placement 2019-09-20 16:53:51 +03:00
lattice2HelpCommands.py FreeCADCmd: fix workbench activation in GUI mode 2018-05-14 22:49:20 +03:00
lattice2InjectedToolbars.py add partdesign toolbar 2018-06-14 01:39:28 +03:00
lattice2Inspect.py FreeCADCmd: fix imports 2018-05-14 22:37:07 +03:00
lattice2InterpolateGroup.py New feature: ScLERP placement interpolation 2019-10-11 23:21:36 +03:00
lattice2InterpolatorUtil.py V2: renaming .py files 2015-11-26 23:26:43 +03:00
lattice2Invert.py FreeCADCmd: fix imports 2018-05-14 22:37:07 +03:00
lattice2JoinArrays.py FreeCADCmd: fix imports 2018-05-14 22:37:07 +03:00
lattice2LinearArray.py Use Autosize in single placement, attachable placement, linear and polar arrays, shapestring 2018-12-02 01:29:25 +03:00
lattice2MakeCompound.py active body awareness 2018-06-14 01:39:28 +03:00
lattice2Markers.py Py3: more fix "err has no attribute message" 2017-11-23 11:58:18 +03:00
lattice2Mirror.py active body awareness 2018-06-14 01:39:28 +03:00
lattice2ParaSeries.py Misc. typo fixes 2019-05-21 12:55:38 +03:00
Lattice2PartDesignFeatures.py add partdesign toolbar 2018-06-14 01:39:28 +03:00
lattice2PDPattern.py Misc. typo fixes 2019-05-21 12:55:38 +03:00
lattice2PDPatternCommand.py add partdesign toolbar 2018-06-14 01:39:28 +03:00
lattice2Placement.py Use Autosize in single placement, attachable placement, linear and polar arrays, shapestring 2018-12-02 01:29:25 +03:00
lattice2PolarArray.py FreeCADCmd: fix imports 2018-05-14 22:37:07 +03:00
lattice2PolarArray2.py Use Autosize in single placement, attachable placement, linear and polar arrays, shapestring 2018-12-02 01:29:25 +03:00
lattice2PopulateChildren.py Fix typos and some whitespace 2019-10-26 02:17:10 +03:00
lattice2PopulateCopies.py active body awareness 2018-06-14 01:39:28 +03:00
lattice2ProjectArray.py Misc. typo fixes 2019-05-21 12:55:38 +03:00
lattice2RecomputeLocker.py Fix #42 duplicate shortcut in recompute tools 2020-04-20 03:30:06 +03:00
lattice2Resample.py Misc. typo fixes 2019-05-21 12:55:38 +03:00
lattice2ScLERP.py ScLERP: fix argument order 2019-10-12 18:46:35 +03:00
lattice2SeriesGroup.py active body awareness 2018-06-14 01:39:28 +03:00
lattice2ShapeCopy.py New feature: PartDesign Pattern! 2018-06-14 01:39:03 +03:00
lattice2ShapeInfoFeature.py Misc. typo fixes 2019-05-21 12:55:38 +03:00
lattice2ShapeString.py Misc. typo fixes 2019-05-21 12:55:38 +03:00
lattice2Slice.py active body awareness 2018-06-14 01:39:28 +03:00
lattice2SubLink.py Misc. typo fixes 2019-05-21 12:55:38 +03:00
lattice2Subsequencer.py Misc. typo fixes 2019-05-21 12:55:38 +03:00
lattice2SubstituteObject.py Misc. typo fixes 2019-05-21 12:55:38 +03:00
lattice2TopoSeries.py FreeCADCmd: fix imports 2018-05-14 22:37:07 +03:00
lattice2Utils.py PolarArray: new implementation 2018-08-06 15:38:24 +03:00
lattice2ValueSeriesGenerator.py Fix typos and some whitespace 2019-10-26 02:17:10 +03:00
lattice2ViewFromPlacement.py README: just a little more tweaking + misc. typo fix 2019-10-13 15:11:38 +03:00
README.md README: Add LGTM 2020-03-17 00:27:20 +03:00

Lattice2 Workbench

Total alerts Language grade: Python

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

It's purpose is working with placements and arrays of placements. It functions similar to what an Assembly workbench does, 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 this workbench (including tick labeling). Also, exploded assemblies can be made with this 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.

Getting started

Follow through the Basic Tutorial to get the basic concept of Lattice2.

Highlights

Lattice2-FreeCAD-wormcutter

Lattice2-FreeCAD-placement-interpolator

Take a look at other examples in the Gallery of screenshots.

Features

Let's have a glance over the most important capabilities that the workbench adds to FreeCAD:

  • Re-use arrays as many times as you need. Unlike Draft array, which directly generates the array of shapes, lattice array tools generate arrays of placements. These can later be populated with shapes, as many times as necessary, without having to set up another array.
  • Extends PartDesign workflow, offering a way to reuse a sequence of features in arbitrary bodies and places.
  • Elements of array can be different. Unlike Draft Arrays, which always generate a set of equal shapes, Lattice arrays can be used to arrange a set of different shapes. Pack the shapes to be arranged into a Compound, and use Lattice Populate with children feature to arrange them.
  • Arrays of placements can be combined, inverted, generated from existing shape arrangements, made from individual placements, projected onto shapes, filtered, etc. This allows to produce complex arrangements without scripting.
  • Single placements can be used for primitive assembling of parts.
  • linear arrays and polar arrays can have their axes linked to edges of shapes
  • ParaSeries feature allows to generate a series of parts with some parameter varied over a list of values.

Why Lattice2, not just Lattice?

Lattice2 was created at the moment when breaking changes needed to be made to Lattice, but there were a few things made with Lattice. So, it was decided to keep the workbench in that time's state indefinitely as version 1.0, and start development of a new version.

The goal was to allow editing old projects made with Lattice v1, by having both versions installed at the same time. So a new repository was started, and all the files were renamed to start with 'lattice2' or otherwise differ from those of Lattice v1.

Lattice3 (if ever) will be a standalone repository, for the same reasons.

Installation

Prerequisites

  • FreeCAD >= v0.16.5155
  • PartDesign tools require v0.17+
  • Both Py2/Qt4 and Py3/Qt5 builds are supported.

The workbench is OS independent, it should work on any system FreeCAD can be run on. If you find that it doesn't - that is a bug. Please open an ticket in the issue queue.

Note: Lattice2 is written in FreeCAD's Python, and must be run from within FreeCAD. It requires no compilation, and can be installed by copying the repository to a special location.

Automated install

There are several options to automate installation of this workbench.

  • The most recommended method is to use FreeCAD's built-in Addon Manager (Tools > Addon manager).
  • Another method; Lattice2 workbench is packaged to Launchpad in the Ubuntu FreeCAD Community PPA (thanks to @abdullahtahiriyo).
  • Lattice2 can be installed via @microelly's Plugin Loader (this option is deprecated).

Note: Any of the above options will require a restart of FreeCAD in order for the workbench to function.

Manual install

Expand this section if you prefer to manually install Lattice2
  1. Download the workbench. There are several ways to do this, you can choose either:
  • Scroll to the top of the page, and click 'clone or download' -> 'download zip' button
  • git clone https://github.com/DeepSOIC/Lattice2
  1. If you downloaded the .zip, unpack the archive and rename it to Lattice2. If you used git clone then ignore this step.
  2. Move the newly created Lattice2 directory to where your default FreeCAD install directory is located:
  • Windows: (sytem-wide install) %AppData%\FreeCAD\Mod\Lattice2
  • Windows: (for individual installs) C:\Program Files\FreeCAD\Mod\Lattice2
  • Linux: ~/.FreeCAD/Mod/Lattice2
  • MacOS: ~/.FreeCAD/Mod/Lattice2
  1. Restart FreeCAD

Important Note: Make sure that InitGui.py (and the rest of .py files) end up directly under Mod\Lattice2 directory (not under nested directory like Mod\Lattice2\Lattice2).

Usage

After installing the workbench and restarting FC, Lattice2 should now appear in the workbench dropdown menu. It will be listed down towards the bottom of list. Now, you can familiarize yourself with Lattice2 through the Basic Tutorial.

Side Note: If you want to install the workbench for development, git clone the repository wherever you like, and make a symlink in where FreeCAD can pick it up as an add-on.

Status

The workbench is stable. I will take care to not make breaking changes, and some new functionality may keep coming.

If you make your FreeCAD project using Lattice2, all further changes to the project must be done with Lattice2 installed, even if you don't touch the relevant features. Otherwise, the parametric features in the project will lose their bound functionality, and will not recompute, even if you install Lattice2 later. This is the case for all add-ons in FreeCAD, not just Lattice2.

Getting Help

For Documentation see the Lattice2 wiki on Github. As the word "wiki" suggests, you can help by editing the documentation.

If you need help on something specific, you can ask a question on FreeCAD forum (there is no Lattice forum yet...). You can also ask me directly. Note: If you post to the forum, please add this to your post so that I get a notification:
[quote=DeepSOIC user_id=3888]Ding![/quote]

Contributing

If you have found a bug or are requesting a new feature, please first check to see if it has been previously reported already on the Lattice2 Github repo issue tracker. If not, feel free to open a ticket.

If you have fixed a bug or implemented a new feature you think suits the workbench, feel free to make a pull-request on Github.

License

Lattice workbench is licensed under LGPL V2, just like FreeCAD. For more info, see copying.lib file in this repository.