分享一个Revit二开的VS样板,代码如下:
[Transaction(TransactionMode.Manual)]
class Sample : 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;
Transaction tr = new Transaction(doc, "******");
try
{
tr.Start();
tr.Commit();
return Result.Succeeded;
}
catch (Autodesk.Revit.Exceptions.OperationCanceledException)
{
if (tr.GetStatus() == TransactionStatus.Started)
{
tr.RollBack();
}
return Result.Failed;
//throw;
}
}
}
选择过滤样板
/// <summary>
/// MEP管道过滤
/// </summary>
public class MEPFilter : ISelectionFilter
{
public bool AllowElement(Element elem)
{
if (elem is Pipe || elem is Duct || elem is CableTray || elem is Conduit)
{
return true;
}
return false;
}
public bool AllowReference(Reference reference, XYZ position)
{
return true;
}
}
/// <summary>
/// 过滤选择链接构件(水管)
/// </summary>
public class LinkPipeCurveFilter : ISelectionFilter
{
Document linkDoc = null;
public bool AllowElement(Element elem)
{
if (elem is RevitLinkInstance)
{
linkDoc = (elem as RevitLinkInstance).GetLinkDocument();
return true;
}
return false;
}
public bool AllowReference(Reference reference, XYZ position)
{
Element elem = linkDoc.GetElement(reference.LinkedElementId);
if (elem is Pipe)
{
return true;
}
return false;
}
}
分享一个自制Revit插件,本人是个BIM工程师,该插件是根据自己做工程一些经验和对插件功能的频繁度,自己整合开发功能,初衷是提高效率。
目前MagicTools的功能包括通用功能、土建、机电、审图、出图功能。还有好多功能都想做,如果有好的需求也可以提,后续有新增继续增加上去,努力弄个实用的插件,希望能帮到真正有需要的BIMer。
如有需要的可以加企鹅群:630552940
插件下载地址,免费试用
链接:https://pan.baidu.com/s/1GDnHeWwZ5r_HrnT3Mo7twA?pwd=jhlt
提取码:jhlt