Exemplo n.º 1
0
        protected override Element CreateHostGeometry(HorizontalFinishingResult res)
        {
            try {
                /*CurveArray mainProfileWithDoors = res.MainProfile;
                 * foreach (FamilyInstance door in new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Doors))
                 * {
                 * if (FinishingData.IsElementCollideRoom(res.Room, door))
                 * {
                 *  Curve c = ModelCurveCreator.GetFamilyInstanceCutBaseLine(door);
                 *  XYZ ptSt = c.GetEndPoint(0);
                 *  XYZ ptEnd = c.GetEndPoint(1);
                 *
                 *  mainProfileWithDoors.get_Item(0).Project
                 * }
                 * }*/


                return(doc.Create.NewFloor(res.MainProfile, res.FinishingType as FloorType, res.Level, false));
            }
            catch (Autodesk.Revit.Exceptions.ArgumentException e)
            {
                ModelCurveCreator mmc = new ModelCurveCreator(doc);
                mmc.MakeModelCurve(res.MainProfile);
                mmc.DrawGroup(res.MainProfile, "Незамкнутый контур помещения #" + res.Room.Number.ToString());
                Debug.WriteLine(e.ToString());
                TaskDialog td = new TaskDialog("Предупреждение");
                td.MainIcon        = TaskDialogIcon.TaskDialogIconWarning;
                td.MainInstruction = string.Format("Помещение {0} имеет незамкнутый внешний контур. создание отделки пола для него было пропущено", res.Room.Number);
                td.MainContent     = "Проверьте контур помещения. Он автоматически сгенерирован, проверьте группы моделей";
                td.Show();
                return(null);
            }
        }
Exemplo n.º 2
0
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            Document  doc       = commandData.Application.ActiveUIDocument.Document;
            Selection selection = commandData.Application.ActiveUIDocument.Selection;
            SpatialElementBoundaryOptions opt = new SpatialElementBoundaryOptions();
            ModelCurveCreator             mmc = new ModelCurveCreator(doc);

            IList <Reference> rooms = selection.PickObjects(ObjectType.Element, new RoomFilter(), "Выберите помещения");

            try
            {
                using (Transaction tr = new Transaction(doc, "Создание контуров"))
                {
                    tr.Start();
                    foreach (Reference roomref in rooms)
                    {
                        CurveArray     curves = new CurveArray();
                        SpatialElement room   = doc.GetElement(roomref.ElementId) as SpatialElement;
                        foreach (var boundary in CurveUtils.GetCurvesListFromSpatialElement(room))
                        {
                            foreach (var curve in boundary)
                            {
                                curves.Append(curve);
                            }
                        }
                        mmc.DrawGroup(curves, string.Format("Контур {0} #{1}", room.Category.Name, room.Number));
                    }
                    TaskDialog.Show("Результат", "Создано групп контуров: " + rooms.Count.ToString());
                    tr.Commit();
                }
            }
            catch
            {
                return(Result.Failed);
            }
            return(Result.Succeeded);
        }