Exemplo n.º 1
0
 void Awake()
 {
     _allRooms = new Dictionary <Vector3, Room>();
     Debug.Assert(_roomPrefab != null);
     Debug.Assert(_roomPrefab.GetComponent <RoomDimensions>() != null);
     _roomDimensions = _roomPrefab.GetComponent <RoomDimensions>();
 }
Exemplo n.º 2
0
        public void TestStartingPointOutsideRoom()
        {
            RoomDimensions room  = new RoomDimensions(1, 1);
            Point          point = new Point(1, 0);

            Exception ex = Assert
                           .Throws <IllegalStartingPointException>(() => new Robot(room, point, 'W'));
        }
Exemplo n.º 3
0
        public void TestOneByOneRoom()
        {
            RoomDimensions room  = new RoomDimensions(1, 1);
            Point          point = new Point(0, 0);
            Robot          robot = new Robot(room, point, 'W');

            Assert.Equal("0 0 E", robot.Move("RRFFFFFFFF"));
        }
Exemplo n.º 4
0
        public void TestTouchingUpperBoundaries()
        {
            RoomDimensions room  = new RoomDimensions(4, 4);
            Point          point = new Point(1, 1);
            Robot          robot = new Robot(room, point, 'W');

            Assert.Equal("3 1 E", robot.Move("RRFFFFFFFF"));
        }
Exemplo n.º 5
0
        public void TestCirclingExample()
        {
            RoomDimensions room  = new RoomDimensions(10, 10);
            Point          point = new Point(0, 0);
            Robot          robot = new Robot(room, point, 'N');

            Assert.Equal("0 0 N", robot.Move("FRFRFRFRFRFRFRFRF"));
        }
Exemplo n.º 6
0
        public void TestGivenExample2()
        {
            RoomDimensions room  = new RoomDimensions(5, 5);
            Point          point = new Point(0, 0);
            Robot          robot = new Robot(room, point, 'E');

            Assert.Equal("3 1 E", robot.Move("RFLFFLRF"));
        }
Exemplo n.º 7
0
        public void TestGivenExample1()
        {
            RoomDimensions room  = new RoomDimensions(5, 5);
            Point          point = new Point(1, 2);
            Robot          robot = new Robot(room, point, 'N');

            Assert.Equal("1 3 N", robot.Move("RFRFFRFRF"));
        }
Exemplo n.º 8
0
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            var uiapp = commandData.Application;
            var uidoc = uiapp.ActiveUIDocument;
            var doc   = uidoc.Document;

            var handler = new GridInstallEvent();
            var exEvent = ExternalEvent.Create(handler);

            var grid   = new GridSetup(exEvent, handler);
            var window = WindowSetup(grid);

            //----------------------------------------------------------------------------------------

            var  selection = uidoc.Selection;
            Room newRoom   = null;

            //-----User select existing Room first-----
            if (selection.GetElementIds().Count > 0)
            {
                foreach (var item in selection.GetElementIds())
                {
                    var elementType = doc.GetElement(item);
                    if (elementType.ToString() == typeof(Room).ToString())
                    {
                        newRoom = elementType as Room;
                    }
                }
            }

            using (var transaction = new Transaction(doc, "Get room parameters"))
            {
                transaction.Start();
                var view = doc.ActiveView;
                if (newRoom == null)
                {
                    try
                    {
                        if (uidoc.ActiveView.SketchPlane == null || view.GenLevel == null)
                        {
                            TaskDialog.Show("Section View", "Please switch to level view.");
                            return(Result.Cancelled);
                        }

                        var point = selection.PickPoint("Point to create a room");
                        newRoom = doc.Create.NewRoom(view.GenLevel, new UV(point.X, point.Y));
                    }
                    catch (OperationCanceledException)
                    {
                        return(Result.Cancelled);
                    }
                }
                //----------------------------------------------------------------------------------------
                var box = newRoom.get_BoundingBox(view);
                if (box == null)
                {
                    return(Result.Failed);
                }


                PointF roomMin = new PointF();
                roomMin.X = (float)(box.Min.X * FeetToMil);
                roomMin.Y = (float)(box.Min.Y * FeetToMil);

                PointF roomMax = new PointF();
                roomMax.X = (float)(box.Max.X * FeetToMil);
                roomMax.Y = (float)(box.Max.Y * FeetToMil);

                var roomDimensions = new RoomDimensions();
                grid.Scale      = roomDimensions.GetScale(roomMin, roomMax, grid.CanvasSize);
                grid.RevitWalls = roomDimensions.GetWalls(newRoom);
                if (grid.RevitWalls.Count == 0)
                {
                    TaskDialog.Show("Error", "Room not detected");
                    return(Result.Cancelled);
                }
                grid.Derrivation = GetDerrivation(box, grid);

                var bBox = new WpfCoordinates();
                grid.BoundingBoxLines = bBox.GetBoundingBox(roomMin, roomMax, grid);

                SymbolPreselectCheck(window);
                grid.DrawWalls();

                transaction.RollBack();
            }

            grid.TextBoxScale.Text = "Scale 1: " + grid.Scale;

            return(Result.Succeeded);
        }