Description
Copie un bloc en entrant ses coordonnées.
Voir aussi le script SuperMove.
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.CopyObject(block_instance_id, translation_vector)
print("Block instance moved to: X =", new_x, "Y =", new_y, "Z =", new_z)
if __name__ == "__main__":
main()