public bool CreateWall(XYZ startPoint, XYZ endPoint) { Wall wall = null; lock (_locker) { TaskContainer.Instance.EnqueueTask(uiapp => { try { var doc = uiapp.ActiveUIDocument.Document; using (Transaction t = new Transaction(doc, Resources.CreateWall)) { t.Start(); Curve curve = Line.get_Bound( new Autodesk.Revit.DB.XYZ(startPoint.X, startPoint.Y, startPoint.Z), new Autodesk.Revit.DB.XYZ(endPoint.X, endPoint.Y, endPoint.Z)); FilteredElementCollector collector = new FilteredElementCollector(doc); var level = collector .OfClass(typeof(Level)) .ToElements() .OfType<Level>() .FirstOrDefault(); #if REVIT2012 wall = doc.Create.NewWall(curve, level, false); #else wall = Wall.Create(doc, curve, level.Id, true); #endif t.Commit(); } } finally { lock (_locker) { Monitor.Pulse(_locker); } } }); Monitor.Wait(_locker); } return wall != null; }
private static void CreateWallAndWriteResult(XYZ point1, XYZ point2, IRevitExternalService service) { bool res = service.CreateWall(point1, point2); Console.WriteLine("{0}: {1}", Resources.CreateWallResult, res); }