Bounding box

Buona sera a tutti,
sono un autodidatta e sto iniziando solo ora a scrivere qualche macro che mi automatizzi un lavoro ripetitivo.
dopo aver caricato un modello,devo creare un bounding box e poi quotare le dimensioni massime di ingombro.
non riesco a fare e seguire lo script qui sotto con Rhino7…fa solo lo zoom di tutto e poi si ferma.
qualcuno mi può aiutare?

grazie buona serata
Stefano

import rhinoscriptsyntax as rs
       #fa zoom di tutto 
rs.ZoomExtents(view=None,all=True)
      # seleziona tutto
def create_and_quote_bounding_box():
 #Seleziona tutti gli oggetti nella scena
 objects = rs.AllObjects()
 # Verifica se ci sono oggetti nella scena
 if objects:
 # Calcola il bounding box di tutti gli oggetti
  bounding_box = rs.BoundingBox(objects)
 # Verifica se il bounding box  stato calcolato correttamente
  if bounding_box:
    # Crea un parallelepipedo limite utilizzando il bounding box
     rs.AddBox(bounding_box)
     rs.SelectObjects(objects)
 # Estrai i punti del bounding box
     points = rs.BoundingBoxCorners(bounding_box)
 # Crea le quote per i lati del bounding box
     for i in range(4):
         start_point = points[i]
         end_point = points[(i+1)%4]
         rs.AddAlignedDimension(start_point, end_point)
 # Crea le quote per le altezze del bounding box
     rs.AddAlignedDimension(points[0], points[4])
     rs.AddAlignedDimension(points[1], points[5])
     rs.AddAlignedDimension(points[2], points[6])
     rs.AddAlignedDimension(points[3], points[7])
     rs.SelectObjects(objects)
	# Seleziona nuovamente gli oggetti
  else:
      print("Impossibile calcolare il bounding box degli oggetti.")
 else:
  print("Nessun oggetto presente nella scena.")
 # Esegui la funzione per quotare il bounding box
 create_and_quote_bounding_box()

Hi @Stefano7,

Forse questo ti dà qualche idea.

import Rhino
import scriptcontext as sc
import rhinoscriptsyntax as rs

def create_linear_dimension(origin, point_x, point_y):
    plane = Rhino.Geometry.Plane(origin, point_x, point_y)
    rc, s, t = plane.ClosestParameter(origin)
    p0 = Rhino.Geometry.Point2d(s,t)
    success, s, t = plane.ClosestParameter(point_x)
    p1 = Rhino.Geometry.Point2d(s,t)
    success, s, t = plane.ClosestParameter((origin + point_x) * 0.5)
    p2 = Rhino.Geometry.Point2d(s,t)
    dim = Rhino.Geometry.LinearDimension(plane, p0, p1, p2)
    sc.doc.Objects.AddLinearDimension(dim)

def create_and_quote_bounding_box():
    objects = rs.NormalObjects()
    if objects:
        bbox = rs.BoundingBox(objects)
        if bbox:
            rs.AddBox(bbox)
            create_linear_dimension(bbox[0], bbox[1], bbox[4])
            create_linear_dimension(bbox[3], bbox[0], bbox[7])
            create_linear_dimension(bbox[0], bbox[4], bbox[3])
            rs.ZoomExtents(view=None,all=True)
        else:
            print("Unable to calculate the bounding box of objects.")
    else:
        print("No objects present in the scene.")

if __name__ == "__main__":
    create_and_quote_bounding_box()

– Dale

Grazie Dale,
oggi cercherò di fare due test con il tuo script.
Buona giornata e buon lavoro
Stefano