|
Menu location |
---|
Surface → Blend Curve |
Workbenches |
Surface |
Default shortcut |
None |
Introduced in version |
0.21 |
See also |
None |
Surface Blend Curve 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 Blend Curve 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 Blend Curve has the following properties in the property editor.
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()