RevitAPI: 新建系统族类型并创建族实例
来源:互联网 发布:什么是数据定义语言 编辑:程序博客网 时间:2024/05/04 11:40
昨天有客户问到如何通过API实现下面的步骤:
1. 新建一个系统族,并修改参数
2. 使用该系统族创建一个族实例,例如创建墙。
回答:
1. 新建族实例我们可以使用ElementType.Duplicate(string)方法,因为系统族是不允许用户创建的,我们只能复制一个。
2. 创建系统族可以使用形如Wall.Create方法或者Document.Create.NewFloor这样的方法。
下面是复制墙类型并创建墙的例子:
public static Document RevitDoc;public static Autodesk.Revit.ApplicationServices.Application RevitApp;public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements){ RevitApp = commandData.Application.Application; var uiDoc = commandData.Application.ActiveUIDocument; if (uiDoc == null) { message = "Please open a document"; return Result.Failed; } RevitDoc = commandData.Application.ActiveUIDocument.Document; var uiSel = commandData.Application.ActiveUIDocument.Selection; Transaction transaction = new Transaction(RevitDoc, "TestScript.CreateNewInstanceWithNewType"); transaction.Start(); try { var typeFilter = new ElementClassFilter(typeof(WallType)); FilteredElementCollector wallTypes = new FilteredElementCollector(RevitDoc); wallTypes = wallTypes.WherePasses(typeFilter); WallType walltype = null; foreach (WallType wallType in wallTypes) { walltype = wallType; break; } if (walltype != null) { //创建新的墙类型,使用Duplicate方法 var newtype = walltype.Duplicate(walltype.Name + "_new"); //可以在这里修改墙类型的参数,例如修改吸收率 var para = walltype.get_Parameter(BuiltInParameter.ANALYTICAL_ABSORPTANCE); if (para != null && para.StorageType == StorageType.Double && para.IsReadOnly == false) { para.Set(2.0); } //找到一个标高 Level level = null; var levelFilter = new ElementClassFilter(typeof(Level)); FilteredElementCollector levels = new FilteredElementCollector(RevitDoc); levels = levels.WherePasses(levelFilter); foreach (Level element in levels) { level = element; break; } //创建墙 var wall = Wall.Create(RevitDoc, Line.CreateBound(new XYZ(0, 0, 0), new XYZ(10, 0, 0)), newtype.Id, level.Id, 20, 0, false, false); TaskDialog.Show("wall creation", "wall created, id = " + wall.Id); } transaction.Commit(); } catch (Exception ex) { message = ex.ToString(); transaction.RollBack(); return Result.Failed; } return Result.Succeeded;}
0 0
- RevitAPI: 新建系统族类型并创建族实例
- RevitAPI之怎样在族、族类型、族实例之间相互获取
- RevitAPI: 在墙上创建灯具族实例
- RevitAPI: 如何判断天花板的族类型是否是复合结构
- RevitAPI: 如何创建共享参数,并和类别绑定
- RevitAPI: 获取系统族的名称
- 服务器上创建oracle新建实例,并创建表空间和用户并授权
- Building Coder(Revit 二次开发) - 族符号与族类型
- 通过RevitAPI创建墙
- Oracle学习之创建数据库(新建实例)
- 编程如何修改Revit族类型名称
- RevitAPI之如何载入族再创建族实例(以门为例)
- RevitAPI: 如何在族里面创建一条带颜色的二维线?
- 请问如何使用RevitAPI创建体量?
- RevitAPI: 如何使用API创建墙饰条
- 通过RevitAPI创建可下拉的按钮
- RevitAPI之创建一个面积【比目鱼原创】
- python 小实例5 创建文件,并写入数据:要求不能与现存系统文件重名
- sed引入shell变量的方法
- BM字符串匹配算法
- MQ通道配置
- Mac下使用Android的Jni生成动态库so文件,并打包到APK包说明
- MediaPlayer播放
- RevitAPI: 新建系统族类型并创建族实例
- The Swift Programming Language--语言指南--枚举
- java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start com
- Hibernate配置文件中映射元素详解
- 如果表单有中文参数值,也需要注意编码问题
- ibatis入门示例
- 算术运算符
- PHP正则表达式 /i, /s, /x,/u, /U, /A, /D, /S等模式修饰符
- IOS Notes(二)补