Autodesk北京迁入绿色办公室。以及编程后台创建族,然后在模型文件中创建该族的实例


转载请复制以下信息:
原文链接: 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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Revit创建实例并勾选链以便连续放置,可以使用以下C#代码来创建一个名为"Testbeam"的结构框架实例: ```csharp // 导入Revit API命名空间 using Autodesk.Revit.DB; using Autodesk.Revit.DB.Structure; public void CreateTestbeam(Document doc) { // 获取文件 FilteredElementCollector collector = new FilteredElementCollector(doc); collector.OfClass(typeof(Family)); Family family = collector.FirstOrDefault(x => x.Name == "Testbeam") as Family; // 检查文件是否存在 if (family == null) { TaskDialog.Show("Error", "Family not found!"); return; } // 获取实例创建工具 FamilySymbol symbol = family.GetFamilySymbolIds() .Select(id => doc.GetElement(id)) .OfType<FamilySymbol>() .FirstOrDefault(); // 检查实例创建工具是否存在 if (symbol == null) { TaskDialog.Show("Error", "Family symbol not found!"); return; } // 获取当前视图的平面 View view = doc.ActiveView; if (!(view is ViewPlan)) { TaskDialog.Show("Error", "Please activate a plan view!"); return; } PlanViewPlan planView = view as PlanViewPlan; XYZ planNormal = planView.ViewDirection; // 获取实例放置点 XYZ origin = new XYZ(0, 0, 0); // 设置放置点的坐标值 // 开始事务 using (Transaction trans = new Transaction(doc, "Create Testbeam")) { trans.Start(); // 创建实例 FamilyInstance instance = doc.Create.NewFamilyInstance(origin, symbol, view); // 设置实例的链参数 StructuralFramingUtils.DisallowJoinAtEnd(instance, 0); // 阻止起点连接 StructuralFramingUtils.DisallowJoinAtEnd(instance, 1); // 阻止终点连接 // 提交事务 trans.Commit(); } } ``` 请注意,在使用此代码之前,您需要将Revit API添加为引用,并在代码包含所需的命名空间。另外,您需要确保已在Revit创建了名为"Testbeam"的结构框架
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值