由于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 生成墙图元的更多相关文章

  1. Revit API创建墙的保温层修改墙厚度

    start [Transaction(TransactionMode.Manual)] [Regeneration(RegenerationOption.Manual)]  / ;         ; ...

  2. Revit api 创建楼梯图元

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. Revit API 加载族并生成实例图元

    在Revit API中加载族可以使用Doc.LoadFamily方法,传入要加载的族文件路径名,但是这种方式有一种缺点,就是如果族文件在当前工程中没有加载的话则返回成功,如果已经加载过,则返回失败,也 ...

  4. 【Revit API】梁构件支座检查算法

    一.前言         应该是第二次写关于Revit API的博文了.虽然在BIM企业中工作,从事桌面BIM软件开发,但是我是不怎么喜欢写Revit API相关的代码.平时更多的是在写界面展示,架构 ...

  5. 利用Java API生成50到100之间的随机数

    利用Java API生成50到100之间的随机数 /** * */ package com.you.demo; import java.util.Random; /** * @author Admin ...

  6. [原创]推荐一些在线API生成工具

    [原创]推荐一些在线API生成工具 最近发现Api文档维护是个大体力活,版本控制文档统一化特别麻烦,寻思着这个怎么处理,经高人指点开源有一些工具不错,具体如下: 1.Swagger   http:// ...

  7. Revit API 判断一个构件在某个视图中的可见性

    查看 Revit API.发现有Element::IsHidden这个方法.通过UI创建一个element,注意要使得这个element在某些视图可见,但是在另一些视图不可见.运行下面的方法,你会发现 ...

  8. Revit API 操作共享参数和项目参数

    1.获取共享参数 private string GetSharInfo(Autodesk.Revit.ApplicationServices.Application revitApp) { Strin ...

  9. Revit API射线法读取空间中相交的元素

    Revit API提供根据射线来寻找经过的元素.方法是固定模式,没什么好说.关键代码:doc.FindReferencesWithContextByDirection(ptStart, (ptEnd  ...

随机推荐

  1. The requested URL /phpmyadmin was not found on this server.

    这个报错,我弄了好久,第一次我以为我安装有问题,我就卸载重新安装了,但是在结果还是报这样子的错. 查找phpmyadmin的安装位置输入: sudo dpkg -L phpmyadmin 可以看到很多 ...

  2. UVA-10539 Almost Prime Numbers

    题目大意:这道题中给了一种数的定义,让求在某个区间内的这种数的个数.这种数的定义是:有且只有一个素因子的合数. 题目分析:这种数的实质是素数的至少两次幂.由此打表——打出最大区间里的所有这种数构成的表 ...

  3. 在python中是没有NULL的,取而代之的是None,它的含义是为空

    在python中是没有NULL的,取而代之的是None,它的含义是为空

  4. idea Exception in thread "http-apr-8080-exec-2" java.lang.OutOfMemoryError: PermGen space

    idea Exception in thread "http-apr-8080-exec-2" java.lang.OutOfMemoryError: PermGen space ...

  5. C++ error C2440: “类型转换” : 无法从“std::vector::iterator”转换为“

    原文地址:http://blog.csdn.net/onlyou930/article/details/5602654 圆环套圆环之迭代器 话说这一日是风平浪静,万里乌云,俺的心情好的没得说,收到命令 ...

  6. DevExpress v17.2新版亮点—WinForms篇(五)

    用户界面套包DevExpress v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.开篇介绍了DevExpress WinForms v17.2 Data Grid Control ...

  7. 201621123010《Java程序设计》第14周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结与数据库相关内容. 2. 使用数据库技术改造你的系统 2.1 简述如何使用数据库技术改造你的系统.要建立什么表?截图你的表设计. 答 ...

  8. 生成banner的网站

    http://patorjk.com/software/taag 例如: .__ .__ .__ .__ .___ | |__ ____ | | | | ______ _ _____________| ...

  9. header 输出原始的php报头文件

    header() 函数向客户端发送原始的 HTTP 报头. 认识到一点很重要,即必须在任何实际的输出被发送之前调用 header() 函数 (在 PHP 4 以及更高的版本中,您可以使用输出缓存来解决 ...

  10. input 文件上传

    <button class="blueButton fileinput-button" style="width:165px;" @click=" ...