|
|
| Menu location |
|---|
| Surface → Blend Curve |
| Workbenches |
| Surface |
| Default shortcut |
| None |
| Introduced in version |
| 0.21 |
| See also |
| None |
The Surface BlendCurve tool creates a Bezier curve between two edges, with desired continuity.
The base geometry can belong to curves created with the Draft Workbench or the Sketcher Workbench, but can also belong to solid objects such as those created with the Part Workbench.
Surface Blend Curve joining 2 edges with G3 continuity. Orange polygon represent the control points. Curvature comb (from Curves addon) is smooth at contact points.
A Surface BlendCurve object is derived from the basic Part Feature (Part::Feature class, through the Part::Spline subclass), therefore it shares all the latter's properties.
In addition to the properties described in Part Feature, the Surface BlendCurve object has the following properties in the Property View.
Blend Curve
LinkSub): First input edge.Integer): Geometric continuity valueFloat): Normalized parameter along edge; from 0.0(edge start) to 1.0(edge end).Float): Size of the tangent.LinkSub): Second input edge.Integer): Geometric continuity valueFloat): Normalized parameter along edge; from 0.0(edge start) to 1.0(edge end).Float): Size of the tangent.Base
Bool): it defaults to false; if set to true, it will show an overlay with the control points of the curve.See also: FreeCAD Scripting Basics.
The Blend Curve tool can be used in macros and from the Python Console by adding the Surface::FeatureBlendCurve object.
StartEdge and EndEdge properties of the object.import FreeCAD as App
import Draft
doc = App.newDocument()
points1 = [App.Vector(-20, -20, 0), App.Vector(-20, -8, 0), App.Vector(-17, 7, 0), App.Vector(-18, 25, 0)]
obj1 = Draft.make_bspline(points1)
points2 = [App.Vector(60, 26, 0), App.Vector(37, 4, 0), App.Vector(33, -20, 0)]
obj2 = Draft.make_bspline(points2)
doc.recompute()
bcurve = doc.addObject("Surface::FeatureBlendCurve","BlendCurve")
bcurve.StartEdge = (obj1, 'Edge1')
bcurve.EndEdge = (obj2, 'Edge1')
bcurve.EndParameter = 1.00
bcurve.StartSize = -5.00
bcurve.EndSize = -5.00
doc.recompute()