• 大小: 24KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: 其他
  • 标签: 软碰撞  

资源简介

通过过滤器ElementIntersectsElementFilter可以获取到与某构件相交的构件,但是不能获取到与其接触但未相交的元素,如果想获取到与其只是接触或者有一定间隔的构件,可以利用ElementIntersectsSolidFilter

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.UI.Selection;

namespace IntersectionDemo
{
    [Transaction(TransactionMode.Manual)]
    public class InterTest : IExternalCommand
    {
        UIApplication uiApp;
        UIDocument uiDoc;
        Document doc;
        public Result Execute(ExternalCommandData commandData ref string message ElementSet elements)
        {
            uiApp = commandData.Application;
            uiDoc = commandData.Application.ActiveUIDocument;
            doc = uiDoc.Document;

            Element elem = doc.GetElement(uiDoc.Selection.Pickobject(objectType.Element “Select element“));
            try
            {
                Solid solid = GetElementSolid(elem);
                List faces = GetFacesFromSolid(solid);
                foreach (Face face in faces)
                {
                    PlanarFace planarFace = face as PlanarFace;
                    //忽略掉顶面和底面
                    if (planarFace.FaceNormal.IsAlmostEqualTo(new XYZ(0 0 1))
                        || planarFace.FaceNormal.IsAlmostEqualTo(new XYZ(0 0 -1)))
                    {
                        continue;
                    }
                    IList proiles = planarFace.GetEdgesAsCurveLoops();//由face转变为拉伸所需要的截面profile
                    Solid solidNew = GeometryCreationUtilities.CreateExtrusionGeometry(proiles planarFace.FaceNormal 20/304.8);//生成拉伸体Solid
                    using (Transaction trans = new Transaction(doc“Create“))
                    {
                        trans.Start();

                        //DirectShape ds = DirectShape.CreateElement(doc new ElementId(BuiltInCategory.OST_GenericModel));
                        //ds.SetShape(new Geometryobject[] { solidNew });//生成形状

                        FilteredElementCollector collector = new FilteredElementCollector(doc).OfClass(typeof(Wall));
                        ElementIntersectsSolidFilter solidFilter = new ElementIntersectsSolidFilter(solidNew);
                        collector.WherePasses(solidFilter);
                        foreach (Element elemInter in collector)
                        {
                            ChangeColor(elemInter);//碰撞改变颜色
                        }
                        trans.Commit();
                    }                    
                }
                return Result.Succeeded;
            }
            catch (Exception exc)
            {
                message = exc.Message;
                return Result.Failed;
            }
        }

        /// 
        /// Change color for intersection obj
        /// 

        /// 
        private void ChangeColor(Element element)
        {
            FilteredElem

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..A..H.     47616  2020-06-03 16:17  IntersectionDemo\.vs\IntersectionDemo\v14\.suo

     文件       8704  2020-06-03 16:17  IntersectionDemo\IntersectionDemo\bin\Debug\IntersectionDemo.dll

     文件      15872  2020-06-03 16:17  IntersectionDemo\IntersectionDemo\bin\Debug\IntersectionDemo.pdb

     文件       2803  2020-06-02 17:12  IntersectionDemo\IntersectionDemo\IntersectionDemo.csproj

     文件       5501  2020-06-03 16:12  IntersectionDemo\IntersectionDemo\InterTest.cs

     文件       6852  2020-06-03 16:17  IntersectionDemo\IntersectionDemo\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache

     文件        716  2020-06-03 16:17  IntersectionDemo\IntersectionDemo\obj\Debug\IntersectionDemo.csproj.FileListAbsolute.txt

     文件       8704  2020-06-03 16:17  IntersectionDemo\IntersectionDemo\obj\Debug\IntersectionDemo.dll

     文件      15872  2020-06-03 16:17  IntersectionDemo\IntersectionDemo\obj\Debug\IntersectionDemo.pdb

     文件          0  2020-06-02 15:56  IntersectionDemo\IntersectionDemo\obj\Debug\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs

     文件          0  2020-06-02 15:56  IntersectionDemo\IntersectionDemo\obj\Debug\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs

     文件          0  2020-06-02 15:56  IntersectionDemo\IntersectionDemo\obj\Debug\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs

     文件       1358  2020-06-02 15:56  IntersectionDemo\IntersectionDemo\Properties\AssemblyInfo.cs

     文件       1015  2020-06-03 16:17  IntersectionDemo\IntersectionDemo.sln

     目录          0  2020-06-02 15:56  IntersectionDemo\IntersectionDemo\obj\Debug\TempPE

     目录          0  2020-06-03 16:17  IntersectionDemo\.vs\IntersectionDemo\v14

     目录          0  2020-06-03 16:17  IntersectionDemo\IntersectionDemo\bin\Debug

     目录          0  2020-06-02 15:57  IntersectionDemo\IntersectionDemo\bin\Release

     目录          0  2020-06-03 16:17  IntersectionDemo\IntersectionDemo\obj\Debug

     目录          0  2020-06-03 16:17  IntersectionDemo\.vs\IntersectionDemo

     目录          0  2020-06-03 16:17  IntersectionDemo\IntersectionDemo\bin

     目录          0  2020-06-03 16:17  IntersectionDemo\IntersectionDemo\obj

     目录          0  2020-06-03 16:17  IntersectionDemo\IntersectionDemo\Properties

    ...D.H.         0  2020-06-03 16:17  IntersectionDemo\.vs

     目录          0  2020-06-03 16:17  IntersectionDemo\IntersectionDemo

     目录          0  2020-06-03 16:18  IntersectionDemo

----------- ---------  ---------- -----  ----

               115013                    26


评论

共有 条评论