• Industries
  • Products
  • Buy
  • Services & Support
  • Communities
  • Программирование (ObjectARX, ARX, .NET, LISP и др.)

    Ответить
    Moderator
    Сообщения: 124
    Зарегистрированный: ‎06-05-2009

    Re: Revit API

    08-17-2012 06:00 AM в ответ на Sadykov

    Это сделано для того чтобы избежать повторения стандартной нуммерации Ревит. Можно название Альбома делать невидимыми символами. Формула составления номера листа ревит Альбом.Номер листа. Можно попробовать вместе найти компромис. Еще как вариант создать марку с произвольным текстом. Чисто как обозначение и все

     

    Активист сообщества
    Используйте простой текст.
    Active Member
    Сообщения: 11
    Зарегистрированный: ‎03-29-2012

    Re: Revit API

    09-14-2012 02:00 PM в ответ на kart1984

    Артур, в начале темы Вы говорили, что пишите статью для чайников. Готова ли она?

    Используйте простой текст.
    Active Member
    Сообщения: 11
    Зарегистрированный: ‎03-29-2012

    Re: Revit API

    10-06-2012 06:58 AM в ответ на kart1984

    С помощью какого метода создать линию детализации? В справке к SDK не нашёл 2012-я версия)

     

    Что означает надпись "Overloaded" в описании некоторых методов?

     

    Снимок.PNG

    Используйте простой текст.
    Moderator
    Сообщения: 124
    Зарегистрированный: ‎06-05-2009

    Re: Revit API

    10-07-2012 11:52 PM в ответ на otmoroz

    Доброго времени суток! Да, статья есть (точнее перевод статьи ))), но в данный момент ждем пока ее разместит Autodesk. Как только это случится я сразу же сообщу на своем блоге и продублирую здесь.

    По поводу надписи Overloaded. Она означает что метод перегружен. То есть у него есть несколько вариантов вызова. Например:

    Один и тот же метод GetElement в качестве данных может принимать как ElementId так и Reference. То есть у него два варианта написания. Или в классе DialogBox метод Show вообще имеет не только разные типы атрибутов но и разное их количество! Но задача у этих методов одинаковая.

    Надеюсь объяснил понятно )))
    С уважением, Артур.

    Активист сообщества
    Используйте простой текст.
    Active Member
    Сообщения: 11
    Зарегистрированный: ‎03-29-2012

    Re: Revit API

    10-08-2012 09:00 AM в ответ на kart1984

    Статью жду с нетерпением, очень мало информации на русском языке.

     

    По поводу Overloaded пока ещё не до конца разобрался, наверное с практикой придёт понимание.

     

    С линией детализации разобрался, оказалось всё просто )

    Описание тут: http://blog.rodhowarth.com/2011/02/revit-api-how-to-draw-detail-line-on.html

    Используйте простой текст.
    Active Member
    Сообщения: 11
    Зарегистрированный: ‎03-29-2012

    Re: Revit API

    [ Изменено ]
    10-16-2012 12:37 AM в ответ на otmoroz

    Сделал линию детализации, но работает только в планах. На разрезах не хочет работать, вываливается с ошибкой.

     

     

    Спойлер

    using System;

    using System.Collections.Generic;

    using Autodesk.Revit.ApplicationServices;

    using Autodesk.Revit.Attributes;

    using Autodesk.Revit.DB;

    using Autodesk.Revit.DB.Structure;

    using Autodesk.Revit.UI;

     

    namespace

    Draw_Line

    {

    [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Automatic)]

    [Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]

    publicclassDraw_Line: IExternalCommand

    {

    Application app;

    Document doc;

    public Result Execute(ExternalCommandData commandData, refstringmessage, ElementSet elements)

    {

    UIApplication rvtUIApp = commandData.Application;

    UIDocument uiDoc = rvtUIApp.ActiveUIDocument;

    app = rvtUIApp.Application;

    doc = uiDoc.Document;

     

    Draw_Annotation_Line();

    returnResult.Succeeded;

    }

    publicvoidDraw_Annotation_Line()

    {

    doublex1 = 5.0;

     

    doubley1 = 5.0;

     

    doublez = 0.0;

     

    doublex2 = 117.0;

     

    doubley2 = 115.0;

    XYZ point1 = app.Create.NewXYZ(x1, y1, z);

    XYZ point2 = app.Create.NewXYZ(x2, y2, z);

    Line line = app.Create.NewLineBound(point1, point2);

    DetailCurve detailCurve = doc.Create.NewDetailCurve(doc.ActiveView, line);stringa = doc.ActiveView.Category.Name;

    TaskDialog.Show("Done", "Line Created");

     

    }

     

    }

    }

     

    Используйте простой текст.
    Moderator
    Сообщения: 124
    Зарегистрированный: ‎06-05-2009

    Re: Revit API

    10-16-2012 05:10 AM в ответ на otmoroz

    Все опорные точки в АПИ рисуются в 3Д пространстве. В связи с этим на разрезах используется координата z в зависимости от плоскости разреза x или y.

    Активист сообщества
    Используйте простой текст.
    Active Member
    Сообщения: 11
    Зарегистрированный: ‎03-29-2012

    Re: Revit API

    [ Изменено ]
    10-22-2012 11:51 PM в ответ на kart1984

    Получилось разместить линию аннотации в плоскостях фасадов/разрезов с помощью задания координат точек, полученных из

    doc.ActiveView.RightDirection и doc.ActiveView.UpDirection

    Используйте простой текст.
    Contributor
    Сообщения: 13
    Зарегистрированный: ‎03-17-2013

    Re: Revit API

    03-17-2013 02:32 AM в ответ на kart1984

    Добрый день! 

    Пробую программировать на visual studio 2010 c# для Revit 2011. Возникла сложность объединения элементов  в линейный массив для их последующего копирования (аналог функции ревита). Для начала решил объединить в массив.

    Код:

     

    Спойлер
    public Autodesk.Revit.UI.Result Execute(
           ExternalCommandData commandData,
           ref string message, 
           ElementSet elements)
    {
           try
           {
              var uidoc = commandData.Application.ActiveUIDocument;
              var sel = doc.Selection.Elements;
              ElementArray e = sel as Element;
              ElementArray elementList = new ElementArray();
              elementList.Append(e);
    
           return Result.Succeeded;
           }
           catch (Exception ex)
           {
              return Result.Failed;
           }
    }

     

     

    Выдает следующие ошибки:

    sel as Element - Cannot implicitly convert type 'Autodesk.Revit.DB.Element' to 'Autodesk.Revit.DB.ElementArray'

     

                              Cannot convert type 'Autodesk.Revit.UI.Selection.SelElementSet' to 'Autodesk.Revit.DB.Element' via

                              a reference conversion, boxing conversion, unboxing conversion, wrapping conversion, or null

                              type conversion

     

     

    elementList.Append(e) - The best overloaded method match for

                                            'Autodesk.Revit.DB.ElementArray.Append(Autodesk.Revit.DB.Element)' has some invalid

                                            arguments

     

                                            Argument '1': cannot convert from 'Autodesk.Revit.DB.ElementArray' to

                                            'Autodesk.Revit.DB.Element'

     

    Помогите разобраться.

     

    Используйте простой текст.
    Moderator
    Сообщения: 124
    Зарегистрированный: ‎06-05-2009

    Re: Revit API

    [ Изменено ]
    03-17-2013 05:00 AM в ответ на kart1984

    Приветствую!

    Все очень просто. Вы пытаетесь преобразовать массив элементов SelElementSet в объект одного элемента Element. Естественно это не возможно. То есть переменная sel уже сама по себе является массивом элементов. Если вам нужно получить один элемент то нужно его забрать из массива сначала, даже если он в нем единсвенный.

    На скорую руку пока так. Если нужно разжевать то позднее все распишу.

    Активист сообщества
    Используйте простой текст.