using Autodesk.Revit.DB; namespace ShrlAlgoToolkit.Revit.Extensions { 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; } } }