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

Navisworks API设置对象透明度异常:50%设为100%问题咨询

问题

使用Navisworks API修改对象透明度时出现异常:代码里明明设置的是50%透明度,但在某一特定模型中,部分对象被改成了100%完全透明。以下是用到的代码:

using Autodesk.Navisworks.Api;
using Autodesk.Navisworks.Api.Plugins;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using Application = Autodesk.Navisworks.Api.Application;

namespace NavisworksTransparencyModifier
{
    [PluginAttribute("Trasnparency",                   //Plugin name
                    "ADSK",                                       //4 character Developer ID or GUID
                    ToolTip = "Transparency modifier",//The tooltip for the item in the ribbon
                    DisplayName = "Transparency modifier plugin")]
    public class TransparencyModifier : AddInPlugin
    {

        public override int Execute(params string[] parameters)
        {
            Document doc = Application.ActiveDocument;

            List<ModelItem> list = doc.CurrentSelection.SelectedItems.ToList();
            if (list != null)
            {
                //Application.ActiveDocument.Models.ResetAllPermanentMaterials();
                Application.ActiveDocument.Models.OverridePermanentTransparency(list,50);
            }
            else
            {
                // Handle case when no object is selected
                Console.WriteLine("Please select an object first.");
            }

            return 0;
        }
    }
}

可能的原因及解决方案

  • 对象原生材质优先级更高:部分对象本身自带透明度设置,Navisworks中对象自身的材质属性优先级高于API的永久覆盖设置。可以先清除选中对象的已有材质覆盖,再设置新透明度:

    foreach(var item in list)
    {
        doc.Models.ResetPermanentMaterial(item);
    }
    doc.Models.OverridePermanentTransparency(list, 50);
    

    (注:如果不想影响其他对象的材质设置,别用ResetAllPermanentMaterials(),逐个重置选中对象更稳妥)

  • 选中对象包含嵌套层级:如果选的是组或容器对象,部分子对象可能继承了特殊的透明度设置,API批量处理组对象时可能出现遗漏。可以遍历选中对象的所有子项,逐个设置:

    List<ModelItem> allItems = new List<ModelItem>();
    foreach(var item in list)
    {
        allItems.AddRange(item.DescendantsAndSelf);
    }
    doc.Models.OverridePermanentTransparency(allItems, 50);
    
  • 版本兼容性问题:不同版本的Navisworks API对OverridePermanentTransparency方法的处理可能有差异,检查API版本是否和Navisworks客户端版本匹配,必要时调整API包版本。

  • 特殊对象类型限制:点云、外部参考、部分格式导入的特殊对象可能不支持API设置透明度,或者需要额外处理。可以先测试普通几何对象的设置是否正常,再排查特殊对象的问题。

内容的提问来源于stack exchange,提问作者Ryan J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 07:22:32