Dynamo
Primer for v2.0
Русский
Русский
  • О программе
  • Введение
    • Что представляет собой программа Dynamo и как она работает?
    • Руководство пользователя Dynamo Primer, сообщество и платформа Dynamo
  • Настройка Dynamo
  • Пользовательский интерфейс
    • Рабочее пространство
    • Библиотека
  • Узлы и провода
  • Основные узлы и понятия
    • Указатель узлов
    • Геометрия для машинного проектирования
      • Обзор концепции геометрии
      • Вектор, плоскость и система координат
      • Точки
      • Кривые
      • Поверхности
      • Тела
      • Сети
    • Компоновочные блоки программ
      • Передача данных
      • Math
      • Logic
      • Строки
      • Цвет
    • Проектирование на основе списков
      • Что такое список
      • Работа со списками
      • Списки списков
      • Многомерные списки
    • Словари в Dynamo
      • Что такое словарь
      • Узлы Dictionary
      • Словари в узлах Code Block
      • Примеры использования Revit
  • Пользовательские узлы и пакеты
    • Пользовательские узлы
      • Пользовательские узлы: введение
      • Создание пользовательских узлов
      • Публикация узлов в библиотеку
    • Пакеты
      • Пакеты: введение
      • Практикум по работе с пакетом: Mesh Toolkit
      • Разработка пакетов
      • Публикация пакетов
      • Импорт Zero Touch
  • Dynamo для Revit
    • Подключение к Revit
    • Выбор
    • Редактирование
    • Создание
    • Адаптация
    • Выпуск документации
  • Dynamo for Civil 3D
    • Совместимость с Civil 3D
    • Начало работы
    • Библиотека узлов
    • Примеры рабочих процессов
      • Дороги
        • Размещение осветительных столбов
      • Землеустройство
        • Размещение коммуникаций
      • Инженерные сети
        • Переименование колодцев
      • Железная дорога
        • Границы зазора
      • Топосъемка
        • Управление группами точек
    • Дополнительные разделы
      • Привязка объекта
      • Python и Civil 3D
    • Проигрыватель Dynamo
    • Полезные пакеты
    • Ресурсы
  • Бета-версия Dynamo в Forma
    • Настройка Dynamo Player в Forma
    • Добавление графов и предоставление к ним общего доступа в Dynamo Player
    • Запуск графов в Dynamo Player
    • Отличия вычислительной службы Dynamo от классического приложения Dynamo
  • Создание кода в Dynamo
    • Узлы Code Block и DesignScript
      • Что такое Code Block
      • Синтаксис DesignScript
      • Сокращение
      • Функции
    • Создание геометрии с помощью DesignScript
      • Основы работы с геометрией посредством DesignScript
      • Геометрические примитивы
      • Векторная математика
      • Кривые: интерполяционные и по управляющим точкам
      • Перенос, поворот и другие преобразования
      • Поверхности: интерполяционные, лофтированные, по управляющим точкам и поверхности вращения
      • Параметризация геометрических объектов
      • Пересечение и обрезка
      • Логические операции с геометрическими объектами
      • Генераторы точек Python
    • Python
      • Узлы Python
      • Python и Revit
      • Настройка собственного шаблона Python
    • Изменения языка
  • Практические советы
    • Методы создания графиков
    • Методы создания сценариев
    • Справочник по созданию сценариев
    • Управление структурой программы
    • Эффективная работа с большими наборами данных в Dynamo
  • Примеры рабочих процессов
    • Процессы для начала работы
      • Параметрическая ваза
      • Точки притяжения
    • Индекс понятий
  • Руководство для разработчиков
    • Сборка Dynamo на основе исходного кода
      • Сборка DynamoRevit на основе исходного кода
      • Управление зависимостями и их обновление в Dynamo
    • Разработка для Dynamo
      • Начало работы
      • Пример использования узлов Zero-Touch — узел сетки
      • Выполнение сценариев Python в узлах Zero-Touch (C#)
      • Дальнейшая работа с Zero-Touch
      • Расширенная настройка узлов Dynamo
      • Использование типов COM (взаимодействие) в пакетах Dynamo
      • Пример использования NodeModel — настраиваемый пользовательский интерфейс
      • Обновление пакетов и библиотек Dynamo для Dynamo 2.x
      • Обновление пакетов и библиотек Dynamo для Dynamo 3.x
      • Расширения
      • Определение пользовательской организации пакетов для Dynamo 2.0 или более поздней версии
      • Интерфейс командной строки Dynamo
      • Интеграция с Dynamo
      • Разработка для Dynamo for Revit
      • Публикация пакета
      • Создание пакета из Visual Studio
      • Расширения в виде пакетов
    • Запросы на слияние
    • Ожидания от тестирования
    • Примеры
  • Приложение
    • Вопросы и ответы
    • Визуальное программирование и Dynamo
    • Ресурсы
    • Примечания к выпуску
    • Полезные пакеты
    • Файлы примеров
    • Таблица интеграции с основной программой
    • PDF для скачивания
    • Сочетания клавиш Dynamo
Powered by GitBook
On this page
  • Что такое данные?
  • Null — отсутствие данных
  • Структуры данных
  • Упражнение «Использование данных для создания цепочки цилиндров»
  • Часть I. Настройка графика для одного цилиндра с набором изменяемых параметров
  • Часть II. Заполнение массива цилиндров из части I
Edit on GitHub
Export as PDF
  1. Основные узлы и понятия
  2. Компоновочные блоки программ

Передача данных

PreviousКомпоновочные блоки программNextMath

Last updated 2 years ago

Данные — это содержимое программы. Они передаются по проводам, предоставляя входные значения узлам, в которых затем обрабатываются и преобразуются в выходные данные новой формы. Давайте рассмотрим определение данных и их структуру, а затем начнем работу с данными в Dynamo.

Что такое данные?

Данные — это набор значений количественных и качественных переменных. Самая простая форма данных — это числа, например 0, 3.14 и 17. Однако существуют и другие типы данных: переменные, представляющие меняющиеся числа (height); символы (myName); геометрические объекты (Circle); список элементов данных (1,2,3,5,8,13,...).

В Dynamo данные добавляются (или передаются) в порты ввода узлов. Данные могут существовать без действий, однако они необходимы для обработки действий, которые представлены в форме узлов. Если узел добавлен в рабочее пространство, но не имеет входных данных, результатом будет функция, а не результат самого действия.

  1. Простые данные

  2. Данные и действие (узел), которое успешно выполняется.

  3. Действие (узел) без входных данных возвращает типовую функцию.

Null — отсутствие данных

Остерегайтесь значений null. Тип 'null' указывает на отсутствие данных. Это абстрактное понятие, с которым можно, тем не менее, столкнуться при визуальном программировании. Если результат действия недопустим, узел возвращает нулевой объект.

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

Значок
Имя/синтаксис
Входные данные
Выходные данные

Object.IsNull

obj

bool

Структуры данных

При визуальном программировании можно очень быстро генерировать большие объемы данных, поэтому необходимы средства для управления их иерархией. Эту роль выполняют структуры данных — организационные схемы, в которых хранятся данные. Особенности структур данных и их использования зависят от языка программирования.

В Dynamo для построения иерархии данных используются списки. Они будут подробнее рассмотрены в следующих главах, пока же приведем только общие сведения.

Список — это набор элементов, размещенных в одной структуре данных:

  • У меня пять пальцев (элементы) на руке (список).

  • На моей улице (список) десять домов (элементы).

  1. Узел Number Sequence определяет список чисел на основе входных данных start, amount и step. С помощью этих узлов было создано два отдельных списка из десяти чисел, один из которых охватывает диапазон 100–109, а другой — 0–9.

  2. Узел List.GetItemAtIndex позволяет выбрать элемент в списке по определенному индексу. При выборе значения 0 будет получен первый элемент в списке (в данном случае — 100).

  3. Та же процедура применительно ко второму списку дает значение 0 — первый элемент в списке.

  4. Объединим оба списка в один с помощью узла List.Create. Обратите внимание, что узел создает список списков. Это меняет структуру данных.

  5. При повторном использовании узла List.GetItemAtIndex с индексом 0 получаем первый список в списке списков. Это означает, что список рассматривается как элемент, в чем и состоит отличие от других языков программирования. В последующих главах операции со списками и структуры данных будут рассмотрены подробнее.

Главное, что следует помнить об иерархии данных в Dynamo — в случае со структурой данных списки рассматриваются как элементы. Другими словами, в Dynamo структура данных рассматривается сверху вниз. Что это означает? Рассмотрим пример.

Упражнение «Использование данных для создания цепочки цилиндров»

Скачайте файл примера, щелкнув указанную ниже ссылку.

Полный список файлов примеров можно найти в приложении.

В первом примере создадим цилиндр с оболочкой, пройдя по ступеням геометрической иерархии, описанной в этом разделе.

Часть I. Настройка графика для одного цилиндра с набором изменяемых параметров

1. Добавьте узел Point.ByCoordinates. После его добавления в рабочую область в начале координат сетки предварительного просмотра Dynamo появляется точка. Значения по умолчанию для выходных параметров x,y и z равны 0,0. В этом месте и была создана точка.

2. Plane.ByOriginNormal. Следующий шаг в построении геометрической иерархии — плоскость. Существует несколько способов построения плоскости. В этом случае в качестве входных данных используется начало координат и нормаль. Начало координат — это узел-точка, созданный на предыдущем шаге.

Vector.ZAxis. Это унифицированный вектор в направлении Z. Обратите внимание, что здесь входные данные отсутствуют, а есть только вектор со значением [0,0,1]. Он будет использоваться в качестве входных данных нормали для узла Plane.ByOriginNormal. В результате получается прямоугольная плоскость в области предварительного просмотра Dynamo.

3. Circle.ByPlaneRadius. Продвигаясь вверх по иерархии, создадим кривую из плоскости, полученной на предыдущем шаге. После соединения с узлом получаем окружность в начале координат. По умолчанию радиус в узле имеет значение 1.

4. Curve.Extrude. Теперь выполним выдавливание фигуры, задав глубину и двигаясь в третьем измерении. Этот узел создает поверхность из кривой путем выдавливания. По умолчанию расстояние в узле равно 1, а на видовом экране должен отображаться цилиндр.

5. Surface.Thicken. Этот узел создает замкнутое тело путем смещения поверхности на заданное расстояние и замыкания формы. По умолчанию значение толщины равно 1, а на видовом экране в соответствии с этими значениями отображается цилиндр с оболочкой.

6. Number Slider. Вместо использования значений по умолчанию для входных данных добавим в модель параметрические элементы управления.

Редактирование области. После добавления регулятора чисел в рабочую область щелкните значок в левом верхнем углу окна, чтобы отобразить параметры области.

Min/Max/Step. Задайте для параметров min, max и step значения 0, 2 и 0.01 соответственно. Это необходимо для управления размером всей геометрии.

7. Регуляторы чисел. Вместо входных значений по умолчанию скопируйте и вставьте этот регулятор чисел (выберите его, нажмите CTRL + C, затем CTRL + V) несколько раз, пока во всех входных параметрах со значениями по умолчанию не будут заданы регуляторы. Чтобы алгоритм действовал, некоторые значения регуляторов должны быть больше нуля (например, для увеличения толщины поверхности требуется глубина выдавливания).

8. В итоге с помощью регуляторов создан параметрический цилиндр с оболочкой. Попробуйте изменить некоторые из параметров, наблюдая за динамическим обновлением геометрических объектов на видовом экране Dynamo.

Регуляторы чисел. На следующем этапе мы добавили в рабочую область множество регуляторов, и теперь необходимо очистить интерфейс только что созданного инструмента. Щелкните один регулятор правой кнопкой мыши и выберите «Переименовать...». Замените имя каждого регулятора именем соответствующего параметра (толщина, радиус, высота и т. п.).

Часть II. Заполнение массива цилиндров из части I

9. На данный момент создан цилиндр с толстыми стенками. Пока это только один объект. Теперь рассмотрим, как создать массив цилиндров, которые динамически связаны друг с другом. Для этого вместо одного объекта создадим список цилиндров.

Добавление (+). Наша цель — добавить ряд цилиндров возле уже имеющегося цилиндра. При вставке еще одного цилиндра рядом с текущим необходимо учитывать радиус цилиндра и толщину его оболочки. Это число можно получить, сложив два значения регуляторов.

10. Это более сложный шаг, поэтому рассмотрим его подробнее. Конечная цель — создать список чисел, определяющих местоположение каждого цилиндра в последовательности.

a. Умножение. Сначала умножим значение из предыдущего шага на 2. Это было значение радиуса, а цилиндр необходимо переместить на полный диаметр.

b. Number Sequence. С помощью этого узла создадим массив чисел. Сначала вставим узел умножения из предыдущего шага в качестве значения step. В качестве значения start можно указать 0.0, используя узел number.

c. Integer Slider. Чтобы задать значение amount, присоединим регулятор целых чисел. Он будет определять количество создаваемых цилиндров.

d. Выходные данные. В этом списке показано расстояние смещения каждого цилиндра в массиве, которое управляется параметрически с помощью первоначальных регуляторов.

11. Этот шаг достаточно прост: соедините последовательность из предыдущего шага с входным параметром x исходного узла Point.ByCoordinates. При этом регулятор pointX будет заменен, и его можно удалить. Теперь на видовом экране отображается массив цилиндров (убедитесь, что регулятор целых чисел имеет значение больше 0).

12. Цепь цилиндров по-прежнему динамически связана со всеми регуляторами. Перемещайте регуляторы, и вы увидите, как изменится картина.

12KB
Building Blocks of Programs - Data.dyn
Данные и действия
Структурирование списка