Здравствуйте, столкнулся со следующей проблемой. Мне необходимо получить геометрию колонн (их сечение) с нужными координатами. Сами профили вроде как удается находить, но они все в точке 0. Как можно получить список Curve в нужных координатах?
Вот метод, который вытаскивает профили из колонн
private List<CurveArrayDTO> GetColumnProfile(Element element, Options opt)
{
List<CurveArrayDTO> result = new List<CurveArrayDTO>();
if (element is FamilyInstance familyInstance)
{
if (familyInstance.HasSweptProfile())
{
SweptProfile swept = familyInstance.GetSweptProfile();
var profile = swept.GetSweptProfile();
CurveArray profileCurves = profile.Curves;
var curveEnum = profileCurves.Cast<Curve>();
CurveArrayDTO curveArray = new CurveArrayDTO();
curveArray.Curves.AddRange(curveEnum);
result.Add(curveArray);
}
else
{
GeometryElement geometryElement = element.get_Geometry(opt);
foreach (GeometryObject geometryObject in geometryElement)
{
if (geometryObject is GeometryInstance geometryInstance)
{
var geoElem = geometryInstance.SymbolGeometry;
var solid = geoElem.Where(s => s.IsElementGeometry).Cast<Solid>().First(s => s.SurfaceArea > 0);
result = GetBoundaries(solid).OrderBy(a => a.Area).ToList();
}
}
}
}
return result;
}