Tips and tricks (Советы и приемы)

Главная Форумы Python Синтаксис и родные библиотеки Python Tips and tricks (Советы и приемы)

В этой теме 67 ответов, 9 участников, последнее обновление  Анатолий 1 неделя, 4 дн. назад.

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

    Legantmar
    Хранитель
    449 pts

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

    Для этого достаточно подключить библиотеку System (import System)

    Например:

    Это работает в большинстве случаев когда элементы поступающие на вход питон нода выбраны в ревит области с помощью нодов select model element или созданы заново в области динамо с помощью нодов.

    НО, если вы попытаетесь выбрать элементы внутри питон нода, например:

    wires = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Wire).WhereElementIsNotElementType().ToElements() – выбираются все провода в проекте

    и далее захотите применить к ним текстовую запись нодов динамо, например  GetParameterValueByName(“Имя”)), то питон нод выдаст ошибку

    Чтобы не разбивать питон нод на 2, достаточно преобразовать элементы   ToDSType(True)

    Весь код будет выглядеть следующим образом:

    P.S. не забывайте подключать все необходимые библиотеки или воспользуйтесь шаблоном

    Вместо преобразований toDSType(True) также можно воспользоваться element.LookupParameter(“Имя”).AsString() или element.LookupParameter(“Имя”).AsValueString()

    Удачи!

    #3249 Score: 2

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

    еще проще можно разорвать текст по заданным символам всего одной строчкой, без импорта модулей
    OUT = IN[0].split(‘/’)

    #3256 Score: 1

    Legantmar
    Хранитель
    449 pts

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

    Из Revit в Dynamo:
    ModelCurve to Line

    Из Dynamo в Revit:

    line = Line.ByStartPointEndPoint(point1, point2).ToRevitType()  (без создания реальной линии)

    и с преобразованием в модельную линию:
    Line to ModelCurve revit:

    #3459 Score: 1

    Legantmar
    Хранитель
    449 pts

    объединение строк из двух равноразмерных списков

    #3460 Score: 3

    Legantmar
    Хранитель
    449 pts

    чтобы отбросить цифры после запятой вместе с запятой (точкой), т.е. преобразовать представление числа из float в integer
    я раньше городил вот такой “беспредел”

    а оказалось все довольно просто, но аналога в дизайн скрипте не нашел ((

    #3462 Score: 4

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

    MathRound.png

    #3483 Score: 1

    Legantmar
    Хранитель
    449 pts

    Аналог String.Concat на python через “”.join(list)

    Пригодится для объединения букв в слова

    #3491 Score: 1

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

    а можно и чуточку проще сделать
    a=””
    for i in IN[0]:
    a=a+i
    OUT = a

    #3498 Score: 1

    Legantmar
    Хранитель
    449 pts

    Открыть файл из dynamo (или как подсоединить библиотеку os)

    если вы все еще не установили Python 2.7, то нужно это сделать

    import sys
    sys.path.append(“C:\\Python27\\Lib”) # установите python 2.7
    import os
    os.startfile(r’d:/image.jpg’) # укажите путь к нужному файлу

    becareful )).dyn

    #3499 Score: 0

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

    Если не ошибаюсь,то вроде IronPython 2.7 устанавливается с Dynamo. Указанным выше способом можно запустить какой либо файл в программе назначенной по умолчанию для этих типов файлов, но если необходимо запустить файл в программе не назначенной по умолчанию, то способ будет следующий:

    #3500 Score: 0

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

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

    #3506 Score: 1

    Legantmar
    Хранитель
    449 pts

    многостраничный комментарий, например, для быстрого отключения фрагмента кода

    достаточно поставить перед началом и в конце “отключаемого” фрагмента 3 двойных кавычки “””

    пример:

    #3638 Score: 0

    Legantmar
    Хранитель
    449 pts

    форматирование текста через %s (для string), %d (для integer), %f (для float), пример, %.2f (округление до двух знаков после запятой)

    или через оператор .format

    #3699 Score: 1

    Legantmar
    Хранитель
    449 pts

    Имя семейства (например для стены – Базовая стена)

    OUT = UnwrapElement(IN[0]).get_Parameter(BuiltInParameter.ELEM_FAMILY_PARAM).AsValueString()

    #3859 Score: 1

    Legantmar
    Хранитель
    449 pts

    search and replace string (поиск и замена текста)

    также можно узнать номер начального и конечного индекса, где расположено искомое слово (жаль что только первое, второе он игнорирует)

     

    если мы точно не знаем как пишется Девид и есть ли там лишняя буква, то вместо неопределенного символа ставится точка, а вместо доп. буквы скобки и знак вопроса ()?

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

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