Exemple #1
0
        public void PushUpdatedInfomation(ModelTransformPair model)
        {
            if (editmode == ModelAdjustmentsDialog.EditMode.Rotation)
            {
                X_Slider.TrackPosition = model.transformNode.Rotation.X;
                Y_Slider.TrackPosition = model.transformNode.Rotation.Y;
                Z_Slider.TrackPosition = model.transformNode.Rotation.Z;
            }
            else if (editmode == ModelAdjustmentsDialog.EditMode.Scale)
            {
                X_Slider.TrackPosition = model.transformNode.Scale.X;
                Y_Slider.TrackPosition = model.transformNode.Scale.Y;
                Z_Slider.TrackPosition = model.transformNode.Scale.Z;
            }
            else
            {
                if (editmode != ModelAdjustmentsDialog.EditMode.Translation)
                {
                    return;
                }

                X_Slider.TrackPosition = model.transformNode.Translation.X;
                Y_Slider.TrackPosition = model.transformNode.Translation.Y;
            }
        }
        public override void Redo(PrinterView printerView)
        {
            ModelTransformPair modelById = printerView.GetModelByID(ObjectID);

            if (modelById == null)
            {
                return;
            }

            modelById.transformNode.TransformData = newTransform;
            printerView.PushUpdatedInfomation(modelById);
        }
Exemple #3
0
        public void PlaceObjectOnFloor(int selected_model_index)
        {
            if (ModelList.Count <= 0 || selected_model_index < 0)
            {
                return;
            }

            ModelTransformPair model = ModelList[selected_model_index];
            var vector3 = new M3D.Model.Utils.Vector3(0.0f, 0.0f, (float)(-model.modelSize.Min.Z + 1.0));

            model.transformNode.Translation.Z += vector3.Z;
            model.CalculateExtents();
        }
Exemple #4
0
        public static bool GenerateAndSaveIcon(ModelTransformPair model_transform, string icon_file, Vector2 icon_size, Color4 bgColor, GLControl glcontrol, ImageCapture.PreviewImageCallback callback)
        {
            Bitmap icon = ImageCapture.GenerateIcon(model_transform.modelNode, glcontrol, icon_size, new M3D.Model.Utils.Vector3(model_transform.transformNode.Rotation), new Color4(0.8431373f, 0.8901961f, 0.9921569f, 1f));

            if (icon == null)
            {
                return(false);
            }

            ImageCapture.SaveIcon(icon, icon_file);
            if (callback != null)
            {
                var fileName = string.IsNullOrEmpty(model_transform.modelNode.zipFileName) ? model_transform.modelNode.fileName : model_transform.modelNode.zipFileName;
                callback(fileName, icon_file);
            }
            return(true);
        }
Exemple #5
0
 public int AddModel(Graphics.Ext3D.ModelRendering.Model model, out ModelTransformPair modtrans_pair)
 {
     modtrans_pair = new ModelTransformPair
     {
         modelNode = new Model3DNode(3200)
     };
     modtrans_pair.modelNode.SetModel(model);
     modtrans_pair.modelNode.Ambient   = new Color4(modelColor.R / 4f, modelColor.G / 4f, modelColor.B / 4f, 1f);
     modtrans_pair.modelNode.Diffuse   = modelColor;
     modtrans_pair.modelNode.Specular  = new Color4(0.5f, 0.5f, 0.5f, 1f);
     modtrans_pair.modelNode.Shininess = 100f;
     modtrans_pair.transformNode       = new TransformationNode(3100, ObjectToPrinterSpace);
     modtrans_pair.transformNode.AddChildElement(modtrans_pair.modelNode);
     modtrans_pair.CalculateExtents();
     ObjectToPrinterSpace.AddChildElement(modtrans_pair.transformNode);
     ModelList.Add(modtrans_pair);
     return(ModelList.Count - 1);
 }
Exemple #6
0
        public void GenerateIconForLibrary(ModelTransformPair model_transform)
        {
            var zipFileName = model_transform.modelNode.zipFileName;

            if (!string.IsNullOrEmpty(zipFileName))
            {
                if (zipFileName == "313a13a6-9edf-44c7-a81d-50b914e423cc-6bb0e036-df11-4d66-82b3-8b7f0de03d2c")
                {
                    return;
                }

                RecentModelHistory.RecentRecord record = libraryData.GetRecord(zipFileName);
                if (record != null && !string.IsNullOrEmpty(record.iconfilename))
                {
                    ImageGenerated(zipFileName, record.iconfilename);
                    return;
                }
            }
            var iconFileName = GenerateIconFileName(model_transform.modelNode.fileName);

            ImageCapture.GenerateAndSaveIcon(model_transform, iconFileName, new Vector2(400f, 400f), new Color4(0.8431373f, 0.8901961f, 0.9921569f, 1f), glControl, new ImageCapture.PreviewImageCallback(ImageGenerated));
        }
Exemple #7
0
        private void ObjectWithinBounds(int selected_model_index)
        {
            ResetExceedBounds();
            lock (exceedsBoundsSync)
            {
                if (ModelList.Count <= 0 || selected_model_index < 0)
                {
                    return;
                }

                ModelTransformPair             model = ModelList[selected_model_index];
                List <M3D.Model.Utils.Vector3> usingTransformMatric = model.modelNode.CalculateBoundingUsingTransformMatric(model.transformNode.GetTransformationMatrix());
                StackedBoundingBox             printableRegion      = PrinterBoundsConst.PrintableRegion;
                foreach (M3D.Model.Utils.Vector3 vector3 in usingTransformMatric)
                {
                    var count = printableRegion.bounds_list.Count;
                    for (var index = 0; index < count; ++index)
                    {
                        if (vector3.Z >= (double)printableRegion.bounds_list[index].min.z && (index >= count - 1 || vector3.Z <= (double)printableRegion.bounds_list[index].max.z))
                        {
                            var num = printableRegion.bounds_list[index].OutOfBoundsCheck(vector3.X, vector3.Y, vector3.Z);
                            if ((num & 1) != 0)
                            {
                                ExceedsBoundsGeometry[index, 1].Visible = true;
                            }

                            if ((num & 2) != 0)
                            {
                                ExceedsBoundsGeometry[index, 0].Visible = true;
                            }

                            if ((num & 4) != 0)
                            {
                                ExceedsBoundsGeometry[index, 2].Visible = true;
                            }

                            if ((num & 8) != 0)
                            {
                                ExceedsBoundsGeometry[index, 3].Visible = true;
                            }

                            if ((num & 32) != 0 && index + 1 == printableRegion.bounds_list.Count)
                            {
                                ExceedsBoundsGeometry[index, 4].Visible = true;
                            }
                        }
                    }
                }
                ObjectExceedsBounds = false;
                for (var index1 = 0; index1 < ExceedsBoundsGeometry.GetLength(0) && !ObjectExceedsBounds; ++index1)
                {
                    for (var index2 = 0; index2 < ExceedsBoundsGeometry.GetLength(1) && !ObjectExceedsBounds; ++index2)
                    {
                        if (ExceedsBoundsGeometry[index1, index2] != null)
                        {
                            ObjectExceedsBounds = ExceedsBoundsGeometry[index1, index2].Visible;
                        }
                    }
                }
            }
        }