コード例 #1
0
ファイル: SpaceTag.cs プロジェクト: HoareLea/SAM_Revit
        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);
        }
コード例 #2
0
ファイル: Placed.cs プロジェクト: HoareLea/SAM_Revit
        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;
        }
コード例 #3
0
ファイル: IndependentTag.cs プロジェクト: HoareLea/SAM_Revit
        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);
        }