All Projects → chbergmann → CurvedShapesWorkbench

chbergmann / CurvedShapesWorkbench

Licence: LGPL-3.0 license
FreeCAD Workbench for creating 3D shapes from 2D curves

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to CurvedShapesWorkbench

ThreadProfile
Create 2d thread profile for sweeping along helix in Part or Part Design workbenches
Stars: ✭ 15 (-69.39%)
Mutual labels:  addons, freecad, workbench
Rocket
FreeCAD Rocketry Workbench
Stars: ✭ 29 (-40.82%)
Mutual labels:  addons, freecad, workbench
MarzWorkbench
FreeCAD Workbench for guitar design
Stars: ✭ 40 (-18.37%)
Mutual labels:  addons, freecad, workbench
Lattice2
FreeCAD workbench about arrays of all sorts and kinds, and local coordinate systems
Stars: ✭ 40 (-18.37%)
Mutual labels:  freecad, workbench
Addon Motioneye
motionEye - Home Assistant Community Add-ons
Stars: ✭ 122 (+148.98%)
Mutual labels:  addons
Odoo Product Configurator
Odoo modules enabling dynamic product configuration
Stars: ✭ 100 (+104.08%)
Mutual labels:  addons
Addon Grocy
Grocy - Home Assistant Community Add-ons
Stars: ✭ 97 (+97.96%)
Mutual labels:  addons
Sublime Boxy
It Was the Most Hackable Theme for Sublime Text 3
Stars: ✭ 1,328 (+2610.2%)
Mutual labels:  addons
Addon Node Red
Node-RED - Home Assistant Community Add-ons
Stars: ✭ 210 (+328.57%)
Mutual labels:  addons
Stash
Stash allows you to stash text and snippets of code for reuse throughout your templates.
Stars: ✭ 198 (+304.08%)
Mutual labels:  addons
Addon Ssh
SSH & Web Terminal - Home Assistant Community Add-ons
Stars: ✭ 114 (+132.65%)
Mutual labels:  addons
Addon Aircast
AirCast - Home Assistant Community Add-ons
Stars: ✭ 100 (+104.08%)
Mutual labels:  addons
Addon Tasmoadmin
TasmoAdmin - Home Assistant Community Add-ons
Stars: ✭ 130 (+165.31%)
Mutual labels:  addons
Flixel Addons
Additional classes for HaxeFlixel
Stars: ✭ 97 (+97.96%)
Mutual labels:  addons
Addon Vscode
Visual Studio Code - Home Assistant Community Add-ons
Stars: ✭ 201 (+310.2%)
Mutual labels:  addons
Queue
Asynchronous Job Queue
Stars: ✭ 95 (+93.88%)
Mutual labels:  addons
Ttt2
Trouble in Terrorist Town 2 (Advanced Update) for Garry's Mod (gmod)
Stars: ✭ 113 (+130.61%)
Mutual labels:  addons
Foxygestures
Mouse gestures for Firefox
Stars: ✭ 145 (+195.92%)
Mutual labels:  addons
Startpages
Startpages for your favorite browser!
Stars: ✭ 109 (+122.45%)
Mutual labels:  addons
Addons
Official add-ons and tools for Vanilla Forums.
Stars: ✭ 104 (+112.24%)
Mutual labels:  addons

Curved Shapes Workbench

Total alerts Language grade: Python
> deutsch <

A FreeCAD External Workbench for creating 3D shapes from 2D curves

Installation

Automatic Installation

FreeCAD Addon manager status
Note: This is the recommended way to install this workbench.
The Curved Shapes workbench is available through the builtin FreeCAD Addon Manager. Once installed all that is needed is to restart FreeCAD and the workbench will be available in the workbench dropdown list menu.

Manual Installation

cd ~/FreeCAD/Mod/ 
git clone https://github.com/chbergmann/CurvedShapesWorkbench.git

When you restart FreeCAD, "Curved Shapes" workbench should now show up in the workbench dropdown list.

Video Tutorial

JOKO engineering made a great tutorial

"FreeCAD Curved Shapes WB: Make Insane and Exact Surfaces Quick! |JOKO ENGINEERING|"

Tools

curvedArrayIcon Curved Array

Creates an array and resizes the items in the bounds of one or more hull curves. In this example, the orange base shape is rescaled in the bounds of the red and violet hullcurves. The curves do not have to be connected.
The hullcurves should lie on or parallel to the XY- XZ- or YZ- plane.

WingExample

The first curve that you select for CurvedArray creation will be the item that is swept and resized in the bounds of the other selected curves.

Parameters

  • Base: The object to make an array from
  • Hullcurves: List of one or more bounding curves
  • Axis: Direction axis of the Base shape
  • Items: Nr. of array items
  • Positions: Array of position for each rib (as floats from 0.0 to 1.0) -- overrides Items
  • OffsetStart: Offset of the first part in Axis direction
  • OffsetEnd: Offset of the last part from the end in opposite Axis direction
  • Twist: Applies a rotation around Axis to the array items. Only used if Twists is an empty array
  • Twists: Array of rotation angles for each rib. If empty, parameter Twist is used.
  • Surface: make a surface over the array items
  • Solid: make a solid if Base is a closed shape
  • Distribution: Algorithm for distance between array elements. Default is 'linear'. Also selectable: parabolic (x²), x³, sinusoidal, elliptic
  • DistributionReverse: Reverses the direction of the Distribution algorithm

Distribution Linear
Linear

Distribution parabolic
parabolic

Distribution x³
x³

Distribution sinusoidal
sinusoidal

Distribution elliptic
elliptic
If you create a surface with the Curved Array, a different distribution may give you better results.

If you create an elliptic wing, distribution elliptic would be the best solution. If you create the Curved Array inside a half circle, sinusoidal is best. If the hullcurves are created from simple spline curves, parabolic or x³ may give you the best results. If you are unsure, choose linear.

If you create a surface or solid and it looks weird, this may be caused by very small items at the start and end of the CurvedArray. In this case, enter values bigger than 0 for Start Offset and End Offset. This will create bigger start and end items located not at the very end.

To resolve a CurvedArray item to a compound of single objects, go to the Part workbench. In the Part workbench, select Part → Compound → Explode compound

curvedPathArrayIcon Curved Path Array

Creates an array, sweeps the elements around a path curve, and resizes the items in the bounds of optional hullcurves.
The items created will be perpendicular to the sweep path.
There is a twist parameter to let the items rotate around the sweep path. If you do not use hullcurves and twist, this tool is similar to the Path Array tool in the Draft workbench.

CurvedPathArray

The first curve that you select for Curved Path Array creation will be the base item. The second selected curve will become the path. All curves selected after that will be the hullcurves.

Parameters

  • Base: The object to make an array from
  • Path: Sweep path
  • Hullcurves: List of one or more bounding curves
  • Items: Nr. of array items
  • OffsetStart: Offset of the first part from the beginning of the sweep path
  • OffsetEnd: Offset of the last part from the end in opposite direction
  • Twist: Rotate in degrees around the sweep path
  • Surface: make a surface over the array items
  • Solid: make a solid if Base is a closed shape
  • ScaleX: Scale by hullcurves in X direction
  • ScaleY: Scale by hullcurves in Y direction
  • ScaleZ: Scale by hullcurves in Z direction

The parameters ScaleX, ScaleY and ScaleZ have been added because you may want to rescale the items only in one direction, but the hullcurves normally cover 2 or three room directions.

curvedSegmentIcon Curved Segment

Interpolates between two 2D curves. The interpolated curves can be resized in the bounds of some hullcurves.

CurvedSegment CurvedSegment2

Select two 2D shapes first. The curved segment will be created between them. If you want to use hullcurves, select them also. Then create the Curved Segment.

Parameters

  • Shape1: The first object of the segment
  • Shape2: The last object of the segment
  • Hullcurves: List of one or more bounding curves in XY, XZ or YZ plane (optional)
  • NormalShape1: Direction axis of Shape1 (auto computed)
  • NormalShape2: Direction axis of Shape2 (auto computed)
  • Items: Nr. of items between the segments
  • makeSurface: make a surface over the array items
  • makeSolid: make a solid if Base is a closed shape
  • InterpolationPoints: ignored if Shape1 and Shape2 have the same number of edges and poles. Otherwise all edges will be split (discretized) into this number of points
  • Twist: Compensates a rotation between Shape1 and Shape2
  • TwistReverse: Reverses the rotation of one Shape
  • Distribution: Algorithm for distance between array elements. Default is 'linear'. Also selectable: parabolic (x²), x³, sinusoidal, elliptic
  • DistributionReverse: Reverses the direction of the Distribution algorithm

CornerShapeIcon Interpolated Middle

Interpolates a 2D shape into the middle between two 2D curves. The base shapes can be connected to a shape with a sharp corner.

InterpolatedMiddle2 InterpolatedMiddle

Parameters

  • Shape1: The first object of the segment
  • Shape2: The last object of the segment
  • NormalShape1: Direction axis of Shape1 (auto computed)
  • NormalShape2: Direction axis of Shape2 (auto computed)
  • makeSurface: connect Shape1 and Shape2 with a surface over the interpolated middle
  • makeSolid: make a solid if Shape1 and Shape2 are closed shapes
  • InterpolationPoints: ignored if Shape1 and Shape2 have the same number of edges and poles. Otherwise all edges will be split (discretized) into this number of points
  • Twist: Compensates a rotation between Shape1 and Shape2
  • TwistReverse: Reverses the rotation of one Shape

surfaceCutIcon Surface Cut

Cuts a surface to get the outline curve or a face.
This tool is similar to Cross-Sections in the Part workbench, but it is fully parametric and has an option to reduce the complexity of the output curve. It tries to remove overlapping edges.

SurfaceCut

Parameters

  • Surfaces: List of objects with a surface
  • Normal: Normal vector of the cut plane
  • Position: Position of the cut plane relative to Surfaces
  • Face: create a face
  • Simplify: reduce the number of poles in complex curves. If true, an approximation curve is calculated. This may drastically reduce the number of points in some curves. This speeds up the usage of the result curve. In special cases this may not work as expected.

NotchConnectorIcon Notch Connector

Cuts notches into overlapping objects to make it connectable to each other.

NotchConnector

Select two objects, then select Notch Connector. Two NotchConnector objects will be created.

Parameters

  • Base: Object to cut
  • Tools: The object that cuts Base
  • CutDirection: The direction of the cut (autocomputed)
  • CutDepth: The depth of the cut in percent
  • ShiftLength: Shift the tools by ShiftLength, then cut. If ShiftLength is not zero, it overrides CutDepth and uses another algorithm.

Troubleshooting

If the notches are cut at the wrong place, edit the parameter CutDirection manually. Avoid the value 0,0,0 since this will autocompute new values.

alt text Lasercutter Techdraw Export

This tool has been moved to the macro LasercutterSVGExport
Install it from the Macros tab in the resources manager.

Examples

Example designs in script format for testing and presenting this workbench.

Horten_HIX_Icon Horten H IX

A python script that creates the shape of the Horten Ho 229 (also called Horten H IX), a stealth fighter that has been build in Germany in 1944.

FlyingWingS800-sIcon Flying Wing S800

A python script that creates the shape of a flying wing RC model.

S800

Faster Better Corsair |JOKO ENGINEERING|

"FreeCAD Curved Surfaces Workbench in Action: Faster Better Corsair |JOKO ENGINEERING|"

Discussion

Please offer feedback or connect with the developer via the dedicated FreeCAD forum thread.

License

GNU Lesser General Public License v3.0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].