Revit API批量布置函数doc.Create.NewFamilyInstances();
start
using ACreat = Autodesk.Revit.Creation;
//批量布置doc.Create.NewFamilyInstances();
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
public class cmd : IExternalCommand
{
public Result Execute(ExternalCommandData cmdData, ref string msg, ElementSet elements)
{
UIDocument uiDoc = cmdData.Application.ActiveUIDocument;
UIApplication uiApp = cmdData.Application;
Document doc = uiDoc.Document;
Selection sel = uiDoc.Selection; Transaction ts = new Transaction(doc, "http://revit.5d6d.com");
try
{
ts.Start();
//找一个管件
FilteredElementCollector collector = new FilteredElementCollector(uiDoc.Document);
IList<Element> collection = collector.OfClass(typeof(FamilySymbol)).OfCategory(BuiltInCategory.OST_DuctFitting).ToElements();
FamilySymbol familySymbol = collection[] as FamilySymbol;
//区域布置
PickedBox pb = sel.PickBox(PickBoxStyle.Directional, "请选择区域");
List<XYZ> listXYZ = new List<XYZ>();//判断一些布置点
double dDistance = ;//间距
XYZ xyzStart = pb.Min;//Max右下点Min左上点,暂时这样理解。
bool bWhile = true;
while (bWhile)
{
xyzStart += new XYZ(dDistance, -dDistance, );
if (xyzStart.X > pb.Max.X || xyzStart.Y < pb.Max.Y)
bWhile = false;
else
listXYZ.Add(xyzStart);
}
//批量布置
List<ACreat.FamilyInstanceCreationData> fiCreationDatas = new List<ACreat.FamilyInstanceCreationData>();
foreach (XYZ item in listXYZ)
{
ACreat.FamilyInstanceCreationData fiCreationData =
new ACreat.FamilyInstanceCreationData(item, familySymbol, familySymbol.Level, StructuralType.NonStructural);
if (null != fiCreationData)
{
fiCreationDatas.Add(fiCreationData);
}
}
doc.Create.NewFamilyInstances(fiCreationDatas); ts.Commit();
}
catch (Exception ex)
{
ts.RollBack();
} return Result.Succeeded;
}
}
url:http://greatverve.cnblogs.com/p/revit-api-NewFamilyInstances.html
Revit API批量布置函数doc.Create.NewFamilyInstances();的更多相关文章
- Revit API创建一个拷贝房间内对象布局命令
本课程演示创建一个拷贝房间内对象布局命令,完整演示步骤和代码.这个命令把选中房间内的对象复制到其它选中的一个或多个房间中,而且保持与源房间一致的相对位置.通过本讲座使听众知道创建一个二次开发程序很简单 ...
- Revit API遍历系统族布置喷头
系统族可以通过内参遍历,遍历出来是个FamilySymbol喷头属于系统族,但不能通过NewDuct();类似这样的方法布置.必须使用 NewFamilyInstance() ); ...
- Revit API射线法读取空间中相交的元素
Revit API提供根据射线来寻找经过的元素.方法是固定模式,没什么好说.关键代码:doc.FindReferencesWithContextByDirection(ptStart, (ptEnd ...
- Revit API 加载族并生成实例图元
在Revit API中加载族可以使用Doc.LoadFamily方法,传入要加载的族文件路径名,但是这种方式有一种缺点,就是如果族文件在当前工程中没有加载的话则返回成功,如果已经加载过,则返回失败,也 ...
- Revit API 楼板开洞
start [Transaction(TransactionMode.Manual)] [Regeneration(RegenerationOption.Manual)] , , ) * / , - ...
- 【Revit API】梁构件支座检查算法
一.前言 应该是第二次写关于Revit API的博文了.虽然在BIM企业中工作,从事桌面BIM软件开发,但是我是不怎么喜欢写Revit API相关的代码.平时更多的是在写界面展示,架构 ...
- Revit API 创建带箭头的标注
[Transaction(TransactionMode.Manual)] [Regeneration(RegenerationOption.Manual)] public class cmd : ...
- Revit API创建标注NewTag
start ; ) { eId = item; } ...
- Revit API创建房间
start [Transaction(TransactionMode.Manual)] [Regeneration(RegenerationOption.Manual)] ); ...
随机推荐
- 【ARTS】01_01_左耳听风-20181112~1116
每周至少做一个 leetcode 的算法题.阅读并点评至少一篇英文技术文章.学习至少一个技术技巧.分享一篇有观点和思考的技术文章.(也就是 Algorithm.Review.Tip.Share 简称A ...
- 【Python】Flask系列-URL和视图笔记
1.学习目标 熟悉Flask相关知识. 熟悉web开发流程. 能独立开发Flask项目. 2.环境配置 Python虚拟环境安装 因为python的框架更新迭代太快了,有时候需要在电脑上存在一个框架的 ...
- Python3安装配置【转】
不建议卸载python2 可能会导致系统内其他软件无法使用,如果使用最新的Python3那么我们知道编译安装源码包和系统默认包之间是没有任何影响的,所以可以安装python3和python2共存 (前 ...
- Flask源码解析:Flask应用执行流程及原理
WSGI WSGI:全称是Web Server Gateway Interface,WSGI不是服务器,python模块,框架,API或者任何软件,只是一种规范,描述服务器端如何与web应用程序通信的 ...
- 部分Web服务器信息对比
本文参考wikipedia的Web服务器比较页面的数据,选取了其中自己感兴趣的Web服务器的信息进行了对比,包括,Apache HTTP Server.Apache Tomcat.Nginx.Catt ...
- python基础--模块使用
一:模块介绍 模块分为三种: 自定义模块 内置标准模块(又称标准库) 开源模块 自定义模块使用 # -*- coding:utf-8 -*- __author__ = 'shisanjun' &q ...
- KNN算法的感受 2
(1):先将上述代码保存为kNN.py (2):再在IDLE下的run菜单下run一下,将其生成python模块 (3):import kNN(因为上一步已经生成knn模块) (4):kNN.cla ...
- JVM指令详解(上)
指令码 助记符 说明 0x00 nop 什么都不做 0x01 ...
- P1270 【“访问”美术馆】
$\large{\text{一千个Oier程序中有一千种树形DP}}$ 思路都差不多的,但是每个人都有自己的状态定义与转移 不妨定义$dp[i][j]$表示,在$i$子树内,偷$j$张画,且不考虑根到 ...
- 如果django里的视图是类(CBV),应该如何写Url的测试用例?
晚上回家测试了很多方式,都不行. 网上搜索找不到答案, 最后还是官方文档最抵用呢. https://docs.djangoproject.com/en/2.1/topics/testing/tools ...