n°29
Actions sur des objets à l'intérieur de blocs dans Rhino
Python, Rhino3D
16 mai 2020

Extrait de code Python pour appliquer une action sur tous les objets d'un calque Rhino, y compris ceux à l'intérieur de blocs – voire de blocs dans d'autres blocs. Les objets à l'intérieur de blocs restant inacessibles pour l'utilisateur, on ne peut pas leur appliquer des commandes de type macro avec rs.Command() mais uniquement des fonctions Python.

import rhinoscriptsyntax as rs

def loopBlock(block):
    objectsInBlock = rs.BlockObjects(rs.BlockInstanceName(block))

    for obj in objectsInBlock:
        if rs.ObjectType(obj) != 4096:
            action(obj)
        else:
            loopBlock(obj)

def action(object):
    rs.ObjectColor(object, [255,100,100]) # or anything else

rs.UnselectAllObjects()

layers = rs.GetLayers("Select Layers")
if layers:
    objs = rs.AllObjects(include_lights=True, include_grips=True, include_references=True)
    if objs:
        for obj in objs:
            if rs.ObjectLayer(obj) in layers:
                if rs.ObjectType(obj) == 4096: #block
                    loopBlock(obj)
                else:
                    action(obj)
    else:
        print "No objects on that layer."
else:
    print "No layer selected."

c. héraud-louisadat

architecte & développeur
67200 Strasbourg
heraud-arobase-laponies-point-fr

*1992, Strasbourg.

Diplômé d'état en 2016 de l'ENSA Paris-Malaquais et de la RWTH Aachen et habilité à maîtrise d'oeuvre en nom propre (HMONP) en 2019, j'ai travaillé pour diverses agences d'architecture à Paris et Berlin puis fait de la recherche en histoire de l'art sur l'architecture Heimatschutz. J'ai fondé l'agence Atkinson-Héraud Architectes en 2023 avec Isabelle Atkinson-Evans. Je développe également des applications pour le Web et la 3D. Vous pouvez par ailleurs consulter l'archive net art des travaux laponies.fr ainsi que la carte des bonnes adresses.

Amis, famille et blogroll : Anaïs Héraud-Louisadat, Héraud–Baumann, Till Baumann, Antoine Le Dreff, Station Zéro, BALT.

alsace europe