Revit二开--一键楼板功能 全面解析
之前很多朋友问我 一键楼板的功能怎么做,今天有点时间把源码放出来。
github 地址: https://github.com/binbinstrong/tangsengjiewa
/// <summary>
/// 一键楼板
/// </summary>
namespace 唐僧解瓦.建筑
{
/// <summary>
/// 一键楼板
/// </summary>
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
[Journaling(JournalingMode.UsingCommandData)]
class Cmd_CreateFloorQukly : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIApplication uiapp = commandData.Application;
UIDocument uidoc = uiapp.ActiveUIDocument;
Document doc = uidoc.Document;
Selection sel = uidoc.Selection;
var acview = doc.ActiveView;
var beamrefs = sel.PickObjects(ObjectType.Element,
doc.GetSelectionFilter(m => m.Category.Id.IntegerValue == (int)BuiltInCategory.OST_StructuralFraming),
"选择生成板的梁");
var beams = beamrefs.Select(m => m.GetElement(doc));
Transaction temtran = new Transaction(doc, "temtran");
temtran.Start();
foreach (Element beam in beams)
{
var joinedelements = JoinGeometryUtils.GetJoinedElements(doc, beam);
if (joinedelements.Count > 0)
{
foreach (var id in joinedelements)
{
var temele = id.GetElement(doc);
var isjoined = JoinGeometryUtils.AreElementsJoined(doc, beam, temele);
if (isjoined)
{
JoinGeometryUtils.UnjoinGeometry(doc, beam, temele);
}
}
}
}
temtran.RollBack();