mirror of
https://github.com/eliasstepanik/OSCADSharpDotnet7.git
synced 2026-01-11 13:38:33 +00:00
447 lines
20 KiB
C#
447 lines
20 KiB
C#
using OSCADSharp.Solids;
|
|
using OSCADSharp.Solids.Compound;
|
|
using OSCADSharp.Solids.Imported;
|
|
using OSCADSharp.Spatial;
|
|
using OSCADSharp.Utility;
|
|
|
|
namespace OSCADSharp.ConsoleTests
|
|
{
|
|
class Program
|
|
{
|
|
private static OSCADObject getEndCover(OSCADObject outer)
|
|
{
|
|
var bounds = outer.Bounds();
|
|
var endCover = new Cube(Inches.Sixteenth, bounds.Width, bounds.Height, true);
|
|
var choppedOut = endCover.Clone().Scale(2, (bounds.Width-Inches.Quarter)/ bounds.Width, (bounds.Height - Inches.Half) / bounds.Height);
|
|
choppedOut = choppedOut.Translate(0, Inches.Quarter, 0);
|
|
|
|
return endCover - choppedOut;
|
|
}
|
|
|
|
private static void makeBracket()
|
|
{
|
|
OSCADObject cube = new Cube(new Vector3(Inches.ToMillimeters(2.75), Inches.One, Inches.ToMillimeters(1.25)), true);
|
|
var outside = cube.Clone();
|
|
((Cube)outside).Size.X += Inches.Sixteenth;
|
|
((Cube)outside).Size.Z += Inches.Sixteenth;
|
|
cube = cube.Scale(2, 1, 1).Translate(0, Inches.Sixteenth, 0);
|
|
|
|
var obj = outside - cube;
|
|
var bounds = obj.Bounds();
|
|
|
|
obj = obj + getEndCover(outside).Translate(bounds.XMax, 0, 0);
|
|
obj = obj + getEndCover(outside).Translate(-bounds.XMax, 0, 0);
|
|
|
|
obj.ToFile("leftBracket").Open();
|
|
}
|
|
|
|
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");
|
|
}
|
|
|
|
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();
|
|
|
|
}
|
|
|
|
private static OSCADObject makeStandCap()
|
|
{
|
|
OSCADObject center = new Cube(Inches.One - Inches.Sixteenth, Inches.Half - Inches.Sixteenth, Inches.Quarter, true);
|
|
|
|
OSCADObject outerColumn = new Cylinder(Inches.One, Inches.One, true).Resize(Inches.One * 1.5, Inches.Half * 1.5, Inches.One);
|
|
var bnds = center.Bounds();
|
|
|
|
OSCADObject top = new Cylinder(Inches.One, Inches.One, true)
|
|
.Resize(Inches.One * 2.25, Inches.Half * 2.25, Inches.Quarter);
|
|
OSCADObject cutout = new Cylinder(Inches.One, Inches.One, true)
|
|
.Resize(Inches.One * 2.1, Inches.Half * 2.1, Inches.Quarter);
|
|
top = top - cutout.Translate(0, 0, Inches.Quarter/2);
|
|
|
|
|
|
OSCADObject brim = top.Clone();
|
|
|
|
var obj = center + top.Translate(0, 0, bnds.Height / 2 + Inches.Sixteenth / 2);
|
|
return obj;
|
|
}
|
|
|
|
private static void makeCardClip()
|
|
{
|
|
var leftSide = new Cube(Inches.Sixteenth, Inches.Half, Inches.Half, true)
|
|
.Rotate(0, -3, 0).Translate(Inches.Sixteenth, 0, Inches.Half / 2);
|
|
var rightSide = leftSide.Clone().Mirror(1, 0, 0);
|
|
var bottom = new Cube(Inches.Quarter*.85, Inches.Half, Inches.Sixteenth, true);
|
|
|
|
var obj = leftSide + rightSide + bottom;
|
|
//obj = new Sphere() { Radius = .25, Resolution = 30 }.Translate(0, 0, -1).Minkowski(obj);
|
|
|
|
//90 degree joint
|
|
obj = obj.Translate(0, 0, Inches.Eigth) +
|
|
obj.Clone().Rotate(0, 180, 0).Translate(0, 0, 0)
|
|
+ new Cube(Inches.Quarter * .85, Inches.Half, Inches.Quarter * .85, true);
|
|
|
|
obj = obj.Rotate(90, 0, 0);
|
|
|
|
obj.ToFile("clip-180");
|
|
}
|
|
|
|
public static void makeBadge()
|
|
{
|
|
var img = ImportedImage.FromFile("badge-1.png", new ImageImportOptions()
|
|
{
|
|
HeightMapping = ImageImportOptions.HeightMappingMode.Vertical
|
|
});
|
|
img.Resize(Inches.One * 2.4, Inches.One * 2.75, Inches.Eigth).ToFile("badge");
|
|
}
|
|
|
|
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 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 static void makeDisk()
|
|
{
|
|
double glassGap = Inches.Eigth;
|
|
double outer = (Inches.One * 3) + glassGap*2;
|
|
double holeSize = (Inches.One - Inches.Sixteenth);
|
|
double thickness = Inches.Quarter;
|
|
|
|
var outerCylinder = new Cylinder(outer, thickness, true) { Resolution = 100 };
|
|
var innerCutout = new Cylinder(outer - glassGap, thickness, true) { Resolution = 100 }.Translate(0, 0, thickness - Inches.Sixteenth);
|
|
|
|
var hole = new Cylinder(holeSize, thickness * 2, true) { Resolution = 100 };
|
|
|
|
var whole = (outerCylinder - innerCutout) - hole;
|
|
whole.ToFile("candleDisk").Open();
|
|
}
|
|
|
|
public static void makePaddle()
|
|
{
|
|
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 gapCloser = new Sphere(shaftSize) { Resolution = 80 }.Translate(shaft.Bounds().XMax, 0, +Inches.Quarter);
|
|
|
|
var whole = (blade + shaft + gapCloser).Rotate(180, 0, 0);
|
|
whole.ToFile("paddle").Open();
|
|
}
|
|
|
|
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();
|
|
}
|
|
|
|
public static void makeACBrackets()
|
|
{
|
|
double width = Inches.One * 6.5;
|
|
double height = Inches.One;
|
|
double depth = Inches.One;
|
|
double thickness = Inches.Quarter;
|
|
|
|
var mainBox = new Cube(width, depth, height, true);
|
|
var cutout = mainBox.Clone().Scale(1.1, 1, 1).Translate(0, thickness, thickness);
|
|
var hole = new Cylinder(Inches.Eigth, Inches.One * 2, true) { Resolution = 30 }.Rotate(90, 0, 0);
|
|
|
|
|
|
var whole = mainBox - cutout - hole.Translate(0, 0, Inches.Quarter) -
|
|
hole.Clone().Translate(-Inches.One * 2, 0, Inches.Quarter) - hole.Clone().Translate(+Inches.One * 2, 0, Inches.Quarter);
|
|
whole.ToFile("acBracket");
|
|
}
|
|
|
|
public static void makeDiceHolder()
|
|
{
|
|
double chamberDiameter = Inches.One;
|
|
|
|
var singleChamberCenter = new Cylinder(chamberDiameter, Inches.Half + Inches.Eigth, true) { Resolution = 6 };
|
|
var singleChamber = new Cylinder(chamberDiameter + Inches.Eigth, Inches.Half + Inches.Eigth, true) { Resolution = 6 } - singleChamberCenter.Scale(1, 1, 2);
|
|
singleChamber = singleChamber.Rotate(0, 0, 30);
|
|
var bottom = singleChamber;
|
|
|
|
for (int angle = 60; angle < 420; angle+=60)
|
|
{
|
|
bottom += singleChamber.Clone().Translate(chamberDiameter - Inches.Sixteenth, 0, 0).Rotate(0, 0, angle);
|
|
}
|
|
|
|
var hexSection = bottom.Clone();
|
|
var outerCylCenter = new Cylinder(chamberDiameter * 2.9, Inches.Half, true) { Resolution = 90 }.Translate(0, 0, Inches.Eigth);
|
|
var outerCyl = (new Cylinder(chamberDiameter * 2.9 + Inches.Eigth, Inches.Half, true) { Resolution = 90 } - outerCylCenter).Translate(0, 0, bottom.Bounds().ZMin + Inches.Half);
|
|
|
|
bottom += outerCyl;
|
|
|
|
var lidCenter = new Cylinder(chamberDiameter * 2.9 + Inches.Eigth + Inches.Sixteenth*.5, Inches.One, true) { Resolution = 90 }.Translate(0, 0, Inches.Eigth);
|
|
var lid = (new Cylinder(chamberDiameter * 2.9 + Inches.Quarter + Inches.Sixteenth * .5, Inches.One, true) { Resolution = 90 } - lidCenter).Translate(0, 0, bottom.Bounds().ZMin + Inches.Half);
|
|
|
|
var top = lid.Clone().Mirror(0, 0, 1).Rotate(0, 180, 0);
|
|
//OSCADObject dragon = ImportedImage.FromFile("dragonInsignia.png", new ImageImportOptions() {
|
|
// UseGrayScale = true,
|
|
// HeightMapping = ImageImportOptions.HeightMappingMode.None,
|
|
// SimplificationAmount = 100
|
|
//});
|
|
//var topBounds = top.Bounds();
|
|
|
|
//dragon = dragon.Scale(.1, .1, Inches.Quarter).Translate(-topBounds.Length/2 + Inches.Sixteenth, -topBounds.Width/2 + Inches.Sixteenth, topBounds.ZMin - Inches.Eigth);
|
|
|
|
var whole = top;//bottom;// /*bottom + */ top - dragon;
|
|
whole.ToFile("diceHolder_cap").Open();
|
|
}
|
|
|
|
public static void makeSideTwoByFourBracket()
|
|
{
|
|
double wallThickness = Inches.Eigth;
|
|
|
|
double innerWidth = Inches.One * 4 + Inches.Sixteenth;
|
|
double innerHeight = Inches.One * 2 + Inches.Sixteenth;
|
|
double innerDepth = Inches.Half + Inches.Sixteenth;
|
|
|
|
OSCADObject twoByfourHolder = new Box()
|
|
{
|
|
Size = new Vector3(innerWidth + wallThickness * 2, innerHeight + wallThickness * 2, innerDepth + wallThickness),
|
|
Center = true,
|
|
WallThickness = wallThickness
|
|
};
|
|
|
|
var whole = twoByfourHolder.Rotate(90, 0, 90) +
|
|
twoByfourHolder.Clone().Rotate(90, 0, 90).Rotate(0, 90, 0).Translate(innerHeight/2 - wallThickness*2 + Inches.Sixteenth*.5, 0, -innerHeight/2 - innerDepth/2 - wallThickness + Inches.Sixteenth);
|
|
whole = whole.Rotate(0, -90, 0);
|
|
whole.ToFile("twobyFourSideBracket");
|
|
}
|
|
|
|
public static void makeCenterTwoByFourBracket()
|
|
{
|
|
double wallThickness = Inches.Eigth;
|
|
|
|
double innerWidth = Inches.One * 4 + Inches.Sixteenth;
|
|
double innerHeight = Inches.One * 2 + Inches.Sixteenth;
|
|
double innerDepth = Inches.Half + Inches.Sixteenth;
|
|
|
|
OSCADObject twoByfourHolder = new Box()
|
|
{
|
|
Size = new Vector3(innerWidth + wallThickness * 2, innerHeight + wallThickness * 2, innerDepth + wallThickness),
|
|
Center = true,
|
|
WallThickness = wallThickness
|
|
};
|
|
|
|
var whole = twoByfourHolder.Rotate(180, 0, 0).Rotate(0, 0, 90);
|
|
var left = twoByfourHolder.Clone().Rotate(0, 0, 90).Rotate(0, 90, 0)
|
|
.Translate(innerDepth - wallThickness*2, 0, whole.Bounds().ZMax + innerHeight / 2);
|
|
var right = left.Mirror(1, 0, 0);
|
|
whole = whole + left + right;
|
|
// .Rotate(90, 0, 90) +
|
|
// twoByfourHolder.Clone().Rotate(90, 0, 90).Rotate(0, 90, 0).Translate(innerHeight / 2 - wallThickness * 2 + Inches.Sixteenth * .5, 0, -innerHeight / 2 - innerDepth / 2 - wallThickness + Inches.Sixteenth);
|
|
//whole = whole.Rotate(0, -90, 0);
|
|
whole.ToFile("twobyFourCenterBracket");
|
|
}
|
|
|
|
static void Main(string[] args)
|
|
{
|
|
//makeCenterTwoByFourBracket();
|
|
//makeSideTwoByFourBracket();
|
|
makeDiceHolder();
|
|
//makeACBrackets();
|
|
makeGreatSword();
|
|
makepaddleHandle();
|
|
makePaddle();
|
|
//makeDisk();
|
|
//makeHolder();
|
|
//makeLoop();
|
|
//makeBadge();
|
|
//makeCardClip();
|
|
//makeLaserStand();
|
|
//makeStandCap();
|
|
|
|
var tubeMe = new Tube()
|
|
{
|
|
Diameter1 = Inches.One,
|
|
Diameter2 = Inches.Half,
|
|
Height = Inches.One,
|
|
Bottom = false,
|
|
Resolution = 100,
|
|
//Center = true,
|
|
WallThickness = Inches.Sixteenth
|
|
};
|
|
tubeMe.ToFile("tubeTest");
|
|
|
|
//var boxMe = new Box() {
|
|
// Size = new Vector3(10, 10, 10),
|
|
// WallThickness = .5
|
|
//};
|
|
//boxMe.ToFile("boxtest");
|
|
|
|
//var img = ImportedImage.FromFile("twixCrop_small.png", new ImageImportOptions()
|
|
//{
|
|
// HeightMapping = ImageImportOptions.HeightMappingMode.Vertical,
|
|
// UseGrayScale = false,
|
|
// SimplificationAmount = 25
|
|
//});
|
|
//img.ToFile("twixCrop");
|
|
|
|
//var img = ImportedImage.FromFile("vermont-nc.png").Scale(1, 1, Inches.Quarter + Inches.Eigth);
|
|
//var imgPos = img.Position();z
|
|
//var _base = new Cylinder(img.Bounds().Width + Inches.Quarter, Inches.Quarter) { Resolution = 100 };
|
|
|
|
//var rim = _base.Clone().Scale(1, 1, 1.25) - _base.Clone().Scale(.9, .9, 3.5).Translate(0, 0, -Inches.Eigth);
|
|
//var coaster = img + _base.Translate(imgPos.X, imgPos.Y, 0) + rim.Translate(imgPos.X, imgPos.Y, Inches.Quarter); ;
|
|
|
|
|
|
//coaster.ToFile("seaImg").Open();
|
|
|
|
//makePeg();
|
|
|
|
//var diam = new Variable("mainColumn", Inches.Half);
|
|
//var height = new Variable("overallHeight", Inches.Quarter);
|
|
//Variables.Global.Add(diam);
|
|
//Variables.Global.Add(height);
|
|
|
|
//var cyl = new Cylinder(diam, diam, height);
|
|
|
|
|
|
//var pos = cyl.Position();
|
|
//var cyl1 = new Cylinder(1, 100, true).Translate(pos);
|
|
//var cyl2 = new Cylinder(1, 100, true).Rotate(0, 90, 0).Translate(pos);
|
|
//var cyl3 = new Cylinder(1, 100, true).Rotate(90, 0, 0).Translate(pos);
|
|
//var axisHelper = cyl1.Union(cyl2, cyl3).Color("Red");
|
|
|
|
////var topCorner = new Sphere().Translate(obj.Bounds().TopRight);
|
|
////var botCorner = new Sphere().Translate(obj.Bounds().BottomLeft);
|
|
|
|
//(cyl + axisHelper).ToFile("test.scad").Open();
|
|
|
|
//Console.ReadKey();
|
|
}
|
|
}
|
|
}
|