1 准备工作 工欲善其事,必先利其器.在正式开始之前,我觉得有必要先盘点一下需要准备些什么. 1.1 硬件设备 PC机一台(谢绝Apple). 配置不能太低,至少要i3以上的cpu.4g以上的内存和支持DX11的独立显卡,否则跑不动Revit,建议不低于i5 CPU和8g内存.SSD不是必须品,我敢保证,当你把360.电脑管家和金山毒霸之类装了四五个以后,开机时间肯定会比裸奔的5400转机械硬盘长很多(珍爱生命,远离国产软件全家桶). 1.2 必要软件 1.2.1 64位Windows 7或8操…
0 序 近来,由于工作上的需要,开始自学Revit二次开发. Revit由欧特克公司专为BIM构建,是建筑业体系中使用最广泛的软件之一.借助欧特克公司在我国市场占有率方面的绝对优势,甚至给不少人带来"BIM=Revit"的错误观念. 即便如此,相对于Revit建模技术在全国范围内如火如荼的推广态势,Revit二次开发技术依旧比较冷门,有经验的开发者基本集中在北京.上海和深圳这几个地方.因此,在真实的世界里,我,暂时,还是一个人在战斗. 年纪大了,记性不好,需要这么一个博客,记录学习过程…
2 从"HelloWorld"入手 在欧特克的官方网页上有个叫<My First Plug-in Training>的项目,号称可以让一个完全没有编程基础的人照着做出一个插件来.我快速浏览了一下,觉得这个例子还是太复杂了,虽然一步一步依葫芦画瓢能做出来,但最后能有多少收获就不好说了.所以,我决定还是先参考官方在线帮助的例子,从大家都喜闻乐见的"HelloWorld"入手,自己摸索一下. 2.1 先来看下具体步骤 1.启动Visual Studio,新建项…
3 自己的工具按钮 上次的例子只能在"附加模块"→"外部工具"下运行,用作个人作品是没问题,如果打算搞个公司产品的话,估计BOSS是不会满意的.这次我来做一个直接显示在"附加模块"选项卡上的工具按钮. 3.1 基础 1.新建一个项目WelcomeToRevit.添加引用RevitAPI.dll和RevitAPI.dll.具体做法和上次一样,不赘述. 2.保留指令using System;添加指令using Autodesk.Revit.DB;us…
第一次在博客园上写东西,也不知道该写些什么,我想就写点最近项目到遇到的问题吧. 最近在做一个小项目,具体需求大概是在一个revit模型中的对应的楼板位置绘制钢筋. 由于刚接触Revit二次开发,之前也没有画过钢筋,所以在网上搜了一些用Revit画钢筋的资料. Revit中是提供了用于为混凝土柱.梁.墙.基础墙和结构楼板中的钢筋进行建模的工具.因此我们是可以通过类似于画墙或者柱的方法来画钢筋的. 通过检索,Revit API 中提供了两种绘制钢筋的方法: 一是通过给定几何形状创建Rebar.Cre…
最近换了下工作,由之前的互联网企业转入了BIM软件开发行列.具体原因不多说,作为一个程序员来说学习永无止境.下面来一个Hello World体验下Revit的二次开发 事前准备 VS Revit 2017 Revit二次开发中会使用到两个dll文件,由这两个文件来提供对Revit中项目数据的访问,两个dll文件的名称为RevitAPI.dll和RevitAPIUI.dll.获取方式在Revit的安装目录中,我本机Revit安装在E盘,E:\Autodesk\2017\Revit 2017,这个路…
学习revit二次开发,建议还是先把revit熟悉一下,去建立一下模型,亲自感受一下是如何创建模型的流程,其中会遇到什么问题.这样在自己做二次开发的时候,一些问题自己就能提前想到,规避掉.我大概用了半个月的时间,去建立具体的建筑模型,还有一些族,一些图元.首先是把自己每天工作的办公室还原复制了一份,尽可能多的去把办公室里的设施通过自建族去实现,最后把这个模型做出来还是挺高兴的.然后又去做了一个小型别墅的设计,自己感觉挺不错的,而且在做这个建筑的时候,明显所用的时间是减少很多了,一些操作已经比较熟…
1 前言 Revit被Autodesk收购之后,整理和开放了一大部分API,供开发者实现自己的功能和程序,总体来说API的功能比较完善,毕竟市面上已经出现了各式各样的插件. 本人也是初学者,在Revit分类中分享一些自己记录的笔记内容. 2 准备工作 工欲善其事,必先利其器. 2.1 语言 首先,定下你自己想使用的编程语言,官方SDK中给出的语言示例包括C#.VB.C++三种,至于选择哪一种来开发,可以根据个人喜好和语言掌握情况.不过一般来说,大家都使用C#,C#出自微软Anders Hejls…
Revit二次开发环境搭建(Revit 2019+Visual Studio 2017)准备内容 Revit 2019开发环境的搭建,需要安装的内容如下: Revit 2019(主要的开发环境) Visual Studio 2019(用于代码的编写) Revit SDK 2019 AddinManager(用于管理二次开发插件) Revit Lookup(查看工具) lLSpy 4.0.1(查看Revit API) 安装         系统要求:Windows 10 (x64) Revit 2…
  在Revit中,风管用于连接管件,风道末端和机械设备,今天简单尝试了下使用RevitAPI创建风管,现分享下我的方法.   风管从类型上可分为三类:一般风管,软风管和风管占位符:从形状上也分为三类:椭圆管,方管和圆管. 风管的属性和方法   风管的父类MEPCurve有三个属性,如下图: 而风管本身也有两个属性,分别是DuctType和IsPlaceholder ,前者是获取管道的类型,后者为判断是否是管道占位符. 小提示:使用Duct.Location属性,将它转型成LoactionCur…
最近一个月一直在研究Revit二次开发-BIM模型的导出,在网上找了很多相关资料学习.下面简单介绍一下我最近做的这个BIM模型的导出功能. 开始尝试使用Revit2015的样例程序里提供的读取模型几何信息的方式直接将所有的模型的坐标点XYZ.三角网信息全部导出来,形成我想要的.x文件,结果还真的得到了我想要的模型数据,但是仅仅得到模型的坐标信息还远远不够,模型的材质信息.UV坐标贴图数据才是最关键的.其实要实现模型导出功能,不需要这样费劲的一个信息一个信息的去调API取了,Revit提供了专门的…
不能在revit提供的api外部使用事务,解决此方法, 1.把button里要实现的功能写到外部事件IExternalEventHandler中,注册外部事件,在button事件中.raise()使用. public class NewWall : IExternalEventHandler    {        public void Execute(UIApplication app)        {           “”比如说创建墙的代码”        } public stri…
1背景小伙伴在做revit二次开发的时候,可能需要在族环境中将族的类型参数与实例参数相互转换. 2思路1.使用族管理器FamilyManager,参见注释12.首先获取需要转换的参数(单个与批量),参见注释2,33.实例参数转类型参数,或者类型参数转实例转实例参数,参见注释4,5 3代码using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using Sy…
应笔墨闲谈群的邀请, 在10月11号晚8:30分在其群做了一次关于BIM二次开发的讲座. 因为參与者基本上都是从设计院和施工单位来的,所以对Revit二次开发做了纵览性的解说, 以非程序猿能听懂的方式解说Revit二次开发.使这些行业领导或负责人能明确Revit二次开发的大概特点,以及其能实现的功能. 便于他们在自己的业务须要Revit插件时,能更好的思考和决策插件项目的立项和推动. 以下是这次讲座的提纲: Revit二次开发纵览,以橄榄山快模为例演示API概念Revit二次开发原理Revit二…
朋友们, 因为我离开Autodesk的全职工作(变为部分时间工作),我的职位空出.急招这个职位.请踊跃把你周围的朋友推荐给Autodesk. 请将简历发给我转交给Autodesk 我的邮箱yexiongjin@hotmail.com 该职位是正式编制,享受所有Autodesk优越的福利资源(额外商业保险.公积金所有由公司支付,年度奖金,季度礼物, 节日礼物, 15天年假,不定期的培训...).  Autodesk 是中国的最佳雇主之中的一个.也是美国最佳100位雇主的排名靠前. Autodesk…
一.起因    自己在写revit二开时,有一个Winform窗体按钮点击事件需要 触发调用事务进行处理,结果出现“异常“Starting a transaction from an external application running outside of API context is not allowe“” 其实这是 上面异常是Revit的一种保护机制,创建的非模态对话框Form1后,在Form1未关闭的状态下,Revit认为是处于非API的上下文环境,所以异常弹出来了. 在非模态对话…
在Revit二次开发过程中,建立一个倾斜的板是可以通过如下方法进行的: // // 摘要: // Creates a slab within the project with the given horizontal profile using // the default floor style. // // 参数: // profile: // An array of planar lines and arcs that represent the horizontal profile of…
原帖地址 http://379910987.blog.163.com/blog/static/33523797201011184552167/ 今天在改代码的时候,遇到了AddVertexAt方法的用法,不甚了解,遂转载 AddVertexAt方法的说明 2010-12-01 20:52:21|  分类: AutoCAD.NET二次 |  标签:bulge  addvertexat  |字号 订阅     用.NET对AutoCAD进行二次开发的时,会发现一个很奇观的现象,那就是居然没有矩形类,…
前言:如果想安装到CentOS7,就一定要将源码在CentOS7上编译,然后安装,否则可能会出现各种问题 目录 源码结构 技术点 编译环境的搭建  安装samba 安装编译环境 整体编译 ambari-web的编译 ambari-admin的编译 其他信息 wiki:https://cwiki.apache.org/confluence/display/AMBARI/Ambari 源码结构 为了方便了解结构树,使用了一个在线脑图来展示. 查看完整 技术点 编译环境的搭建 软件版本(要严格参照这个…
沿弧形路径创建拉伸屋顶 Revit的API中只能按照直线创建拉伸屋顶,不能按照曲线创建拉伸屋顶.在Revit的界面当中,可以用 构建->内建模型,进行放样创建屋顶.但是没有办法代码内建模型. 可以用自定义族的方式达到目的.在系统族梁的基础上进行改进.步骤如下: 1. 修改梁族的放样轮廓为自己要定义的形状.我要实现的效果是弧形的屋顶,所以定义的弧形,由于弧形的厚度和宽度是变化的,所以可以定义两个参数.具体怎么定义参数,可以查找一些别的资料. 2. 在代码中创建族的实例,对对应的参数进行复制,和修改…
哪些因素可能会导致损坏? 损坏的原因也各不相同,包括但不限于 无法读取/写入存储介质 程序发生崩溃(特别是在数据写入 RVT 模型时) 附加模块以通过正常 UI 无法或意外的方式修改图元 未经测试的多项操作或一系列操作(例如,取消同步或在同步后使用"撤消"命令) 解决方案: 要最大程度地减少数据损坏的发生率,请执行以下操作: 注意:如果您使用的是 2017 版本的 Revit,请务必安装 2017.1 Update,因为其中包含专门用于解决损坏的更改:修复损坏的中心模型 确保您有项目的…
最近开发业务中,有一个自动创建房间的功能,很自然的想到了Document.NewRooms2方法.但是当前功能的特殊之处在于,Revit项目视图是分阶段(Phase)的,不同阶段的房间是互相独立的. 官方API中创建房间提供了三个重载方法: public ICollection<DB.ElementId> NewRooms2(Phase phase, int count); public ICollection<DB.ElementId> NewRooms2(Level level…
本案例是在eclipse上进行开发的,解压后直接添加到eclipse即可.还需要自己配置maven环境.链接:https://pan.baidu.com/s/1siuvhCJASuZG_jqY5utP_g&shfl=sharepset提取码:u8ig 压缩包带数据库,数据库使用的是mysql. 在此感谢尚硅谷的SSM整合高级视频(http://www.atguigu.com/download_detail.shtml?v=34) 尚硅谷的视频真心良心,我不是培训的. 推荐bilibili美食up…
做了很久码农,也没个写博客的习惯,这次开始第一次写博客. 这个问题也是折腾了我接近一天时间,网上也没有任何的相关博文,于是决定分享一下,以供同样拥有此问题的小伙伴们参考. 内容源于目前在做的一个项目,已经封好的功能里,在生成构件时,会产生以 下弹窗. 原以为是前辈留下的信息提示,没想到是revit自带的信息提示,起因是在搜索构件时会查找当前文档的构件,查找到之后仅进行复制操作,于是就涉及到调用ElementTransformUtils.CopyElements()这个函数. API如下: 其中最…
  我们日常在revit开发中经常会用到按钮,可以通过revitAPI提供的接口创建按钮,今天我简单介绍一下两种按钮,一种是单命令按钮,另一种是含下拉菜单的按钮,包括创建他们的方法. 实现方法 1.实现思路   创建按钮的思路大体为:1.编写好自己的命令文件(一般就是继承IExteralCommand接口):2.创建一个继承IExternalApplication接口的文件:3.编辑Addin文档,并将其放入C:\ProgramData\Autodesk\Revit\Addins\2020\路径…
使用Idling事件处理插件任务. #region Namespaces using System; using System.Collections.Generic; using Autodesk.Revit.ApplicationServices; using Autodesk.Revit.Attributes; using Autodesk.Revit.DB; using Autodesk.Revit.UI; using Autodesk.Revit.UI.Events; #endregi…
关于Revit Journal读写的例子.   #region Namespaces using System; using System.Collections.Generic; using System.Diagnostics; using Autodesk.Revit.ApplicationServices; using Autodesk.Revit.Attributes; using Autodesk.Revit.DB; using Autodesk.Revit.UI; using Au…
本示例实现Revit和Revit打开的文件的相关信息. #region Namespaces using System; using System.Collections.Generic; using System.Diagnostics; using Autodesk.Revit.ApplicationServices; using Autodesk.Revit.Attributes; using Autodesk.Revit.DB; using Autodesk.Revit.UI; usin…
在该示例中,插件在Revit启动时弹出事件监控选择界面,供用户设置,也可在添加的Ribbon界面完成设置.当Revit进行相应操作时,弹出窗体会记录事件时间和名称. #region Namespaces using System; using System.Collections.Generic; using System.Windows.Forms; using Autodesk.Revit.ApplicationServices; using Autodesk.Revit.Attribute…
本示例介绍了Revit的错误处理.   #region Namespaces using System; using System.Collections.Generic; using Autodesk.Revit.ApplicationServices; using Autodesk.Revit.Attributes; using Autodesk.Revit.DB; using Autodesk.Revit.UI; #endregion namespace ErrorHandling { […