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

ADN Club => Revit API => Тема начата: Biorn от 25-04-2018, 17:14:31

Название: Как создать элемент семейства аннотаций?
Отправлено: Biorn от 25-04-2018, 17:14:31
Проблема вот в чем:
Нужно добавить в активный вид элемент из семейства Annotation Symbol.
Однако, не знаю какой командой.
Нашел на форуме решение, но вызов через doc.Create.NewAnnotationSymbol не работает. Похоже, что в современном Revit API такая функция не вызывается.
Ссылка: http://forums.augi.com/showthread.php?144940-Create-New-Annotation-Symbol

Нид хелп. Команда добавления из Annotation Symbol
Название: Re: Как создать элемент семейства аннотаций?
Отправлено: Александр Игнатович от 25-04-2018, 17:28:42
День добрый. Посмотрите метод IndependentTag.Create
Название: Re: Как создать элемент семейства аннотаций?
Отправлено: Biorn от 25-04-2018, 17:36:30
Но ведь IndependenTag это другое семейство. Они не связаны. Мне нужна не марка, а именно аннотация, которую я до этого загружаю в проект.
То есть:
1) Загрузка элемента семейства Annotation Symbol в проект
2) Призыв из глубин ада создание этого элемента в активном виде
Название: Re: Как создать элемент семейства аннотаций?
Отправлено: Александр Игнатович от 25-04-2018, 17:39:11
Код - C# [Выбрать]
  1. NewFamilyInstance Method (XYZ, FamilySymbol, View)

пробовали?
Название: Re: Как создать элемент семейства аннотаций?
Отправлено: Biorn от 25-04-2018, 18:00:59
Попробовал:
Код - C# [Выбрать]
  1. AnnotationSymbol annotation = doc.Create.NewFamilyInstance Method (XYZ, FamilySymbol, View);
Вижуха пишет ошибку: Не удается преобразовать группу методов "NewFamilyInstance" в тип, не являющийся делегатом "AnnotationSymbol"

Похоже не то
Название: Re: Как создать элемент семейства аннотаций?
Отправлено: Александр Игнатович от 25-04-2018, 18:27:46
Ну вообще говоря, метод рабочий. Код для Iron Python:
Код - Python [Выбрать]
  1. def getSymbolType():
  2.         col = FilteredElementCollector(doc)
  3.        
  4.         return col.OfClass(FamilySymbol).OfCategory(BuiltInCategory.OST_GenericAnnotation).FirstElement()
  5.        
  6. familySymbol = getSymbolType()
  7.  
  8. tx = Transaction(doc, "create annotation")
  9. tx.Start()
  10.  
  11. doc.Create.NewFamilyInstance(XYZ.Zero, familySymbol, doc.ActiveView);
  12.  
  13. tx.Commit()
  14.  
Название: Re: Как создать элемент семейства аннотаций?
Отправлено: Александр Ривилис от 25-04-2018, 20:22:28
Попробовал:
Код - C# [Выбрать]
  1. AnnotationSymbol annotation = doc.Create.NewFamilyInstance Method (XYZ, FamilySymbol, View);
Вижуха пишет ошибку: Не удается преобразовать группу методов "NewFamilyInstance" в тип, не являющийся делегатом "AnnotationSymbol"

Похоже не то
А "Method" тут зачем? Александр Игнатович просто скопировал из документации название метода (метод по-английски Method), вот туда слово "Method" и попало...
Название: Re: Как создать элемент семейства аннотаций?
Отправлено: Biorn от 25-04-2018, 20:54:46
Копирнул так. Естественно, я удалил это слово. На факт ошибки это не влияет
Название: Re: Как создать элемент семейства аннотаций?
Отправлено: Александр Ривилис от 25-04-2018, 21:05:04
А если так:
Код - C# [Выбрать]
  1. AnnotationSymbol annotation = doc.Create.NewFamilyInstance Method (XYZ, FamilySymbol, View) as AnnotationSymbol;
или так:
Код - C# [Выбрать]
  1. AnnotationSymbol annotation = (AnnotationSymbol) doc.Create.NewFamilyInstance Method (XYZ, FamilySymbol, View);

???
Название: Re: Как создать элемент семейства аннотаций?
Отправлено: Biorn от 25-04-2018, 21:11:44
Уоооо, работает.
Благодарю!
Название: Re: Как создать элемент семейства аннотаций?
Отправлено: Александр Ривилис от 25-04-2018, 21:22:15
Единственное, ругается на FamilySymbol, пишет "тип, который недопустим в данном контексте"
Так может там должно быть не FamilySymbol (это имя класса), а symbol как экземпляр класса?
Название: Re: Как создать элемент семейства аннотаций?
Отправлено: Александр Ривилис от 25-04-2018, 21:25:11
Уоооо, работает.
Благодарю!
Правильное решение дал Александр Игнатович. А я лишь нашел пробелы в знании C#. ;)