Как повторно использовать один и тот же код xBim для Ifc2x3 и Ifc4

Я работаю над проектом, который требует разбора файлов IFC с использованием xBim, и мне нужна поддержка как Ifc2x3, так и Ifc4. Большинство имен классов Ifc и их свойств одинаковы в Ifc2x3 и Ifc4, но в объектной модели xBim те же классы в пространствах имен Ifc2x3 и Ifc4 не разделяют общий базовый класс или интерфейс, поэтому мне придется писать один и тот же код дважды. Я имею в виду, что если я пишу функцию, которая извлекает объем пространства, или что-то простое, я должен был бы написать это один раз для Ifc2x3-версии IfcSpace и другой раз для Ifc4-версии IfcSpace.

Я думал об использовании директив времени компиляции, чтобы решить, какое пространство имен загружать, но я не уверен, что это хорошая идея. Я знаю, что это странный запрос, но есть ли другой способ избежать написания одного и того же кода дважды?

1 ответ

Решение

Вы должны просто иметь возможность использовать интерфейсы в Xbim.Ifc4.Interfaces Пространство имен. Эти интерфейсы являются общими для реализаций Ifc2x3 и Ifc4 именно для этого сценария.

Пример в нижней части краткого руководства по Xbim демонстрирует этот сценарий работы через схемы Ifc с единой базой кода. http://docs.xbim.net/quick-start.html

Другие вопросы по тегам