Новая координатная система
Главная › Форумы › Задать вопрос › Новая координатная система
- В этой теме 15 ответов, 2 участника, последнее обновление 7 лет, 9 месяцев назад сделано txt.
-
АвторСообщения
-
Существует базовая точка проекта Ревит, от нее и отсчитываются координаты Х, Y, Z при построении элементов в в Динамо.
Существует ли способ задать новую координатную систему от которой аналогичным способом отсчитывались бы координаты.
То есть именно не меняя исходную в проекте систему создать новую (вспомогательную) систему с определенным смещением относительно первой? И, если необходимо, как-то “указать ” нодам , чтобы они вели отсчет от нее…
Используй ноды CoordinateSystem.ByOrigin и Point.ByCartesianCoordinates
То есть я просто добавляю эти ноды в Динамо и остальные ноды будут “понимать” что координаты отсчитываются от этой системы?
нет, другие ноды не будут понимать, будут понимать только точки, которые ты построишь с помощью этих двух нодов. Вопрос имеет практический характер или теоретический? Просто я два с половиной года активно работаю в Динамо, написал около тысячи разнообразных скриптов и ни разу не нуждался в таком. Если геометрия импортируется откуда то, то можно простыми методами сдвинуть ее на нужный вектор, можно и повернуть. Это уже не вопросы Динамо, это обычные геометрические вопросы.
Спасибо за разъяснения.
Да дело такое – я сделал ноды , работающие корректно когда начало координат находится в левой нижней точке осей. Однако в текущем проекте обнаружил что она находится в правой крайней точке и думаю как с меньшими телодвижениями обойти это дело
Как можно решить такую задачу: Если мы получили координаты линии Element.LocationCurve , то как пересчитать эти координаты относительно новой CoordinateSystem?
Или лучше как получить Element.LocationCurve относительно новой CoordinateSystem?
Вообще то для задания координатной системы недостаточно одной линии, нужна точка и три вектора. И что значит пересчитать координаты? В чем конкретно заключается задача? Вообще почему возникла эта проблема?
есть несколько параллельных трубопровода с разными расстояниями между собой.
выбираю крайний левый (правый) трубопровод и создаю новую координатную систему на середине оси Element.LocationCurve – вектор Y. Создаю вектор X поворачивая относительно вектора Y на 90 градусов. имея координату точки середины оси 1-го трубопровода и 3 вектора создаю CoordinateSystem.ByOriginVectors . Далее на основе ее могу задать точку через Point.ByCartesianCoordinates.
Теперь необходимо относительно это новой системы найти координаты Element.LocationCurve остальных трубопроводов чтобы вычислить расстояние от первого трубопровода с созданной координатной системой до остальных. Затем задать нужное смещение по оси Х в новой КС , тогда между трубопроводами будет одинаковой расстояние -dX. Затем через Springs.Element.SetLocation ставлю все трубы кроме первого (параллельный перенос) в эти точки
А нельзя решить эту задачу не вводя новую систему координат? Для чего столько лишних движений?
Относительно координатной системы проекта получается, предварительно отсортировать по возрастанию координат, выровнять трубы на заданное расстояние , если их оси параллельны осям X (точки начала и конца линии трубы имеют одинаковые координаты Y) или Y (точки начала и конца линии трубы имеют одинаковые координаты X) .
Но когда линии наклонны , то по этому принципу сделать не получится. Поэтому пока вижу только такой выход.
нужно только расстояние измерять или же и параллельно выравнивать?
Изначально все трубы параллельны между собой и горизонтальны (координаты Z равны) (но длина разная), только одинаковое расстояние между трубами задать…
Под углом имеется ввиду в плане относительно X, Y все эти параллельные трубы имеют какой то наклон
В Динамо есть нод для измерения расстояния между элементами Geometry.DistanceTo
Да и если мы задаем расстояние от точки системы координат до линии , то какое расстояние будет измерено? До точки середины оси линии или точки начала /конца линии ?
расстояние будет измерено кратчайшее и не нужно никаких локальных осей, расстояние можно измерять от первой линии
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.