It is possible to update IFCExportOptions from IFCExportConfiguration
code 1
import clr
import sys
import System
# Import RevitAPI
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *
import Autodesk.Revit.DB as DB
from Autodesk.Revit.Attributes import *
from Autodesk.Revit.DB.IFC import *
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
uidoc = uiapp.ActiveUIDocument
app = uiapp.Application
sdkNumber = int(app.VersionNumber)
IFCExportConfiguration = None
IFCExportConfigurationsMap = None
pf_path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFilesX86)
pf_data_path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonApplicationData)
ifc_bundle_path = "{0}\\Autodesk\\ApplicationPlugins\\IFC {1}.bundle\\Contents\\{1}".format(pf_data_path, sdkNumber)
if System.IO.Directory.Exists(ifc_bundle_path):
# 1st try
sys.path.append(ifc_bundle_path)
clr.AddReference("IFCExporterUIOverride")
from BIM.IFC.Export.UI import IFCExportConfigurationsMap, IFCExportConfiguration, IFCCommandOverrideApplication
else:
ifc_addin_path = "{}\\Autodesk\\Revit {}\\AddIns\IFCExporterUI".format(pf_path, sdkNumber)
if System.IO.Directory.Exists(ifc_addin_path):
# 2nd try
sys.path.append(ifc_addin_path)
clr.AddReference("Autodesk.IFC.Export.UI")
from BIM.IFC.Export.UI import IFCExportConfigurationsMap, IFCExportConfiguration, IFCCommandOverrideApplication
import json
ifc_dict_config = {}
if IFCExportConfigurationsMap is not None:
idfdocA = IFCCommandOverrideApplication.TheDocument
if idfdocA is None:
propinfo = clr.GetClrType(IFCCommandOverrideApplication).GetProperty('TheDocument')
propinfo.SetValue(None, doc)
configurationsMap = IFCExportConfigurationsMap()
configurationsMap.AddBuiltInConfigurations()
configurationsMap.AddSavedConfigurations()
for config in configurationsMap.Values:
print(config.GetType())
#dict_ifc_version_str = {"IFC_Version_str": config.IFCVersion.ToString() }
#dict_config = json.loads(config.SerializeConfigToJson())
# merge dictionaries
#merge_dict_3 = dict(dict_ifc_version_str,**dict_config)
ifc_dict_config[config.Name] = config
OUT = ifc_dict_config
code 2
import sys
import clr
import System
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
# Import RevitAPI
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *
import Autodesk.Revit.DB as DB
from Autodesk.Revit.Attributes import*
from Autodesk.Revit.DB.IFC import*
# Import DocumentManager and TransactionManager
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
uidoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
sdkNumber = int(app.VersionNumber)
my_path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments)
myIFCExportConfiguration = IN[0]
TransactionManager.Instance.EnsureInTransaction(doc)
options = IFCExportOptions()
#Define the of a 3d view to export
exportViewId = ElementId.InvalidElementId
# Pass the setting of the myIFCExportConfiguration to the IFCExportOptions
myIFCExportConfiguration.UpdateOptions(options, exportViewId)
TransactionManager.Instance.TransactionTaskDone()
doc.Export(my_path, "test330.ifc", options)
OUT = options, options.FileVersion
