Поскольку у вас есть регион, из него очень легко получить контур.
// if you know the region is a simple region (not containing full circles) get the curves
List<ICurve> curves = (region.ContourList.FirstOrDefault() as CompositeCurve).CurveList;
ICurve - это линия и дуга, насколько я знаю.Таким образом, вы можете проверить:
bool isLine = curves[0] is Line
bool isArc = curves[0] is Arc
Все кривые в списке упорядочены, чтобы вы могли легко преобразовать регион.Кроме того, если region.ContourList
содержит более 1 контура, это означает, что у вас есть дыры в вашем регионе.Первый элемент всегда будет основным контуром, а все последующие элементы также будут контурными, но с отверстиями.
Кривая контура дана против часовой стрелки, а внутренняя - по часовой стрелке.