Description

Déplace un bloc en entrant ses coordonnées.

Voir aussi le script SuperCopy.

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
 
def main():
    # Check if there is already a selected block instance
    selected_objects = rs.SelectedObjects()
    block_instance_id = None
    for obj in selected_objects:
        if rs.IsBlockInstance(obj):
            block_instance_id = obj
            break
 
    # If no block instance is already selected, ask the user to select one
    if not block_instance_id:
        block_instance_id = rs.GetObject("Select a block instance", rs.filter.instance)
        if not block_instance_id: return
 
    # Rest of the script remains the same
    original_insert_point = rs.BlockInstanceInsertPoint(block_instance_id)
    if not original_insert_point: return
 
    original_x = original_insert_point.X
    original_y = original_insert_point.Y
    original_z = original_insert_point.Z
 
    labels = ["X Coordinate", "Y Coordinate", "Z Coordinate"]
    values = [original_x, original_y, original_z]
 
    new_values = rs.PropertyListBox(labels, values, "Edit Coordinates", "Block Instance Coordinates")
    if new_values:
        new_x, new_y, new_z = map(float, new_values)
        new_insert_point = rs.coerce3dpoint([new_x, new_y, new_z])
        
        translation_vector = new_insert_point - original_insert_point
        rs.MoveObject(block_instance_id, translation_vector)
        print("Block instance moved to: X =", new_x, "Y =", new_y, "Z =", new_z)
 
if __name__ == "__main__":
    main()