EaBIM一直以来积极响应国家“十二五”推进建筑业信息化的号召,对建筑领域的信息技术开展深入技术交流和探讨!致力于打造“BIM-建筑师-生态技术”三位一体综合资源交流共享平台,希望为BIM与可持续设计理念及技术的普及做出微小的贡献!!!

EaBIM

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 496|回复: 1
打印 上一主题 下一主题

通过编程的方式根据一组封闭的线绘制相同形状的箍筋

[复制链接]

1514

主题

7465

帖子

1万

积分

admin

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10

积分
12404

社区QQ达人

跳转到指定楼层
楼主
发表于 2014-1-15 11:38:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

很多的时候我们希望给Revit的构件配筋, 通过编程的方式可以将你用手工绘制的模型线转化成箍筋。非常方便直观。

我们调用Rebar.CreateFromCurves() 函数来创建箍筋。

函数定义如下:

public static Rebar CreateFromCurves(
        Document doc,
        RebarStyle style,
        RebarBarType barType,
        RebarHookType startHook,
        RebarHookType endHook,
        Element host,
        XYZ norm,
        IList<Curve> curves,
        RebarHookOrientation startHookOrient,
        RebarHookOrientation endHookOrient,
        bool useExistingShapeIfPossible,
        bool createNewShape
)


创建箍筋需要注意的几个输入参数的理解:

第二个参数(        RebarStyle style,)是 选择钢筋类型, 对于箍筋需要设置为: RebarStyle.StirupTie.  如果对于直线钢筋或纵筋设置为RebarStyle.Standard

第七个参数(        XYZ norm) 是箍筋坐在平面的法向量方向。


请看下面的代码。


[csharp] view plaincopy


  • [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]  
  •     [Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]  
  •     public class Command1 : IExternalCommand  
  •     {  
  •         public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)  
  •         {  
  •             RebarBarType barType = null;  
  •             RebarHookType hookType = null;  
  •   
  •             Document doc = commandData.Application.ActiveUIDocument.Document;  
  •             Transaction transaction = new Transaction(doc, "CreateRebar Tool");  
  •             try  
  •             {  
  •                 transaction.Start();  
  •   
  •                 IList<Curve> curves1 = new List<Curve>();  
  •                 ElementSet eleset = commandData.Application.ActiveUIDocument.Selection.Elements;  
  •                 //需要确保这些选择的线是首尾相连的。  
  •                 foreach (Element e in eleset)  
  •                 {  
  •                     if (e is ModelLine)  
  •                     {  
  •                         Line l = (e as ModelLine).GeometryCurve as Line;  
  •                         Line line = doc.Application.Create.NewLineBound(l.get_EndPoint(0), l.get_EndPoint(1));  
  •                         curves1.Add(line);  
  •                     }  
  •                 }  
  •   
  •                 foreach (RebarBarType bt in doc.RebarBarTypes)  
  •                 {  
  •                   barType = bt;  
  •                   break;  
  •                 }  
  •                 foreach (RebarHookType ht in doc.RebarHookTypes)  
  •                 {  
  •                   hookType = ht;  
  •                 }  
  •   
  •                 {  
  •                
  •      
  •                 Reference hasPickOne = commandData.Application.ActiveUIDocument.Selection.PickObject(Autodesk.Revit.UI.Selection.ObjectType.Element);  
  •                 FamilyInstance hostFi = doc.get_Element(hasPickOne.ElementId) as FamilyInstance;  
  •   
  •                 Rebar rebar = CreateRebar1(commandData.Application.ActiveUIDocument, curves1, hostFi, barType, hookType);  
  •             
  •                 }  
  •   
  •             }  
  •             catch (Exception ex)  
  •             {  
  •                 message += ex.Message;  
  •                 return Autodesk.Revit.UI.Result.Failed ;  
  •             }  
  •             finally  
  •             {  
  •                 transaction.Commit();  
  •             }  
  •   
  •   
  •             return  Result.Succeeded ;  
  •         }  
  •   
  •         Rebar CreateRebar1(  
  •             Autodesk.Revit.UI.UIDocument uidoc,  
  •             IList<Curve> curves,  
  •             FamilyInstance column,  
  •             RebarBarType barType,  
  •             RebarHookType hookType)  
  •         {  
  •                
  •             LocationPoint location = column.Location as LocationPoint;  
  •             XYZ origin = location.Point;  
  •   
  •             Rebar rebar = Rebar.CreateFromCurves(uidoc.Document, Autodesk.Revit.DB.Structure.RebarStyle.StirrupTie, barType, hookType, hookType,  
  •                                 column, new XYZ(0,0,1), curves, RebarHookOrientation.Left, RebarHookOrientation.Left, true, true);  
  •   
  •             return rebar;  
  •         }  
  •     }  


转载请复制以下信息:
原文链接: http://blog.csdn.net/joexiongjin/article/details/8950238
作者:  叶雄进

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
工作时间:工作日的9:00-12:00/13:30-18:00,节假日不在线,请勿留言
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|EaBIM网 ( 苏ICP备2020058923号-1  苏公网安备32011502011255号

GMT+8, 2024-11-24 12:52

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表