Порядок действий и особенности процедуры экспорта в среду Pilot BIM рабочих моделей

Процедура экспорта сборки в Pilot BIM отличается той особенность, что во-первых, мы формируем её только из IFC-файлов, и во-вторых, в качестве координат в ней выступают урезанные общие координаты - за “ноль” принимается абстрактное место в геометрическом центре моделируемой Выставки.

Зафиксируем далее это абстрактное место как координаты в метрах:

X = 2211632; Y = 528629

<aside> ⚠️ В миллиметрах, соответственно, это выражение будет равно: X = 2211632000; Y = 528629000

</aside>

Это приблизительные координаты центра здания №40 или центрального сквера внутри здания №39, округленные до целого значения.

Общая методология настройки

У IFC файла, который предполагается загрузить в среду Pilot BIM, задается так называемый, “глобальный сдвиг” в виде Ifc-класса IFCAXIS2PLACEMENT3D, находящегося в параметрах у IFCSITE. Другой вопрос, что эти действия могут выполняться вручную или программой.

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

Рассмотрим далее 2 способа — полностью ручной через правку IFC файла и полу-автоматический через выгрузку из CADLib с правкой файла на стороне платформы nanoCAD.

1. Ручной способ

Вне зависимости от того, откуда выгружается IFC (Revit, Renga, ArchiCAD), придерживаемся следующей схемы:

  1. Открываем IFC файл в каком-либо текстовом редакторе, отличным от стандартного Блокнота Windows (он большие файлы не откроет, либо будет лагать). Функциональный пример — бесплатный Notepad++
  2. Определяем, какое значение нумератора IFC-позиций у последней строки файла перед строкой ENDSEC;, это число после символа #, например для строки

#214= IFCRELDEFINESBYPROPERTIES('00GQ4qPI95oPOWqW$Fc2vO',#42,$,$,(#138),#201); это число 214.

  1. Вставляем перед строкой ENDSEC; новую строку вида:

#215= IFCCARTESIANPOINT((-2211632000.0,-528629000.0,0.0));, где 215 - это её номер, больший на 1 или более единиц от найденного значения в пункте 2 выше.

<aside> ⚠️ Насчет домножения представленных координат X = 2211632; Y = 528629 в метрах на 1000: это осуществляется из принципа, что длина элементов в IFC также в мм. В общем случае, длину рекомендуется сперва уточнить, глянув на строку IFC где-то в начале файла, содержащую слово “LENGTHUNIT”. Например - она может выглядеть так: #9=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); Это сигнализирует, что единицы файла в метрах, и координаты точки сдвига можно не увеличивать в 1000 раз.

</aside>

  1. Ищем атрибут IFCSITE (он обычно бывает либо в “первой сотне” элементов в начале файла, либо в его самом конце). В указанном атрибуте смотрим на значение в скобках и обращаем внимание на шестой параметр со знаком #. Например, для Revit это будет строка #4= IFCSITE('0uyE9IjjT15P5fuVKHHP_D',#10,'civil_site',$,$,#3,$,$,.ELEMENT.,$,$,$,$,$); и будет позиция #3.
  2. Перемещаемся к строке IFC файла, которая будет начинаться с этих символов, в случае выше — для #3 и смотрим, каким IFC классом выражена позиция: если это IFCLOCALPLACEMENT, то переходим ко второму аргументу в ней (ссылке на IFCAXIS2PLACEMENT3D); в противном случае, если это уже элемент IFCAXIS2PLACEMENT3D то изменяем в нем первый элемент на новый созданный в пункте 3, в моем случае на #215. Тогда исходная и измененная строка будет выглядеть следующим образом: