예제 #1
0
 public SnappedSphere()
 {
     FeatureCurves    = new FeatureCurve[1];
     FeatureCurves[0] = ProjectionParallelCircle = new CircleFeatureCurve();
     ProjectionParallelCircle.Normal       = new TVec(0, 0, 1);
     ProjectionParallelCircle.NormalResult = new Vector3D(0, 0, 1);
 }
        public SnappedBendedGenCylinder()
        {
            FeatureCurves = new FeatureCurve[2];
            // top curve
            FeatureCurves[0] = TopFeatureCurve = new CircleFeatureCurve();

            // bottom curve
            FeatureCurves[1] = BottomFeatureCurve = new CircleFeatureCurve();
        }
예제 #3
0
 public SnappedCuboid()
 {
     FeatureCurves    = new FeatureCurve[6];
     FeatureCurves[0] = TopPlane = new RectangleFeatureCurve();
     FeatureCurves[1] = BotPlane = new RectangleFeatureCurve();
     FeatureCurves[2] = LftPlane = new RectangleFeatureCurve();
     FeatureCurves[3] = RgtPlane = new RectangleFeatureCurve();
     FeatureCurves[4] = FrnPlane = new RectangleFeatureCurve();
     FeatureCurves[5] = BakPlane = new RectangleFeatureCurve();
 }
예제 #4
0
        public SnappedCylindricalPrimitive()
        {
            FeatureCurves = new FeatureCurve[2];

            // top curve
            FeatureCurves[0] = TopFeatureCurve = new CircleFeatureCurve();

            // bottom curve
            FeatureCurves[1] = BottomFeatureCurve = new CircleFeatureCurve();
        }
예제 #5
0
        /// <summary>
        /// Checks weather two feature curves actually represent the same curve on the sketch (by
        /// checking which sketch curves they are snapped to).
        /// </summary>
        /// <param name="left">The first curve</param>
        /// <param name="right">The second curve</param>
        /// <returns><c>true</c> if and only if both <paramref name="left"/> and <paramref name="right"/>
        /// curves are snapped to the same object curve on the sketch.</returns>
        public static bool IsSameObjectCurve(this FeatureCurve left, FeatureCurve right)
        {
            Contract.Requires(left != null);
            Contract.Requires(right != null);
            Contract.Requires(left is CircleFeatureCurve || left is RectangleFeatureCurve);
            Contract.Requires(right is CircleFeatureCurve || right is RectangleFeatureCurve);

            var leftCircle  = left as CircleFeatureCurve;
            var rightCircle = right as CircleFeatureCurve;

            if (leftCircle != null && rightCircle != null)
            {
                return(leftCircle.SnappedTo != null &&
                       rightCircle.SnappedTo != null &&
                       leftCircle.SnappedTo == rightCircle.SnappedTo);
            }

            return(false); // TODO: Check this for rectangles too.
        }
예제 #6
0
 /// <summary>
 /// Checks if a feature curve is free, that is the opposite of snapped.
 /// </summary>
 /// <param name="featureCurve">The feature curve to check</param>
 /// <returns>The opposite of the <see cref="FeatureCurve.IsSnapped"/> method</returns>
 public static bool IsFree(this FeatureCurve featureCurve)
 {
     Contract.Requires(featureCurve != null);
     return(!featureCurve.IsSnapped());
 }