Revit API创建几何实体Solid并找到与之相交的元素
几何实体的创建方法之一:
构成封闭底面,指定拉伸方向与拉伸高度。GeometryCreationUtilities
//自创几何实体相交法
[TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]
public class FindIntersectWallsByGeometry : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements)
{ UIApplication app = commandData.Application;
Document doc = app.ActiveUIDocument.Document;
Transaction trans = new Transaction(doc, "ExComm");
trans.Start(); //pick a point to draw solid在屏幕上选择一点,找到附近的墙。
Selection sel = app.ActiveUIDocument.Selection;
XYZ pt = sel.PickPoint("Please pick a point to get the close walls"); //XYZ pttemp1 = sel.PickPoint(Autodesk.Revit.UI.Selection.ObjectSnapTypes.None, "Pick leader end...");
//XYZ pttemp2 = sel.PickPoint(Autodesk.Revit.UI.Selection.ObjectSnapTypes.None, "Pick leader elbow..."); //
double dBoxLength = ;
//Z值不变,以选择的点为中心,找到矩形四个点。
XYZ pt1 = new XYZ(pt.X - dBoxLength / , pt.Y - dBoxLength / , pt.Z);
XYZ pt2 = new XYZ(pt.X + dBoxLength / , pt.Y - dBoxLength / , pt.Z);
XYZ pt3 = new XYZ(pt.X + dBoxLength / , pt.Y + dBoxLength / , pt.Z);
XYZ pt4 = new XYZ(pt.X - dBoxLength / , pt.Y + dBoxLength / , pt.Z);
//创建四条线。
Line lineBottom = app.Application.Create.NewLineBound(pt1, pt2);
Line lineRight = app.Application.Create.NewLineBound(pt2, pt3);
Line lineTop = app.Application.Create.NewLineBound(pt3, pt4);
Line lineLeft = app.Application.Create.NewLineBound(pt4, pt1);
//封闭曲线
CurveLoop profile = new CurveLoop();
profile.Append(lineBottom);
profile.Append(lineRight);
profile.Append(lineTop);
profile.Append(lineLeft); List<CurveLoop> loops = new List<CurveLoop>();
loops.Add(profile);
//创建实体的方法(底面,拉伸方向,拉伸高度)
XYZ vector = new XYZ(, , );
Solid solid = GeometryCreationUtilities.CreateExtrusionGeometry(loops, vector, ); //相交过滤器
FilteredElementCollector collector = new FilteredElementCollector(doc);
ElementIntersectsSolidFilter solidFilter = new ElementIntersectsSolidFilter(solid); collector.WherePasses(solidFilter); sel.Elements.Clear();
//Add these interseting element to the selection
foreach (Element elem in collector)
{
sel.Elements.Add(elem);
} trans.Commit();
return Result.Succeeded;
}
}
url:http://greatverve.cnblogs.com/p/GeometryCreationUtilities.html
Revit API创建几何实体Solid并找到与之相交的元素的更多相关文章
- Revit Family API 添加几何实体
先创建一个封闭曲线createProfileLShape();再创建实体,这里需要手工画一个参考平面; ; i < nVerts; ++i) { Line l ...
- Revit api 创建族并加载到当前项目
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Revit API创建一个拷贝房间内对象布局命令
本课程演示创建一个拷贝房间内对象布局命令,完整演示步骤和代码.这个命令把选中房间内的对象复制到其它选中的一个或多个房间中,而且保持与源房间一致的相对位置.通过本讲座使听众知道创建一个二次开发程序很简单 ...
- Revit API创建标注NewTag
start ; ) { eId = item; } ...
- Revit API创建墙的保温层修改墙厚度
start [Transaction(TransactionMode.Manual)] [Regeneration(RegenerationOption.Manual)] / ; ; ...
- Revit API创建标高,单位转换
一业内朋友让我写个快速创建标高的插件. ; ; i <= iNum; i++) { Level level = d ...
- Revit API 创建带箭头的标注
[Transaction(TransactionMode.Manual)] [Regeneration(RegenerationOption.Manual)] public class cmd : ...
- Revit api 创建楼梯图元
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Revit API创建详图视图
start //创建详图视图 Transaction ts = new Transaction(doc, "http://greatverve.cnblogs.com"); ts. ...
随机推荐
- Android getScrollX()详解
在开发中相信大家在自定义View时会时不时的使用getScrollX()方法,为了便于之后的开发工作,本篇博客主要记录了我对getScrollX()方法的理解. getScrollX:Return t ...
- keepalived启动不成功,状态一直是inactive(dead) 的解决办法以及keepalived高版本没有rc.d目录,虚拟VIP无法访问问题
安装配置教程我就不说了,网上很多,这里只给出我遇到的两个坑: 1 rc.d目录 ,kp在1.4版本之后rc.d要去解压之后的源码包里去找,make之后的目录里面没有了,我使用的是2.0.13最新版本, ...
- linux backtrace()详细使用说明,分析Segmentation fault【转】
转自:http://velep.com/archives/1032.html 在此之前,开发eCos应用程序时,经常碰到程序挂掉后,串口打印输出一大串让人看不懂的数据.今天才明白,原来这些数据是程序挂 ...
- 错误的理解引起的bug async await 执行顺序
今天有幸好碰到一个bug,让我知道了之前我对await async 的理解有点偏差. 错误的理解 之前我一直以为 await 后面的表达式,如果是直接返回一个具体的值就不会等待,而是继续执行asyn ...
- Java中static关键字概述
例如一个学生类中,我们需要统计下学生类中学生对象的数量,此时数量要定义为静态变量: 示例代码: package com.java1995; public class Student { int id= ...
- LeetCode(21):合并两个有序链表
Easy! 题目描述: 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1- ...
- #CSS margin-top父元素下落
[我的解决方法] 给该父元素添加如下代码 border-top: 1px solid rgba(0,0,0,0); box-sizing:border-box; [原因] css2.1盒模型中规定的内 ...
- ASP.NET OAuth、jwt、OpenID Connect
ASP.NET OAuth.jwt.OpenID Connect 上一篇文章介绍了OAuth2.0以及如何使用.Net来实现基于OAuth的身份验证,本文是对上一篇文章的补充,主要是介绍OAuth与J ...
- ajax和jsonp
ajax和jsonp 前言:ajax和jsonp可以与后台通信,获取数据和信息,但是又不用刷新整个页面,实现页面的局部刷新. 一.ajax 定义:一种发送http请求与后台进行异步通讯的技术. 原理: ...
- 转:Spring中事物管理
1.什么是事务? 事务是逻辑上的一组操作,这组操作要么全部成功,要么全部失败 2.事物具有四大特性ACID 说到事务,就不得不说其4大特性,主要如下 原子性:(atomicity) 原子性指的是事务是 ...