You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS RoomPlan API如何丢弃特定对象?扫描返回CapturedRoom不可变

RoomPlan API 丢弃特定对象的解决方案

RoomPlan API 返回的 CapturedRoom 是不可变类型,本身没有直接提供丢弃其中特定对象的方法,但可以通过以下方式实现需求:

  • 创建自定义可变模型:将 CapturedRoom 中的数据(如墙体、门窗、扫描到的物体等)提取出来,存入你自己定义的可变结构体或类中,之后就可以自由删除不需要的对象。
  • 扫描后过滤处理:在 captureView(didPresent:error:) 回调中,对返回的 processedResult 进行数据提取和过滤,示例代码如下:
func captureView(didPresent processedResult: CapturedRoom, error: Error?) {
    guard error == nil else {
        // 处理错误逻辑
        return
    }
    
    // 示例:过滤掉类型为椅子的扫描对象
    let filteredObjects = processedResult.objects.filter { $0.type != .chair }
    
    // 提取房间其他核心数据
    let walls = processedResult.walls
    let doors = processedResult.doors
    let windows = processedResult.windows
    
    // 存入自定义可变模型
    var customRoom = CustomRoom(walls: walls, doors: doors, windows: windows, objects: filteredObjects)
    
    // 可进一步删除指定ID的对象
    if let targetIndex = customRoom.objects.firstIndex(where: { $0.id == "目标对象ID" }) {
        customRoom.objects.remove(at: targetIndex)
    }
}

// 自定义可变房间模型示例
struct CustomRoom {
    var walls: [CapturedWall]
    var doors: [CapturedDoor]
    var windows: [CapturedWindow]
    var objects: [CapturedObject]
}
  • 扫描阶段无直接排除机制:目前RoomPlan没有提供在扫描过程中就过滤特定对象的配置,只能在扫描完成后通过上述方式处理结果。

内容的提问来源于stack exchange,提问作者Jaswant Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 00:05:18