Description

Place les annotations dans leur calque dédié.

Ce script est encore expérimental et doit continuer d'être testé et mis à jour.

Le script suivant fonctionne sur :

  • Rhino pour Windows ;
  • Rhino pour macOS.

Script par MLAV.LAND, sous licence GNU GPL 3.

Code

import rhinoscriptsyntax as rs
import scriptcontext as sc
 
def arrange_texts_in_layers(annotation_style_name, target_layer):
    rs.EnableRedraw(False)
    all_objs = rs.AllObjects()
    if all_objs:
        for obj in all_objs:
            if rs.IsDimension(obj) or rs.IsLeader(obj) or rs.IsText(obj):
                if rs.DimensionStyle(obj) == annotation_style_name:
                    rs.ObjectLayer(obj, target_layer)
    idefs = sc.doc.InstanceDefinitions
    for idef in idefs:
        if idef.Name:
            idef_objects = idef.GetObjects()
            for obj in idef_objects:
                if rs.IsDimension(obj) or rs.IsLeader(obj) or rs.IsText(obj):
                    if rs.DimensionStyle(obj) == annotation_style_name:
                        rs.ObjectLayer(obj.Id, target_layer)
    rs.EnableRedraw(True)
 
if( __name__ == "__main__" ):
    arrange_texts_in_layers("R-100", "00-2D::03-Dimensions::02-100eme")
    arrange_texts_in_layers("R-50", "00-2D::03-Dimensions::03-50eme")
    arrange_texts_in_layers("R-20", "00-2D::03-Dimensions::04-20eme")
    arrange_texts_in_layers("R-Layout-Annotation", "00-2D::03-Dimensions::05-Layout")
    print("All annotations have been placed in their relevant layer :)")