protected override void TrySolveInstance(IGH_DataAccess DA) { DB.Category parent = null; if (!DA.GetData("Category", ref parent)) { return; } if (parent.Parent is object) { DA.SetDataList("SubCategories", null); } else { using (var subCategories = parent.SubCategories) { var doc = parent.Document(); var SubCategories = new HashSet <int>(subCategories.Cast <DB.Category>().Select(x => x.Id.IntegerValue)); if (parent.Id.IntegerValue == (int)DB.BuiltInCategory.OST_Stairs) { SubCategories.Add((int)DB.BuiltInCategory.OST_StairsStringerCarriage); } if (parent.Id.IntegerValue == (int)DB.BuiltInCategory.OST_Walls) { SubCategories.Add((int)DB.BuiltInCategory.OST_StackedWalls); } DA.SetDataList("SubCategories", SubCategories.Select(x => new Types.Category(doc, new DB.ElementId(x)))); } } }
protected override void TrySolveInstance(IGH_DataAccess DA) { DB.Category parent = null; if (!DA.GetData("Parent", ref parent)) { return; } string newSubcatName = default; if (!DA.GetData("Name", ref newSubcatName)) { return; } // find existing subcat if exists var newSubcat = parent.SubCategories.Cast <DB.Category>(). Where(x => x.Name == newSubcatName). FirstOrDefault(); // if not found, create one if (newSubcat is null && newSubcatName != string.Empty) { var doc = parent.Document(); StartTransaction(doc); using (var categories = doc.Settings.Categories) newSubcat = categories.NewSubcategory(parent, newSubcatName); } // return data to DA DA.SetData("SubCategory", newSubcat); }
protected override void SolveInstance(IGH_DataAccess DA) { DB.Category category = null; if (!DA.GetData("Category", ref category)) { return; } var doc = category?.Document(); DA.SetData("LineWeight [projection]", category?.GetLineWeight(DB.GraphicsStyleType.Projection)); DA.SetData("LineWeight [cut]", category?.GetLineWeight(DB.GraphicsStyleType.Cut)); DA.SetData("LineColor", category?.LineColor.ToRhino()); DA.SetData("LinePattern [projection]", doc?.GetElement(category.GetLinePatternId(DB.GraphicsStyleType.Projection))); DA.SetData("LinePattern [cut]", doc?.GetElement(category.GetLinePatternId(DB.GraphicsStyleType.Cut))); DA.SetData("Material", category?.Material); DA.SetData("Cuttable", category?.IsCuttable); }
public Category(DB.Category category) : base(category.Document(), category.Id) { }