ADN Open CIS
Сообщество программистов Autodesk в СНГ

15/08/2013

Изменение типа Видового экрана (ViewPort)

Изменение типа Видового экрана (ViewPort)

Рассмотрим вопрос о том как можно изменить тип видового экрана изменив встроенный параметр ELEM_FAMILY_AND_TYPE_PARAM, который был рассмотрен Bettina Zimmermann из компании NTI Cadcenter A/S.

Вопрос: Я вставляю Видовые экраны на лист и я бы хотела изменить их тип на свой собственный. Как это можно сделать программно?

По умолчанию, используя метод Viewport.Create, создается видовой экран с типом «Название с линией». Я хочу изменить тип, например, на «Тест».

На скриншоте ниже можно увидеть тип «Тест», который я создала с помощью кнопки Копировать

 

Метод Viewport.Create не содержит каких-либо параметров, с помощью которых можно было бы задать тип.

Код - C#: [Выделить]
  1. 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, так как видовой экран также является встроенным семейством, как и стена.

При создании стены также предусмотрен параметр, для определения типа создаваемой стены.

Код - C#: [Выделить]
  1. DB.Wall.Create( Document, Line, WallType.Id, Level.Id, 11, 0, False, IsStructural );

Но, как я уже говорила,  метод создания видового экрана не содержит такого параметра

Код - C#: [Выделить]
  1. 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
Отредактировано 15.08.2013 в 22:21:35