private static void TryAxisOnLine(List <Term> constraintTerms, IDictionary <IEditParameter, ParameterVariable[]> paramsToVars, PrimitiveEditConstraint constraint)
        {
            var axisOnLineConstraint = constraint as AxisOnLineConstraint;

            if (axisOnLineConstraint != null)
            {
                var axisPnt = GetVariables(paramsToVars, axisOnLineConstraint.AxisPoint);
                var axisDir = GetVariables(paramsToVars, axisOnLineConstraint.AxisDirection);

                var linePnt = axisOnLineConstraint.LinePoint.ToTermVector();
                var lineDir = axisOnLineConstraint.LineDirection.ToTermVector();

                constraintTerms.AddRange(VectorsParallelism3DTerms(axisDir, lineDir));
                constraintTerms.AddRange(PointOnLineTerms(axisPnt, linePnt, lineDir));
            }
        }
        private static void TryPointOnPlane(List <Term> constraintTerms, IDictionary <IEditParameter, ParameterVariable[]> paramsToVars, PrimitiveEditConstraint constraint)
        {
            var pointOnPlaneConstraint = constraint as PointOnPlaneConstraint;

            if (pointOnPlaneConstraint != null)
            {
                var pnt         = GetVariables(paramsToVars, pointOnPlaneConstraint.Point);
                var planePnt    = pointOnPlaneConstraint.PlanePoint.ToTermVector();
                var planeNormal = pointOnPlaneConstraint.PlaneNormal.ToTermVector();
                constraintTerms.Add(PointOnPlaneTerm(pnt, planePnt, planeNormal));
            }
        }