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
  • Что такое Zero-Touch
  • Пакеты Zero-Touch
  • Практикум. Импорт AForge
  • Упражнение 1. Выделение границ
  • Упражнение 2. Создание прямоугольников
Edit on GitHub
Export as PDF
  1. Пользовательские узлы и пакеты
  2. Пакеты

Импорт Zero Touch

PreviousПубликация пакетовNextDynamo для Revit

Last updated 1 month ago

Что такое Zero-Touch

Импорт Zero-Touch — это метод, позволяющий легко и быстро импортировать библиотеки C# одним щелчком мыши. Приложение Dynamo считывает общие методы из файла DLL и преобразует их в узлы Dynamo. Функцию Zero-Touch можно использовать для разработки пользовательских узлов и пакетов, а также для импорта внешних библиотек в среду Dynamo.

  1. Файлы DLL

  2. Узлы Dynamo

Zero-Touch позволяет импортировать библиотеки, в том числе разработанные не в Dynamo, и создавать наборы новых узлов. Эта функция является воплощением принципа кросс-платформенности, на котором основывается проект Dynamo.

Пакеты Zero-Touch

Логотип/изображение

Имя

Практикум. Импорт AForge

Создайте новый файл в Dynamo и выберите «Файл» > «Импорт библиотеки...».

Затем найдите файл DLL.

  1. В появившемся окне перейдите к подпапке Release в папке установки AForge. Путь к папке, скорее всего, будет выглядеть таким образом: C:\Program Files (x86)\AForge.NET\Framework\Release.

  2. AForge.Imaging.dll: в рамках данного примера нам требуется только этот файл библиотеки AForge. Выберите этот файл DLL и нажмите Открыть.

В Dynamo на панели инструментов «Библиотека» должна появиться группа узлов AForge. Теперь библиотека для работы с изображениями AForge доступна непосредственно в приложении для визуального программирования.

Упражнение 1. Выделение границ

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

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

Выполнив импорт библиотеки, можно приступать к первому несложному упражнению (01-EdgeDetection.dyn). Сначала мы выполним базовую обработку стандартного изображения и посмотрим, как AForge осуществляет фильтрацию изображений. Затем мы воспользуемся узлом Watch Image для отображения результатов и применим к изображению фильтры Dynamo, аналогичные фильтрам приложения Photoshop.

Узел File Path предоставляет путь к выбранному изображению в виде строки. Теперь необходимо преобразовать его в пригодный для использования файл изображения в Dynamo.

  1. Используйте узел File From Path, чтобы преобразовать путь к файлу в изображение в среде Dynamo.

  2. Соедините узел File Path с узлом File.FromPath.

  3. Чтобы преобразовать файл в изображение, используйте узел Image.ReadFromFile.

  4. Наконец, чтобы увидеть результат, перетащите узел Watch Image в рабочую область и соедините его с Image.ReadFromFile. Мы еще не воспользовались библиотекой AForge, но уже успешно импортировали изображение в Dynamo.

В разделе AForge.Imaging.AForge.Filters (в меню навигации) доступен широкий выбор фильтров. Мы воспользуемся одним из них, чтобы обесцветить изображение в соответствии с пороговыми значениями.

  1. Перетащите в рабочую область три регулятора и задайте для них диапазоны от 0 до 1 с шагом 0,01.

  2. Добавьте в рабочую область узел Grayscale.Grayscale. Это фильтр AForge, который позволяет применить к изображению оттенки серого. Соедините три регулятора, добавленные в шаге 1, с элементами cr, cg и cb. Задайте для верхнего и нижнего регуляторов значение 1, а для среднего — 0.

  3. Чтобы применить оттенки серого, нам нужно задать действие, которое будет выполняться с изображением. Для этого используется узел BaseFilter.Apply. Соедините выходной параметр image с входным параметром image, а выходной параметр Grayscale.Grayscale с входным параметром baseFilter.

  4. Соедините этот узел с новым узлом Watch Image, и вы получите обесцвеченное изображение.

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

  1. Задайте для верхнего и нижнего регуляторов значение 0, а для среднего — 1. В результате полученное обесцвеченное изображение становится более контрастным.

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

  1. Добавьте узел SobelEdgeDetector.SobelEdgeDetector в рабочую область.

  2. Соедините его с узлом BaseUsingCopyPartialFilter.Apply и соедините обесцвеченное изображение с входным параметром изображения этого узла.

  3. В результате мы получаем новое изображение, в котором оператор Собеля выделил все обнаруженные границы.

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

Упражнение 2. Создание прямоугольников

Теперь, когда мы ознакомились с базовыми возможностями обработки изображений, можно приступить к использованию изображений для создания геометрии Dynamo. Ваша минимальная задача в рамках этого упражнения — выполнить так называемую быструю трассировку изображения с помощью AForge и Dynamo. Пока что в целях простоты мы ограничимся извлечением прямоугольников из опорного изображения, однако в AForge доступны инструменты и для более сложных операций. В этом упражнении мы используем файл 02-RectangleCreation.dyn из загруженного набора материалов для упражнения.

  1. С помощью узла File Path задайте путь к файлу grid.jpg в папке материалов для упражнения.

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

  1. После добавления узла BlobCounter в рабочую область необходимо выполнить обработку изображения (аналогично использованию инструмента BaseFilter.Apply в предыдущем упражнении).

К сожалению, найти узел обработки изображений Process Image в библиотеке Dynamo может быть затруднительно. Это связано с тем, что эта функция может быть не видна в исходном коде библиотеки AForge. Чтобы обойти эту проблему, потребуется временное решение.

  1. Добавьте узел Python в рабочую область и вставьте в него следующий код. Этот код позволяет импортировать библиотеку AForge, а затем обработать импортированное изображение.

import sys
import clr
clr.AddReference('AForge.Imaging')
from AForge.Imaging import *

bc= BlobCounter()
bc.ProcessImage(IN[0])
OUT=bc

При соединении порта вывода image с портом ввода узла Python последний выдает результат AForge.Imaging.BlobCounter.

  1. Соедините порт вывода узла сценария Python с узлом BlobCounterBase.GetObjectRectangles. При этом объекты изображения считываются в соответствии с заданным пороговым значением, после чего квантифицированные прямоугольники извлекаются из пиксельного пространства.

  1. Добавьте еще один узел Python в рабочую область, соедините его с узлом GetObjectRectangles и введите в него код, указанный ниже. В результате создается упорядоченный список объектов Dynamo.

OUT = []
for rec in IN[0]:
	subOUT=[]
	subOUT.append(rec.X)
	subOUT.append(rec.Y)
	subOUT.append(rec.Width)
	subOUT.append(rec.Height)
	OUT.append(subOUT)
  1. Добавьте узел Transpose к порту вывода узла Python из предыдущего шага. Создаются четыре списка, содержащие значения координат X и Y, а также ширины и высоты для каждого прямоугольника.

  2. С помощью узла Code Block упорядочим данные таким образом, чтобы их можно было использовать в узле Rectangle.ByCornerPoints (см. код ниже).

recData;
x0=List.GetItemAtIndex(recData,0);
y0=List.GetItemAtIndex(recData,1);
width=List.GetItemAtIndex(recData,2);
height=List.GetItemAtIndex(recData,3);
x1=x0+width;y1=y0+height;
p0=Autodesk.Point.ByCoordinates(x0,y0);
p1=Autodesk.Point.ByCoordinates(x0,y1);
p2=Autodesk.Point.ByCoordinates(x1,y1);
p3=Autodesk.Point.ByCoordinates(x1,y0);

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

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

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

  1. Вставьте узел Python между узлом GetObjectRectangles и другим узлом Python. Приведенный ниже код для этого узла позволяет удалить все прямоугольники, размер которых меньше заданного значения.

rectangles=IN[0]
OUT=[]
for rec in rectangles:
 if rec.Width>8 and rec.Height>8:
  OUT.append(rec)

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

Наконец, измените значение both_sides на false, чтобы получить выдавливание в одном направлении. Если залить то, что у нас здесь получилось, эпоксидной смолой, то у нас был бы модный столик в стиле хай-тек.

В этом разделе показан процесс импорта сторонней библиотеки с помощью функции Zero-Touch. Дополнительные сведения о разработке пользовательской библиотеки Zero-Touch см. на .

Пакеты Zero-Touch являются хорошим дополнением к пользовательским узлам. В таблице ниже приведены некоторые пакеты, в которых используются библиотеки C#. Дополнительные сведения о пакетах см. в разделе приложения.

В этом примере мы рассмотрим процесс импорта внешней библиотеки в формате DLL. AForge — это мощная библиотека, поддерживающая широкий спектр функциональных возможностей — от обработки изображений до искусственного интеллекта. При выполнении приведенных ниже упражнений по обработке изображений мы будет обращаться к классу Imaging этой библиотеки.

Для начала скачайте AForge. На нажмите [ Download Installer ], дождитесь завершения загрузки и выполните установку.

Для импорта изображений добавьте узел File Path в рабочую область и выберите файл soapbubbles.jpg в папке материалов для упражнения (источник изображения: ).

На следующем шаге мы зададим белые прямоугольники из этого изображения в качестве опорных объектов и преобразуем их в геометрию Dynamo. Библиотека AForge включает множество мощных инструментов компьютерного распознавания образов. В этом упражнении будет использован один из ключевых инструментов под названием .

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

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

странице справки Wiki по работе с Dynamo
Пакеты
AForge
странице загрузки AForge
flickr
BlobCounter
API-интерфейсом обработки изображений AForge
наложение данных проекции
дополненная реальность
данной статье
Mesh Toolkit
Dynamo Unfold
Rhynamo
Optimo
1MB
ZeroTouchImages.zip
archive