コード例 #1
0
        SlotModel Slot3dToFaceSlot(int faceIndex, SlotModel s3d)
        {
            SlotModel faceSlot = new SlotModel();

            faceSlot.Index     = s3d.Index;
            faceSlot.Type      = s3d.Type;
            faceSlot.ScrewType = s3d.ScrewType;
            faceSlot.Diameter  = s3d.Diameter;
            faceSlot.Depth     = s3d.Depth;
            faceSlot.PosZ      = 0;

            double hbx = BoundX / 2;
            double hby = BoundY / 2;
            double hbz = BoundZ / 2;

            //       z  x
            //     __|_/__            1________2
            //    /__|/__/|          3/_______/4
            //   |       ||
            //   |_______|/--Y        5________6
            //                       7/_______/8

            switch (faceIndex)
            {
            // 0 +x
            //   2 ____ 1
            //   6|____|5
            case 0:
            {
                faceSlot.PosX = +hby - s3d.PosY;
                faceSlot.PosY = +hbz - s3d.PosZ;
            }
            break;

            // 1 -x
            //   3 ____ 4
            //   7|____|8
            case 1:
            {
                faceSlot.PosX = s3d.PosY - (-hby);
                faceSlot.PosY = +hbz - s3d.PosZ;
            }
            break;

            // 2 +y
            //   4 ____ 2
            //   8|____|6
            case 2:
            {
                faceSlot.PosX = s3d.PosX - (-hbx);
                faceSlot.PosY = +hbz - s3d.PosZ;
            }
            break;

            // 3 -y
            //   1 ____ 3
            //   5|____|7
            case 3:
            {
                faceSlot.PosX = +hbx - s3d.PosX;
                faceSlot.PosY = +hbz - s3d.PosZ;
            }
            break;

            // 4 +z
            //   1 ____ 2
            //   3|____|4
            case 4:
            {
                faceSlot.PosX = s3d.PosY - (-hby);
                faceSlot.PosY = +hbx - s3d.PosX;
            }
            break;

            // 5 -z
            //   7 ____ 8
            //   5|____|6
            case 5:
            {
                faceSlot.PosX = s3d.PosY - (-hby);
                faceSlot.PosY = s3d.PosX - (-hbx);
            }
            break;

            default:
                faceSlot.PosX = s3d.PosX;
                faceSlot.PosY = s3d.PosY;
                break;
            }

            return(faceSlot);
        }
コード例 #2
0
        SlotModel FaceSlotTo3dSlot(int faceIndex, SlotModel faceSlot)
        {
            SlotModel s3d = new SlotModel();

            s3d.Index     = faceSlot.Index;
            s3d.Type      = faceSlot.Type;
            s3d.ScrewType = faceSlot.ScrewType;
            s3d.Diameter  = faceSlot.Diameter;
            s3d.Depth     = faceSlot.Depth;

            double hbx = BoundX / 2;
            double hby = BoundY / 2;
            double hbz = BoundZ / 2;

            //       z  x
            //     __|_/__            1________2
            //    /__|/__/|          3/_______/4
            //   |       ||
            //   |_______|/--Y        5________6
            //                       7/_______/8

            switch (faceIndex)
            {
            // 0 +x
            //   2 ____ 1
            //   6|____|5
            case 0:
            {
                s3d.PosX = +hbx;
                s3d.PosY = +hby - faceSlot.PosX;
                s3d.PosZ = +hbz - faceSlot.PosY;
            }
            break;

            // 1 -x
            //   3 ____ 4
            //   7|____|8
            case 1:
            {
                s3d.PosX = -hbx;
                s3d.PosY = -hby + faceSlot.PosX;
                s3d.PosZ = +hbz - faceSlot.PosY;
            }
            break;

            // 2 +y
            //   4 ____ 2
            //   8|____|6
            case 2:
            {
                s3d.PosX = -hbx + faceSlot.PosX;
                s3d.PosY = +hby;
                s3d.PosZ = +hbz - faceSlot.PosY;
            }
            break;

            // 3 -y
            //   1 ____ 3
            //   5|____|7
            case 3:
            {
                s3d.PosX = +hbx - faceSlot.PosX;
                s3d.PosY = -hby;
                s3d.PosZ = +hbz - faceSlot.PosY;
            }
            break;

            // 4 +z
            //   1 ____ 2
            //   3|____|4
            case 4:
            {
                s3d.PosX = +hbx - faceSlot.PosY;
                s3d.PosY = -hby + faceSlot.PosX;
                s3d.PosZ = +hbz;
            }
            break;

            // 5 -z
            //   7 ____ 8
            //   5|____|6
            case 5:
            {
                s3d.PosX = -hbx + faceSlot.PosY;
                s3d.PosY = -hby + faceSlot.PosX;
                s3d.PosZ = -hbz;
            }
            break;

            default:
                s3d.PosX = faceSlot.PosX;
                s3d.PosY = faceSlot.PosY;
                break;
            }

            return(s3d);
        }