Package cc.sketchchair.sketch

Examples of cc.sketchchair.sketch.SliceSlot


      SlicePlane currentPlaneY = planesToSlice.get(j);
    //LOGGER.info(currentPlaneY.getPlane().toString());
      Vec2D slotPos = new Vec2D(vecPosStart.x, vecPosStart.y);
      Vec2D slotDir = new Vec2D(vecDir.x, vecDir.y);

      SliceSlot slot = new SliceSlot(slicePlane, slotPos, slotDir,
          (float) (pLen / crossSliceSelection.teethCount),
          (float) (pLen / crossSliceSelection.teethCount),
          SETTINGS.materialThickness,
          (int) (crossSliceSelection.teethCount), false,
          SliceSlot.SLOT);
     
     
     

      slot.setFingerTollerance(-(crossSliceSelection.fingerTollerance / SETTINGS.scale));

      if(crossSliceSelection.type == CrossSliceSelection.PLANE_ON_EDGE)
        slot.setOnEdge(new Vec2D(-1, 0));

      currentPlaneY.getSketch().getSketchShapes().getSlots().add(slot);
     
     
      Vec2D slotPosSlice = new Vec2D(sign*currentPlaneY.getPlane().z,0);
      Vec2D slotDirSlice = new Vec2D(1, 0);
     
      SliceSlot slotSlice = new SliceSlot(slicePlane, slotPosSlice, slotDirSlice,
          (float) (pLen / crossSliceSelection.teethCount),
          (float) (pLen / crossSliceSelection.teethCount),
          SETTINGS.materialThickness,
          (int) (crossSliceSelection.teethCount), true,
          SliceSlot.SLOTS_AND_FINGER);
     
     
      SliceSlot slotSlice2 = new SliceSlot(slicePlane, slotPosSlice, slotDirSlice,
          (float) (pLen),
          (float) (pLen),
          SETTINGS.materialThickness,
          (int) (1), true,
          SliceSlot.SLOTS_AND_FINGER);
View Full Code Here


        bottomLine.add(new SketchPoint(currentPlaneY.getPlane().z,
            crossSliceSelection.getSlatHeight()));

        if (j != 0 && j != planesToSlice.size() - 1) {

          SliceSlot slot = new SliceSlot(slicePlane, new Vec2D(
              vecPos.x, vecPos.y), new Vec2D(vecDir.x, vecDir.y),
              (crossSliceSelection.getSlatHeight() / 2),
              SETTINGS.materialThickness);
          //slot.setOnEdge(new Vec2D(0, 1));
          currentPlaneY.getSketch().getSlots().add(slot);

          slot = new SliceSlot(currentPlaneY, new Vec2D(
              currentPlaneY.getPlane().z,
              (crossSliceSelection.getSlatHeight() / 2)),
              new Vec2D(1, 0),
              (crossSliceSelection.getSlatHeight() / 2),
              SETTINGS.materialThickness);
View Full Code Here

          } else {
            offsetToEdge = -1;
          }

          if (!currentPlaneY.guide) {
            SliceSlot slot = new SliceSlot(slicePlane, slotPos,
                slotDir, (-splineWidth - offsetToEdge),
                SETTINGS.materialThickness);
            slot.swap();
            slot.setOnEdge(new Vec2D(0, 1));
           
if(crossSliceSelection.getCapType() != CrossSliceSelection.CAP_INSIDE)
  slot.makesEdge = true;

            currentPlaneY.getSketch().getSlots().add(slot);
          }

          if (!currentPlaneY.guide) {
            if (!crossSliceSelection.flipSide) {
              if (j != 0 && j != planesToSlice.size() - 1 ){
                float yPosSlot = intersectX.y + (splineWidth);
                SliceSlot slot = new SliceSlot(
                    currentPlaneY,
                    new Vec2D(intersectX.x,yPosSlot),
                    new Vec2D(-1, 0), splineWidth,
                    SETTINGS.materialThickness);
                if(crossSliceSelection.getCapType() != CrossSliceSelection.CAP_INSIDE)
                  slot.makesEdge = true;
                        slot.setOnEdge(new Vec2D(0,-1)); // these slots start from the middle so this doesn't work, flip slots.

                       
                    //LOGGER.info("X " + slot.getPos().x + " Y " + slot.getPos().y );

                   
                slicePlane
                    .getSketch()
                    .getSlots()
                    .add(slot);
              }
            } else {
              if (j != 0 && j != planesToSlice.size() - 1){

                SliceSlot slot = new SliceSlot(
                    currentPlaneY,
                    new Vec2D(intersectX.x,
                        intersectX.y
                            - (splineWidth)),
                    new Vec2D(1, 0), splineWidth,
                    SETTINGS.materialThickness);
                slot.setOnEdge(new Vec2D(0, -1));
                if(crossSliceSelection.getCapType() != CrossSliceSelection.CAP_INSIDE)
                  slot.makesEdge = true;
                slicePlane
                    .getSketch()
                    .getSlots()
                    .add(slot);
               
              }
            }
          }

          // if(topIntersect != null){

          Vec3D tempVec = new Vec3D(bottomIntersect.x,
              bottomIntersect.y, 0);
          tempVec = slicePlane.getWorldPosIntersect(tempVec);

          if (SETTINGS.DEBUG) {
            currentPlaneY.debugIntersectionPoints.add(slotPos);
            currentPlaneY.debugIntersectionPointsTop.add(tempPos
                .scale(tempDir));
            currentPlaneY.debugIntersectionPointsBottom.add(tempPos
                .scale(tempDir.scale(-1)));
          }


          topLine.add(new SketchPoint(bottomIntersect));
          bottomLine.add(new SketchPoint(topIntersect));
          }
        }
        }

        //}

        /* ACROSS SKETCHPATH */

        /**
         * Find intersections across cross section
         *  
         *   <pre>
         *   currentPath
         *     ^
         *     |
         *    ------   x1 -> (topIntersect)
         *   |       \/ -------------------------> (crossSliceSelection)
         *   |       /\
         *   |      / /
         *    \    /  \
         *      \_/____\
         *       /
         *      x2 -> (bottomIntersect)
         *   </pre>
         */

        else if (spline instanceof SketchPath) {

          SketchPath currentPath = (SketchPath) spline;
         
          vecPos = new Vec3D(vecPos.x, vecPos.y,currentPlaneY.getPlane().z);
         
          //always crop to shape as we work out the correct shape earlier
          List<List<Vec2D>> points = currentPlaneY.getIntersection(
              slicePlane, true,
              currentPath);

          if (points != null && points.size() > 1) {

            Vec2D topIntersect = null;
            Vec2D bottomIntersect = null;
            Vec2D topIntersectY = null;
            Vec2D bottomIntersectY = null;
            Vec2D topIntersectX = null;
            Vec2D bottomIntersectX = null;
            float dist = 0;
            float neartestDist = -1;
            Vec2D vecStart = new Vec2D(vecPos.x, vecPos.y);

            //find the closest point
            for (int k = 0; k < points.size(); k++) {
             
              Vec2D vec2d = (Vec2D) points.get(k).get(0);
              Vec2D vec2dX = (Vec2D) points.get(k).get(1);
              Vec3D vec3d = new Vec3D(vec2dX.x, vec2dX.y,vecPos.z);
              float d = vecStart.distanceTo(vec2dX);

              //Display intersects in debug mode
              if (SETTINGS.DEBUG) {
                currentPlaneY.debugIntersectionPoints
                    .add(vec2dX);
                currentPlaneY.debugIntersetStart = new Vec2D(
                    vecPos.x, vecPos.y);
              }

              if (d < neartestDist || neartestDist == -1) {
                neartestDist = d;
                topIntersect = vec2d;
                topIntersectX = vec2dX;
              }

            }

            float MIN_DUPLICATE_DIST = 2;

            //Remove the closest point
            for (int k = 0; k < points.size(); k++) {
              Vec2D vec2d = (Vec2D) points.get(k).get(0);
              Vec2D vec2dx = (Vec2D) points.get(k).get(1);

              float distToLastIntersect = topIntersectX
                  .distanceTo(vec2dx);

              if (vec2d.equals(topIntersect)
                  || distToLastIntersect < MIN_DUPLICATE_DIST) {
                points.remove(k);
                k--;
              }

            }

            //find the next closest intersect!
            neartestDist = -1;
            for (int k = 0; k < points.size(); k++) {
              Vec2D vec2d = (Vec2D) points.get(k).get(0);
              Vec2D vec2dX = (Vec2D) points.get(k).get(1);

              Vec3D vec3d = new Vec3D(vec2d.x, vec2d.y,
                  currentPlaneY.getPlane().z);
              float d = vecStart.distanceTo(vec2dX);

              if ((d < neartestDist && vec2d != topIntersect)
                  || neartestDist == -1) {

                neartestDist = d;
                bottomIntersect = vec2d;
                bottomIntersectX = vec2dX;
              }
            }

           
            /**
             * Lets Fix any intersects that are swapped around
             */
            if ((bottomIntersect != null && topIntersect != null)
                && bottomIntersect.y < topIntersect.y) {
              Vec2D topIntersectTemp = topIntersect.copy();
              Vec2D topIntersectXTemp = topIntersectX.copy();

              topIntersect = bottomIntersect;
              topIntersectX = bottomIntersectX;

              bottomIntersect = topIntersectTemp;
              bottomIntersectX = topIntersectXTemp;

            }

           
            /**
             * Are slats a set height?
             */
            if (crossSliceSelection.getSlatHeight() != 0) {
              bottomIntersect = topIntersect.add(0,
                  crossSliceSelection.getSlatHeight());
              bottomIntersectX = topIntersectX.add(0,
                  crossSliceSelection.getSlatHeight());
            }

            if (SETTINGS.DEBUG) {
              currentPlaneY.debugIntersectionPointsTop
                  .add(topIntersectX);
              currentPlaneY.debugIntersectionPointsBottom
                  .add(bottomIntersectX);

            }

            //if we have found both intersects then add them to the outline
            if (bottomIntersect != null && topIntersect != null) {
              float len = bottomIntersect
                  .distanceTo(topIntersect);

              if (!currentPlaneY.guide) {

                if (crossSliceSelection.flipSide) {
                  Vec2D slotPos = bottomIntersectX.copy();
                  Vec2D dirPerp = new Vec2D(vecDir.x,
                      vecDir.y);
                  dirPerp.rotate((float) (Math.PI / 2));
                  SliceSlot slot = new SliceSlot(slicePlane,
                      slotPos, new Vec2D(
                          -vecDir.x,
                          -vecDir.y),
                      (len / 2f),
                      SETTINGS.materialThickness);
                  slot.setOnEdge(new Vec2D(0, -1));
                  if(crossSliceSelection.getCapType() != CrossSliceSelection.CAP_INSIDE)
                    slot.makesEdge = true;
                  currentPlaneY
                      .getSketch()
                      .getSlots()
                      .add(slot);

                } else {
                  Vec2D slotPos = topIntersectX.copy();
                  Vec2D dirPerp = new Vec2D(vecDir.x,
                      vecDir.y);
                  dirPerp.rotate((float) (Math.PI / 2));
                  SliceSlot slot = new SliceSlot(slicePlane,
                      slotPos,
                      new Vec2D(vecDir.x,
                          vecDir.y),
                      (len / 2f),
                      SETTINGS.materialThickness);
                  slot.setOnEdge(new Vec2D(0, -1));
                  if(crossSliceSelection.getCapType() != CrossSliceSelection.CAP_INSIDE)
                    slot.makesEdge = true;
                  // Switch what side slots are added to
                  currentPlaneY
                      .getSketch()
                      .getSlots()
                      .add(slot);
                }
              }

              Vec2D topSlotintersect = bottomIntersect.copy();
              Vec2D bottomtopSlotintersect = topIntersect.copy();

              if (!currentPlaneY.guide) {

                if (!crossSliceSelection.flipSide) {
                  if (j != 0
                      && j != planesToSlice.getList()
                          .size() - 1){
                    SliceSlot slot = new SliceSlot(
                        currentPlaneY,
                        topSlotintersect,
                        new Vec2D(-1, 0),
                        (len / 2f),
                        SETTINGS.materialThickness);
                    slot.setOnEdge(new Vec2D(0, -1));
                    if(crossSliceSelection.getCapType() != CrossSliceSelection.CAP_INSIDE)
                      slot.makesEdge = true;
                    slicePlane
                        .getSketch()
                        .getSlots()
                        .add(slot);
                  }
                } else {
                  if (j != 0
                      && j != planesToSlice.getList()
                          .size() - 1){
                    SliceSlot slot = new SliceSlot(
                        currentPlaneY,
                        bottomtopSlotintersect,
                        new Vec2D(1, 0),
                        ((len / 2f)),
                        SETTINGS.materialThickness);
                    slot.setOnEdge(new Vec2D(0, -1));
                    if(crossSliceSelection.getCapType() != CrossSliceSelection.CAP_INSIDE)
                      slot.makesEdge = true;
                    slicePlane
                        .getSketch()
                        .getSlots()
View Full Code Here

TOP

Related Classes of cc.sketchchair.sketch.SliceSlot

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.