Revit二开–划线切板功能源码
前一篇博客划线切板功能解析介绍了划线切板功能,今天把源码补充上
在Revit使用过程中,版的切割对用户来说不是很容易,Revit原生功能在板的分割上并不是十分友好。今天我在这里分享 楼板分割的方法(天花板切割原理类似)。
- 1.鼠标点选楼板。
- 2.调用画线命令,绘制一条直线。
- 3.用绘制的直线切割楼板。
代码详见github:https://github.com/binbinstrong/tangsengjiewa
/// <summary>
/// 划线切板
/// </summary>
[Transaction(TransactionMode.Manual)]
class Cmd_CutFloorWithLine : IExternalCommand
{
private Floor floor = null;
ICollection<ElementId> ids_add = new List<ElementId>();
private Application App = null;
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
var uiapp = commandData.Application;
var app = uiapp.Application;
App = app;
var uidoc = uiapp.ActiveUIDocument;
var doc = uidoc.Document;
var sel = uidoc.Selection;
var acview = doc.ActiveView;
app.DocumentChanged += OnDocumentChanged;
uiapp.Idling += OnIdling;
floor =
sel.PickObject(ObjectType.Element, doc.GetSelectionFilter(m => m is Floor)).GetElement(doc) as Floor;
#if Revit2019
CommandHandlerService.invokeCommandHandler("ID_OBJECTS_PROJECT_CURVE");
#endif
#if Revit2016
//调用postablecommand
var commandid = RevitCommandId.LookupPostableCommandId(PostableCommand.ModelLine);
uiapp.PostCommand(commandid);
#endif
return Result.Succeeded;
}
private void OnIdling(object sender, IdlingEventArgs e)
{
//var App = sender as Application;
var docsInApp = App.Documents.Cast<Document>();
var doc = docsInApp.FirstOrDefault();
var uidoc = new UIDocument(doc);
var uiapp = uidoc.Application;
try

最低0.47元/天 解锁文章
730

被折叠的 条评论
为什么被折叠?



