Commit Graph

733 Commits

Author SHA1 Message Date
tymokvo e06105e878 added some documentation/examples 2017-12-06 12:20:22 +01:00
Anders Granskogen Bjørnstad 34e2ff31bb SvgSerializer: Fix bug in ellipse writeout
Add a missing "=" to create a valid SVG for ellipses.

I accidentally stumbled upon a way to actually get an ellipse in SVG by
tilting a cylinder. If I tilt the cylinder via the `ObjectPlacement` of
the `IfcProduct` I get an ellipse. If I set the `ExtrudedDirection` of
the `IfcExtrudedAreasolid`, however, I get a sampled path.
2017-12-04 17:23:32 +01:00
Thomas Krijnen c0a2e3395f Triangulate non-planar wires when invoked with --sew-shells 2017-11-27 16:27:36 +01:00
Thomas Krijnen 7cd354ee7d Eliminate warning 2017-11-27 16:24:29 +01:00
Thomas Krijnen 111569ec1b Approx other curve types in SVG, hollow circles 2017-11-25 13:08:34 +01:00
Anders Granskogen Bjørnstad 9c88a35173 SvgSerializer: Support full circles and ellipses
Use <circle> and <ellipse> to create a valid SVG for these geometries.

Limit to only the *first* edge. I am not sure whether there are
scenarios with multiple edges like this:
1. One or more straight line pieces or arc segments
2. A full closed circle
3. More straight lines or arc segments

If there is, we are keeping the original behavior here.
2017-11-25 13:06:03 +01:00
Anders Granskogen Bjørnstad df942f6460 SvgSerializer: Fix bounding box for arc segments
Not necessarily minimal, but better to be conservative w.r.t. getting
all geometry inside bounds.
2017-11-25 13:06:03 +01:00
Anders Granskogen Bjørnstad 7de877823b SvgSerializer: Add closed circle warning
Only refactoring, adding a warning.
2017-11-25 13:06:03 +01:00
Thomas Krijnen 6463690a8b Fix typo 2017-11-13 13:01:59 +01:00
Thomas Krijnen 148432c011 Fixes for boolean ops on recent OCCT versions 2017-11-13 12:41:37 +01:00
Anders Granskogen Bjørnstad 478da8f658 IfcConvert: Add section-height argument for SVG
Enabling user specified overriding the default (zmin + 1 meter) value.
2017-11-11 10:02:41 +01:00
Anders Granskogen Bjørnstad 9be413a308 SvgSerializer: Use storey elevation if available
For the scenario where we a building storey and it has an elevation:
Instead taking the cross section of every product 1 meter above it's
lowest, take the cross section at storey elevation + 1 meter.
2017-11-11 10:02:41 +01:00
Anders Granskogen Bjørnstad a9606b3044 SvgSerializer: Name storeys properly too
- Fix correct "storey-" prefix for stories
- Follow user settings on names/guids/notset
2017-11-11 10:02:41 +01:00
Anders Granskogen Bjørnstad c419885329 SvgSerializer: Fix error message logic
If we have no storeys *and* we didn't find any suitable fall-back, then
the error message makes sense.
2017-11-11 10:02:41 +01:00
civilx64 b6b41e920f Create docstrings for generated python code. 2017-11-08 13:29:09 +01:00
Thomas Krijnen b7ce547a0c Fill holes in composite curves, fixes #282 2017-11-08 13:27:45 +01:00
thorade 6cd59aa121 autopep8 aggressive
autopep8 --in-place --recursive  --max-line-length=200 --aggressive --aggressive --aggressive ifcopenshell
2017-11-07 15:28:45 +01:00
thorade 8439e5b46d autopep8
autopep8 --in-place --recursive  --max-line-length=200 ifcopenshell
2017-11-07 15:28:45 +01:00
thorade 6bffee83fe identical from __future__ import in ALL py files 2017-11-05 16:17:27 +01:00
Anders Granskogen Bjørnstad f3e20ae450 geom/app.py: ConfigParser py2/py3 fix
When running the viewer app in python3, I got the following crash:
Traceback (most recent call last):
  File "geom_app.py", line 2, in <module>
    ifcopenshell.geom.app.application().start()
  File "/usr/lib/python3/dist-packages/ifcopenshell/geom/app.py", line 534, in __init__
    self.editor = code_edit(self.canvas, configuration().options('snippets'))
  File "/usr/lib/python3/dist-packages/ifcopenshell/geom/app.py", line 68, in __init__
    config = Cfg()
TypeError: 'ConfigParser' object is not callable

Unify configparser usage for py2 and py3 by making sure the py3 path
also gives a callable Cfg
2017-11-05 16:16:49 +01:00
Matthis Thorade afce8b37c4 py 2 and 3
http://python3porting.com/noconv.html#handling-exceptions

this is the first error i get when i try to start th eviewer from python 3
using the two-line from https://github.com/IfcOpenShell/IfcOpenShell/commit/1d1fb6d27a5bb1f221aed4dc290c1dc99a324e0f#commitcomment-17161165
2017-10-30 10:31:35 +01:00
Thomas Krijnen f64246f7c5 Use building or site placement for SVG section height if file has no storeys 2017-10-23 14:17:54 +02:00
Thomas Krijnen c5495d83e4 Invalid empty SVG file 2017-10-23 13:58:07 +02:00
Thomas Krijnen 095801faa1 Fix warning 2017-10-23 13:47:37 +02:00
Thomas Krijnen 07954122fb Fix #275 2017-10-23 13:32:57 +02:00
Campbell Barton 0429e765b5 Validate mesh input
This report comes from a but reported to Blender, where invalid geometry is apparently created by this importer.

https://developer.blender.org/T52921
2017-10-15 12:32:49 +02:00
Thomas Krijnen 33220fa78c Update python module install script 2017-10-06 16:37:22 +02:00
Thomas Krijnen effcecc75f ifcopenshell.template.create() 2017-10-06 16:05:55 +02:00
Thomas Krijnen 85f872d3b8 ifcopenshell.guid.new() 2017-10-06 16:03:04 +02:00
Thomas Krijnen f3b3e2a441 More meaningful error message setting attributes in python 2017-10-06 16:02:34 +02:00
Thomas Krijnen 25d68d320d Remove auto keyword 2017-10-06 16:01:18 +02:00
Matthis Thorade c38ac108cc basestring for py3
this closes #262
2017-10-06 15:49:19 +02:00
Anders Granskogen Bjørnstad d14d63dd5c IfcConvert: Fix bug with --bounds for SVG
`if(bounding_width)` evaluates to true as long as `bounding_width` is
non-zero (including negative values). Since `bounding_width` and
`bounding_height` are default initialized to -1.0, we were erroneously
setting a bounding rectangle of (-1.0, -1.0) here. This means the SVG
output has been broken/malformed if we didn't specify --bounds.
2017-10-06 15:49:07 +02:00
Thomas Krijnen 6c4fee1028 Color elements by material association. Reimplement reuse detection. Fix #265 2017-10-06 15:36:51 +02:00
Thomas Krijnen 688a652bc1 Fix #261 2017-09-25 14:57:49 +02:00
Thomas Krijnen 8c26037f84 Fix null dereference 2017-09-17 20:22:29 +02:00
Thomas Krijnen 96ec925f31 Spatial Querying: Implementation of BVH tree for IFC files using NCollection_UBTree (#130)
* Implementation of BVH tree for IFC files using NCollection_UBTree

* Fixes for gcc and OCCT < v6.8

* Enable BVH selection by TopoDS_Shape

* Small fixes to tree

* Merge conflicted files and other changes

* Eliminate one warning (some remain) + add tree test
2017-09-13 13:16:58 +02:00
Thomas Krijnen 4f31b9467a Fix #248 2017-09-10 16:59:05 +02:00
elmir f6645b19ef don't assign ID to Simple types
When adding entities, don't assign ID to Simple types.
Otherwise that type will be serialized incorrectly.

This fixes the issue with IFCPLANEANGLEMEASURE being serilzed
incorrectly when used as attribute to IFCMEASUREWITHUNIT.

With ID assigned, it will look like this:

  #10=IFCMEASUREWITHUNIT(#9=IFCPLANEANGLEMEASURE(0.017453293),#8);

The correct way to serialze is:

  #10=IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.017453293),#8);
2017-09-09 14:00:57 +02:00
Thomas Krijnen f2dbf7d063 Improve composite curve error message 2017-09-09 13:29:39 +02:00
Thomas Krijnen 49e5f2944c Rebuild generated source files 2017-09-08 17:26:24 +02:00
youaresoomean fae9661efd Update IfcParse.h (#256) 2017-09-08 17:18:11 +02:00
youaresoomean b90b39a894 Update templates.py 2017-09-08 17:17:50 +02:00
Stinkfist0 c7c5e692d3 IfcConvert --version: print also OCC version. 2017-08-27 16:11:54 +02:00
Thomas Krijnen 430ab54602 ifcopenshell.file.from_string() 2017-08-22 10:16:07 +02:00
Luke Brooks 08522c9fd7 ifcopenshell.file.from_string() (#246) 2017-08-22 10:15:02 +02:00
Anders Granskogen Bjørnstad 475b8554a8 Site local placement (#240)
* ifcgeom: Add placement_rel_to for convert()

Change geometry conversion in `convert()` for `ObjectPlacement` such
that we can stop the `PlacementRelTo()` recursion when we hit an
`ObjectPlacement` that places a certain type, e.g. a `IfcSite'.

Introduce a new IteratorSetting `SITE_LOCAL_PLACEMENT` which will be
exposed in `IfcConvert`.

* IfcConvert: Add --site-local-placement

Some IFC authoring tools may put the global origo at a large distance
away from the actual building geometry. Also, the global X- and Y-axes
may be at arbitrary angles with natural building axes. Using
--center-model or --model-offset may place the converted geometry closer
to origo, but will still use the global IFC definition of axis
directions. Also, in a scenario with multiple IFC files for one
construction site, using --center-model on each of them would not
generate consistent geometry across OBJ or DAE files.

Solve this by introducing --site-local-placement which will disregard
the ObjectPlacement at the IfcSite level.
2017-08-19 17:21:10 +02:00
Thomas Krijnen 7bea054c1e get_log in python 2017-08-19 16:54:06 +02:00
Thomas Krijnen 490c35bf60 Fix #244 and provide instances by entity type without subtypes 2017-08-16 21:46:39 +02:00
Thomas Krijnen ebfe8f9c54 Take into account Position is optional in IFC4 when processing layersets on slabs 2017-08-09 17:01:10 +02:00