Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

conda builds incompatible <-> ifcopenshell on channel ifcopenshell #12

Open
jakob-beetz opened this issue Jan 20, 2023 · 3 comments
Open

Comments

@jakob-beetz
Copy link
Member

jakob-beetz commented Jan 20, 2023

Thanks for the amazing tool!

attempts on both win64 and ubuntu 20.04 to call voxec after doing

conda install -c conda-forge ifcopenshell
conda install -c ifcopenshell voxelization_toolkit

fail with
voxec: symbol lookup error: voxec: undefined symbol: _ZNK16Standard_Failure14GetStackStringEv (linux)
or
the procedure entry point could not be locate in the dynamic link library [pathto]bin\voxec.exe (win64)

I tried to use older 3.9 3.10 versions of ifcopenshell from around the time of the last voxelization_toolkit builds in the ifcopenshell conda and conda-forge channels into fresh conda envs etc. to no avail.

Attempts to build on VS2019 and ubuntu give me (more) gray hair but no results:

  • current dead end on win after massaging Paths according to CMakeList.txt comments : running into issues with boost_1_76_0\boost\regex\v5\w32_regex_traits.hpp not being able to find / include ::GetUserDefaultLCID() from winnls.h into the global namespace ...

I managed to build libvoxel.lib however, maybe I can play around with that a bit...

If somebody finds the time to update conda or has a some hints for a successful build I'd be really , really thankful.

Thanks a lot for this really cool project!
Include citation reference from LDAC 21?

@aothms
Copy link
Member

aothms commented Jan 24, 2023

You were on the right track, but the dependency that needed to be downgraded was occt, which may or may not correspond to which ifcopenshell version it selects. In the end I got it up and running with the following versions:

ifcopenshell=v0.7.0a4-py310hf7dc881_1
occt=7.5.3-h8294837_4

I/We I think are still not fully understanding how to encode dependencies in yaml. For building IfcOpenShell is compatible with all occt versions (also the 7.7 that was recently introduced). But once IfcOpenShell has been built against a specific version then you can't arbitrarily switch versions. And I think this is what has happened since 7.7 was recently pushed to conda-forge.

running into issues with boost_1_76_0\boost\regex\v5\w32_regex_traits.hpp not being able to find / include ::GetUserDefaultLCID() from winnls.h into the global namespace ...

These boost regex failures have been plaguing us for some time. We have a similar issue causing the CI/CD build here in the voxel repo to break.

I see you're using boost v1.76, upgrading to 1.78 might help there because we have a specific check for that https://github.com/IfcOpenShell/IfcOpenShell/blob/v0.7.0/src/ifcgeom_schema_agnostic/IfcGeomFilter.h#L27

@jakob-beetz
Copy link
Member Author

Brilliant! Thanks a lot for taking the time to look into this!
Works with Duplex_A and the voxelfile described in the README.md!

Got it running in an anaconda3 shell on windows 11 (see complete specs below) doing:

conda create --name vox2
conda activate vox2
conda install -c conda-forge  ifcopenshell=v0.7.0a4=py310hf7dc881_1
conda install -c conda-forge  occt=7.5.3=h8294837_4
conda install -c ifcopenshell voxelization_toolkit

This is my environment if s.b. looks

conda info

     active environment : vox2
    active env location : [PATH]\anaconda3\envs\vox2
            shell level : 2
       user config file :[PATH]\.condarc
 populated config files : [PATH]\.condarc
          conda version : 4.12.0
    conda-build version : 3.21.8
         python version : 3.9.12.final.0
       virtual packages : __cuda=12.0=0
                          __win=0=0
                          __archspec=1=x86_64
       base environment : [PATH]\anaconda3  (writable)
      conda av data dir : C[PATH]\anaconda3\etc\conda
  conda av metadata url : None
           channel URLs : https://repo.anaconda.com/pkgs/main/win-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/win-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/msys2/win-64
                          https://repo.anaconda.com/pkgs/msys2/noarch
          
       envs directories : [PATH]\anaconda3\envs
                          [PATH]\.conda\envs
                          [PATH]\AppData\Local\conda\conda\envs
               platform : win-64
             user-agent : conda/4.12.0 requests/2.27.1 CPython/3.9.12 Windows/10 Windows/10.0.22000
          administrator : False
             netrc file : None
           offline mode : False

Also made progress in building everything using the boost 1.74.0 from [IfcOpenShellSrc]/_deps and _deps-vs2019-Win32-installed but running into linker issues that that probably stem from using vs2019 trying to use vs2017 occt .libs .... well keep posting.

Now, onward to understaning the toolkits DSL ;-)

Another attempt at IFC->gbXML interesting building on Marten Visschers https://github.com/MGVisschers/IFC-to-gbXML-converter ? Or is this done somewhere already?

@aothms
Copy link
Member

aothms commented Jan 24, 2023

When a model doesn't have 2nd level space boundaries, indeed voxelizing the spaces over a coarse grid can give you a reasonable approximation of it as we show in https://repository.tudelft.nl/islandora/object/uuid%3A98ad4f7e-105d-4511-baa8-57a088eb7c51

The real reason we built this was more for geometric analyses that require analysing the complete set of geometries but don't need full accuracy. The first real use case for this was detecting missing railings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants