List.ContainsItem не хочет обрабатывать числа

Главная Форумы Dynamo Ноды List.ContainsItem не хочет обрабатывать числа

В этой теме 8 ответов, 2 участника, последнее обновление  Denver-22 4 мес., 1 неделя назад.

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

    Denver-22
    Участник
    4 pts

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

    В нод List.ContainsItem приходят числа на оба входа (даже проверял суммированием). Но нод выдает неправильный результат (в моем случае false вместо true). Тут же (ниже, в отдельной группе) делаю тестирование нода – подаю на входы 2 списка чисел – нод работает правильно.

    Просьба посмотреть мой скрипт – https://yadi.sk/d/jh160ToO3RPVuR – может я чего-то не учел…

    Пока же тупо оба списка перевел в строки и эти строки скормил привередливому List.ContainsItem – сработало. Но хочется понять в чем косяк.

     

     

    #7363 Score: 1

    txt
    Модератор
    90 pts

    здесь для тройников, но тоже самое для врезок – меняете название параметра где получаете нужные диаметры и названия фильтруемого фитинга

    https://yadi.sk/d/zs8M_gAF3RPeQs

    #7365 Score: 0

    Denver-22
    Участник
    4 pts

    Делая вариант с переводом в String даже не обратил внимание, что диаметры фитингов возвращаются как “65,000”, а в Исходном списке у меня числа в формате “65” (после String.ToNumber). Неужели из-за этого нод List.ContainsItem считает, что эти 2 числа (будучи ЧИСЛАМИ) не идентичны? Бред же…

    @txt, сначала думал, что вы мне предлагаете практически то же, что у меня. Но потом заметил Питон-код. Протестировал. Оказалось, что float(i) переводит в число более правильно, чем String.ToNumber. Хотя оба являются числами. После float(i) уже можно сравнивать в List.ContainsItem как надо! Большое спасибо за опыт!

    Мда.. Недолго радовался… Теперь ситуация ещё загадочней. Трубы Ду65 обрабатываются как надо, а Ду15 – нет. При том, что теперь числа выглядят правильно во всех отношениях о_О. Ладно, проще забить на это. Тут явно глюк внутри Dynamo (версия 1.2.1). Строками хоть задача решена.

    #7366 Score: 0

    txt
    Модератор
    90 pts

    скиньте ваш rvt (только то что нужно) и ваш dyn где выходит ошибка

    #7367 Score: 0

    Denver-22
    Участник
    4 pts

    Графическое пояснение сказанного:

    #7368 Score: 0

    txt
    Модератор
    90 pts

    то что вы подаете в нод List.Contain ..одинакового формата? можно проверить через нод  Object.Type 

    #7370 Score: 0

    Denver-22
    Участник
    4 pts

    Скрипт, Проект. Выделить всё, что есть – чтобы в скрипт попало несколько видов врезок. @txt, т.к. вариант решения уже есть, то эту ошибку готов обсуждать в плане теории – вдруг кому-то будет полезно…

    float возвращает Systen.Double (как у чисел из сортаментов), а String.ToNumber – Systen.Int32. Хотя бы в теории я разобрался. Осталось понять почему часть чисел обработаны правильно, а часть – с ошибкой.

    #7372 Score: 1

    txt
    Модератор
    90 pts

    все работает (уберите конвертор единиц)

    #7373 Score: 0

    Denver-22
    Участник
    4 pts

    Моя гипотеза подтвердилась – ноды Dynamo могут давать непредсказуемый результат. Теперь всё работает как надо! Спасибо, @txt, за помощь в поиске ошибки!

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

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