Design456 Workbench

Introduction


The Design456 workbench is an External workbench that plans to implement a Direct Modeling methodology in FreeCAD. Think 'push and pull geometry' that one finds in CAD suites like SketchUp and Fusion360.

The original idea came to live when the developer of Design456 wanted to do the basic tasks which is simple and easy to do in 123D Design. FreeCAD could do the same job but the tools aren't interfaced in that way. This workbench will not keep track of old shapes. It tries to clean up the garbage which might be produced during running under commands. It tries to make the tree as simple as possible. Parameters must be decided during the desired manipulations which cannot be changed later.

This Wikipage is not updated regularly. To get the latest tool-list, you need to look at Design456 github or youtube videos. Only one developer is working on this project, and time to update these all documents is missing unfortunately.

Background
Traditionally, FreeCAD employs a Parametric Modeling methodology which is a powerful and scalable approach. It is also has been an industry standard. But I wish to have another approach. My workbench will try to implement direct modeling which is not provided at the moment by FreeCAD.

Installation
Download the Design456 workbench via the Addon Manager

Note:
If the above is not working for you please consider :
 * Addon manager no longer works in FreeCAD 0.18 due to changes in Github use FreeCAD 0.20 instead.
 * Invoke the Addon Manager - Tools | Adddon manager.
 * Select Configure..Into Custom repositories enter https://github.com/MariwanJ/Design456.
 * Then OK.
 * Restart FreeCAD.

2D Drawing and manipulation tools

 * [[Image:Design456_3Point.svg|32px]] Design456 Arc3Points: Use this tool to create an Arc from 3 vertices.
 * [[Image:Design456_MultiPointsToWireClose.svg|32px]] Design456 MultiPointsToWireClose: Use this tool to create a series of lines between points selected in series(closed).
 * [[Image:Design456_MultiPointsToWireOpen.svg|32px]] Design456 MultiPointsToWireOpen: Use this tool to create a series of lines between points selected in series (open).
 * [[Image:Design456_2DTrimLine.svg|32px]] Design456 Trim a line: Use this tool delete a line/wire.
 * [[Image:2D_ExtendLine.svg|32px]] Design456 Extend a line or a wire: Use this tool to extend any wire or line.

3D Drawing and manipulation tools

 * [[Image:Design456_Extrude.svg|32px]] Design456 Extrude: Use this tool to extrude any face of 2D or 3D object.
 * [[Image:Design456_Extract.svg|32px]] Design456 Extract Face: Use this tool to extract a face, edge or vertex from any object.
 * [[Image:Design456_PartMerge.svg|32px]] Design456 3D PartMerge: Use this tool to merge 3D objects.
 * [[Image:simplifyCompound.svg|32px]] Design456 Simplify Compound Obects: Use this tool to simplify faces of 3D objects.
 * [[Image:Design456_PartSubtract.svg|32px]] Design456 3D PartSubtract: Use this tool to subtract/cut 3D objects.
 * [[Image:Design456_PartIntersect.svg|32px]] Design456 3D Parts Intersect: Use this tool to create new object which is common between two shapes intersecting each other.
 * [[Image:Design456_LoftOnDirection.svg|32px]] Design456 Loft on direction: Use this tool create new 3D object based on the face you select and the scale you choose.
 * [[Image:Design456_PartGroup.svg|32px]] Design456 3D Part Grouping: Use this tool to collect several parts in one group.
 * [[Image:Design456_PartCompound.svg|32px]] Design456 3D Part Compound: Use this tool to compound different parts.
 * [[Image:PartDesign_Shell.svg|32px]] Design456 3D Part Shell: Use this tool to make Shell.
 * [[Image:DivideObject.svg|32px]] Design456 3D Divide Object: Use this tool to divide 3D object faces.
 * [[Image:Design456_SplitObject.svg|32px]] Design456 Split a 3D object: Use this tool to split any 3D object.
 * [[Image:PartDesign_Fillet.svg|32px]] Design456 3D Fillet: Use this tool to create fillet.
 * [[Image:PartDesign_Chamfer.svg|32px]] Design456 3D Chamfer: Use this tool to create Chamfer.
 * [[Image:LoftBetweenFaces.svg|32px]] Design456 3D loft between faces: Use this tool to fill gap between faces by creating a loft between them.
 * [[Image:UnifySplitFuse2.svg|32px]] Design456 3D unify or split and then fuse: Use this tool create diff shapes. (Might be removed in the future)
 * [[Image:Design456_Colorize.svg|32px]] Design456 Colorize 3D object-faces: Use this colorize randomly 3D object (each face will get a random color).

Alignment tools

 * [[Image:Design456_PartMagnet.svg|32px]] Design456 Magnet: Use this tool align an object on another one by selecting the target face.
 * [[Image:Design456_AlignToPlane.svg|32px]] Design456 Align to plane: Use this tool to align object(s) on the surface of the plane.
 * [[Image:Design456_TopSideView.svg|32px]] Design456 Top Side View: Use this tool align camera and working plane to the Top side.
 * [[Image:Design456_BottomSideView.svg|32px]] Design456 Bottom Side View: Use this tool align camera and working plane to the Bottom side.
 * [[Image:LeftSideView.svg|32px]] Design456 Left Side View: Use this tool align camera and working plane to the Left side.
 * [[Image:Design456_RightSideView.svg|32px]] Design456 Right Side View: Use this tool align camera and working plane to the Right side.
 * [[Image:FrontSideView.svg|32px]] Design456 Front Side View: Use this tool align camera and working plane to the Front side.
 * [[Image:BackSideView.svg|32px]] Design456 Back Side View: Use this tool align camera and working plane to the Back side.
 * [[Image:Design456_MoveObject.svg|32px]] Design456 Move Object: Move, rotate 3D Objects.
 * [[Image:Design456_MoveObjectDetails.svg|32px]] Design456 Move Object in details: Move, rotate 3D and 2D Objects.
 * [[Image:Design456_SmartAlignment.svg|32px]] Design456 Align multiple objects: Do 9 alignments based on shapes bound boxes.

FreeCAD Direct Modeling
Main goal of Design456 is to provide Direct Modeling tool set. There are some tools that are partially finished or ready to use. Please try them and report your comments at the github pages. This wiki will be updated whenever I have time. It is almost certain that the github has more info than these pages (at the moment due to lack of time for updating the wiki pages)


 * smart Scale
 * smart DirectScale
 * smart Fillet
 * smart Chamfer
 * smart Extrude
 * smart Extrude Rotate
 * smart Edge Extend
 * smart Face Extend
 * smart Alignment
 * Extend Edge
 * Extend Face
 * Paint
 * Hole
 * Reset Placement
 * Simplify Edges
 * Simplify Faces

Note:

 * Please notice that there is no released version yet for this workbench. Intensively development is ongoing and bug is expected for the tools. Don't use it on serious document yet. Make a copy of you object and apply my tools. By that you know if it works for you or not without taking risk.

FreeCAD GUI Widgets toolkit
FreeCAD GUI Widgets toolkit is a work for providing easy to use Coin3D drawing GUI toolkit. The toolkit will make it easy to draw and should provide an interactive way to manipulate FreeCAD e objects. The simplicity of the toolkit should make it easy to use it.

Widgets gives you the ability to get callbacks, and are inspired by the well known multi-platform toolkit www.fltk.org. Almost all smart tools must have a widget from this toolkit.

Defeaturing workbench added to Design456
I added the workbench to my workbench and further development of the tools will continue. It was necessary to add the de-featuring tools to Design456. More tools must be added to the tool set in the feature.


 * To be continued!

Microelly2 Tools (Nurbs workbench) converted
I did the conversion for the Nurbs and fixed many bugs. In the beginning I added the project to my workbench, but since the tools are not working well, I remove it. The work is huge and there were places where I didn't know how to solve the issues. More time required and more understanding of Microlley's work is required that is why the work on the project is suspended. Some good works are done and you can find the project at: Github Nurb. Unfortunately, the code is more experimental code that is not made to be a tool in a workbench. Due to that, I wasn't able to retrieve all tools and it is hard to understand the tools. Most of the code are undocumented. There are good things there but not structured in a way a workbench requires.

Note: Due to what I described, further developing Nurbs workbench is not possible, at least for now.