static void Main(string[] args)
        {
            GlobalInstance.Initialize();

            WindowCanvas canvas = new WindowCanvas("AnyCAD", false);

            canvas.Initialize(0, 600, 400);


            var box   = ShapeBuilder.MakeBox(GP.XOY(), 10, 20, 30);
            var node  = BrepSceneNode.Create(box, null, null, 0.01);
            var scene = canvas.GetContext().GetScene();

            scene.AddNode(node);
            //canvas.Run();
            scene.UpdateWorld();
            canvas.ZoomToExtend();
            canvas.Redraw(0);
            canvas.CaptureScreenShot("image.bmp");
            canvas.Destroy();

            GlobalInstance.Destroy();
        }
Beispiel #2
0
        /// <summary>
        ///     Updates window.
        /// </summary>
        public void UpdateDisplay()
        {
            if (WindowCanvas == null)
            {
                throw new NullReferenceException(nameof(WindowCanvas));
            }
            var canvasTransform = WindowCanvas.GetComponent <RectTransform>();

            if (canvasTransform == null)
            {
                return;
            }

            #region SIZE_CLAMP

            if (ClampWindowSize)
            {
                if (RootTransform.sizeDelta.x < MinWindowSize.x)
                {
                    RootTransform.sizeDelta = new Vector2(MinWindowSize.x, RootTransform.sizeDelta.y);
                }
                if (RootTransform.sizeDelta.y < MinWindowSize.y)
                {
                    RootTransform.sizeDelta = new Vector2(RootTransform.sizeDelta.x, MinWindowSize.y);
                }
                if (RootTransform.sizeDelta.x > MaxWindowSize.x)
                {
                    RootTransform.sizeDelta = new Vector2(MaxWindowSize.x, RootTransform.sizeDelta.y);
                }
                if (RootTransform.sizeDelta.y > MaxWindowSize.y)
                {
                    RootTransform.sizeDelta = new Vector2(RootTransform.sizeDelta.x, MaxWindowSize.y);
                }
            }

            #endregion

            #region SCREEN_CLAMP

            switch (CurrentAnchorName)
            {
            case JEMInterfaceWindowAnchorName.Unknown:
                break;

            case JEMInterfaceWindowAnchorName.TopLeft:
            {
                var minScreen = new Vector2(RootTransform.sizeDelta.x / 2f, -(RootTransform.sizeDelta.y / 2f));

                if (RootTransform.anchoredPosition.y > minScreen.y)
                {
                    RootTransform.anchoredPosition = new Vector2(RootTransform.anchoredPosition.x, minScreen.y);
                }
                if (RootTransform.anchoredPosition.x < minScreen.x)
                {
                    RootTransform.anchoredPosition = new Vector2(minScreen.x, RootTransform.anchoredPosition.y);
                }

                var maxScreen = new Vector2(canvasTransform.sizeDelta.x - RootTransform.sizeDelta.x / 2f,
                                            -(canvasTransform.sizeDelta.y - RootTransform.sizeDelta.y / 2f));

                if (RootTransform.anchoredPosition.y < maxScreen.y)
                {
                    RootTransform.anchoredPosition = new Vector2(RootTransform.anchoredPosition.x, maxScreen.y);
                }
                if (RootTransform.anchoredPosition.x > maxScreen.x)
                {
                    RootTransform.anchoredPosition = new Vector2(maxScreen.x, RootTransform.anchoredPosition.y);
                }
            }
            break;

            case JEMInterfaceWindowAnchorName.Top:
            {
                var minScreen = new Vector2(-(canvasTransform.sizeDelta.x / 2f - RootTransform.sizeDelta.x / 2f),
                                            -(RootTransform.sizeDelta.y / 2f));

                if (RootTransform.anchoredPosition.y > minScreen.y)
                {
                    RootTransform.anchoredPosition = new Vector2(RootTransform.anchoredPosition.x, minScreen.y);
                }
                if (RootTransform.anchoredPosition.x < minScreen.x)
                {
                    RootTransform.anchoredPosition = new Vector2(minScreen.x, RootTransform.anchoredPosition.y);
                }

                var maxScreen = new Vector2(canvasTransform.sizeDelta.x / 2f - RootTransform.sizeDelta.x / 2f,
                                            -(canvasTransform.sizeDelta.y - RootTransform.sizeDelta.y / 2f));

                if (RootTransform.anchoredPosition.y < maxScreen.y)
                {
                    RootTransform.anchoredPosition = new Vector2(RootTransform.anchoredPosition.x, maxScreen.y);
                }
                if (RootTransform.anchoredPosition.x > maxScreen.x)
                {
                    RootTransform.anchoredPosition = new Vector2(maxScreen.x, RootTransform.anchoredPosition.y);
                }
            }
            break;

            case JEMInterfaceWindowAnchorName.TopRight:
            {
                var minScreen = new Vector2(-RootTransform.sizeDelta.x / 2f, -(RootTransform.sizeDelta.y / 2f));

                if (RootTransform.anchoredPosition.y > minScreen.y)
                {
                    RootTransform.anchoredPosition = new Vector2(RootTransform.anchoredPosition.x, minScreen.y);
                }
                if (RootTransform.anchoredPosition.x > minScreen.x)
                {
                    RootTransform.anchoredPosition = new Vector2(minScreen.x, RootTransform.anchoredPosition.y);
                }

                var maxScreen = new Vector2(-(canvasTransform.sizeDelta.x - RootTransform.sizeDelta.x / 2f),
                                            -(canvasTransform.sizeDelta.y - RootTransform.sizeDelta.y / 2f));

                if (RootTransform.anchoredPosition.y < maxScreen.y)
                {
                    RootTransform.anchoredPosition = new Vector2(RootTransform.anchoredPosition.x, maxScreen.y);
                }
                if (RootTransform.anchoredPosition.x < maxScreen.x)
                {
                    RootTransform.anchoredPosition = new Vector2(maxScreen.x, RootTransform.anchoredPosition.y);
                }
            }
            break;

            case JEMInterfaceWindowAnchorName.MiddleLeft:
            {
                var minScreen = new Vector2(RootTransform.sizeDelta.x / 2f,
                                            canvasTransform.sizeDelta.y / 2f - RootTransform.sizeDelta.y / 2f);

                if (RootTransform.anchoredPosition.y > minScreen.y)
                {
                    RootTransform.anchoredPosition = new Vector2(RootTransform.anchoredPosition.x, minScreen.y);
                }
                if (RootTransform.anchoredPosition.x < minScreen.x)
                {
                    RootTransform.anchoredPosition = new Vector2(minScreen.x, RootTransform.anchoredPosition.y);
                }

                var maxScreen = new Vector2(canvasTransform.sizeDelta.x - RootTransform.sizeDelta.x / 2f,
                                            -(canvasTransform.sizeDelta.y / 2f - RootTransform.sizeDelta.y / 2f));

                if (RootTransform.anchoredPosition.y < maxScreen.y)
                {
                    RootTransform.anchoredPosition = new Vector2(RootTransform.anchoredPosition.x, maxScreen.y);
                }
                if (RootTransform.anchoredPosition.x > maxScreen.x)
                {
                    RootTransform.anchoredPosition = new Vector2(maxScreen.x, RootTransform.anchoredPosition.y);
                }
            }
            break;

            case JEMInterfaceWindowAnchorName.Middle:
            {
                var minScreen = new Vector2(
                    -(canvasTransform.sizeDelta.x / 2f - RootTransform.sizeDelta.x / 2f),
                    canvasTransform.sizeDelta.y / 2f - RootTransform.sizeDelta.y / 2f);
                if (RootTransform.anchoredPosition.y > minScreen.y)
                {
                    RootTransform.anchoredPosition = new Vector2(RootTransform.anchoredPosition.x, minScreen.y);
                }
                if (RootTransform.anchoredPosition.x < minScreen.x)
                {
                    RootTransform.anchoredPosition = new Vector2(minScreen.x, RootTransform.anchoredPosition.y);
                }

                var maxScreen = new Vector2(canvasTransform.sizeDelta.x / 2f - RootTransform.sizeDelta.x / 2f,
                                            -(canvasTransform.sizeDelta.y / 2f - RootTransform.sizeDelta.y / 2f));

                if (RootTransform.anchoredPosition.y < maxScreen.y)
                {
                    RootTransform.anchoredPosition = new Vector2(RootTransform.anchoredPosition.x, maxScreen.y);
                }
                if (RootTransform.anchoredPosition.x > maxScreen.x)
                {
                    RootTransform.anchoredPosition = new Vector2(maxScreen.x, RootTransform.anchoredPosition.y);
                }
            }
            break;

            case JEMInterfaceWindowAnchorName.MiddleRight:
            {
                var minScreen = new Vector2(-RootTransform.sizeDelta.x / 2f,
                                            canvasTransform.sizeDelta.y / 2f - RootTransform.sizeDelta.y / 2f);

                if (RootTransform.anchoredPosition.y > minScreen.y)
                {
                    RootTransform.anchoredPosition = new Vector2(RootTransform.anchoredPosition.x, minScreen.y);
                }
                if (RootTransform.anchoredPosition.x > minScreen.x)
                {
                    RootTransform.anchoredPosition = new Vector2(minScreen.x, RootTransform.anchoredPosition.y);
                }

                var maxScreen = new Vector2(-(canvasTransform.sizeDelta.x - RootTransform.sizeDelta.x / 2f),
                                            -(canvasTransform.sizeDelta.y / 2f - RootTransform.sizeDelta.y / 2f));

                if (RootTransform.anchoredPosition.y < maxScreen.y)
                {
                    RootTransform.anchoredPosition = new Vector2(RootTransform.anchoredPosition.x, maxScreen.y);
                }
                if (RootTransform.anchoredPosition.x < maxScreen.x)
                {
                    RootTransform.anchoredPosition = new Vector2(maxScreen.x, RootTransform.anchoredPosition.y);
                }
            }
            break;

            case JEMInterfaceWindowAnchorName.BottomLeft:
            {
                var minScreen = new Vector2(RootTransform.sizeDelta.x / 2f, RootTransform.sizeDelta.y / 2f);

                if (RootTransform.anchoredPosition.y < minScreen.y)
                {
                    RootTransform.anchoredPosition = new Vector2(RootTransform.anchoredPosition.x, minScreen.y);
                }
                if (RootTransform.anchoredPosition.x < minScreen.x)
                {
                    RootTransform.anchoredPosition = new Vector2(minScreen.x, RootTransform.anchoredPosition.y);
                }

                var maxScreen = new Vector2(canvasTransform.sizeDelta.x - RootTransform.sizeDelta.x / 2f,
                                            canvasTransform.sizeDelta.y - RootTransform.sizeDelta.y / 2f);

                if (RootTransform.anchoredPosition.y > maxScreen.y)
                {
                    RootTransform.anchoredPosition = new Vector2(RootTransform.anchoredPosition.x, maxScreen.y);
                }
                if (RootTransform.anchoredPosition.x > maxScreen.x)
                {
                    RootTransform.anchoredPosition = new Vector2(maxScreen.x, RootTransform.anchoredPosition.y);
                }
            }
            break;

            case JEMInterfaceWindowAnchorName.Bottom:
            {
                var minScreen = new Vector2(
                    -(canvasTransform.sizeDelta.x / 2f - RootTransform.sizeDelta.x / 2f),
                    RootTransform.sizeDelta.y / 2f);

                if (RootTransform.anchoredPosition.y < minScreen.y)
                {
                    RootTransform.anchoredPosition = new Vector2(RootTransform.anchoredPosition.x, minScreen.y);
                }
                if (RootTransform.anchoredPosition.x < minScreen.x)
                {
                    RootTransform.anchoredPosition = new Vector2(minScreen.x, RootTransform.anchoredPosition.y);
                }

                var maxScreen = new Vector2(canvasTransform.sizeDelta.x / 2f - RootTransform.sizeDelta.x / 2f,
                                            canvasTransform.sizeDelta.y - RootTransform.sizeDelta.y / 2f);

                if (RootTransform.anchoredPosition.y > maxScreen.y)
                {
                    RootTransform.anchoredPosition = new Vector2(RootTransform.anchoredPosition.x, maxScreen.y);
                }
                if (RootTransform.anchoredPosition.x > maxScreen.x)
                {
                    RootTransform.anchoredPosition = new Vector2(maxScreen.x, RootTransform.anchoredPosition.y);
                }
            }
            break;

            case JEMInterfaceWindowAnchorName.BottomRight:
            {
                var minScreen = new Vector2(-RootTransform.sizeDelta.x / 2f, RootTransform.sizeDelta.y / 2f);

                if (RootTransform.anchoredPosition.y < minScreen.y)
                {
                    RootTransform.anchoredPosition = new Vector2(RootTransform.anchoredPosition.x, minScreen.y);
                }
                if (RootTransform.anchoredPosition.x > minScreen.x)
                {
                    RootTransform.anchoredPosition = new Vector2(minScreen.x, RootTransform.anchoredPosition.y);
                }

                var maxScreen = new Vector2(-(canvasTransform.sizeDelta.x - RootTransform.sizeDelta.x / 2f),
                                            canvasTransform.sizeDelta.y - RootTransform.sizeDelta.y / 2f);

                if (RootTransform.anchoredPosition.y > maxScreen.y)
                {
                    RootTransform.anchoredPosition = new Vector2(RootTransform.anchoredPosition.x, maxScreen.y);
                }
                if (RootTransform.anchoredPosition.x < maxScreen.x)
                {
                    RootTransform.anchoredPosition = new Vector2(maxScreen.x, RootTransform.anchoredPosition.y);
                }
            }
            break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            #endregion
        }