Git Product home page Git Product logo

ifcquery / ifcplusplus Goto Github PK

View Code? Open in Web Editor NEW
573.0 61.0 210.0 42.97 MB

IfcPlusPlus is an open source C++ class model, as well as a reader and writer for IFC files in STEP format. Features: Easy and efficient memory management using smart pointers. Parallel reader for very fast parsing on multi-core CPU's. Additionally, there's a simple IFC viewer application, using Qt and OpenSceneGraph. It can be used as starting point for all kinds of applications around the open building model standard IFC.

Home Page: http://www.ifcquery.com

License: MIT License

CMake 0.07% C++ 99.91% Batchfile 0.01% Dockerfile 0.01% Shell 0.01%

ifcplusplus's Introduction

ABOUT IFC++

IFC++ is an open source IFC implementation for C++. It is very fast, but it has not the lowest possible memory footprint, because it has a complete class model.

Benefits of the complete class model are (among others):

  • you can easily instantiate objects and access member variables, for example:
  shared_ptr<IfcCartesianPoint> ifcPoint = make_shared<IfcCartesianPoint>();
  shared_ptr<IfcPolyLoop> polyLoop = make_shared<IfcPolyLoop>()
  polyLoop->m_Polygon.push_back(ifcPoint);
  • you can navigate the model easily by accessing member variables directly, including inverse attributes:
shared_ptr<IfcBuildingStorey> currentBuildingStorey = ...;
for (auto it : currentBuildingStorey->m_IsDecomposedBy_inverse)
{
   shared_ptr<IfcRelAggregates> relAggregates(it);

   for (auto it2 : relAggregates->m_RelatedObjects)
   {
      shared_ptr<IfcObjectDefinition> child_obj = (it2);
      shared_ptr<IfcWallStandardCase> wall = dynamic_pointer_cast<IfcWallStandardCase>(child_obj);
      if(wall)
      {
         // do something with wall
      }
    }
 }

Inverse attribute pointers are automatically generated by IFC++ for all object references in the model.

  • casting is possible for all types:
 shared_ptr<IfcPropertySet> pset = dynamic_pointer_cast<IfcPropertySet>(relatingPropertyDefinition);
  • Professional support is available for bug fixing or custom implementations on www.ifcquery.com.

License

The project is published under the MIT license, which means that you can use it for any purpose, personal or commercial. There is no obligation to publish your source code.

Details and download of executable

Open source example application for Qt here available: https://github.com/ifcquery/ifcplusplus/releases

How to build the library and example application on Windows and Linux

https://github.com/ifcquery/ifcplusplus/wiki/Build-instructions

BIMViewPlus: Advanced IFC viewer with integrated file browser, model split & export to IFC/glTF/html

https://github.com/BIMViewPlus/BIMViewPlus

The IFC viewer BIMViewPlus is based on IFC++, but is not open source.

BIMViewPlus has an integrated file browser and a powerful search feature.

From the search results, a partial model can be extracted and exported to IFC4 or HTML/glTF/glb.

Screenshot 2024-04-01 221420

ifcplusplus's People

Contributors

berndhahnebach avatar bimviewplus avatar birgerbr avatar fav avatar ifcapps avatar ifcquery avatar jmlx42 avatar jrojoci3 avatar jsenn avatar lamorlette-cintoo avatar luzpaz avatar mxgrey avatar sharperzhou avatar shelltdf avatar shenqiuyao avatar tanolino avatar vocx-fc avatar yorikvanhavre avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ifcplusplus's Issues

ReaderWriterIFC requires IfcPPReaderSTEP header

The line 
https://code.google.com/p/ifcplusplus/source/browse/trunk/IfcPlusPlusGeometry/sr
c/ifcppgeometry/ReaderWriterIFC.h#55 causes a compile error because the 
ReaderSTEP is not included. 

Changing:

#include <ifcpp/reader/IfcPPReader.h>

to:

#include <ifcpp/reader/IfcPPReaderSTEP.h>

solves it


Original issue reported on code.google.com by [email protected] on 15 Dec 2014 at 11:40

SimpleViewerExample show nothing

Hi Fabian.
I use your project compiled with win64-msvc2013.
When I use SimpleViewerExample to open a small model,
nothing display.
Then I try a big model,
it crashs.

Missing file IfcPlusPlus/src/ifcpp/model/IfcPPGuid.cpp and .h

What steps will reproduce the problem?

using Ubuntu:
1. svn checkout
2. cd build && cmake ..


What is the expected output? What do you see instead?

Encountered error:
CMake Error at IfcPlusPlus/CMakeLists.txt:62 (ADD_LIBRARY):
  Cannot find source file:

    src/ifcpp/model/IfcPPGuid.cpp


What version of the product are you using? On what operating system?

The latest version as of now (r20), on Ubuntu 12.04



Aaaand thanks for releasing your code! :)


Original issue reported on code.google.com by [email protected] on 1 Aug 2014 at 2:12

Question about Carve's boolean problem

Dear Prof. Fabian,

I noticed that there are some problems in Carve's Boolean operation. I reported 
some issues to here:
https://code.google.com/p/carve/issues/detail?id=79


but it is not responsed for a long time. Could you please help me to take a 
look at it?

I noticed that when two models have very large size difference (for example, 
one is 0.01 meter and the other is 100 meters), the boolean operations would 
fail. Do you have any suggestion to solve this problem?


Thanks,
Tang Laoya


What steps will reproduce the problem?
1.
2.
3.

What is the expected output? What do you see instead?


What version of the product are you using? On what operating system?


Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 8 Jan 2015 at 12:28

API Reference

Where is the API Reference? I can't find the documentation about how to use 
ifcplusplus library.


Original issue reported on code.google.com by [email protected] on 23 May 2014 at 7:19

IFC++ viewer

1) The colour of curve3D entities are not shown in the IFC++ viewer. 

2) IFC++ viewer does not have support for point,  
RepresentationConverter::convertIfcGeometricRepresentationItem() could we add 
case for Ifcpoint?


Thanks :).

Original issue reported on code.google.com by [email protected] on 7 Jan 2015 at 4:03

Some IfcWalls have their normals inside out

What steps will reproduce the problem?
1. Load the attached IfcOpenHouse.ifc file in IFCPlusPlusViewer
2. Turn on the back face culling 


What is the expected output? What do you see instead?

The walls with openings (?) have their normals inside out. IfcRoof, Slabs ... 
are OK (normals pointing out, not influenced by the back face culling)

What version of the product are you using? On what operating system?
r24

Original issue reported on code.google.com by [email protected] on 7 Jan 2014 at 8:25

Attachments:

Instantiation of abstract class

Classes that the Ifc standard declares as abstract are not abstract c++ classes.
This leaves you with the possibility of creating an instance of them.

Should we make the corresponding c++ classes abstract, or am I getting the idee of the ifc-abstract wrong?

Crash when opening acad2010_objects.ifc

What steps will reproduce the problem?
1. Get 
https://github.com/yorikvanhavre/IfcOpenShell/raw/master/test/input/acad2010_obj
ects.ifc
2. Call ReaderWriterIFC::readNode(....)
3. Crash  :-/

What version of the product are you using? On what operating system?
r16, OS X 10.9, Clang

Original issue reported on code.google.com by [email protected] on 13 Dec 2013 at 9:39

Fatal Error during starting of debug version of ifcplusplus library

Visual C++ 2008, SP1.

\IfcPlusPlus\src\ifcpp\reader\IfcStepReader.cpp line 37.

For fixing thi serror may use the following code:

void InitIfcPPEntityEnumList()
{
    if (map_string2entity_enum.empty())
    {
        int n = sizeof(initializers_IfcPP_entity) / sizeof(initializers_IfcPP_entity[0]);
        for(int i = 0; i < n; ++i)
        {
            map_string2entity_enum.insert(initializers_IfcPP_entity[i]);
        }
    }
}

line 113:
    if( keyword.size() > 0 )
    {
        InitIfcPPEntityEnumList();

I attached a fixed IfcStepReqader.cpp file.

Best Regards, Geets Andrey.

Original issue reported on code.google.com by geecandrey on 14 Jun 2013 at 10:53

Attachments:

Linking CXX executable ../Debug/SimpleViewerExample failed under Linux

Hi,

IfcPlusPlus' compilation was OK (I downloaded the last master release), but when Linking CXX executable ../Debug/SimpleViewerExample () I got this error :

Linking CXX executable ../Debug/SimpleViewerExample
/usr/bin/ld: cannot find -lIfcPlusPlusGeometry
collect2: error: ld returned 1 exit status
SimpleViewerExample/CMakeFiles/SimpleViewerExample.dir/build.make:618: recipe for target 'Debug/SimpleViewerExample' failed
make[2]: *** [Debug/SimpleViewerExample] Error 1
CMakeFiles/Makefile2:178: recipe for target 'SimpleViewerExample/CMakeFiles/SimpleViewerExample.dir/all' failed
make[1]: *** [SimpleViewerExample/CMakeFiles/SimpleViewerExample.dir/all] Error 2
Makefile:75: recipe for target 'all' failed
make: *** [all] Error 2

At this point,

find -name geo
./Carve/CMakeFiles/carve.dir/src/common/geometry.cpp.o
./Carve/CMakeFiles/carve.dir/src/lib/geom3d.cpp.o
./Carve/CMakeFiles/carve.dir/src/lib/geom.cpp.o
./Carve/CMakeFiles/carve.dir/src/lib/geom2d.cpp.o
./Carve/src/common/geometry.cpp
./Carve/src/common/geometry.hpp
./Carve/src/common/geom_draw.cpp
./Carve/src/common/geom_draw.hpp
./Carve/src/lib/geom2d.cpp
./Carve/src/lib/geom3d.cpp
./Carve/src/lib/geom.cpp
./Carve/src/include/carve/geom_impl.hpp
./Carve/src/include/carve/geom2d.hpp
./Carve/src/include/carve/geom3d.hpp
./Carve/src/include/carve/geom.hpp
./IfcPlusPlusGeometry/src/ifcppgeometry

It seams to be basic, but I don't know a lot of things on compiling or linking (sorry)...

Can you help me, please ?

Feature Request: need for memory error handler when IFC++ fails loading big IFC files.

IFC++ loading the 288-Mb IFC file has been tested on two PCs. The file can be 
found at http://download2cf.nemetschek.net/www_misc/bim/DCR-LOD_300.zip

The first PC, with 16Gb of RAM, loaded and displayed the IFC file just fine, 
and the other with 4Gb of RAM never completed the loading and got hanging with 
no error messages.

The addition (or, fixing if already present) of an error handler signalling the 
memory issue while loading is needed.

Thanks

Original issue reported on code.google.com by [email protected] on 7 Aug 2014 at 12:14

boolsche Operation führ zum falschen Ergebnis

What steps will reproduce the problem?
1. Datei FJK-Project-Final.ifc laden
2. Die Wand mit der ID #102443 sieht im IfcPlusPlusViewer falsch und im 
FZKViewer richtig aus

What is the expected output? What do you see instead?

eine korrekt getrimmte Wand

Please provide any additional information below.

es liegt wohl an der Methode RepresentationConverter::convertIfcBooleanOperand, 
weil da die (sehr große) Fläche horizontal die Wand abschneidet

Danke!

Original issue reported on code.google.com by barmalej2k11 on 24 Apr 2013 at 1:07

Attachments:

Compiling IFCPlusPlus with VS2015 create huge library

We compiled IFCPlusPlus with VS2015 and size of ifcplusplus.lib is 3 GB. We created a dll for it but still have instability issue.

Do you have plans to make a project in VS2015 to generate a DLL for ifcplusplus library?

A similar issue was reported here.

Missing definition in CMake files

What steps will reproduce the problem?
1. Compile Carve and Ifcplusplus


What is the expected output? What do you see instead?
No errors, but I get lots of compile errors. I think you forgot a CMake 
Definition. In the CMakeLists.txt of the folders Carve, IfcPlusPlus and 
IfcPlusPlusGeometry (and SimpleViewer I guess) you have the line after finding 
boost:

add_definitions(-DCARVE_SYSTEM_BOOST)

But this is missing the HAVE_BOOST_UNORDERED_COLLECTIONS defintion. So changing 
this line to 

add_definitions(-DCARVE_SYSTEM_BOOST -DHAVE_BOOST_UNORDERED_COLLECTIONS)

solves all boost errors.

In addition, in /Carve/src/include/carve/win32.h, line 24:
#  include <carve/cbrt.h>

gives also errors, as cbrt is already defined. I guess you have to move it 
below for an older VS version, or just remove it?

Last thing, somehow the libs are not created, only the dll files. I changed all 
libraries to static and that worked, don't know yet why they are not created.

What version of the product are you using? On what operating system?
CMake 3.0, VS2013 x64




Original issue reported on code.google.com by [email protected] on 9 Jul 2014 at 9:53

IfcPPModel::setIfcSchemaVersion does not affect the output of IfcPPWriterSTEP::writeModelToStream

If i load a IfcPPModel from a file, then alter the version and write that back to a file, the version didn't change. This happens because:

IfcPPModel * ifc_model;
ifc_model->setIfcSchemaVersion(IfcPPModel::IfcPPSchemaVersion(L"IFC2x3", IfcPPModel::IfcPPVersionEnum::IFC2X3));

calls

void IfcPPModel::setIfcSchemaVersion( IfcPPSchemaVersion& ver )
{
    m_ifc_schema_version.m_IFC_FILE_SCHEMA = ver.m_IFC_FILE_SCHEMA.c_str(); // (§1)
    m_ifc_schema_version.m_ifc_file_schema_enum = ver.m_ifc_file_schema_enum; // (§2)
}

but writing the header back to the file

shared_ptr<IfcPPWriterSTEP> writer(new IfcPPWriterSTEP());
std::stringstream ss;
writer->writeModelToStream(ss, ifc_model);

calls encodeStepString(ifc_model-->getFileHeader())

which calls IfcPPModel::getFileHeader() { return m_file_header; } // (§3)

so (§1) and (§2) don't affect (§3).

Compile error with r20


From r20, the file "src/ifcpp/model/IfcPPObjects.h" includes 
"ifcpp/IfcPPTypeEnums.h" when __GNUC__ is defined, but the file cannot be found.


Original issue reported on code.google.com by [email protected] on 28 Dec 2013 at 9:29

Qt Problem within IFC

What steps will reproduce the problem?
Upon compiling the ifcplusplus project with visual basic 2012, I got this error:

Moc'ing IfcTreeWidget.h...
The system cannot find the path specified.



What is the expected output? What do you see instead?
The project didn't compile successfully. 

What version of the product are you using? On what operating system?
I am using qt 5.2.1 with visual studio 2012 on windows 8.1

How can we solve this problem?

Original issue reported on code.google.com by [email protected] on 14 Jul 2014 at 12:19

IFC to webGL with command line

Dear Developer, 

is it possible to create the webgl export with command line only given the 
ifc-File and an output-Directory?

If you need further information you can contact me: [email protected]

Regards

Stefan




Original issue reported on code.google.com by [email protected] on 4 Dec 2014 at 11:10

Some IfcProducts got added to osg::Group twice

What steps will reproduce the problem?
1. Load the file from Issue 17
2. Get the geometry generated as osg::Group, save as file
3. Look at the file using some other software

What is the expected output? What do you see instead?
The beams are added twice. Actually, the same node pointer is added twice, 
because when I rename one of them, the other gets renamed too.


What version of the product are you using? On what operating system?
r25, on Windows

Please provide any additional information below.
* There's a slight chance that this may be related to the cause of Issue 17. My 
guess is that when this file is loaded, both the product_shape 
(ReaderWriterIFC.cpp, Ln 505) and the product_switch_curves 
(ReaderWriterIFC.cpp, Ln 521) are valid.


Original issue reported on code.google.com by [email protected] on 20 Aug 2014 at 7:09

Make viewer optional

Hi

I see you added the Cmake files, thank you very much. One improvement would be 
to make the SimpleViewer optional, as I integrate IFC in my CMake build process 
by EXTERNALPROJECT_ADD. So as I have my own application and don't use Qt, I 
need a way to only build the framework. The easiest would be to introduce an 
option for the viewer. This would look like this in your root CMakeLists.txt:

...
ENDIF(NOT CARVE_BINARY_DIR)
message(STATUS   
"------------------------------------------------------------------------")

OPTION(BUILD_SIMPLEVIEWER "Build the simple viewer example applilcation" ON)

add_subdirectory (Carve)
add_subdirectory (IfcPlusPlus)
add_subdirectory (IfcPlusPlusGeometry)
IF(BUILD_SIMPLEVIEWER)
    add_subdirectory (SimpleViewer)
ENDIF()

Would it be possible to integrate this (or something similar)?

Thanks for the great work

Original issue reported on code.google.com by [email protected] on 8 Jul 2014 at 12:21

Incorrect mesh generation of IfcRevolvedAreaSolid when using a hollow profile

As I mentioned above, Ifc++ generates wrong shape (mesh) of IfcRevolvedAreaSolid when a polygon with an inner hole is used as its profile. When running in Debug mode (using MSVC 2010 on Windows 7), it crashes due to incorrect index of the vertices.

When I look into the source, in triangulator.cpp of CARVE library, it seems function incorporateHolesIntoPolygon() is the cause of the problem:

void
carve::triangulate::incorporateHolesIntoPolygon(
const std::vectorstd::vector<carve::geom2d::P2 > &poly,
std::vector<std::pair<size_t, size_t> > &result,
size_t poly_loop,
const std::vector<size_t> &hole_loops) {
typedef std::vectorcarve::geom2d::P2 loop_t;

size_t N = poly[poly_loop].size();

// work out how much space to reserve for the patched in holes.
for (size_t i = 0; i < hole_loops.size(); i++) {
N += 2 + poly[hole_loops[i]].size();
}

...

}

in the for loop, It seems to me that the number '2' in the right-hand side of the variable N is Euler's number, which is v-e+f = 2 -2g. In this case, where the profile has a hole in it, the number should be 0, not 2, because g is 1. Is that right?

In my sample .ifc file, entity #605337 is the one having the symptom I'm describing.

For the sample .ifc file, please download it from the link below:
https://drive.google.com/file/d/0B--Amqgu71ncRUN1T2lmQjFkUk0/view?usp=sharing

Dumb question -- building in Windows

I was trying to compile the library on windows, and I think that just setting 
the environment variables according to 
https://code.google.com/p/ifcplusplus/wiki/BuildInstructions won't be enough to 
make MS VS find the libraries. Is there some official additional steps for 
building?

What steps will reproduce the problem?
1. download openscenegraph and compile with MS visual studio express 2013
2. download cgal, qt etc
3. set environment variables like 
https://code.google.com/p/ifcplusplus/wiki/BuildInstructions and run visual 
studio and build solution

What is the expected output? What do you see instead?
VS complains about not being able to find include files. I added the 
environment variables to the project properties, additional include libraries. 
But when compiling SimpleViewer it still tries to find Qt under D:\lib\... 
instead of where I specified (C:\Qt\...). I can't find where to change this.


What version of the product are you using? On what operating system?
r25, on Windows 7 with MS visual studio express 2013

Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 8 Aug 2014 at 6:50

Issue with a CSG IFCWALLSTANDARDCASE

Hello,
The attached IFCWALLSTANDARDCASE opens correctly in Solibri Model Viewer but 
converts to a huuuge wall when using IFCPlusPlus. I guess the CSG operation to 
stamp a side of the wall (see attached picture) is not correctly handled ?
Can you provide some hints (or a fix ? :-) ) to handle this problem?
Thank you in advance !
Sylvain

Original issue reported on code.google.com by [email protected] on 10 Dec 2013 at 8:37

Attachments:

Missing windows, misplaced lines for Digital210King

What steps will reproduce the problem?
1. Opening the nice model of Digital210King:  
http://www.digital210king.org/downloader.php?file=16

What is the expected output? What do you see instead?
I attached a screenshot from Solibri showing the expected result.
Instead, a set of windows is missing (top floor), and lines are misplaced 
(popping up through the roof)

What version of the product are you using? On what operating system?
Using https://github.com/VTREEM/IFCPlusPlus2 based on revision trunk/20, on OS 
X.


Original issue reported on code.google.com by [email protected] on 5 Aug 2014 at 8:06

Attachments:

Crash - regression from R20 to R27

What steps will reproduce the problem?
1. Open the supplied v12_extract.ifc file
2. Crash with IFCPP R27, not with R20 (R24 modified RepresentationConverter.cpp 
could be the cause?)

What is the expected output? What do you see instead?

IFCPPSimpleViewer R20 didn't crash (but didn't handle an opening), R27 crashes.

What version of the product are you using? On what operating system?

Using the github repo based on R27.

Original issue reported on code.google.com by [email protected] on 22 Aug 2014 at 9:05

Attachments:

Writing of IFC2X3 TC1 and ifcXML2X3 TC1

Hi,

the IfcPlusPlus-library hosted at github only supports reading of IFC2X3 TC1. In my case I need to write IFC2X3 TC1. STEP-format is mandatory and XML-format would be nice.

The old version hosted at googlecode.com using Subversion (last revision 52 and last modification on 30. April 2015) provides the needed IfcExtender-application. At github I can't find this application to generate "my own" IfcPlusPlus :-(

Is there another way of writing IFC2X3 TC1 documents instead of using IFC4?

Thanks in advance.

Problems converting an ifcDoor

What steps will reproduce the problem?
1. convert the provided door.ifc file

What is the expected output? What do you see instead?
Solibri opens the file correctly (picture1). Instead, normals seem to be 
inverted, and the wall thickness is wrong (picture2).

What version of the product are you using? On what operating system?
I'm using https://github.com/VTREEM/IFCPlusPlus which is based on r19/SVN

Original issue reported on code.google.com by [email protected] on 16 Dec 2013 at 11:45

Attachments:

Performance issue

What steps will reproduce the problem?
1. During Loading some IFC files.

What is the expected output? What do you see instead?
Slow performance during loading IFC files and destroying 
std::map<int, shared_ptr<IfcPPEntity>

What version of the product are you using? On what operating system?

I use old version of ifcplusplus, that doesn't support C++ 11, because the 
project using Visual C++ 2008 compiler.
Project was tested on Windows 7 x64

Please provide any additional information below.

Hi, thank you for this library!

I tried to research the performance issue of ifcpluplus library. I'm using AMD 
Code XL 1.9.

1. I replaced std::map<int, shared_ptr<IfcPPEntity> to 
boost::container::flat_map<int, shared_ptr<IfcPPEntity> >. Also, may replace to 
boost::unordered_map<int, shared_ptr<IfcPPEntity> >.

std::map and boost::container::flat_map have the identical O(1) complexity, but 
std::map have the very big cache miss and memory allocations.

2. Also for boost::shared_ptr may to add some macros.

src\ifcpp\model\shared_ptr.h:

#ifndef BOOST_SP_DISABLE_THREADS
#define BOOST_SP_DISABLE_THREADS
#endif
#ifndef BOOST_SP_USE_QUICK_ALLOCATOR
#define BOOST_SP_USE_QUICK_ALLOCATOR
#endif
#ifndef BOOST_SP_NO_ATOMIC_ACCESS
#define BOOST_SP_NO_ATOMIC_ACCESS
#endi

BOOST_SP_USE_QUICK_ALLOCATOR - using for fast allocations.
BOOST_SP_DISABLE_THREADS/BOOST_SP_NO_ATOMIC_ACCESS - if using single thread for 
loading

I attached the edited version of ifcplusplus library. You can use it for the 
future versions. Thanks!

Original issue reported on code.google.com by geecandrey on 11 Feb 2015 at 2:46

Attachments:

[Fix] Regression in R27

(sorry this is not issue, but I don't see an easy way to submit patches?)

Please find a commit in 
https://github.com/VTREEM/IFCPlusPlus2/commit/d0173a55ddaf22ed6a5ec87e442f8c30a4
9bc822 to fix a regression in R27.


Original issue reported on code.google.com by [email protected] on 22 Aug 2014 at 9:08

fails to compile on Ubuntu 14.04

What steps will reproduce the problem?
1. Install Ubuntu 14.04
2. Install prerequisites for compiling ifcpluplus
3. Try to compile ifcplusplus

What is the expected output? What do you see instead?
I expect the to program to compile nicely.

Left with this qt linking problem after solving other compile stopping bugs.

Linking CXX executable ../Release/IfcPlusPlusViewer
CMakeFiles/IfcPlusPlusViewer.dir/src/IfcPlusPlusSystem.cpp.o: In function 
`IfcPlusPlusSystem::IfcPlusPlusSystem()':
IfcPlusPlusSystem.cpp:(.text+0x6fa): undefined reference to 
`ReaderWriterIFC::ReaderWriterIFC()'
IfcPlusPlusSystem.cpp:(.text+0x812): undefined reference to 
`ReaderWriterIFC::~ReaderWriterIFC()'
CMakeFiles/IfcPlusPlusViewer.dir/src/IfcPlusPlusSystem.cpp.o: In function 
`IfcPlusPlusSystem::IfcPlusPlusSystem()':
IfcPlusPlusSystem.cpp:(.text+0xb1b): undefined reference to 
`ReaderWriterIFC::ReaderWriterIFC()'
IfcPlusPlusSystem.cpp:(.text+0xc90): undefined reference to 
`ReaderWriterIFC::~ReaderWriterIFC()'
CMakeFiles/IfcPlusPlusViewer.dir/src/IfcPlusPlusSystem.cpp.o: In function 
`std::tr1::_Sp_counted_base_impl<ReaderWriterIFC*, 
std::tr1::_Sp_deleter<ReaderWriterIFC>, 
(__gnu_cxx::_Lock_policy)2>::_M_dispose()':
IfcPlusPlusSystem.cpp:(.text._ZNSt3tr121_Sp_counted_base_implIP15ReaderWriterIFC
NS_11_Sp_deleterIS1_EELN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv[_ZNSt3tr121_S
p_counted_base_implIP15ReaderWriterIFCNS_11_Sp_deleterIS1_EELN9__gnu_cxx12_Lock_
policyE2EE10_M_disposeEv]+0xe): undefined reference to 
`ReaderWriterIFC::~ReaderWriterIFC()'
CMakeFiles/IfcPlusPlusViewer.dir/src/ViewController.cpp.o: In function 
`ViewController::setViewerMode(ViewController::ViewerMode)':
ViewController.cpp:(.text+0x2a9): undefined reference to 
`GeomUtils::WireFrameModeOff(osg::Node*)'
ViewController.cpp:(.text+0x2c1): undefined reference to 
`GeomUtils::HiddenLineModeOff(osg::Group*)'
CMakeFiles/IfcPlusPlusViewer.dir/src/ViewController.cpp.o: In function 
`ViewController::ViewController()':
ViewController.cpp:(.text+0xaf6): undefined reference to 
`GeomUtils::createCoordinateAxes()'
ViewController.cpp:(.text+0xb29): undefined reference to 
`GeomUtils::createCoordinateAxesArrows()'
CMakeFiles/IfcPlusPlusViewer.dir/src/ViewController.cpp.o: In function 
`ViewController::setViewerMode(ViewController::ViewerMode)':
ViewController.cpp:(.text+0x29a): undefined reference to 
`GeomUtils::HiddenLineModeOn(osg::Group*)'
ViewController.cpp:(.text+0x2da): undefined reference to 
`GeomUtils::WireFrameModeOn(osg::Node*)'
CMakeFiles/IfcPlusPlusViewer.dir/src/cmd/CmdWriteIfcFile.cpp.o: In function 
`CmdWriteIfcFile::doCmd()':
CmdWriteIfcFile.cpp:(.text+0x408): undefined reference to 
`IfcPPModel::initFileHeader(std::string)'
CMakeFiles/IfcPlusPlusViewer.dir/src/cmd/LoadIfcFileCommand.cpp.o: In function 
`LoadIfcFileCommand::doCmd()':
LoadIfcFileCommand.cpp:(.text+0xf2): undefined reference to 
`ReaderWriterIFC::resetModel()'
LoadIfcFileCommand.cpp:(.text+0xf9): undefined reference to `carve::EPSILON'
LoadIfcFileCommand.cpp:(.text+0x121): undefined reference to `carve::EPSILON2'
LoadIfcFileCommand.cpp:(.text+0x2e3): undefined reference to 
`ReaderWriterIFC::loadModelFromFile(std::string const&)'
LoadIfcFileCommand.cpp:(.text+0x2ff): undefined reference to 
`ReaderWriterIFC::createGeometryOSG(osg::ref_ptr<osg::Switch>)'
LoadIfcFileCommand.cpp:(.text+0x41f): undefined reference to 
`ReaderWriterIFC::clearInputCache()'
LoadIfcFileCommand.cpp:(.text+0x62c): undefined reference to 
`GeomUtils::applyTranslate(osg::Group*, osg::Vec3f const&, 
std::unordered_set<osg::Geode*, int>&)'
CMakeFiles/IfcPlusPlusViewer.dir/src/gui/IfcTreeWidget.cpp.o: In function 
`resolveTreeItems(std::tr1::shared_ptr<IfcPPObject>, std::set<int, 
std::less<int>, std::allocator<int> >&)':
IfcTreeWidget.cpp:(.text+0x816): undefined reference to `typeinfo for 
IfcObjectDefinition'
IfcTreeWidget.cpp:(.text+0xb09): undefined reference to `typeinfo for 
IfcSpatialStructureElement'
IfcTreeWidget.cpp:(.text+0xb12): undefined reference to `typeinfo for 
IfcObjectDefinition'
CMakeFiles/IfcPlusPlusViewer.dir/src/gui/IfcTreeWidget.cpp.o: In function 
`IfcTreeWidget::slotModelLoadingDone()':
IfcTreeWidget.cpp:(.text+0xf61): undefined reference to 
`IfcPPModel::getIfcProject()'
CMakeFiles/IfcPlusPlusViewer.dir/src/gui/TabView.cpp.o: In function 
`TabView::TabView(IfcPlusPlusSystem*, ViewerWidget*)':
TabView.cpp:(.text+0x2a7): undefined reference to 
`GeomUtils::cullFrontBack(bool, bool, osg::StateSet*)'
CMakeFiles/IfcPlusPlusViewer.dir/src/gui/TabView.cpp.o: In function 
`TabView::slotCullFrontFaces(int)':
TabView.cpp:(.text+0xcfb): undefined reference to 
`GeomUtils::cullFrontBack(bool, bool, osg::StateSet*)'
CMakeFiles/IfcPlusPlusViewer.dir/src/gui/TabView.cpp.o: In function 
`TabView::slotCullBackFaces(int)':
TabView.cpp:(.text+0xe6b): undefined reference to 
`GeomUtils::cullFrontBack(bool, bool, osg::StateSet*)'
collect2: error: ld returned 1 exit status
make[2]: *** [Release/IfcPlusPlusViewer] Error 1
make[1]: *** [SimpleViewer/CMakeFiles/IfcPlusPlusViewer.dir/all] Error 2
make: *** [all] Error 2

What version of the product are you using? On what operating system?
Ubuntu 14.04
ifcplusplus latest

Please provide any additional information below.

Please ask if more details necessary.

Regards

Original issue reported on code.google.com by [email protected] on 25 Nov 2014 at 6:35

Timestamp from int to unsigned int.

In IfcTImeStamp.h

Could you please kindly change the timestamp value from int to unsigned int?

Thanks:)

        IfcTimeStamp( int value );// to unsigned int.
    int m_value;  // to unsigned int.

Original issue reported on code.google.com by [email protected] on 7 Jan 2015 at 3:58

Non VC-project files?

While the project seems to be set up to be platform independent, there are only 
Visual Studio project files available. It would make it easier for porting to 
e.g. OSX or Linux, to use CMake or qmake project files available.

Original issue reported on code.google.com by [email protected] on 13 May 2013 at 11:26

IFC++ viewer : Choose file dialog is unusable on Ubuntu 14.04

What steps will reproduce the problem?
1.Launch IFC++ Viewer
2.Clic on Choose file button
3.File dialog is empty or half.

What is the expected output? What do you see instead?
It is expected to have an usable FileDialog, instead I see an empty dialog or 
half.
See last link for screenshot.

What version of the product are you using? On what operating system?
I have IFC++ compiled myself from the master branch of Bernd github : 
https://github.com/berndhahnebach/IFCPlusPlus
It have to be the R42 branch of ifc++.
My OS is Ubuntu 14.04, 64bits, Unity.

Please provide any additional information below.
The problem is exactly the same of this (as user point of view) : 
http://stackoverflow.com/questions/14991205/qt5-openfiledialog-behaves-strange-o
n-gnome3
Too bad that there is no answer.

Original issue reported on code.google.com by [email protected] on 8 Jan 2015 at 2:33

SI unit length metric without prefix should be valid

SI unit for metric length should be valid even if there is no "IfcSIPrefix" as 
it is optional. If it is not there then unit scale factor of 1.0 should be 
valid.

In UnitConvrter.cpp in function 
void UnitConverter::setIfcProject(shared_ptr<IfcProject> project)()
{
..
..
..
if( unit_type->m_enum == IfcUnitEnum::ENUM_LENGTHUNIT )
{
    if( si_unit->m_Prefix )
   {
    ...
    ...
     length_factor_found = true;  // Move this outside of this scope
   }

  length_factor_found = true;  // Should be here
}
..
..
..
}


..
..
..
}

Original issue reported on code.google.com by [email protected] on 8 Jan 2015 at 3:58

Remove Boost from repository

Hi

Would it be possible to remove the boost library from the repository? I guess a 
lot of people who use ifc++ already have a boost version, so it would be easier 
to use it as an external dependency or something like that.

Thanks
Robert

Original issue reported on code.google.com by [email protected] on 19 Jan 2014 at 4:51

Fixed notation instead of scientific

When double/float values are written to the .ifc as scientific notation seems 
to upset a few IFC viewer. For instance, DDS-CAD viewer will throw an error and 
does not show anything. 

Could we please kindly use Fixed notation instead? 

Thanks :)

void IfcPPWriterSTEP::writeModelToStream( std::stringstream& stream, 
shared_ptr<IfcPPModel> model )
{
.
.
.

    stream << std::setprecision( 15 );
    stream << std::setiosflags( std::ios::showpoint );

       stream <<  std::fixed;            // Could we add this?
.
.
.

}



Original issue reported on code.google.com by [email protected] on 7 Jan 2015 at 3:54

IfcPPWriterSTEP::writeStream- std::ios::showpoint

What steps will reproduce the problem?
1.Create a step writer. 
2. check the .ifc file after the header there is unexpected number "16"



stream << std::ios::showpoint; // This will print out the value of the enum 
which happens to be "16"

should be 

stream << std::setiosflags(std::ios::showpoint)


Original issue reported on code.google.com by [email protected] on 17 Dec 2014 at 12:46

Feature Request: add STEP numbers next to each fail in the Read/Write IFC Tab.

I currently get an anonymized list of errors in the Read/Write IFC tab, like:

Error: convertIfcBooleanOperand problems in extrude: poly_data->points.size() 
!= 2*polygonal_boundary.size()
convertIfcBooleanOperand problems in extrude: poly_data->points.size() != 
2*polygonal_boundary.size()
convertIfcBooleanOperand problems in extrude: poly_data->points.size() != 
2*polygonal_boundary.size()
convertIfcBooleanOperand problems in extrude: poly_data->points.size() != 
2*polygonal_boundary.size()
convertIfcBooleanOperand problems in extrude: poly_data->points.size() != 
2*polygonal_boundary.size()
...

By knowing the STEP numbers, where each fail occurs, I could extract only the 
offending IFC snippets and attach them to future logs.

Thanks

Original issue reported on code.google.com by [email protected] on 5 Aug 2014 at 2:43

Rendering result incorrect for I-beams in ubuntu

What steps will reproduce the problem?
1. Under Ubuntu 12.04, compile using cmake
2. Load the attached ifc file


What is the expected output? What do you see instead?
Output is attached (Screenshot_ubuntu.png). Expected output is also attached 
(Screenshot_windows.png). It is produced by loading the same file using the 
windows version (http://www.ifcplusplus.com/download/IfcPlusPlusViewer.zip)

What version of the product are you using? On what operating system?
r23 on Ubuntu 12.04

Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 4 Aug 2014 at 6:18

Attachments:

bin32.obj

I build the ifcplusplus project, after lots of difficulties on installing the lib and other including files, there is also one problem: LNK1104 can not open file “F:\Program Files (x86)\ifcplusplus-master-ifcquery\IfcPlusPlus\bin32.obj”
So, my question is the "bin32.obj" is what file? It seems not like kind of existing including file.

We Need non const method IfcPPModel::getMapIfcObjects(), or metod IfcStepReader::readStreamData(std::string&, shared_ptr<IfcPPModel>)

We need to load BIM model in two steps.

1) read IFC Header
2) read stream data.

Code example:

typedef std::map<int, shared_ptr<IfcPPEntity> > mapIfcPPEntity_t;
mapIfcPPEntity_t map_entity;
shared_ptr<IfcPPModel> ifc_model(new IfcPPModel);
IfcStepReader read; 
read.readStreamHeader(buffer, ifc_model); // 1)
read.readStreamData(buffer, map_entity); // 2)

After that, need to copy map_entity into ifc_model. 

mapIfcPPEntity_t::iterator it = map_entities.begin();

for(; it != map_entities.end(); ++it)
{       
    ifc_model->insertEntity(it->second);
}

Why do it? This code may be cause of a low performance loading.

I offer 2 ways to resolve this issue;

1) Add a "non const" method 
std::map<int,shared_ptr<IfcPPEntity> >& getMapIfcObjects() { return 
m_map_entities; }

Then we can use this code:

read.readStreamData(buffer, ifc_model->->getMapIfcObjects());

2) Add a new method

void IfcStepReader::readStreamData(std::string& in, shared_ptr<IfcPPModel> 
model); 

Best regards Andrey Geets

Original issue reported on code.google.com by geecandrey on 6 Aug 2014 at 12:30

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.