Merge pull request #2280 from larsbrubaker/design_tools

Design tools
This commit is contained in:
Lars Brubaker 2017-07-19 12:14:11 -07:00 committed by GitHub
commit d52e49ba7e
7 changed files with 59 additions and 25 deletions

View file

@ -92,7 +92,7 @@ namespace MatterHackers.MatterControl
while (attachedFaces.Count > 0)
{
Face faceToAdd = attachedFaces.Pop();
foreach (Vertex attachedVertex in faceToAdd.Vertices())
foreach (IVertex attachedVertex in faceToAdd.Vertices())
{
foreach (Face faceAttachedToVertex in attachedVertex.ConnectedFaces())
{
@ -107,7 +107,7 @@ namespace MatterHackers.MatterControl
var faceVertices = new List<IVertex>();
foreach (FaceEdge faceEdgeToAdd in faceAttachedToVertex.FaceEdges())
{
var newVertex = meshFromCurrentVolume.CreateVertex(faceEdgeToAdd.firstVertex.Position, CreateOption.CreateNew, SortOption.WillSortLater);
var newVertex = meshFromCurrentVolume.CreateVertex(faceEdgeToAdd.FirstVertex.Position, CreateOption.CreateNew, SortOption.WillSortLater);
faceVertices.Add(newVertex);
}
@ -205,7 +205,7 @@ namespace MatterHackers.MatterControl
// figure out which area one or more of the vertices are in add the face to the right new mesh
foreach (FaceEdge faceEdge in face.FaceEdges())
{
Vector2 position = new Vector2(faceEdge.firstVertex.Position.x, faceEdge.firstVertex.Position.y);
Vector2 position = new Vector2(faceEdge.FirstVertex.Position.x, faceEdge.FirstVertex.Position.y);
position += renderOffset;
position *= scaleFactor;
@ -216,7 +216,7 @@ namespace MatterHackers.MatterControl
var faceVertices = new List<IVertex>();
foreach (FaceEdge faceEdgeToAdd in face.FaceEdges())
{
var newVertex = discreteMeshes[areaIndex].CreateVertex(faceEdgeToAdd.firstVertex.Position);
var newVertex = discreteMeshes[areaIndex].CreateVertex(faceEdgeToAdd.FirstVertex.Position);
faceVertices.Add(newVertex);
}

View file

@ -55,25 +55,43 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
this.item = item;
FlowLayoutWidget mainContainer = new FlowLayoutWidget(FlowDirection.TopToBottom);
FlowLayoutWidget tabContainer = new FlowLayoutWidget(FlowDirection.TopToBottom)
{
HAnchor = HAnchor.AbsolutePosition,
Visible = true,
Width = theme.WhiteButtonFactory.FixedWidth
};
mainContainer.AddChild(tabContainer);
FlowLayoutWidget behavior3DTypeButtons = new FlowLayoutWidget();
mainContainer.AddChild(behavior3DTypeButtons);
Button changeColorButton = theme.textImageButtonFactory.Generate("Color".Localize());
changeColorButton.Margin = new BorderDouble(5);
changeColorButton.HAnchor = HAnchor.ParentRight;
// put in the button for making the behavior solid
Button solidBehaviorButton = theme.textImageButtonFactory.Generate("Solid".Localize());
solidBehaviorButton.Margin = new BorderDouble(5);
Random rand = new Random();
changeColorButton.Click += (s, e) =>
solidBehaviorButton.Click += (s, e) =>
{
item.Color = new RGBA_Bytes(rand.Next(255), rand.Next(255), rand.Next(255));
item.BehaviorType = Behavior3DTypes.Solid;
view3DWidget.Invalidate();
};
tabContainer.AddChild(changeColorButton);
behavior3DTypeButtons.AddChild(solidBehaviorButton);
// put in the button for making the behavior a hole
Button holeBehaviorButton = theme.textImageButtonFactory.Generate("Hole".Localize());
holeBehaviorButton.Margin = new BorderDouble(5);
holeBehaviorButton.Click += (s, e) =>
{
item.BehaviorType = Behavior3DTypes.Hole;
view3DWidget.Invalidate();
};
behavior3DTypeButtons.AddChild(holeBehaviorButton);
// put in the button for making the behavior support
Button supportBehaviorButton = theme.textImageButtonFactory.Generate("Support".Localize());
supportBehaviorButton.Margin = new BorderDouble(5);
supportBehaviorButton.Click += (s, e) =>
{
item.BehaviorType = Behavior3DTypes.Support;
view3DWidget.Invalidate();
};
behavior3DTypeButtons.AddChild(supportBehaviorButton);
return mainContainer;
}

View file

@ -380,9 +380,8 @@ namespace MatterHackers.MeshVisualizer
faceData.Textures.Add(BedImage);
foreach (FaceEdge faceEdge in face.FaceEdges())
{
FaceEdgeTextureUvData edgeUV = FaceEdgeTextureUvData.Get(faceEdge);
edgeUV.TextureUV.Add(new Vector2((displayVolumeToBuild.x / 2 + faceEdge.firstVertex.Position.x) / displayVolumeToBuild.x,
(displayVolumeToBuild.y / 2 + faceEdge.firstVertex.Position.y) / displayVolumeToBuild.y));
faceEdge.SetUv(0, new Vector2((displayVolumeToBuild.x / 2 + faceEdge.FirstVertex.Position.x) / displayVolumeToBuild.x,
(displayVolumeToBuild.y / 2 + faceEdge.FirstVertex.Position.y) / displayVolumeToBuild.y));
}
}
}
@ -613,6 +612,14 @@ namespace MatterHackers.MeshVisualizer
Scene.HasSelection && (object3D == Scene.SelectedItem || Scene.SelectedItem.Children.Contains(object3D));
RGBA_Bytes drawColor = object3D.Color;
if(object3D.BehaviorType == Behavior3DTypes.Support)
{
drawColor = new RGBA_Bytes(RGBA_Bytes.Yellow, 120);
}
else if(object3D.BehaviorType == Behavior3DTypes.Hole)
{
drawColor = new RGBA_Bytes(RGBA_Bytes.Gray, 120);
}
if (drawColor.Alpha0To1 == 0)
{

View file

@ -1914,7 +1914,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
foreach (Face face in lowestVertex.ConnectedFaces())
{
double biggestAngleToFaceVertex = double.MinValue;
foreach (Vertex faceVertex in face.Vertices())
foreach (IVertex faceVertex in face.Vertices())
{
if (faceVertex != lowestVertex)
{
@ -1938,7 +1938,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
double maxDistFromLowestZ = 0;
List<Vector3> faceVertexes = new List<Vector3>();
foreach (Vertex vertex in faceToLayFlat.Vertices())
foreach (IVertex vertex in faceToLayFlat.Vertices())
{
Vector3 vertexPosition = Vector3.Transform(vertex.Position, objectToWold);
faceVertexes.Add(vertexPosition);
@ -2394,7 +2394,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
// change the color to be the right thing
GLMeshTrianglePlugin glMeshPlugin = GLMeshTrianglePlugin.Get(meshAndTransform.MeshData, (faceEdge) =>
{
Vector3 normal = faceEdge.containingFace.normal;
Vector3 normal = faceEdge.ContainingFace.normal;
normal = Vector3.TransformVector(normal, meshAndTransform.Matrix).GetNormal();
VertexColorData colorData = new VertexColorData();

View file

@ -71,8 +71,8 @@ namespace MatterHackers.MatterControl.Slicing
double maxZ = double.MinValue;
foreach (FaceEdge faceEdge in face.FaceEdges())
{
minZ = Math.Min(minZ, faceEdge.firstVertex.Position.z);
maxZ = Math.Max(maxZ, faceEdge.firstVertex.Position.z);
minZ = Math.Min(minZ, faceEdge.FirstVertex.Position.z);
maxZ = Math.Max(maxZ, faceEdge.FirstVertex.Position.z);
}
for (int layerIndex = 0; layerIndex < layerCount; layerIndex++)

View file

@ -4324,3 +4324,12 @@ Translated:Sign in to access your cloud printer profiles.\n\nOnce signed in you
English:Updating Mesh
Translated:Updating Mesh
English:Solid
Translated:Solid
English:Hole
Translated:Hole
English:Support
Translated:Support

@ -1 +1 @@
Subproject commit 0ae38f47898e67ca5d948fdfdf06877185caf159
Subproject commit 9dba4cbf615723600ed3b7b3be7181f8baa4f828