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

如何使用Navisworks API获取Clash Detective UI中选中的clash结果项

Navisworks 2022 托管API已支持该能力,无需调用ComAPI,可通过Autodesk.Navisworks.Api.Clash命名空间下的接口实现,具体步骤如下:

  • 首先在插件项目中添加对应版本的程序集引用:Autodesk.Navisworks.Api.dll、Autodesk.Navisworks.Api.Clash.dll,确保程序集版本匹配2022的内部版本号(19.0.0.0)
  • 调用以下逻辑获取当前选中的冲突项,示例代码如下:
using Autodesk.Navisworks.Api;
using Autodesk.Navisworks.Api.Clash;
using System.Collections.Generic;

public List<ClashResult> GetSelectedClashResults()
{
    List<ClashResult> selectedResults = new List<ClashResult>();
    // 获取当前文档的所有冲突测试
    DocumentClashTests clashTests = Application.MainDocument.GetClashTests();
    // 遍历所有激活的冲突测试
    foreach (ClashTest test in clashTests.Tests)
    {
        if (!test.IsActive) continue;
        // 遍历分组内的冲突结果
        foreach (ClashGroup group in test.Groups)
        {
            foreach (ClashResult result in group.Children)
            {
                if (result.IsSelected)
                {
                    selectedResults.Add(result);
                }
            }
        }
        // 遍历未分组的冲突结果
        foreach (ClashResult result in test.Results)
        {
            if (result.IsSelected)
            {
                selectedResults.Add(result);
            }
        }
    }
    return selectedResults;
}
  • 额外注意事项:
    • 若需实时监听选中状态变更,可订阅Application.MainDocument.ClashTests.ClashTestsChanged事件,配合UI面板激活状态判断即可实现实时捕获
    • 当Clash Detective面板未处于激活状态时,IsSelected属性会统一返回false,调用该逻辑前可先判断面板激活状态,避免返回空值
    • 该方法仅对Navisworks 2020及以上版本生效,2022版本可直接调用无需适配

内容的提问来源于stack exchange,提问作者Amit Mandal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:18:04