using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Autodesk.Revit.Attributes; using Autodesk.Revit.DB; using Nice3point.Revit.Toolkit.External; namespace ShrlAlgoToolkit.RevitAddins.RvCommon; /// /// 分割族中的整体dwg模型为单个Solid /// [Transaction(TransactionMode.Manual)] public class SplitImportInstanceCmd : ExternalCommand { public override void Execute() { try { var refer = UiDocument.Selection.PickObject(Autodesk.Revit.UI.Selection.ObjectType.Element, new GenericFilter(), "请选择导入的实体"); Document.Invoke( _ => { var elem = Document.GetElement(refer) as DirectShape; var geometryElement = elem.get_Geometry(new Options() { ComputeReferences = true }); foreach(var item in geometryElement) { if(item is Solid solid) { //MessageBox.Show("获取到Solid"); var element = DirectShape.CreateElement( Document, Category.GetCategory(Document, BuiltInCategory.OST_GenericModel).Id); element.AppendShape([solid]); //return; } } Document.Delete(refer.ElementId); }, "拆分实体"); } catch (Autodesk.Revit.Exceptions.OperationCanceledException) { } } }