Design tools
This commit is contained in:
parent
69a77368b5
commit
907609b587
86 changed files with 4971 additions and 4664 deletions
|
|
@ -29,6 +29,7 @@ either expressed or implied, of the FreeBSD Project.
|
|||
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.DataConverters3D;
|
||||
using MatterHackers.MeshVisualizer;
|
||||
using MatterHackers.VectorMath;
|
||||
|
||||
|
|
@ -49,75 +50,74 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
MeshViewerToDrawWith.AfterDraw += MeshViewerToDrawWith_Draw;
|
||||
}
|
||||
|
||||
public override void SetPosition()
|
||||
public override void SetPosition(IObject3D selectedItem)
|
||||
{
|
||||
if (MeshViewerToDrawWith.HaveSelection)
|
||||
// draw the hight from the bottom to the bed
|
||||
AxisAlignedBoundingBox selectedBounds = selectedItem.GetAxisAlignedBoundingBox(Matrix4X4.Identity);
|
||||
|
||||
MeshSelectInfo meshSelectInfo = view3DWidget.CurrentSelectInfo;
|
||||
|
||||
var trackballWidget = MeshViewerToDrawWith.TrackballTumbleWidget;
|
||||
|
||||
switch (meshSelectInfo.HitQuadrant)
|
||||
{
|
||||
// draw the hight from the bottom to the bed
|
||||
AxisAlignedBoundingBox selectedBounds = MeshViewerToDrawWith.GetBoundsForSelection();
|
||||
case HitQuadrant.LB:
|
||||
{
|
||||
Vector3 cornerPoint = new Vector3(selectedBounds.minXYZ.x, selectedBounds.minXYZ.y, 0);
|
||||
double distBetweenPixelsWorldSpace = trackballWidget.GetWorldUnitsPerScreenPixelAtPosition(cornerPoint);
|
||||
|
||||
MeshSelectInfo meshSelectInfo = view3DWidget.CurrentSelectInfo;
|
||||
lines[0] = trackballWidget.GetScreenPosition(cornerPoint - new Vector3(distToStart * distBetweenPixelsWorldSpace, 0, 0));
|
||||
lines[1] = trackballWidget.GetScreenPosition(cornerPoint - new Vector3((distToStart + lineLength) * distBetweenPixelsWorldSpace, 0, 0));
|
||||
|
||||
switch (meshSelectInfo.HitQuadrant)
|
||||
{
|
||||
case HitQuadrant.LB:
|
||||
{
|
||||
Vector3 cornerPoint = new Vector3(selectedBounds.minXYZ.x, selectedBounds.minXYZ.y, 0);
|
||||
double distBetweenPixelsWorldSpace = MeshViewerToDrawWith.TrackballTumbleWidget.GetWorldUnitsPerScreenPixelAtPosition(cornerPoint);
|
||||
lines[2] = trackballWidget.GetScreenPosition(cornerPoint - new Vector3(0, distToStart * distBetweenPixelsWorldSpace, 0));
|
||||
lines[3] = trackballWidget.GetScreenPosition(cornerPoint - new Vector3(0, (distToStart + lineLength) * distBetweenPixelsWorldSpace, 0));
|
||||
}
|
||||
break;
|
||||
|
||||
lines[0] = MeshViewerToDrawWith.TrackballTumbleWidget.GetScreenPosition(cornerPoint - new Vector3(distToStart * distBetweenPixelsWorldSpace, 0, 0));
|
||||
lines[1] = MeshViewerToDrawWith.TrackballTumbleWidget.GetScreenPosition(cornerPoint - new Vector3((distToStart + lineLength) * distBetweenPixelsWorldSpace, 0, 0));
|
||||
case HitQuadrant.LT:
|
||||
{
|
||||
Vector3 cornerPoint = new Vector3(selectedBounds.minXYZ.x, selectedBounds.maxXYZ.y, 0);
|
||||
double distBetweenPixelsWorldSpace = trackballWidget.GetWorldUnitsPerScreenPixelAtPosition(cornerPoint);
|
||||
|
||||
lines[2] = MeshViewerToDrawWith.TrackballTumbleWidget.GetScreenPosition(cornerPoint - new Vector3(0, distToStart * distBetweenPixelsWorldSpace, 0));
|
||||
lines[3] = MeshViewerToDrawWith.TrackballTumbleWidget.GetScreenPosition(cornerPoint - new Vector3(0, (distToStart + lineLength) * distBetweenPixelsWorldSpace, 0));
|
||||
}
|
||||
break;
|
||||
lines[0] = trackballWidget.GetScreenPosition(cornerPoint - new Vector3(distToStart * distBetweenPixelsWorldSpace, 0, 0));
|
||||
lines[1] = trackballWidget.GetScreenPosition(cornerPoint - new Vector3((distToStart + lineLength) * distBetweenPixelsWorldSpace, 0, 0));
|
||||
|
||||
case HitQuadrant.LT:
|
||||
{
|
||||
Vector3 cornerPoint = new Vector3(selectedBounds.minXYZ.x, selectedBounds.maxXYZ.y, 0);
|
||||
double distBetweenPixelsWorldSpace = MeshViewerToDrawWith.TrackballTumbleWidget.GetWorldUnitsPerScreenPixelAtPosition(cornerPoint);
|
||||
lines[2] = trackballWidget.GetScreenPosition(cornerPoint + new Vector3(0, distToStart * distBetweenPixelsWorldSpace, 0));
|
||||
lines[3] = trackballWidget.GetScreenPosition(cornerPoint + new Vector3(0, (distToStart + lineLength) * distBetweenPixelsWorldSpace, 0));
|
||||
}
|
||||
break;
|
||||
|
||||
lines[0] = MeshViewerToDrawWith.TrackballTumbleWidget.GetScreenPosition(cornerPoint - new Vector3(distToStart * distBetweenPixelsWorldSpace, 0, 0));
|
||||
lines[1] = MeshViewerToDrawWith.TrackballTumbleWidget.GetScreenPosition(cornerPoint - new Vector3((distToStart + lineLength) * distBetweenPixelsWorldSpace, 0, 0));
|
||||
case HitQuadrant.RB:
|
||||
{
|
||||
Vector3 cornerPoint = new Vector3(selectedBounds.maxXYZ.x, selectedBounds.minXYZ.y, 0);
|
||||
double distBetweenPixelsWorldSpace = trackballWidget.GetWorldUnitsPerScreenPixelAtPosition(cornerPoint);
|
||||
|
||||
lines[2] = MeshViewerToDrawWith.TrackballTumbleWidget.GetScreenPosition(cornerPoint + new Vector3(0, distToStart * distBetweenPixelsWorldSpace, 0));
|
||||
lines[3] = MeshViewerToDrawWith.TrackballTumbleWidget.GetScreenPosition(cornerPoint + new Vector3(0, (distToStart + lineLength) * distBetweenPixelsWorldSpace, 0));
|
||||
}
|
||||
break;
|
||||
lines[0] = trackballWidget.GetScreenPosition(cornerPoint + new Vector3(distToStart * distBetweenPixelsWorldSpace, 0, 0));
|
||||
lines[1] = trackballWidget.GetScreenPosition(cornerPoint + new Vector3((distToStart + lineLength) * distBetweenPixelsWorldSpace, 0, 0));
|
||||
|
||||
case HitQuadrant.RB:
|
||||
{
|
||||
Vector3 cornerPoint = new Vector3(selectedBounds.maxXYZ.x, selectedBounds.minXYZ.y, 0);
|
||||
double distBetweenPixelsWorldSpace = MeshViewerToDrawWith.TrackballTumbleWidget.GetWorldUnitsPerScreenPixelAtPosition(cornerPoint);
|
||||
lines[2] = trackballWidget.GetScreenPosition(cornerPoint - new Vector3(0, distToStart * distBetweenPixelsWorldSpace, 0));
|
||||
lines[3] = trackballWidget.GetScreenPosition(cornerPoint - new Vector3(0, (distToStart + lineLength) * distBetweenPixelsWorldSpace, 0));
|
||||
}
|
||||
break;
|
||||
|
||||
lines[0] = MeshViewerToDrawWith.TrackballTumbleWidget.GetScreenPosition(cornerPoint + new Vector3(distToStart * distBetweenPixelsWorldSpace, 0, 0));
|
||||
lines[1] = MeshViewerToDrawWith.TrackballTumbleWidget.GetScreenPosition(cornerPoint + new Vector3((distToStart + lineLength) * distBetweenPixelsWorldSpace, 0, 0));
|
||||
case HitQuadrant.RT:
|
||||
{
|
||||
Vector3 cornerPoint = new Vector3(selectedBounds.maxXYZ.x, selectedBounds.maxXYZ.y, 0);
|
||||
double distBetweenPixelsWorldSpace = trackballWidget.GetWorldUnitsPerScreenPixelAtPosition(cornerPoint);
|
||||
|
||||
lines[2] = MeshViewerToDrawWith.TrackballTumbleWidget.GetScreenPosition(cornerPoint - new Vector3(0, distToStart * distBetweenPixelsWorldSpace, 0));
|
||||
lines[3] = MeshViewerToDrawWith.TrackballTumbleWidget.GetScreenPosition(cornerPoint - new Vector3(0, (distToStart + lineLength) * distBetweenPixelsWorldSpace, 0));
|
||||
}
|
||||
break;
|
||||
lines[0] = trackballWidget.GetScreenPosition(cornerPoint + new Vector3(distToStart * distBetweenPixelsWorldSpace, 0, 0));
|
||||
lines[1] = trackballWidget.GetScreenPosition(cornerPoint + new Vector3((distToStart + lineLength) * distBetweenPixelsWorldSpace, 0, 0));
|
||||
|
||||
case HitQuadrant.RT:
|
||||
{
|
||||
Vector3 cornerPoint = new Vector3(selectedBounds.maxXYZ.x, selectedBounds.maxXYZ.y, 0);
|
||||
double distBetweenPixelsWorldSpace = MeshViewerToDrawWith.TrackballTumbleWidget.GetWorldUnitsPerScreenPixelAtPosition(cornerPoint);
|
||||
|
||||
lines[0] = MeshViewerToDrawWith.TrackballTumbleWidget.GetScreenPosition(cornerPoint + new Vector3(distToStart * distBetweenPixelsWorldSpace, 0, 0));
|
||||
lines[1] = MeshViewerToDrawWith.TrackballTumbleWidget.GetScreenPosition(cornerPoint + new Vector3((distToStart + lineLength) * distBetweenPixelsWorldSpace, 0, 0));
|
||||
|
||||
lines[2] = MeshViewerToDrawWith.TrackballTumbleWidget.GetScreenPosition(cornerPoint + new Vector3(0, distToStart * distBetweenPixelsWorldSpace, 0));
|
||||
lines[3] = MeshViewerToDrawWith.TrackballTumbleWidget.GetScreenPosition(cornerPoint + new Vector3(0, (distToStart + lineLength) * distBetweenPixelsWorldSpace, 0));
|
||||
}
|
||||
break;
|
||||
}
|
||||
lines[2] = trackballWidget.GetScreenPosition(cornerPoint + new Vector3(0, distToStart * distBetweenPixelsWorldSpace, 0));
|
||||
lines[3] = trackballWidget.GetScreenPosition(cornerPoint + new Vector3(0, (distToStart + lineLength) * distBetweenPixelsWorldSpace, 0));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void MeshViewerToDrawWith_Draw(object drawingWidget, DrawEventArgs drawEvent)
|
||||
{
|
||||
if (MeshViewerToDrawWith.SelectedMeshGroup != null
|
||||
if (MeshViewerToDrawWith.Scene.HasSelection
|
||||
&& view3DWidget.meshViewerWidget.SnapGridDistance > 0
|
||||
&& view3DWidget.CurrentSelectInfo.DownOnPart)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue