转载请复制以下信息:
原文链接: http://blog.csdn.net/joexiongjin/article/details/8098505
作者: 叶雄进 , Autodesk ADN
这段时间在准备AutoCAD2014版的API新功能学习,在Revit上投入的时间少些,这段时间博客也更新的较慢。从这周开始加大Revit方面的时间投入。12月份有Devdays @北京, 上海。 所以博客更新的会慢些。
顺便说下欧特克的北京办公室在9月中旬搬到了新的办公室,位于东大桥附件的侨福芳草地大厦。 这是北京的首个铂金级的绿色建筑,不知道大家留意过这个建筑没有。
新办公室充满现代化。有公共的淋浴间,卫生间的马桶具有冲洗和电加热,烘干的。窗户是电动的。物业老板喜欢艺术,里面摆了无数的艺术品,雕塑等。。。
我自己体验到最大实惠是椅子比较舒服。但是6号线尚未开通,通勤时间单程增加10分钟,年底就好了。
更多了解这个绿色建筑:http://cn.bing.com/search?q=%E4%BE%A8%E7%A6%8F%E8%8A%B3%E8%8D%89%E5%9C%B0&go=&qs=AS&form=QBRE&pq=%E4%BE%A8%E7%A6%8F&sc=8-2&sp=1&sk=
闲话就到这里,下面解答一个提问。
期望在当前的项目中以后台的方式创建一个概念体量,生成相应的族实例,并插入到当前项目的指定位置,用API可以做到吗?
谢谢!
答:
可以在项目中后台创建一个概念体量族,然后加载到当前项目中。
下面是步骤:
1. 命令开始后创建一个族文档。 用Application.NewFamilyDocument(族模板文件完整路径+名称); 获得族文档,我这里命名为docFamily。
2. 在docFamily 里面创建你想要添加的几何对象,参数,类型。。。等等。关于用API创建族,请看我的一个专题讲座。http://download.autodesk.com/media/adn/Revit_Family_API_DevTV_Chinese.zip
3. 加载这个族到当前模型文档: 调用这个函数。 docFamily.LoadFamily(currentDocument). 注意,这里模型文件放在参数里。LoadFamily之后可以获得族对象,我这里命令为newFamily。
第二个注意事项: 如果需要加载的族名字在当前模型中已经加载了,你需要调用这个函数来加载新的族,来覆盖已经加载的族。
public Family LoadFamily( Document targetDocument, IFamilyLoadOptions familyLoadOptions )
第二个参数是一个接口,你需要从该接口实现一个类,来处理族已经加载的情况下如何处理覆盖问题。
3. 获得这个加载进来的族的一个类型,可以从Famiy.Symbols 获取目标类型,得到FamilySymbol。
4. 用NewFamilyInstance() 方法创建实例。
5. 提交事务。
关于族的加载请看我以前写的这几篇文章:
编程如何修改磁盘上的一个族文件(*.rfa)文件中的参数值: http://blog.csdn.net/joexiongjin/article/details/7793282
获取不到刚刚加载的族类型(访问刚刚更新的数据)http://blog.csdn.net/joexiongjin/article/details/7750678
编程加载族文件:http://blog.csdn.net/joexiongjin/article/details/7636666
从一个项目中加载其中的一个族到另一个项目中(用API实现):http://blog.csdn.net/joexiongjin/article/details/6405886