Import / Eksport IFC - kompilacja IfcOpenShell

From FreeCAD Documentation
Revision as of 13:22, 4 November 2023 by Kaktus (talk | contribs) (Created page with "3. Po zakończeniu (nie pamiętam teraz, ale zostanie wypisane coś w stylu "Built IfcOpenShell..." i powróci do monitu) będziesz miał nowy folder {{FileName|/IfcOpenShell/build/}} pełen plików i folderów. Z mojego osobistego doświadczenia wynika, że dwa tygodnie temu skrypt nix "build-all.sh" nie zakończył się pomyślnie, ale po wypróbowaniu go wczoraj z najnowszymi aktualizacjami działał dobrze, więc przypuszczam, że możesz doświadczyć czegoś podobn...")
Ćwiczenie
Temat
środowisko pracy Architektura
Poziom trudności
zaawansowany
Czas wykonania
120 minut
Autorzy
Pablo Gil
Wersja FreeCAD
0.19.x
Pliki z przykładami
brak
Zobacz również
-

Wprowadzenie

To było tak trudne dochodzenie, jak uzyskać działającą kopię IfcOpenShell-python na OSX/macOS w celu importowania/eksportowania plików IFC, że dzielę się tym poradnikiem na wypadek, gdyby pomógł większej liczbie osób. Mój system to OSX 10.11.6, 64bity z środowiskiem Python 2.7.11, może to zadziałać, jeśli masz również OSX, ponieważ często są one 64-bitowe, ale mogą się różnić od mojego. Procedura może być bardzo podobna, jeśli używasz Linuksa lub Windowsa, ale prawdopodobnie ma pewne różnice.

Wymagania

Kroki

1. Pobierz lub sklonuj pełny projekt GitHub pod adresem https://github.com/IfcOpenShell/IfcOpenShell (zawsze będzie to najnowsza wersja)

git clone https://github.com/IfcOpenShell/IfcOpenShell

2. Z terminala przejdź do folderu /nix/ i uruchom skrypt. W systemie OSX jest on wykonywany za pomocą:

cd nix/
./build-all.sh

Kompilacja zajmie od 30 do 120 minut. Nie jest to najmądrzejszy sposób kompilacji IfcOpenShell, ale ten prosty skrypt skompiluje wszystkie zależności, wersje Python itp.

3. Po zakończeniu (nie pamiętam teraz, ale zostanie wypisane coś w stylu "Built IfcOpenShell..." i powróci do monitu) będziesz miał nowy folder /IfcOpenShell/build/ pełen plików i folderów. Z mojego osobistego doświadczenia wynika, że dwa tygodnie temu skrypt nix "build-all.sh" nie zakończył się pomyślnie, ale po wypróbowaniu go wczoraj z najnowszymi aktualizacjami działał dobrze, więc przypuszczam, że możesz doświadczyć czegoś podobnego w przypadku dalszego rozwoju... Więc teraz masz wszystko, czego potrzebujesz, ale musisz wykonać trochę samodzielnej pracy, aby to zadziałało:

4. Open FreeCAD and open the Python console and Report view. Then write into the Python console the following:

import sys
print sys.path

You will get a looooong line with all the paths that FreeCAD reads. You may be able to install IfcOpenShell in any of them but I suggest you to place it inside one where you find a /site-packages/ after a /Python/ or /python-something/. In my case it was /Library/Python/2.7/site-packages. (Note: you will find paths inside your app directory but I suggest you to not use them because then IfcOpenShell will only be available for this app)

5. Once located where you want/have to install it, go there with your file browser (Finder in OSX). That is, go inside /site-packages/ folder

cd site-packages/

6. Open a new file browser window and navigate to your downloaded GitHub project: /IfcOpenShell/src/ifcopenshell-python/ and copy the full /ifcopenshell/ folder

7. Paste it inside /site-packages/ folder. Now you should have something like:

/site-packages/ifcopenshell/__init__.py
/site-packages/ifcopenshell/entity_instance.py
/site-packages/ifcopenshell/file.py
/site-packages/ifcopenshell/geom/app.py
/site-packages/ifcopenshell/geom/main.py
/site-packages/ifcopenshell/geom/occ_utils.py
/site-packages/ifcopenshell/geom/__init__.py
/site-packages/ifcopenshell/guid.py

8. Now we have to pick to files inside the /build/ folder, they are:

_ifcopenshell_wrapper.so
ifcopenshell_wrapper.py

but as we have compiled everything you will have to pick the one that matches with your FreeCAD Python version. Check it easily reading the first line inside your FreeCAD Python console view. In my case it was Python 2.7.11.

9. Now go let's copy the files inside the place it corresponds to your Python version. In my case it was:

/IfcOpenShell/build/Darwin/x86_64/build/ifcopenshell/[b]python-2.7[/b].10/ifcwrap/

10. Paste them inside /site-packages/ifcopenshell/

11. Check everything is in place:

/site-packages/ifcopenshell/__init__.py                  (1)
/site-packages/ifcopenshell/entity_instance.py           (1)
/site-packages/ifcopenshell/_ifcopenshell_wrapper.so     (2)
/site-packages/ifcopenshell/file.py                      (1)
/site-packages/ifcopenshell/geom/__init__.py             (1)
/site-packages/ifcopenshell/geom/app.py                  (1)
/site-packages/ifcopenshell/geom/main.py                 (1)
/site-packages/ifcopenshell/geom/occ_utils.py            (1)
/site-packages/ifcopenshell/guid.py                      (1)
/site-packages/ifcopenshell/ifcopenshell_wrapper.py      (2)

(1) from GitHub project
(2) from /build/ folder


12. Close and reopen FreeCAD

Testing

Now that it is installed, let's check if everything works as expected:

12.1 in the Python console write:

import ifcopenshell
from ifcopenshell import geom

if it doesn't throw any error it means it may be correctly installed

12.2 Go to Yorik's FreeCAD manual, navigate to the lower part of the page and download the following files to test:

house.FCStd
house.ifc

12.3 Open house.FCStd, select the root "Building" object and export it (File → Export) setting the File type to "Industry Foundation Classes (*.ifc)". Press Save and if it works and it doesn't throw an error in the Report view then it's working.

12.4 Final test, import house.ifc into a new file so open a new file and import that file... it will take a while.

13. Ciesz się BIM dzięki FreeCAD!

Przemyślenia końcowe

Moim zdaniem sam FreeCAD powinien mieć prekompilowane wersje IfcOpenShell dołączone do dystrybucji, ponieważ samodzielne budowanie go jest totalnym bólem i przeciętny użytkownik tego nie zrobi (nie wie, jak kompilować, zarządzać GitHubem itp.), ale cóż, może w przyszłości.

Mam nadzieję, że to ci pomoże.

Dzięki.

Odnośniki internetowe