Ruby-Sketchup меняет цвет лиц

Я хотел бы покрасить верхнюю часть этой формы в rfClr, есть идеи? Я могу изменить все это на серый цвет, но как изменить верх на синий?

l=100
w=60
h=20
hl=8
slope=4
clr='Gray'
rfClr='blue'
ent = Sketchup.active_model.entities

        #---------Clear All
Sketchup.active_model.entities.clear!       
        #----------------
   model = Sketchup.active_model

    model.start_operation "Create Box"
#-----------------------------------------------------------------------------      

    entities = model.active_entities
    group = entities.add_group
    entities = group.entities
       group.name="Box"
    @pt0 = [0, 0, 0]
    @pt1 = [0, 0, h*12+hl]
    @pt2 = [w*12/2, 0, 12*h+hl+(w/2)*slope]
    @pt3 = [w*12, 0, 12*h+hl]
    @pt4 = [w*12, 0, 0]

newface = entities.add_face(@pt0, @pt1, @pt2, @pt3 , @pt4)
    newface.material=Sketchup::Color.new clr
#newface.reverse!
    newface.pushpull l*12

введите здесь описание изображения


person Davesexcel    schedule 03.04.2019    source источник
comment
Вы сами создаете сетку? Если это так, то вы должны иметь возможность устанавливать материал по мере его создания.   -  person thomthom    schedule 06.08.2019
comment
@thomthom, твой комментарий должен кому-нибудь помочь?   -  person Davesexcel    schedule 06.08.2019


Ответы (1)


Я нашел этот ответ. Я думаю, он находит лица, которые имеют значение z

vfaces = entities.grep(Sketchup::Face).find_all{|f| f.normal.z.abs != 0 }
vfaces.each{|f| f.material = rfClr }
person Davesexcel    schedule 03.04.2019
comment
Я не думаю, что abs необходим. Я был удивлен, увидев, что на ваш вопрос есть ответ. Большинство вопросов по Sketchup/Ruby остаются без ответа. (Я ничего не знаю об API.) - person Cary Swoveland; 03.04.2019