Я совсем новичок в программировании, и это один из моих первых вопросов на этом сайте. Я изучаю Pyhon уже более трех недель.
Для проекта я использую модуль под названием IfcOpenShell, который позволяет легко извлекать данные, указанные в файле ifc. Файл Ifc представляет собой экспресс-язык для описания данных здания.
Теперь я хочу получить все соответствующие данные о материалах, подходящие для анализа освещения, из файла ifc и преобразовать их в формат Radiance. Radiance — это программное обеспечение для анализа освещения с открытым исходным кодом.
Пока я написал этот скрипт:
import ifcopenshell
ifc_file = ifcopenshell.open('Example_A.ifc')
materials = ifc_file.by_type('IfcMaterial')
print 'There are ' + str(len(materials)) + ' different types of materials in the file:' + '\n'
for x in range(0):
materials = ifc_file.by_type('IfcMaterial')[x]
colour = ifc_file.by_type('IfcColourRgb')[x]
styles = ifc_file.by_type('IfcStyledItem')[x]
surfacestyles = ifc_file.by_type('IfcSurfaceStyleRendering')[x]
#DECLARING THE VARIABLES FOR RADIANCE DEFINTION
rad_material = materials.Name
rad_red = colour.Red
rad_green = colour.Green
rad_blue = colour.Blue
rad_specular = surfacestyles.SpecularColour
rad_roughness = 0.1 #<- Roughness is not defined in IFC, the value of 0.1 is merely put there as an example
print 'RETRIEVES DATA FROM IFC FILE PRINTS THEM ACCORDING TO A RADIANCE READABLE DEFINITION'
print ''
print '#material name: ' + rad_material
print '#material type: ' + 'No definition found in the specified ifc file'
print 'void ' + ' plastic ' + rad_material
print '0'
print '0'
print rad_red , rad_green, rad_blue,rad_specular[0], rad_roughness
Я обнаружил, что в файле ifc указано ровно 100 различных материалов. И когда я запускаю этот код, он выводит:
There are 100 different types of materials in the file:
RETRIEVES DATA FROM IFC FILE PRINTS THEM ACCORDING TO A RADIANCE READABLE DEFINITION
#material name: SH_resin Floor
#material type: No definition found in the specified ifc file
void plastic SH_resin Floor
0
0
1.0 1.0 1.0 0.5 0.1
Однако это именно то, что я хотел сделать, когда меняю:
for x in range(0):
to
for x in range(0,100)
он выводит только последний материал диапазона:
There are 100 different types of materials in the file:
RETRIEVES DATA FROM IFC FILE PRINTS THEM ACCORDING TO A RADIANCE READABLE DEFINITION
#material name: Juice
#material type: No definition found in the specified ifc file
void plastic Juice
0
0
0.956862745098 0.956862745098 0.956862745098 0.5 0.1
Я не понимаю, где я делаю ошибку, или я использую правильные функции для того, что я хочу. Моей целью было вывести все 100 различных определений материалов.
for x in range(n)
. - person allcaps   schedule 23.01.2015