private static async Task <IObject3D> CreateCalibrationObject(PrinterConfig printer, XyCalibrationWizard calibrationWizard)
        {
            var layerHeight      = printer.Settings.GetValue <double>(SettingsKey.layer_height);
            var firstLayerHeight = printer.Settings.GetValue <double>(SettingsKey.first_layer_height);

            switch (calibrationWizard.Quality)
            {
            case QualityType.Coarse:
                return(await XyCalibrationTabObject3D.Create(
                           1,
                           Math.Max(firstLayerHeight * 2, layerHeight * 2),
                           calibrationWizard.Offset,
                           printer.Settings.GetValue <double>(SettingsKey.nozzle_diameter),
                           printer.Settings.GetValue <double>(SettingsKey.wipe_tower_size)));

            default:
                return(await XyCalibrationFaceObject3D.Create(
                           1,
                           firstLayerHeight + layerHeight,
                           layerHeight,
                           calibrationWizard.Offset,
                           printer.Settings.GetValue <double>(SettingsKey.nozzle_diameter),
                           printer.Settings.GetValue <double>(SettingsKey.wipe_tower_size),
                           4));
            }
        }
Esempio n. 2
0
        public LibraryCollectionContainer()
        {
            this.ChildContainers = new List <ILibraryContainerLink>();
            this.Items           = new List <ILibraryItem>();
            this.Name            = "Library".Localize();

            var rootLibraryCollection = Datastore.Instance.dbSQLite.Table <PrintItemCollection>().Where(v => v.Name == "_library").Take(1).FirstOrDefault();

            if (rootLibraryCollection != null)
            {
                this.ChildContainers.Add(
                    new DynamicContainerLink(
                        () => "Local Library".Localize(),
                        StaticData.Instance.LoadIcon(Path.Combine("Library", "folder.png")),
                        StaticData.Instance.LoadIcon(Path.Combine("Library", "local_library_icon.png")),
                        () => new SqliteLibraryContainer(rootLibraryCollection.Id)));
            }

            this.ChildContainers.Add(
                new DynamicContainerLink(
                    () => "Calibration Parts".Localize(),
                    StaticData.Instance.LoadIcon(Path.Combine("Library", "folder.png")),
                    StaticData.Instance.LoadIcon(Path.Combine("Library", "calibration_library_icon.png")),
                    () => new CalibrationPartsContainer())
            {
                IsReadOnly = true
            });

            this.ChildContainers.Add(
                new DynamicContainerLink(
                    () => "Primitives".Localize(),
                    StaticData.Instance.LoadIcon(Path.Combine("Library", "folder.png")),
                    StaticData.Instance.LoadIcon(Path.Combine("Library", "primitives_library_icon.png")),
                    () => new PrimitivesContainer())
            {
                IsReadOnly = true
            });

            var forceAddQueue = false;

#if DEBUG
            forceAddQueue = true;
#endif
            // only add the queue if there are items in it
            var queueItems = QueueData.Instance.PrintItems.ToList();
            if (forceAddQueue || queueItems.Any())
            {
                this.ChildContainers.Add(
                    new DynamicContainerLink(
                        () => "Print Queue".Localize(),
                        StaticData.Instance.LoadIcon(Path.Combine("Library", "folder.png")),
                        StaticData.Instance.LoadIcon(Path.Combine("Library", "queue_icon.png")),
                        () => new PrintQueueContainer()));
            }

#if DEBUG
            this.ChildContainers.Add(
                new DynamicContainerLink(
                    () => "Pipe Works".Localize(),
                    StaticData.Instance.LoadIcon(Path.Combine("Library", "folder.png")),
                    null,
                    () => new PipeWorksContainer())
            {
                IsReadOnly = true
            });

            int index = 0;

            this.ChildContainers.Add(
                new DynamicContainerLink(
                    () => "Experimental".Localize(),
                    StaticData.Instance.LoadIcon(Path.Combine("Library", "folder.png")),
                    null,
                    () => new DynamicContainer()
            {
                Items = new List <ILibraryItem>()
                {
                    new GeneratorItem(
                        () => "Calibration Tab".Localize(),
                        async() => await XyCalibrationTabObject3D.Create())
                    {
                        DateCreated = new System.DateTime(index++)
                    },
                    new GeneratorItem(
                        () => "Calibration Face".Localize(),
                        async() => await XyCalibrationFaceObject3D.Create())
                    {
                        DateCreated = new System.DateTime(index++)
                    },
                    new GeneratorItem(
                        () => "Text2".Localize(),
                        async() => await TextPathObject3D.Create())
                    {
                        DateCreated = new System.DateTime(index++)
                    },
                    new GeneratorItem(
                        () => "Path".Localize(),
                        () =>
                    {
                        var storage = new VertexStorage();
                        storage.MoveTo(5, 5);
                        storage.LineTo(10, 5);
                        storage.LineTo(7.5, 10);
                        storage.ClosePolygon();

                        var path = new PathObject3D()
                        {
                            VertexSource = storage
                        };

                        return(Task.FromResult <IObject3D>(path));
                    })
                    {
                        DateCreated = new System.DateTime(index++)
                    },
                }
            })
            {
                IsReadOnly = true
            });
#endif
        }
Esempio n. 3
0
        public override void Load()
        {
            var library = ApplicationController.Instance.Library;

            long index        = DateTime.Now.Ticks;
            var  libraryItems = new List <GeneratorItem>()
            {
                new GeneratorItem(
                    () => "Cube".Localize(),
                    async() => await CubeObject3D.Create())
                {
                    DateCreated = new System.DateTime(index++)
                },
#if DEBUG
                new GeneratorItem(
                    () => "Calibration Tab".Localize(),
                    async() => await XyCalibrationTabObject3D.Create())
                {
                    DateCreated = new System.DateTime(index++)
                },
#endif
                new GeneratorItem(
                    () => "Pyramid".Localize(),
                    async() => await PyramidObject3D.Create())
                {
                    DateCreated = new System.DateTime(index++)
                },
                new GeneratorItem(
                    () => "Wedge".Localize(),
                    async() => await WedgeObject3D.Create())
                {
                    DateCreated = new System.DateTime(index++)
                },
                new GeneratorItem(
                    () => "Half Wedge".Localize(),
                    async() => await HalfWedgeObject3D.Create())
                {
                    DateCreated = new System.DateTime(index++)
                },
                new GeneratorItem(
                    () => "Text".Localize(),
                    async() => await TextObject3D.Create())
                {
                    DateCreated = new System.DateTime(index++)
                },
#if DEBUG
                new GeneratorItem(
                    () => "Text2".Localize(),
                    async() => await TextPathObject3D.Create())
                {
                    DateCreated = new System.DateTime(index++)
                },
#endif
                new GeneratorItem(
                    () => "Cylinder".Localize(),
                    async() => await CylinderObject3D.Create())
                {
                    DateCreated = new System.DateTime(index++)
                },
                new GeneratorItem(
                    () => "Cone".Localize(),
                    async() => await ConeObject3D.Create())
                {
                    DateCreated = new System.DateTime(index++)
                },
                new GeneratorItem(
                    () => "Half Cylinder".Localize(),
                    async() => await HalfCylinderObject3D.Create())
                {
                    DateCreated = new System.DateTime(index++)
                },
                new GeneratorItem(
                    () => "Torus".Localize(),
                    async() => await TorusObject3D.Create())
                {
                    DateCreated = new System.DateTime(index++)
                },
                new GeneratorItem(
                    () => "Ring".Localize(),
                    async() => await RingObject3D.Create())
                {
                    DateCreated = new System.DateTime(index++)
                },
                new GeneratorItem(
                    () => "Sphere".Localize(),
                    async() => await SphereObject3D.Create())
                {
                    DateCreated = new System.DateTime(index++)
                },
                new GeneratorItem(
                    () => "Half Sphere".Localize(),
                    async() => await HalfSphereObject3D.Create())
                {
                    DateCreated = new System.DateTime(index++)
                },
                new GeneratorItem(
                    () => "Image Converter".Localize(),
                    () =>
                {
                    // Construct an image
                    var imageObject = new ImageObject3D()
                    {
                        AssetPath = AggContext.StaticData.ToAssetPath(Path.Combine("Images", "mh-logo.png"))
                    };

                    // Construct a scene
                    var tempScene = new InteractiveScene();
                    tempScene.Children.Add(imageObject);
                    tempScene.SelectedItem = imageObject;

                    // Invoke ImageConverter operation, passing image and scene
                    ApplicationController.Instance.Graph.Operations["ImageConverter"].Operation(imageObject, tempScene);

                    // Return replacement object constructed in ImageConverter operation
                    var constructedComponent = tempScene.SelectedItem;
                    tempScene.Children.Remove(constructedComponent);

                    return(Task.FromResult <IObject3D>(constructedComponent));
                })
                {
                    DateCreated = new System.DateTime(index++)
                },
            };

            string title = "Primitive Shapes".Localize();

            foreach (var item in libraryItems)
            {
                item.Category = title;
                Items.Add(item);
            }
        }