Изменение типа Видового экрана (ViewPort)
Изменение типа Видового экрана (ViewPort)
Рассмотрим вопрос о том как можно изменить тип видового экрана изменив встроенный параметр ELEM_FAMILY_AND_TYPE_PARAM, который был рассмотрен Bettina Zimmermann из компании NTI Cadcenter A/S.
Вопрос: Я вставляю Видовые экраны на лист и я бы хотела изменить их тип на свой собственный. Как это можно сделать программно?
По умолчанию, используя метод Viewport.Create, создается видовой экран с типом «Название с линией». Я хочу изменить тип, например, на «Тест».
На скриншоте ниже можно увидеть тип «Тест», который я создала с помощью кнопки Копировать
Метод Viewport.Create не содержит каких-либо параметров, с помощью которых можно было бы задать тип.
- Autodesk.Revit.DB.Viewport.Create(Document, viewSheet.Id, View.Id, zero )
Я все же надеюсь, что тип можно изменить каким-либо другим способом.
Ответ: Если вы работаете с видами или видовыми экранами, то первым делом я советую взглянуть на статью Steve Mycynek CP3133 Using the Revit Schedule and View APIs (на англ.), в которой рассказано все что вы можете делать с видами с помощью RevitAPI.
Также я бы посоветовал более тщательно исследовать интересующие вас элементы с помощью утилиты RevitLookup.
Метод Element.GetTypeId() дает вам доступ к данным, которые вам необходимы, но, к сожалению, оно предназначено только для чтения. Может быть вы сможете найти какой либо параметр, обозначающий тип видового экрана и который все же можно будет изменить?
Отклик: Я действительно нашла такой параметр, который был хорошо запрятан там, где я не ожидала.
Моей первой мыслью было поискать какое-нибудь свойство, для смены типа. Например, как для стены, задав свойство WallType wall.WallType = newWallType, так как видовой экран также является встроенным семейством, как и стена.
При создании стены также предусмотрен параметр, для определения типа создаваемой стены.
- DB.Wall.Create( Document, Line, WallType.Id, Level.Id, 11, 0, False, IsStructural );
Но, как я уже говорила, метод создания видового экрана не содержит такого параметра
- Autodesk.Revit.DB.Viewport.Create(Document, viewSheet.Id, View.Id, zero )
Но не смотря, я нашла параметр, который я могу изменить для изменения типа видового экрана - ELEM_FAMILY_AND_TYPE_PARAM.
Я создала пример на VB.NET для демонстрации использования этого способа.
1) Выберите лист с двумя видовыми экранами на нем, например, два плана этажа.
2) Измените тип одного из видовых экранов на какой-нибудь другой (см. ниже)
3) Выберите оба видовых экрана и запустите команду из тестового проекта. Последний выбранный видовой экран будет иметь тот же тип, что и первый.
Лист с видовыми экранами
По умолчанию создается видовой экран с типом «Название с линией». Я создала новый тип «Тест» без заголовка и выносной линии. Создавала я новый тип с помощью кнопки Копировать.
Большое спасибо Bettina Zimmermann за ее исследование и пояснение.
Дополнение: Как ниже заметил Alexander Buschmann, RevitAPI содержит метод для изменения типа элемента – Element.ChangeTypeId(). Спасибо, Александр, за важное дополнение!
Источник: http://thebuildingcoder.typepad.com/blog/2013/01/changing-viewport-type.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=156.0
Отредактировано 15.08.2013 в 22:21:35