#python #blender
#python #блендер
Вопрос:
я пытаюсь использовать math.trunc в Blender 2.49b Python
но я получаю эту ошибку
AttributeError: 'module' object has no attribute 'trunc'
я также импортировал математику
он на линии
uv[i][0] = trunc(uv[i][0] * 100000) / 100000
я также попробовал это через int, например
uv[i][0] = int(uv[i][0] * 100000) / 100000
что выдает мне ошибку
Ошибка типа: объект ‘float’ не подлежит подписке
итак, как я должен обрезать значение: (
Спасибо
Ответ №1:
Вторая ошибка, по-видимому, подразумевает, что uv
в вашем коде есть объект с плавающей точкой, и вы пытаетесь перевести его в нижний индекс uv[i]
. Попробуйте math.trunc(uv)
и увидите. Также вы можете проверить, доступен ли trunc, выполнив hasattr(math,'trunc')
Комментарии:
1. hasattr(math,’trunc’) возвращает false, и только trunc(…) выдает ошибку NameError: глобальное имя ‘trunc’ не определено
2. Питер, это означает, что у вашей математической библиотеки, которая blender использует или вызывает python, установленный в вашей системе, нет
trunc
. Просто используйтеround(number,1)
для своих целей, который округляет число до количества знаков после запятой, указанного вами во втором аргументе.3. да, но round — это не совсем то же самое, что trunc … как получилось, что у него нет такой базовой функции, как trunc?
4. я нашел способ, используя int, но f.uv[i] [0] = int(f.uv [i] [0] * 100000) / 100000 превращает 0,5 в 0 : (
5.
math.trunc
доступен только с python2.6, и, возможно, python по умолчанию в вашей системе меньше, чем этот, и blender использует его. Я не использую blender, поэтому не знаю конкретных деталей, но вы можете попробовать перейти на Python2.6 и переустановить blender.
Ответ №2:
Это может зависеть от того, какая версия Python используется Blender (я полагаю, это будет Python 2.5).
Попробуйте это в Blender:
import math
help(math)
Это приведет к аварийному завершению работы Blender, но вы сможете просмотреть математические данные библиотеки в разделе ФАЙЛ, и вы должны иметь возможность прокрутить вниз, чтобы увидеть, доступна ли функция trunc в версии Python, используемой Blender. Это может отсутствовать, что объясняет ошибку.