Description

Sélectionne toutes les instances identiques au block(s) sélectionné(s).

Le script suivant fonctionne sur :

  • Rhino pour Windows ;
  • Rhino pour macOS.

Script par Ejnar Brendsdal sous licence MIT.

Code

#******* Imports ********************
#************************************
 
import rhinoscriptsyntax as rs
import scriptcontext as sc
import Rhino.Geometry as G
 
#******* Main function ********************
#******************************************
 
def RunCommand( is_interactive ):
    if sc.escape_test(False):
        print "script cancelled" #do something
 
    print "Selecting all blocks of same definition..."
 
    #******* Get blocks *****************
    #************************************
 
    objectIds = rs.GetObjects("Pick some blocks", 4096, preselect=True)
    if not objectIds:
        print "No objects"
        return False
 
 
    #pause viewport redraw
    rs.EnableRedraw(False)
 
    #******* Sort blocks by Name ********
    #************************************
    blockNames = []
    for id in objectIds:
        blockName = rs.BlockInstanceName(id)
        if blockName not in blockNames:
            blockNames.append(blockName)
 
    #******* Get block instances by name ********
    #********************************************
    selIds = []
    for name in blockNames:
        blockIds = rs.BlockInstances(name)
        selIds.extend(blockIds)
 
    #******* Select blocks **************
    #************************************
    rs.SelectObjects(selIds)
 
    rs.EnableRedraw(True)
 
    print "...aaand its done."
    #End RunCommand()
 
    #end sane
    return 0
 
RunCommand(True) #Run script