public static SpaceTag ToRevit_SpaceTag(this Tag tag, Document document, ConvertSettings convertSettings) { if (tag == null || document == null) { return(null); } Core.IntegerId integerId_Reference = tag.ReferenceId; if (integerId_Reference == null) { return(null); } if (tag.BuiltInCategory() != BuiltInCategory.OST_MEPSpaceTags) { return(null); } FamilySymbol familySymbol = tag.Type?.ToRevit(document, convertSettings); if (familySymbol == null) { return(null); } Core.IntegerId integerId_View = tag.ViewId; if (integerId_View == null) { return(null); } View view = Core.Revit.Query.Element <View>(document, integerId_View, true); if (view == null) { return(null); } Space space = Query.Find <Space>(document, integerId_Reference); if (space == null) { return(null); } UV location = tag.Location?.ToRevit(); if (location == null) { return(null); } SpaceTag result = document.Create.NewSpaceTag(space, location, view); if (tag.TryGetValue(TagParameter.Leader, out bool leader) && leader) { result.HasLeader = leader; //XYZ xYZ = (result.Location as LocationPoint)?.Point; //if(xYZ != null) //{ // ElementTransformUtils.MoveElement(document, result.Id, new XYZ(location.U - xYZ.X, location.V - xYZ.Y, 0)); //} UV elbow = tag.Elbow?.ToRevit(); if (elbow != null) { result.LeaderElbow = new XYZ(elbow.U, elbow.V, 0); } UV end = tag.End?.ToRevit(); if (end != null) { result.LeaderEnd = new XYZ(end.U, end.V, 0); } } if (tag.TryGetValue(TagParameter.Orientation, out string orientationText) && !string.IsNullOrWhiteSpace(orientationText)) { if (System.Enum.TryParse(orientationText, out SpatialElementTagOrientation spatialElementTagOrientation) && result.TagOrientation != spatialElementTagOrientation) { result.TagOrientation = spatialElementTagOrientation; } } result.ChangeTypeId(familySymbol.Id); return(result); }
public static bool Placed(this Tag tag, Document document) { if (tag == null) { return false; } BuiltInCategory? builtInCategory = tag.BuiltInCategory(); if (builtInCategory == null || !builtInCategory.HasValue || builtInCategory.Value == BuiltInCategory.INVALID) { return false; } FamilySymbol familySymbol = Core.Revit.Query.Element<FamilySymbol>(document, tag.Type, true); if (familySymbol == null) { return false; } Core.IntegerId integerId_View = tag.ViewId; if (integerId_View == null) { return false; } View view = Core.Revit.Query.Element<View>(document, integerId_View, true); if (view == null) { return false; } Core.IntegerId integerId_Reference = tag.ReferenceId; if (integerId_Reference == null) { return false; } Element element = Find<Element>(document, integerId_Reference); if (element == null) { return false; } #if Revit2017 IList<ElementId> elementIds = null; #else IList<ElementId> elementIds = element.GetDependentElements(new LogicalAndFilter(new ElementCategoryFilter(builtInCategory.Value), new ElementOwnerViewFilter(view.Id))); #endif if (elementIds == null || elementIds.Count == 0) { return false; } foreach (ElementId elementId in elementIds) { ElementId elementId_Type = document.GetElement(elementId)?.GetTypeId(); if (familySymbol.Id == elementId_Type) { return true; } } return false; }
public static IndependentTag ToRevit(this Tag tag, Document document, ConvertSettings convertSettings) { if (tag == null || document == null) { return(null); } Core.IntegerId integerId_Reference = tag.ReferenceId; if (integerId_Reference == null) { return(null); } if (tag.BuiltInCategory() == BuiltInCategory.OST_MEPSpaceTags) { return(null); } FamilySymbol familySymbol = tag.Type?.ToRevit(document, convertSettings); if (familySymbol == null) { return(null); } Core.IntegerId integerId_View = tag.ViewId; if (integerId_View == null) { return(null); } View view = Core.Revit.Query.Element <View>(document, integerId_View, true); if (view == null) { return(null); } Element element = Query.Find <Element>(document, integerId_Reference); if (element == null) { return(null); } if (!tag.TryGetValue(TagParameter.Leader, out bool leader)) { leader = false; } TagOrientation tagOrientation = TagOrientation.Horizontal; if (tag.TryGetValue(TagParameter.Orientation, out string orientation)) { Enum.TryParse(orientation, out tagOrientation); } Planar.Point2D point2D = tag.Location; if (point2D == null) { return(null); } UV uV = point2D.ToRevit(); #if Revit2017 IndependentTag result = null; #elif Revit2018 IndependentTag result = IndependentTag.Create(document, view.Id, new Reference(element), leader, TagMode.TM_ADDBY_CATEGORY, tagOrientation, new XYZ(uV.U, uV.V, 0)); result.ChangeTypeId(familySymbol.Id); #else IndependentTag result = IndependentTag.Create(document, familySymbol.Id, view.Id, new Reference(element), leader, tagOrientation, new XYZ(uV.U, uV.V, 0)); #endif if (leader) { UV elbow = tag.Elbow?.ToRevit(); if (elbow != null) { result.LeaderElbow = new XYZ(elbow.U, elbow.V, 0); } UV end = tag.End?.ToRevit(); if (end != null) { result.LeaderEnd = new XYZ(end.U, end.V, 0); } } return(result); }