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)] ); ...
随机推荐
- SQL Server 索引(一)数据结构和存储结构
本文关注以下方面(本文所有的讨论基于SQL Server数据库): 索引的分类: 索引的结构: 索引的存储 一.索引定义分类 让我们先来回答几个问题: 什么是索引? 索引是对数据库表中一列或多列的值进 ...
- 使用node创建一个服务器,运行vue打包以后的文件
原理就是使用node里的express框架,搭建一个服务器,然后访问dist文件夹里的文件 prod.server.js var express = require('express') var co ...
- day22-23作业
1.字节流 字符流 2.read() 3.-1 4.System.out 5.InputStream 6.OutputStream 1.IO流按流向分为输入流和输出流,即输入流和输出流 ...
- Maven 命令及其他备忘
1.与eclipse中右键 Maven -> Update Project 对应的命令行命令: mvn clean install -e -U -e详细异常,-U强制更新
- 二维码生成delphi版
二维码生成delphi版 生成二维码的软件,代码从C语言转换过来(源地址:http://fukuchi.org/works/qrencode/),断断续续的差不多花了一周时间来转换和调试.在转换过程中 ...
- 【测试工具】http协议调试利器fiddler使用教程
转自:http协议调试利器fiddler使用教程http://bbs.phpchina.com/thread-207418-1-1.html Fiddler真乃神器!它和市面上常见的很多web调试器. ...
- 记一次重装系统(.net开发环境重装问题汇总)
起因: 有一天,我突然感觉到电脑的运行明显变慢,慢的可怕,启动任务资源管理器一看,不看不知道,一看吓一跳,CPU使用率,物理内存皆100%,当时的第一印象,是电脑中病毒了吧!!,进入进程一看,有几个名 ...
- Java持久化之 -- 傲娇的NIO
NIO: Jdk 1.4+ New IO 面向通道和缓冲区 所在包:java.nio 执行流程: 数据总数由通道写入到buffer , 或者是从buffer写入通道 完全替换IO(面向流 单向的) ...
- MySql 时间戳存char还是存int?
一次小事故,让我对时间戳存char还是存int有了深刻的印象. 生产环境的sql条件涉及到时间戳字段的大小比较(between and),当时设计的时间戳类型是char(10),结果当数据量达到200 ...
- liunx的命令大全