Hi,
Sorry to pick up an old conversation. I’m just starting my journey and having the same problem but can’t quite figure out how to use ScheduleSolution(). The script below is where i’m at (mostly hobbled together from pieces of others scripts online as I attempt to figure out what they mean). Any pointers to nudge me in thr right direction would be appreciated.
private void RunScript(ref object selObjs)
{
List<string> objs = new List<string>();
foreach (RhinoObject obj in RhinoDocument.Objects.GetSelectedObjects(false, false))
{
if (obj != null)
objs.Add(obj.Id.ToString());
}
selObjs = objs;
if (_handler == null)
_handler = new SelectionEventHandler(Component);
}
internal SelectionEventHandler _handler;
internal class SelectionEventHandler
{
private readonly GH_Document _document;
private readonly IGH_Component _component;
public SelectionEventHandler(IGH_Component component)
{
_component = component;
_document = component.OnPingDocument();
Rhino.RhinoDoc.SelectObjects += ObjectsSelected;
Rhino.RhinoDoc.DeselectObjects += ObjectsDeselected;
Rhino.RhinoDoc.DeselectAllObjects += AllObjectsDeselected;
}
private void ObjectsSelected(object sender, RhinoObjectSelectionEventArgs e)
{
TriggerUpdate();
}
private void ObjectsDeselected(object sender, RhinoObjectSelectionEventArgs e)
{
TriggerUpdate();
}
private void AllObjectsDeselected(object sender, RhinoDeselectAllObjectsEventArgs e)
{
TriggerUpdate();
}
private void TriggerUpdate()
{
_component.ExpireSolution(false);
if (ReferenceEquals(Grasshopper.Instances.ActiveCanvas.Document, _document))
{
_document.NewSolution(false);
}
}
}