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)] ); ...
随机推荐
- oracel回收站清理
从powerdesigner中往oracle中导入表,出现了很多类似“BIN$Z35FPY7eFZDgUKjAC94NkA==$0 ”这样的表名, 原因是删除表的时候没有彻底的删除表,而是把表放入回收 ...
- MVC 控制器中传递dynamic(对象) 给视图
有时候不想重新定义一个实体,则使用 dynamic 来定义匿名类型. //匿名类型 传递到前台 Model dynamic viewModel = new { UserID = 5016 }; ret ...
- 003_cd pushd popd三个命令的区别
一. It depends. In zsh you can configure cd to push the old directory on the directory stack automati ...
- 深度学习框架之TensorFlow的概念及安装(ubuntu下基于pip的安装,IDE为Pycharm)
2015年11月9日,Google发布人工智能系统TensorFlow并宣布开源. 1.TensorFlow的概念 TensorFlow 是使用数据流图进行数值计算的开源软件库.也就是说,Tensor ...
- 使用JS实现俄罗斯方块游戏
简单的JS俄罗斯方块游戏源码 效果图: 代码如下,复制即可使用: <!DOCTYPE html> <html> <head> <meta charset=&q ...
- java 编译与运行
javac 编译 .java文件 javac file.java //将file.java 编译为 file.classjavac -d folder file.java //将file.java ...
- [图解算法] 二分查找Binary-Search——<递归与分治策略>
#include"iostream.h" int BinarySearch(int a[],int left,int right,const int& x) { if(le ...
- 只想写一个真正能用的django mock
调参数的过程,百转千回. 还好,搞得差不多了. 确实,方便写测试用例, 也是一个开发水平高低的衡量~~~:( 为了测试这个mock,不得不改下代码~~ 还要不断的将Model里允许Null的参数写完, ...
- #JS 窗口resize避免触发多次
window窗口改变时触发resize,如何避免多次执行,设置一个300ms定时器即可. //窗口变化监听,避免resize多次执行卡顿 var resizeTimer = null; $(windo ...
- 【LOJ】#2265. 「CTSC2017」最长上升子序列
题解 点了一个新技能叫杨表(事实上集训的时候听过,但是一直不会 这道题就是让我们找到k个不上升子序列,要求长度加和最大 我们用杨表去维护,但是由于杨表的行数可能是n的,复杂度会炸 我们只维护前\(\s ...