添加项目文件。
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
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<Element> list = new FilteredElementCollector(doc).OfCategory((BuiltInCategory)(-2001352)).ToList<Element>();
|
||||
List<LinkInstance> list2 = new List<LinkInstance>();
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user