private static void SetupEditingHandles(IFunctionFactory functionFactory)
 {
     functionFactory.Register <BoxHandleFunction>();
     functionFactory.Register <ArrowHandleFunction>();
     functionFactory.Register <AxisHandleFunction>();
     functionFactory.Register <PlaneHandleFunction>();
     functionFactory.Register <TriangleHandleFunction>();
     functionFactory.Register <CircleHandleFunction>();
     functionFactory.Register <Circle2DHandleFunction>();
     functionFactory.Register <Rectangle2DHandleFunction>();
     functionFactory.Register <Triangle2DEditingHandle>();
 }
        private void MapFunctions()
        {
            _functionFactory.Register <ArcRadiusFunction>();
            _functionFactory.Register <ArcAnglesFunction>();
            _functionFactory.Register <ArcRulesFunction>();
            _functionFactory.Register <CircleRadiusFunction>();
            TwoShapesConstraint(Constraint2DNames.ColinearFunction);
            TwoShapesConstraint(Constraint2DNames.ConcentricArcsFunction);
            TwoShapesConstraint(Constraint2DNames.ConcentricCircArcFunction);
            TwoShapesConstraint(Constraint2DNames.ConcentricCirclesFunction);
            TwoShapesConstraint(Constraint2DNames.EqualLengthFunction);
            TwoShapesConstraint(Constraint2DNames.EqualRadiusArcsFunction);
            TwoShapesConstraint(Constraint2DNames.EqualRadiusCircArcFunction);
            TwoShapesConstraint(Constraint2DNames.EqualRadiusCirclesFunction);

            _functionFactory.Register <ExternalAngleFunction>();
            OneShapesConstraint(Constraint2DNames.HorizontalFunction);
            _functionFactory.Register <InternalAngleFunction>();
            _functionFactory.Register <LineLengthFunction>();
            //_functionFactory.Register<CircleRadiusFunction>();
            _functionFactory.Register <P2LDistanceFunction>();
            _functionFactory.Register <P2LDistanceHorzFunction>();
            _functionFactory.Register <P2LDistanceVertFunction>();
            _functionFactory.Register <P2PDistanceFunction>();
            _functionFactory.Register <P2PDistanceHorzFunction>();
            _functionFactory.Register <P2PDistanceVertFunction>();
            TwoShapesConstraint(Constraint2DNames.ParallelFunction);
            TwoShapesConstraint(Constraint2DNames.PerpendicularFunction);
            TwoShapesConstraint(Constraint2DNames.PointOnArcFunction);
            TwoShapesConstraint(Constraint2DNames.PointOnArcMidpointFunction);
            //  TwoShapesConstraint(Constraint2DNames.PointOnArcMidpointFunction);
            TwoShapesConstraint(Constraint2DNames.PointOnCircleFunction);
            TwoShapesConstraint(Constraint2DNames.PointOnLineFunction);
            TwoShapesConstraint(Constraint2DNames.PointOnSegmentFunction);
            TwoShapesConstraint(Constraint2DNames.PointOnLineMidpointFunction);
            TwoShapesConstraint(Constraint2DNames.PointOnPointFunction);
            _functionFactory.Register <SymmetricPointsFunction>();

            _functionFactory.Register <PositionToCenterFunction>();

            TwoShapesConstraint(Constraint2DNames.TangentToArcFunction);
            TwoShapesConstraint(Constraint2DNames.TangentToCircleFunction);
            OneShapesConstraint(Constraint2DNames.VerticalFunction);
            OneShapesConstraint(Constraint2DNames.PositiveParameterFunction);
        }
        private static void SetupTools(IFunctionFactory functionFactory)
        {
            functionFactory.Register <MirrorPointFunction>();
            functionFactory.Register <MirrorLineFunction>();
            functionFactory.Register <MirrorPlaneFunction>();

            functionFactory.Register <HorizontalLineFunction>();
            functionFactory.Register <DottedLine>();
            functionFactory.Register <VerticalLineFunction>();

            functionFactory.Register <SubShapeFunction>();
            functionFactory.Register <FilletFunction>();
            functionFactory.Register <Fillet2DFunction>();
            functionFactory.Register <ExtrudeFunction>();
            functionFactory.Register <BooleanFunction>();
            functionFactory.Register <PointFunction>();
            functionFactory.Register <MeshFunction>();
            functionFactory.Register <CutFunction>();
            functionFactory.Register <PipeFunction>();
            functionFactory.Register <EvolvedFunction>();
            functionFactory.Register <SewingFunction>();
            functionFactory.Register <RevolveFunction>();
            functionFactory.Register <MakeFaceFunction>();
            functionFactory.Register <FaceFuseFunction>();
            functionFactory.Register <DimensionFunction>();
            functionFactory.Register <PointsDimensionFunction>();
            functionFactory.Register <OffsetFunction>();
            functionFactory.Register <Offset3DFunction>();
            functionFactory.Register <AngleDraftFunction>();
            functionFactory.Register <TrimFunction>();
        }
        private static void SetupConstraints(IFunctionFactory functionFactory)
        {
            functionFactory.Register <FixedSizeConstraint>();
            functionFactory.Register <CoLocationConstraint>();
            functionFactory.Register <RangeSizeConstraint>();

            functionFactory.Register <CircleRangeConstraint>();
            functionFactory.Register <RectangleWidthConstraint>();
            functionFactory.Register <RectangleHeightConstraint>();
//            functionFactory.Register<LineLengthConstraint>();
            functionFactory.Register <EdgeDistanceConstraint>();
            functionFactory.Register <PointToPointConstraint>();

            functionFactory.Register <EllipseMajorRadiusConstraint>();
            functionFactory.Register <EllipseMinorRadiusConstraint>();

            functionFactory.Register <TorusMinorRangeConstraint>();
            functionFactory.Register <TorusMajorRadiusConstraint>();

            functionFactory.Register <ConeHeightConstraint>();
            functionFactory.Register <ConeMinorRadiusConstraint>();
            functionFactory.Register <ConeMajorRadiusConstraint>();

            functionFactory.Register <CylinderRadiusConstraint>();
            functionFactory.Register <CylinderHeightConstraint>();

            functionFactory.Register <SphereRadiusConstraint>();

            functionFactory.Register <BoxHeightConstraint>();

            functionFactory.Register <ExtrudeHeightConstraint>();
            functionFactory.Register <CutHeightConstraint>();
        }
 private static void SetupSolverMarkers(IFunctionFactory functionFactory)
 {
     functionFactory.Register <SolverPointMarker>();
     functionFactory.Register <SolverLineMarker>();
     functionFactory.Register <LineMarker>();
 }
 private static void SetupSketch(IFunctionFactory functionFactory)
 {
     functionFactory.Register <SketchFunction>();
 }
 private static void SetupShapes(IFunctionFactory functionFactory)
 {
     functionFactory.Register <Arc3PFunction>();
     functionFactory.Register <ArrowFunction>();
     functionFactory.Register <BoxFunction>();
     functionFactory.Register <Box1PFunction>();
     functionFactory.Register <CircleFunction>();
     functionFactory.Register <RectangleFunction>();
     functionFactory.Register <ParallelogramFunction>();
     functionFactory.Register <LineTwoPointsFunction>();
     functionFactory.Register <WireTwoPointsFunction>();
     functionFactory.Register <LineHintsFunction>();
     functionFactory.Register <PointHintsFunction>();
     functionFactory.Register <EllipseFunction>();
     functionFactory.Register <SplineFunction>();
     functionFactory.Register <SphereFunction>();
     functionFactory.Register <SplinePathFunction>();
     functionFactory.Register <PolylineFunction>();
     functionFactory.Register <CylinderFunction>();
     functionFactory.Register <PlaneFunction>();
     functionFactory.Register <ConeFunction>();
     functionFactory.Register <TorusFunction>();
     functionFactory.Register <ArcFunction>();
     functionFactory.Register <PointFunction>();
     functionFactory.Register <TexturedShapeFunction>();
 }