improving linear extrude bevel curvature
This commit is contained in:
parent
781071fa34
commit
197babd9dc
2 changed files with 18 additions and 12 deletions
|
|
@ -30,21 +30,17 @@ either expressed or implied, of the FreeBSD Project.
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.Agg.VertexSource;
|
||||
using MatterHackers.DataConverters3D;
|
||||
using MatterHackers.DataConverters3D.UndoCommands;
|
||||
using MatterHackers.Localizations;
|
||||
using MatterHackers.MatterControl.PartPreviewWindow;
|
||||
using MatterHackers.Plugins.EditorTools;
|
||||
using MatterHackers.PolygonMesh;
|
||||
using MatterHackers.PolygonMesh.Processors;
|
||||
using MatterHackers.VectorMath;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace MatterHackers.MatterControl.DesignTools.Operations
|
||||
{
|
||||
|
|
@ -62,6 +58,9 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
|
|||
[Description("Bevel the top of the extrusion")]
|
||||
public bool BevelTop { get; set; } = false;
|
||||
|
||||
[EnumDisplay(Mode = EnumDisplayAttribute.PresentationMode.Buttons)]
|
||||
public ExpandStyles Style { get; set; } = ExpandStyles.Sharp;
|
||||
|
||||
[Description("The amount to inset the bevel")]
|
||||
public DoubleOrExpression BevelInset { get; set; } = 2;
|
||||
|
||||
|
|
@ -157,20 +156,26 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
|
|||
#if DEBUG
|
||||
if (BevelTop)
|
||||
{
|
||||
var curve4 = new Curve4Increment();
|
||||
curve4.Init(0, 0,
|
||||
0, (height - bevelStart)/2,
|
||||
bevelInset / 2, height - bevelStart,
|
||||
bevelInset, height - bevelStart,
|
||||
bevelSteps);
|
||||
bevel = new List<(double height, double inset)>();
|
||||
for (int i = 0; i < bevelSteps; i++)
|
||||
curve4.Vertex(out double x, out double y);
|
||||
for (int i = 1; i < bevelSteps; i++)
|
||||
{
|
||||
var heightRatio = i / (double)bevelSteps;
|
||||
var height2 = heightRatio * (height - bevelStart) + bevelStart;
|
||||
var insetRatio = (i + 1) / (double)bevelSteps;
|
||||
var inset = Easing.Sinusoidal.In(insetRatio) * -bevelInset;
|
||||
bevel.Add((height2, inset));
|
||||
curve4.Vertex(out x, out y);
|
||||
bevel.Add((bevelStart + y, -x));
|
||||
}
|
||||
|
||||
//bevel.Add((height, -bevelInset));
|
||||
}
|
||||
#endif
|
||||
if (this.GetVertexSource() != null)
|
||||
{
|
||||
Mesh = VertexSourceToMesh.Extrude(this.GetVertexSource(), height, bevel);
|
||||
Mesh = VertexSourceToMesh.Extrude(this.GetVertexSource(), height, bevel, InflatePathObject3D.GetJoinType(Style));
|
||||
if (Mesh.Vertices.Count == 0)
|
||||
{
|
||||
Mesh = null;
|
||||
|
|
@ -199,6 +204,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
|
|||
change.SetRowVisible(nameof(BevelStart), () => BevelTop);
|
||||
change.SetRowVisible(nameof(BevelInset), () => BevelTop);
|
||||
change.SetRowVisible(nameof(BevelSteps), () => BevelTop);
|
||||
change.SetRowVisible(nameof(Style), () => BevelTop);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit 94727927b558c1a93025d97c0e33f5eff7d4d289
|
||||
Subproject commit 0d0d08f1cb4c56b977354b246fd002deb98ba8f7
|
||||
Loading…
Add table
Add a link
Reference in a new issue