public override string EnglishName
{
get { return "clSampleAttachHashSet"; }
}
protected override Result RunCommand(RhinoDoc doc, RunMode mode)
{
var id1 = new Guid("9B2590F5-4BFF-44CF-8466-4B4250864744");
var id2 = new Guid("E5011CCD-C046-4333-9605-1E853D795A33");
var id3 = new Guid("F129DB00-D50C-40B4-B189-6BF13F06D5BA");
var set = new HashSet<Guid>();
set.Add(id1);
set.Add(id2);
set.Add(id3);
var rc = RhinoGet.GetOneObject("Select object", false, ObjectType.AnyObject, out ObjRef objRef);
if (rc != Result.Success)
{
return rc;
}
if (objRef == null)
{
return Result.Failure;
}
var obj = objRef.Object();
if (obj == null)
{
return Result.Failure;
}
var dict = obj.Attributes.UserDictionary;
if (!dict.ContainsKey("set"))
{
dict.Set("set", set);
var type = dict["set"].ToString();
RhinoApp.WriteLine(type);
}
return Result.Success;
}
Read HashSet:
public override string EnglishName
{
get { return "clSampleReadHashset"; }
}
protected override Result RunCommand(RhinoDoc doc, RunMode mode)
{
var rc = RhinoGet.GetOneObject("Select object", false, ObjectType.AnyObject, out ObjRef objRef);
if (rc != Result.Success)
{
return rc;
}
if (objRef == null)
{
return Result.Failure;
}
var obj = objRef.Object();
if (obj == null)
{
return Result.Failure;
}
var dict = obj.Attributes.UserDictionary;
if (dict.ContainsKey("set"))
{
var type = dict["set"].ToString();
RhinoApp.WriteLine(type);
}
return Result.Success;
}
If you review the documentation for an ArchivableDictionary, you can see there is no Set member that accepts a HashSet.
However, there are a number of ArchivableDictionary.Set overrides that accept an IEnumerable collection. A HashSet does inherit from IEnumerable, which is why your setting code works.