AreaLoad Create

Автор Тема: AreaLoad Create  (Прочитано 3225 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн Khasan MamaevАвтор темы

  • ADN Club
  • Сообщений: 44
  • Карма: 7
    • Конструктивный диалог
  • Skype: wolfram222
AreaLoad Create
« : 25-02-2018, 22:16:56 »
Помогите пожалуйста разобраться с созданием нагрузки по площади, есть три метода из которых меня интересует второй: Autodesk.Revit.DB.Structure.AreaLoad.Create(aDoc, loops, forceVector, Autodesk.Revit.DB.Structure.AreaLoadType symbol).  Подаю исходные данные для второго метода, срабатывает первый метод и машина просит предоставить аналитику


Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: AreaLoad Create
« Ответ #1 : 25-02-2018, 22:19:28 »
Было бы неплохо хоть какой-то код увидеть. Может у вас ошибка где-то?

Оффлайн Khasan MamaevАвтор темы

  • ADN Club
  • Сообщений: 44
  • Карма: 7
    • Конструктивный диалог
  • Skype: wolfram222
Re: AreaLoad Create
« Ответ #2 : 25-02-2018, 22:38:00 »
Код - Python [Выбрать]
  1. loads = []
  2. fVect = XYZ(0,0,-1)
  3. for i in rvtLines:
  4.         cloop = cLoop(i)
  5.         TransactionManager.Instance.EnsureInTransaction(doc)
  6.         a = AreaLoad.Create(doc, cloop, fVect, Autodesk.Revit.DB.Structure.AreaLoadType)
  7.         loads.append(a)
  8.         TransactionManager.Instance.TransactionTaskDone()

Ругается так Traceback (most recent call last):
  File "<string>", line 47, in <module>
TypeError: expected AnalyticalModelSurface, got List[CurveLoop]

Отмечено как Решение Александр Ривилис 26-02-2018, 19:56:53

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: AreaLoad Create
« Ответ #3 : 25-02-2018, 22:43:56 »
1. Не видно из примера, что такое cloop = cLoop(i)
2. Третьим четвертым параметром в метод должен передаваться типоразмер нагрузки (или null для типоразмера по умолчанию). А вы что передаете? Типоразмер - это элемент базы данных проекта
« Последнее редактирование: 26-02-2018, 11:17:49 от Александр Пекшев aka Modis »

Оффлайн Khasan MamaevАвтор темы

  • ADN Club
  • Сообщений: 44
  • Карма: 7
    • Конструктивный диалог
  • Skype: wolfram222
Re: AreaLoad Create
« Ответ #4 : 25-02-2018, 22:49:20 »
Код - Python [Выбрать]
  1. def cLoop(x):
  2.         zz = List[Autodesk.Revit.DB.Curve]()
  3.         for j in x:
  4.                 zz.Add(j)
  5.         cLoop = CurveLoop.Create(zz)
  6.         curveLoops = List[CurveLoop]()
  7.         curveLoops.Add(cLoop)
  8.         return curveLoops

Третьим параметром должен передаваться вектор направления нагрузки

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: AreaLoad Create
« Ответ #5 : 25-02-2018, 22:50:30 »
Третьим параметром должен передаваться вектор направления нагрузки
Я ошибся - четвертым параметром

Оффлайн Khasan MamaevАвтор темы

  • ADN Club
  • Сообщений: 44
  • Карма: 7
    • Конструктивный диалог
  • Skype: wolfram222
Re: AreaLoad Create
« Ответ #6 : 25-02-2018, 22:56:26 »
Проблема появляется раньше, вот же она expected AnalyticalModelSurface, got List[CurveLoop]. Как заставить работать второй вариант метода?

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: AreaLoad Create
« Ответ #7 : 25-02-2018, 22:59:58 »
Проблема появляется раньше, вот же она expected AnalyticalModelSurface, got List[CurveLoop]. Как заставить работать второй вариант метода?
Определение того, какую перегрузку метода использовать CLR решает сама в зависимости от того, какие параметры передаются в метод. Поэтому нужно проверить правильность ВСЕХ параметров!

P.S. В какой версии Ревита пробуете? Возможно стоит попробовать другую версию, так как в API частенько встречаются баги

Оффлайн Khasan MamaevАвтор темы

  • ADN Club
  • Сообщений: 44
  • Карма: 7
    • Конструктивный диалог
  • Skype: wolfram222
Re: AreaLoad Create
« Ответ #8 : 26-02-2018, 11:13:52 »
Ревит 2018, задача решилась довольно просто AreaLoad.Create(doc, cloop, fVect, None), спасибо Саше Игнатовичу

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: AreaLoad Create
« Ответ #9 : 26-02-2018, 11:17:03 »
Ревит 2018, задача решилась довольно просто AreaLoad.Create(doc, cloop, fVect, None), спасибо Саше Игнатовичу
Я вам об этом сразу написал вообще-то:
2. Третьим четвертым параметром в метод должен передаваться типоразмер нагрузки (или null для типоразмера по умолчанию). А вы что передаете? Типоразмер - это элемент базы данных проекта
и в догонку еще объяснил почему:
Определение того, какую перегрузку метода использовать CLR решает сама в зависимости от того, какие параметры передаются в метод. Поэтому нужно проверить правильность ВСЕХ параметров!

Но почему-то вы решили меня не слушать. Обидненько однако

Оффлайн Khasan MamaevАвтор темы

  • ADN Club
  • Сообщений: 44
  • Карма: 7
    • Конструктивный диалог
  • Skype: wolfram222
Re: AreaLoad Create
« Ответ #10 : 26-02-2018, 11:20:25 »
Прошу прощения, плюсик в карму