- Revit二次开发30/07/2020
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.UI;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using Autodesk.Revit.DB.Structure;
namespace loadF
{
[Transaction(TransactionMode.Manual)]
public class Class1 : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIDocument uidoc = commandData.Application.ActiveUIDocument;
Document doc = uidoc.Document;
Reference r = uidoc.Selection.PickObject(ObjectType.Element);
Element ele = doc.GetElement(r);
XYZ loc = (ele.Location as LocationPoint).Point;
Transaction tx = new Transaction(doc, "delete element");
tx.Start();
doc.Delete(ele.Id);
Family family = null;
string path = @"F:\新建文件夹 (2)\欧式窗套窗.rfa";
doc.LoadFamily(path, out family);
FamilySymbol fs = doc.GetElement(family.GetFamilySymbolIds().First()) as FamilySymbol;
if (!fs.IsActive)
{
fs.Activate();
}
Reference e = uidoc.Selection.PickObject(ObjectType.Face,"please pick a face on wall");
Wall host_wall = doc.GetElement(e) as Wall;
FilteredElementCollector col = new FilteredElementCollector(doc);
col.OfCategory(BuiltInCategory.OST_Levels).Where(m => m.Name == "Level 1");
Level lv = col.LastOrDefault<Element>() as Level;
doc.Create.NewFamilyInstance(loc, fs, host_wall,lv, StructuralType.NonStructural);
tx.Commit();
return Result.Succeeded;
}
}
}