using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Windows.Forms; using Autodesk.Revit.Attributes; using Autodesk.Revit.DB; using Autodesk.Revit.UI; using Newtonsoft.Json; namespace IFC_Revit_Interop { // Token: 0x02000017 RID: 23 [Transaction( TransactionMode.Manual)] [Regeneration(0)] public class LinkedFileManager : IExternalCommand { // Token: 0x06000075 RID: 117 RVA: 0x00006B8C File Offset: 0x00004D8C public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { Document document = commandData.Application.ActiveUIDocument.Document; SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Title = "导出一级链接关系"; saveFileDialog.Filter = "json files (*.json)|*.json"; if (saveFileDialog.ShowDialog() == DialogResult.OK) { return LinkedFileManager.GetLinkFileInfo(document, saveFileDialog.FileName); } return (Result)1; } // Token: 0x06000076 RID: 118 RVA: 0x00006BE0 File Offset: 0x00004DE0 public static Result GetLinkFileInfo(Document doc, string resultPath) { List list = new FilteredElementCollector(doc).OfCategory((BuiltInCategory)(-2001352)).ToList(); List list2 = new List(); Result result; try { foreach (Element element in list) { RevitLinkInstance revitLinkInstance = element as RevitLinkInstance; if (revitLinkInstance != null) { RevitLinkType revitLinkType = doc.GetElement(revitLinkInstance.GetTypeId()) as RevitLinkType; if (revitLinkType != null && !revitLinkType.IsNestedLink) { LinkInstance linkInstance = new LinkInstance(); linkInstance.fileName = revitLinkType.Name; linkInstance.attachmentType = revitLinkType.AttachmentType.ToString(); Transform transform = revitLinkInstance.GetTransform(); linkInstance.transform = new MyTransform(); linkInstance.transform.basisX = new double[] { transform.BasisX.X, transform.BasisX.Y, transform.BasisX.Z }; linkInstance.transform.basisY = new double[] { transform.BasisY.X, transform.BasisY.Y, transform.BasisY.Z }; linkInstance.transform.basisZ = new double[] { transform.BasisZ.X, transform.BasisZ.Y, transform.BasisZ.Z }; linkInstance.transform.origin = new double[] { transform.Origin.X * 304.79999999999995, transform.Origin.Y * 304.79999999999995, transform.Origin.Z * 304.79999999999995 }; linkInstance.transform.scale = transform.Scale; list2.Add(linkInstance); } } } File.WriteAllText(resultPath, JsonConvert.SerializeObject(new FileLinkInfo { linkInstances = list2, fileName = Path.GetFileName(doc.PathName) })); result = 0; } catch (Exception) { result = (Result)(-1); } return result; } // Token: 0x04000076 RID: 118 private const double _inch_to_mm = 25.4; // Token: 0x04000077 RID: 119 private const double _foot_to_mm = 304.79999999999995; } }