From 5cfb97672a229fee38a69d6bd0802e2ac2c597c7 Mon Sep 17 00:00:00 2001 From: pjincz Date: Sun, 14 Apr 2024 19:39:54 +0800 Subject: [PATCH] Update the ToString method to let Object more friendly to panel --- .../ObjectClasses/GH_ObjectivismObject.cs | 2 +- ObjectivismGH/ObjectClasses/ObjectProperty.cs | 47 +++++++++++++++++++ .../ObjectClasses/ObjectivismObject.cs | 23 +++++++++ 3 files changed, 71 insertions(+), 1 deletion(-) diff --git a/ObjectivismGH/ObjectClasses/GH_ObjectivismObject.cs b/ObjectivismGH/ObjectClasses/GH_ObjectivismObject.cs index f636128..b7885e3 100644 --- a/ObjectivismGH/ObjectClasses/GH_ObjectivismObject.cs +++ b/ObjectivismGH/ObjectClasses/GH_ObjectivismObject.cs @@ -32,7 +32,7 @@ public override IGH_GeometricGoo DuplicateGeometry() public override string ToString() { - return $"{Value.TypeName} object"; + return Value.ToString(); } public GH_ObjectivismObject(ObjectivismObject value) diff --git a/ObjectivismGH/ObjectClasses/ObjectProperty.cs b/ObjectivismGH/ObjectClasses/ObjectProperty.cs index d423aa0..e41153c 100644 --- a/ObjectivismGH/ObjectClasses/ObjectProperty.cs +++ b/ObjectivismGH/ObjectClasses/ObjectProperty.cs @@ -85,6 +85,53 @@ public ObjectProperty(ObjectProperty other) Data = other.Data.MapTree(DuplicateUtil); } + public override string ToString() + { + if (Access == PropertyAccess.Item) + { + IGH_Goo first = Data.get_FirstItem(false); + if (first != null) + { + return first.ToString(); + } + else + { + return ""; + } + } + else if (Access == PropertyAccess.List) + { + List repr = new List(); + int n = Data.DataCount; + for (int i = 0; i < n; ++i) + { + repr.Add(Data.get_DataItem(i).ToString()); + } + return "[" + string.Join(", ", repr) + "]"; + } + else + { + List repr = new List(); + foreach (GH_Path path in Data.Paths) + { + List repr2 = new List(); + foreach (IGH_Goo data in Data[path]) + { + repr2.Add(data.ToString()); + } + repr.Add(" " + path.ToString() + ": [" + string.Join(", ", repr2) + "]"); + } + if (repr.Count > 0) + { + return "{\n" + string.Join("\n", repr) + "\n}"; + } + else + { + return "{}"; + } + } + } + private IGH_Goo DeReferenceIfRequired(IGH_Goo goo) { if (goo is IGH_GeometricGoo geom) diff --git a/ObjectivismGH/ObjectClasses/ObjectivismObject.cs b/ObjectivismGH/ObjectClasses/ObjectivismObject.cs index b9dac72..1a2ec7f 100644 --- a/ObjectivismGH/ObjectClasses/ObjectivismObject.cs +++ b/ObjectivismGH/ObjectClasses/ObjectivismObject.cs @@ -5,6 +5,7 @@ using Rhino.Render; using System.Collections.Generic; using System.Dynamic; +using System.IO; using System.Linq; namespace Objectivism @@ -102,6 +103,28 @@ public ObjectProperty GetProperty(string name) } } + private string indentString(string cont) + { + StringReader sr = new StringReader(cont); + List r = new List(); + string line; + while ((line = sr.ReadLine()) != null) { + r.Add(" " + line); + } + return string.Join("\n", r); + } + + public override string ToString() + { + List repr = new List(); + repr.Add($"{TypeName} {{"); + foreach ((string name, ObjectProperty prop) in properties) + { + repr.Add(indentString($"{name}: {prop.ToString()}")); + } + repr.Add("}"); + return string.Join("\n", repr); + } internal (ObjectivismObject obj, AccessInfo conflicts) AddOrChangeProperties(List<(string name, ObjectProperty newProperty)> changes) => AddOrChangeProperties(changes, this.TypeName);