Создание арматурного стержня в зоне усиления плиты

Автор Тема: Создание арматурного стержня в зоне усиления плиты  (Прочитано 3285 раз)

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

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

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

  • ADN OPEN
  • Сообщений: 45
  • Карма: 0
Добрый день. Пытаюсь армировать зону усиления в плите перекрытия. Выбираю плиту и семейство "Зона усиления". Я беру, как первую точку LoacationPoint зоны усиления, затем через HandOrientation зоны усиления и
 AngleTo(XYZ.BasisZ) получаю вторую точку на расстоянии ширины зоны (на скриншоте получается нужная длина стержня). Стержень должен построиться на границе зоны усиления. Все чтобы я не делал (менял длину, координаты, угол и тд), стержень создается за пределами плиты и каждый раз в точке BasePoint. При отладки видно, что стержень имеет длину – ширины зоны, а в модели длина другая. Подскажите, в чем ошибка? Мб поможет...не присваивается форма арматурного стержня , если это связано. 







Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
По скриншоту гадать сложно, но попробую

Вероятно, проблема в том, что согласно SDK параметр norm ожидается быть

Цитировать
norm
Type: Autodesk.Revit.DB.XYZ
The normal to the plane that the rebar curves lie on.

У тебя направление прямой в stirrup примерно (13, -0.36, 0), нормаль -XYZ.BasisY

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

  • ADN OPEN
  • Сообщений: 45
  • Карма: 0
По скриншоту гадать сложно, но попробую

Вероятно, проблема в том, что согласно SDK параметр norm ожидается быть

Цитировать
norm
Type: Autodesk.Revit.DB.XYZ
The normal to the plane that the rebar curves lie on.

У тебя направление прямой в stirrup примерно (13, -0.36, 0), нормаль -XYZ.BasisY
Нужно брать не FacingOrientation зоны усиления для norm?
Через питон это работает

Я могу sln прикрепить ?





Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Через питон это работает


Может, ты где-то в методе получения 2 точки ошибся?

Я могу sln прикрепить ?

Прикрепляй, тогда уж и с файликом примера

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Попробуй задать RebarStyle.Normal вместо RebarStyle.StirrupTie

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

  • ADN OPEN
  • Сообщений: 45
  • Карма: 0
Сделал через "Standart" не помогло. Скорее всего дело в значение угла при получении второй точки Curve.  У меня ZIP весит 70 МБ. Я уже не знаю что делать с этим rebar...

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Я уже не знаю что делать с этим rebar...
Используй мой вспомогательный проект - экспортируй плиту и кривые, по которым создаешь арматуру, в AutoCAD и посмотри что должно получится. Для этого тот проект и делался

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

  • ADN OPEN
  • Сообщений: 45
  • Карма: 0
Спасибо , попробую )

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

  • ADN OPEN
  • Сообщений: 45
  • Карма: 0


Вот такой результат получил. Проблема не может быть- у меня форма стержня через API не задается ?

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Вот такой результат получил
Ну дык даже в автокаде вон отрезок не попадает в тело плиты, а находится в начале координат. Значит 100% ошибка в коде

Отмечено как Решение Alex25 05-03-2020, 13:21:57

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

  • ADN OPEN
  • Сообщений: 45
  • Карма: 0
Всем спасибо. Ошибка была в получении значения угла. Теперь сделал так:
Код - C# [Выбрать]
  1. public double Get_Angle (_pt= element.HandOrientation)
  2.         {
  3.             return new XYZ(_pt.X, _pt.Y, 0).AngleTo(XYZ.BasisX);
  4.  
  5.         }
-в метод передаю направление семейства - (-1,0,0)
-обнуляю z
Высчитываю угол между (-1,0,0) и (1,0,0)
Получаю 180 градусов.
« Последнее редактирование: 05-03-2020, 13:27:30 от Александр Ривилис »