Статьи > Тестирование статей

[Revit API] - Граница подрезки вида

(1/1)

Андрей Фазлеев:
В примере справки показано создание области подрезки вида по помещению.

Опишу принцип работы на примере построения прямоугольной границы подрезки вида:

--- Код - C# [Выбрать] ---        public void ChangeViewCropRegion(View v, UV ptMin, UV ptMax)        {            if (v.ViewType == ViewType.ProjectBrowser)            {                throw new ArgumentException("Текущий вид - Диспетчер проекта. Перейдите на вид модели");            }             // Получение объекта для управления границами подрезки            ViewCropRegionShapeManager manager = v.GetCropRegionShapeManager();             // Обработка случая, когда на виде ни разу не была активарована подрезка вида            if (!manager.Valid && !v.CropBoxVisible)            {                v.CropBoxVisible = true;            }             // Проверка возможности назначения границ подрезки вида            if (manager.Valid)            {                // Создание списка точек для построения контура                List<XYZ> points = new List<XYZ>                           {                                                                  ConvertUV2XYZ(v,ptMin),                                  ConvertUV2XYZ(v,new UV(ptMax.U,ptMin.V)),                                  ConvertUV2XYZ(v,ptMax),                                  ConvertUV2XYZ(v,new UV(ptMin.U,ptMax.V)),                                  ConvertUV2XYZ(v,ptMin)                           };                 // Создание объекта цепочки кривых                CurveLoop loop = new CurveLoop();                 // Добавление отрезков в цепочку кривых                for (int i = 1; i < points.Count; i++)                {                    loop.Append(Line.CreateBound(points[i - 1], points[i]));                }                 // Назначение границ подрезки                manager.SetCropRegionShape(loop);            }            else            {                throw new ArgumentException("Данный вид не предназначен для создания границы подрезки");            }         }
 Небольшой метод для перевода координат из локальной системы в систему модели:

--- Код - C# [Выбрать] ---        private XYZ ConvertUV2XYZ(View v, UV pt)        {            return v.Origin + v.UpDirection * pt.V + v.RightDirection * pt.U;        }
Минимальный тестовый пример можно скачать в прикреплённом файле.
Запуск макроса выполняется из диспетчера макросов.

Удачи!

Навигация

[0] Главная страница сообщений

Перейти к полной версии