26 нояб. 2014 г.

Часть 6. Назначенные (def) Функции в Python | dynamo tutor

Функция y=f(х) в математике - закон согласно которому аргумент функции (x) преобразовывается в результат функции (y)
Функция в питоне - это фрагмент программы или процедура, имеющая имя и могущая выполнять по вызову определенную группу действий.

Для назначения функции используется команда def

Синтаксис у нее аналогичен итерационным проходам (for .. in .. ), только в конце обязательно использование команды return, тогда как в итерации return достигается правильной расстановкой табуляции.

Приведу пример питон скрипта:
в функции A(j) проходит итерационный цикл по индексам, внутри которого вначале значение i получает значения Elems[i], потом у i выбирается Id которое включается в новый список classlist. После чего функция закрывается обязательным словом return после которого пишется что мы хотим получить на выходе из функции. В данном случае мы хотим получить j-тый аргумент списка classlist.

Теперь в поле OUT буква A вызывает нашу внутреннюю функцию а индекс Ferst, который равен двум, позволяет вытянуть из функции второй индекс списка classlist, то есть айди второй  стены. 








-
Ссылки:
1. Динамо скрипт: 021_Def_0.7.5_work.dyn

Часть 5. Встроенные (Built-In) Команды Python | dynamo tutor

Встроенные команды (встроенные функции, Built-in Functions), это те команды, которые всегда, по умолчанию доступны в питоне. То есть чтобы использовать встроенную команду не нужно подгружать никаких внешних библиотек.


Встроенные функции:
  1. выполняют преобразование типов данных и систем исчисления
  2. выполняют подсчеты
  3. выполняют "декорацию" (функция внутри функции)
  4. редактируют
  5. осматривают и проверяют
  6. выполняют прочие операции

Встроенные (Built-in)   Функции
abs()/2/ dict()/1/ help() min()/2/ setattr()/4/
all()/5/ dir()/5/ hex() next()/2/ slice()/1/
any()/5/ divmod()/2/ id()/1/ object()/1/ sorted()/4/
ascii()/4/ enumerate()/4/ input() oct()/1/ staticmethod()/3/
bin()/1/ eval() int()/1/ open() str()/1/
bool()/1/ exec() isinstance()/5/ ord()/2/ sum()/2/
bytearray()/1/ filter()/4/ issubclass()/5/ pow()/2/ super()
bytes()/1/ float()/1/ iter()/2/ print() tuple()/1/
callable()/5/ format()/4/ len()/2/ property()/3/ type()/5/
chr()/2/ frozenset()/1/ list()/1/ range()/1/ vars()/5/
classmethod()/3/ getattr()/5/ locals() repr()/2/ zip()/4/
compile()/1/ globals() map() reversed()/2/ __import__()
complex()/1/ hasattr() max()/2/ round()/2/
delattr()/4/ hash()/2/ memoryview()/1/ set()/1/



Ссылки:
1. Встроенные функции. Питонворлд
2. Built-In Function Python
3. Часть 1. Типы данных и их сортировка | dynamo+python tutor
4. Часть 2. Строки в python | dynamo tutor
5. Часть 3. Генерация новых списков в python | dynamo tutor
6. Часть 4. Редактирование списков в python с помощью методов | dynamo tutor
7. Часть 6. Объявленные (def) Функции в Python | dynamo tutor
8. Часть 7. Разворачивание элементов /UnwrapElements/ | dynamo tutor

23 нояб. 2014 г.

Часть 2. Строки (String) в python | dynamo tutor

Строка (String) - это текстовый тип данных, который обычно заключается в кавычки  "For example". В динамо есть нод, который называется String данные на выходе из которого автоматически без кавычек являются "Строкового Типа".


Что можно делать со строками:
Символ перевода Перевод в:
%c стринг из ASCII кода (characters)
%s string conversion via str() prior to formatting
%i целое
%d целое
%u целое
%o восьмеричное целое число
%x шестнадцатеричное целое число (нижнестрочные буквы)
%X шестнадцатеричное целое число (ВЕРХНЕстрочные буквы)
%e экспоненциальная нотация (с буквой 'e')
%E экспоненциальная нотация (с буквой 'E')
%f натуральное число с плавающей запятой
%g смесь %f и %e
%G смесь %f и %E


Операции над строками с использованием "Методов":
  • word.capitalize() - копирует строку делая буквы кроме первой нижнего регистра
  • word.center(W[,Ch]) - центрирует строку шириной W, заполняя символами Ch
  • word.count(Smb[, start[, end]]) - считает количество найденных символов Smb в диапазоне start-end
  • word.decode([encoding[, errors]]) - декодирует
  • word.encode([encoding[, errors]]) - кодирует
  • word.endswith(suffix[, start[, end]]) - Возвратите True, если строка заканчивается с указанным суффиксом, иначе возвращает False. 
  • word.expandtabs([tabsize]) - Возвращает копию строки, где все символы табуляции заменяются одним или несколькими пробелами.
  • word. find ("пух") - выдает позицию найденного фрагмента в строке
  • word.format(*args, **kwargs) - заменяет {0} на стринг
  • word.index(sub[, start[, end]]) - как find только выдает ошибку
  • word.isalnum() - Возвращает true, если все символы в строке являются буквами, цифрами и есть минимум один символ,  иначе false.
  • word.isalpha() - Возвращает true, если все символы в строке идут по алфавиту и есть минимум один символ,  иначе false.
  • word.isdigit() - Возвратите true, если все символы в строке являются цифрами  и есть минимум один символ,  иначе false.
  • word.islower() - Возвратите true, если все символы в строке строчные  и есть минимум один символ,  иначе false.
  • word.isspace() - Возвратите true, если существует в строке есть хотя бы один character,  иначе false.
  • word.istitle() - Возвращает true, если в строке есть минимум один символ с верхним регистром,  иначе false.
  • word.isupper() - Возвратите true, в строке есть минимум один символ с нижним регистром,  иначе false.
  • separ.join (word) - объединяет через разделитель символы строк
  • word.ljust(width[, fillchar]) - выравнивает строку по левому краю делая ширину равную width и заполняя остаток символом fillchar[по умолчанию пробел]
  • word.lower() - делает в строке все символы нижнего регистра
  • word.lstrip([chars]) - удаляет из строки characters символы
  • word.partition(sep) - Разбивает строку по первому найденному разделителю на трехэлементный список: 1-й элемент - строка до разделителя (sep), 2-й - сам разделитель, и 3-й - строка после разделителя.
  • word.replace(old, new[, count]) - заменяет фрагмент на фрагмент n-раз
  • word.rfind(sub[, start[, end]]) - в диапазоне start - end строки [2:6] находит фрагмент sub и выдает его индекс. в случае ошибки - "-1"
  • word.rindex(sub[, start[, end]]) - как rfind только вместо -1 выдает ошибку
  • word.rjust(width[, fillchar]) - выравнивает строку по правому краю делая ширину равную width и заполняя остаток символом fillchar[по умолчанию пробел]
  • word.rpartition(sep) -  Разбивает строку по последнему найденному разделителю на трехэлементный список: 1-й элемент - строка до разделителя (sep), 2-й - сам разделитель, и 3-й - строка после разделителя.
  • word.rsplit([sep[, maxsplit]]) - Разбивает строку по найденному разделителю sep на список из строк. При этом если указывается, то maxsplit - это число, разделений с конца списка.
  • word.rstrip([chars]) - удаляет повторенный символ chars с конца строки
  • word.split([sep[, maxsplit]]) - Разбивает строку по найденному разделителю sep на список из строк. При этом если указывается, то maxsplit - это число, разделений с начала списка.
  • word.splitlines([keepends]) - разделяет многострочную строку на список из строк (true) - сохраняет разделение в конце строки
  • word.startswith(prefix[, start[, end]]) - проверяет начинаются ли строки с префикса. возвращает true/false
  • word.strip([chars]) - удаляет символы (по умолчанию пробел) в начале 
  • word.swapcase() - делает инверсию регистра букв
  • word.title() - меняет символ после ' c нижнего индекса на верхний
  • word.translate(({ord('from'): 'this', ord('ths2'): 'ths3'})) - множественное удаление символов
  • word.upper() - делает в строке все символы верхнего регистра
  • word.zfill(width) - добавляет нули слева от строки если width=число больше длинны строки




Ссылки:

22 нояб. 2014 г.

Часть 3. Генерация новых списков в python | dynamo tutor

Список /list/:

 a = [1, 2]

Список - это сборка, заключенных в квадратные скобки, разнотиповых элементов, каждый из которых имеет свой индекс и разделен запятыми. Нумерация индексов начинается с нуля.



Часть 7. Разворачивание элементов /UnwrapElements/ | dynamo tutor

Все ревит-элементы, на входе из Динамо-Нода в Питон, являются как бы завернуты в оболочки. То есть Нод, является капсулой для переноса ревит-элемента, и чтобы работать с ними в питоне - их нужно разворачивать. Делается это командой UnwrapElements().

Подключение РевитАПИ элементов в питоне:
Если вы хотите например создать РевитАПИ элемент непосредственно в Питоне, вы будете вынуждены подключить через TransactionManager базу Autodesk.Revit.DB.

Вот пример подключения ревит элементов:


Разворачивание элемента:
Если вы захотите воспользоваться РевитАПИ элементами непосредственно в питоне, так сказать напрямую, то при переходе из нода в питон вам придется РазвернутьЭлемент /UnwrapElement/, так как в питоне мы уже можем работать непосредственно с Ревит Элементами без использования Нод-Оболочки.


Заворачивание элемента:
Для того, чтобы продолжить работу с нашими элементами в виде нодов, нам нужно вернуть их в первоначальное состояние, а значит Завернуть /Wrapped/ в Revit.Elements.Element. Это можно сделать с помощью встроенного метода ToDSType(bool). Аргумент Bool определяет, является или нет проверяемый элемент "в собственности" Ревита /Revit-owned/. Это важно потому, что Revit-owned элементы не контролируются "Динамо", тогда как не-Revit-owned - контролируются.

Если вы создаете новый элемент в вашем Питон-скрипте, то вам не следует помечать Wrapped-элемент как Revit-owned. Тогда как если вы выбрали элемент из существующего ревит файла, то такая необходимость возникает.


Это означает, что если мы хотим работать в питоне именно с элементом Ревита, получая доступ ко всем свойствам и параметрам этого элемента, то нам нужно его развернуть, а если хотим работать с его нод-оболочкой - то тогда разворачивать не нужно. 

Привожу пример: 
Беру дверь, затем в нижнем питонскрипте ее не разворачиваю и в итоге имею доступ к базовым динамо атрибутам. А развернув элемент дверь в верхних питон скриптах - получаю к более широкому спектру атрибутов РевитАПИ Element.Properties



Ссылки:



Часть 4. Редактирование списков в python с помощью методов | dynamo tutor

Список /list/:

 a = [1, 2]

Список - это сборка, заключенных в квадратные скобки, разнотиповых элементов, каждый из которых имеет свой индекс и разделен запятыми. Нумерация индексов начинается с нуля.

В Части 3. Мы узнали базовые способы создания и коррекции списков. Теперь рассмотрим работу с "методами". Метод - это действие над списком, которое приписывается к списку после точки. При этом в скобках после метода вписывается над каким конкретно элементом будет производится действие "Метода".

Что можно делать со списками питон - методами:
  • list.append(x)  -  /Добавить элемент к концу списка /
  • list.extend(L)  -  /Расширить список за счёт добавления всех элементов переданного списка, как бы удвоение списка/
  • list.insert(i, x)  -  /Вставить элемент в указанную позицию. Первый аргумент — это индекс того элемента, перед которым требуется выполнить операцию вставки, поэтому вызов a.insert(0, x) вставляет элемент в начало списка, а a.insert(len(a), x) эквивалентно a.append(x)./
  • list.remove(x)  -  /Удалить первый найденный элемент из списка, значение которого — x. Если элемент не найден, генерируется ошибка./
  • list.pop([i])  -  /Удалить элемент, находящийся на указанной позиции в списке, и возвратить его в конец списка. Если индекс не указан, a.pop() удаляет и возвращает последний элемент списка. (Квадратные скобки вокруг i в сигнатуре метода означают, что параметр необязателен, а не необходимость набора квадратных скобок в этой позиции. Вы часто будете встречать такую нотацию в Справочнике по библиотеке.)/
  • list.index(x)  -  /Вернуть индекс первого найденного в списке элемента, значение которого равно x. Если элемент не найден, генерируется ошибка./
  • list.count(x)  -  /Вернуть количество раз, которое x встречается в списке./
  • list.sort()  -  /Сортировать элементы списка, на месте./
  • list.reverse()  -  /Обратить список вспять, на месте./
В данном случае list - это имя массива а не обязательная составляющая команды. Я проработал каждую операцию и у меня вышел такой себе нодсрипт, которым делюсь: 015_Data_Structures_0.7.5_work.dyn

Выглядит он так:

Ссылки:


21 нояб. 2014 г.

Code Block Element attributes | dynamo+DS tutor

Выписал все рабочие атрибуты элементов которые нашел для Код Блока (Дизайн скрипта). Остальные не работают или я о них не знаю.


Вот эти функции:
s.Name;
s.Id;
s.BoundingBox;
s.Location;
s.Parameters;
s.Symbol;
s.UniqueId;

Dynamo visual programming for design | pdf



Выборка типов размеров в проекте | dynamo script


Часть 1. Типы данных и их сортировка | dynamo+python tutor

В динамо есть четыре типы данных (Data Types)
  • Integer (Целое)
  • Boolean (Логическое) - в честь английского математика Джорджа Буля
  • floating-point numbers (Числа с плавающей запятой)
  • Strings (Строковые или алфавит)
  • List (Список)
В пайтоне (от Монти пайтон а не от рептилии, хотя питон говорить удобнее) их побольше:
В связи с этим.
Некоторые данные невозможно извлечь из питона в динамо (кортеж, словарь), но остается возможность пользоваться ими внутри питона.

Иногда возникает необходимость отделить одни типы данных от других. Для этого в питоне есть две функции type(a) и instance(a,type). Как они работают описано на питонере.

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


Кроме всего прочего эти данные можно конвертировать (Data Type Conversion)  одно в другое, но это уже другая история. 


Выборка элементов, типоразмеров и семейств из категории | dynamo script

Скрипт который позволяет выбрать все Типоразмеры (Symbol) из Категории (Category), а так же все Семейства (Family) из Категории (Category). Напоминаю Иерархию: Категория ► Семейство ► Типоразмер.

Итак скрипт:




20 нояб. 2014 г.

Интерьер квартиры в Москве | Geometrix Design

 Архитекторы Мирошкин Майкл и Мирошкина Элен, представляющие дизайн-студию Geometrix Design, оформили интерьер квартиры площадью 130 кв. метров в Москве. Когда они узнали название жилого комплекса и выслушали пожелания заказчика, сразу возникла картинка идеального интерьера: монохромный, лишённый каких-либо ненужных деталей.


19 нояб. 2014 г.

Установка, удаление Package | dynamo tutor

В этой папке:

C:\Users\Dmitry\AppData\Roaming\Dynamo\0.7\packages

лежат все дополнения которые можно скачать с ресурса http://dynamopackages.com/
Если вы пользуетеь своими - просто положите в эту папку наработки

Python книги | pdf