Announcements
Due to scheduled maintenance, the Autodesk Community will be inaccessible from 10:00PM PDT on Oct 16th for approximately 1 hour. We appreciate your patience during this time.
Dynamo – Русский – только для чтения
Раздел для программистов и специалистов, использующих Dynamo
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

В теле codeblock не работает Parameter.CreateProjectParameter по условию

11 REPLIES 11
SOLVED
Reply
Message 1 of 12
Anonymous
1178 Views, 11 Replies

В теле codeblock не работает Parameter.CreateProjectParameter по условию

День добрый. Как и многие, начинаю только осваивать Динамо и пути автоматизации, пытаюсь свою первую программу написать. Идея такая: проверить, есть ли у пространств параметр "Наличие фальшпотолка", если его нет - то создать его с нуля. После чего  этим же скриптом проставить галки там, где он есть. 

 Но при попытке завязать условие и Parameter.CreateProjectParameter, ничего не происходит, параметр к пространствам не добавляется. Если же вытащить Parameter.CreateProjectParameter как отдельный нод, или выполнять Parameter.CreateProjectParameter из codeblоcka  без условий, то параметры создаются. Кто знает, почему так и что я не так делаю, чтоб завязать создание параметра на условие, помогите, пожалуйста.Снимок3.JPG

11 REPLIES 11
Message 2 of 12
ASKravcova
in reply to: Anonymous

Здесь немного запутаны понятия в Вашем вопросе. 

Если речь идет о параметре проекта, то во время создания такого параметра Вы назначаете ему Категорию, в Вашем случае "Пространства", таким образом у всех пространств в проекте будет данный параметр.  

ASKravcova_0-1611856617281.png

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

Если требуется, чтобы у всех Пространств стояла галочка "Вкл" на этот параметр, то в скрипте можно выбрать все Пространства, отфильтровать их по значению этого параметра (у кого включен, у кого нет), и для тех у кого нет, задать, чтобы он был Вкл.

 

Анастасия Кравцова
Инженер-проектировщик КР, КЖ
ОТВЕЧАЕМ НА ВАШИ ВОПРОСЫ НА ФОРУМЕ BIM2B
Message 3 of 12
sashtet
in reply to: Anonymous

Все плагины, работают с Revit API.Dinamo это плагин.

Нет метода в Revit API создать параметр проекта.

Этот нод, которым вы пользуетесь, создаёт общий параметр в фиктивном ФОП-файле общих параметров.

Поэтому лучше примите решение загрузить свой общий параметр из своего ФОП и примените его для категории.

 

Message 4 of 12
ASKravcova
in reply to: Anonymous

Если параметр должен быть включен у всех Пространств, то это можно сделать вот этим скриптом. По сути, даже фильтровать не нужно, так как это переключатель "Да/Нет", если я правильно поняла из вопроса. Достаточно просто задать для всех значение "Да"

ASKravcova_0-1611858929114.png

 

Анастасия Кравцова
Инженер-проектировщик КР, КЖ
ОТВЕЧАЕМ НА ВАШИ ВОПРОСЫ НА ФОРУМЕ BIM2B
Message 5 of 12
Anonymous
in reply to: sashtet

Спасибо за ответ, видела в других ветках, что раньше так и делали на более ранних версиях - на АПИ открывали ФОП, вписывали параметр и удаляли из ФОП. Но мне не понятно, почему нельзя в codeblock поставить условие на выполнение нода (ну или собственноручно скопированного нода). Идея в том, чтобы сначала проверить, есть ли параметр уже у Пространств, и если его нет, то тогда создавать. У меня же Динамо упорно создает новый параметр каждый раз при запуске, игнорируя проверку. Почему так, не понимаю.

Приложила файлик с Динамо версия1.3.4.https://yadi.sk/d/8GSHHTb3DzqQwg 

Message 6 of 12
Anonymous
in reply to: ASKravcova

Спасибо за ответ, я, возможно, не совсем корректно пояснила задачу. Я проставляю галочки не всем, а только тем, где потолок фальшпотолок присутствует. К сожалению, не смогла открыть приложенный Вами динамо-файл, посмотреть как там реализовано что, динамо мой ругается, наверное из-за версий. А суть вопроса именно в том, что Динамо не видит проверку "P==false?Parameter.CreateProjectParameter(ParNam,GrNam,Typ,Gr,Inst,CatList)" У меня параметр Р подается true, но Parameter.CreateProjectParameter все равно срабатывает.
Message 7 of 12
sashtet
in reply to: Anonymous

А где двоеточие?

Условие DS.jpg

Message 8 of 12
sashtet
in reply to: Anonymous

Еще вариант на несколько проверок, || это знак "или"

Условие or -или выбор из списка.pngФункция в Imperativ пример.jpg

Message 9 of 12
Anonymous
in reply to: sashtet

Двоеточие на месте. Синтаксис P==false?Y:Z; вроде бы. Ниже скрин, подчеркнула двоеточие, и то, что при подаче параметра Р равного true блок отрабатывает вроде бы правильно - возвращает "не вышло", но при этом ревит упорно вставляет новые параметры - видно на скрине снизу слева. Почему так, не понимаю.

 

Попробовала через функцию def и if, спасибо большое за синтаксис, помогло. Ревит перестал создавать кучу параметров одинаковых, однако почему он игнорировал P==false?Y:Z до сих пор не понятно.Снимок4.JPG

 

Message 10 of 12
sashtet
in reply to: Anonymous

Вы должны знать, что любой нод в Динамо, это код со своим сценарием.

Динамо это плагин как и многие плагины для "общения" с документом revit через открытый доступ Revit Api.

Покажите мне сценарий Code Block может я смогу ответить на Ваш вопрос.

Если Вы подняли свой уровень до написания в дизайн скрипте, то бросайте динамо и переходите на написание кода , к примеру на Python и запуска сценария из другого плагина, к примеру RPS - Revit Python Shell,

или же из самого динамо в код блоке Python Script - ограничите опять себя плагином динамо.

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

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

И даже на 100% правильном написанном сценарии в динамо на дату - сегодня,

-нет ни какой уверенности, что завтра этот код запуститься и выполниться, даже если и Revit Api не поменялся...

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

Если пользоваться только стандартными нодами динамо, то многое отрицательное исключается...

Есть нод if, пробуйте его...

Если хотите выиграть своё личное время, то проще пройти курс на Stepic от Максима Степанникова и Паши Алтынникова, и самое лучшее именно курс 1 , а потом курс 2.

Это совет из моей практики...

 

Message 11 of 12
Anonymous
in reply to: sashtet

Спасибо большое за совет, как раз и думаю, как правильно учиться - не то сначала Высоцкого слушать, не то сразу пытаться учиться или пайтону или с#. Динамо просто очень дружественный и удобный. но, видимо, глючный. Совет с IF помог, с ним работает, просто интересно стало, почему не работает ==?:. Если интересно, приложила файл с динамо и с проектом ревита, в котором его тестила, но не факт, что он у Вас заведется, как Вы сами правильно сказали. Если нет - то и ладно, видимо глюк какой-то.

 

Message 12 of 12
sashtet
in reply to: Anonymous

 Я прошел все уроки Хасана Мамаева, Лобанова, Высотского, другие видео по теме "малой автоматизации в ревите"- автор Лобанов

Мой вывод на сегодня:

Самый короткий путь это Stepic 1 затем Stepic 2 Bim Planet и именно так...

C## это если вы хотите сразу плагины писать и запускать из ревита без других оболочек, типа динамо, RPS  и т.д.

+более высокая скорость

+независимость от оболочек и их библиотек

-более высокий уровень вхождения

+возможность создать отдельной панели со своими скриптами прямо в ревите 

 

-постоянная загрузка в проект любого сценария

 

Для меня пока такой задачи нет, поэтому пока не изучаю... 

 

RPS гораздо проще, чем с##, пишем на IronPython 2.7

+низкий порог вхождения

+нет необходимости загружать в ревит все сценарии, какой хотите скрипт запустить, такой и запускаете  в проекте

Для панелей с запуском скриптов на IPython можно применить плагин SharpDevelop 

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

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

+быстрый запуск,чем в динамо...

Удачи и Желания постигать не познанное!

 

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report