Esempio n. 1
0
 public ToolManager()
 {
     rulerTool = new RulerTool(this);
     angleTool = new AngleTool(this);
     selectTool = new SelectTool(this);
     pathTool = new PathTool(this);
     sketchTool = new SketchTool(this);
     contextMenuTool = new ContextMenuTool(this);
     pointInspectTool = new PointInspectTool(this);
 }
Esempio n. 2
0
void ATool()
{
    Handles.color = color;

    // Move Handles
    angle.from = Handles.PositionHandle(angle.from, Quaternion.identity);
    angle.p1   = Handles.PositionHandle(angle.p1, Quaternion.identity);
    angle.p2   = Handles.PositionHandle(angle.p2, Quaternion.identity);

    // Draw
    Handles.DrawLine(angle.from, angle.p1);
    Handles.DrawLine(angle.from, angle.p2);


    Vector3 n, s1, s2;

    s1 = (angle.p2 - angle.from).normalized;
    s2 = (angle.p1 - angle.from).normalized;
    n  = Vector3.Cross(s1, s2);

    float s1Length = Vector3.Distance(angle.from, angle.p1);
    float s2Length = Vector3.Distance(angle.from, angle.p2);
    float length   = AngleTool.Smallest(s1Length, s2Length);

    GUIStyle style = new GUIStyle();

    style.normal.textColor = color;
    style.fontSize         = 20;

    float a = Vector3.Angle(s1, s2);

    a = MTool.Round(a, decimals);
    char m = '°';

    Handles.DrawWireArc(angle.from, n, (angle.p2 - angle.from).normalized, a, length / 2);
    Handles.Label(angle.from, a.ToString() + m, style);
}
Esempio n. 3
0
    protected override void OnMouseDown(Vector3 pos, ICADObject sko)
    {
        var entity = sko as IEntity;

        if (constraint != null && entity == null)
        {
            Finish();
            return;
        }
        if (entity == null)
        {
            return;
        }

        if (e0 == null)
        {
            e0 = entity;
            if (entity.type == IEntityType.Line)
            {
                SpawnConstraint(() => new PointsDistance(DetailEditor.instance.currentSketch.GetSketch(), entity));
            }
            else
            if (entity.IsCircular())
            {
                SpawnConstraint(() => new Diameter(DetailEditor.instance.currentSketch.GetSketch(), entity));
            }
        }
        else
        {
            if (entity.type == IEntityType.Point || e0.IsCircular() && entity.type == IEntityType.Line)
            {
                var t = e0;
                e0     = entity;
                entity = t;
            }
            if (e0.type == IEntityType.Point)
            {
                if (entity.type == IEntityType.Point)
                {
                    SpawnConstraint(() => new PointsDistance(DetailEditor.instance.currentSketch.GetSketch(), e0, entity));
                }
                else if (entity.type == IEntityType.Line)
                {
                    SpawnConstraint(() => new PointLineDistance(DetailEditor.instance.currentSketch.GetSketch(), e0, entity));
                }
                else if (entity.IsCircular())
                {
                    var circle = entity as CircleEntity;
                    var arc    = entity as ArcEntity;
                    if (circle != null && circle.center.IsCoincidentWith(e0))
                    {
                        var c = SpawnConstraint(() => new Diameter(DetailEditor.instance.currentSketch.GetSketch(), circle));
                        c.showAsRadius = true;
                        e0             = null;
                    }
                    else
                    if (arc != null && arc.c.IsCoincidentWith(e0))
                    {
                        var c = SpawnConstraint(() => new Diameter(DetailEditor.instance.currentSketch.GetSketch(), arc));
                        e0 = null;
                    }
                    else
                    {
                        SpawnConstraint(() => new PointCircleDistance(DetailEditor.instance.currentSketch.GetSketch(), e0, entity));
                    }
                }
            }
            else if (e0.IsCircular())
            {
                if (entity.IsCircular())
                {
                    SpawnConstraint(() => new CirclesDistance(DetailEditor.instance.currentSketch.GetSketch(), e0, entity));
                }
            }
            else if (e0.type == IEntityType.Line)
            {
                if (entity.type == IEntityType.Line)
                {
                    SpawnConstraint(() => AngleTool.CreateConstraint(e0, entity));
                }
                else
                if (entity.IsCircular())
                {
                    SpawnConstraint(() => new LineCircleDistance(DetailEditor.instance.currentSketch.GetSketch(), e0, entity));
                }
            }
        }
    }