Новая координатная система

Главная Форумы Задать вопрос Новая координатная система

В этой теме 15 ответов, 2 участника, последнее обновление  txt 1 год, 11 мес. назад.

Просмотр 15 сообщений - с 1 по 15 (из 16 всего)
  • Автор
    Сообщения
  • #5346 Score: 0

    txt
    Модератор
    98 pts

    Существует базовая точка проекта Ревит, от нее и отсчитываются координаты Х, Y, Z при построении элементов в в Динамо.

    Существует ли способ задать новую координатную систему от которой аналогичным способом отсчитывались бы координаты.

    То есть именно не меняя исходную в проекте систему создать новую (вспомогательную) систему с определенным смещением относительно первой? И, если необходимо,  как-то “указать ” нодам , чтобы они вели отсчет от нее…

     

    #5347 Score: 0

    Khasan Mamaev
    Хранитель
    181 pts

    Используй ноды CoordinateSystem.ByOrigin и Point.ByCartesianCoordinates

    #5348 Score: 0

    txt
    Модератор
    98 pts

    То есть я просто добавляю эти ноды в Динамо и остальные ноды будут “понимать” что координаты отсчитываются от этой системы?

    #5349 Score: 0

    Khasan Mamaev
    Хранитель
    181 pts

    нет, другие ноды не будут понимать, будут понимать только точки, которые ты построишь с помощью этих двух нодов. Вопрос имеет практический характер или теоретический? Просто я два с половиной года активно работаю в Динамо, написал около тысячи разнообразных скриптов и ни разу не нуждался в таком. Если геометрия импортируется откуда то, то можно простыми методами сдвинуть ее на нужный вектор, можно и повернуть. Это уже не вопросы Динамо, это обычные геометрические вопросы.

    #5350 Score: 0

    txt
    Модератор
    98 pts

    Спасибо за разъяснения.

    Да дело такое – я сделал ноды , работающие корректно когда начало координат находится в левой нижней точке осей. Однако в текущем проекте обнаружил что она находится в правой крайней точке и думаю как с меньшими телодвижениями обойти это дело

     

    #5357 Score: 0

    txt
    Модератор
    98 pts

    Как можно решить такую задачу: Если мы получили координаты линии Element.LocationCurve , то как пересчитать эти координаты относительно новой CoordinateSystem?

    Или лучше как получить Element.LocationCurve относительно новой CoordinateSystem?

    #5358 Score: 0

    Khasan Mamaev
    Хранитель
    181 pts

    Вообще то для задания координатной системы недостаточно одной линии, нужна точка и три вектора. И что значит пересчитать координаты? В чем конкретно заключается задача? Вообще почему возникла эта проблема?

    #5359 Score: 0

    txt
    Модератор
    98 pts

    есть несколько параллельных трубопровода с разными расстояниями между собой.

    выбираю крайний левый (правый) трубопровод и создаю новую координатную систему на середине оси Element.LocationCurve – вектор Y. Создаю вектор X поворачивая относительно вектора Y на 90 градусов. имея координату точки середины оси 1-го трубопровода и 3 вектора создаю CoordinateSystem.ByOriginVectors . Далее на основе ее могу задать точку через Point.ByCartesianCoordinates.

    Теперь необходимо относительно это новой системы найти координаты Element.LocationCurve остальных трубопроводов чтобы вычислить расстояние от первого трубопровода с созданной координатной системой до остальных. Затем задать нужное смещение по оси Х в новой КС , тогда между трубопроводами будет одинаковой расстояние -dX. Затем через  Springs.Element.SetLocation ставлю все трубы кроме первого (параллельный перенос) в эти точки

     

    #5360 Score: 0

    Khasan Mamaev
    Хранитель
    181 pts

    А нельзя решить эту задачу не вводя новую систему координат? Для чего столько лишних движений?

    #5361 Score: 0

    txt
    Модератор
    98 pts

    Относительно координатной системы проекта получается, предварительно отсортировать по возрастанию координат, выровнять трубы на заданное расстояние , если их оси параллельны осям X (точки начала и конца линии трубы имеют одинаковые координаты Y) или Y (точки начала и конца линии трубы имеют одинаковые координаты X) .

    Но когда линии наклонны , то по этому принципу сделать не получится. Поэтому пока вижу только такой выход.

    #5364 Score: 0

    Khasan Mamaev
    Хранитель
    181 pts

    нужно только расстояние измерять или же и параллельно выравнивать?

    #5366 Score: 0

    txt
    Модератор
    98 pts

    Изначально все трубы параллельны между собой и горизонтальны (координаты Z равны) (но длина разная), только одинаковое расстояние между трубами задать…

    Под углом имеется ввиду в плане относительно X, Y все эти параллельные трубы имеют какой то наклон

    #5367 Score: 0

    Khasan Mamaev
    Хранитель
    181 pts

    В Динамо есть нод для измерения расстояния между элементами Geometry.DistanceTo

    #5368 Score: 0

    txt
    Модератор
    98 pts

    Да и если мы задаем расстояние от точки системы координат до линии , то какое расстояние будет измерено? До точки середины оси линии или точки начала /конца линии ?

    #5369 Score: 0

    Khasan Mamaev
    Хранитель
    181 pts

    расстояние будет измерено кратчайшее и не нужно никаких локальных осей, расстояние можно измерять от первой линии

Просмотр 15 сообщений - с 1 по 15 (из 16 всего)

Для ответа в этой теме необходимо авторизоваться.