2025-12-28 11:47:54 +08:00
|
|
|
|
using Autodesk.Revit.DB;
|
2025-07-11 09:20:23 +08:00
|
|
|
|
|
2026-02-21 16:31:24 +08:00
|
|
|
|
namespace ShrlAlgoToolkit.RevitCore.Extensions
|
2025-07-11 09:20:23 +08:00
|
|
|
|
{
|
|
|
|
|
|
public static class ReferenceExtensions
|
|
|
|
|
|
{
|
|
|
|
|
|
public static Curve GetActualEdgeCurve(this Reference selectedEdge, Document doc)
|
|
|
|
|
|
{
|
|
|
|
|
|
var stable = selectedEdge.ConvertToStableRepresentation(doc);
|
|
|
|
|
|
bool SolidInstance = stable.Contains("INSTANCE");//如果是Instance的话,获取到的是族类型的边
|
|
|
|
|
|
Element elem = doc.GetElement(selectedEdge.ElementId);
|
|
|
|
|
|
var selEdge = elem.GetGeometryObjectFromReference(selectedEdge) as Edge;
|
|
|
|
|
|
var selEdgeCurve = selEdge.AsCurve();
|
|
|
|
|
|
if (SolidInstance)
|
|
|
|
|
|
{
|
|
|
|
|
|
Transform tf = Transform.Identity;
|
|
|
|
|
|
if (elem is FamilyInstance instance)
|
|
|
|
|
|
{
|
|
|
|
|
|
tf = instance.GetTransform();
|
|
|
|
|
|
}
|
|
|
|
|
|
return selEdgeCurve.CreateTransformed(tf);
|
|
|
|
|
|
}
|
|
|
|
|
|
return selEdgeCurve;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|