Exemple #1
0
        private List <RevitLinkInstance> GetLinkInstances()
        {
            // verzamel de te exporteren links
            List <string>            linkedProjects = ElementCollectionHelper.GetLinkedFiles(UIDoc.Application, false);
            List <RevitLinkInstance> instances      = ElementCollectionHelper.GetAllProjectElements(UIDoc.Document)
                                                      .OfType <RevitLinkInstance>()
                                                      .Where(c => c.Name.ToLower().Contains(".rvt"))
                                                      .ToList();

            for (int i = instances.Count - 1; i >= 0; i--)
            {
                RevitLinkInstance inst = instances[i];
                if (null == inst)
                {
                    instances.RemoveAt(i);
                    continue;
                }

                ElementId   id       = inst.GetTypeId();
                ElementType etype    = UIDoc.Document.GetElement(id) as ElementType;
                string      instName = etype?.Name;
                if (string.IsNullOrEmpty(instName))
                {
                    instances.RemoveAt(i);
                    continue;
                }

                if (!linkedProjects.Contains(instName, StringComparer.InvariantCultureIgnoreCase))
                {
                    instances.RemoveAt(i);
                }
            }

            if (instances.Count > 0)
            {
                StringBuilder builder = new StringBuilder();
                builder.AppendLine("De following linked files are exported:");
                foreach (RevitLinkInstance rli in instances)
                {
                    builder.AppendLine(rli.Name);
                }

                Cmd.ShowResult(builder.ToString());
            }

            return(instances);
        }