protected override void TrySolveInstance(IGH_DataAccess DA) { DB.Category category = null; if (!DA.GetData("Category", ref category)) { return; } DA.SetData("Name", category?.Name); DA.SetData("Parent", category?.Parent); DA.SetData("Type", category?.CategoryType); DA.SetData("AllowsSubcategories", category?.CanAddSubcategory); DA.SetData("AllowsParameters", category?.AllowsBoundParameters); DA.SetData("HasMaterialQuantities", category?.HasMaterialQuantities); }
private static Autodesk.Revit.DB.Category GetCategory(String name) { Autodesk.Revit.DB.Category category = null; Settings documentSettings = DocumentManager.Instance.CurrentDBDocument.Settings; var groups = documentSettings.Categories; var splits = name.Split('-'); if (groups.Contains(name)) { category = groups.get_Item(name); } else if (splits.Count() > 1) { var indexs = FindAllChars(name, '-'); foreach (var index in indexs) { var parentName = name.Substring(0, index).TrimEnd(' '); var subName = name.Substring(index + 1).TrimStart(' '); if (groups.Contains(parentName)) { var parentCategory = groups.get_Item(parentName); if (parentCategory != null) { if (parentCategory.SubCategories.Contains(subName)) { category = parentCategory.SubCategories.get_Item(subName); break; } } } } } else { // Fall back // Use category enum name with or without OST_ prefix var fullName = name.Length > 3 && name.Substring(0, 4) == "OST_" ? name : "OST_" + name; var names = Enum.GetNames(typeof(BuiltInCategory)); if (System.Array.Exists(names, entry => entry == fullName)) { var builtInCat = (BuiltInCategory)Enum.Parse(typeof(BuiltInCategory), fullName); category = groups.get_Item(builtInCat); } } return(category); }
protected override void SolveInstance(IGH_DataAccess DA) { Autodesk.Revit.DB.Category category = null; if (!DA.GetData("Category", ref category)) { return; } DA.SetData("Name", category?.Name); DA.SetData("Parent", category?.Parent); DA.SetData("Type", category?.CategoryType); DA.SetData("AllowsParameters", category?.AllowsBoundParameters); DA.SetData("HasMaterialQuantities", category?.HasMaterialQuantities); DA.SetData("Cuttable", category?.IsCuttable); DA.SetData("Hidden", category is null ? (object)null : category.IsHidden()); }
protected override void SolveInstance(IGH_DataAccess DA) { Autodesk.Revit.DB.Category category = null; if (!DA.GetData("Category", ref category)) { return; } var doc = Revit.ActiveDBDocument; DA.SetData("LineWeight [projection]", category?.GetLineWeight(GraphicsStyleType.Projection)); DA.SetData("LineWeight [cut]", category?.GetLineWeight(GraphicsStyleType.Cut)); DA.SetData("LineColor", category?.LineColor.ToRhino()); DA.SetData("LinePattern [projection]", doc.GetElement(category?.GetLinePatternId(GraphicsStyleType.Projection))); DA.SetData("LinePattern [cut]", doc.GetElement(category?.GetLinePatternId(GraphicsStyleType.Cut))); DA.SetData("Material", category?.Material); }
public void ModifyOverrideGraphicSettings(RevitView view) { RevitDoc document = view.Document; RevitDB.Category category = Category.GetCategory(document); if (category != null) { view.SetCategoryHidden(category.Id, this.IsHidden); if (this.GraphicOverride != null) { RevitDB.OverrideGraphicSettings ogs = this.GraphicOverride.ToOverrideGraphicSettings(); view.SetCategoryOverrides(category.Id, ogs); } } }
/// <summary> /// Get all objects of a certain category from a linked interface /// </summary> /// <param name="LinkInstance">Link Instance</param> /// <param name="Category">Category</param> /// <returns></returns> public static Autodesk.Revit.DB.Category GetRevitCategory(Revit.Elements.Category Category) { System.Reflection.PropertyInfo IntProp = Category.GetType().GetProperty("InternalCategory", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); if (IntProp == null) { throw new ArgumentException("No category matching"); } Autodesk.Revit.DB.Category Cat1 = IntProp.GetValue(Category) as Autodesk.Revit.DB.Category; if (Cat1 == null) { throw new ArgumentException("Could not find category"); } return(Cat1); }
private static string getFullName(Autodesk.Revit.DB.Category category) { string result = string.Empty; if (category != null) { Autodesk.Revit.DB.Category parent = category.Parent; if (parent == null) { result = category.Name.ToString(); } else { result = parent.Name.ToString() + " - " + category.Name.ToString(); } } return(result); }
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); }
/// <summary> /// Gets a Revit category by the built-in category name. /// </summary> /// <param name="name">The built in category name.</param> /// <returns></returns> public static Category ByName(string name) { if (name == null) { throw new ArgumentNullException("name"); } // Find category using localized name Autodesk.Revit.DB.Category category = null; category = GetCategory(name); if (category == null) { throw new ArgumentException(Properties.Resources.InvalidCategory); } return(new Category(category)); }
public static List <int?> CutLineweight(List <global::Revit.Elements.Category> category) { //obtains the current document for later use Autodesk.Revit.DB.Document doc = DocumentManager.Instance.CurrentDBDocument; //category stuff - list to append the results to List <int?> categoryCutLineweight = new List <int?>(); //iterates through each of the input items. foreach (global::Revit.Elements.Category c in category) { //generate the category id from the input user viewable category Autodesk.Revit.DB.ElementId categoryId = new ElementId(c.Id); //obtain the internal Revit category from the id Autodesk.Revit.DB.Category internalRevitCat = Autodesk.Revit.DB.Category.GetCategory(doc, categoryId); categoryCutLineweight.Add(internalRevitCat.GetLineWeight(GraphicsStyleType.Cut)); } return(categoryCutLineweight); }
public static Category ById(int id) { try { var categories = DocumentManager.Instance.CurrentDBDocument.Settings.Categories; BuiltInCategory categoryId = (BuiltInCategory)id; Autodesk.Revit.DB.Category category = categories.get_Item(categoryId); if (null == category) { throw new ArgumentException(Properties.Resources.InvalidCategory); } return(new Category(category)); } catch { throw new ArgumentException(Properties.Resources.InvalidCategory); } }
public static Category ById(int id) { try { var document = DocumentManager.Instance.CurrentDBDocument; BuiltInCategory categoryId = (BuiltInCategory)id; Autodesk.Revit.DB.Category category = Autodesk.Revit.DB.Category.GetCategory(document, categoryId); if (null == category) { throw new ArgumentException(Properties.Resources.InvalidCategory); } return(new Category(category)); } catch { throw new ArgumentException(Properties.Resources.InvalidCategory); } }
protected override void SolveInstance(IGH_DataAccess DA) { var geometry = new List <Rhino.Geometry.GeometryBase>(); DA.GetDataList("Geometry", geometry); Autodesk.Revit.DB.Category category = null; if (!DA.GetData("Category", ref category) && Params.Input[1].Sources.Count == 0) { category = Autodesk.Revit.DB.Category.GetCategory(Revit.ActiveDBDocument, BuiltInCategory.OST_GenericModel); } string name = string.Empty; DA.GetData("Name", ref name); DA.DisableGapLogic(); int Iteration = DA.Iteration; Revit.EnqueueAction((doc) => CommitInstance(doc, DA, Iteration, geometry, category, name)); }
public SerialElementId(RevitElemId Id, [DefaultArgument("Synthetic.Revit.Document.Current()")] RevitDoc Document) { this.Id = Id.IntegerValue; RevitElem elem = Document.GetElement(Id); if (elem != null) { this.Name = elem.Name; this.Class = elem.GetType().FullName; this.UniqueId = elem.UniqueId; RevitDB.Category cat = elem.Category; if (cat != null) { this.Category = elem.Category.Name; } } }
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(); using (var transaction = NewTransaction(doc)) { transaction.Start(); using (var categories = doc.Settings.Categories) newSubcat = categories.NewSubcategory(parent, newSubcatName); CommitTransaction(doc, transaction); } } // return data to DA DA.SetData("SubCategory", newSubcat); }
//method to display the category name private static string getFullName(Autodesk.Revit.DB.Category category) { string name = string.Empty; if (category != null) { var parent = category.Parent; if (parent == null) { // Top level category // For example "Cable Trays" name = category.Name.ToString(); } else { // Sub-category // For example "Cable Tray - Center Lines" name = parent.Name.ToString() + " - " + category.Name.ToString(); } } return(name); }
protected override void SolveInstance(IGH_DataAccess DA) { Autodesk.Revit.DB.Category category = null; DA.GetData("Category", ref category); var elements = new List<Types.Element>(); using (var collector = new FilteredElementCollector(Revit.ActiveDBDocument)) { if (category == null) { foreach (var element in collector.WhereElementIsNotElementType().ToElementIds()) elements.Add(Types.Element.Make(element)); } else { foreach (var element in collector.WhereElementIsNotElementType().OfCategoryId(category.Id).ToElementIds()) elements.Add(Types.Element.Make(element)); } } DA.SetDataList("Elements", elements); }
protected override void SolveInstance(IGH_DataAccess DA) { var geometry = new List <IGH_GeometricGoo>(); DA.GetDataList("Geometry", geometry); Autodesk.Revit.DB.Category category = null; if (!DA.GetData("Category", ref category) && Params.Input[1].Sources.Count == 0) { category = Autodesk.Revit.DB.Category.GetCategory(Revit.ActiveDBDocument, BuiltInCategory.OST_GenericModel); } string name = null; if (!DA.GetData("Name", ref name) && geometry.Count == 1 && (geometry[0]?.IsReferencedGeometry ?? false)) { name = Rhino.RhinoDoc.ActiveDoc.Objects.FindId(geometry[0].ReferenceID)?.Name; } DA.DisableGapLogic(); int Iteration = DA.Iteration; Revit.EnqueueAction((doc) => CommitInstance(doc, DA, Iteration, geometry, category, name)); }
void Add ( DB.Document doc, DB.Document familyDoc, Rhino.Geometry.Curve curve, List <KeyValuePair <double[], DB.SketchPlane> > planesSet, DeleteElementEnumerator <DB.CurveElement> curves ) { if (curve.TryGetPlane(out var plane)) { var abcd = plane.GetPlaneEquation(); int index = planesSet.BinarySearch(new KeyValuePair <double[], DB.SketchPlane>(abcd, null), PlaneComparer.Instance); if (index < 0) { var entry = new KeyValuePair <double[], DB.SketchPlane>(abcd, DB.SketchPlane.Create(familyDoc, plane.ToPlane())); index = ~index; planesSet.Insert(index, entry); } var sketchPlane = planesSet[index].Value; DB.GraphicsStyle familyGraphicsStyle = null; { DB.Category familySubCategory = null; if ( curve.TryGetUserString(DB.BuiltInParameter.FAMILY_ELEM_SUBCATEGORY.ToString(), out DB.ElementId subCategoryId) && DB.Category.GetCategory(doc, subCategoryId) is DB.Category subCategory ) { if (subCategoryId == familyDoc.OwnerFamily.FamilyCategory.Id) { familySubCategory = MapCategory(doc, familyDoc, subCategoryId, true); } else if (subCategory?.Parent?.Id == familyDoc.OwnerFamily.FamilyCategory.Id) { familySubCategory = MapCategory(doc, familyDoc, subCategoryId, true); } else { if (subCategory.Parent is null) { AddRuntimeMessage(GH_RuntimeMessageLevel.Error, $"'{subCategory.Name}' is not subcategory of '{familyDoc.OwnerFamily.FamilyCategory.Name}'"); } else { AddRuntimeMessage(GH_RuntimeMessageLevel.Error, $"'{subCategory.Parent.Name} : {subCategory.Name}' is not subcategory of '{familyDoc.OwnerFamily.FamilyCategory.Name}'"); } } } curve.TryGetUserString(DB.BuiltInParameter.FAMILY_CURVE_GSTYLE_PLUS_INVISIBLE.ToString(), out var graphicsStyleType, DB.GraphicsStyleType.Projection); familyGraphicsStyle = familySubCategory?.GetGraphicsStyle(graphicsStyleType); } curve.TryGetUserString(DB.BuiltInParameter.MODEL_OR_SYMBOLIC.ToString(), out bool symbolic, false); curve.TryGetUserString(DB.BuiltInParameter.IS_VISIBLE_PARAM.ToString(), out var visible, true); curve.TryGetUserString(DB.BuiltInParameter.GEOM_VISIBILITY_PARAM.ToString(), out var visibility, 57406); foreach (var c in curve.ToCurveMany()) { curves.MoveNext(); if (symbolic) { if (curves.Current is DB.SymbolicCurve symbolicCurve && symbolicCurve.GeometryCurve.IsSameKindAs(c)) { symbolicCurve.SetSketchPlaneAndCurve(sketchPlane, c); curves.DeleteCurrent = false; } else { symbolicCurve = familyDoc.FamilyCreate.NewSymbolicCurve(c, sketchPlane); } symbolicCurve.get_Parameter(DB.BuiltInParameter.IS_VISIBLE_PARAM).Set(visible ? 1 : 0); symbolicCurve.get_Parameter(DB.BuiltInParameter.GEOM_VISIBILITY_PARAM).Set(visibility); if (familyGraphicsStyle is object) { symbolicCurve.Subcategory = familyGraphicsStyle; } } else { if (curves.Current is DB.ModelCurve modelCurve && modelCurve.GeometryCurve.IsSameKindAs(c)) { modelCurve.SetSketchPlaneAndCurve(sketchPlane, c); curves.DeleteCurrent = false; }
bool Add ( DB.Document doc, DB.Document familyDoc, Rhino.Geometry.Brep brep, DeleteElementEnumerator <DB.GenericForm> forms ) { forms.MoveNext(); if (brep.ToSolid() is DB.Solid solid) { if (forms.Current is DB.FreeFormElement freeForm) { freeForm.UpdateSolidGeometry(solid); forms.DeleteCurrent = false; } else { freeForm = DB.FreeFormElement.Create(familyDoc, solid); } brep.TryGetUserString(DB.BuiltInParameter.ELEMENT_IS_CUTTING.ToString(), out bool cutting, false); freeForm.get_Parameter(DB.BuiltInParameter.ELEMENT_IS_CUTTING).Set(cutting ? 1 : 0); if (!cutting) { DB.Category familySubCategory = null; if ( brep.TryGetUserString(DB.BuiltInParameter.FAMILY_ELEM_SUBCATEGORY.ToString(), out DB.ElementId subCategoryId) && DB.Category.GetCategory(doc, subCategoryId) is DB.Category subCategory ) { if (subCategory.Parent.Id == familyDoc.OwnerFamily.FamilyCategory.Id) { familySubCategory = MapCategory(doc, familyDoc, subCategoryId, true); } else { if (subCategory.Parent is null) { AddRuntimeMessage(GH_RuntimeMessageLevel.Error, $"'{subCategory.Name}' is not subcategory of '{familyDoc.OwnerFamily.FamilyCategory.Name}'"); } else { AddRuntimeMessage(GH_RuntimeMessageLevel.Error, $"'{subCategory.Parent.Name} : {subCategory.Name}' is not subcategory of '{familyDoc.OwnerFamily.FamilyCategory.Name}'"); } } } if (familySubCategory is null) { freeForm.get_Parameter(DB.BuiltInParameter.FAMILY_ELEM_SUBCATEGORY).Set(DB.ElementId.InvalidElementId); } else { freeForm.Subcategory = familySubCategory; } brep.TryGetUserString(DB.BuiltInParameter.IS_VISIBLE_PARAM.ToString(), out var visible, true); freeForm.get_Parameter(DB.BuiltInParameter.IS_VISIBLE_PARAM).Set(visible ? 1 : 0); brep.TryGetUserString(DB.BuiltInParameter.GEOM_VISIBILITY_PARAM.ToString(), out var visibility, 57406); freeForm.get_Parameter(DB.BuiltInParameter.GEOM_VISIBILITY_PARAM).Set(visibility); brep.TryGetUserString(DB.BuiltInParameter.MATERIAL_ID_PARAM.ToString(), out DB.ElementId materialId); var familyMaterialId = MapMaterial(doc, familyDoc, materialId, true); freeForm.get_Parameter(DB.BuiltInParameter.MATERIAL_ID_PARAM).Set(familyMaterialId); } return(cutting); } return(false); }
public Category(DB.Category category) : base(category.Document(), category.Id) { }
void CommitInstance ( Document doc, IGH_DataAccess DA, int Iteration, IEnumerable <IGH_GeometricGoo> geometries, Autodesk.Revit.DB.Category category, string name ) { var element = PreviousElement(doc, Iteration); if (!element?.Pinned ?? false) { ReplaceElement(doc, DA, Iteration, element); } else { try { var shape = new List <GeometryObject>(); if (geometries != null) { if (category == null || !DirectShape.IsValidCategoryId(category.Id, doc)) { AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, string.Format("Parameter '{0}' is not valid for DirectShape.", Params.Input[1].Name)); category = Autodesk.Revit.DB.Category.GetCategory(doc, BuiltInCategory.OST_GenericModel); } foreach (var geometry in geometries.Select((x) => AsGeometryBase(x)).ToHost()) { // DirectShape only accepts those types and no nulls foreach (var g in geometry.SelectMany(g => g.ToDirectShapeGeometry())) { switch (g) { case Point p: shape.Add(p); break; case Curve c: shape.Add(c); break; case Solid s: shape.Add(s); break; case Mesh m: shape.Add(m); break; } } } } if (element?.Category.Id != category.Id) { element = null; } var ds = element as DirectShape ?? CopyParametersFrom(DirectShape.CreateElement(doc, category.Id), element); ds.SetShape(shape); ds.Name = name ?? string.Empty; element = ds; ReplaceElement(doc, DA, Iteration, element); } catch (Exception e) { AddRuntimeMessage(GH_RuntimeMessageLevel.Error, e.Message); ReplaceElement(doc, DA, Iteration, null); } } }
/// <summary> /// Get all subcategory. /// </summary> /// <param name="category"></param> /// <param name="view">Current view.</param> /// <returns></returns> private TreeNode GetChildNode(Category category,Autodesk.Revit.DB.View view) { if(category == null) return null; if (!category.get_AllowsVisibilityControl(view)) return null; TreeNode treeNode = new TreeNode(category.Name); treeNode.Tag = category; treeNode.Checked = true; if(category.SubCategories.Size == 0) { return treeNode; } foreach (Category subCategory in category.SubCategories) { TreeNode child = GetChildNode(subCategory,view); if(child !=null) treeNode.Nodes.Add(child); } return treeNode; }
public Category(Autodesk.Revit.DB.Category category) : base(category.Id) { }
public static Category Make(Autodesk.Revit.DB.Category category) => Make(category?.Id);
public Category(Autodesk.Revit.DB.Category category) : base(category != null ? category.Id.IntegerValue : ElementId.InvalidElementId.IntegerValue) { }
protected override bool CategoryIsInSet(DB.Category category) => !category.IsTagCategory && category.CategoryType == DB.CategoryType.AnalyticalModel;
internal Category(Autodesk.Revit.DB.Category category) { internalCategory = category; }
protected override bool CategoryIsInSet(DB.Category category) => category.IsTagCategory;
protected override bool CategoryIsInSet(DB.Category category) => !category.IsTagCategory && category.CategoryType == DB.CategoryType.Annotation;
private Category(Autodesk.Revit.DB.Category category) { internal_category = category; }
protected abstract bool CategoryIsInSet(DB.Category category);