[CommandMethod("RR", CommandFlags.UsePickSet)]
// Поиск максимальных/минимальных треугольников по координате Z
public static void RR()
{
AccessDoc AcToDraw = new AccessDoc();
Database db = AcToDraw.DBase;
Editor ae = AcToDraw.Ed;
List<Triangle> triangleList = TriangleList();
using (Transaction tr = db.TransactionManager.StartTransaction())
{
//Перебираем поверхности
BlockTableRecord blocktableRecord = tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;
Face face = (Face)tr.GetObject(triangleList.First().IdFace, OpenMode.ForWrite);
triangleList.Remove(triangleList.First());
Autodesk.AutoCAD.DatabaseServices.Surface surface = new Autodesk.AutoCAD.DatabaseServices.Surface();
surface = Autodesk.AutoCAD.DatabaseServices.Surface.CreateFrom(face);
//blocktableRecord.AppendEntity(surface);
//tr.AddNewlyCreatedDBObject(surface, true);
foreach (Triangle triangle in triangleList)
{
face = (Face)tr.GetObject(triangle.IdFace, OpenMode.ForWrite);
Autodesk.AutoCAD.DatabaseServices.Surface locSurface = new Autodesk.AutoCAD.DatabaseServices.Surface();
locSurface = Autodesk.AutoCAD.DatabaseServices.Surface.CreateFrom(face);
//blocktableRecord.AppendEntity(locSurface);
//tr.AddNewlyCreatedDBObject(locSurface, true);
surface.BooleanUnion(locSurface);
}
blocktableRecord.AppendEntity(surface);
tr.AddNewlyCreatedDBObject(surface, true);
tr.Commit();
}
}