BIM建筑网
更专业的BIM技术学习网站!


Revit二次开发|区域标高不一致缩略图的实现

免费的Ai上线啦!
BIM建筑网自主研发,你想要Ai功能都在这里!
Ai·提升效率 技术答疑

使用Revit出图时,往往会遇到项目地库标高不一致,在标注机电管线时,需要按照地库地面标高去标注,但地库地面标高又无法统一,需要手动取框选区域形成标高缩略图注明标高。

本文简单分享一下利用土建模型中的楼板实现缩略图的快速方法;

1、读取地库建筑面层的所有轮廓,筛选出建筑面层的范围线,利用范围线生成详图线;

2、新建常规注释类别的标高标记族,将建筑面层的标高赋值给常规注释族;

以下是所有代码:

 public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
 {
 UIApplication uiApp = commandData.Application;
 UIDocument uiDoc = uiApp.ActiveUIDocument;
 Document doc = uiDoc.Document;
 Selection sel = uiDoc.Selection;

 try {
 Transaction trans = new Transaction(doc);
 trans.Start("绘制详图线");
 FilteredElementCollector col = new FilteredElementCollector(uiDoc.Document);
 col.OfClass(typeof(FamilySymbol)).OfCategory(BuiltInCategory.OST_GenericAnnotation);
 FamilySymbol familySymbol = col.FirstElement() as FamilySymbol;
 FilteredElementCollector collector = new FilteredElementCollector(doc);
 ICollection<Element> floorcol = collector.OfClass(typeof(Floor)).ToElements();
 foreach (Element elem in floorcol) {
 Floor floor = elem as Floor;
 if (floor.Name.Contains("楼板"))
 {

 Level level = doc.GetElement(floor.LevelId) as Level;
 if (level.Name.Contains("B1") && level.Name.Contains("ST"))
 {
 //获得楼板的相对标高;
 double offset = floor.LookupParameter("自标高的高度偏移").AsDouble();
 double levelHeigh = (level.Elevation + offset) * 304.8/1000;
 string levelParam = levelHeigh.ToString("0.000");
 XYZ point = (floor.get_BoundingBox(doc.ActiveView).Max+floor.get_BoundingBox(doc.ActiveView).Min)/2;

 FamilyInstance instance = doc.Create.NewFamilyInstance(point, familySymbol, doc.ActiveView);

 Parameter parm = instance.LookupParameter("标高1");
 parm.Set(levelParam);

 GeometryElement geometry = floor.get_Geometry(new Options());
 foreach (GeometryObject geomObj in geometry)//获取到几何元素的边和面
 {
 Solid geomSolid = geomObj as Solid;
 if (null != geomSolid)
 {
 foreach (Face geoFace in geomSolid.Faces)
 {
 if (geoFace is PlanarFace) {
 PlanarFace plFace = geoFace as PlanarFace;

 //得到楼板面
 if (plFace.FaceNormal.Z == 1)
 {
 
 EdgeArray array = plFace.EdgeLoops.get_Item(0);

 foreach (Edge ed in array)
 {
 Curve curve = ed.AsCurve();
 
 doc.Create.NewDetailCurve(doc.ActiveView, curve);
 
 }
 }

 }
 
 }

 }


 }

 

 }


 }

 }
 trans.Commit();
 }
 catch (Autodesk.Revit.Exceptions.OperationCanceledException e) {
 return Result.Cancelled;


 }
 catch (Exception ex) {
 TaskDialog.Show("Revit",ex.Source+"n"+ex.Message+"n");

 return Result.Failed;
 }


 return Result.Succeeded;
 }

 

实际效果如下:

Revit二次开发|区域标高不一致缩略图的实现

Revit二次开发|区域标高不一致缩略图的实现

 

以上就是生成缩略图的简单方法,本方法对楼板的建模要求很高,如果土建模型楼板不完整或者重叠,需要手动取修改缩略图。

 

微信公众号:xuebim
关注建筑行业BIM发展、研究建筑新技术,汇集建筑前沿信息!
← 微信扫一扫,关注我们+
赞(0) 打赏
BIM建筑网 » Revit二次开发|区域标高不一致缩略图的实现

评论 抢沙发

评论前必须登录!

 

BIM建筑网,更专业的BIM技术学习网站!

关注建筑新动态,分享建筑新技术

联系我们关于BIM建筑网

觉得文章有用就打赏一下小编吧

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

扫码登录

微信「关注」,快捷登录
扫码关注后会自动登录
注册登录代表您已同意《用户许可协议》
账号登录 | 其他登录

|登录

找回密码

|账号登录注册