public void Cylinder_BoundsAreInExpectedPositionCentered() { var obj = new Cylinder(5, 20, true); Assert.AreEqual(new Vector3(2.5, 2.5, 10), obj.Bounds().TopRight); Assert.AreEqual(new Vector3(-2.5, -2.5, -10), obj.Bounds().BottomLeft); }
private static void makePeg() { OSCADObject flatInnerPortion = new Cylinder(Inches.Quarter, Inches.Eigth, true) { Resolution = 30 }; OSCADObject shaft = new Cylinder(Inches.Eigth, Inches.Half, true) { Resolution = 30 }; flatInnerPortion = flatInnerPortion.Translate(0, 0, shaft.Bounds().ZMax); OSCADObject pegShaft = new Cylinder(Inches.Quarter, Inches.Half - Inches.Eigth, true) { Resolution = 30 } .Translate(0, 0, -Inches.Eigth); OSCADObject bottomBall = new Sphere(Inches.Quarter * 1.1) .Translate(0, 0, pegShaft.Bounds().ZMin); var obj = flatInnerPortion + shaft + pegShaft + bottomBall; obj = obj.Rotate(0, 180, 0).Translate(0, 0, obj.Bounds().ZMax); obj.ToFile("peg"); }
public static void makeLoop() { double outerDiam = Inches.Quarter + Inches.Sixteenth; double height = Inches.Eigth + Inches.Sixteenth; double holeSize = Inches.Quarter; double paddingSize = Inches.Sixteenth; var outer = new Cylinder(holeSize + paddingSize, height, true) { Resolution = 50 }; var inner = new Cylinder(holeSize, height * 2, true) { Resolution = 50 }; var bounds = outer.Bounds(); var bottomDisk = new Cylinder(outerDiam + Inches.Eigth, Inches.Sixteenth / 2, true) { Resolution = 50 }.Translate(0, 0, bounds.ZMin - Inches.Sixteenth / 4); var whole = ((outer + bottomDisk) - inner); whole.ToFile("loop"); var topDisk = new Cylinder(outerDiam + Inches.Eigth, Inches.Sixteenth / 2, true) - new Cylinder(holeSize + Inches.Sixteenth, Inches.Half, true) { Resolution = 50 }; topDisk.ToFile("topLoop"); }
public static void makepaddleHandle() { double holeSize = Inches.One + Inches.Eigth; double holeHeight = Inches.One; double shaftSize = holeSize + Inches.Quarter; double totalLength = Inches.One * 8; double totalWidth = Inches.One * 5; var blade = new Sphere() { Resolution = 80 }.Resize(totalLength, totalWidth, Inches.One * 2); var copy = blade.Clone().Translate(0, 0, -Inches.One).Scale(1.4, 1.4, 1.1); blade = blade - copy; //var gap = new Cube(Inches.One, Inches.One * 8, Inches.One*8, true).Translate(blade.Bounds().XMin, 0, 0); //blade = blade - gap; OSCADObject shaft = new Cylinder(shaftSize, totalLength / 4, true) { Resolution = 80 }.Rotate(0, 90, 0); var hole = new Cylinder(holeSize, holeHeight * 2, true) { Resolution = 80 }.Rotate(0, 90, 0).Translate(shaft.Bounds().XMin, 0, 0); blade = blade - hole.Translate(blade.Bounds().XMin + Inches.Half, 0, +Inches.Quarter); shaft = shaft - hole; shaft = shaft.Translate(blade.Bounds().XMin + Inches.Half, 0, +Inches.Quarter); var top = new Cylinder(shaftSize, Inches.One * 3, true) { Resolution = 80 }.Rotate(90, 0, 0).Translate(shaft.Bounds().XMax, 0, shaft.Bounds().ZMax - shaftSize / 2); var gapCloserLeft = new Sphere(shaftSize) { Resolution = 80 }.Translate(top.Bounds().XMax - shaftSize / 2, top.Bounds().YMax, +Inches.Quarter); var gapCloserRight = gapCloserLeft.Mirror(0, 1, 0); var whole = shaft + top + gapCloserLeft + gapCloserRight; whole.ToFile("paddleHandle").Open(); }
public static void makeGreatSword() { double referenceWidth = Inches.Eigth; double overallLength = Inches.One * 1.5; var tang = new Cylinder(referenceWidth, overallLength, true) { Resolution = 6 }.Scale(.5, 2, 1); var pommel = new Sphere(referenceWidth * 1.2) { Resolution = 11 }.Translate(0, 0, -Inches.Half - Inches.Eigth).Color("Gold"); var hilt = new Cylinder(referenceWidth, Inches.Half * .75, true) { Resolution = 10 } .Rotate(90, 0, 0) .Translate(0, 0, -Inches.Quarter).Color("Gold"); var hiltRight = new Sphere(referenceWidth * 1.1) { Resolution = 8 } .Scale(1, 1, 1.2).Color("Gold") .Translate(0, hilt.Bounds().YMin, hilt.Position().Z); var hiltLeft = hiltRight.Clone().Mirror(0, 1, 0); var hiltCenter = new Cylinder(referenceWidth * .9, Inches.Half * .8, true) { Resolution = 8 } .Translate(0, 0, -Inches.Quarter - Inches.Quarter * .75).Color("Gold"); hilt = hilt + hiltLeft + hiltRight + hiltCenter; var blade = tang.Translate(0, 0, Inches.Half); var tip = new Cylinder(referenceWidth, Inches.Quarter, true) { Resolution = 6, Diameter2 = .1 }.Scale(.5, 2, 1).Translate(0, 0, blade.Bounds().ZMax + Inches.Eigth); blade = blade + tip; blade = blade.Color("Silver"); var whole = (blade + pommel + hilt).Scale(.5, .5, .5); whole.ToFile("greatsword").Open(); }
private static void makeLaserStand() { OSCADObject center = new Cube(Inches.One, Inches.Half, Inches.One * 1.2, true); OSCADObject outerColumn = new Cylinder(Inches.One, Inches.One, true).Resize(Inches.One * 1.5, Inches.Half * 1.5, Inches.One); var bnds = outerColumn.Bounds(); OSCADObject bottom = new Cylinder(Inches.One, Inches.One, true) .Resize(Inches.One * 2, Inches.Half * 2, Inches.One) .Translate(0, 0, 0); var obj = (outerColumn) + bottom; bnds = obj.Bounds(); var cap = makeStandCap(); obj = obj + cap.Translate(0, 0, bnds.ZMax - Inches.Sixteenth); obj.ToFile("laserStand2").Open(); }
public static void makeHolder() { double innerSize = (Inches.One * 4); var cutout = new Cube(Inches.One * 10, Inches.Half, Inches.Half, true).Translate(0, innerSize / 2, 0); cutout = cutout + cutout.Rotate(0, 0, 90) + cutout.Rotate(0, 0, 180) + cutout.Rotate(0, 0, 270); OSCADObject innerCyl = new Cylinder(innerSize, Inches.Eigth + Inches.Sixteenth, true) { Resolution = 60 }; var outerCyl = new Cylinder(innerSize + Inches.Eigth, Inches.Quarter + Inches.Sixteenth, true) { Resolution = 60 }; innerCyl = innerCyl.Translate(0, 0, outerCyl.Bounds().ZMax - (Inches.Eigth + Inches.Sixteenth) / 2 + .1); var whole = (outerCyl - innerCyl) - cutout; whole.ToFile("coasterHolder-square").Open(); }
public void Minkowski_BoundsThrowsNotSupportedException() { var obj = new Cylinder().Minkowski(new Sphere()).Translate(0, 5, 5); obj.Bounds(); }