乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 199|回复: 12

Revit选择

[复制链接]

24

主题

204

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2016-2-25 16:04:23 | 显示全部楼层 |阅读模式
免责声明,我们刚刚开始使用Revit。在MEP中,我们将楼层划分为多个区域,用于绘制线轴图。因此,在Revit中,我尝试使用区域来进行相同的划分。
首先,我如何获取一个区域内的所有元素?因为Area不是元素的参数,所以我假设没有办法使用FilteredElementCollector。
其次,是否有更好的方法将绘图划分为“区域”,然后查询所有管道、管道配件和管道附件?

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

24

主题

204

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2016-2-27 10:04:37 | 显示全部楼层
不确定这是否有帮助,但您能否在管道本身上设置一个读取区域名称的属性,然后只选择具有正确区域名称的管道?我在Revit中进行过零编程,但在AutoCAD MEP中就是这样做的。
回复

使用道具 举报

1

主题

17

帖子

1

银币

初来乍到

Rank: 1

铜币
21
发表于 2016-2-27 17:32:16 | 显示全部楼层
咳嗽,咳嗽,吸吮,咳嗽
对不起。
MEP使用空间,但我支持Revit,因为出于某种原因,在我工作的地方,他们将Revit工作交给没有经验的人,最终导致噩梦(不知道为什么),他们现在试图避免
我可以回去检查,但每个元素都有参数,这些参数最终就像动态对象一样,您可以使用名称和值字典中的属性。若你们窥探,你们能在参数字典中找到面积属性吗
回复

使用道具 举报

1

主题

17

帖子

1

银币

初来乍到

Rank: 1

铜币
21
发表于 2016-2-27 17:37:32 | 显示全部楼层
表单右侧显示元素的参数。
https://www.theswamp.org/index.php?topic=49784.msg549527#msg549527
这是一个很好的例子
回复

使用道具 举报

24

主题

204

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2016-2-29 08:10:06 | 显示全部楼层
没有,我没有足够的Revit经验来知道是否以及如何添加会自动拾取该区域的参数。我会深入调查的,我确实开始取得进展,让用户选择一个区域,然后使用BoundingBoxInsideFilter获取边界框内的FamilyInstances。我只想知道如何过滤掉所有东西,除了我想要的家庭。从OmniClass开始,我们将看看它能让我走多远。这是我的一些实验代码,   公共结果执行(。
外部命令数据命令数据,。
引用字符串消息,。
ElementSet元素)。
{。
var uiapp = commandData,应用;。
var uidoc = uiapp,ActiveUIDocument。
var app = uiapp,应用;。
var doc = uidoc,文档;。

var r = uidoc,Selection.PickObject(对象类型,元素,"选择区域:");。

var element = doc,GetElement(r . element id);。

var bbox = element . get _ bounding box(doc,active view);。
var outline = new Outline(bbox,最小bbox,max);。
var bb filter = new BoundingBoxIsInsideFilter(outline);。

var PVP = new parameter value provider(new element id((int)builtin parameter,omni class _ CODE));。

var collector = new FilteredElementCollector(doc,doc。ActiveView.Id)。
,of class(type of(family instance))。
,OfCategory(BuiltInCategory,OST_PipeAccessory)。
,where passes(bb filter);。

foreach(收集器中的变量e)。
{。
var Parameters = e . Parameters;。
}。

返回结果,成功了;。
}。
回复

使用道具 举报

1

主题

17

帖子

1

银币

初来乍到

Rank: 1

铜币
21
发表于 2016-2-29 08:39:32 | 显示全部楼层
这个课程很贵,但我相信它是由Autodesk的一个从事Revit API工作的人开设的。也许你能让你的公司支付它。
https://www . udemy . com/revi tapi/
这是revitapi博客。
https://boostyourbim . WordPress . com/
回复

使用道具 举报

24

主题

204

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2016-2-29 09:22:16 | 显示全部楼层
您可以加载一个示例模型来查看,也许可以找到一种方法
回复

使用道具 举报

1

主题

17

帖子

1

银币

初来乍到

Rank: 1

铜币
21
发表于 2016-2-29 11:41:28 | 显示全部楼层
Revit 支持获取文档或视图中的图元,因此我们需要进行计算才能获取区域(区域)内的图元。
在收集器的循环中,获取每个元素,然后获取其边界框。然后将此元素的边界框与区域边界框:轮廓内进行比较
。Min
elementBox.Max
回复

使用道具 举报

1

主题

17

帖子

1

银币

初来乍到

Rank: 1

铜币
21
发表于 2016-2-29 11:48:41 | 显示全部楼层
好主意Khoa。当管道跨越多个区域时,您只需要考虑特殊情况,这可能会发生很多。
回复

使用道具 举报

1

主题

17

帖子

1

银币

初来乍到

Rank: 1

铜币
21
发表于 2016-2-29 12:08:17 | 显示全部楼层
跨区域边界运行的跨越元素将有它们的边界框与区域(Area)轮廓重叠。我们需要根据我们想要如何处理它们来使用特殊情况对它们进行计数。
这是修改后的代码:
  1. if (outline.Min  elementBox.Max)
  2. {
  3.         // Element inside the outline
  4.         if (outline.Min  elementBox.Max)
  5.         {
  6.        
  7.         }
  8.         else // Element crosses the outline
  9.         {
  10.        
  11.         }
  12. }
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-4-29 16:35 , Processed in 2.508408 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表