Files
Shrlalgo.RvKits/ShrlAlgoToolkit.RevitAddins/RvCommon/SplitImportInstanceCmd.cs

53 lines
1.7 KiB
C#
Raw Normal View History

2025-07-11 09:20:23 +08:00
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;
/// <summary>
/// 分割族中的整体dwg模型为单个Solid
/// </summary>
[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<ImportInstance>(), "请选择导入的实体");
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)
2025-07-11 09:20:23 +08:00
{
}
}
}