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

Revit 2024 IFC导出API无法控制链接文件导出问题求助

Revit 2024 IFC导出API控制链接文件导出失败,寻求替代方案

尝试通过Revit 2024的IFC导出API控制链接文件的IFC导出行为,但未达到预期效果。当前代码通过配置myifcexportconfiguration.ExportLinkedFiles参数设置不同导出模式(不导出、单独导出、导出到同一IFCProject/IFCSite),但配置后未生效。以下是相关代码片段,希望了解是否有其他API调用方式可实现链接文件的IFC导出控制。

string linked_IFC = optionsForm.cmblinkedIFC.SelectedItem.ToString();
if (linked_IFC == "Do Not Export") 
    myifcexportconfiguration.ExportLinkedFiles = Revit.IFC.Export.Utility.LinkedFileExportAs.DontExport;
else if (linked_IFC == "Export as separate IFCs") 
    myifcexportconfiguration.ExportLinkedFiles = Revit.IFC.Export.Utility.LinkedFileExportAs.ExportAsSeparate;
else if (linked_IFC == "Export in same IFCProject") 
    myifcexportconfiguration.ExportLinkedFiles = Revit.IFC.Export.Utility.LinkedFileExportAs.ExportSameProject;
else if (linked_IFC == "Export in same IFCSite") 
    myifcexportconfiguration.ExportLinkedFiles = Revit.IFC.Export.Utility.LinkedFileExportAs.ExportSameSite;
}

// Begin export
using (TransactionGroup tg = new TransactionGroup(doc, "IFC Export"))
{
saveDialog.Filter = "IFC files (*.ifc)|*.ifc|;
saveDialog.Title = "Export IFC File";
saveDialog.FileName = doc.Title.Replace(".rvt", "");

    string fullPath = saveDialog.FileName;
    string exportFolder = Path.GetDirectoryName(fullPath);
    string fileName = Path.GetFileName(fullPath);

    tg.Start();

    using (Transaction tx = new Transaction(doc, "Set Export Data"))
    {
        tx.Start();

        try
        {
            // Define IFC export options
            IFCExportOptions ifcOptions = new IFCExportOptions();

            myifcexportconfiguration.UpdateOptions(ifcOptions, activeView.Id);
            bool success = doc.Export(exportFolder, fileName, ifcOptions);

            TaskDialog.Show("IFC Export", success
                ? $"IFC exported successfully to:\n{fullPath}"
                : "Export failed.");
            tx.Commit();
            tg.Assimilate();
            return success ? Result.Succeeded : Result.Failed;
        }
        catch (Exception ex)
        {
            message = ex.Message;
            tx.Commit();
            tg.RollBack();
            return Result.Failed;
        }
    }
}
}
}
}

public class IFCExportOptionsForm : System.Windows.Forms.Form
{
    public System.Windows.Forms.ComboBox cmblinkedIFC;  
    
    public IFCExportOptionsForm()
    {
        cmblinkedIFC = new System.Windows.Forms.ComboBox()
        {
            DropDownStyle = ComboBoxStyle.DropDownList,
            Width = 400
        };
        cmblinkedIFC.Items.AddRange(new string[]
        {
            "Do Not Export",
            "Export as separate IFCs",
            "Export in same IFCProject",
            "Export in same IFCSite"
        });
        cmblinkedIFC.SelectedIndex = 0;
        pnl_Addcontent.Controls.Add(cmblinkedIFC);
    }
}

可能的替代实现方式

  • 直接配置IFCExportOptions属性
    跳过IFCExportConfiguration的更新步骤,直接给IFCExportOptions的LinkedFileExportMode属性赋值,这是更直接的API调用方式:

    IFCExportOptions ifcOptions = new IFCExportOptions();
    
    if (linked_IFC == "Do Not Export")
        ifcOptions.LinkedFileExportMode = LinkedFileExportMode.DontExport;
    else if (linked_IFC == "Export as separate IFCs")
        ifcOptions.LinkedFileExportMode = LinkedFileExportMode.ExportAsSeparate;
    else if (linked_IFC == "Export in same IFCProject")
        ifcOptions.LinkedFileExportMode = LinkedFileExportMode.ExportSameProject;
    else if (linked_IFC == "Export in same IFCSite")
        ifcOptions.LinkedFileExportMode = LinkedFileExportMode.ExportSameSite;
    
    // 直接执行导出,无需事务包裹
    bool success = doc.Export(exportFolder, fileName, ifcOptions);
    
  • 修正配置类初始化逻辑
    确保myifcexportconfiguration是有效实例,建议从默认配置创建后再修改:

    IFCExportConfiguration myifcexportconfiguration = IFCExportConfiguration.CreateDefaultConfiguration();
    // 再设置ExportLinkedFiles属性
    
  • 移除不必要的事务包裹
    IFC导出操作本身不需要在事务中执行,当前代码将导出放在事务内可能干扰配置生效,可将doc.Export移出事务范围。

  • 检查API版本兼容性
    确认Revit 2024中LinkedFileExportAs枚举是否已被标记为过时,是否有新的替代API(如LinkedFileExportMode)。

内容的提问来源于stack exchange,提问作者Mohit Mangal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 03:44:53