Instead of : #Shape2d.extrude(height)# we use #Shape2d.smartExtrude(height)#.
But then we can alter the extrusion by appying different edges, such as chamfers, fillets
and more exotic varieties.
For example, this will apply a chamfer to all edges :
#myShape2d.smartExtrude(height).chamfer( 2 )#
Which is equivalent to this more flexible alternative :
#myShape2d.smartExtrude(height).edges( Chamfer(2) )#
Because instead of [Chamfer](...), we can use any [SmartEdge], such as
[Fillet], [Cove] (an inverted fillet), [ProfileEdge]
[ProfileEdge] is very flexible, because the shape of the edge is governed by any _Path2d_.
There are four edges; two for the top and two for the bottom faces of the extrusion.
There are too for each, because the edges of _holes_ can be treated differently from the outside edges.
As we have already seen, we can apply a single [SmartEdge] to all four edges using :
#.edges( SmartEdge )#
Or we can alter two edges at a time using :
#.top() .bottom() .inside() .outside()#
Finally, we can alter a single edge using :
#.insideTop() .insideBottom() .outsideTop() .outsideBottom()#
All of these methods take a [SmartEdge] and return a new [SmartExtrusion].