// Start is called before the first frame update void Start() { Elevators = new List <GameObject>(); Floors = new List <GameObject>(); Monkeys = new List <GameObject>(); CallQueue = new List <CallRecord>(); // Calculate how many tiles wide the building should be if (numberOfElevators == 1) { tilesPerFloor = 2; } else { tilesPerFloor = numberOfElevators * 2 - 1; } // Calculate edges of the building to use as camera movement constraints topEdge = numberOfFloors * TILE_HEIGHT - MIN_CAMERA_SIZE; bottomEdge = -MIN_CAMERA_SIZE; leftEdge = -(tilesPerFloor * TILE_WIDTH) / 2; rightEdge = (tilesPerFloor * TILE_WIDTH) / 2; // Create elevators for (int i = 0; i < numberOfElevators; i++) { float xPosition = GetXPositionForTileIndex(i * 2); Elevators.Add(Instantiate(ElevatorPrefab, transform)); Elevators[i].transform.localPosition = new Vector3(xPosition, 0, 100); Elevators[i].GetComponent <Elevator>().Index = i; } // Create floors for (int i = 0; i < numberOfFloors; i++) { Floors.Add(Instantiate(FloorPrefab, transform)); Floors[i].transform.localPosition = new Vector3(0, -MIN_CAMERA_SIZE + TILE_HEIGHT * (i + 0.5f), 0); Floors[i].GetComponent <Floor>().Index = i; } // UI elements set up NormalViewButton.interactable = false; FloorSelector floorSelectorScript = FloorSelectorObject.GetComponent <FloorSelector>(); floorSelectorScript.UpdateNumberOfFloors(numberOfFloors); floorSelectorScript.AddFloorSelectionCancelledListener(HandleOnFloorSelectionCancelled); floorSelectorScript.AddFloorSelectedListener(HandleOnFloorSelected); FloorSelectorObject.SetActive(false); }
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { var uiapp = commandData.Application; var uidoc = uiapp.ActiveUIDocument; var doc = uidoc.Document; var view = uidoc.ActiveGraphicalView; var dimensionTypes = doc.TCollector <DimensionType>(); FloorSelector fsui = FloorSelector.Instance; fsui.LabelName.Text = "选择标注样式"; fsui.FloorBox.ItemsSource = dimensionTypes; fsui.FloorBox.DisplayMemberPath = "Name"; fsui.FloorBox.SelectedIndex = 0; // fsui.Title = "选择标注样式"; fsui.ShowDialog(); // var targetDimensionType = fsui.FloorBox.SelectionBoxItem as DimensionType; string targetDimensionTypeName = ((DimensionType)fsui.FloorBox.SelectionBoxItem).Name; // TaskDialog.Show("tips", targetDimensionTypeName); var filledRegions = FindFilledRegions(doc, view.Id); using (var transaction = new Transaction(doc, "filled regions dimensions")) { transaction.Start(); foreach (var filledRegion in filledRegions) { CreateDimensions(filledRegion, -1 * view.RightDirection, targetDimensionTypeName); CreateDimensions(filledRegion, view.UpDirection, targetDimensionTypeName); } transaction.Commit(); } return(Result.Succeeded); }
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { UIApplication uiapp = commandData.Application; UIDocument uidoc = uiapp.ActiveUIDocument; Document doc = uidoc.Document; Selection sel = uidoc.Selection; var acview = doc.ActiveView; var viewfamilytypes = doc.TCollector <ViewFamilyType>(); var viewplanfamilytype = viewfamilytypes.Where(m => m.ViewFamily == ViewFamily.FloorPlan).First(); var view3Dfamilytype = viewfamilytypes.Where(m => m.ViewFamily == ViewFamily.ThreeDimensional).First(); var levels = doc.TCollector <Level>(); FloorSelector fsui = FloorSelector.Instance; fsui.FloorBox.ItemsSource = levels; fsui.FloorBox.DisplayMemberPath = "Name"; fsui.FloorBox.SelectedIndex = 0; fsui.ShowDialog(); var targetfloor = fsui.FloorBox.SelectionBoxItem as Level; var upperfloor = levels.Where(m => m.Elevation > targetfloor.Elevation)?.OrderBy(m => m.Elevation)?.FirstOrDefault(); var categories = doc.Settings.Categories; var modelcategories = categories.Cast <Category>().Where(m => m.CategoryType == CategoryType.Model).ToList(); var filterslist = new List <ElementFilter>(); foreach (var modelcategory in modelcategories) { var categoryfilter = new ElementCategoryFilter(modelcategory.Id); filterslist.Add(categoryfilter); } var logicOrFilter = new LogicalOrFilter(filterslist); var collector = new FilteredElementCollector(doc); var modelelements = collector.WherePasses(logicOrFilter).WhereElementIsNotElementType().Where(m => m.Category.CategoryType == CategoryType.Model); var modelelementsids = modelelements.Select(m => m.Id).ToList(); var temboundingbox = default(BoundingBoxXYZ); Transaction temtran = new Transaction(doc, "temtransaction"); temtran.Start(); var temgroup = doc.Create.NewGroup(modelelementsids); var temview = ViewPlan.Create(doc, viewplanfamilytype.Id, targetfloor.Id); temboundingbox = temgroup.get_BoundingBox(temview); temtran.RollBack(); var zMin = targetfloor.Elevation; var zMax = upperfloor?.Elevation ?? temboundingbox.Max.Z; var oldmin = temboundingbox.Min; var oldmax = temboundingbox.Max; BoundingBoxXYZ newbox = new BoundingBoxXYZ(); newbox.Min = new XYZ(oldmin.X, oldmin.Y, zMin); newbox.Max = new XYZ(oldmax.X, oldmax.Y, zMax); var new3dview = default(View3D); doc.Invoke(m => { new3dview = View3D.CreateIsometric(doc, view3Dfamilytype.Id); new3dview.SetSectionBox(newbox); }, "楼层三维"); uidoc.ActiveView = new3dview; return(Result.Succeeded); }