revit API 生成墙图元
由于Revit的版本问题,在网上找的生成墙图元的代码,在我机器上的Revit 2016中编译不能通过,通过多次调试,终于找到在revit 2016中使用API生成墙图元的代码,现在贴出来。
下面的代码在Revit 2016 + VS2013的环境下通过。
class CreateWall : IExternalCommand
{
public static Document RevitDoc;
public static Autodesk.Revit.ApplicationServices.Application RevitApp;
public Autodesk.Revit.UI.Result Execute(ExternalCommandData commandData,
ref string message, Autodesk.Revit.DB.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;
}
}
revit API 生成墙图元的更多相关文章
- Revit API创建墙的保温层修改墙厚度
start [Transaction(TransactionMode.Manual)] [Regeneration(RegenerationOption.Manual)] / ; ; ...
- Revit api 创建楼梯图元
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Revit API 加载族并生成实例图元
在Revit API中加载族可以使用Doc.LoadFamily方法,传入要加载的族文件路径名,但是这种方式有一种缺点,就是如果族文件在当前工程中没有加载的话则返回成功,如果已经加载过,则返回失败,也 ...
- 【Revit API】梁构件支座检查算法
一.前言 应该是第二次写关于Revit API的博文了.虽然在BIM企业中工作,从事桌面BIM软件开发,但是我是不怎么喜欢写Revit API相关的代码.平时更多的是在写界面展示,架构 ...
- 利用Java API生成50到100之间的随机数
利用Java API生成50到100之间的随机数 /** * */ package com.you.demo; import java.util.Random; /** * @author Admin ...
- [原创]推荐一些在线API生成工具
[原创]推荐一些在线API生成工具 最近发现Api文档维护是个大体力活,版本控制文档统一化特别麻烦,寻思着这个怎么处理,经高人指点开源有一些工具不错,具体如下: 1.Swagger http:// ...
- Revit API 判断一个构件在某个视图中的可见性
查看 Revit API.发现有Element::IsHidden这个方法.通过UI创建一个element,注意要使得这个element在某些视图可见,但是在另一些视图不可见.运行下面的方法,你会发现 ...
- Revit API 操作共享参数和项目参数
1.获取共享参数 private string GetSharInfo(Autodesk.Revit.ApplicationServices.Application revitApp) { Strin ...
- Revit API射线法读取空间中相交的元素
Revit API提供根据射线来寻找经过的元素.方法是固定模式,没什么好说.关键代码:doc.FindReferencesWithContextByDirection(ptStart, (ptEnd ...
随机推荐
- POJ-1129 Channel Allocation (DFS)
Description When a radio station is broadcasting over a very large area, repeaters are used to retra ...
- 使用Bulk Binding批量绑定的模式高效处理ORACLE大量数据
用批量绑定(bulk binding)的方式.当循环执行一个绑定变量的sql语句时候,在PL/SQL 和SQL引擎(engines)中,会发生大量的上下文切换(context switc ...
- iOS UI-三种简单的动画设置
一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView beginAnimations:nil context:nil]; //设置动画时长 ...
- AIOps探索:基于VAE模型的周期性KPI异常检测方法——VAE异常检测
AIOps探索:基于VAE模型的周期性KPI异常检测方法 from:jinjinlin.com 作者:林锦进 前言 在智能运维领域中,由于缺少异常样本,有监督方法的使用场景受限.因此,如何利用无监 ...
- 自定义实现spark的分区函数
有时自己的业务需要自己实现spark的分区函数 以下代码是实现一个自定义spark分区的demo 实现的功能是根据key值的最后一位数字,写到不同的文件 例如: 10写入到part-00000 11写 ...
- Sentry项目监控工具结合vue的安装与使用(前端)
一.官网:https://sentry.io/welcome/ 二.介绍 Sentry 是一个开源的实时错误报告工具,支持 web 前后端.移动应用以及游戏,支持 Python.OC.Java.Go. ...
- Openwrt Support MINI-PCIE EC20 (6)
1 Scope of Document This document describes MINI PCIE usb hardware design, for EC20 4G module 2 ...
- CSS中的长度单位及颜色表示
CSS中的长度单位及颜色表示 长度单位: px:像素,绝对单位 em:相对单位,如果用于font-size属性本身,则是相对于父元素的font-size.若用于其他属性(width,height ...
- C++对象模型——默认构造函数的合成
最近在学习C++对象模型,看的书是侯捷老师的<深度探索C++对象模型>,发现自己以前对构造函数存在很多误解,作此笔记记录. 默认构造函数的误解 1.当程序猿定义了默认构造函数,编译器就会直 ...
- docker小demo
http://www.blogjava.net/yongboy/archive/2013/12/12/407498.html