Dynamo – Русский – только для чтения
Раздел для программистов и специалистов, использующих Dynamo
отмена
Отображаются результаты для 
Показать  только  | Вместо этого искать 
Вы имели в виду: 

dynamo целое число

10 ОТВЕТ 10
РЕШЕНО
Ответить
Сообщение 1 из 11
pen113
5775 просмотров, 10 ответов

dynamo целое число

Здравствуйте, подскажите пожалуйста, как избавиться от нулей после запятой в данной ситуации. Заранее спасибо!!!

10 ОТВЕТ 10
Сообщение 2 из 11
semko_dm
в ответ: pen113

Добрый день!

Есть несколько стандартных нодов для округления, они все находятся в библиотеке Core - Math.
В случае преобразования числа в текст подойдет либо Math.Floor либо Math.Ceiling.

If my post answers your question, please click the "Accept as Solution" button. This helps everyone find answers more quickly!

Kind regards,
Dmitriy Semko.

 

Dynamo_округление2.jpg

 



Dmitriy Semko
BIM-Manager
Blog
Facebook | Telegram | LinkedIn

Сообщение 3 из 11
tuuletin
в ответ: pen113

Привет, никак. Да и зачем их убирать? Всё равно при передачи в revit число будет отображаться согласно правилам revit, и количество знаков после запятой будет изменяться от нуля (для типа параметра "целое число") до указанного числа знаков округления (для других числовых параметров).

 

Дальше всё зависит от того, что ты хочешь сделать с этим числом:

 

1) передать в любой числовой параметр revit (например, чтобы потом можно было использовать этот параметр в формуле в среде revit): передаёшь как есть. В среде revit это число будет отображаться согласно правилам округления revit (вкладка "Управление" → "Единицы проекта").

 

2) передать в текстовый параметр revit (например, чтобы вывести это значение в марку, и тогда лишние нули после запятой будут мешать): преобразуешь одним нодом число в строку, убираешь другим нодом ненужные нули с конца.

Сообщение 4 из 11
pen113
в ответ: semko_dm

Дмитрий, спасибо большое! Именно это было и нужно.

Сообщение 5 из 11
semko_dm
в ответ: pen113

Да пожалуйста.

Справедливости ради и для полноты картины, можно и как писал @tuuletin - отсекать нули после преобразования в строку. Но я обычно ленюсь потому что выходит на один-два нода больше)
Сначала ставлю математическое округление, особенно если работаю с значениями полученными из ревита (у него бывают неточности в доли миллиметра), а затем уже Floor или Ceiling.

Dynamo_округление3.jpg



Dmitriy Semko
BIM-Manager
Blog
Facebook | Telegram | LinkedIn

Сообщение 6 из 11
Denver-22
в ответ: semko_dm

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

Число нужно вбить в "строковый параметр", и число - не целое. Т.е. должно быть "3,700".

Применяю разделение в String.Split. Но не знаю как из него взять отдельно элементы первого "столбца списка" (целая часть от числа) и второго (дробная часть от числа). Что мне записать в обоих случаях в квадратных скобках вместо 0 - str[0]?

 

Дополнение:

Нашел нод List.GetItemAtIndex. Но как правильно дать ему параметр Index? Если даю 0, то список остается таким же как на входе. Как добраться до 3-го уровня списка?

Сообщение 7 из 11
maxim.radyshevskiy
в ответ: Denver-22

str[0][0][0] пробовали?

Судя по картинке, str[0] дает вам 1 уровень вложенности, и если нужно 3, то просто обращайтесь по индексу к соответствующему списку 1 уровня, 2 уровня, и затем к элементу списка 

Сообщение 8 из 11
Denver-22
в ответ: maxim.radyshevskiy

Я пока синтаксисом Python не занимался. (Это следующий этап). Поэтому прошу помощи как мне выделить в список элементы с индексом 0 в один список, а с индексом 1 - в другой (см. вложенный скриншот выше). При том, что изначально, как я понял, они находятся на 4-м (или 3-ем) уровне.

str[0][0][0] дал только 1 значение - самый первый элемент.

Вы можете подсказать/написать команду для вычленения нужных мне 2-х списков?

 

ОТБОЙ!

Решил, что раз я пока синтаксисом Пайтон не владею, мучить людей не буду. @maxim.radyshevskiy, спасибо за отклик.

Реализовал (пока) всё на уровне нодов: Math.Floor-ом выделил целую часть числа и дробную. Обе перевел в строку и там объединил как мне надо.

Когда изучу как работать со списками, может смогу и изящней сделать.

Сообщение 9 из 11
semko_dm
в ответ: Denver-22

Я так понимаю, вам нужно отбросить у строк лишние знаки после запятой в первую очередь, если да, то можно это сделать как показано на схеме ниже (файл так же прикреплен):

Есил данный пост дал ответ на ваш вопрос, примите его в качестве решения, чтобы другим было проще его найти.
С уважением,
Дмитрий Семко.


PS: обратите внимание, что в нодах List.GetItemAtIndex использованы "уровни".

Capture.png



Dmitriy Semko
BIM-Manager
Blog
Facebook | Telegram | LinkedIn

Теги (2)
Сообщение 10 из 11
Denver-22
в ответ: semko_dm

Дмитрий, очередной раз спасибо! По коду всё понятно!

Это именно то, что я хотел.

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

Сообщение 11 из 11
semko_dm
в ответ: Denver-22

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



Dmitriy Semko
BIM-Manager
Blog
Facebook | Telegram | LinkedIn

Не нашли то, что искали? Задайте вопросы в сообществе или поделитесь своими знаниями.

Новая тема  

Autodesk Design & Make Report