获取构件所在的房间

获取构件所在的房间

方法一:得到房间Solid后,就可以通过ElementIntersectsSolidFilter过滤出相交构件后,即可筛选出想要的构件: 

  var list = new FilteredElementCollector(doc).WhereElementIsNotElementType().WherePasses(new ElementIntersectsSolidFilter(solid)).ToList(); 

方法二:  如果对准确性要求不高的话,还可以直接通过构件Location获取到坐标进行判断: 

  room.IsPointInRoom(); 

  doc.GetRoomAtPoint();
————————————————
版权声明:本文为CSDN博主「AlanWang-HL」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46563153/article/details/132343111

Sure! 下面是一个示例代码,展示了如何使用Cesium库来点击模型并获取构件信息: ```javascript // 创建Cesium Viewer var viewer = new Cesium.Viewer('cesiumContainer'); // 加载模型 var modelEntity = viewer.entities.add({ name : '模型', position : Cesium.Cartesian3.fromDegrees(longitude, latitude, height), model : { uri : 'path/to/model.gltf' } }); // 创建鼠标点击事件处理函数 var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas); handler.setInputAction(function(click) { // 获取点击位置的屏幕坐标 var position = click.position; // 转换为世界坐标 var pickedObject = viewer.scene.pick(position); if (Cesium.defined(pickedObject)) { var id = pickedObject.id; if (id === modelEntity) { // 获取模型上的构件信息 var modelMatrix = modelEntity.computeModelMatrix(Cesium.JulianDate.now()); var attributes = id.model.meshes[0].primitives[0].attributes; // 打印构件信息 console.log(attributes); } } }, Cesium.ScreenSpaceEventType.LEFT_CLICK); ``` 请注意,上述代码中的`longitude`、`latitude`和`height`需要根据实际情况进行设置。`path/to/model.gltf`是模型文件的路径,你需要将其替换为你自己的模型文件路径。 这段代码创建了一个Cesium Viewer并加载了一个模型。当用户在模型上进行左击操作时,代码会获取点击位置的屏幕坐标,并将其转换为世界坐标。然后,它会检查是否点击到了模型上,并打印出该构件的信息。 希望这可以帮助到你!如果你有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值