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); }
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); }