public static TextObject3D Create() { var item = new TextObject3D(); item.Rebuild(null); return(item); }
public static async Task <TextObject3D> Create() { var item = new TextObject3D(); await item.Rebuild(); return(item); }
public void Rebuild(UndoBuffer undoBuffer) { using (RebuildLock()) { var aabb = this.GetAxisAlignedBoundingBox(); this.Children.Modify(list => { list.Clear(); }); var brailleLetter = new BrailleObject3D() { TextToEncode = Letter.ToString(), BaseHeight = BaseHeight, }; brailleLetter.Rebuild(null); this.Children.Add(brailleLetter); var textObject = new TextObject3D() { PointSize = 46, Color = Color.LightBlue, NameToWrite = Letter.ToString(), Height = BaseHeight }; textObject.Invalidate(new InvalidateArgs(textObject, InvalidateType.Properties, null)); IObject3D letterObject = new RotateObject3D(textObject, MathHelper.Tau / 4); letterObject = new AlignObject3D(letterObject, FaceAlign.Bottom | FaceAlign.Front, brailleLetter, FaceAlign.Top | FaceAlign.Front, 0, 0, 3.5); letterObject = new SetCenterObject3D(letterObject, brailleLetter.GetCenter(), true, false, false); this.Children.Add(letterObject); var basePath = new RoundedRect(0, 0, 22, 34, 3) { ResolutionScale = 10 }; IObject3D basePlate = new Object3D() { Mesh = VertexSourceToMesh.Extrude(basePath, BaseHeight), Matrix = Matrix4X4.CreateRotationX(MathHelper.Tau / 4) }; basePlate = new AlignObject3D(basePlate, FaceAlign.Bottom | FaceAlign.Back, brailleLetter, FaceAlign.Bottom | FaceAlign.Back); basePlate = new SetCenterObject3D(basePlate, brailleLetter.GetCenter(), true, false, false); this.Children.Add(basePlate); IObject3D underline = new CubeObject3D(basePlate.XSize(), .2, 1); underline = new AlignObject3D(underline, FaceAlign.Bottom, brailleLetter, FaceAlign.Top); underline = new AlignObject3D(underline, FaceAlign.Back | FaceAlign.Left, basePlate, FaceAlign.Front | FaceAlign.Left, 0, .01); this.Children.Add(underline); if (aabb.ZSize > 0) { // If the part was already created and at a height, maintain the height. PlatingHelper.PlaceMeshAtHeight(this, aabb.minXYZ.Z); } } Invalidate(new InvalidateArgs(this, InvalidateType.Content)); }
public override async Task Rebuild() { using (RebuildLock()) { using (new CenterAndHeightMantainer(this)) { this.Children.Modify(list => { list.Clear(); }); var brailleLetter = new BrailleObject3D() { TextToEncode = Letter.ToString(), BaseHeight = BaseHeight, }; await brailleLetter.Rebuild(); this.Children.Add(brailleLetter); var textObject = new TextObject3D() { PointSize = 46, Color = Color.LightBlue, NameToWrite = Letter.ToString(), Height = BaseHeight }; await textObject.Rebuild(); IObject3D letterObject = new RotateObject3D_2(textObject, Vector3.UnitX, -90); await letterObject.Rebuild(); var scaleRatio = Math.Max(letterObject.XSize() / 17, letterObject.ZSize() / 17); if (scaleRatio > 1) { letterObject = new ScaleObject3D(letterObject, 1.0 / scaleRatio, 1, 1.0 / scaleRatio); } letterObject = new AlignObject3D(letterObject, FaceAlign.Bottom | FaceAlign.Front, brailleLetter, FaceAlign.Top | FaceAlign.Front, 0, 0, 3.5); letterObject = new SetCenterObject3D(letterObject, brailleLetter.GetCenter(), true, false, false); this.Children.Add(letterObject); var basePath = new RoundedRect(0, 0, 22, 34, 3) { ResolutionScale = 10 }; IObject3D basePlate = new Object3D() { Mesh = VertexSourceToMesh.Extrude(basePath, BaseHeight), Matrix = Matrix4X4.CreateRotationX(MathHelper.Tau / 4) }; basePlate = new AlignObject3D(basePlate, FaceAlign.Bottom | FaceAlign.Back, brailleLetter, FaceAlign.Bottom | FaceAlign.Back); basePlate = new SetCenterObject3D(basePlate, brailleLetter.GetCenter(), true, false, false); this.Children.Add(basePlate); IObject3D underline = await CubeObject3D.Create(basePlate.XSize(), .2, 1); underline = new AlignObject3D(underline, FaceAlign.Bottom, brailleLetter, FaceAlign.Top); underline = new AlignObject3D(underline, FaceAlign.Back | FaceAlign.Left, basePlate, FaceAlign.Front | FaceAlign.Left, 0, .01); this.Children.Add(underline); } } Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children)); }
public override Task Rebuild() { // Point Size 10 // Height 1 // Font Fredoka // Align // X: Right Right -11 // Y: Front -.3 // Z: Bottom .8 this.DebugDepth("Rebuild"); bool valuesChanged = false; using (RebuildLock()) { MaxTemperature = agg_basics.Clamp(MaxTemperature, 140, 400, ref valuesChanged); Sections = agg_basics.Clamp(Sections, 2, 20, ref valuesChanged); ChangeAmount = agg_basics.Clamp(ChangeAmount, 1, 30, ref valuesChanged); using (new CenterAndHeightMaintainer(this)) { Children.Modify(async(children) => { children.Clear(); // add the base var towerBase = new Object3D() { Mesh = new RoundedRect(-25, -15, 25, 15, 3) { ResolutionScale = 10 }.Extrude(BaseHeight), Name = "Base" }; children.Add(towerBase); // Add each section for (int i = 0; i < Sections; i++) { var temp = MaxTemperature - i * ChangeAmount; var section = new Object3D() { Matrix = Matrix4X4.CreateTranslation(0, 0, BaseHeight + i * SectionHeight), Name = $"{temp:0.##}" }; children.Add(section); // Add base mesh section.Children.Add(new Object3D() { Mesh = shape, Name = "CC - gaaZolee - AS" }); // Add temp changer section.Children.Add(new SetTemperatureObject3D() { Temperature = temp, Name = $"Set to {temp:0.##}", Matrix = Matrix4X4.CreateScale(.2, .1, 1) }); // Add temperature text var text = new TextObject3D() { Font = NamedTypeFace.Fredoka, Height = 1, Name = $"{temp:0.##}", PointSize = 10, NameToWrite = $"{temp:0.##}", Matrix = Matrix4X4.CreateRotationX(MathHelper.Tau / 4) * Matrix4X4.CreateTranslation(0, -4.3, .8), }; text.Rebuild().Wait(); var textBounds = text.GetAxisAlignedBoundingBox(); text.Matrix *= Matrix4X4.CreateTranslation(11 - textBounds.MaxXYZ.X, 0, 0); section.Children.Add(text); } }); } } Invalidate(InvalidateType.DisplayValues); Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Mesh)); return(Task.CompletedTask); }