Python Blender math.trunc()

#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. Это может отсутствовать, что объясняет ошибку.