Results 1 to 7 of 7

Thread: API: Единицы - Баг?

  1. #1
    Active Member
    Join Date
    2008-08
    Posts
    73
    Login to Give a bone
    0

    Exclamation API: Единицы - Баг?

    Revit 2009.
    Пространство имён: Autodesk.Revit.Elements
    Класс: Wall
    Свойство: Width
    Description: Returns the overall thickness of the wall.

    На самом деле данное свойство возвращает не ширину стены, а что-то не понятное (какое-то "левое" число)...
    В коде искомая строка содержит комментарий:
    Code:
    ...
    Autodesk.Revit.Application revApp = revit.Application;
    Document doc= revApp.ActiveDocument;
    TypeFilter levelTypeFilter = revit.Application.Create.Filter.NewTypeFilter(typeof(Wall));
    ElementIterator i = doc.get_Elements(levelTypeFilter); 
    i.Reset();
    Wall wall = null;
    ...
                    while (i.MoveNext())
                    {
                        Element e = i.Current as Element;
                        if (null != e)
                        {
                            wall = e as Wall;   
                        
                            DataRow wallRow = tableWall.NewRow();
    
                            wallRow.BeginEdit();
                            wallRow[wallName] = wall.Name;
                            wallRow[wallWidth] = wall.Width;//Вот здесь получаю некое число, 
    //которое, на самом деле не является шириной стены!
    
                            //wallRow[id] = wall.Id.Value;
                            //wallRow[uniqueID] = wall.UniqueId;
                            wallRow.EndEdit();
    
                            tableWall.Rows.Add(wallRow);                       
                        }
                    }
    IEnumerable<DataRow> distinct = tableWall.AsEnumerable().Distinct(DataRowComparer.Default);
    ...
    Last edited by compositum; 2009-01-26 at 08:06 AM.

  2. #2
    Active Member
    Join Date
    2008-08
    Posts
    73
    Login to Give a bone
    0

    Default Re: API: Единицы - Баг?

    Например, если реальная ширина стены 200 мм, то данное свойство возвращает значение 0.65616797900262469, а если ширина стены 350 мм - возвращает 1.1482939632545932.

    Шаблон проекта - метрический, но решил все же проверить, может дюймы (чем чёрт не шутит):

    200,00 / 0,65616797900262400 = 304,8
    350,00 / 1,14829396325459000 = 304,8

    Как видим, если я делю ширину стены на выдаваемое свойством Wall число, то получаю одно и то же некое значение (304,8 ), которое явно не является коэффициентом перевода из миллиметров в дюймы.
    Предполагаю, что либо значение, содержащееся в Wall дается в каких-то других единицах измерения, отличающихся от тех, которые мы используем в проектах (т.е. не метрическая система), либо это реально баг в API.

  3. #3
    Active Member
    Join Date
    2008-08
    Posts
    73
    Login to Give a bone
    0

    Default Re: API: Единицы - Баг?

    Оказывается, что это блин футы... 1 фут = 0.3048 метра
    И это с учетом того, что шаблон метрический... Т.е. предполагаю, что и все остальные данные (длины, площади, объемы) в API даются с полным игнорированием того, какая измерительная система используется в проекте.
    Это не приятный момент.

  4. #4
    Модератор - Форумов AUGIru Aleksandr Sett's Avatar
    Join Date
    2004-10
    Location
    Kiev. Ukraine.
    Posts
    647
    Login to Give a bone
    0

    Default Re: API: Единицы - Баг?

    Привет.

    Да, "внутри" кода Revit все исчесления Имперические...
    Best regards

    AEC Community Manager, AEC Consultant Softprom Ltd., AEC Approved Instructor
    BIM Evangelist
    Aleksandr V. Kanivets (Sett)

  5. #5
    Active Member
    Join Date
    2008-08
    Posts
    73
    Login to Give a bone
    0

    Exclamation Re: API: Единицы - Баг?

    Quote Originally Posted by Aleksandr Sett View Post
    Привет.

    Да, "внутри" кода Revit все исчесления Имперические...
    Да это я уже понял, не нужно для этого универ заканчивать... Не пойму какой смысл в таком подходе... зачем такое извращение, когда лучше было бы, если бы единицы измерения были абстрактными, а конкретизируются они и так - через свойство DisplayUnitSystem текущего документа.

    Как AutoDesk предлагает разруливать данную ситуацию тем, кто разрабатывает плагины под Revit для метрической системы? Постоянно держать в голове, что это долбанные футы? Переводить туда/сюда сразу же получая погрешности?
    Неужели доска допустила такой серьёзный прокол в таком важном вопросе?
    Если есть решение данного вопроса - хотелось бы услышать его.

  6. #6
    Модератор - Форумов AUGIru Aleksandr Sett's Avatar
    Join Date
    2004-10
    Location
    Kiev. Ukraine.
    Posts
    647
    Login to Give a bone
    0

    Default Re: API: Единицы - Баг?

    Вопрос в том, что изначально Revit разрабатывал не Autodesk... Создавали для западных пользователей работающих в Имперической системе измерений, для решения архитектурно-строительных задач. Кто тогда думал, что продукт будет популярен во всем мире и станет предметом недовольствия наших энтузиастов ))))?

    Думаю тут можно будет обойтись некой самописной функцией для преобразования едениц.
    Best regards

    AEC Community Manager, AEC Consultant Softprom Ltd., AEC Approved Instructor
    BIM Evangelist
    Aleksandr V. Kanivets (Sett)

  7. #7
    Active Member
    Join Date
    2008-08
    Posts
    73
    Login to Give a bone
    0

    Exclamation Re: API: Единицы - Баг?

    Quote Originally Posted by Aleksandr Sett View Post
    Думаю тут можно будет обойтись некой самописной функцией для преобразования едениц.
    Нашел в мануале инфу по этой теме. Разбираюсь... Будем считать, что вопрос снят.
    Last edited by compositum; 2009-01-28 at 09:59 AM.

Similar Threads

  1. Единицы проекта: Дециметры
    By partisia in forum Revit - Platform
    Replies: 2
    Last Post: 2008-11-06, 07:33 AM
  2. Replies: 4
    Last Post: 2008-10-08, 11:48 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •