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


Revit二次开发_显示最近的轴网交点

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

  做项目的时候有时要通过轴网定位与别人交流,常规操作是点选最近的两根轴网,看轴网的名称。可能我记性太差,一个地方总是要确认几次才放心。现在也有一些插件可以将轴圈显示在工作视图最外侧,但在轴网比较多且密集的时候看起来效果还是比较糟糕的。

   于是通过二次开发做了一个快速识别轴网定位的功能,通过点选一个点,识别最近的两根方向不一样的轴网,弹窗显示并自动复制到剪贴板中。

  现在主要针对的是直线型轴网,还有两个问题还没处理,一个是弧形轴网的识别,一个是多段轴网识别的修正,先挖下坑以后慢慢填了。-.-!

以下代码:

 public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
 {
 UIDocument uidoc = commandData.Application.ActiveUIDocument;
 Document doc = uidoc.Document;

 //选择点
 XYZ sel_point = uidoc.Selection.PickPoint(Autodesk.Revit.UI.Selection.ObjectSnapTypes.None);

 //获取所有轴网
 FilteredElementCollector filteredElementCollector = new FilteredElementCollector(doc);
 filteredElementCollector.OfClass(typeof(Grid));

 //处理多段轴网及弧形轴网
 //to do...

 //过滤出所有直线轴网
 List<Grid> lineGrid = new List<Grid>();
 foreach (Grid g in filteredElementCollector)
 {
 if ((g.Curve as Line) != null) lineGrid.Add(g);
 }
 //变量;
 Grid grid_n1 = null;
 Grid grid_n2 = null;
 double dis1 = double.MaxValue;
 double dis2 = double.MaxValue;
 //遍历轴网,计算出离选择点最近的一条轴网
 foreach (Grid g in lineGrid)
 {
 if (g.Curve.Distance(sel_point) < dis1)
 {
 grid_n1 = g;
 dis1 = g.Curve.Distance(sel_point);
 }
 }
 //遍历轴网,计算出离选择点最近的第二条轴网
 foreach(Grid g in lineGrid)
 {
 if (!(g.Curve as Line).Direction.IsAlmostEqualTo((grid_n1.Curve as Line).Direction) && g.Curve.Distance(sel_point) < dis2)
 {
 grid_n2 = g;
 dis2 = g.Curve.Distance(sel_point);
 }
 }

 //显示时将数字结尾的轴网号排在前面
 string name1 = grid_n1.Name;
 string name2 = grid_n2.Name;
 if (!char.IsNumber(name1.Last()))
 {
 string name = name1;
 name1 = name2;
 name2 = name;
 }
 string inputStr = name1 + "轴 交 " + name2 + "轴";
 //显示
 TaskDialog.Show("goodwish", inputStr);
 //复制到剪贴板
 System.Windows.Forms.Clipboard.SetText(inputStr);

 return Result.Succeeded;
 }

微信公众号:xuebim
关注建筑行业BIM发展、研究建筑新技术,汇集建筑前沿信息!
← 微信扫一扫,关注我们+
赞(0) 打赏
BIM建筑网 » Revit二次开发_显示最近的轴网交点

评论 抢沙发

评论前必须登录!

 

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

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

联系我们关于BIM建筑网

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

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

支付宝扫一扫打赏

微信扫一扫打赏

扫码登录

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

|登录

找回密码

|账号登录注册