大家好,机器人们
我正在尝试获取(但失败了)我的活动文档中的协调模型文件名和路径。
我尝试使用 RevitLinkInstances,但它不是 Revit 链接,因此返回空列表。 我尝试使用 ofCategory(OST_Coordination_Model),但它仍然给我零个元素
我使用collector.OfClass(typeof(DirectShapeType)).ToElements()找到了它。
FilteredElementCollector collectorTwo = new FilteredElementCollector(doc);
ICollection<Element> revitLinksShape = collectorTwo.OfClass(typeof(DirectShapeType)).ToElements();
foreach(var element in revitLinksShape)
{
DirectShape directShape = fileRef as DirectShape;
if(directShape != null)
{
// why does it become null???
}
else
{
var directShapeType = fileRef as DirectShapeType;
if(directShapeType != null)
{
DirectShapeTypeOptions directTypeOptions =
directShapeType.GetOptions();
}
}
}
我能够检索到它的名字。但我正在尝试获取文件位置!缺少什么?
我需要制作一些绝地的东西才能使其成为其他文档或文件吗? 我尝试将它转换为 DirectShape,但它变成了 null(我什至不确定它会帮助我找到它的文件路径)
在简历中,我想要活动文档协调模型的名称和路径。
好的,我已经找到方法了。
我可以使用 .get_Parameter(BuiltInParameter.DIRECTCONTEXT3D_SOURCE_ID) 找到它的路径
这就是我最终获得协调模型文件名和位置的方式
FilteredElementCollector collectorTwo = new FilteredElementCollector(doc);
ICollection<Element> revitLinksShape = collectorTwo.OfClass(typeof(DirectShapeType)).ToElements();
// Itera por todas as referências externas para buscar modelos de coordenação
foreach (var fileRef in revitLinksShape)
{
var directShapeType = fileRef as DirectShapeType;
if(directShapeType != null)
{
Parameter coordModelPathParam = directShapeType.get_Parameter(BuiltInParameter.DIRECTCONTEXT3D_SOURCE_ID);
if (coordModelPathParam != null)
{
// Get the file path from the parameter
string filePath = coordModelPathParam.AsString();
// Display the file path
TaskDialog.Show("Coordination Model Path", $"File
Path: {filePath}");
}
}
}
答案就在那里...我只需要冷静下来分析一下元素即可。