using System; using System.Linq; using Autodesk.Revit.DB; using Autodesk.Revit.DB.Architecture; using Autodesk.Revit.UI.Selection; using Nice3point.Revit.Toolkit.External; namespace GeologyToolkit { [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)] [Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)] public class KrigingInsertCmd : ExternalCommand { public override void Execute() { var e = UiDocument.Selection.PickObject(ObjectType.Element); var originSurface = Document.GetElement(e) as TopographySurface; var points = originSurface.GetPoints(); var xyPoints = points.Select(p => new XYPoint(p.X, p.Y) { Elevation = p.Z }).ToList(); var kriging = new KrigingMethod(); //List xyPoints = new List //{ // new XYPoint(10, 0) // { // Elevation = 18.1 // }, // new XYPoint(0, 5) // { // Elevation = 15.5 // }, // new XYPoint(15, 15) // { // Elevation = 16.81 // }, // new XYPoint(8.1, 4.5) // { // Elevation = 16.73 // }, // new XYPoint(9.1, 7.5) // { // Elevation = 18.56 // } //}; var random = new Random(); var x = random.NextDouble() * 20; var y = random.NextDouble() * 20; var xy = new XYPoint(x, y); xy.Elevation = kriging.MainMethod(xyPoints, xy); //List xyzList = new List { new XYZ(xy.X, xy.Y, xy.Elevation) }; points.Add(new XYZ(xy.X, xy.Y, xy.Elevation)); //using (Transaction trans = new Transaction(doc, "创建")) //{ // trans.Start(); // using (TopographyEditScope scope = new TopographyEditScope(doc, "创建")) // { // scope.Start(originSurface.Id); // originSurface.AddPoints(xyzList); // scope.Commit(new GeologyFailureProcessor()); // } // trans.Commit(); //} //xyPoints.Add(xy); //List xyzList = new List(); //foreach (var xyPoint in xyPoints) //{ // XYZ p = new XYZ(xyPoint.X, xyPoint.Y, xyPoint.Elevation); // xyzList.Add(p); //} using (var trans = new Transaction(Document, "创建")) { trans.Start(); var surface = TopographySurface.Create(Document, points); trans.Commit(); } } } }