Description
Ce script suit la même logique que la commande Match
, mais spécifiquement pour les paramètres VisualArq d’un objet.
Le script suivant fonctionne sur :
- Rhino pour Windows ;
- Il requiert l’installation du plugin VisualArq.
Script par MLAV.LAND, sous licence GNU GPL 3.
Code
import rhinoscriptsyntax as rs
import clr
clr.AddReference("VisualARQ.Script")
import VisualARQ.Script as va
def va_match_parameters():
objs_to_modify = rs.GetObjects("Select objects to modify", filter=0, preselect=True)
if not objs_to_modify:
print("No objects selected.")
return
source_obj = rs.GetObject("Select source object", filter=0, preselect=False)
if not source_obj:
print("No source object selected.")
return
rs.EnableRedraw(False)
source_parameters_ids = va.GetAllObjectParameterIds(source_obj, True)
parameter_names = [va.GetParameterName(param_id) for param_id in source_parameters_ids]
last_selected = rs.GetDocumentData("MatchParameters", "LastSelected")
if last_selected:
last_selected = last_selected.split(",")
check_list_items = [(param, (param in last_selected if last_selected else False)) for param in parameter_names]
parameters_to_copy = rs.CheckListBox(check_list_items, "Select Parameters to Copy", "Choose parameters:")
if not parameters_to_copy:
print("No parameters selected.")
return
selected_parameters = [param for param, checked in parameters_to_copy if checked]
rs.SetDocumentData("MatchParameters", "LastSelected", ",".join(selected_parameters))
for obj in objs_to_modify:
for param in selected_parameters:
param_id = source_parameters_ids[parameter_names.index(param)]
param_value = va.GetParameterValue(param_id, source_obj)
va.SetParameterValue(param_id, obj, param_value)
rs.EnableRedraw(True)
print(str(len(objs_to_modify)) + " objects modified.")
if __name__ == "__main__":
va_match_parameters()