Пример кода аннотации для нескольких арматурных стержней
Вопрос: Можно мне увидеть пример кода создания аннотации для нескольких арматурных стержней?
Я поискал в Revit SDK и нашел класс MultiReferenceAnnotation, но я так и не смог реализовать пример использования этого класса.
С помощью метода Autodesk.Revit.Creation.Document.Create.NewTag я создал обычную метку для арматурного стержня и заметил, что метка имеет свойство MultiReferenceAnnotationId.
Ответ: Обратите внимание на метод MultiReferenceAnnotation.Create, который в качестве аргумента принимает класс MultiReferenceAnnotationOptions.
Минимально необходимые свойства для этого класса, которые позволят создать аннотацию для нескольких стрежней это тип и ElementsToDimension.
Ниже вы найдете кусок кода, который мы использовали для внутреннего тестирования метода. В нем правда есть парочка жестко закодированных идентификаторов элемента. Обратитесь к документации, чтобы понять, что они означают:
- var view = GetElement<View>( 124186 );
- var rebarList = GetElements<Element>(
- doc, new[] { 280427 } ).ToList();
- Assert.IsTrue( rebarList.Count > 0,
- "There are no rebars in the document!" );
- IList<ElementId> elementIds
- = new List<ElementId>();
- foreach( Element rebar in rebarList )
- {
- elementIds.Add( rebar.Id );
- }
- MultiReferenceAnnotationType type
- = GetElement<MultiReferenceAnnotationType>(
- doc, 260544 );
- Assert.IsNotNull( type,
- "the MultiReferenceAnnotationType does not exist!" );
- MultiReferenceAnnotationOptions options
- = new MultiReferenceAnnotationOptions( type );
- options.TagHeadPosition = new XYZ( 0, 100, 0 );
- options.DimensionLineOrigin = new XYZ( 5, 5, 1 );
- options.DimensionLineDirection = new XYZ( 0, 1, 0 );
- options.DimensionPlaneNormal = view.ViewDirection;
- options.SetElementsToDimension( elementIds );
- using( Transaction tran = new Transaction( doc ) )
- {
- tran.Start( "Create_Rebar_Vertical" );
- var mra = MultiReferenceAnnotation.Create(
- doc, view.Id, options );
- var dimension = GetElement<Dimension>(
- doc, mra.DimensionId );
- tran.Commit();
- }
Источник: http://thebuildingcoder.typepad.com/blog/2013/09/multireferenceannotation-example.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=218
Опубликовано 17.09.2013Отредактировано 17.09.2013 в 09:08:39