Hey there,
I want to hide certain objects in my file…
foreach (var obj in RhinoDoc.ActiveDoc.Objects)
{
if (show_case == true)
{
RhinoDoc.ActiveDoc.Objects.Hide(obj, true);
}
else
{
RhinoDoc.ActiveDoc.Objects.Lock(obj, true);
}
}
Rhino.RhinoDoc.ActiveDoc.Views.Redraw();
So far this is working (no idea if this is the most elegant way though.
But when I want to show them again here:
foreach (var obj in RhinoDoc.ActiveDoc.Objects)
{
if (show_case == true)
{
RhinoDoc.ActiveDoc.Objects.Show(obj, true);
}
else
{
RhinoDoc.ActiveDoc.Objects.Unlock(obj, true);
}
}
Rhino.RhinoDoc.ActiveDoc.Views.Redraw();
Unlocking them is working perfectly fine.
Showing them is not working at all!
What am I missing here?
Thanks in advance,
T.
1 Like
Hi Tobias,
From what I’m aware of, RhinoDoc.ActiveDoc.Objects
only returns visible objects of the document.
You may want to use GetObjectList()
method instead. The following should work:
protected override Result RunCommand(RhinoDoc doc, RunMode mode)
{
var settings = new ObjectEnumeratorSettings();
settings.ActiveObjects = true;
settings.NormalObjects = true;
settings.HiddenObjects = true;
settings.LockedObjects = true;
settings.ObjectTypeFilter = ObjectType.AnyObject;
var objects = doc.Objects.GetObjectList(settings);
foreach (var obj in objects)
{
RhinoApp.WriteLine(obj.Id.ToString());
// Set objects visibility to true and commit changes
obj.Attributes.Visible = true;
obj.CommitChanges();
}
doc.Views.Redraw();
return Result.Success;
}
2 Likes
hi @jeffoulet,
that’s it.
I tried to take a look at IsHidden()
to find out what is wrong and I only got back false
.
This explains a lot now, as only visible objects are retruned in the ObjectTable.
Thanks a lot!
T.
1 Like
Thank you,very helpful topic!
1 Like