Compare commits

...

5870 Commits

Author SHA1 Message Date
fbpyr 10bde73c1a choco nightly path (#2498)
* fix choco nightly scripts path

* fix choco nightly scripts path
2022-10-14 17:16:50 +11:00
Massimo Fabbro 670399f327 Add gross volume calculation (#2487)
* Now gross volume calculation doesn't consider related voids

* Qto gross volume calculation minor fixes

* No need to create a new entity and better mesh creation

* Use bmesh to calculate volume so it's not necessary to create a new object
2022-10-14 16:50:04 +11:00
Dion Moult 241c5b1f48 Fix bug where unnamed types didn't show up in the UI. 2022-10-14 10:08:52 +11:00
Dion Moult 9ef3b4389b Change pip name to ifcopenshell. See #2468. 2022-10-14 08:25:15 +11:00
Dion Moult 2d37d3c914 More robust type switching of parametric objects 2022-10-13 22:51:06 +11:00
Thomas Krijnen ede9c5fca5 Fixes to svgfill/cgal/mpfr/gmp for -shared build on nix 2022-10-13 09:52:22 +02:00
Thomas Krijnen 4cccfd08d3 #671 check for zero magnitude vector in newells method 2022-10-13 09:34:14 +02:00
Thomas Krijnen 153c5a06e7 #671 use new faceset_helper api in IfcFace 2022-10-13 09:22:49 +02:00
Thomas Krijnen 9a4d3e706a #671 api in faceset_helper to obtain multiple bounds from single loop in case of intersections 2022-10-13 09:22:28 +02:00
Thomas Krijnen 0b20d3ae2c #671 correct check for NO_WIRE_INTERSECTION_CHECK setting 2022-10-13 09:21:50 +02:00
Thomas Krijnen 92fb46558f #671 perform fix on wires after wire_intersections() 2022-10-13 09:20:44 +02:00
Dion Moult 8be1a913ec Basic support for mesh booleans 2022-10-13 17:04:53 +11:00
Dion Moult c354de7b83 Minor fix 2022-10-13 11:50:33 +11:00
Dion Moult 19b718cdf5 Thumbnails auto load when projects are loaded. 2022-10-13 10:19:09 +11:00
Dion Moult cdffeba4cc Map units are now supported in converting to and from local to global coordinates 2022-10-12 20:32:16 +11:00
fbpyr e6e8db8a00 choco yesterday (#2495)
* fix check for available bbim releases yesterday

* fix check yesterday bbim releases after midnight

* fix check all releases url
2022-10-12 17:39:50 +11:00
Thomas Krijnen 8dab1810c7 #2486 #1861 Don't fail on overwriting header values 2022-10-11 10:48:53 +02:00
Dion Moult c5c9a192b0 You can now duplicate existing types in the type manager 2022-10-11 17:51:01 +11:00
Dion Moult 4279576d3c Type manager can now browse to type classes that don't have any types yet 2022-10-11 17:34:17 +11:00
Dion Moult dff35c173d You can now delete a type when managing types 2022-10-11 15:31:31 +11:00
Dion Moult 38f563d4f4 New timerless thumbnailed type manager. 2022-10-11 13:49:46 +11:00
Dion Moult 36fdd3f7fc Bundle pillow as dependency for thumbnail generator 2022-10-11 10:54:08 +11:00
fbpyr 47e0ec43c2 fix get sha256sum directly from release download (#2493) 2022-10-11 09:40:00 +11:00
Thomas Krijnen 0446fca56a --json --spf option in validate.py 2022-10-10 14:25:45 +02:00
Thomas Krijnen 785dc2a300 Test case for string formatting 2022-10-10 14:20:21 +02:00
Thomas Krijnen 64ff046e96 #2482 Use u32string for character encoder, remove CODECVT_BOOST_FALLBACK 2022-10-10 14:19:42 +02:00
Dion Moult 16582cf57f Experimental new thumbnail with smarter layer / profile thumbnails and no timers. 2022-10-10 23:13:37 +11:00
Dion Moult a5517071cc Make remove opening more accessible in UI and refactor 2022-10-10 11:45:50 +11:00
Gorgious 5d5ab3dafd Fix bad indenting in last commit
Sorry, I'm a bit rusty !
2022-10-09 22:05:56 +02:00
Gorgious ccfbeab51e Creating a wall with a IfcMaterialLayerSet with the BIM tool now makes it active (yellow outline)
+ deduplicate code under new function
2022-10-09 22:04:01 +02:00
Dion Moult c9214bf04a The BIM Tool workspace now intelligently reflects the active object 2022-10-09 23:51:40 +11:00
Dion Moult 492a535312 You can now set a fixed RL for inserted windows 2022-10-09 23:29:06 +11:00
Dion Moult 278931f5db Minor fix 2022-10-09 22:40:20 +11:00
Dion Moult d847f358ba Minor fix 2022-10-09 22:26:38 +11:00
Dion Moult ab31fd7e48 Copying filled openings is now possible. 2022-10-09 22:25:55 +11:00
Dion Moult 32f0911479 Elements with filled openings don't have their openings copied, as it depends on the fill 2022-10-09 22:22:12 +11:00
Dion Moult bdbd874fa8 Fix #2488. Copying objects now copy deep instead of adding afresh (and losing parametric data and openings). 2022-10-09 18:09:22 +11:00
Dion Moult 232252f61d Copy deep can now exclude things, useful for copying representation graphs where you don't want to duplicate the context 2022-10-09 17:15:39 +11:00
Dion Moult 3ee4b1f0e3 Fix #2489. Prevent openings from being added twice and only save changed openings. 2022-10-09 15:22:10 +11:00
Thomas Krijnen cd27d48701 #2482 entity_instance.to_string() 2022-10-08 17:18:47 +02:00
Thomas Krijnen 94ba1a121d #2486 store provenance to file also in simple type instances 2022-10-08 15:16:53 +02:00
Dion Moult 4110b81270 Decomposition mode now selects all children (not parenting) to move a host and all children easily 2022-10-08 23:42:03 +11:00
Dion Moult 37028857b4 Suspicious undo stack fix 2022-10-08 22:29:13 +11:00
Dion Moult 7c1f02cafe You can now reinsert windows and doors into other hosts 2022-10-08 22:28:46 +11:00
Dion Moult 7d779130e1 Removing products now handles purging a bunch more inverse relationships 2022-10-08 21:15:01 +11:00
fbpyr fb6d24b3ed add choco alpha version tag, description fixes (#2484) 2022-10-07 22:14:04 +11:00
Dion Moult c6ee1d1679 Deleting a fill auto deletes the opening 2022-10-07 20:55:46 +11:00
Dion Moult 1db5d3b06c Begin purging old dynamic void feature 2022-10-07 20:47:13 +11:00
garylzimmer 3b81c158f3 Added auto renaming for null project name (#2478)
Sorry it took me almost a year to implement @aothms excellent suggestion!
https://github.com/IfcOpenShell/IfcOpenShell/issues/1954#issuecomment-1002463624
2022-10-07 20:36:25 +11:00
Dion Moult 34aff01eb2 New prototype operator to regen fill openings 2022-10-07 17:06:19 +11:00
Dion Moult 7d1a41c1c7 Minor fix 2022-10-07 16:08:21 +11:00
Dion Moult d187c588d3 Minor fix 2022-10-07 16:04:06 +11:00
Dion Moult 82f847f5d4 Basic adding of filled openings reimplemented with new opening system 2022-10-07 16:00:17 +11:00
Dion Moult 27dc81544c Minor fixes to IfcTester testcases 2022-10-07 13:34:19 +11:00
Dion Moult 1677a6c83f IfcTester now supports new entityType data in partof facet 2022-10-07 13:11:52 +11:00
Dion Moult 61f4c48a4a Write docs for basic description of what's in an IFC 2022-10-06 21:07:58 +11:00
Dion Moult 0259b75d4c Write documentation for IOS code examples 2022-10-06 19:56:53 +11:00
Dion Moult 0db28917a4 Write docs on IOS geometry processing. See #671. 2022-10-06 17:06:37 +11:00
Dion Moult 15b4ab543b Update geom settings with newly added settings, and add example code. See #671. 2022-10-06 15:52:12 +11:00
Dion Moult 72147e51f5 Migrate old Doxygen geom markdown to new Sphinx rst docs. See #671 2022-10-06 11:18:23 +11:00
Sigma Dimensions 835e3f00b4 fix the bug fix on commit #88893a8 2022-10-05 13:59:41 +01:00
Thomas Krijnen 2dee2afdfa #1861 test case 2022-10-05 13:07:16 +02:00
Thomas Krijnen 3d82791a99 #1861 update globalid map on attribute change 2022-10-05 13:03:52 +02:00
Dion Moult 2cb8eebf83 Profiles now retain manual booleans alongside autogenerated clipping planes 2022-10-05 21:52:07 +11:00
Dion Moult 49d3ee2f73 Copying an opening now tracks it as a special objects in the scene 2022-10-05 20:04:19 +11:00
Dion Moult aeaef641bf Bump IOS build 2022-10-05 19:52:24 +11:00
Dion Moult e97d427e9f Copying elements with openings now also copies openings 2022-10-05 19:44:32 +11:00
Dion Moult d525dfa46f Deleting voided objects now works with new opening system 2022-10-05 18:22:35 +11:00
Dion Moult 272a00941e Openings now move with profiles, but stay fixed along the local Z axis 2022-10-05 17:57:51 +11:00
Dion Moult 1590e8c0e7 Openings locations are fixed relative to slab profile editing 2022-10-05 16:39:10 +11:00
Dion Moult ac4e2f142b Openings now move with the host, but also intuitively stay along the local X axis of the host 2022-10-05 15:26:27 +11:00
Dion Moult 428ee648b4 Wall representations now distinguish between auto and manual booleans and manual booleans move with the wall 2022-10-05 13:09:18 +11:00
Thomas Krijnen fa6bbf2d4a A bunch of not so pretty validate.py performance improvements 2022-10-04 15:16:34 +02:00
Dion Moult 12aa66fdcb Fix nasty bug related to inconsistent behaviour of wall intersection math 2022-10-05 00:14:12 +11:00
Thomas Krijnen f68db3d3be Fixes after 698c708bf6 2022-10-04 12:38:40 +02:00
Dion Moult 1f56b36bfa Minor fix 2022-10-04 20:16:36 +11:00
Thomas Krijnen be805a3e96 Fixes after 698c708bf6 2022-10-04 11:14:13 +02:00
Thomas Krijnen 5d95475970 #2471 test case 2022-10-04 10:23:27 +02:00
Thomas Krijnen f41ad0d5de #2471 work around file gc with instance refs 2022-10-04 10:23:08 +02:00
Dion Moult f81b22240c Minor fix 2022-10-04 18:35:01 +11:00
Dion Moult 7d63b03dd3 Fix bug where linking an element twice caused stacked undos to fail. See #2200. 2022-10-04 14:23:02 +11:00
Dion Moult e74eb0cc53 Fix bug where unlinking operations were not stored in the undo stack 2022-10-04 13:41:27 +11:00
Dion Moult 008d6bed5c PIP publish now only happens once a month, on a full moon 2022-10-04 10:41:25 +11:00
Dion Moult d0985a23d0 Fix critical bug where default context was not set on project load 2022-10-04 10:03:59 +11:00
Massimo Fabbro a5d49e81a0 Fix little bug in qto_calculator about net footprint area (#2470) 2022-10-04 09:59:50 +11:00
Dion Moult bfcc086aad Attempt to change PyPI name to ifcopenshell 2022-10-03 23:40:29 +11:00
Dion Moult 0eae3de6a2 Openings now move with the host by default. Small change, big impact. 2022-10-03 23:30:19 +11:00
Thomas Krijnen 1d39413717 Test cases for previous commits 2022-10-03 14:29:41 +02:00
Thomas Krijnen c57e5e2100 Capture lower level errors in validate.py reported in C++ 2022-10-03 14:19:29 +02:00
Thomas Krijnen ca5249a179 More resiliance against wrong attribute counts 2022-10-03 14:05:08 +02:00
Thomas Krijnen 698c708bf6 Reduce heap allocations during parse by reusing vector for top level instances 2022-10-03 14:04:42 +02:00
Thomas Krijnen 084151ed4c Augment invalid entity message with offset in file 2022-10-03 14:03:53 +02:00
Thomas Krijnen c56c7288e3 Clarify wrong attribute count message 2022-10-03 14:03:04 +02:00
Thomas Krijnen f5398c77d5 Clarify invalid entity message 2022-10-03 14:02:28 +02:00
Thomas Krijnen a724b5cb24 Clarify character offset in exception 2022-10-03 14:02:04 +02:00
Thomas Krijnen f3a15953b2 Missing include 2022-10-03 14:01:43 +02:00
Dion Moult 567548c7f3 Fix bug where adding an opening didn't create a relative placement 2022-10-03 22:35:53 +11:00
Dion Moult 8c25349b49 Add new opening functions to BIM tool workspace UI 2022-10-03 20:50:33 +11:00
Amoki 49cd966d43 remove-yacc 2022-10-03 11:16:42 +02:00
Dion Moult b552ea1376 Openings now can be explicitly edited and saved and use IOS instead of Blender modifiers 2022-10-03 01:02:08 +11:00
Dion Moult 9c91ee31e5 New booleans UI panel to manage representation boolean stack 2022-10-02 23:48:19 +11:00
Carlos Villagrasa e9a063ccbd Construction Types Browser - Multipreview now runs smoothly (#2463)
* Construction types multipreview now runs smoothly

* Minor fix

* Minor fix
2022-10-02 16:46:14 +11:00
Dion Moult e4e9db0b3e Implement show and hide openings and hide booleans operator 2022-10-01 23:45:49 +10:00
Dion Moult 2ec41bf3a0 Add support for processing rectangular profiles in the profile editor 2022-10-01 23:27:05 +10:00
Dion Moult 944cbeea1a Handle both 2D and 3D placement matrixes in IfcOpenShell utils 2022-10-01 23:25:34 +10:00
Dion Moult 4b8238a602 Openings are no longer loaded when loading fresh IFC projects 2022-10-01 20:32:40 +10:00
Dion Moult 8789a19f57 Basic show and remove representation boolean operators 2022-10-01 20:31:46 +10:00
Kristoffer Andersen 8c8e83d98f update ci-daily build use win2019 for upload 2022-10-01 10:04:24 +02:00
Dion Moult 527d26c1c6 Openings are now specially shaded, and you can now add half space clipping booleans
# Conflicts:
#	src/blenderbim/blenderbim/bim/module/model/ui.py
2022-10-01 14:33:33 +10:00
Massimo Fabbro e2a5b09d77 Add calculate all qtos button: initial fixing (#2456) 2022-10-01 10:55:42 +10:00
Kristoffer Andersen 98b6edf119 Merge pull request #2461 from Krande/fix-daily-conda-build
fix: daily builds of conda ifcopenshell
2022-09-30 19:42:34 +02:00
Carlos Villagrasa 0a05197d3e Construction Types Browser: Solution to most of the current issues (#2460)
* Delay asset generation

* bpy.app.is_job_running only in Blender >= 3.3

* First time preview on sidebar works again

* Avoid flickering

* Show multiple previews on the first run

* Preserve mouse position with hacky operator
2022-10-01 02:01:26 +10:00
krande 75645a837a fix: daily builds of conda
Ran into a lot of `build not compiled for windows` errors on windows. So using the host and dependencies from conda-forge meta.yaml and pin boost-cpp to <=1.74 to at least allow windows builds of ifcopenshell to be created while we figure out how to support boost-cpp >=1.78
2022-09-30 17:49:55 +02:00
Thomas Krijnen 40e463a55f #2457 uplift curves to wires in geometric sets 2022-09-30 13:59:31 +02:00
Dion Moult 7b817f7359 Minor fix 2022-09-30 18:53:14 +10:00
Dion Moult 22e69a606d CAD sketcher constraints can now be saved and loaded from IFC 2022-09-30 16:04:16 +10:00
Dion Moult 8c7b2ab2a1 Slab depth auto-updates on type/layer changes with new slab system 2022-09-30 13:43:23 +10:00
Dion Moult 3512a2ce36 Add undo support to profile and wall element operators 2022-09-30 13:08:39 +10:00
Dion Moult 9e76b2b9eb Footprints are now supported in the new profile editor 2022-09-30 13:00:40 +10:00
Dion Moult a08a78b3c9 Slabs are now first created directly in IFC instead of reverse engineering meshes 2022-09-30 12:08:57 +10:00
Dion Moult 9fc5f72831 Minor fix 2022-09-29 23:51:25 +10:00
Dion Moult 391e09c16c Convenience operator to draw rectangles when editing profiles 2022-09-29 23:31:11 +10:00
Dion Moult 60e4de5ffa You can now align the view to the edited profile, for angled profiles 2022-09-29 22:33:32 +10:00
Vukas Pajic a248f16cf8 indentation 2022-09-29 14:30:25 +02:00
Vukas Pajic 9240a10fa8 no need for Shapely.libs when using macos 2022-09-29 14:25:42 +02:00
Vukas Pajic 19d3208744 add Shapely.libs 2022-09-29 14:08:24 +02:00
Vukas Pajic c080567f53 update makefile for shapely dependancy (#2452)
* initial

* unzip instead of tar

Co-authored-by: Dion Moult <dion@thinkmoult.com>
2022-09-29 22:01:54 +10:00
Dion Moult ac72f41051 You can now change the radius of existing arcs. Minor interface cleanup. 2022-09-29 17:24:00 +10:00
Dion Moult fc9273c1d3 You can now change the radius of existing circles. Radius settings are remembered. 2022-09-29 16:47:40 +10:00
Dion Moult 43dc2da05f Minor fix 2022-09-29 15:43:19 +10:00
Dion Moult 121190c9b9 Vertex group indices in repeated operations do crazy stuff. This is more robust. 2022-09-29 15:41:06 +10:00
Dion Moult 0f2f6e2721 More robust arcindex generation and let user specify radius for circles 2022-09-29 11:41:52 +10:00
Carlos Villagrasa 05070c3758 Construction Types - Attempt to solve repeated object creation (#2450)
* Constr types dicts to Blender props

* Reduce update interval

* Base for not linking dummy asset objects to collections
2022-09-29 10:00:39 +10:00
Dion Moult d4d923e51b New feature to fillet profiles with true arcs 2022-09-28 23:35:29 +10:00
Dion Moult 766ffa71cd Operator to clear parametric vertices when editing profile 2022-09-28 23:04:07 +10:00
Dion Moult cbf213952b Minor fix 2022-09-28 22:45:03 +10:00
Vukas Pajic b7c76048ab comment out tests 2022-09-28 14:24:17 +02:00
Kristoffer Andersen 20fdb09a0c Update meta.yaml
Do not force boost version 1.80.0. It fails horribly
2022-09-28 14:21:47 +02:00
Vukas Pajic 1943d59339 Add additional quantity calculations to QtoCalculator (#2405) 2022-09-28 14:20:10 +02:00
Dion Moult d2836e07d5 Minor fix 2022-09-28 22:18:54 +10:00
Dion Moult 90a788082d New 2D CAD offset operator 2022-09-28 21:07:28 +10:00
Kristoffer Andersen eafad2862f Update meta.yaml
test using boost 1.80.0
2022-09-28 09:21:39 +02:00
Dion Moult 1c0fa13f39 Fix CAD arc bug where sometimes arc went the wrong way, and now auto-clean verts when creating arc 2022-09-28 11:02:49 +10:00
Carlos Villagrasa 2e5ce6b862 Fix bim tool crash (#2446)
* Attempt to wait for assets (triggers infinite loop)

* Using timer instead of sleep

* remove sleep import

* Reduce asset update interval

Co-authored-by: Dion Moult <dion@thinkmoult.com>
2022-09-28 09:30:52 +10:00
Ryan Schultz f63a33647b relocate remove drawing button per https://community.osarch.org/discussion/comment/12744/#Comment_12744 (#2444)
* added 3"=1'-0" scale (a common scale), and corrected 6"=1'-0" scale

* relocate remove drawing button per
https://community.osarch.org/discussion/comment/12744/#Comment_12744
2022-09-28 01:54:11 +10:00
Carlos Villagrasa 2f84c188f5 Fix bim tool crash (#2445)
* Attempt to wait for assets (triggers infinite loop)

* Using timer instead of sleep

* remove sleep import
2022-09-28 01:31:59 +10:00
Dion Moult 01b1b57f71 Mitre joints now auto merge and are accessible in the new profile editor 2022-09-27 23:35:40 +10:00
Dion Moult 1ad0ef82d4 Fix bug where CAD filleting sometimes led to crashes 2022-09-27 23:34:08 +10:00
Dion Moult 23212003e9 Add support for circles in profile editing 2022-09-27 17:16:26 +10:00
Dion Moult aff281d00b Add unit support in new profile editing tool 2022-09-26 22:40:33 +10:00
Dion Moult 4bbcf3fa1e Set and unset 3-point arcs only for profiles 2022-09-26 22:06:11 +10:00
Dion Moult 5e50a15b41 New smart profile editor for extruded elements inspired by CAD Sketcher 2022-09-26 18:00:05 +10:00
Massimo Fabbro b673fc94a5 Add calculate all qtos button (#2441)
* Add button to calculate all object qtos in qto n-panel

* Calculate all qtos button: now the schema is readed from the file

* Calculate all qtos button: now edit_qto runs only one time every object

* Add button to assign pset qto to selected objects

* Calculate all qtos button: small fixing and unable to execute if no selected objects

* Calculate all qtos button: first tool test

* Calculate all qtos button: use better built-in function to get ifc obj entity
2022-09-26 16:05:08 +10:00
Dion Moult 4c7a5e8a1a Experimental CAD Sketcher integration for simple arbitary polyline extrusions 2022-09-25 12:27:10 +10:00
Dion Moult 33ebcd7664 New convenient modifier to rotate beam/wall/column etc by 90 degrees 2022-09-24 21:46:32 +10:00
Dion Moult 76ce726f1d Implement refresh profiles on type and profile changes 2022-09-24 20:19:01 +10:00
Ryan Schultz 54da579891 Ifc text tweaks (#2431)
* added 3"=1'-0" scale (a common scale), and corrected 6"=1'-0" scale

* Allow float point values in smart tags, and avoid breaking when no assigned product See #2340, #2349
2022-09-24 20:07:32 +10:00
Dion Moult e024e9e622 You can now set cardinal point on creation and bulk change for profile elements 2022-09-24 16:21:20 +10:00
Dion Moult 56f4b72161 Reimplement profile cardinal points 1-9 with new profile engine 2022-09-24 15:42:50 +10:00
Dion Moult 7545313dee Removing an element now also purges connection relationships 2022-09-24 14:12:45 +10:00
Dion Moult 48eb6b70e3 You can now manually set the length/height of profiled extrusions 2022-09-23 23:53:12 +10:00
Dion Moult 5f2acb43b1 You can now recalculate connections manually for profiles 2022-09-23 23:41:37 +10:00
Dion Moult b7eaefee50 Fix bug when deleting elements may possibly create an invalid containment relationship 2022-09-23 23:26:29 +10:00
Dion Moult 13a387cc73 Add support for descriptions in path connection relationships 2022-09-23 23:00:27 +10:00
Dion Moult f139f2ba1e Fix bug where removing an element in an aggregation could leave the file in an invalid state 2022-09-23 23:00:07 +10:00
Dion Moult 1d8085f6c9 New profile engine now supports mitred profile joints. 2022-09-23 19:23:22 +10:00
Dion Moult 6699bfeb54 Mitred wall joints rebuilt on the new wall engine 2022-09-23 15:42:05 +10:00
Dion Moult 7cee0a85c6 3D axis representation contexts are now created by default for all new projects 2022-09-23 12:39:23 +10:00
Dion Moult 351dcfa241 Implement profile unjoin and start cleaning up legacy architectural tools panel 2022-09-23 12:38:49 +10:00
Dion Moult 28022581a7 You can now have connection aware L joints for profiled elements 2022-09-23 00:09:56 +10:00
Dion Moult 748aaa671d Extending profiled elements (e.g. beams and columns) now supports axis connectivity and uses new profile engine 2022-09-22 23:32:22 +10:00
Thomas Krijnen 95b474c37d Delete HdfSerializer.h~ 2022-09-22 13:13:57 +02:00
Thomas Krijnen 9bb9f91f57 Delete HdfSerializer.cpp~ 2022-09-22 13:13:47 +02:00
Dion Moult 7db967583b Profile extensions now use the new engine and support 3D axis representations 2022-09-22 16:05:35 +10:00
Dion Moult 5d43f6db37 Adding a profile now uses the new profile engine 2022-09-21 23:28:03 +10:00
Dion Moult 4cfa327159 New API functions for adding arbitrary profile and profile-based representations 2022-09-21 23:27:24 +10:00
Dion Moult 920177d8c6 Minor fix. See #2416. 2022-09-21 10:50:02 +10:00
Dion Moult 5f902600e3 Minor fix. See #2416 2022-09-21 00:04:02 +10:00
Dion Moult db9af13843 Fix #2427. Don't treat missing mandatory attributes as fatal in IFC version migration 2022-09-20 22:46:15 +10:00
Thomas Krijnen dd49c092c6 #2419 remove map erasure from destructor
de initialization order can result in map already destroyed when unique_ptr schemas are still being deleted
2022-09-20 11:35:08 +02:00
Thomas Krijnen d347a7f893 Don't run choco from other repos 2022-09-20 11:33:07 +02:00
Dion Moult 3c61804e8b Flipping walls now preserves connections, and flips around the reference axis 2022-09-20 17:21:11 +10:00
Dion Moult e179070978 New interface to show, select, and remove path connections 2022-09-20 16:25:52 +10:00
Dion Moult de2ada1141 Walls recalculate on type and layer thickness changes 2022-09-20 14:05:04 +10:00
Dion Moult eb48a68dd1 Copying elements do not copy connections to prevent mutually exclusive connectivity 2022-09-20 12:01:40 +10:00
Dion Moult fc6bf5e2bb You can now set an exact wall length 2022-09-20 10:48:44 +10:00
Dion Moult 3f2d86255d Merge projects now merges all entities, not just rooted ones. 2022-09-19 23:44:10 +10:00
Dion Moult d751ee9995 Fix critical typo in rendering styles creation that led to invisible styles 2022-09-19 23:10:56 +10:00
Dion Moult 83f70624a4 Attempt to get LXML working across all platforms. See #2422. 2022-09-19 22:23:09 +10:00
Dion Moult 356253c4f0 Minor fix 2022-09-19 21:40:53 +10:00
Dion Moult a459c39c97 Minor fix 2022-09-19 17:36:20 +10:00
Dion Moult e5719bd3c6 You can now change wall heights in bulk 2022-09-19 16:29:43 +10:00
Dion Moult 18387e7732 You can now switch contexts of of objects in bulk 2022-09-19 15:59:37 +10:00
Dion Moult 57e8e47061 Minor regression fix 2022-09-19 13:33:40 +10:00
Dion Moult 5c5bb03652 IfcPatch now allows passing in IFC objects instead of filepath strings 2022-09-19 13:31:33 +10:00
Dion Moult ea1d797605 Add documentation for IfcPatch 2022-09-19 12:25:35 +10:00
Dion Moult bc3bf07a60 Minor fix to 12DToRevitTINS patch 2022-09-19 10:49:03 +10:00
Dion Moult fbd4177d08 New feature to merge aligned walls and retain parametric connections 2022-09-19 09:12:42 +10:00
Thomas Krijnen 4842891fd7 #2322 Implement IfcSweptDiskSolidPolygonal.FilletRadius 2022-09-18 15:59:24 +02:00
Dion Moult f6056f9bc3 Shift-Y in the BIM tool for walls now regenerates wall connections 2022-09-18 23:26:18 +10:00
Dion Moult c7af6c4482 Fix #2420. Bug where project library assets sharing relationships with other assets would pull in other assets 2022-09-18 23:19:23 +10:00
Dion Moult c9c905fd3e Splitting walls now uses the new wall engine 2022-09-18 22:00:27 +10:00
Dion Moult 7f76488869 New recalculate wall operator to manually trigger an update of all wall connections 2022-09-18 15:57:07 +10:00
Dion Moult cd930d809a New wall engine slowly being wired up to wall join hotkeys 2022-09-18 15:56:23 +10:00
Dion Moult f49d7ec2cb Implement unjoin in new wall engine 2022-09-18 15:54:24 +10:00
Dion Moult 322abdff53 Minor fix 2022-09-17 22:19:49 +10:00
Dion Moult 984978bc00 Add axis support to new wall engine 2022-09-17 21:52:03 +10:00
Dion Moult ce8da8bd85 An axis context is now added by default for all new projects 2022-09-17 21:41:09 +10:00
Dion Moult 6d0fdb32c6 Fix #2416. 2022-09-17 14:51:50 +10:00
Dion Moult 0cb3c0a907 Update docs about new Apple M1 support 2022-09-16 22:29:04 +10:00
Dion Moult d9ea62a670 Distribute Apple M1 to PyPi 2022-09-16 22:21:58 +10:00
Dion Moult 2228104a8e Apple M1 builds. This stuff never works the first time. 2022-09-16 21:48:38 +10:00
Dion Moult e473574086 Setup BlenderBIM Apple M1 builds. Fingers crossed! 2022-09-16 20:30:33 +10:00
Dion Moult f93604d6b7 Implement connection aware wall L-joints 2022-09-16 18:30:57 +10:00
Dion Moult d106b0e017 Fix #2413. Bug where multiple tasks may accidentally override animation keyframes. 2022-09-16 11:53:25 +10:00
Dion Moult 90e35810d9 Prototype connection-aware wall extension and T-joints 2022-09-15 22:44:06 +10:00
Bruno Postle 4fb910fc44 wrapper is a bash script not a sh script 2022-09-15 07:42:00 +01:00
Dion Moult 280ce56431 Creating walls are more stable and now directly goes to the IFC representation instead of reverse engineering Blender meshes 2022-09-15 10:46:52 +10:00
Dion Moult 81e46b533b New API to directly create wall-like representations without Blender geometry 2022-09-15 10:44:43 +10:00
Dion Moult 171db4b241 Add support for connecting/disconnecting paths in API 2022-09-15 10:32:01 +10:00
Martin15135215 8fe9ddd599 Small Change
https://github.com/IfcOpenShell/IfcOpenShell/issues/2409#issuecomment-1246767831
2022-09-15 00:13:01 +10:00
Dirk Olbrich b299694ca0 doc: library flags for macos build 2022-09-14 15:19:53 +02:00
Dirk Olbrich ca76b77130 update doc for building on macOS 2022-09-14 15:19:53 +02:00
Thomas Krijnen e94a5c97df Merge remote-tracking branch 'remotes/origin/pr/1911' into v0.7.0 2022-09-14 14:57:27 +02:00
GisSpace df845653f3 fix IFC to xml - IFCGROUP in IFC cannot be found in xml #1154 2022-09-14 14:54:05 +02:00
Thomas Krijnen a3e499656c Don't log vertex counts in helper when they didn't change 2022-09-14 14:13:24 +02:00
Thomas Krijnen 79bb40092f Apparently --disable-static no longer works? 2022-09-14 10:57:08 +02:00
Thomas Krijnen 2c7a4ca880 Filter unsupported py versions on recent osx 2022-09-14 10:56:52 +02:00
Thomas Krijnen 6a4375cf54 Update build-all.py versions 2022-09-14 10:56:16 +02:00
Thomas Krijnen c74b79213b Remove asterisks before branch name 2022-09-14 10:55:32 +02:00
Ryan Schultz 806d147a85 A preference for locking grids upon import 2022-09-14 18:33:26 +10:00
Dion Moult 227b1391bd Clarify behaviour of funny characters and pattern matching on numbers 2022-09-14 10:15:19 +10:00
Bruno Postle 68e2bb1fa7 oops, correct version of wrapper that quotes special characters 2022-09-13 23:21:49 +10:00
Dion Moult fccc233f42 Merge pull request #2406 from brunopostle/desktop-files2
Configure blenderbim file associations and desktop icon
2022-09-13 23:06:04 +10:00
Bruno Postle 86785ab181 Configure blenderbim file associations and desktop icon 2022-09-13 13:57:13 +01:00
Dion Moult 3255053ac4 Implement all restrictions for IfcTester 2022-09-13 22:09:40 +10:00
Dion Moult 422cc4802c Implement optionality in IfcTester, and generate integration testcases 2022-09-13 19:50:51 +10:00
Dion Moult fc0b0ca188 Minor fix to ids.xsd 2022-09-13 19:44:36 +10:00
Dion Moult 3120b0c6e2 Add support for IfcTester and predefined properties 2022-09-12 23:03:50 +10:00
Dion Moult 91fac6d4bd Add IfcTester support and test cases for bounded, table, and reference props 2022-09-12 22:35:05 +10:00
Dion Moult c7c59d9496 IfcTester now supports list and enumerated properties 2022-09-12 21:34:06 +10:00
Dion Moult 73ac5d314b Complex properties and quantities are not supported in IDS 2022-09-12 20:10:25 +10:00
Dion Moult 3b2cbac9d1 Generate stable GlobalIds for IDS docs to prevent commit noise 2022-09-12 20:10:25 +10:00
Thomas Krijnen a63d6475b2 Keep moving schema agnostic code out of kernel 2022-09-12 10:34:11 +02:00
Thomas Krijnen 4cd0932d7d Fix to boolean utils, version detection, and behaviour on old versions 2022-09-12 10:34:11 +02:00
Dion Moult cb447fe902 IfcTester Add support for qto checks 2022-09-12 18:26:11 +10:00
Dion Moult 5ee4e2704d User can now explicitly choose the quantity type via the edit qto API 2022-09-12 18:05:13 +10:00
Dion Moult 5b5540494d Qtos now support being added to types and contexts (despite being rare) 2022-09-12 12:55:15 +10:00
Dion Moult 85e123fadb IfcTester now supports occurs attributes on facets 2022-09-12 11:51:03 +10:00
Dion Moult f745222d37 IfcTester now supports mandatory measures for properties 2022-09-12 11:21:47 +10:00
Sigma Dimensions 88893a8c2c BBIM - Fix cost item products not loading for 1st cost item created 2022-09-11 22:14:57 +01:00
Dion Moult eb8bf60e93 Fix #2398. Add support for IFC4X3 entities. 2022-09-11 22:17:41 +10:00
Dion Moult 319aada33b Fix #2388. 2022-09-11 22:14:11 +10:00
Dion Moult 77c9bf5bb6 Implement newly proposed IDS PartOf facet 2022-09-11 17:20:50 +10:00
Dion Moult e5e81c818e IfcTester now handles floating point precision checks 2022-09-10 23:31:21 +10:00
Dion Moult 7aad0fc119 Implement type casting for property checks in IDS, bump to IDS v0.9 2022-09-10 22:42:22 +10:00
Sigma Dimensions f7403e8eee BBIM - Feature to guess all quantities at once 2022-09-09 13:25:04 +01:00
Dion Moult e2df4f335d API now supports adding representations using the Sverchok geometry structure 2022-09-09 22:20:06 +10:00
Sigma Dimensions cbe944d030 BBIM - temp fix to refresh cost items products' quantities UI, when qto is edited 2022-09-09 11:43:28 +01:00
bosonprojets 87f0475b99 Quality - run black on api/sequence directory 2022-09-09 02:25:20 +01:00
bosonprojets 4689cc858a BBIM Feature to import resources data from CSV 2022-09-09 02:23:53 +01:00
bosonprojets 6d6b893db2 Core tests for Resource module 2022-09-09 02:18:08 +01:00
bosonprojets e2d4a3ae24 Refactor Resource module 2022-09-09 02:17:28 +01:00
Dion Moult e4c1f7518d Revert "Hiding all objects in the "Types" Collection "
This reverts commit 2c0ea75960.
2022-09-09 10:59:10 +10:00
Dion Moult 48f8c0e085 Merge pull request #2395 from IfcOpenShell/Hiding-all-objects-in-the-"Types"-Collection
Hiding all objects in the "Types" Collection
2022-09-09 10:56:26 +10:00
Ryan Schultz 2c0ea75960 Hiding all objects in the "Types" Collection
When all the objects in the "Types" collection are hidden, it makes it quicker to turn on, and isolate one type for viewing and/or toggling other types on to compare to.
2022-09-08 13:12:47 -05:00
Thomas Krijnen e643972669 #2390 Submodule 2022-09-08 13:54:17 +02:00
Dion Moult d7c4936255 New recipe to fix dense TINs from 12D loading properly in Revit 2022-09-08 16:36:12 +10:00
Sigma Dimensions 96d19952e9 Quality check - run black on api/resource 2022-09-08 03:15:41 +01:00
Sigma Dimensions 57caf6a31f IfcOpenShell API: Deep purge resources upon removal 2022-09-08 03:12:44 +01:00
Dion Moult 189fc6e1e4 Minor fix 2022-09-07 20:39:55 +10:00
Dion Moult 88117941c5 Fix #2387. Bundling for Blender makefile now works on Mac. Thanks dirkolbrich! 2022-09-07 20:26:44 +10:00
Dion Moult 0a6c8a4343 Write docs on creating a single object 2022-09-07 20:14:08 +10:00
Christian Martínez de la Rosa 5bfad88a75 [IfcConvert] Added IfcRelConnectsElements to xml export (#2197)
* [IfcConvert] Export tasks in the xml conversion

The exportion in the XML format exports in a new tag, named "tasks", all the tasks from the file with a hierarchy. Each task contains the IfcTaskTime object if it has it.

* [ifcConvert] Add related objects in tasks

* [IfcConvert] Added IsSuccessorFrom and IsPredecessorTo in xml task export

* Get IfcTasks from IfcWorkSchedule

* [IfcConver] Changed OperatesOn hierarchy level in xml task export

* Added task to property / quanty relationship

* [IfcConvert] Added calendars to xml output file

* [IfcConvert] Added Output objects in the XML file

* [IfcConvert] Fix crash when IfcWorkCalendar does not contain IfcWorkTime

* [IfcConvert] Added IfcWorkPlan to xml export

* [IfcConvert] Added IfcRelConnectsElements to xml export

* [IfcConvert] Added IfcRelConnectsElements to xml export

* [IfcConvert] Improved related and relating xml export
2022-09-05 14:58:22 +02:00
Dion Moult 72544419da External resource relationships are now also purged when removing classifications 2022-09-05 16:51:42 +10:00
Dion Moult d1baaa21e7 Update IfcFM to use actors, not contacts, support federated datasets, and be more true to spec 2022-09-05 12:41:06 +10:00
Dion Moult 5d9fc44a69 Fix #2374. Axis for walls should be in the 2D plan context. 2022-09-05 11:35:04 +10:00
Dion Moult 917344ee1d Fix bug where new instances may have a wrong Z coordinate 2022-09-05 11:13:31 +10:00
Dion Moult 68ef6458d7 Fix #2379. Regressions where context adding never had any tests and failed. 2022-09-05 11:13:31 +10:00
Sigma Dimensions 36576c8d40 IFC resources utility: batch import Resource Data from CSV 2022-09-05 01:51:53 +01:00
Sigma Dimensions b44a1cb2e2 Fix 4d import context 2022-09-05 01:46:19 +01:00
Thomas Krijnen 5c7cf4469f Compute meaningful hash and eq on simple type instances 2022-09-04 14:23:35 +02:00
Dion Moult 147216cb7b Revert "Fix bug where IFC data types were hashed as the same value in RecycleNonRootedElements IfcPatch recipe"
This reverts commit 3be8e4f1ce.
2022-09-04 22:22:54 +10:00
Dion Moult 62b1478af1 Merge pull request #2377 from Martin15135215/v0.7.0
From append methode to use numpy and ifcpatch bug
2022-09-04 20:13:51 +10:00
Dion Moult 0f0055b0f1 Merge branch 'v0.7.0' into v0.7.0 2022-09-04 20:13:38 +10:00
Dion Moult 3be8e4f1ce Fix bug where IFC data types were hashed as the same value in RecycleNonRootedElements IfcPatch recipe 2022-09-04 20:12:54 +10:00
Martin15135215 6aa4ca89fe Merge branch 'IfcOpenShell:v0.7.0' into v0.7.0 2022-09-04 09:22:58 +00:00
Dion Moult 5fb574cf5c Fix #1589. Saving beveled curves as rswept disk solids is now supported. 2022-09-04 17:46:34 +10:00
Dion Moult 85a502a038 Support multiple swept disk solids with equal radii as a native Blender object 2022-09-04 17:45:26 +10:00
Dion Moult a7c56e742b Fix UI bug where adding nested groups closed the UI 2022-09-04 11:17:55 +10:00
Martin15135215 f11f648630 From append methode to do with numpy 2022-09-04 10:25:02 +10:00
Martin15135215 74d1bd7e3e Added "or element.is_a('IfcPropertySingleValue')" 2022-09-03 19:19:02 +02:00
Martin15135215 248ac71215 From append methode to use numpy 2022-09-03 19:13:55 +02:00
Dion Moult af4cb22756 Fix bug where appended assets sometimes duplicated geometry contexts 2022-09-03 22:16:35 +10:00
Dion Moult 56393ef358 Fix #170. Add note about not mixing OpenCascade installations. 2022-09-03 20:16:33 +10:00
Dion Moult 5d4512033d Fix #2286. Classifications can now be added for cost items. 2022-09-03 17:11:14 +10:00
Dion Moult b9cb1ab012 Black 2022-09-03 15:34:52 +10:00
Dion Moult e34b737428 Fix #2304. You can now manage classifications for materials. Bulk classification now supported. 2022-09-03 15:33:52 +10:00
Dion Moult 557d3429eb Support bulk deletion of psets on selected objects 2022-09-03 14:32:39 +10:00
Dion Moult f9019a4007 Test non-rooted classifications in IDS 2022-09-03 11:54:12 +10:00
Dion Moult 0668eadc36 IDS doc generator now also generates a sample IDS file 2022-09-03 10:48:46 +10:00
Dion Moult fdfaf54698 Support resource level classifications in IfcOpenShell API 2022-09-02 18:23:49 +10:00
Dion Moult ffa3aae132 Fix UI bug where changing classification levels sometimes didn't display 2022-09-02 15:21:27 +10:00
Dion Moult 0293c133ab Fix #2364. Bug where classifications couldn't be added in IFC2X3. 2022-09-02 14:03:05 +10:00
Dion Moult f9db685753 Fix #2343. Pset template applicability is refreshed when you save your templates. 2022-09-01 18:25:00 +10:00
Dion Moult a800d1af7e Fix pset template UI bug where changing to another prop didn't cancel editing older props. Also add support for blank or falsey enums (e.g. a real of 0.0). 2022-09-01 18:06:33 +10:00
Dion Moult f2bd362f57 Fix bug where adding a pset template didn't auto refresh the UI to the newly added template 2022-09-01 18:06:33 +10:00
krande 87021ebbe7 fix: edit ci triggers for ifcopenshell.
Changes are made to the github actions workflow files to reduce unnecessary triggering of ifcopenshell compilation, testing and conda package building
2022-09-01 09:41:30 +02:00
Dion Moult 36f2ed6da6 Allow disabling undo on save
The transaction system does not scale on large scale or complex remove_deep deletions. So if you want to delete a mesh with many thousands of vertices, it becomes very, very slow. Unfortunately we cannot also clear Blender's undo history, so this advanced feature should be used carefully.

Tested:

 - deleting 250 average objects: 264s before, 246s after (6.8% faster)
 - deleting 1 object with 6,000 vertices: 5 minutes and counting (basically impractical) before, 11s after
2022-09-01 11:17:06 +10:00
Dion Moult a61c084f27 Minor fix 2022-09-01 10:17:45 +10:00
Dion Moult 6849bb8c17 OpenCascade is not practically optional for now 2022-09-01 09:07:40 +10:00
Dion Moult a26f60861e Add pip/docker install instructions 2022-09-01 09:05:06 +10:00
Thomas Krijnen 106b8fdd07 Update Dockerfile 2022-08-31 21:01:09 +02:00
Thomas Krijnen 87c6b06cfc Update CMakeLists.txt 2022-08-31 20:48:36 +02:00
Thomas Krijnen af4917efba Sync dockerfile libs with ci libs 2022-08-31 20:28:26 +02:00
Dion Moult 806b2e2714 Add PyPi badge and switch to Shields badge for Anaconda
See https://github.com/ContinuumIO/anaconda-issues/issues/10231
2022-08-31 18:15:33 +10:00
Dion Moult 4ae8e4c74b Rename PyPi package to ifcopenshell-python due to naming conflict 2022-08-31 17:18:18 +10:00
Dion Moult 8101ffe06a Try using existing PYPI_TOKEN as the ifcopenshell package name is blocked 2022-08-31 16:54:27 +10:00
Dion Moult f07b6e14b4 Second time lucky? 2022-08-31 16:06:07 +10:00
Dion Moult f2c31cc17d Add optimistic Github action to upload wheels to PyPi 2022-08-31 16:02:39 +10:00
Dion Moult 39a626edeb Super simple wheel creator for PyPi 2022-08-31 15:41:01 +10:00
Sigma Dimensions 02379c5110 BBIM - New Sequence Toolkit Panel & new feature to highlight tasks for current selected object 2022-08-31 02:26:01 +01:00
Sigma Dimensions 1e661c42fb BBIM Feature - expand and contract all tasks in a work schedule 2022-08-31 02:21:28 +01:00
Thomas Krijnen eb7e9bacbf Update README.md 2022-08-30 21:58:11 +02:00
Thomas Krijnen c38e608a7c Update README.md 2022-08-30 21:49:51 +02:00
Dion Moult 544ed696da Add install instructions for ArchLinux for IfcOpenShell/IfcConvert 2022-08-30 23:00:18 +10:00
Dion Moult 322e47c5b5 Add badges to readme 2022-08-30 22:57:54 +10:00
Dion Moult 3ee9e6f45c Remove mention of outdated 3DS max from install instructions 2022-08-30 22:27:09 +10:00
Thomas Krijnen 7df94a906d #2305 fix cone boolean op 2022-08-30 13:31:26 +02:00
Dion Moult af1a40c913 Fix bug where if an object placement was reused elsewhere a circular reference was created 2022-08-30 20:08:50 +10:00
Dion Moult 451512ddff #1812 Add batching support for remove_deep2 for faster removals 2022-08-30 20:08:03 +10:00
Dion Moult fbd33145e1 Fix #2360. Fix documentation on IfcConvert flags that also apply to STP. 2022-08-30 18:28:30 +10:00
Dion Moult 8b0b1699f6 Fix #2370. Asset preview code did not clean up after itself properly after generating objects. 2022-08-30 16:21:25 +10:00
Dion Moult 2e13ed77d8 Fix #2371. Bug where you couldn't edit psets of a hidden object. 2022-08-30 11:38:04 +10:00
Dion Moult 804c0f4a77 Partially write tests for sequence refactor 2022-08-30 11:08:26 +10:00
Sigma Dimensions 37dec500fd massive refactor of the sequence module 2022-08-29 21:55:37 +01:00
krande ac3eb6fbda Merge remote-tracking branch 'origin/v0.7.0' into v0.7.0 2022-08-29 14:03:26 +02:00
krande 6a0bc0cd91 feature: align conda daily builds of ifcopenshell feature-wise with IfcOpenBot builds 2022-08-29 14:02:51 +02:00
Sigma Dimensions 699c8bf6b6 fix path windows test-bim 2022-08-29 12:51:18 +01:00
Dion Moult 7806f989f3 Minor fix 2022-08-29 21:47:12 +10:00
Dion Moult a0ca387ae7 Minor fix 2022-08-29 21:34:29 +10:00
Dion Moult 2a716ec242 Minor fix 2022-08-29 17:28:44 +10:00
Dion Moult 93ab51fb5e Fix #1958 - document other useful Blender add-ons 2022-08-29 16:25:17 +10:00
Dion Moult 7c59fc0b83 Document installation and usage of IfcConvert 2022-08-29 13:04:37 +10:00
Dion Moult 819466a819 Port over compilation instructions to Sphinx 2022-08-29 11:40:38 +10:00
Dion Moult 33a8ba9834 Add install instructions for Conda / Chocolatey 2022-08-29 09:14:26 +10:00
Ryan Schultz 6ce86ae368 Closing the ends of a swept_disk_solid by default 2022-08-29 08:49:46 +10:00
luz paz 68bf7a08e0 BlenderBIM: typo fixes 2022-08-28 11:39:15 +10:00
luz paz 771ba4c337 Revert 3rd party code changes 2022-08-27 15:34:16 +02:00
luz paz 33199b4bb6 Fix various typos 2022-08-27 15:34:16 +02:00
krande 74d730f368 [fix] - conda-build - set explicit env python path in conda build script for unix 2022-08-26 14:19:41 +02:00
Dion Moult eb2a71bf48 Fix #2159. Disable JUnit in Behave in Blender due to Etree conflicts. 2022-08-26 13:40:34 +10:00
Dion Moult 4b4e2e1622 Improve instructions on how to run tests and set up a dev environment 2022-08-26 13:40:34 +10:00
Thomas Krijnen b5f4c8218d #2358 fix header entity parsing in case of too few fields 2022-08-24 11:57:06 +02:00
Christian Kimmig e3a22601d5 Set Position of extrusions with height = 0 2022-08-24 11:10:45 +02:00
Dion Moult f67856a2ae Minor fix 2022-08-24 10:13:30 +10:00
Dion Moult 6b71b32e63 Improve documentation for running tests 2022-08-24 09:54:15 +10:00
Dion Moult 60d99fe2fa Update dev install process docs and bump IfcOpenShell dep 2022-08-23 17:15:11 +10:00
Dion Moult 75e1786682 Purge IDS features from BIMTester as superseded by IfcTester 2022-08-23 16:37:15 +10:00
Dion Moult 9b3f964000 Fix #2060. Large lists of types in a library can now be filtered. 2022-08-23 13:26:38 +10:00
Dion Moult de6b578d9c Fix #1375. Spatial zones as non-hierarchical entities are now supported. 2022-08-22 17:31:44 +10:00
Dion Moult f50e790b11 Minor fix 2022-08-22 17:02:05 +10:00
Dion Moult 9821c3af67 Fix #2317 add graphical support for viewing and editing referenced structures 2022-08-22 13:52:12 +10:00
Dion Moult 0844d6f52e Fix #2354 - add support for selector queries for enumerated properties 2022-08-19 20:10:54 +10:00
Dion Moult 520e7653e4 #1375 #2317 add API support for referencing in spatial structures 2022-08-19 18:43:39 +10:00
Dion Moult 9512075506 Minor fix 2022-08-19 12:41:08 +10:00
Dion Moult bdd61713ea WIP refactor sequence module 2022-08-19 11:20:18 +10:00
Dion Moult 97cf1da4ff #2339 Read directly from raw data instead of using strings for IfcDiff output 2022-08-18 17:57:11 +10:00
Dion Moult 836a162d57 #2342 Support different IFC schema versions for obj2ifc 2022-08-18 17:15:39 +10:00
Dion Moult 09a6f56f47 #2319 Add documentation for IfcDiff 2022-08-18 16:12:10 +10:00
Ryan Schultz 35ce8c2848 Updated links to point to current branch 2022-08-17 16:12:35 -05:00
Dion Moult ae2fd67260 #2342 New Meshlab based OBJ2IFC converter 2022-08-17 14:33:48 +10:00
Dion Moult 9def041f27 You can now create multiple new IDSes side by side and close them 2022-08-16 17:14:54 +10:00
Dion Moult e9d86253ec Minor fixes to IfcTester 2022-08-16 11:52:01 +10:00
Dion Moult f95466ee0c IfcTester now integrated into BlenderBIM Add-on UI 2022-08-16 11:52:01 +10:00
Dion Moult e85f21ce7a Minor fix 2022-08-16 11:52:01 +10:00
Sigma Dimensions d3795c9836 Documentation for ifcopenshell.util.element 2022-08-15 19:40:51 +01:00
krande ab647b13d9 fix ci initializer to prevent accidentally triggering and add tagged release for conda-forge release 2022-08-15 16:59:32 +02:00
Kristoffer Andersen dcad4146b6 PR daily builds of ifcopenshell and upload to conda (#2132)
* WIP PR for daily builds of ifcopenshell

* fix indentation in yaml

* fix branch name

* test daily builds using minimum occt ==v7.5.3

* chore: WIP daily builds - add tests

* add test script bat/sh. Continue work in PR

* fix: add more packages to test requires

* fix: remove space in minimum version requirement of numpy

* use manually installed MacOSX SDK on github runner. Minor rewrite of dynamic/static zlib conditional for conda_build.

* fix MacOSX SDK address and made it platform conditional

* make tests pass

* try to skip ids tests for common icopenshell builds (caused failure on windows tests probably due to special character in filepath)

* add conditional upload and testing of all available platform versions on github actions

* fix wrong path to source files

* fix errors in tests

* remove test files and skip tests

* only do import of ifcopenshell as means of testing and rely on the successful completion of ci.yml as a triggering mechanism instead

* make conditional switch between original implementation of zlib suffix and new depending on conda packaging or not

* point to occt v0.7.6

* make conditional import of BRepAdaptor_HCompCurve

* try removing libxml2 include path

* minor changes

* Test nix builds

* Test nix builds using only a single python version (in order to limit cpu/memory usage)

* remove run check

* remove testing of nix builds

* Revert "Test nix builds using only a single python version (in order to limit cpu/memory usage)"

This reverts commit 22a552a9ac.

* Revert "ci-py-only test modification"

This reverts part of commit af1e832f

* update occt version to 7.6.2 in daily builds

* Revert "Test nix builds"

This reverts commit af1e832f81.

* Complete setups for local and cloud environments. And start by adding IfcPerson as a test case for the REST api communication

* Revert changing checkout version of MVD
2022-08-15 16:40:42 +02:00
Thomas Krijnen adb2883310 #2344 Disable /MP by default 2022-08-15 13:53:23 +02:00
Dion Moult 7867c71b6e Fix IFCTester handling of falsey properties 2022-08-11 16:38:44 +10:00
Gorgious a5b1a96dfd Revert hack to automatically close enum search popups
It was insta-closing for some users
2022-08-10 21:58:00 +02:00
Carlos Villagrasa 4e5503002a Construction Type Browser, polishing of 2nd iteration (#2336)
* Polish a bit the type browser UI

* Remove SELECT from type browser

* model and geometry module tests fixed

* Polishing of type authoring layout redesign

* Further polishing of type authoring layout
2022-08-10 21:23:13 +10:00
fbpyr fa8fc161da Choco action (#2335)
* check cron based trigger isolated

* check cron based trigger isolated

* fix args

* add scheduled choco build action

* revert to original

* fix action name

* fix action name

* remove apt install as required packages exist already in the container

* remove apt install as required packages exist already in the container
2022-08-10 21:22:26 +10:00
Dion Moult e4016313c4 IfcTester now supports HTML reports 2022-08-09 17:04:12 +10:00
Dion Moult 81fdfbacd0 OffsetObjectPlacements patch now allows 3D rotations, such as to fix wrong Z axis coming from software like Solidworks 2022-08-08 14:34:06 +10:00
Dion Moult 7c2c946b2f Fix bug in diff visualisation for non-rooted entities. Refactor diff UI to data class. 2022-08-05 10:59:07 +10:00
Dion Moult 5b34e08c37 #2321 Remove IDS from IfcOpenShell to prevent confusion as it is now refactored heavily and lives in ifctester 2022-08-05 09:29:01 +10:00
Vukas Pajic 0b16c07e3a return result when calling diff() 2022-08-04 16:45:10 +02:00
Vukas Pajic 0210131a56 enhance ui for ifc-diff 2022-08-04 16:44:22 +02:00
Vukas Pajic a44d7e997a typo 2022-08-04 10:25:30 +02:00
Vukas Pajic 1df8908689 fix commit mistake 2022-08-04 10:24:13 +02:00
Vukas Pajic f9daba9fba filter diff with IFCSelector 2022-08-04 10:04:06 +02:00
Vukas Pajic fd6f2f3fc4 Diff can be restricted by elements that match Selector query 2022-08-04 09:54:11 +02:00
Dion Moult a4d0378405 More IfcDiff optimisations (461s->247s), bump DeepDiff version, less false positives with more accurate number comparisons 2022-08-04 17:49:18 +10:00
Dion Moult 1629205c3f Some optimisations to IfcDiff for a 50% speed up (461s down to 300s on sample data) 2022-08-04 11:47:34 +10:00
befr d058f17c15 add logic to build blenderbim-nightly chocolatey package 2022-08-04 11:05:12 +10:00
Carlos Villagrasa bbb3b62b8a Construction Type Browser, 2nd iteration (#2334)
* Polish a bit the type browser UI

* Remove SELECT from type browser

* model and geometry module tests fixed

* Polishing of type authoring layout redesign
2022-08-04 11:04:40 +10:00
Dion Moult f9ef00fd45 WIP experimental layout for authoring tool with Carlos and Vukas 2022-08-03 19:03:47 +10:00
Dion Moult 709c530434 Fix bug where MergeDuplicateTypesByTag recipe would've left multiple IfcRelDefinesByType relationships which is no good 2022-08-03 17:33:23 +10:00
Dion Moult 0ee93294dd Fix bug where element types wouldn't load if a filter was applied 2022-08-03 17:11:56 +10:00
Dion Moult 73124dd597 Fix failing tests 2022-08-02 19:34:12 +10:00
Dion Moult 759e134e3b Check and correct for object mode in operator, not in poll, as operator may be called headlessly (e.g. in export function).
Note that after the operator has been refactored to use the core / tool design pattern, the poll code may return if necessary.
2022-08-02 19:34:12 +10:00
Dion Moult 1f11354188 Add support for adding non-library based classification references for IFC2X3 2022-08-02 19:34:12 +10:00
Vukas Pajic eaffb9d8c0 Remove outdated test in "search" 2022-08-02 10:53:02 +02:00
Vukas Pajic f297b1709d add search to pytest.ini 2022-08-02 10:52:13 +02:00
Carlos Villagrasa 1f637660d1 model and geometry module tests fixed 2022-08-02 18:13:31 +10:00
Carlos Villagrasa c349523ea9 Remove SELECT from type browser 2022-08-02 18:13:31 +10:00
Carlos Villagrasa 5cc11a170b Polish a bit the type browser UI 2022-08-02 18:13:31 +10:00
Dion Moult 21094c59d9 API now supports adding classifications by identifier instead of from a library 2022-08-02 10:10:02 +10:00
Vukas Pajic 8ca5dd747e Fix issues with updating groups 2022-08-01 18:32:19 +02:00
Dion Moult ffe9ac6614 Run black 2022-08-01 19:45:36 +10:00
Dion Moult d2083b9a3d Refactor: move UI code for construction types panel into UI file 2022-08-01 19:42:57 +10:00
Dion Moult 70d1ad59c2 Merge pull request #2315 from cvillagrasa/v0.7.0
Addition of Construction Type Browser
2022-08-01 18:42:09 +10:00
Carlos Villagrasa 53687e6b7c Merge branch 'IfcOpenShell:v0.7.0' into v0.7.0 2022-08-01 10:41:33 +02:00
Vukas Pajic 67993071a6 UIlist no longer closes after adding group to group 2022-08-01 10:32:05 +02:00
Vukas Pajic 29c98a5996 Support for nested IfcGroups 2022-08-01 10:16:27 +02:00
Dion Moult 5b5a4649c5 Fix #2310. Manually patch applicable class errors in official IFC pset templates. 2022-08-01 13:05:57 +10:00
Dion Moult d654110fc1 Support removing representations from IFC models that do not correctly follow the convention that mapped representations come from types 2022-08-01 11:23:35 +10:00
Carlos Villagrasa 735f308abd Merge branch 'IfcOpenShell:v0.7.0' into v0.7.0 2022-07-28 23:50:10 +02:00
Dion Moult f86f988d6e Fix #2318. Hotfix only. Needs proper code review. 2022-07-28 12:17:23 +10:00
Sigma Dimensions a1a684cd2b refactor BBIM Module Workplans (data loading) (Part 2of2) 2022-07-28 01:32:08 +01:00
Carlos Villagrasa 6180f5be33 Merge branch 'IfcOpenShell:v0.7.0' into v0.7.0 2022-07-27 08:37:39 +02:00
Carlos Villagrasa cd58b994dd Renaming AddConstrTypeInstance 2022-07-27 08:24:50 +02:00
Carlos Villagrasa 40854eb3d3 Renaming constr_type back to relating_type 2022-07-27 08:18:34 +02:00
Carlos Villagrasa 79453a6ae0 Renaming constr_class back to ifc_class 2022-07-27 08:11:52 +02:00
Bruno Postle eec4c23017 Transfer psets and style representations when appending a material 2022-07-27 09:53:22 +10:00
Sigma Dimensions beeba10b22 refactor BBIM sequence module - workplans (add, edit, delete) 2022-07-26 19:55:47 +01:00
Carlos Villagrasa 7a6005d0ea Merge branch 'IfcOpenShell:v0.7.0' into v0.7.0 2022-07-26 20:43:38 +02:00
Carlos Villagrasa 58150a296d Revert "Merge remote-tracking branch 'origin/master' into v0.7.0"
This reverts commit 14bca5d199, reversing
changes made to 7321138d57.
2022-07-26 20:20:29 +02:00
Dion Moult 7de454337d Minor fix 2022-07-26 10:33:40 +10:00
Carlos Villagrasa 3e25ef9222 Merge branch 'IfcOpenShell-v0.7.0' into v0.7.0 2022-07-26 01:39:49 +02:00
Carlos Villagrasa 9278e43d72 Merge branch 'v0.7.0' of https://github.com/IfcOpenShell/IfcOpenShell into IfcOpenShell-v0.7.0 2022-07-26 01:39:09 +02:00
Dion Moult fafdc76494 Minor fix 2022-07-26 09:30:04 +10:00
Carlos Villagrasa 99c47069cd Tests polished 2022-07-26 01:22:22 +02:00
Carlos Villagrasa cee48d7424 Some more renaming/refactoring 2022-07-26 01:21:51 +02:00
Ryan Schultz dc7062e182 fix broken links in Documentation 2022-07-25 14:55:37 -05:00
Vukas Pajic 5f6c584a58 fix error where prop name wasn't shown 2022-07-25 12:25:55 +02:00
Vukas Pajic 5f7630e527 added test for creating new ifcgroups 2022-07-25 11:13:15 +02:00
Gorgious 733e80737a Fix error messages when using the search operator on blank file (F3) 2022-07-23 15:03:26 +02:00
carlos 64752e52c9 Tuning feature tests 2022-07-23 00:39:17 +02:00
carlos 6c260ef5c9 Margins function for UILayouts 2022-07-23 00:38:26 +02:00
carlos e0e0572ff5 Minor renaming and bug fixing 2022-07-23 00:37:31 +02:00
Carlos Villagrasa a3942ee5e2 Merge branch 'IfcOpenShell:v0.7.0' into v0.7.0 2022-07-22 18:42:25 +02:00
Vukas Pajic 40d5a94e2d Added new test for Selector UI 2022-07-22 09:37:46 +02:00
Vukas Pajic f9fe1607ff load_query now closes automatically 2022-07-22 08:20:06 +02:00
Gorgious56 2a019e8090 Enum search popup now automatically closes on item selection
+ move close_operator_panel higher in hierarchy to access it
2022-07-21 17:50:43 +02:00
Gorgious56 901a582c6c Add tooltip to append library element operator 2022-07-21 16:57:31 +02:00
Vukas Pajic 29a4f78689 Integrate ifcgroups with selector 2022-07-21 16:10:10 +02:00
Vukas Pajic f1e0375b6a api: assign_group now expects product to be a list
* minor change to assign_group

* api: assign_group now expects product: list
2022-07-21 10:14:58 +02:00
Vukas Pajic 52e354d1b8 delete search.feature (not ready yet) 2022-07-21 09:31:54 +02:00
Vukas Pajic eef961a39e Merge branch 'v0.7.0' into v0.7.0 2022-07-21 08:37:44 +02:00
Vukas Pajic fcab5d445f test features 2022-07-21 08:20:25 +02:00
Dion Moult b534895ae3 Slightly more dodgy but more robust test dependency installation script 2022-07-21 15:44:11 +10:00
Vukas Pajic 5b76e83965 Selector: added new tests and improved UX
Selector: added tests to check non-standard characters and missing values
2022-07-21 07:37:48 +02:00
Dion Moult a21b73225a Fix #2296. Bug where material and profile psets couldn't be removed. 2022-07-21 15:12:00 +10:00
Dion Moult a11a4032f6 You can now audit and view basic results using the IfcTester webapp 2022-07-21 13:13:38 +10:00
carlos a09f864651 Fetch latest commits 2022-07-20 19:17:52 +02:00
Vukas Pajic 609fd35410 quality of life improvements :) 2022-07-20 14:54:03 +02:00
Vukas Pajic df0c136b6c users can now add selection to ifcgroup 2022-07-20 13:48:26 +02:00
Vukas Pajic ce6d4ea59a match elements when attribute is none and negation used 2022-07-20 09:33:58 +02:00
Vukas Pajic 29594b50b5 test when value does not exist 2022-07-20 09:06:04 +02:00
Vukas Pajic 2a2da56a0e added test to check non standard characters 2022-07-20 08:32:36 +02:00
Gorgious dd041478b3 Add utility method to retrieve dynamic enum items without needing a reference to the callback
This is useful because trying to directly access a dynamic enum with an empty items list throws an error in the console
+ Remove prop search from template_type in pset ui which has only 2 elements
2022-07-19 22:17:39 +02:00
Vukas Pajic 650e5b0cd3 Added UI for IFC Selector Tool
UI for IFC Selector tool
2022-07-19 14:54:39 +02:00
Vukas Pajic afa0db3c7e all tests in test_selector.py now passing 2022-07-19 14:51:48 +02:00
Gorgious56 b9f1f3438c Fix typo 2022-07-19 14:30:32 +02:00
Vukas Pajic 31f21dcb29 abstract away ui code from operator 2022-07-19 14:16:59 +02:00
Vukas Pajic 64a22fe5c6 further refinements 2022-07-19 13:55:20 +02:00
Dion Moult 3f85140d60 Continuing adding tests for the refactored property support 2022-07-19 20:38:53 +10:00
Gorgious56 1b1588359f Ifc class suggestion (#2290)
* You can now use suggestions in ifc class enum search popup

* Move data to data submodule

* Fix error when suggestion mapping contains only one value

* Add predefined types to the search popup

* Use defaultdict to be able to add suggestions later

* Support predefined types and format name to display the ifc class
and fix bug where the prop is not defined in the suggestion dictionary

* Move data retrieval to data module

* Simplify prop search items retrieval

* Support prop search for more enums
2022-07-19 10:19:58 +02:00
Vukas Pajic 4c562c1af0 turn ui into popup operator 2022-07-19 10:05:20 +02:00
Vukas Pajic a0fdb9f777 update according to review comments 2022-07-19 09:21:13 +02:00
Vukas Pajic 2c29f89fe9 Selector - update regex for pset filter 2022-07-19 09:19:32 +02:00
Dion Moult f4aac566d5 Handle cyclic task dependencies in schedule cascading and CPM analysis 2022-07-19 12:39:54 +10:00
Dion Moult 57521bd106 Whoops 2022-07-19 09:47:32 +10:00
Dion Moult 1413cf4f9d Fix bug when adding material sets to a non parametric object 2022-07-19 09:46:28 +10:00
Vukas Pajic 3fa74469f4 minor changes 2022-07-18 15:39:19 +02:00
Vukas Pajic e3d9dd747d draft
endofday 1207

240pm 14/07

draft version

cleanup
2022-07-18 15:11:27 +02:00
Vukas Pajic d71ebb8d25 fix typo 2022-07-18 14:44:13 +02:00
Vukas Pajic 0097d98669 fix #2289 2022-07-18 14:42:39 +02:00
Thomas Krijnen dd635340aa Retry schema macro rewriting 2022-07-18 13:51:45 +02:00
Thomas Krijnen 1b06cb8014 Retry schema macro rewriting 2022-07-18 13:04:21 +02:00
Thomas Krijnen 163e10b608 More schema macro rewriting 2022-07-18 11:57:02 +02:00
Thomas Krijnen dc67287d4b Correct extern function declaration names 2022-07-18 10:46:01 +02:00
Thomas Krijnen 73f959c45a Correct extern function declaration names 2022-07-18 10:08:46 +02:00
Thomas Krijnen 65e66352b7 CMake typo error 2022-07-18 09:31:12 +02:00
Thomas Krijnen 205ff0914c Respect tokens in macro string concatenation 2022-07-18 09:24:20 +02:00
Dion Moult 2e76a800f5 You can now download modified IDSes via the webapp 2022-07-18 14:06:29 +10:00
Dion Moult 1890bf4cb9 You can now load multiple Blends simultaneously when linking IFCs 2022-07-18 10:58:25 +10:00
Dion Moult 3fd472549e Fix bug where material categories don't exist in IFC2X3 2022-07-18 10:29:32 +10:00
Thomas Krijnen 28d15a6c9f Add IFC4x3 (https://standards.buildingsmart.org/IFC/RELEASE/IFC4_3/annex-a-express.html) 2022-07-17 21:45:07 +02:00
Thomas Krijnen 6026e037fa Update schema references 2022-07-17 21:13:46 +02:00
Vukas Pajic 0ca90817d8 Fix for Issue #2288 2022-07-17 10:08:24 +02:00
Dion Moult 3436f3e0bb Visualising diffs now show results from the actively loaded IFC 2022-07-16 11:53:08 +10:00
Dion Moult 71f0170966 IDS webapp with some basic read/write functionality 2022-07-15 15:58:39 +10:00
Dion Moult 97cd07226d Support JSON output for IDS results 2022-07-15 15:14:04 +10:00
Dion Moult 309ce20068 Added error sentences for IDS property facet results 2022-07-15 14:38:57 +10:00
Dion Moult 282c140c14 More aggressive refactoring for IfcTester to break up the monolithic codebase 2022-07-15 14:09:55 +10:00
Bruno Perdigão bdf46f9431 Update installation.rst
Minor correction
2022-07-15 12:42:19 +10:00
Dion Moult e79068854a Refactor IDS into IfcTester with less magic and less code
* String building code all deleted and replaced with more maintainable code
 * Obscure features like metaclasses deleted
 * Regular constructors used instead of factory create and parse methods
 * Use Python class naming convention
 * Use polymorphism more (e.g. asdict, init) for facet classes
 * No more boolean any/and as users may want to test everything and not fail early
 * Error state is stored instead of streamed to logger so it can be tested and more flexible formatting
2022-07-15 09:57:40 +10:00
carlos 7be93b5386 Add testing to construction type previews 2022-07-15 01:09:08 +02:00
carlos 1b4da58a15 Restore IFCFileSelector UI rendering 2022-07-14 13:59:47 +02:00
Carlos Villagrasa 356ce48af5 Merge branch 'IfcOpenShell:v0.7.0' into v0.7.0 2022-07-14 13:42:02 +02:00
carlos 3f24d54e8f Distinguish bt active and selected constr type + renaming ifc_class -> constr_type 2022-07-14 13:40:57 +02:00
Vukas Pajic 1586c85314 added option to import all library assets 2022-07-11 11:07:40 +02:00
carlos f9f9746a9a Element Type Browser UI refactoring and improved wording 2022-07-11 07:53:14 +02:00
carlos 493faf22ff Move col_with_margins utility to helper.py 2022-07-11 07:52:10 +02:00
Thomas Krijnen bab6313313 Work on more readable ast for express schema parser 2022-07-10 21:51:25 +02:00
carlos 618bed3889 Improved version with optional cascading 2022-07-10 07:46:30 +02:00
carlos 8c9115c0ff Merge remote-tracking branch 'origin/v0.7.0' into v0.7.0 2022-07-09 01:22:44 +02:00
Carlos Villagrasa 0a561d1a30 Merge branch 'IfcOpenShell:v0.7.0' into v0.7.0 2022-07-09 01:19:15 +02:00
dependabot[bot] 443af3f7e7 Bump lxml from 4.6.5 to 4.9.1 in /src/ifcopenshell-python/ifcopenshell
Bumps [lxml](https://github.com/lxml/lxml) from 4.6.5 to 4.9.1.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-4.6.5...lxml-4.9.1)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-07 09:29:42 +02:00
Thomas Krijnen 2f6ac0be9f Fix test_wall_opening invocation 2022-07-07 08:46:38 +02:00
Thomas Krijnen 07c152f513 Submodule 2022-07-06 22:09:13 +02:00
Thomas Krijnen 158c62bdca Update ci-py-only.yml 2022-07-06 22:01:15 +02:00
Thomas Krijnen 1029271e91 Update ci-py-only.yml 2022-07-06 18:20:32 +02:00
Thomas Krijnen 9b59d24fc7 Update test_wall_opening.py 2022-07-06 18:20:25 +02:00
Thomas Krijnen 1d0e8c59d2 Capital OR 2022-07-06 16:19:57 +02:00
Thomas Krijnen b479d82251 CI workflow with BUILD_CONVERT=Off 2022-07-06 16:09:52 +02:00
Thomas Krijnen 6b6ac38f96 Link serializers also with only BUILD_IFCPYTHON 2022-07-06 16:06:16 +02:00
Vukas Pajic 57fe895ae0 ensure modules are installed to blender python
thankyou to @Gorgious56 for help on this one ;)  https://blender.stackexchange.com/a/238995/130742
2022-07-06 13:56:24 +02:00
Gorgious56 4195d41e4c Enums from attributes can now be searched by name 2022-07-06 12:09:37 +02:00
Dion Moult 7eac5397cd Run black 2022-07-06 18:29:22 +10:00
Dion Moult 084823164e Fix #2264 refactor property data structures to be separate from attributes 2022-07-06 18:25:29 +10:00
Gorgious56 87f110bae5 Add search operator to material enum field 2022-07-05 15:24:10 +02:00
Thomas Krijnen 952719f19b #2260 correct init order 2022-07-05 10:27:44 +02:00
Thomas Krijnen 2ab4e44248 #2256 try explicit cast for clang 2022-07-05 09:46:19 +02:00
Vukas Pajic 6b9e670bf3 missing comma 2022-07-05 07:41:51 +02:00
Vukas Pajic 9e87f0f027 fix for issue #2261 2022-07-05 07:34:23 +02:00
Gorgious56 c7272065e6 Improve prop search v2 (#2262)
* Minor fixes

* Fix #2257 : enums with a different id and name now correctly show the name in the search field

* Add prop search to template_type
2022-07-04 23:09:03 +02:00
carlos 14bca5d199 Merge remote-tracking branch 'origin/master' into v0.7.0 2022-07-04 18:52:11 +02:00
Carlos Villagrasa dbeb7d392c Merge branch 'IfcOpenShell:v0.7.0' into v0.7.0 2022-07-04 18:50:53 +02:00
Vukas Pajic 22cb7b3b67 Merge pull request #2258 from vulevukusej/create-pset_templates-in-bbim
support enums in new pset_templates
2022-07-04 14:20:14 +02:00
Vukas Pajic 018be92063 support enums in new pset_templates 2022-07-04 13:48:51 +02:00
Gorgious56 37f91461d2 Add prop search to fields with a lot of enumerated values (#2253)
* Add prop_search layout function

* Display props operator

* display search for pset

* Display search for root

* Update operator and UI layout function

* Add search buttons to brick, geometry, patch, project, pset, pset_template, root and unit modules enums
2022-07-03 22:37:41 +02:00
Vukas Pajic c73fedaaaf fix error that stopped user from adding properties 2022-07-01 13:41:20 +02:00
Gorgious56 4ad4bdef3b Initial Commit 2022-06-30 09:44:00 +10:00
Vukas Pajic e50259f8fa fix error I accidentally introduced. 2022-06-29 18:07:32 +02:00
carlos 7321138d57 Adding a preview popup for IFC Type additions 2022-06-29 17:43:28 +02:00
carlos 319f63c861 Preventing error when IfcSpatialElement has been deleted and an IFC Type instance is added 2022-06-29 17:39:40 +02:00
carlos 662cd6232c Preventing edge case (vertical slabs & horizontal walls) 2022-06-29 17:37:42 +02:00
Vukas Pajic 3461a1e96f Submodule_mvd 2022-06-29 17:23:27 +10:00
Vukas Pajic 919c007509 Submodule 2022-06-29 17:23:27 +10:00
Vukas Pajic 5b77001568 updated according to comments 2022-06-29 17:23:27 +10:00
Vukas Pajic 1f4022a41b fix error from util/element.py 2022-06-29 17:23:27 +10:00
Vukas Pajic c8c9262090 initial commit
-Added support for adding and editing enums
-changed behaviour of template psets that have enums.
2022-06-29 17:23:27 +10:00
Thomas Krijnen 104cabfb67 Minor things for drawing profiling and a warning 2022-06-29 11:35:43 +10:00
Kristoffer Andersen 4978a67e19 Add more subdirs for blenderbim build trigger
Add more subdirectories to the github actions workflow to trigger builds whenever a change occurs in relevant directories.
2022-06-29 11:33:44 +10:00
dependabot[bot] e44e03f02e Bump numpy in /src/ifcopenshell-python/ifcopenshell
Bumps [numpy](https://github.com/numpy/numpy) from 1.21.0 to 1.22.0.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/HOWTO_RELEASE.rst)
- [Commits](https://github.com/numpy/numpy/compare/v1.21.0...v1.22.0)

---
updated-dependencies:
- dependency-name: numpy
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-22 09:21:40 +02:00
Thomas Krijnen 5a636a925b #2244 file.add() Don't fail on project without unit info 2022-06-21 14:15:59 +02:00
Dion Moult d23f14f8aa Cleaner IFC doc generation showing all contextual entities not only those related to the target instance 2022-06-21 22:05:26 +10:00
Dion Moult 1706ca5293 Fix bug where adding heavy classification references led to duplicate classification systems 2022-06-21 19:28:53 +10:00
Dion Moult ff3e2f14e1 Inherited and overridden classification references per system is now supported 2022-06-21 19:28:29 +10:00
Dion Moult c4433489b7 IDS now supports type casting 2022-06-21 17:01:12 +10:00
Dion Moult 4761c58571 IDS now supports failing inverse checks 2022-06-21 17:00:46 +10:00
Dion Moult 1de6a7e792 Improve geolocation docs with rotation diagram and scale explanation 2022-06-19 17:53:37 +10:00
Thomas Krijnen 7d6ba89496 Fixes after restructuring 2022-06-15 15:21:46 +02:00
Thomas Krijnen c4dc3934fa Add missing file 2022-06-15 14:46:37 +02:00
Thomas Krijnen 25f1d21a85 Fixes for some of the header renames 2022-06-15 14:23:58 +02:00
Thomas Krijnen 2bd6d9343c Fixes for some of the header renames 2022-06-15 13:56:47 +02:00
Thomas Krijnen bc2d76e685 Include-what-you-use 2022-06-15 13:41:13 +02:00
Thomas Krijnen 124f786007 Update Kernel.cpp 2022-06-14 17:18:44 +02:00
Thomas Krijnen b49cfe9744 msvc /mp 2022-06-14 15:25:14 +02:00
Thomas Krijnen 6f5f189443 Missing files 2022-06-14 15:24:38 +02:00
Thomas Krijnen d6f8448c83 IfcGeom refactoring pt. 1 2022-06-14 15:02:54 +02:00
Thomas Krijnen 0f85890c72 #2237 workaround for openings on extrusions of compound profiles 2022-06-11 15:48:04 +02:00
Thomas Krijnen bf3eb68b67 template template template template template 2022-06-10 11:20:01 +02:00
Dion Moult ce3a6bba0f Fix bug where MS Project files with optional weekdays failed to import 2022-06-10 19:07:58 +10:00
Thomas Krijnen f1e3d9c573 typename typename typename typename typename typename 2022-06-10 11:07:40 +02:00
Thomas Krijnen 0a30d1a438 #2213 Read precision from rep context in create_shape() 2022-06-10 11:00:45 +02:00
Dion Moult 8311983d5e You can now toggle visibility and wireframe modes of linked models and fix bug where links with the same name were not unique 2022-06-09 21:48:13 +10:00
Dion Moult 97bf4e3d0d Fix bug where object class selection didn't work with linked models 2022-06-09 21:46:24 +10:00
Dion Moult 15661536dc Extract elements recipe now handles spatial elements as an upgrade to the ExtractSpaces recipe 2022-06-09 19:01:32 +10:00
Dion Moult f451c51451 Fix bug where some appended assets created invalid graphs due to poor purging 2022-06-09 18:59:20 +10:00
Dion Moult b5e27e4ced Fix bug where transaction history was polluted when starting a new file in an existing Blender session 2022-06-09 15:30:18 +10:00
Dion Moult 95881c6258 Fix embarrassing geolocation bug for showing / setting grid north 2022-06-09 10:22:02 +10:00
Thomas Krijnen cb8cfd7905 Update CMakeLists.txt 2022-06-08 13:59:29 +02:00
Dmitry Sedov 96fe1018ed implemented the minimal build version 2022-06-08 13:46:18 +02:00
Thomas Krijnen 73c006a977 Use OCCT github mirror for reliability 2022-06-08 13:37:48 +02:00
Thomas Krijnen 133fa5547b Use OCCT github mirror for reliability 2022-06-08 13:37:06 +02:00
Dion Moult c95d263ca5 #2224 Write documentation for dealing with large models 2022-06-08 19:10:20 +10:00
Dion Moult 3507920c09 #2224 Expose unload project in UI to aid in unlinking IFCs for coordination only 2022-06-08 19:09:55 +10:00
Dion Moult cdabc507e1 #2224 New headless import script 2022-06-08 14:09:02 +10:00
Dion Moult bcbee0659b #2224 Coordination mode now allows interspersed (much faster) object merging during model loading to crunch down large models, with a new by type merge mode 2022-06-08 12:10:01 +10:00
Dion Moult 053e4e1185 #2224 Enabling coordination mode now excludes types and openings 2022-06-08 12:06:59 +10:00
Dion Moult d76679a45f #2224 Cache seems unstable for some large models so allow option to disable 2022-06-08 11:56:22 +10:00
Dion Moult a1ed78e755 #2224 You can now specify element offset / limit ranges when loading models 2022-06-08 11:53:58 +10:00
Dion Moult d0f38bc919 #2224 You can now filter models by type when loading 2022-06-08 11:32:00 +10:00
Dion Moult 4681d3198f #841 #2224 Users can now enable native mesh processing with support for FBSM geometry 2022-06-08 10:19:55 +10:00
Dion Moult 96e4641ebf #2224 Optimise import by 10-40% by removing unnecessary slow traversal of representations 2022-06-08 09:14:36 +10:00
Dion Moult 2ab808a216 #2224 You can now bulk check/uncheck filter categories on import 2022-06-08 09:09:35 +10:00
Dion Moult 1ec0e1ce19 Fix bug with displaying inherited psets by accident. 2022-06-08 09:07:22 +10:00
bimworld bc734c263e Comment deconstructor IfcFile 2022-06-07 12:14:30 +02:00
Thomas Krijnen a96bffa341 Update schema.py 2022-06-06 10:31:33 +02:00
Thomas Krijnen fb3e9ad1b7 Quality IteratorSettings name in wrapper gen 2022-06-06 10:13:48 +02:00
Thomas Krijnen 4c854fbb62 Try to do less allocation during parse, favour upper case entity names in spf 2022-06-06 09:59:32 +02:00
Thomas Krijnen 0e8d7bdc97 Log result of unify() in boolean_operation() 2022-06-06 09:58:57 +02:00
Thomas Krijnen a92d37cd64 Quick fix py create_shape() setting propagation 2022-06-06 09:58:42 +02:00
Dion Moult 00e46ce39e More meaningful percentage completion in console when loading models 2022-06-06 09:59:43 +10:00
Esteban Dugueperoux 54b82fd149 Update README travis badge URL 2022-06-03 09:24:22 +02:00
Esteban Dugueperoux e508fb44f2 Update CMake release requirement 2022-06-02 13:33:06 +02:00
Dion Moult 89e2ad9262 Write documentation for georeferencing 2022-06-02 19:01:09 +10:00
Dion Moult 419901649e You can now configure the distance limit for false origin offsets 2022-06-01 14:25:30 +10:00
Dion Moult 18cb767a95 More IDS test structuring and add support for checking logical unknown 2022-05-31 22:27:37 +10:00
Thomas Krijnen a11b51c971 Revert "Temporarily disable release tag guard"
This reverts commit c6b86e45f3.
2022-05-31 11:30:25 +02:00
Thomas Krijnen d7f913d464 #2218 Decreate (hardcode) angular tolerance on boolean op extrusion detection 2022-05-31 11:24:27 +02:00
Dion Moult 0d982090e3 More descriptive test names and slightly more concise IDS doc layout 2022-05-31 19:13:39 +10:00
Thomas Krijnen be6617d9f9 Update release.yml 2022-05-31 10:31:56 +02:00
Thomas Krijnen fc0efa2339 Tweak release.yml configure opts 2022-05-31 10:21:45 +02:00
Thomas Krijnen c6b86e45f3 Temporarily disable release tag guard 2022-05-31 09:55:40 +02:00
Thomas Krijnen 53b6247bb8 Unify release.yml and ci.yml deps 2022-05-31 09:54:10 +02:00
Thomas Krijnen eab06bda6c Submodule 2022-05-31 09:43:53 +02:00
Thomas Krijnen 524fa58f05 Remove erroneous .gitmodule entry 2022-05-31 09:39:31 +02:00
Dion Moult 4c4846bc8f Support userdefined process types in util module 2022-05-31 16:23:13 +10:00
Dion Moult 0dfe1d995f Update IDS to support process types and require uppercase entities 2022-05-31 16:22:44 +10:00
Dion Moult a4434413d2 Fix bug where rooted tasks with no subactivities would not export correctly to P6 2022-05-31 15:36:13 +10:00
Dion Moult 5ca19ce2f7 WIP update to support current IDS v0.6 2022-05-31 15:35:47 +10:00
Dion Moult 3e1c2c4daf Code review and tests for georeferencing module refactor 2022-05-29 23:44:18 +10:00
Dion Moult 2d4e316df2 Fix bug where unit editing failed for named units 2022-05-29 17:25:28 +10:00
maxfb87 4b426e1fc0 Refactor Georeference Module 2022-05-29 15:54:06 +10:00
Dion Moult d2ad4b2b68 Allow rooted tasks when exporting schedules to P6XML 2022-05-29 11:15:37 +10:00
Dion Moult 67522e03d1 Fix import error bugs when importing P6XML to enterprise environments 2022-05-27 17:17:31 +10:00
AToradaIBIM 24f307130c BCFv3 "get_comments" error #2212
Fix for Issue #2212 

The method get_comments wasn't working as expected because on line 649, it was trying to access the element "Topics" instead of "Topic", based on the XSD "Topics" doesn't exist.
2022-05-25 11:19:53 +02:00
Dion Moult 0a3e5f65fa Fix multiple specifications in IDS 2022-05-25 17:49:12 +10:00
Dion Moult e302fea33b Resolve merge conflict. Still WIP IDS test cases. 2022-05-22 22:10:28 +10:00
Dion Moult c352181f8c Fix bug where underlays didn't work 2022-05-22 21:32:57 +10:00
Thomas Krijnen 3a1416536a Oops 2022-05-17 22:31:37 +02:00
Thomas Krijnen 4eec863cad Example for turning IDS test cases into spec. Sorry for butchering your code @Moult 2022-05-17 22:21:11 +02:00
Thomas Krijnen 96bcd31d99 #2202 Check for nested compound of solid in boolean result handling 2022-05-16 14:24:57 +02:00
Thomas Krijnen b09ff828de #2186 rerun codegen 2022-05-16 13:07:40 +02:00
Thomas Krijnen 3cb68ca388 #2186 optional attribute setter fix 2022-05-16 13:07:40 +02:00
Dion Moult c95d3693ea OpenSourceBIM contributors badge now in README 2022-05-16 11:35:39 +10:00
Dion Moult 67d2ab2577 Write documentation on materials, locations, and measurements 2022-05-16 08:15:31 +10:00
Dion Moult 970b24b63b #1153 New annotation objects have their placement Z in the drawing direction to allow for 2D geometry. 2022-05-15 11:45:47 +10:00
Dion Moult fdaae048c2 Implement IDS partOf facet 2022-05-12 14:33:44 +10:00
Dion Moult 4da5a38237 Implement IDS material null checks, inheritance checks, and set item checks 2022-05-12 12:06:23 +10:00
Dion Moult 0cf2d7e05e Implement IDS uri/use/instructions for material facet 2022-05-11 23:30:10 +10:00
Dion Moult 3122cf21db Implement IDS property facet measure conversions 2022-05-11 19:59:10 +10:00
Dion Moult 4bf25d5d9c Minor fix 2022-05-11 18:46:27 +10:00
Dion Moult dc10c7a360 Implement null check for IDS properties, and support restrictions 2022-05-11 17:10:22 +10:00
Dion Moult 94e082fc7d Support IDS uri/use/instructions for property facets 2022-05-11 15:30:39 +10:00
Dion Moult 9671df8491 You can now choose between lightweight and full classifications 2022-05-11 15:19:31 +10:00
Dion Moult 8aa38917eb New classification utility module 2022-05-11 15:19:17 +10:00
Dion Moult 0774100606 IDS classification facets not handle inheritance, full refs, and restrictions 2022-05-11 14:49:47 +10:00
Dion Moult 95b48b02e4 Add support for IDS classification uri, use, and instructions 2022-05-11 13:27:19 +10:00
Dion Moult c5de1d8727 Add IDS support for restrictions in attribute facets and handle inheritance 2022-05-11 13:06:15 +10:00
Dion Moult 7e09ab0ced Add support for IDS attribute use/instructions 2022-05-11 10:12:36 +10:00
Dion Moult eb3e137a6e #2196 Get psets now handleds inheritance by default 2022-05-11 09:18:23 +10:00
Dion Moult f528ad9744 Minor fix 2022-05-10 23:49:14 +10:00
Dion Moult 650f9eb7f5 Attribute filtering in IDS now checks null-like values too. 2022-05-10 22:42:21 +10:00
Dion Moult a78d6f42e5 Allow IDS to audit any entity, not just IfcObjects 2022-05-10 22:13:28 +10:00
Dion Moult 4326a74c64 Fix IDS to not allow subclasses and allow restrictions in the class name 2022-05-10 21:40:35 +10:00
Dion Moult 08fc62d4d9 Add support for userdefined predefined types in IDS entity facets 2022-05-10 21:20:10 +10:00
Dion Moult ae298de8dc Implement identifier, desc, and instructions for specification node in IDS 2022-05-10 19:26:12 +10:00
Dion Moult a24c4b269a Fix mandatory title and optional date and check invalid dates in IDS 2022-05-10 17:36:24 +10:00
Dion Moult 083d9d3e3e Implement attribute facet for IDS 2022-05-10 16:23:07 +10:00
Dion Moult 12e7ed356c Fix IDS namespace bug that prevented XML encoding, simplify XML writing, and new to_string() method to decrease dependency on the filesystem 2022-05-10 16:22:38 +10:00
Dion Moult 3f15dd71b1 Run black on ids module 2022-05-10 16:18:08 +10:00
Adrien SCHVALBERG 42448cae4e Add missing exports for ifcopenshell-python when we build shared libs. 2022-05-09 14:13:47 +02:00
Dion Moult 7e28d193ec #2185 Document installation and hello world examples for IfcOpenShell-python 2022-05-09 19:27:33 +10:00
Thomas Krijnen 8f2b32532c validate.py text result formatting improvements 2022-05-09 11:00:04 +02:00
Dion Moult f0a00cbc94 #2185 Set up auto generated API reference documentation via sphinx-autoapi 2022-05-09 15:35:52 +10:00
Dion Moult fd73b2cf0a #2185 Migrate web files to website repo 2022-05-08 19:51:17 +10:00
Adrien SCHVALBERG e5b3455533 Fix memory leak for HeaderEntity instances:
the getArgumentCount() call in IfcEntityInstanceData destructor isn't virtually dispatched so it returns 0 instead of correct number of arguments => memory leak
added IfcEntityInstanceData::clearArguments() which clears all arguments and resets the attributes_ field to nullptr

Remove unnecessary copy in IfcEntityInstanceData::setArgument() when argument is created at the call site (no more leak of original argument)

Fix memory leak in IfcFile: delete entities from both byid and entity_file_map
2022-05-08 10:21:46 +02:00
Adrien SCHVALBERG e677355438 Add IfcParse::clear_schemas() and individual Ifc___::clear_schema() to clear any resource allocated by registered schemas
Add missing virtual destructors in IfcSchema.h
2022-05-08 10:21:46 +02:00
Dion Moult 93fd3f97e3 #2111 New feature to select by style and see style usage 2022-05-08 18:03:18 +10:00
Dion Moult 910d189f35 #2188 support displaying inherited materials 2022-05-08 16:27:35 +10:00
Dion Moult c8d6d12442 The material manager now groups materials into categories 2022-05-08 15:48:09 +10:00
Dion Moult 1f3ba3d09d New makefile targets to specifically run tests of single modules 2022-05-08 15:45:47 +10:00
Dion Moult f67941221e Enable syntax highlighting in test suite for easier debugging 2022-05-08 15:24:06 +10:00
Dion Moult 8252ef82ad #2185 Write documentation about viewing construction types 2022-05-07 21:50:38 +10:00
Dion Moult 3b825e35ae #1153 You can now provide custom stylesheets, markers, symbols, and hatches 2022-05-07 20:28:24 +10:00
Dion Moult 4a4912e817 Editing URIReference properties now provides a file browse button 2022-05-07 20:26:25 +10:00
Dion Moult 5a38604ec2 #1153 Boilerplate styles and definitions now can be used with any drawing layer combination 2022-05-07 17:57:05 +10:00
Dion Moult b15e0d0e2b #2185 Commit logos and homepage mockup by Paulina Godoy and Meetlat 2022-05-07 11:48:20 +10:00
Dion Moult 5a5f52a5c2 #2185 Standardise graphic style for annotation images in documentation 2022-05-07 11:42:12 +10:00
Dion Moult 816a690519 Commit WIP website design by Paulina Godoy :) 2022-05-07 10:20:11 +10:00
Dion Moult 60303c6560 Minor fix 2022-05-06 20:51:36 +10:00
Dion Moult cc88e6f112 #2185 Write documentation about viewing attributes, pets, and qtos 2022-05-06 20:44:26 +10:00
Dion Moult 5f1b5d0c63 You can now manage actor assignments to products 2022-05-06 17:47:24 +10:00
Dion Moult b54caa8967 Person / organisation roles and acting actors are now shown 2022-05-06 16:21:12 +10:00
Dion Moult 73e048a9a8 #1153 You can now manage assigned products for all annotations 2022-05-06 15:35:39 +10:00
Dion Moult 316a2b7f53 #2185 Write documentation for viewing element classes 2022-05-06 12:46:29 +10:00
Dion Moult 42edcda8bd Deleting an element now also auto deletes its associated distribution ports 2022-05-06 10:38:38 +10:00
Dion Moult 92432f453d You can now remove ports 2022-05-06 10:35:12 +10:00
Dion Moult 4b6ebe7b1c Fix bug where deleted objects were not cleared after saving 2022-05-06 09:20:37 +10:00
Emad Aghajani 3f6d25ed43 Fixes #2175: Fixes a crash when blender is in background mode or is used as bpy Python module 2022-05-05 19:23:36 +10:00
Dion Moult d4b2cc7f2c Bump IfcOpenShell build 2022-05-05 18:00:58 +10:00
Dion Moult 53c050c6ed Port locations now sync relative to their parent even when not actively displayed in the viewport 2022-05-05 18:00:42 +10:00
Dion Moult 3213af2f48 #2185 Write documentation on the object outliner panel 2022-05-05 16:29:40 +10:00
Dion Moult 85122ba184 #2185 Document how to navigate through a model 2022-05-05 14:43:34 +10:00
Dion Moult b8791d43aa Minor documentation update for loading an IFC model 2022-05-05 12:19:40 +10:00
Dion Moult 6a82f27d48 Standalone Blender import script now available for debugging 2022-05-05 09:59:04 +10:00
Dion Moult 4e2400952a Fix #2147 #2143 Fix hanging when reloading a cache of a file with 2D and 3D data 2022-05-05 09:58:10 +10:00
Dion Moult de1dae8b6e Grids are now locked by default when loading IFCs 2022-05-05 09:28:36 +10:00
Dion Moult dd127db969 Minor documentation improvements 2022-05-04 16:04:18 +10:00
Dion Moult 194bc53bdb Minor refactor 2022-05-04 15:54:15 +10:00
Dion Moult 8c3e29c351 Split BlenderBIM and other docs to not overwhelm users. Use Furo theme for Sphinx. 2022-05-04 13:06:39 +10:00
Gorgious56 6e55a04550 Refactor Standalone section shader (#2172)
* Refactor Standalone section shader

* Remove leftover code
2022-05-03 18:21:51 +02:00
Dion Moult 9333839267 Copying an element now also copies its distribution ports 2022-05-03 18:05:27 +10:00
Dion Moult 280236290e Fix #2182. File export IFC menu item now defaults to save as to improve usability for new users 2022-05-03 17:36:55 +10:00
Dion Moult c5773b5665 Port locations are now auto synchronised when hiding ports 2022-05-03 16:50:55 +10:00
Dion Moult 96babc4506 Creating a flow segment now also creates 2 ports at either end 2022-05-03 15:48:41 +10:00
Dion Moult f8acde0801 You can now add ports to types, and ports are created when placing occurrences of that type 2022-05-03 14:32:18 +10:00
Dion Moult 32c101cf74 #1153 Implement angular dimension annotations 2022-05-02 09:20:40 +10:00
Bruno Perdigão 2a1aa535ba Added VSCode extension to Live Development section 2022-05-02 08:06:27 +10:00
Dion Moult 02903c4929 #1153 New arc from 3 points command for 2D CAD 2022-05-01 17:25:03 +10:00
Dion Moult d80e26e4ab Design new icon for CAD workspace tool 2022-05-01 15:30:37 +10:00
Dion Moult a88b83306e #1153 New arc from 2 points command for 2D CAD (based on view direction) 2022-05-01 14:43:03 +10:00
Dion Moult 9577c40386 Fix #2107. Materials and styles in the scene manager are now shown alphabetically 2022-05-01 12:01:24 +10:00
Dion Moult f54a5cf6e0 Fix #2048. Fix bug where material and style IFC links were severed after reloading a saved Blender file 2022-05-01 09:41:03 +10:00
Dion Moult abcb492e5a Fix #2174. Don't show meaningless context dropdown when reassigning class. 2022-05-01 08:57:23 +10:00
Dion Moult 4d447c169f Fix #2176 2022-05-01 08:50:25 +10:00
Dion Moult b465605b63 #1153 CAD tool now provides hotkey access to offset edges command 2022-04-30 22:55:45 +10:00
Dion Moult fb6dc45b1b #1153 New fillet command for 2D CAD supporting both bevel and chamfer 2022-04-30 22:44:37 +10:00
Dion Moult b2aca0ae36 #1153 New mitre command for 2D cad (like chamfer with 0 distance) 2022-04-30 18:17:39 +10:00
Dion Moult 03831d440c #1153 New CAD workspace with hotkeys for super fast CAD operations 2022-04-30 15:50:40 +10:00
Dion Moult ac4679a376 #1153 New CAD module with basic trim / extend tool for 2D linework 2022-04-30 11:40:19 +10:00
Dion Moult 21fee721be #1153 Implement adding and removing schedules from a sheet 2022-04-29 13:32:34 +10:00
Dion Moult 6bcf00ef31 #1153 Reimplement ability to build SVG tables from referenced ODS documents 2022-04-28 19:57:47 +10:00
Christian Martínez de la Rosa 952d1c3b79 [IfcConvert] Added IfcWorkPlan to xml export 2022-04-28 17:54:43 +10:00
Christian Martínez de la Rosa 2d7a90bd2b [IfcConvert] Fix crash when IfcWorkCalendar does not contain IfcWorkTime 2022-04-28 17:54:43 +10:00
Christian Martínez de la Rosa b14de15a68 [IfcConvert] Added Output objects in the XML file 2022-04-28 17:54:43 +10:00
Christian Martínez de la Rosa 29ecba293b [IfcConvert] Added calendars to xml output file 2022-04-28 17:54:43 +10:00
Christian Martínez de la Rosa 8396c68e75 Added task to property / quanty relationship 2022-04-28 17:54:43 +10:00
Christian Martínez de la Rosa 01c6a0d9be [IfcConver] Changed OperatesOn hierarchy level in xml task export 2022-04-28 17:54:43 +10:00
Christian Martínez de la Rosa 99d8a225a9 Get IfcTasks from IfcWorkSchedule 2022-04-28 17:54:43 +10:00
Christian Martínez de la Rosa 89f13aa1e4 [IfcConvert] Added IsSuccessorFrom and IsPredecessorTo in xml task export 2022-04-28 17:54:43 +10:00
Christian Martínez de la Rosa f089d03dc6 [ifcConvert] Add related objects in tasks 2022-04-28 17:54:43 +10:00
Christian Martínez de la Rosa a4366ef151 [IfcConvert] Export tasks in the xml conversion
The exportion in the XML format exports in a new tag, named "tasks", all the tasks from the file with a hierarchy. Each task contains the IfcTaskTime object if it has it.
2022-04-28 17:54:43 +10:00
Dion Moult 9483abcdd5 Revert "Refactor BIM_PT_gis"
This reverts commit 265ebaebb8.
2022-04-28 17:25:31 +10:00
Dion Moult 200a343746 Revert "Refactor BIM_PT_gis added files"
This reverts commit 445e77bac0.
2022-04-28 17:25:31 +10:00
Dion Moult 2313fa00cc Revert "minox fix"
This reverts commit dfb980e0d1.
2022-04-28 17:25:31 +10:00
Dion Moult 99c5f895fc Revert "Finish refactor georeference module"
This reverts commit fcd5908ac9.
2022-04-28 17:25:31 +10:00
maxfb87 fcd5908ac9 Finish refactor georeference module 2022-04-28 14:34:35 +10:00
maxfb87 dfb980e0d1 minox fix 2022-04-28 14:34:35 +10:00
maxfb87 445e77bac0 Refactor BIM_PT_gis added files 2022-04-28 14:34:35 +10:00
maxfb87 265ebaebb8 Refactor BIM_PT_gis 2022-04-28 14:34:35 +10:00
Dion Moult 07fa7003fb Minor fix 2022-04-28 14:34:18 +10:00
Ryan Schultz 3a90d664fa added 3"=1'-0" scale (a common scale), and corrected 6"=1'-0" scale 2022-04-28 14:26:37 +10:00
Dion Moult 3f28ae18c0 #1153 You can now add / remove / open schedules, implemented as IFC documents 2022-04-28 14:16:39 +10:00
Dion Moult 9ea6499b5a #2082 You can now filter by metadata existence in the selector syntax 2022-04-27 22:20:12 +10:00
Adrien SCHVALBERG 11c3a6e547 Fix ifcparse/Ifc____.h template 2022-04-27 14:08:05 +02:00
Adrien SCHVALBERG e7f3856d64 Fix shared libraries exports. 2022-04-27 14:08:05 +02:00
Dion Moult 7e7d576855 Basic WIP Australian project library with some materials and walls 2022-04-27 20:45:34 +10:00
Dion Moult cfa1428a75 Fix bug where material layer set usage axis was not consistent for non walls 2022-04-27 20:44:26 +10:00
Dion Moult d4ee74455c Show construction type descriptions as tooltips in BIM authoring tool 2022-04-27 20:36:32 +10:00
Dion Moult 07d2cc62c1 Fix #2163 bug where launching viewing apps could freeze Blender 2022-04-26 09:53:32 +10:00
Dion Moult 8aff4badf7 Minor housekeeping 2022-04-25 19:37:03 +10:00
Dion Moult aa3325c010 #1153 Implement diameter annotation 2022-04-25 10:32:33 +10:00
Dion Moult 9b13cd8d5f #1153 Dimensions can now have custom text 2022-04-25 10:02:00 +10:00
Dion Moult 0fe32c0c75 #1153 Add support for radius annotations 2022-04-25 09:54:08 +10:00
Thomas Krijnen efc43c0fe9 #1153 merge-cells option in draw 2022-04-24 14:54:49 +02:00
Thomas Krijnen 5bfaa32c7c #1153 add ray_distance to tree result 2022-04-24 14:51:24 +02:00
Thomas Krijnen 38e4ccdb0a #1153 submodule 2022-04-24 14:50:53 +02:00
Dion Moult 7b71a7a866 #1153 You can now include and exclude elements from a drawing using queries 2022-04-24 22:15:14 +10:00
Dion Moult b5ee20cb7a #1153 New global referencing property determines whether or not a drawing is mean to be referenced from all other drawings 2022-04-24 18:39:22 +10:00
Dion Moult cc8da4abf4 #1153 Symbol background option for text is now stored in a pset 2022-04-24 13:13:21 +10:00
Dion Moult f2c4b20187 #1153 Experimental support for curve bounded planes for 3D annotations 2022-04-24 12:25:04 +10:00
Dion Moult 7c460bcf29 #1153 Viewport decoration now supports miscellaneous linework and fills 2022-04-24 11:12:24 +10:00
Dion Moult 31ddb0f2c5 #1153 Add support for Annotation3D representations 2022-04-24 10:00:31 +10:00
Thomas Krijnen c2cad06cfa Default BUILD_QTVIEWER to off for the time being 2022-04-23 15:39:03 +02:00
Dushyant Basson 421b58850c Updated to use Qt5 2022-04-23 15:19:10 +02:00
Dushyant Basson 7c89aa1098 Enabled option to build QtViewer 2022-04-23 15:19:10 +02:00
Dushyant Basson be7e85fc2d Revert "Updated to use Qt5"
This reverts commit 06fe4abf6a.
2022-04-23 15:19:10 +02:00
Dushyant Basson d91442de59 Revert "Enabled option to build QtViewer"
This reverts commit b82dddf441.
2022-04-23 15:19:10 +02:00
Dushyant Basson 9cd3d73a23 Enabled option to build QtViewer 2022-04-23 15:19:10 +02:00
Dushyant Basson 0cf3c97eb2 Updated to use Qt5 2022-04-23 15:19:10 +02:00
Dushyant Basson d49095844a added output directories to .gitignore 2022-04-23 15:19:10 +02:00
Dion Moult be65f77311 #1153 Breaklines are now pure lines separate from fill areas and orient correctly 2022-04-23 18:56:06 +10:00
Thomas Krijnen 2081dc4c08 #2156 Don't try to convert unset placements in element hierarchy parsing 2022-04-23 10:51:16 +02:00
Dion Moult bd16345b76 #1153 Utility to convert an edge to an arc in preparation for angular dimensions 2022-04-23 17:25:39 +10:00
Dion Moult 3264f338c7 #1153 Section RLs now show storey names or custom descriptions 2022-04-23 11:10:02 +10:00
Dion Moult 0c06c67f2d #1153 Storey level annotations are now automatically generated for sections and elevations 2022-04-22 12:41:21 +10:00
Dion Moult a66ba6a6f9 #1153 Reimplement metadata keys so you can specify attribute-based classes in drawings 2022-04-22 10:06:28 +10:00
Massimo Fabbro 80d8665992 Insert the link to Reboot Addon 2022-04-21 11:13:32 +10:00
Dion Moult 337ce89919 Fix bug where "Not Georeferenced" showed up twice in the Georeferencing UI panel 2022-04-21 10:47:09 +10:00
Dion Moult 1237a8ce97 Improve georeferencing documentation 2022-04-21 10:41:47 +10:00
Dion Moult c3c9ed2975 #2150 Document how to manually reconcile large coordinate ranges 2022-04-21 09:58:28 +10:00
Dion Moult 87cb1c69f4 #2150 Fix bug where cartesian point offsets didn't consider object placement rotations 2022-04-21 09:09:34 +10:00
Dion Moult 3aa7f8e4c8 #2150 Fix bug where manual offsets and autodetected offset could stack 2022-04-21 09:08:08 +10:00
Dion Moult 2c301d734b #1153 You can now specify the ZIndex of 2D annotations 2022-04-20 16:28:10 +10:00
Thomas Krijnen 1705e6f565 Changes for mpfr toolset discussed in #1993 2022-04-19 15:33:09 +02:00
renjianqiang 2cd7b08c47 Fix the problem that build dependencies failed under Debug mode 2022-04-18 09:56:41 +02:00
renjianqiang 647a5105b5 Fix the bug that can't install python when IFCOS_INSTALL_PYTHON is true 2022-04-18 09:56:41 +02:00
Dion Moult 9fc0baf175 #1153 Add support for IfcAnnotationFillArea representation 2022-04-18 10:27:20 +10:00
Dion Moult ca502cc293 #1153 Fix bugs with importing existing annotations 2022-04-18 10:27:20 +10:00
CyrilWaechter f70ab060e3 Add default when getting space collection
A case has been encountered where space object and space collection did
not share the same name (eg. space.0011 and space.0021).
@Moult I wonder if it is expected or if there is a consistency issue
with space object/collection naming.
2022-04-17 15:10:18 +02:00
Dion Moult 6fb3c28f1a #1153 Switching representations for annotations and drawing cameras now works 2022-04-17 18:41:19 +10:00
Dion Moult c79eb60959 #1153 Drawings that are pure annotation now do not generate references 2022-04-17 12:29:34 +10:00
Dion Moult 538419a23f #1153 New markers and patterns for insulation batting, steel, and wood grain 2022-04-17 12:19:20 +10:00
Dion Moult eb19165ebc #1153 Predefined type is now also included in CSS classes for drawings. 2022-04-16 18:32:17 +10:00
Dion Moult 1138ffee7e #2139 Fix bug where some objects were invalidated during undo or redo 2022-04-15 19:45:59 +10:00
Dion Moult 0f3416774c #1153 Drawing layers (underlay, linework, annotation) are now per drawing instead of global 2022-04-15 11:45:23 +10:00
Dion Moult 1ba7977587 #1153 Fix newlines in text literals and smart tags in SVGs 2022-04-14 21:08:06 +10:00
Dion Moult 5b1b8e8f50 #1153 Annotation reference and sheet IDs now implemented in SVG. 2022-04-14 15:20:09 +10:00
Dion Moult 78811d331b #2136 Minor fix 2022-04-14 15:20:09 +10:00
Jesusbill 4aa91cfa7f add feature to toggle wireframe visibility for linked models - no testcases 2022-04-13 18:28:48 +02:00
Dion Moult c099a6cb75 #1153 Drawing titles now display IFC scale and identification data 2022-04-13 12:21:18 +10:00
Dion Moult 029b402d11 Minor fix 2022-04-12 18:30:03 +10:00
Dion Moult a243cdd6c6 Minor fix 2022-04-12 18:09:45 +10:00
Dion Moult 1fae835de9 Update installation docs to distinguish between package from source and developer setups 2022-04-12 18:07:39 +10:00
Dion Moult f0c7ff1e57 #1153. Titleblock revision / data is are derived from IfcDocumentInformation 2022-04-12 08:29:29 +10:00
Thomas Krijnen 460fd5ca87 #2133 faceset helper: compare index vectors by address instead of value 2022-04-11 14:12:17 +02:00
Thomas Krijnen 054c0a9a27 Improve faceset logging 2022-04-11 14:08:44 +02:00
Thomas Krijnen 5af1baa48b Update release.yml 2022-04-10 20:47:01 +02:00
Thomas Krijnen 0e5d2cc0c9 Update release.yml 2022-04-10 10:15:07 +02:00
Dion Moult 48148f00a3 #2129 Support some FreeCAD annotation types. 2022-04-09 10:22:12 +10:00
Thomas Krijnen 564c4b7644 #2126 reverse 1st operand inner wires in 2d opening subtraction 2022-04-08 10:45:28 +02:00
Bruno Postle 33c53a2c9a regenerate site library 2022-04-08 16:49:06 +10:00
Bruno Postle c049007ee8 add missing import 2022-04-08 16:49:06 +10:00
Bruno Postle 05345e8ddf Add missing demo library 2022-04-08 16:49:06 +10:00
Thomas Krijnen 461b78665a OCCT 7.6 compatibility 2022-04-04 08:29:29 +00:00
Boris Brangeon 6160d65d18 Update selector.py
filter_rule.children[2].children[0].lower() == 'true'
2022-03-31 20:50:26 +02:00
Thomas Krijnen d526314190 #2115 Let --strict-tolerance govern degeneracy of periodic curve trim 2022-03-31 11:28:30 +02:00
Massimo Fabbro 85bac37bed Fix two broken links
Fixed "./installation.rst" and "./running_tests.rst" links
2022-03-30 20:31:00 +11:00
Dion Moult e38184b152 Adding a document now auto adds a reference for convenience. 2022-03-30 18:15:26 +11:00
Dion Moult a0c8d87ad0 #1153. You can now assign and remove drawings from sheets. 2022-03-30 18:15:11 +11:00
Dion Moult 8686462eed #1153. Section markers are now supported in SVG. 2022-03-29 20:44:20 +11:00
Dion Moult 6cd4a2d78b #1153. Add support for elevation symbols in generated SVGs. 2022-03-29 20:30:10 +11:00
Dion Moult 2c6cb2fbb2 #1153. Section references are now auto generated when activating a drawing. 2022-03-29 17:04:50 +11:00
Dion Moult a60dfd8dd5 #1153. Elevation references are now auto generated when activating drawings. 2022-03-29 10:01:41 +11:00
Dion Moult 1b1fd1e6c5 #2048. Minor fix. 2022-03-28 12:52:29 +11:00
Dion Moult 1e60f23880 #2081. Bump IfcOpenShell build. 2022-03-28 11:58:38 +11:00
Dion Moult eb7babb1b0 #2053. Minor fix. Enable strict tolerance everywhere. 2022-03-27 19:05:05 +11:00
Dion Moult 5797937825 #1951. Fix bug where opening standard cases couldn't be added as voids. 2022-03-27 18:21:22 +11:00
Dion Moult 28336140ca #2048. Blender materials, IFC materials and IFC presentation style names are now bi-directional. 2022-03-27 14:43:05 +11:00
Dion Moult ca03a88601 #2104. Support for adding conversion based units to the project. 2022-03-27 10:39:01 +11:00
Thomas Krijnen 0303d217bf #2105 Fix fillets 2022-03-26 13:50:36 +01:00
Dion Moult 4184f2bf46 #2094. Removing styles now also purges Blender material object if possible. 2022-03-26 21:17:52 +11:00
Dion Moult 3b0429ace9 #2106. Fix bug where geometry cache was not cleared when openings were changed 2022-03-26 20:38:30 +11:00
Dion Moult baf75f552e New barebones presentation style manager to see the styles in your project. 2022-03-26 18:15:30 +11:00
Dion Moult 4ea0c73081 Fix bug where we now accommodate invalid durations in the scheduling tree 2022-03-25 19:37:52 +11:00
Dion Moult 33852be3f1 Fix bug where lag times couldn't be edited 2022-03-25 19:37:09 +11:00
Dion Moult 48d476c2b3 Gantt charts now show ISO durations and task captions 2022-03-25 16:09:22 +11:00
Dion Moult 9db07883b7 Scheduling calculations no longer calculate from midnight and now handle a single 9-5 day as a duration of 1 day, as per industry standard practice. 2022-03-25 16:09:22 +11:00
Dion Moult 7af53c543d Fix bug with schedule calculation on zero duration tasks 2022-03-25 16:09:22 +11:00
Dion Moult e7f6ed73ac Fix bug where recalculating a schedule with no time data would fail 2022-03-25 16:09:22 +11:00
Dion Moult 8afa1a4f7d Fix bug where counting working days on a task without a calendar would fail 2022-03-25 16:09:22 +11:00
Dion Moult 1dd85f6c48 Fix bug where removing a rooted or calendar constrained task would purge all calendar assignments 2022-03-25 16:09:22 +11:00
dependabot[bot] 8bd826fb20 Bump numpy in /src/ifcopenshell-python/ifcopenshell
Bumps [numpy](https://github.com/numpy/numpy) from 1.20.3 to 1.21.0.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/HOWTO_RELEASE.rst.txt)
- [Commits](https://github.com/numpy/numpy/compare/v1.20.3...v1.21.0)

---
updated-dependencies:
- dependency-name: numpy
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-24 10:02:23 +01:00
dependabot[bot] cbc6eefca7 Bump lxml from 4.6.3 to 4.6.5 in /src/ifcopenshell-python/ifcopenshell
Bumps [lxml](https://github.com/lxml/lxml) from 4.6.3 to 4.6.5.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-4.6.3...lxml-4.6.5)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-24 10:01:13 +01:00
Boris Brangeon 4f86dd143a Update selector.py (#2102)
Add BOOLEAN: "TRUE" | "FALSE" | "true" | "false"| "True" | "False"
2022-03-24 11:02:58 +11:00
Dion Moult c45c73c563 #2078. Fix bug where flat materials didn't import correctly. 2022-03-23 20:19:19 +11:00
Dion Moult 38f1c622ac Allow case insensitive IFC file extensions when exporting 2022-03-23 11:54:54 +11:00
Thomas Krijnen 38170db32a #2080 Don't allow parameterless Kernel constructor 2022-03-22 22:30:27 +01:00
Dion Moult 43d0c098a0 #2089. Fix and simplify OffsetObjectPlacement recipe for multiple absolute placements. 2022-03-22 17:27:38 +11:00
Dion Moult 533111a1fb #2099. Materials are now sorted alphabetically. 2022-03-22 14:30:45 +11:00
Dion Moult 0bba31e5f9 You can now select elements by material in the material manager. 2022-03-22 13:25:26 +11:00
Dion Moult 9b9f0058f9 The material manager now shows total elements used by a material 2022-03-22 12:50:10 +11:00
Dion Moult 0c8273eb70 Minor fix 2022-03-22 11:47:37 +11:00
Dion Moult c072554f21 You can now use the selector with a prefiltered list of elements 2022-03-22 11:32:40 +11:00
Dion Moult 18c9a57bea Using the selector now supports recursive decomposition in the spatial hierarchy 2022-03-22 11:23:13 +11:00
Dion Moult eaa3301b8f New support for filtering elements by checking values against an enumeration 2022-03-22 10:49:48 +11:00
Dion Moult efb89acfa3 You can now use a "not" operator when selecting elements 2022-03-22 10:40:05 +11:00
Dion Moult 96256d365a Fix bug where you couldn't compare less than or equal to with the selector. 2022-03-22 10:39:10 +11:00
Dion Moult fa6ec25a39 #2082. You can now use the selector to filter by strict data types. 2022-03-21 18:03:25 +11:00
Dion Moult 44afa0df5d Selector now uses classmethods to make it easier for scriptwriters to use 2022-03-21 17:28:16 +11:00
Dion Moult c478e5bf1b #2094. Deleting materials now also deletes Blender material if not used for a style 2022-03-21 12:04:51 +11:00
Dion Moult ea530858bd You can now remove material sets independent of elements 2022-03-21 12:03:15 +11:00
Dion Moult 0b4cfea3a9 Removing a material now also removes material properties 2022-03-21 10:50:19 +11:00
Dion Moult e909f25432 Removing a property set now also removes properties 2022-03-21 10:22:31 +11:00
Thomas Krijnen 2985bba157 #650 Unsure about 1b5c20e14f 2022-03-19 20:18:12 +00:00
Thomas Krijnen a1ba61636d HDF5 debug postfix 2022-03-19 19:32:42 +00:00
Thomas Krijnen 1b5c20e14f #650 fclose() 2022-03-19 14:45:19 +01:00
Dion Moult a43fae68b6 #2094. You can now add material sets independently of IFC objects in the material manager 2022-03-19 22:13:07 +11:00
Dion Moult fdd03d7294 #2094. Removing materials now removes material definitions too for styles 2022-03-19 22:13:07 +11:00
Thomas Krijnen 2049bdd976 todo note 2022-03-19 11:36:38 +01:00
Thomas Krijnen d45a439f6c todo note 2022-03-19 11:36:30 +01:00
Thomas Krijnen 8fa5873e7e #2095 take into account face-face distance on operand a 2022-03-19 10:49:51 +01:00
Dion Moult 3fa8fce994 Fix bug where gizmo still shown after deleting objects 2022-03-19 17:27:45 +11:00
Dion Moult b8aa90de00 #2094. New rudimentary project materials browser to manage materials. 2022-03-18 17:24:59 +11:00
Dion Moult dcc1ed5607 #1153. References to grids in drawings are now auto synchronised when activating a drawing view. 2022-03-18 16:00:49 +11:00
Dion Moult 2bfff12988 #1153. Drawing names are now generated based on their location and show an icon based on the drawing type. 2022-03-18 15:49:56 +11:00
Dion Moult 074a55b816 Fix bug where delete confirmation was not consistent with vanilla Blender 2022-03-17 14:10:51 +11:00
Dion Moult a53fd97e5a Fix #2092. Fix bug where door and window styles were excluded from authoring options. 2022-03-17 09:49:55 +11:00
Dion Moult b39a0d1a7c #2053. Revert strict tolerance due to side-effects with caching 2022-03-16 19:11:37 +11:00
Dion Moult 44b786a21b Ensure that exported 4D schedules use a .xml extension 2022-03-16 19:11:13 +11:00
Dion Moult bddc64cad3 Fix #2049. Allow relative paths for IFC links. 2022-03-16 10:55:36 +11:00
Dion Moult 3713ec00f9 #2049. You can now edit linked project paths when unloaded. Thanks brunoperdigao! 2022-03-16 10:46:42 +11:00
Dion Moult b5a58998d5 Fix #2083. hpp-fcl now has support for Python 3.10. 2022-03-16 09:58:52 +11:00
Dion Moult ca3b4d17ba Fix #2055. Disable IfcContext in IFC2X3 because it didn't exist. 2022-03-16 09:37:20 +11:00
Dion Moult 983a1530b8 #2053. Potentially fix geometry issues with importing small objects. 2022-03-16 09:09:43 +11:00
Dion Moult 74e18a56ce Fall back to information data if reference data is null for associated documents. 2022-03-15 19:54:04 +11:00
Cyril Waechter 05834d071f Handle empty ConnectionGeometry + refactor (#2085) 2022-03-15 19:34:37 +11:00
Dion Moult 8f70f462cc You can now easily open associated documents with support for inherited locations 2022-03-15 19:32:29 +11:00
Dion Moult 456f45b346 You can now use relative paths when browsing for file URIs. 2022-03-15 18:58:51 +11:00
Dion Moult 53a9175802 You can now browse to select files for any URI reference attributes 2022-03-15 18:05:44 +11:00
Dion Moult 379d6d9392 Minor fix 2022-03-15 16:53:31 +11:00
Dion Moult 38b708ff1f Redesigned document UI to handle hierarchical documents and make it easier to reference 2022-03-15 14:49:20 +11:00
Dion Moult 233e73f9f6 Removing documents now removes all subdocuments recursively and references 2022-03-15 14:45:18 +11:00
Dion Moult db85aa90d3 You can now add document references that are part of a document information 2022-03-15 14:43:24 +11:00
Dion Moult 6fb1e34ab4 You can now add IFC subdocuments or supersede documents 2022-03-15 14:41:47 +11:00
Dion Moult 9cc683ea6e Fix bug where ownership history was not tracked on document association. 2022-03-14 20:39:39 +11:00
Dion Moult e343494ab4 Document information is now always assigned to the project by default. 2022-03-14 20:39:11 +11:00
Dion Moult bc9e403a58 #2088. Minor fix. Sorry more stuff I forgot to commit. 2022-03-14 20:07:51 +11:00
Thomas Krijnen 8ffd9dc1f9 #2086 surface_area and volume 2022-03-14 09:54:28 +01:00
Dion Moult 57f6c07240 Minor fix 2022-03-14 18:40:54 +11:00
Dion Moult f518bbfb00 Minor fix 2022-03-14 16:48:44 +11:00
Dion Moult 0f34420834 Fix missing pkg_resources brickschema dependency 2022-03-14 16:43:27 +11:00
Dion Moult 3ef6077a0d Create build for Blender 3.1 Python 3.10 2022-03-14 16:43:10 +11:00
Gorgious56 3c26cb672b Compute wall net quantities (#2086)
* Compute wall net quantities

* Remove opening check clause
2022-03-14 12:48:50 +11:00
Dion Moult 673f757a51 Fix bug where adding document references didn't work. 2022-03-09 22:14:59 +11:00
Dion Moult 578ab140cc Create section and elevation contexts on new projects. See #1153. 2022-03-09 21:44:26 +11:00
Thomas Krijnen 96902bf38a Safeguard against runtime error when invoking HLR without storey containment 2022-02-27 20:57:05 +01:00
Thomas Krijnen b5133c6874 Add caching option in iterate() helper 2022-02-27 12:56:16 +01:00
Thomas Krijnen 5dfe85691b #1153 Exclude walls and slabs in profile edges hack 2022-02-27 12:55:39 +01:00
Thomas Krijnen 3b7bf8844a Update default SVG CSS for projections 2022-02-27 12:55:11 +01:00
ArturTomczak 8038b77504 typo 2022-02-26 21:56:02 +01:00
ArturTomczak b64601ee0a Update subrepo with sample files 2022-02-26 21:56:02 +01:00
ArturTomczak 320bb7a086 Update to IDS 0.5.8 2022-02-26 21:56:02 +01:00
ArturTomczak ad135f70f1 encoding clean up
the use of binary access to file was not intentional, switched to @aothms  proposal.
2022-02-26 21:56:02 +01:00
ArturTomczak 15b24d8ba4 validation tests 2022-02-26 21:56:02 +01:00
ArturTomczak 3c2b25d923 fix recurrsion 2022-02-26 21:56:02 +01:00
ArturTomczak 3282d75aa5 fix encoding bcf bug, add tests 2022-02-26 21:56:02 +01:00
ArturTomczak 72fc617196 internalise tests #1711
moved test files to submodule to avoid URL requests. Had to turn off (comment) two tests as they were not working but will fix them with new schema update.
2022-02-26 21:56:02 +01:00
ArturTomczak 47cad88c38 add IDS requirements #1727 2022-02-26 21:56:02 +01:00
Thomas Krijnen e81dd9c7df Option to yield progress from iterate() and consume_iterator() 2022-02-26 14:57:21 +01:00
Thomas Krijnen d16f92a445 Option to set log format from python 2022-02-26 14:53:09 +01:00
Thomas Krijnen 8be79f9aee Add XML and glTF serializers to python 2022-02-26 14:52:58 +01:00
Dion Moult ccc6f2c4c6 Fix bug in date calculations when editing task times without sufficient data 2022-02-23 13:08:52 +11:00
Dion Moult deb0597000 Fix infinite loops: accommodate invalid calendars with no working times in sequence utility 2022-02-23 13:04:29 +11:00
Dion Moult 348373d47e Fix bug with editing task start times without finishes 2022-02-23 12:28:34 +11:00
Dion Moult 9e22e9486a You can now export Microsoft Project XMLs from Blender 2022-02-21 19:57:00 +11:00
Dion Moult 3cf9017f27 New IFC2MSP conversion tool in IFC4D to convert IFC to Microsoft Project 2022-02-21 19:56:06 +11:00
Dion Moult 21479482b4 Fix bug where MS project durations expressed in hours were not parsed correctly 2022-02-21 19:55:32 +11:00
Dion Moult 97c660fec8 Fix bug with incorrect MS Project XML working day imports 2022-02-21 19:55:08 +11:00
Dion Moult 32af2025ec Fix bug with incorrect MS Project XML sequence type import 2022-02-21 19:54:45 +11:00
Dion Moult ffc82dfb1e Fix bug where timeline date didn't update during animations 2022-02-21 19:52:17 +11:00
Dion Moult 2a69af43f6 Calendars are now assigned when importing Microsoft Project XML to IFC 2022-02-21 15:24:03 +11:00
Dion Moult 5c9984a12a Fix bug with broken MS Project to IFC conversion 2022-02-21 13:51:26 +11:00
Dion Moult c938d6ae9b Very minimal implementation of generating parametric duct segments from duct size properties 2022-02-18 19:21:35 +11:00
Dion Moult 63d65f0c39 Fix #2046. Fix crash if style was updated from an already loaded IFC dataset 2022-02-18 18:44:25 +11:00
Dion Moult 472a66b7ed Fix bug where element types couldn't get psets applied to them due to lack of specificity in IFC templates 2022-02-18 17:11:24 +11:00
Dion Moult ddaed9e93d Fix bug where psets were unable to be applied for specific predefined types 2022-02-18 17:10:38 +11:00
Dion Moult 4d6eba0a06 Fix #2045. Fix bug where IFC2X3 occurrences not correctly autodetected from types. 2022-02-18 10:06:13 +11:00
ssg ed09b7ba31 Fixed failure for VS2017
Script was trying to pick up vs19 instead of vs15 even for builds on vs15, fixed that by adding a check for vs15.
2022-02-12 08:13:16 +01:00
Thomas Krijnen 2c2954b11a #2036 check for null curve in IfcIndexedPolyCurve 2022-02-10 14:04:08 +01:00
Thomas Krijnen 5317746a82 #2037 Rerun codegen 2022-02-10 13:06:32 +01:00
Thomas Krijnen 5af7e95bee #2037 Option to optain declaration from early bound select definitions 2022-02-10 13:06:04 +01:00
Thomas Krijnen 618d902a57 #2037 throw on invalid cast in schema code 2022-02-10 13:05:33 +01:00
Thomas Krijnen 68baa416fa #2037 option to throw on invalid cast 2022-02-10 13:05:05 +01:00
Dion Moult 7f212963d5 The storey is now the default container when starting a project for convenience. 2022-02-10 11:40:38 +11:00
Dion Moult d3a43c6e81 Be more forgiving to invalid Revit IFCs when importing. 2022-02-10 11:06:23 +11:00
Dion Moult a44a13f04c Implement loading glTF style textures from IFC. 2022-02-09 16:40:23 +11:00
Dion Moult 126ba8d88f Fix #2032. Fix bug where certain elements could not be extracted or appended. 2022-02-09 15:16:22 +11:00
Dion Moult caf04200ce Experimental optimisation attempt for native faceted brep handling by aothms. See #841. 2022-02-09 14:36:14 +11:00
Dion Moult 05f3cd41e2 glTF rendering styles for unlit and PBR materials are now supported when loading IFCs 2022-02-09 14:26:39 +11:00
Dion Moult 80bc4cdb1b Fix #2028. OffsetObjectPlacements can now rotate then move, or vice versa. Warning: new default! Thanks hvn74! 2022-02-09 12:17:07 +11:00
Dion Moult dd7a47ab99 Texture support is now compatible with glTF texture maps 2022-02-09 11:34:59 +11:00
Dion Moult 4eaf0e7a9c Fix bug where you couldn't downgrade or upgrade between shading and rendering styles 2022-02-09 11:31:09 +11:00
Dion Moult 3db252bcc0 Minor fix 2022-02-08 15:50:55 +11:00
Dion Moult d03685abfa UV coordinates for triangulated face sets are now saved in IFC. 2022-02-08 15:32:03 +11:00
Dion Moult 3e4b1d95cb Standalone section shader add-on for those who don't need the full BlenderBIM add-on features 2022-02-06 20:27:44 +11:00
Dion Moult b151ec2b0e Fix bug where false geolocation offsets did not take into account rotation. 2022-02-06 20:04:53 +11:00
Thomas Krijnen f909adc2dc Update README.md 2022-02-05 09:57:56 +01:00
Dion Moult 913a428794 Fix #2017. Fix P6 import bug where older P6 XER versions <8.1 did not store hours per day. 2022-02-05 17:44:59 +11:00
Dion Moult fe6d9ae926 Triangulated face set geometry exports are now supported. 2022-02-05 11:33:14 +11:00
Thomas Krijnen 4a679812ca #2018 prevent select types to be serialized as booleans 2022-02-04 13:54:07 +01:00
Dion Moult 6be87c035f Annotations are now auto collected correctly and simpler drawings UI. See #1153. 2022-02-04 19:21:24 +11:00
Dion Moult 6ce8a3621a You can now manage IFC actors in Blender. 2022-02-04 18:21:53 +11:00
Dion Moult 60ea856e51 New functions for IFC actor in API 2022-02-04 17:56:45 +11:00
Dion Moult 419502ddb7 Disable adding a grid before a project exists. 2022-02-04 16:23:04 +11:00
Dion Moult 9f530d0578 Updating drawing names now updates it in IFC too. See #1153. 2022-02-04 15:04:30 +11:00
Dion Moult 524483e9cc Target view is now read from IFC. See #1153. 2022-02-04 12:04:20 +11:00
Dion Moult 7116a9f71a Removing drawings now roundtrips in IFC. See #1153. 2022-02-04 10:54:18 +11:00
Dion Moult 868ced2990 See #2017. Fix bug in P6 importer where nonlabor types were not considered. 2022-02-04 09:10:55 +11:00
Dion Moult 6a8292d24c Fix #890. New N/S/E/W location presets for creating sections, elevations, and RCPs. See #1153. 2022-02-04 08:14:36 +11:00
Dion Moult fca4d9dea0 New save and save as buttons in project panel with last saved date. 2022-02-03 21:29:44 +11:00
Dion Moult 89d5c44855 You can now create new projects starting from a template. 2022-02-03 18:25:03 +11:00
Dion Moult 3e99393895 You can now add plan views based on a building storey. See #890. 2022-02-03 17:28:19 +11:00
Gorgious56 098ab2c237 Spatial Elements Utilities and QOL (#2008)
* Tool to add storey to specific building

* Operator to add new storey to building

* Add new storey to building button in aggregates panel

* Minor fix

* add method to data class to retrieve ifc class name

* Extract aggregate creation logic

* Prevent aggregating non-ifc elements + display popup info

* Add tooltips + rename operators

* Rename function to get relating object

* Rename relating object data variable to be able to have access to related objects

* Add utilities to get related objects

* Add utility function to get related objects from element

* display related object in Aggregates panel in object properties

* Revert "Rename function to get relating object"

This reverts commit 5248627a41.

* Update method names

* Add Operator to select parts of an element

* Ditch box layout and only display number of parts

* Add operator to select aggregate of an element

* Display operator to select aggregate of element

* Move logic to aggregate module

* Add utility methods to Blender tool

* Add buttons to create Ifcsite and IfcBuilding from object panel
2022-02-03 07:16:43 +01:00
Dion Moult 94ff8349d3 You can now connect, disconnect, and set flow directions of distribution ports in Blender. 2022-02-03 12:05:05 +11:00
Henri J. Norden d333cb1b78 Cleanup changes 2022-02-02 14:20:46 +01:00
Henri J. Norden 3f4c4a8e52 Hoist compiling mpir & mpfr before HDF5, since they are more likely to fail and HDF5 takes way too long 2022-02-02 14:20:46 +01:00
Henri J. Norden b103e0dde5 Fix build-deps.cmd for VS2019 2022-02-02 14:20:46 +01:00
Dion Moult 883b8a523c Material node trees compliant with basic X3D multitextures are now stored in IFC 2022-02-02 17:51:40 +11:00
Dion Moult 8c0b06b36e Different BSDFs are now recognised for different reflectance methods. 2022-02-02 17:50:38 +11:00
Dion Moult 72397f3aff Saving surface specular roughness values to IFC is now supported. 2022-02-02 15:09:37 +11:00
Dion Moult 77821caae4 Adding surface styles now respect mutually exclusive style types 2022-02-02 15:04:19 +11:00
Dion Moult 10138e28c9 You can now add ports to distribution elements in Blender. 2022-02-01 19:16:31 +11:00
Gorgious f9ce0903f7 Fix #2010 : Authoring data class throws error in BIM tool if no ifc file is selected 2022-02-01 09:12:42 +01:00
Dion Moult a2c0045a40 Support relative object placements for IFC2X3 ports. 2022-02-01 18:23:55 +11:00
Dion Moult 3e10f52965 Relative placements for nested elements are now supported. 2022-02-01 17:39:55 +11:00
Dion Moult fd8aa6d142 IfcOpenShell API now supports port connections and disconnections. 2022-02-01 16:51:42 +11:00
Dion Moult ddb38b2ea0 The IfcOpenShell API now supports adding a distribution port. 2022-01-31 18:28:31 +11:00
Dion Moult 74174b1e09 Fix bug where drawing objects could be added to the wrong context. 2022-01-30 15:09:54 +11:00
Dion Moult 96179db7ad IFC element names no longer treat the Blender name suffix as significant 2022-01-30 15:08:32 +11:00
Dion Moult 116252f857 Object names now guard against duplicate IFC prefixes when assigning. 2022-01-30 15:06:01 +11:00
Dion Moult 538024e035 All element's spatial containment collections are now synced when assigning a class. 2022-01-30 15:04:50 +11:00
Dion Moult e9670a6906 Fix bug where editing then switching to the current representation crashes. 2022-01-30 14:47:22 +11:00
Dion Moult c7428dd160 Fix bug where syncing an object removed from the collection tree breaks. 2022-01-30 14:44:21 +11:00
Dion Moult bf9d46b506 Structural items in the collection hierarchy are now auto synced. 2022-01-30 10:11:19 +11:00
Dion Moult 7ee589cfc2 Remove legacy unassign class feature in favour of just deleting objects. Thanks theoryshaw! 2022-01-30 08:56:43 +11:00
Dion Moult 3083b66f61 Fix #2012. Minor fix. 2022-01-30 08:49:46 +11:00
Dion Moult 074fe0d3a6 You can now specify a target view when creating a new drawing. See #1153. 2022-01-29 21:11:35 +11:00
Dion Moult 46e1a46dd2 Drawing collection hierarchy is now auto fixed if shuffled around manually. See #1153. 2022-01-29 21:11:35 +11:00
Thomas Krijnen 677a9d715c #2009 2022-01-29 09:43:33 +01:00
Dion Moult a210cf654e Drawings list now reads data from IFC, not Blender. See #1153. 2022-01-29 17:26:09 +11:00
Dion Moult 44e4ee70ae Removing sheets now works in IFC. See #1153. 2022-01-29 15:45:45 +11:00
Dion Moult 27e6d702e9 You can now create drawing sheets in IFC. See #1153. 2022-01-29 13:42:46 +11:00
Dion Moult fb76f985c7 Minor fix 2022-01-29 09:01:35 +11:00
Dion Moult 9279aeccf6 You can now show and hide distribution ports of an element. 2022-01-29 08:52:37 +11:00
Dion Moult 92a1739d93 Minor fix - sorry, really need a local Sphinx setup 2022-01-28 20:41:20 +11:00
Dion Moult dfba9827a6 Minor fix 2022-01-28 20:37:18 +11:00
Dion Moult 19e007a67c New diagrams on the developer guide. 2022-01-28 20:32:41 +11:00
Dion Moult d3ef3f1501 Finish building minimum viable product of the IFC2P6 converter. Thanks myoualid! 2022-01-28 18:14:16 +11:00
Dion Moult f2e9f76631 Minor tweaks. See #2006. 2022-01-28 10:48:22 +11:00
Dion Moult 52739418d8 Fix #1514. You can now customise the default names of occurrences create from a type. 2022-01-27 17:21:11 +11:00
Dion Moult 7f1fddf426 New software architecture section in the developer guide. 2022-01-27 09:32:24 +11:00
Dion Moult ee4f48b566 Minor fix 2022-01-26 21:35:27 +11:00
Dion Moult 1d47ad3cd4 New demo module to teach developers how to hack on the BlenderBIM Add-on. 2022-01-26 21:27:59 +11:00
Dion Moult 36a7985f5a Fix #2002. Fix bug where sometimes shape IDs wouldn't be pure integers. 2022-01-25 08:59:01 +01:00
Dion Moult e129f4afa9 Fix #2001. Fix bug where you could not undo deletions. 2022-01-25 17:27:42 +11:00
Dion Moult 8fd4351195 Minor fix. Don't know all the answers. 2022-01-25 16:50:36 +11:00
Dion Moult 01f25528e8 Build untested IFC to P6 XML export feature. 2022-01-25 16:44:37 +11:00
Dion Moult 3222c9ce99 Fix #1998. Fix bug where colours don't show if styling is applied to the mapped item instead of the actual representation item. 2022-01-25 13:40:52 +11:00
Gorgious 28e6bb9e3d Fix error when updating representation on object data with no BIMMeshProperties 2022-01-24 13:22:17 +01:00
Dion Moult 5884af0678 Updates to space boundary geometry now auto updates on export. 2022-01-24 21:52:51 +11:00
Dion Moult f88a1038a8 IfcCSV now loads the selector by default so its much more fun to use a lib. 2022-01-24 17:52:32 +11:00
Dion Moult cafe8ce5f2 You can now remove bricks from a Brickschema model. 2022-01-24 17:52:04 +11:00
Dion Moult 8569bcf350 New utility function for getting ports of an element 2022-01-24 16:16:08 +11:00
Dion Moult e38759c39d Implement assign and unassign ports in IfcOpenShell API 2022-01-24 16:13:55 +11:00
Dion Moult 50ed8eccfd Fix bug where you couldn't select properties with a dot in the name for IfcCSV 2022-01-24 11:07:01 +11:00
Gorgious56 d63d62ddd6 Improve section cutaway shader (#2000)
* Dynamically update section shader backface color

* Refactor add_section_plane operator

* Prevent error if last section has been removed

* Refactor section plane remover
No longer removes object if it is not a section plane
Offsets nodes so that they are always nice and ordered

* Fix shader glitch when user deletes last cutaway object

* Fix nodes offset when deleting cutaway object
2022-01-24 09:47:22 +11:00
Dion Moult 0bdb4b9fcf Smart annotation variables for drawings now reimplemented. See #1153. 2022-01-22 21:00:26 +11:00
aothms 7e7c54a535 #1993 vs2022 hdf5 2022-01-21 12:13:58 +00:00
Dion Moult 817fdead9b Fix bug where zero durations were not allowed in task times. 2022-01-21 18:52:40 +11:00
Dion Moult 68a43b92ee Editing task times no longer tries to be clever with actual dates because you know what you're doing. 2022-01-21 18:42:59 +11:00
Dion Moult 595c72e08d Fix #1995. Bug where section cutaways didn't work in Blender 3.0. 2022-01-21 14:22:07 +11:00
Dion Moult 5709efbdcb Fix bug where you could not add properties to projects themselves. 2022-01-21 12:01:19 +11:00
Dion Moult 67952ed159 Fix #1576. Managing IfcSystem subtypes is now possible. 2022-01-20 18:22:20 +11:00
Thomas Krijnen 000e3acb2b #1948 clear tmp list 2022-01-19 15:36:58 +01:00
Thomas Krijnen b337d5a174 #1993 msvc 2022 config 2022-01-19 14:14:15 +01:00
Dion Moult 6b0bdc564d Nicer looking gantt charts and make it easier to print to PDF. 2022-01-19 17:38:42 +11:00
Dion Moult ab5db2fa23 Minor fix 2022-01-19 12:19:36 +11:00
Dion Moult 810c71dfa2 IfcOpenShell-python licensing and black. See #1082. 2022-01-19 12:18:33 +11:00
Dion Moult 5b281260f8 Licensing and black for BIMTester and IfcBlender. See #1082. 2022-01-19 11:07:43 +11:00
Dion Moult 07264dafb1 Bump IfcOpenShell to latest bot build. See #1984 #1977 #1959 2022-01-18 18:01:27 +11:00
Dion Moult 9572fef222 Fix #1908. Extracting elements using IfcPatch now includes all properties. 2022-01-18 17:47:59 +11:00
Dion Moult 1bbbc82b72 Fix #1962. You can now easily append product assets using the API. 2022-01-18 17:44:50 +11:00
Dion Moult aa6d03ade2 You can now reset and restore your API owner settings. 2022-01-18 17:42:17 +11:00
Thomas Krijnen 4c40fc1629 #1985 consolidate and correct shell count checks in tree 2022-01-17 13:56:21 +01:00
Thomas Krijnen 90e5b5576d Fix propagation of kernel settings (affects multi threading) 2022-01-17 13:55:40 +01:00
Thomas Krijnen 531805fefb #1692 get_info_2() logical 2022-01-17 11:19:30 +01:00
Dion Moult 2852f53afa Fix #1934. Fix bug with improper nesting of subfolders when exporting IfcZip. 2022-01-17 20:30:02 +11:00
Dion Moult 8b06aa9e0b Header data previews for IFCZIP are now supported as well. 2022-01-17 18:21:20 +11:00
Dion Moult 52ea69bcec Fix #1954. Fix bug where importing MSProject XMLs with no project names failed. 2022-01-17 17:37:09 +11:00
Dion Moult 9ebe0aaa95 Fix #1956. One-button upgrade from IFC2X3 to IFC4. 2022-01-17 16:20:01 +11:00
Dion Moult 1a735c4bef Minor improvement to the sequence UI to always allow you to cancel editing mode. 2022-01-17 15:11:48 +11:00
Thomas Krijnen 482788a46f Update build-all.py 2022-01-16 13:59:19 +01:00
Thomas Krijnen a30a8cd920 Missing job dependency in bbim ci 2022-01-16 13:43:14 +01:00
Thomas Krijnen c2e7c27421 ADD_COMMIT_SHA in build scripts 2022-01-16 13:16:44 +01:00
Thomas Krijnen 2f24343f8f Update and rename README.txt to README.md 2022-01-14 11:14:42 +01:00
Dion Moult d259e0f490 Fix IfcCSV import bug. 2022-01-14 20:25:35 +11:00
Dion Moult c09ed228c0 Whoops. 2022-01-14 19:06:17 +11:00
Dion Moult d63be20c8b Fix #1989. Fix bug where you couldn't export to IfcJSON, since it couldn't be imported again. 2022-01-14 18:55:44 +11:00
Dion Moult f8c7f48674 You can now associate annotations with objects for smart annotations in IFC. See #1153. 2022-01-14 18:00:08 +11:00
Dion Moult 258ca7fb8c Fix bug where you could assign a product twice to a process. 2022-01-14 16:04:55 +11:00
Dion Moult ec38fe2edc Fix #1931. Fix bug where duplicated type products should not share material associations. 2022-01-14 13:15:47 +11:00
Dion Moult 5a87ab8171 Minor cleanup to Brick code after failed attempt to detect feed relationships. 2022-01-14 11:47:58 +11:00
Dion Moult d23d382854 Minor fix to BIMTester IDS support. Disable IDS test due to unstable nature of IDS. 2022-01-14 11:46:15 +11:00
Dion Moult 30270db0c3 Fix bug where annotation decorations didn't show correctly in Blender 3.0 2022-01-14 10:54:27 +11:00
Vukas Pajic 6d78ac4918 adjusted UI based on feedback received (#1986)
* adjusted UI based on feedback received

* typo
2022-01-14 10:09:51 +11:00
Benjamin Dahl 81016f3110 define the vector sass [0] as a std::vector<std::unique_ptr<ShapeAnalysis_Surface>>
https: //github.com/IfcOpenShell/IfcOpenShell/issues/1975
Co-Authored-By: Dion Moult <dion@thinkmoult.com>
Co-Authored-By: Thomas Krijnen <1096535+aothms@users.noreply.github.com>
2022-01-13 13:38:51 +01:00
Dion Moult 189e566740 Remove broken and obsolete Blender clasher which is incompatible with the geom.tree broadphase approach. 2022-01-13 17:05:44 +11:00
Thomas Krijnen 5f7e4793c2 #1960 correct distinguish outer bound by pre increment 2022-01-12 15:14:18 +01:00
Thomas Krijnen be286c4d9d #1974 populate attribute map upon schema registration 2022-01-12 15:09:22 +01:00
Dion Moult 5ba542488a Implement adding plain bricks not based on IFC 2022-01-12 16:22:32 +11:00
Dion Moult 39960998de Support type-based class checking for converting IFC2X3 models to Brickschema 2022-01-12 15:39:43 +11:00
Dion Moult 92642e6a6a The IFC Class panel now shows inherited predefined types 2022-01-12 14:29:02 +11:00
Dion Moult 78d33437ea New utility to get predefined type 2022-01-12 14:11:31 +11:00
Gorgious56 65b3960ab3 Show ifc specs in file selector (#1980)
* Create simple parser for ifc header specs

* Refactor logic to be usable with other file selectors

* Fix parsing error
2022-01-12 10:01:49 +11:00
Vukas Pajic e81848dfba UI Simplification with Panel Groups (#1979)
* concept demo

* small naming change + added missing ui classes

* added newline to end of file
2022-01-11 20:03:29 +11:00
Dion Moult fe9cda8ba1 Fix #1925. Fix bug where nested collection deletions were not synchronised properly. 2022-01-11 15:45:29 +11:00
Dion Moult 49221739cf Implement auto and manual refresh of the Brick model navigator 2022-01-11 14:46:58 +11:00
Dion Moult c6966f9b39 You can now create a new blank Brick project 2022-01-11 13:25:03 +11:00
Dion Moult f08ed629b5 New debug feature to purge HDF5 cache in case the cache is corrupted. 2022-01-11 11:24:13 +11:00
Dion Moult ba675c0d28 Implement human readable rdfs labels in Brickschema navigator 2022-01-11 10:44:52 +11:00
Gorgious56 3a80722621 Display IFC schema in file selector right hand side panel (#1978)
* Display IFC schema in file selector right hand side panel

* Formatting

* Fix possible error when the file name or description contains the word "schema"
2022-01-11 08:52:14 +11:00
Dion Moult 9b77bb6e37 New utility to get IFC all elements that are relevant in Brickschema 2022-01-10 17:31:42 +11:00
Dion Moult 7a6df49348 Basic implementation to bulk convert relevant IFC classes to a Brick model 2022-01-10 17:30:49 +11:00
Dion Moult 666e484b2b Run black on IfcOpenShell-python. 2022-01-10 15:42:24 +11:00
Dion Moult 256f40ed44 New IFC to Brick class mapping utility 2022-01-10 15:35:37 +11:00
Dion Moult 8eccb1a5ed You can now select all system objects from the object panel for convenience. 2022-01-10 12:21:38 +11:00
Dion Moult ce3490824d Optimise all editing API functions to be 100x faster when you're dealing with proprietary BIM exports with loads of shared owner histories. See #1904 and #1905. 2022-01-10 12:12:34 +11:00
Dion Moult 43c74010a5 Schema versions are no longer locked to IFC4 and 2X3. You can now load express schemas at run time. 2022-01-10 10:45:46 +11:00
Dion Moult 6c991ed356 Purge obsolete IFC types mappings 2022-01-10 09:40:42 +11:00
Thomas Krijnen c01c2a737a test runner doesn't have dae 2022-01-09 21:26:40 +01:00
Thomas Krijnen c9c11a2905 Install to system local root 2022-01-09 21:11:47 +01:00
Thomas Krijnen e5037dc41a #1960 test cases 2022-01-09 20:52:48 +01:00
Thomas Krijnen acd9250028 Also log perf with quiet 2022-01-09 15:21:16 +01:00
Thomas Krijnen a3dc477921 Fix perf logging in convert 2022-01-09 15:15:50 +01:00
Thomas Krijnen 6246dda8d6 #1960 make configurable 2022-01-09 15:15:29 +01:00
Thomas Krijnen 2683bcba20 Fix: shift count negative or too big 2022-01-09 15:14:13 +01:00
Thomas Krijnen 97f2aa976e Merge branch 'v0.7.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.7.0 2022-01-09 14:32:23 +01:00
Thomas Krijnen 9b96073ac0 #1960 BRepBuilderAPI_MakeFace on non-overlapping 2d subtraction 2022-01-09 14:32:13 +01:00
Thomas Krijnen 7efd9cea2a Log performance aggregates as logger messages 2022-01-09 14:31:13 +01:00
Thomas Krijnen c917881a8e Logging statement for total file conversion 2022-01-09 14:30:56 +01:00
Thomas Krijnen fa46eb140f Update template.py main.schema_identifier doesn't exist 2022-01-09 11:41:24 +01:00
Thomas Krijnen b8ea42540e #1973 Performance logging 2022-01-07 15:12:32 +01:00
Thomas Krijnen 671ab78c76 #1969 take uppercase in register_schema() 2022-01-07 12:49:28 +01:00
jakob-beetz a8550cea26 build-deps.cmd typo 0.7.0 branch 2022-01-07 12:47:28 +01:00
jakob-beetz 89023df4e5 Update readme.md 2022-01-07 10:37:40 +01:00
Dion Moult 4f047274bf The IfcOpenShell API now supports automatic primitive casting for editing properties. See #1943. 2022-01-07 17:38:43 +11:00
Dion Moult eb04a7d579 Visual clean up of bulk property editing UI 2022-01-07 17:38:43 +11:00
Dion Moult 84096529e1 Primary measure type lists are now dynamically generated based on the schema. 2022-01-07 17:38:43 +11:00
Dion Moult 3350f31312 Write documentation to help developers get acquainted with testing 2022-01-07 17:38:43 +11:00
Dion Moult 0d79963ed8 Clear outdated README text which we won't maintain to prevent confusion 2022-01-07 17:38:43 +11:00
Dion Moult 43a8fa8bcb It's 2022! 2022-01-07 17:38:43 +11:00
Thomas Krijnen ca8f3cf1e6 Update README.md 2022-01-06 10:17:56 +01:00
garylzimmer 313a1c5705 Update README.md
Updated based on my personal findings. Can provide documentation if necessary.
2022-01-06 10:17:31 +01:00
Vukas Pajic 53f6454784 Fix integers in enumerations #1943 (#1946)
* first draft

* small change
2022-01-04 13:10:42 +11:00
Vukas Pajic 2c0df1d4f5 fix umlauts not showing up correctly in dynamic enums #1941 (#1945)
* first attempt

* adopted new solution for umlauts in enums

* fix typo
2022-01-04 13:09:47 +11:00
molitoris e384dbd548 Correct HeaderFile (#1942)
Rename file_name to filename (without underline)
2022-01-04 13:06:01 +11:00
Cyril Waechter d22a0c7cb8 Boundary geom creation : fix math + small ui fix (#1938)
_Neo accidentally took the red pill so I transposed the matrix to make
it blue_

* Fix how placement matrix of updated geometry is created.
* Fix ui: was throwing an error when boundary had no
`RelatedBuildingElement`
2022-01-04 13:04:06 +11:00
Gorgious56 02a62a943c Fix #1717 : Disable task editing if task was deleted as a result of deleting its parent (#1936)
* Disable task editing if task was deleted as a result of deleting its parent

* Optimize logic for bigger number of tasks

* Don't try to disable editing if not editing in the first place
2022-01-04 13:03:39 +11:00
Vukas Pajic 0625e4153c bulk property editor (#1896)
* first revision

* update incorporating review comments

* added a new feature - remove psets

* type dropdown now references ifc data types

* adopt new solution for enumerations and umlauts

* Revert "adopt new solution for enumerations and umlauts"

This reverts commit 203a31a2bf.
2022-01-04 12:59:55 +11:00
Jesusbill 03f5feca88 refactor structural module - wip - structural analysis models #1848 2022-01-02 00:34:38 +01:00
ssg 85e3c6588f Updated README.md for OCCT/IfcOpenShell7
After #1930 the 0.7 branch isn't compatible anymore with OCCT version < 7.2. That includes the liboce that's found in debian (derivatives), which is OCCT 6.9 or even less. Updated the Linux section of README.md to explain the dependency on OCCT and include instructions to build on Unix with OCCT (from the OS repository as well). Also included changes that became necessary when we moved to v0.7.0 from v0.6.0 (like recursive clone and cmake additions).
2021-12-31 13:46:13 +01:00
bosonprojets 6e913a0ff9 BlenderBIM Feature - Filter By Building Storey 2021-12-28 23:46:22 +01:00
Thomas Krijnen ff4e58a8ff Update README.md 2021-12-20 11:46:07 +01:00
Dion Moult 1db028fa7b Fix bug where IfcPatch IFC4 migration could break on Revit files 2021-12-20 16:39:14 +11:00
Thomas Krijnen 69a7efdab4 Does this make gcc happy for uint64_t enums? 2021-12-19 22:31:40 +01:00
Thomas Krijnen 20dcb68009 Invalidate the boolean result for a particular warning reported by pavefiller 2021-12-19 22:14:09 +01:00
Thomas Krijnen 6b0b64b869 Good news everyone! Option to process wall opening subtractions in 2D. 2021-12-19 22:08:16 +01:00
Thomas Krijnen 09631e9565 Remove some erroneous or wrong (hopefully) lines on mintol and prec 2021-12-19 22:01:07 +01:00
Thomas Krijnen e9bb70f56b Eliminate boolean sub operands b that only touch operand a 2021-12-19 21:59:29 +01:00
Thomas Krijnen bd008bdefe option to write boolean operands to disk for debugging 2021-12-19 21:57:47 +01:00
Thomas Krijnen 03d4782cb7 Ground work for processing opening placement up to parent wall 2021-12-19 21:55:41 +01:00
Thomas Krijnen 49c555c508 Log BRepCheck_Analyser results 2021-12-18 22:02:47 +01:00
Thomas Krijnen c51c5651b2 Small changes to iterator settings 2021-12-18 16:16:44 +01:00
Thomas Krijnen 364c2286d1 #1937 use git branch --contains instead show 2021-12-18 16:16:21 +01:00
Jesusbill 37d20eb360 changes in ifc2ca standard case 2021-12-17 17:01:18 +01:00
Jesusbill dd6912bdaa ifc2ca - possibility to exclude zero length springs in point connections 2021-12-17 16:27:41 +01:00
Jesusbill a1fe68a17e changes in ifc2ca bonded case 2021-12-17 09:58:02 +01:00
Thomas Krijnen 3ec79cac3f #1914 only proceed with 'face addition check' when first operand contains open shells 2021-12-15 13:37:12 +01:00
Thomas Krijnen dbc6f521fe #1912 apply also on types 2021-12-14 09:57:31 +01:00
Thomas Krijnen c52f851d79 #1807 method mapping proposal 2021-12-14 09:57:31 +01:00
Thomas Krijnen 3380158f55 #1692 memory leak in get_info_2() 2021-12-13 10:32:05 +01:00
Jesusbill 4e9a5f246f minor changes in ifc2ca scripts 2021-12-12 19:03:14 +01:00
Dion Moult 664c49a07d Bump IfcOpenShell. See #1906. 2021-12-11 21:10:03 +11:00
Thomas Krijnen 06b9cc6b38 CMakeLists ADD_COMMIT_SHA option 2021-12-10 10:03:41 +01:00
fichter b9ea741e5e OCC7.5 to OCC7.6 -> depracated Poly_Triangulation Nodes() 2021-12-10 08:44:42 +01:00
Thomas Krijnen 0098e38c77 Switch to libocct for yml workflows: add data-exchange libs 2021-12-10 08:08:03 +01:00
Dion Moult ece796fc2d Fix #1917. Fix warning where the relating type classes data couldn't be accessed. 2021-12-10 14:06:54 +11:00
Dion Moult de4659570a See #1917. Refactor and fix warning message when you haven't got any contexts in a project yet. 2021-12-10 13:31:23 +11:00
Dion Moult 62236c44ae Fix #1923. Fix bug where creating a new structural analysis model broke. 2021-12-10 10:58:06 +11:00
Dion Moult ce5db914db Fix #1913. Fix bug where filtering by decomposition didn't work on IFC2X3. 2021-12-10 10:14:43 +11:00
Dion Moult 12699f29b7 Minor fix 2021-12-10 09:44:23 +11:00
Dion Moult 54e326983f Fix #1921. Document issue with installing on outdated Ubuntu distributions. 2021-12-10 09:43:28 +11:00
Thomas Krijnen 5fb40a390c Switch to libocct for yml workflows: update include dir 2021-12-09 20:52:30 +01:00
Thomas Krijnen 0cb8716c6a Switch to libocct for yml workflows 2021-12-09 20:47:00 +01:00
Thomas Krijnen 099013fa05 revert #1927 for mpir 2021-12-09 20:27:55 +01:00
Ttofuuu 4a8843b6bb fix mpfr checking problem
https://github.com/BrianGladman/mpir.git 's mpfr will lead to a merge problem and make IFCOS fail to build depends on Windows. Change the link to anothms will fix this problem.
2021-12-09 20:26:19 +01:00
Thomas Krijnen 33d15b42b7 bop face addition check only for subtraction 2021-12-09 20:24:21 +01:00
Gorgious56 44581c77ac Extend ifc debug panel (#1924)
* Prevent searching for invalid ID in IFC debugger
You can still input <= 0 IDs for debugging purposes
But the field won't let you drag below ID = 1
Also changed default to 1 so it doesn't throw an error by default

* Extend ops descriptions, labels and debug output

* Use Operator property for selecting dense meshes

* Prevent error if id has no geom representation

* Use Poll operator and poll fail message

* Debug op to select highest meshes by polygon percentile
2021-12-09 13:41:15 +01:00
Bernd Hahnebach e848b249a6 bimtester: if lang argument is not set use feature file lang for output messages, improves #1910 2021-12-09 12:04:47 +01:00
Bernd Hahnebach f85c3ae24c bimtester: update log and smartview, they still are deactivated by default, fixes #1892 2021-12-09 09:06:51 +01:00
Dion Moult 7c633fab31 Fix bug where libraries didn't work in IFC2X3 2021-12-09 17:51:29 +11:00
Dion Moult f716f8a357 You can now add feed relationships in a Brick model from IFC elements 2021-12-09 17:50:57 +11:00
Dion Moult d156927e13 From an IFC element, you can now add a new Brick element in a Brick model 2021-12-09 17:48:47 +11:00
Dion Moult 2ef1f4d812 Assigning a brick reference now adds a 2-way IFC reference in the Brick model 2021-12-09 17:45:08 +11:00
Dion Moult 78a36ab429 Fix #1816. Fix bug where cameras weren't allowed to be optional in BCF 2.1. 2021-12-09 13:51:55 +11:00
Dion Moult 763a38bc9c Fix bug with missing system arrows in visualising offset models and sink/source mixed flows. 2021-12-09 13:40:23 +11:00
Dion Moult a23c88a53e Minor fix for #1902. 2021-12-09 13:38:46 +11:00
Dion Moult f6bf626349 Little utility to help printing out maintainable classes and other classes in contractual documentation. 2021-12-09 13:36:33 +11:00
Bernd Hahnebach b66792f981 bimtester: get lang from json report and use it to generate html report, fixes #1928 2021-12-08 15:53:34 +01:00
Bernd Hahnebach 195af0c850 bimtester: do not break bimtester if translation files are missing, fixes #1910 2021-12-08 15:19:36 +01:00
Bernd Hahnebach ee56e06d86 bimtester: German eleclass attributes steps, fix translation redirection 2021-12-08 08:42:21 +01:00
Bernd Hahnebach 146dd1e74d bimtester: German geometrirc detail step, fix quotation marks 2021-12-08 08:23:00 +01:00
Bernd Hahnebach 6d47cf3a51 bimtester, attributes ele class steps, use generic assert methond 2021-12-07 18:01:10 +01:00
Bernd Hahnebach 9b6d53fe38 bimtester: example steps, delete more steps which are implemented already 2021-12-07 15:51:31 +01:00
Bernd Hahnebach 6902e2e2c6 bimtester: features, move geometric detail tests from examples to implemented steps 2021-12-07 15:47:15 +01:00
Bernd Hahnebach 82d136b9b3 bimtester: util, improve generic assert method 2021-12-07 14:58:18 +01:00
Bernd Hahnebach b8dd0450d1 bimtester: features, fixes in element class attributes 2021-12-07 14:47:13 +01:00
Bernd Hahnebach 85d76c084b bimstester: features, move element class attributes tests from examples to implemented steps 2021-12-07 12:59:50 +01:00
Bernd Hahnebach c658f7610e bimstester: features, move spatial structure tests from examples to implemented steps 2021-12-07 12:16:18 +01:00
Bernd Hahnebach 3fad28572b bimstester: features, move application tests from examples to implemented steps 2021-12-07 11:44:21 +01:00
Bernd Hahnebach 455fe80497 bimtester: features import module, sort by abc 2021-12-07 11:27:42 +01:00
Bernd Hahnebach 3f46d54ad9 bimtester: features, move qset test from example steps to implemented steps 2021-12-07 09:38:22 +01:00
Bernd Hahnebach 89e3276c90 bimtester: example steps, delete the ones which are implemented already 2021-12-07 08:47:31 +01:00
admin f794b647e1 merge v0.6.0 2021-12-06 09:59:18 +08:00
aothms bb9eba07c0 build-all.py python library proposal #1884 2021-12-03 10:21:55 +01:00
aothms 6d4573fb58 build-all.py option PYTHON_USER_SITE 2021-12-03 10:21:55 +01:00
aothms 24890dd001 build-all.py option NO_CLEAN 2021-12-03 10:21:55 +01:00
Dion Moult 65d599bbd9 Fix bug where Blender name wouldn't match IFC Name when reassigning class. See #1902. 2021-12-03 11:00:54 +11:00
Dion Moult ebe5460a9f Fix segfault thanks to aothms. 2021-12-02 09:28:04 +01:00
Dion Moult 01bc29c5b2 Purge by_ref_cached_ 2021-12-02 09:28:04 +01:00
Dion Moult 5ad6d455f9 get_total_inverses now efficiently gets the full number of references to an entity 2021-12-02 09:28:04 +01:00
Dion Moult cef1c86f6d Experimental get_inverse_cardinality proposal. See #1904. 2021-12-02 09:28:04 +01:00
admin 2e81b2bd17 merage v0.6
ADD IFCGroup parse #1154
2021-12-02 10:19:47 +08:00
admin 8527d0fcbd merage new 0.6 2021-12-01 10:32:20 +08:00
Cyril Waechter d1caa3242f Refactor to usecase as asked in #1881 (#1907) 2021-11-30 21:24:19 +11:00
Dion Moult 4f7bfec026 Merge branch 'v0.7.0' of github.com:IfcOpenShell/IfcOpenShell into v0.7.0 2021-11-30 21:23:16 +11:00
Dion Moult df6ad70345 Fix percentage loading implementation with the new more accurate progress number. 2021-11-30 21:23:06 +11:00
Bernd Hahnebach a7a3ccb23a bimtester: gui, initialize ifc file and feature file text 2021-11-30 10:30:41 +01:00
Cyril Waechter b65f2ca062 Allow to assign IfcRelSpaceBoundary to an object (#1902) 2021-11-30 13:35:55 +11:00
Cyril Waechter f991b053d3 Allow to manually update boundary connection geometry (#1899)
* Allow to manually update boundary geometry

Following have been created in this purpose:
* usecase in ifcopenshell.api
* blenderbim operator
* button in blenderbim manually trigger it

* Assign kwargs to object instead of settings dict

* Add forgotten helper file
2021-11-30 13:29:22 +11:00
Cyril Waechter 47a25ca8b9 Prevent crash on export for obj with no material (#1903)
During export material_checksum was always checked against a stringed
list `'[]'` for an empty material while default value
for material_checksum default was `''`. So it was trying to update
material of object which have none (eg. IfcRelSpaceBoundary).
See: https://github.com/IfcOpenShell/IfcOpenShell/blob/a3f27830c579e567218f79faa52dfc941a441241/src/blenderbim/blenderbim/bim/export_ifc.py#L147
2021-11-30 13:27:08 +11:00
Bernd Hahnebach a3f27830c5 bimtester: gui, improve prints and error handling 2021-11-29 14:59:30 +01:00
Bernd Hahnebach 1a5b5dd303 bimtester: fix gui, works with feature file now instead of feature directory 2021-11-29 10:28:49 +01:00
Dion Moult f529bc37ee Fix bug where selecting type occurrences did not work 2021-11-29 20:25:51 +11:00
Dion Moult 825ffe03b0 Converting brickschema projects to IFC libraries now works on IFC2X3 2021-11-29 20:19:58 +11:00
Dion Moult 622ff05247 Fix bug where updating owner history may not work if you were using it outside Blender. 2021-11-29 20:17:02 +11:00
Dion Moult d638405ff8 Assigning library references now works on IFC2X3. 2021-11-29 20:16:25 +11:00
Dion Moult c0f547c6e4 Test expectations for new remove_deep2 proposal. See #1812. 2021-11-29 20:14:50 +11:00
Dion Moult 3accc1dbd6 Editing object placements is now 3x faster on large files. See #1807. 2021-11-29 19:58:03 +11:00
aothms 6eab9fb593 #1785 HdfSerializer read-only option 2021-11-28 19:34:54 +00:00
Felipe Mesquita 2708133493 Added information for debugging level parameter 2021-11-27 08:53:17 +01:00
Thomas Krijnen c5e6c3e2c7 #1897 handle nesting in get_decomposing_entity_impl() 2021-11-26 14:15:51 +01:00
Thomas Krijnen d7b27c0620 ifcopenshell.ifcopenshell_wrapper.turn_on_detailed_logging() 2021-11-25 15:23:14 +01:00
Thomas Krijnen 75ffc4454d #1895 don't signal element ready when result is empty 2021-11-25 12:05:39 +01:00
Dion Moult a1817e8a61 Fix #1889. Allow explicitly overriding data types when editing psets. 2021-11-24 16:38:19 +11:00
Bernd Hahnebach b4b334145f BIMTester: steps, improve imports in the regard of rebases 2021-11-23 15:18:01 +01:00
Bernd Hahnebach 04535d27ec Bimtester, improve German attribute feature translation, get rid of umlaut since it makes problems in some circumstances 2021-11-21 21:19:10 +01:00
Thomas Krijnen 3c41f6b0f8 #1153 draw.py timing 2021-11-20 14:05:53 +01:00
Thomas Krijnen a17c44c076 #1153 update draw.py with two new options 2021-11-20 14:05:11 +01:00
Thomas Krijnen eccf72ee8a #1153 option to preprocess shape into sets of profile edges 2021-11-20 14:02:12 +01:00
Thomas Krijnen 9c9bec9c4e Some more things related to #1853 2021-11-19 15:08:24 +01:00
Thomas Krijnen 71c1cd6a9e Check for null result and handle some bop alerts 2021-11-19 10:39:14 +01:00
Thomas Krijnen 0504556e7a #1885 consider schema type when copying attribute values 2021-11-19 09:38:28 +01:00
Thomas Krijnen e9a18d030e Small cleanup and try to please gcc 2021-11-19 09:22:09 +01:00
Thomas Krijnen 6d725f60fa finish up 2021-11-19 09:22:09 +01:00
Thomas Krijnen 72206bc441 async init, crashes now on get() 2021-11-19 09:22:09 +01:00
Dion Moult c0eb9addfd Fix bug in FM utility for grabbing classes from the draft FMHEM standard 2021-11-19 19:13:21 +11:00
Dion Moult ff3a98234d Fix bug in convert length unit recipe where IFC2X3 ownership history fails. 2021-11-19 19:12:55 +11:00
Dion Moult ebf6b9fc88 Fix #1886. 2021-11-19 19:08:34 +11:00
Cyril Waechter c2e4b5f1fa [BlenderBIM] Boundaries: add relations editing (#1881)
* SelectGlobalId: set object as active

Use tool module instead of previous custom search loop.

* Boundaries: add relations editing

For entity of class IfcRelSpaceBoundary :
* Display relationship attributes
* Add button to jump to related objects
* Allow to edit relations attributes including entity filter.
UI similar to current base attributes editing.
2021-11-19 10:06:22 +11:00
Bernd Hahnebach 9728c4d345 bimtester: features psets, use quots the same way as in all other features 2021-11-18 18:16:37 +01:00
Gorgious f0d6500539 Merge branch 'v0.7.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.7.0 2021-11-18 10:38:27 +01:00
Gorgious 124ccf0404 (slightly) Optimise batch removing objects 2021-11-18 10:38:17 +01:00
Bernd Hahnebach df03f7ad29 bimtester: steps, fix undefined name 2021-11-18 10:20:50 +01:00
Bernd Hahnebach ff8fc898a1 bimtester: examples, trailing ws 2021-11-18 09:53:53 +01:00
Bernd Hahnebach 2d62d8181a bimtester: improve French translation for the provided example 2021-11-17 16:08:42 +01:00
Bernd Hahnebach 6853735bb2 bimtester: fix example feature files to work with this bimtester 2021-11-17 10:36:37 +01:00
Bernd Hahnebach 1c3980b6f0 bimtester: fix italian and dutch project setup step files 2021-11-17 10:36:37 +01:00
Dion Moult 5c224150ec More slow progress in getting annotations round-tripping. See #1153. 2021-11-17 18:25:01 +11:00
Dion Moult 18719c16df Fix bug where subelement coordinates were incorrectly calculated in non SI units 2021-11-17 16:22:23 +11:00
Dion Moult ddb8abff0f Minor fix 2021-11-17 15:32:26 +11:00
Dion Moult f9221717ff You can now associate IFC elements with Brick elements and navigate to them 2021-11-17 13:27:07 +11:00
Dion Moult da6945b352 You can now assign and unassign library references 2021-11-17 11:43:53 +11:00
Dion Moult 62cdf76a5a Fix bug where you couldn't copy quantities to other elements 2021-11-17 10:35:46 +11:00
Dion Moult fae607f8ce New UI to add / edit / remove library information and references. 2021-11-16 22:15:54 +11:00
Dion Moult 468192e849 Fix bug where unlinking a style that was invalidly linked didn't work. 2021-11-16 22:08:55 +11:00
Dion Moult edd01637e2 Minor fix 2021-11-16 21:51:23 +11:00
Bruno Postle 604fbc4bc9 Raise default section height from storey from 1.0 to 1.2 2021-11-16 09:12:42 +01:00
Dion Moult 4617d9f234 A whole bunch of new usecases for managing IFC library information and references 2021-11-16 18:30:23 +11:00
Dion Moult 41486ba08a New utility to get layers of an element. See #1869. 2021-11-16 18:07:47 +11:00
Dion Moult 2120653104 Minor fix. 2021-11-16 17:52:08 +11:00
Dion Moult 43869c33f6 Rebuild text annotations to have leaders in the same object and use text literals. See #1153. 2021-11-16 08:54:29 +11:00
Dion Moult fcfdc179df Viewport annotation decorations now scale based on paper size. See #1153. 2021-11-16 08:48:50 +11:00
Dion Moult 30c164d223 Fix minor error in console when changing drawings. See #1153. 2021-11-16 08:45:52 +11:00
Dion Moult b28d8b0cca Drawing annotations now are stored in IFC using ObjectType conventions. See #1153. 2021-11-16 08:35:49 +11:00
Dion Moult 4b5907f5dd Reimplement roundtrip of most annotation elements for drawings. See #1153. 2021-11-16 08:32:43 +11:00
Dion Moult 78a27ef44c New experimental OBJ2IFC script 2021-11-14 18:30:56 +11:00
Thomas Krijnen 528e27234c tree.protrusion_distances() 2021-11-13 15:54:42 +01:00
Dion Moult 8ac885ced1 Fix bug where annotative grids did not sync. 2021-11-12 15:16:10 +11:00
Dion Moult 63872abaef Purge old 2D element drawing system, so we don't get double the symbols on drawings. 2021-11-12 14:01:13 +11:00
Dion Moult 5ba155eb17 Fix #1857. Fix bug where deleting from the outliner was not tracked. 2021-11-11 22:27:40 +11:00
Dion Moult 2ec3c4c06b Swapping a Blender material for another is now auto synchronised. 2021-11-11 18:21:02 +11:00
Dion Moult 6f55cd5169 Optimise object placement change checking, so medium sized project exports are 5 seconds faster at minimum, but can be much higher since false positives are culled. 2021-11-11 17:31:23 +11:00
Dion Moult f5f88f4b97 Fix #1872. Bug where duplicating an object didn't duplicate its styles. 2021-11-11 17:31:23 +11:00
Dion Moult d5b92c0fea Fix bug where style colours were not auto synchronised. 2021-11-11 17:31:23 +11:00
Laurens Oostwegel 9355969110 Load CJIO on execution instead of initialisation 2021-11-10 20:08:18 +01:00
Dion Moult 6c998e0b8a Fix #1871. 2021-11-10 22:23:52 +11:00
Dion Moult 51f8d648ad Minor fix 2021-11-10 21:01:17 +11:00
Vukas Pajic a26539d6a5 show property description in pset_template ui 2021-11-10 10:18:55 +01:00
Dion Moult a9f27fcf17 Fix bug #1854. Materials are now auto replaced in Blender when you assign a new IFC material. 2021-11-10 18:04:54 +11:00
Dion Moult 28e5af853d Fix bug where an added default material was not linked and auto synced. 2021-11-10 18:01:10 +11:00
Dion Moult a7b3b5261f Fix bug in IFC2X3 where updating style colours didn't work. 2021-11-10 16:45:16 +11:00
Dion Moult 0dac56dbdf Fix bug where diffuse colour was not correctly extracted from nodes 2021-11-10 16:39:06 +11:00
Dion Moult 0992f43f11 Geometry caching is now enabled for model importing 2021-11-10 13:52:14 +11:00
Dion Moult c1c50f8868 Minor fix. 2021-11-10 12:46:07 +11:00
Dion Moult d733960068 Fix #1856. Bug where you lost your existing container or aggregation when you added a new aggregation assembly. 2021-11-09 20:50:31 +11:00
Dion Moult 66fa3f0096 Changes are now synchronised prior to switching representations. 2021-11-09 20:49:25 +11:00
Dion Moult cbf7b0a77a Minor clean up for CityJSON PR. 2021-11-09 20:46:46 +11:00
Dion Moult 91f2f9438f Fix #1764. Bug where OpenLCA UI would freeze if it couldn't connect to OpenLCA. 2021-11-09 20:43:30 +11:00
Dion Moult fcbb6e60ac Another Makefile fix :( 2021-11-09 10:05:06 +11:00
Dion Moult f33d613f9d Minor Makefile fix 2021-11-09 09:45:36 +11:00
Cyril Waechter 849dfbed28 [BlenderBIM] Tools to load IfcRelSpaceBoundary (#1864)
* Tools to load IfcRelSpaceBoundary

At scene level to load all.
At space level to load ones from a specific space or a specific one.

* Add a tool to colour boundaries

Colour is based on its related building element.
2021-11-09 09:28:44 +11:00
Dion Moult 8a4bc34fad Scale changes are now auto synchronised on export. 2021-11-09 09:22:03 +11:00
Laurens Oostwegel aa18c1b7d6 Small fix in Makefile error due to ifccityjson 2021-11-08 23:03:31 +01:00
Laurens Oostwegel ae45a9b9a5 Fix error in Makefile 2021-11-08 22:59:09 +01:00
ecke101 7aa75d98d3 Improve support for Powerproject import (#1865)
This is tested with swedish PowerProject 14.0 file
2021-11-09 08:52:24 +11:00
Laurens Oostwegel ff6db5f24d Integrate ifccityjson in BlenderBIM (#1859)
* ifccityjson-BB integration: include CJIO in makefile

* Add ifccityjson to BlenderBIM

* Make ifccityjson work like a package

* Use pip while installing CJIO dependency for ifccityjson

* revert removal of brick module

* Changes from pull request review

* Use ifccityjson as CLI and as package for BlenderBIM
2021-11-09 08:51:30 +11:00
Dion Moult de7c54b771 Fix #1855. Bug where authoring type dropdowns didn't refresh. 2021-11-08 21:12:38 +11:00
Dion Moult 7fbf317ad2 Fix representation where removing a representation left objects with an empty mesh. Now a proper empty is used. 2021-11-08 21:12:38 +11:00
Dion Moult 0471f17d9a Fix bug where removing a representation from a typed instance didn't remove all data users. 2021-11-08 21:12:38 +11:00
Dion Moult bf134eb0f4 Implement cache updating for drawings. See #1153. 2021-11-08 21:12:38 +11:00
Dion Moult 7ccb6ee110 Resolve #1836. Scaling in Blender is now auto resolved when representations are updated. 2021-11-08 21:12:38 +11:00
Dion Moult 9076043a5c Purge old dumb door and dumb window tool to prevent confusing users 2021-11-08 21:12:38 +11:00
Dion Moult 1c0fcf7b40 Add annotation symbols for doors, windows, and bunny to the demo library 2021-11-08 21:12:38 +11:00
Dion Moult 4fdcb87a28 New IfcOpenShell utility to get instances of an element type easily 2021-11-08 21:12:38 +11:00
Dion Moult 246460dec4 Fix bug where non-geometric objects caused the representations UI to not display 2021-11-08 21:12:38 +11:00
Thomas Krijnen a89a40e637 #1785 omplete stored_settings / requested_settings check 2021-11-08 10:59:49 +01:00
Thomas Krijnen c1fcf2528e swig uint64_t 2021-11-08 10:58:55 +01:00
Thomas Krijnen d4f0495caa Consistent setting type 2021-11-08 09:59:15 +01:00
Dion Moult 669295d4ac Resolve #1860. Brickschema is now optional. 2021-11-08 11:17:11 +11:00
Dion Moult e4a27d49c9 Drawing module now is in sync with latest C++ upgrades. See #1153. 2021-11-08 08:36:13 +11:00
Thomas Krijnen e0e8281a1e Allow tree.select(BRepElement) 2021-11-07 19:49:37 +01:00
Thomas Krijnen 1cdf695891 #1785 check settings in cache and upgrade to world coords 2021-11-07 19:23:48 +01:00
Thomas Krijnen 580678c2c1 Fix casts in XML serializer 2021-11-07 11:16:47 +01:00
Laurens Oostwegel a038ae434b ifccityjson: it is now easier to extract one LOD 2021-11-07 11:04:27 +01:00
Laurens Oostwegel 698ef40ada ifccityjson: prevent interior holes in faces as there is a bug in the geometry generation 2021-11-07 10:55:47 +01:00
Laurens Oostwegel 276077964d ifccityjson: refactor GeometryIO class 2021-11-07 10:51:09 +01:00
Laurens Oostwegel 45080a8a1f ifccityjson: temporary fix until CJIO can build its LOD dictionary again 2021-11-07 10:50:12 +01:00
Laurens Oostwegel dd348de0b7 ifccityjson: lazy build vertex dictionary 2021-11-07 10:40:01 +01:00
Dion Moult 61e510e45c New feature to select all objects in same container 2021-11-07 17:02:05 +11:00
Dion Moult 05068754b9 New feature to select the container of an object 2021-11-07 15:32:33 +11:00
Dion Moult de561b78e0 Resolve #1750. You can now save IFCs under a relative path to your Blend file. 2021-11-07 13:20:33 +11:00
Thomas Krijnen e6e1978584 only call expensive wstring_convert() when necessary 2021-11-06 14:36:58 +01:00
Thomas Krijnen 0b7bdc0f9d #1785 geometry caching caching 2021-11-06 13:16:13 +01:00
Dion Moult e868186897 Resolve #1749. You can now save as another IFC filename. 2021-11-06 21:41:31 +11:00
Dion Moult 5450233f8e Minor fix 2021-11-06 21:10:56 +11:00
Dion Moult 8e215382f7 Fix bug where assigning a type did not use existing representation data in the scene if the context had changed 2021-11-06 20:56:53 +11:00
Dion Moult 4149292a13 Fix bug where adding a representation to a type instance didn't share meshes 2021-11-06 18:51:00 +11:00
Dion Moult 117f663f48 Fix bug where you couldn't add a plan representation to something with no context identifier 2021-11-06 17:48:31 +11:00
Dion Moult 960610325f Fix interface bug where representations assigned directly to a context aren't shown 2021-11-06 17:36:47 +11:00
Thomas Krijnen ab50609854 Rename some files with more sensical names 2021-11-05 16:54:16 +01:00
Thomas Krijnen c203b78d34 #1153 #1852 project points to form SVG HLR cut plane 2021-11-05 13:27:27 +01:00
Thomas Krijnen 5633445008 #1153 evenodd 2021-11-05 11:21:19 +01:00
Thomas Krijnen 22ceb35f47 IfcConvert : SEW_SHELLS on svg serializer 2021-11-05 11:07:27 +01:00
Thomas Krijnen 06a988e141 #1153 boolean subtraction on parts 2021-11-05 11:04:46 +01:00
Thomas Krijnen 2dc29978f6 --cache and subtraction in draw.py 2021-11-05 11:03:44 +01:00
Thomas Krijnen 10b502512f #1853 don't blindly explode compounds but check whether there are solids inside 2021-11-05 10:09:12 +01:00
Thomas Krijnen 2d0c44e25a #1785 Set trsf form 2021-11-05 09:22:24 +01:00
Dion Moult 3e52d93db0 Fix bug where existing meshes were not deleted when switching representations. 2021-11-05 17:57:05 +11:00
Dion Moult 07bee4acfa Fix bug where adding a representation to type instances didn't ensure it was added to a geometric type 2021-11-05 15:14:10 +11:00
Dion Moult 0da5d807b8 Minor fix 2021-11-05 13:15:28 +11:00
Dion Moult 657aafbd2e Minor fix 2021-11-05 12:20:33 +11:00
Dion Moult 04449d08e8 Add schema caching to Brick schema loading. 2021-11-05 09:19:42 +11:00
Dion Moult 2b710ffbde Fix bug where pie update container didn't work. 2021-11-04 22:23:26 +11:00
Dion Moult 7fbe365599 Implement new Brickschema project browser. 2021-11-04 18:02:50 +11:00
Dion Moult f49b9f6781 Slightly more robust deletion tracking. 2021-11-03 21:39:17 +11:00
Dion Moult 901318b73b Fix bug where copying an instance did not auto link the meshes. 2021-11-03 19:04:22 +11:00
Laurens Oostwegel 8545d870c0 ifccityjson: Fix bug dependency updated CJIO
In the new CJIO module, cityjson vertices got transformed automatically when calling the object faces. Now this is not the case anymore.
2021-11-03 08:45:36 +01:00
Thomas Krijnen 3124d306d6 #1153 another small hack to get boolean projection working more generally 2021-11-02 15:52:51 +01:00
Thomas Krijnen 8e529f3f10 #1850 Process extrusions of comp profiles seperately 2021-11-02 15:11:56 +01:00
Thomas Krijnen 1ff45165d9 #1743 don't consider bbox in opening subtractions 2021-11-02 15:09:26 +01:00
Thomas Krijnen 05256fc0f4 #1785 geometry caching on multi threaded iterator 2021-11-02 11:39:49 +01:00
Thomas Krijnen be9ef33932 #1153 svg subtraction settings 2021-11-02 08:57:00 +01:00
Thomas Krijnen fc424ebd6b #1785 quick identity check to keep trsf form at identity 2021-11-01 21:47:56 +01:00
Laurens Oostwegel 030f3cf307 Add tutorial to ifccityjson 2021-11-01 18:18:46 +01:00
HassanEmam c8eb933453 Added support for Powerproject (#1849)
* implemented initial cli and support for resource parsing for ms project

* Added command line interface and resource support for MS Project XML files

* Removed the test code

* Check for output exists before writting the file to avoid failure

* Added support for Asta Powerproject files
2021-11-01 10:52:43 +11:00
Dion Moult 208132785f Minor fix 2021-10-31 10:08:41 +01:00
Dion Moult cfa435e9c8 Do the same things in 10 times less code thanks to aothms :) 2021-10-31 10:08:41 +01:00
Dion Moult 515e972906 Fix projection of origin onto camera plane. 2021-10-31 10:08:41 +01:00
Thomas Krijnen 100b0637ac submodule 2021-10-30 16:16:03 +02:00
HassanEmam 2d8ec8a6bf Command Line Interface and MS Project Resource Parsing (#1845)
* implemented initial cli and support for resource parsing for ms project

* Added command line interface and resource support for MS Project XML files

* Removed the test code

* Check for output exists before writting the file to avoid failure
2021-10-30 22:29:10 +11:00
Dion Moult 02461233a6 Reimplement drawing material classes, fix cut projection order, and auto refresh camera representation 2021-10-30 22:13:50 +11:00
Dion Moult dcac1e69ca We now support importing 3D annotations, not just 2D ones. Neat. 2021-10-30 22:13:50 +11:00
Dion Moult b118400cc6 Invalid annotation contexts coming from Revit are now accepted 2021-10-30 22:13:50 +11:00
Roch Bertucat bc430b80f6 Fix Python validate to handle Logical (see #1787) 2021-10-30 13:12:45 +02:00
Dion Moult d2d3addf10 New feature to draw system arrows showing flow direction and port connections. 2021-10-30 18:12:58 +11:00
Dion Moult 683e316088 New MEP utility to select and print debug information about connected system elements 2021-10-30 18:00:36 +11:00
HassanEmam e279fee518 Resource Parsing for P6XML (#1842)
* P6XML Parser failing on calendar type

* add work plan references a get_person which is not an attribute. modified to get_user to work

* Initial support for Primavera XER files

* IFC4D impl XER calendars exceptions and work time

* merged updats

* refactoring code for the 4D model to avoid duplicate code

* Assign process in the api module was missing an atrribute QuantityIn Process

* Merged changes from master

* refactoring

* resolved conflicts

* refactoring code for IFC4D

* refactoring code for IFC4D

* refactoring code for IFC4D

* Reverted the changes to IfcRelAssignsToProcess usecase

* Changed the class to be more discriptive from Utils to ScheduleIfcGenerator

* reverted changes to add_work_plan and Makefile

* Added resource parsing support for Primavera XER

* added relative path for importing common as it was failing in BlenderBIM

* Initial support for Primavera XER files

* merged updats

* Assign process in the api module was missing an atrribute QuantityIn Process

* Merged changes from master

* refactoring

* resolved conflicts

* refactoring code for IFC4D

* refactoring code for IFC4D

* Reverted the changes to IfcRelAssignsToProcess usecase

* Changed the class to be more discriptive from Utils to ScheduleIfcGenerator

* reverted changes to add_work_plan and Makefile

* Added resource parsing support for Primavera XER

* added relative path for importing common as it was failing in BlenderBIM

* deleted repetitive classes for P6XER import

* Resource Parsing added Primavera P6 XML module

* Initial support for Primavera XER files

* IFC4D impl XER calendars exceptions and work time

* merged updats

* refactoring code for the 4D model to avoid duplicate code

* Assign process in the api module was missing an atrribute QuantityIn Process

* Merged changes from master

* refactoring

* resolved conflicts

* refactoring code for IFC4D

* refactoring code for IFC4D

* refactoring code for IFC4D

* Reverted the changes to IfcRelAssignsToProcess usecase

* Changed the class to be more discriptive from Utils to ScheduleIfcGenerator

* reverted changes to add_work_plan and Makefile

* Added resource parsing support for Primavera XER

* added relative path for importing common as it was failing in BlenderBIM

* Initial support for Primavera XER files

* merged updats

* Assign process in the api module was missing an atrribute QuantityIn Process

* Merged changes from master

* refactoring

* resolved conflicts

* refactoring code for IFC4D

* refactoring code for IFC4D

* Reverted the changes to IfcRelAssignsToProcess usecase

* Changed the class to be more discriptive from Utils to ScheduleIfcGenerator

* reverted changes to add_work_plan and Makefile

* Added resource parsing support for Primavera XER

* deleted repetitive classes for P6XER import

* Resource Parsing added Primavera P6 XML module

* P6XML Parser failing on calendar type

* add work plan references a get_person which is not an attribute. modified to get_user to work

* Initial support for Primavera XER files

* IFC4D impl XER calendars exceptions and work time

* refactoring code for the 4D model to avoid duplicate code

* Assign process in the api module was missing an atrribute QuantityIn Process

* Merged changes from master

* refactoring

* resolved conflicts

* refactoring code for IFC4D

* refactoring code for IFC4D

* refactoring code for IFC4D

* Reverted the changes to IfcRelAssignsToProcess usecase

* Changed the class to be more discriptive from Utils to ScheduleIfcGenerator

* reverted changes to add_work_plan and Makefile

* Added resource parsing support for Primavera XER

* added relative path for importing common as it was failing in BlenderBIM

* Initial support for Primavera XER files

* merged updats

* Assign process in the api module was missing an atrribute QuantityIn Process

* Merged changes from master

* refactoring

* resolved conflicts

* refactoring code for IFC4D

* refactoring code for IFC4D

* Reverted the changes to IfcRelAssignsToProcess usecase

* Changed the class to be more discriptive from Utils to ScheduleIfcGenerator

* reverted changes to add_work_plan and Makefile

* Added resource parsing support for Primavera XER

* deleted repetitive classes for P6XER import

* Resource Parsing added Primavera P6 XML module

* Initial support for Primavera XER files

* IFC4D impl XER calendars exceptions and work time

* merged updats

* refactoring code for the 4D model to avoid duplicate code

* Assign process in the api module was missing an atrribute QuantityIn Process

* Merged changes from master

* refactoring

* resolved conflicts

* refactoring code for IFC4D

* refactoring code for IFC4D

* refactoring code for IFC4D

* Reverted the changes to IfcRelAssignsToProcess usecase

* Changed the class to be more discriptive from Utils to ScheduleIfcGenerator

* reverted changes to add_work_plan and Makefile

* Added resource parsing support for Primavera XER

* added relative path for importing common as it was failing in BlenderBIM

* Initial support for Primavera XER files

* merged updats

* Assign process in the api module was missing an atrribute QuantityIn Process

* Merged changes from master

* refactoring

* resolved conflicts

* refactoring code for IFC4D

* refactoring code for IFC4D

* Reverted the changes to IfcRelAssignsToProcess usecase

* Changed the class to be more discriptive from Utils to ScheduleIfcGenerator

* reverted changes to add_work_plan and Makefile

* Added resource parsing support for Primavera XER

* deleted repetitive classes for P6XER import

* Resource Parsing added Primavera P6 XML module

* removed the testing code

Co-authored-by: Dion Moult <dion@thinkmoult.com>
2021-10-30 10:31:18 +11:00
Thomas Krijnen 93c5906ad7 #1153 temporary y offset fix 2021-10-29 14:16:10 +02:00
HassanEmam 6a06607f3f BlenderBIM: Import Resources for XER files (#1841)
* P6XML Parser failing on calendar type

* add work plan references a get_person which is not an attribute. modified to get_user to work

* Initial support for Primavera XER files

* IFC4D impl XER calendars exceptions and work time

* merged updats

* refactoring code for the 4D model to avoid duplicate code

* Assign process in the api module was missing an atrribute QuantityIn Process

* Merged changes from master

* refactoring

* resolved conflicts

* refactoring code for IFC4D

* refactoring code for IFC4D

* refactoring code for IFC4D

* Reverted the changes to IfcRelAssignsToProcess usecase

* Changed the class to be more discriptive from Utils to ScheduleIfcGenerator

* reverted changes to add_work_plan and Makefile

* Added resource parsing support for Primavera XER

* added relative path for importing common as it was failing in BlenderBIM

* Initial support for Primavera XER files

* merged updats

* Assign process in the api module was missing an atrribute QuantityIn Process

* Merged changes from master

* refactoring

* resolved conflicts

* refactoring code for IFC4D

* refactoring code for IFC4D

* Reverted the changes to IfcRelAssignsToProcess usecase

* Changed the class to be more discriptive from Utils to ScheduleIfcGenerator

* reverted changes to add_work_plan and Makefile

* Added resource parsing support for Primavera XER

* added relative path for importing common as it was failing in BlenderBIM

* deleted repetitive classes for P6XER import

Co-authored-by: Dion Moult <dion@thinkmoult.com>
2021-10-29 21:16:47 +11:00
Thomas Krijnen 9f73bd43b4 Don't wrap HdfSerializer 2021-10-29 10:47:40 +02:00
Thomas Krijnen 5f7d92aeb0 #1153 HdfSerializer.remove() for cache eviction 2021-10-29 10:41:21 +02:00
Thomas Krijnen c754d15da8 don't create empty HdfSerializer symbol 2021-10-29 10:40:42 +02:00
Thomas Krijnen 13f5d2d5de add hdf serializer to wrapper 2021-10-29 10:40:15 +02:00
Thomas Krijnen 280eac6127 parse_ifcxml now handled by swig config 2021-10-29 10:40:03 +02:00
Thomas Krijnen ea0e70ef0d populate more serializers if available 2021-10-29 10:39:32 +02:00
Thomas Krijnen a5af8807ee pass config to swig preproc 2021-10-29 10:39:02 +02:00
Chun 0bae861b6a IfcType Filter suggestions for better User Experience (#1840)
* 1.Added Selecting/Deselecting All function
2.Suggested an idea for UI improvment
3.Fixed an UX bug

* Improve the user experience of IfcType Filter
2021-10-29 19:29:43 +11:00
Dion Moult b32bbb89a1 Optimistically track all object edits whenever you toggle edit mode, not just meshes. 2021-10-29 18:04:47 +11:00
Dion Moult 109149a0be Optimise owner check depending on your implementation and no longer create default users on IFC4. Can result in 50% faster script running on long scripted operations. 2021-10-29 18:04:17 +11:00
Dion Moult 4bf4622498 You can now manually type in start/end dates for construction sequence visualisation instead of clicking the date picker hundreds of times. 2021-10-29 17:44:57 +11:00
Dion Moult a4c054ef62 Objects now sync spatial hierarchy more robustly on export, and clean the collection tree in case the user messed it up. 2021-10-29 17:43:38 +11:00
Dion Moult 1141fd5784 Fix bug where during import sometimes aggregation collections don't match object names 2021-10-29 17:39:59 +11:00
luzpaz 0aa8a19b6d Fix various typos (#1837)
Found via `codespell`
2021-10-29 08:56:02 +11:00
Vukas Pajic b46f1647d2 BlenderBIM: Add UI Preset to Preferences (#1825)
* inital commit

* update based on comments

* incorporate suggestion from @Gorgious56

* change curly brackets to square brackets ;)

* update based on comments from @Moult

* code suggestion from @Gorgious56
2021-10-28 23:41:56 +11:00
Dion Moult 72d9bc9256 Moving grid axes are now synchronised automatically 2021-10-28 19:35:40 +11:00
Dion Moult b67d56ada1 Fix bug where imported grids were not linked and didn't auto track edits 2021-10-28 19:35:40 +11:00
Dion Moult d013d6ed09 Resize object to storey now works for a variable number of storeys 2021-10-28 19:35:40 +11:00
HassanEmam 4bb549f3e9 IFC4D code refactoring (#1834)
* P6XML Parser failing on calendar type

* add work plan references a get_person which is not an attribute. modified to get_user to work

* Initial support for Primavera XER files

* IFC4D impl XER calendars exceptions and work time

* merged updats

* refactoring code for the 4D model to avoid duplicate code

* Assign process in the api module was missing an atrribute QuantityIn Process

* Merged changes from master

* refactoring

* resolved conflicts

* refactoring code for IFC4D

* refactoring code for IFC4D

* refactoring code for IFC4D

* Reverted the changes to IfcRelAssignsToProcess usecase

* Changed the class to be more discriptive from Utils to ScheduleIfcGenerator

* reverted changes to add_work_plan and Makefile

Co-authored-by: Dion Moult <dion@thinkmoult.com>
2021-10-28 18:49:02 +11:00
Dion Moult d772299871 Fix bug where auto geolocation offset didn't occur if placements were relative 2021-10-28 11:55:11 +11:00
Dion Moult 081ca81a7e Adding annotation now auto enables viewport decoration drawing. See #1153. 2021-10-27 22:11:05 +11:00
Dion Moult 2ad2a102cb First pass at connecting to new ifcopenshell.draw. See #1153. 2021-10-27 19:42:36 +11:00
Dion Moult 52e8ac386e New hacktastic IFC patch to fix ArchiCAD spaces being loaded into Revit. 2021-10-27 12:29:40 +11:00
Dion Moult f69de3324a You can now split objects using a drawn edge, especially useful when creating slab pour breaks and fixing lazily modeled walls and columns. Thanks Gorgious56! 2021-10-27 12:06:12 +11:00
HassanEmam 04b3b9b60e Ifc4D xer calendars (#1832)
* P6XML Parser failing on calendar type

* add work plan references a get_person which is not an attribute. modified to get_user to work

* Initial support for Primavera XER files

* IFC4D impl XER calendars exceptions and work time

Co-authored-by: Dion Moult <dion@thinkmoult.com>
2021-10-27 10:13:50 +11:00
Dion Moult f64e1dbd7f New feature to calculate side formwork, such as for columns. 2021-10-27 10:09:07 +11:00
Dion Moult 341451f59b Formwork area calculation now unions objects before remeshing to account for overlapping geometry 2021-10-27 09:58:29 +11:00
Dion Moult 80b8da629d Types in type dropdowns are now sorted alphabetically for convenience. 2021-10-27 09:35:31 +11:00
Dion Moult 78e5016619 Minor fix. 2021-10-26 21:05:48 +11:00
Dion Moult 3406c23f98 Fix bug where copying a type also copied its type relations which is invalid. 2021-10-26 20:51:27 +11:00
Dion Moult ee308d294f Spatial elements in the import filter will now be sorted by elevation for convenience. 2021-10-26 17:37:17 +11:00
Dion Moult 955a9af461 Users copying and pasting via ctrl-c/v will now also copy IFC objects. 2021-10-26 17:36:58 +11:00
Dion Moult 34e8d9563d Using duplicate move linked in a BIM project now also triggers IFC copying 2021-10-26 17:17:20 +11:00
Dion Moult e5b5403eaa Minor code review for #1804. 2021-10-26 09:29:15 +11:00
Laurens Oostwegel 47cf2ea29e BlenderBIM: import IFC PointCloud Representation (#1804)
* Implemented export of point cloud representation

* Do representation geometry data no-edge check before no-polygon check

* Initial implementation import of point clouds in BlenderBIM

* create point cloud elements on the appropriate place

* Updated import_ifc.py based on review PR

* delete is_pointcloud() because it is replaced by get_pointcloud_representation()
2021-10-26 09:04:49 +11:00
HassanEmam 9d8074f1fe Initial support for importing Primavera XER files (#1829)
* P6XML Parser failing on calendar type

* add work plan references a get_person which is not an attribute. modified to get_user to work

* Initial support for Primavera XER files

Co-authored-by: Dion Moult <dion@thinkmoult.com>
2021-10-26 08:51:17 +11:00
HassanEmam 3fd944a956 Fixing bugs for Scheduling Module IFC4D (#1826)
* P6XML Parser failing on calendar type

* add work plan references a get_person which is not an attribute. modified to get_user to work

Co-authored-by: Dion Moult <dion@thinkmoult.com>
2021-10-25 20:56:45 +11:00
Thomas Krijnen 566512f7bc #1807 argument_types() on schema entity 2021-10-25 11:52:05 +02:00
Dion Moult 1a84967b1b Code review for Ifc Type filter feature. See #1823. 2021-10-25 20:12:36 +11:00
Chun 41afb26d31 Added IfcTypeFilter into BlenderBIM Search module (#1823) 2021-10-25 19:33:57 +11:00
Dion Moult 818e8010a4 Minor fix. 2021-10-25 19:32:37 +11:00
Dion Moult 58ee049a8f New feature to show inherited element type psets. 2021-10-25 16:21:40 +11:00
Dion Moult 54fa45850a Get psets utility now supports getting material and profile psets 2021-10-25 16:09:04 +11:00
Dion Moult fbadcc017b Get psets utility can now filter only psets or qtos 2021-10-25 15:36:55 +11:00
Dion Moult 6337698494 Element get_psets utility now returns the pset ID for convenience. 2021-10-25 14:21:41 +11:00
Dion Moult 2e6a70b338 New feature to copy properties from one object to all selected objects 2021-10-25 14:21:41 +11:00
Thomas Krijnen e70f675f20 Make build-all a bit friendlier for python partial install success 2021-10-24 14:56:50 +02:00
Thomas Krijnen 13d0b27ef4 Hacky way to return distances in the tree with extend>0 2021-10-24 14:40:18 +02:00
Thomas Krijnen 40b112cd48 Add back platform.machine to build-all path 2021-10-24 12:10:15 +02:00
Thomas Krijnen 14c0400f73 Fix case after #1781 2021-10-24 10:08:06 +02:00
Thomas Krijnen 4733c82b82 Separate out consume_iterator() 2021-10-23 21:34:25 +02:00
Dion Moult 7bccf10fec Fix regression bug where you couldn't add a grid. 2021-10-23 21:19:10 +11:00
Dion Moult 918915aeae Reintroduced feature to copy attributes to selected objects. 2021-10-23 19:55:22 +11:00
Dion Moult 295568453c Minor code review for module visibility feature. See #1798. 2021-10-23 19:01:43 +11:00
Vukas Pajic 56ff0e7472 BlenderBIM: added dropdown in addon preferences to toggle module visibility (#1798)
* added dropdown in addon preferences to toggle module visibility

* Update ui.py

* updated ui to allow individual toggling of modules

* working

* code cleanup and update

* fix issue where non relevant operators shown

* update based on review comments

* add contingency for intermodule panel dependancy

* removed 'magic' operators :)

* clean up some leftover lines

* updated to only register/deregister panel classes
2021-10-23 18:16:11 +11:00
Dion Moult e779a57a09 Fix bug where imported types with representations but no instances were not fully linked. 2021-10-23 18:15:23 +11:00
Dion Moult 6d817703aa Copying parametric geometry from any source now attempts to preserve parametric geometry when possible. 2021-10-22 18:07:34 +11:00
Dion Moult c551275db2 Fix bug where switching to an object with modifiers applied would double the effect of modifiers. 2021-10-22 16:23:36 +11:00
Dion Moult 9ffe92eae5 Assigning a parametric layer type (for walls for now) now attempts to switch from non parametric to parametric geometry. 2021-10-22 15:43:04 +11:00
Dion Moult f19e334cd5 Fix bug where large resizing of walls could result in broken geometry. 2021-10-22 15:21:26 +11:00
Dion Moult a5b8728aec Fix bug where copying elements didn't ensure that material usages were unique 2021-10-22 12:09:57 +11:00
Dion Moult a8c99cebaf Fix terrible bug #1819 where duplicating mapped elements didn't actually copy the geometry mapping. 2021-10-22 11:16:03 +11:00
Dion Moult 9ae2c6352a Minor fix 2021-10-21 23:06:39 +11:00
Dion Moult 0bc849be5a New feature to conveniently add a default material in a blank project when none exists. 2021-10-21 19:40:10 +11:00
Dion Moult a99df36351 The type of mapped representations is now shown in the interface, with an asterisk denoting it is mapped. 2021-10-21 19:16:15 +11:00
Dion Moult 525e6debd5 When updating representations, the existing representation type is prioritised unless you tell it otherwise. See #1748. 2021-10-21 18:39:55 +11:00
Gorgious d6cb94c6f1 Port root, bimtester and sequence to feature tests 2021-10-21 09:33:45 +02:00
Dion Moult c437ba8f9d Assigning a parametric profile type now auto switches from non parametric geometry to parametric geometry 2021-10-21 16:28:55 +11:00
Dion Moult aee7fbcc79 Only show type selection buttons when a type is available. 2021-10-21 14:10:24 +11:00
Dion Moult 456adf453d New feature to calculate the radius of a polygonal circle 2021-10-21 12:43:16 +11:00
Dion Moult d2e9194636 Adding type empties now adds it to the scene collection for convenience in case your types collection is hidden (which is most of the time) 2021-10-21 11:37:44 +11:00
Dion Moult 9907651d4a Fix bug where you could reassign class to another product type and create invalid relationships 2021-10-21 11:28:49 +11:00
Massimo Fabbro bb2f59e2f8 Add tooltips. Finished the "Authoring" section in the n-panel. (See issue #1646) (#1818)
* Add first tooltip (#1646)

* Add tooltips for new project

* Small fix

* Added more tootips

* Add other tooltip to the n-panel

* Add other tooltips in N Panel
2021-10-21 10:10:54 +11:00
Gorgious56 fec295d021 Migration (#1817) 2021-10-21 10:10:22 +11:00
Dion Moult cb08c19942 Fix bug where BCF header file info was not loaded. See #1816. 2021-10-20 23:41:43 +11:00
Thomas Krijnen b1b121ebc8 #1814 check for the succesful creation of edge curves in IfcIndexedPolyCurve 2021-10-20 11:14:35 +02:00
Alexander Nitsch ba9c2a3280 Fix initialization of local variable "data" (#1813)
Co-authored-by: Nitsch Alexander <alexander.nitsch@scs.ch>
2021-10-20 19:57:13 +11:00
Dion Moult 575de12d79 Fix bug where auto assignment in the collection hierarchy failed if you had filtered out aggregates and you were assigning a subelement of an aggregate 2021-10-20 19:56:46 +11:00
Dion Moult 503f0399ff Fix bug where you couldn't bulk copy non-geometric elements to other spatial containers 2021-10-20 18:47:55 +11:00
Vukas Pajic 871ad1ab7f Added operator to add psets to all selected objects. (#1805)
* first attempt

* Accommodate object vs non-object psets, and directly fetch applicable pset names

Co-authored-by: Dion Moult <dion@thinkmoult.com>
2021-10-20 14:49:02 +11:00
Dion Moult 58859ef8c3 Fix bug where when deleting representations it could sometimes overreach and delete geometric, style, or layer data of other elements. See #1812. 2021-10-20 14:11:49 +11:00
Dion Moult 52062bc7e8 Experimental proposed deep removal. See #1812. 2021-10-20 11:44:19 +11:00
Gorgious56 8fdbe30dc5 Ux docs test (#1808)
* First draft

* Final Update
2021-10-19 10:55:25 +02:00
Dion Moult f438c48c23 Fix bug where copying objects may sometimes result in incorrect location in the Blender collection tree 2021-10-19 19:15:01 +11:00
Dion Moult 6478601f79 Fix bug where copying objects did not necessarily retain the existing context assignment 2021-10-19 19:15:01 +11:00
Thomas Krijnen 816059eefd Reapply 869cc25061 2021-10-19 08:49:46 +02:00
Dion Moult 3daf4203d1 When assigning types, your preference of dynamic voids are now preserved. 2021-10-19 15:43:14 +11:00
Dion Moult c1b53859ee WIP refactor of geometry for stabilisation and optimisation. Switch representation now done. 2021-10-19 12:57:29 +11:00
Thomas Krijnen 63f85beb7e #1803 Update include in wrapper code as well 2021-10-18 16:10:20 +02:00
Thomas Krijnen bdc6fcb66f #1803 Use abstract GeometrySerializer as cache to eliminate cyclic dependencies 2021-10-18 11:38:01 +02:00
Dion Moult 4577b7bf60 Potentially risky refactor of add_representation in preparation of stabilisation and optimization of geometric operators. 2021-10-18 19:23:40 +11:00
Dion Moult 33f4461a87 New feature to resize / squash / stretch objects to their storey height. Useful for remodeling IFCs for construction simulations. 2021-10-18 14:15:16 +11:00
Dion Moult c78e7b3ba8 Fix minor bug where Python warnings showed up when delete operations were called 2021-10-18 14:12:07 +11:00
Dion Moult 699ccddda3 New utility function to get storey elevations with elevation attribute fallback for more compliant sorting of building storey elevations. 2021-10-18 12:39:04 +11:00
Dion Moult a9a48bdd1d Refactor misc functions into new misc module for better organisation. 2021-10-18 11:21:49 +11:00
amoki 8ed395a29f build python only if needed 2021-10-17 10:15:08 +02:00
amoki 63bfe761bf use platform.system() instead of uname, install python module directly in current python 2021-10-17 10:15:08 +02:00
amoki f8c11e3af7 rollback boost version 2021-10-17 10:15:08 +02:00
amoki 993ae71968 upgrade dependencies, remove x86 build 2021-10-17 10:15:08 +02:00
amoki 81b8f7e39b remove last TAG 2021-10-17 10:15:08 +02:00
amoki b1e897197b more cleanup 2021-10-17 10:15:08 +02:00
amoki 46cf1362f6 more f-strings, add some env variables 2021-10-17 10:15:08 +02:00
amoki f03992dcde remove old python versions and use f-strings 2021-10-17 10:15:08 +02:00
Dion Moult aedc1751b6 Resolve #1802. Unlinking an object now also unlinks materials and styles too for convenience. 2021-10-16 16:55:06 +11:00
Dion Moult 26cbd82da1 New feature to unlink Blender materials and IFC materials 2021-10-16 16:53:37 +11:00
Dion Moult 516503b9ca Fix #1801. Fix bug where importing multiple assets sharing an already imported material fails. 2021-10-16 15:46:02 +11:00
Dion Moult 23be5858b5 Fix bug where the derived placements interface didn't take into account rotations 2021-10-15 17:30:33 +11:00
Dion Moult 776842a064 Spatial containers are now shown sorted by Z index order for convenience. 2021-10-15 17:07:23 +11:00
Dion Moult bb090bd9a0 Fix deep magick bug where copying elements without having one of them active didn't actually copy them in IFC too 2021-10-15 14:42:08 +11:00
Dion Moult 0abe9f0559 Building storeys now show a derived storey height so you don't need to do math 2021-10-15 13:23:18 +11:00
Dion Moult 07bfe296dd You can now copy a representation from one object to another 2021-10-15 13:23:18 +11:00
Dion Moult d666a687dc FMHEM classes now updated to latest draft 2021-10-15 13:23:18 +11:00
Dion Moult acde4144bc You can now toggle whether element filtering also affects spatial containers 2021-10-15 13:23:18 +11:00
Laurens Oostwegel b41e90ead6 IfcOpenShell-python: Implemented point cloud export functionalities (#1799)
* Implemented export of point cloud representation

* Do representation geometry data no-edge check before no-polygon check
2021-10-15 12:15:55 +11:00
Dion Moult 68fd0c0cf5 Fix bug where you couldn't filter imported subelements without also selecting their parents 2021-10-14 18:47:48 +11:00
Dion Moult 199be3363f Fix bug where copying elements shared a placement. This fix speeds up copying parent elements in the decomposition significantly, like when copying a storey. 2021-10-14 16:13:48 +11:00
Dion Moult dd3fc79fb9 Use context filters during import when possible to optimise import times 2021-10-14 15:53:25 +11:00
Dion Moult d384b3d7df Fix bug where copying a container also copied its contents 2021-10-14 15:52:38 +11:00
Dion Moult 04209c78b9 Minor revert - until I properly refactor and test this. 2021-10-14 13:06:26 +11:00
Dion Moult a7719cc4b1 Fix #1796. Fix bug where duplicating a collection messes up the collection tree. 2021-10-14 13:04:30 +11:00
Dion Moult 3d0d2ec8fb Fix #1795. New support for conversion based units with offsets, like fahrenheit. 2021-10-14 12:46:01 +11:00
Dion Moult 1fa1a9e3d3 Support auto detection of unit type when adding imperial units 2021-10-14 12:44:13 +11:00
Dion Moult 464b0c2ebc Unassigning the last unit now cleans up empty unit assignments 2021-10-14 12:42:33 +11:00
Dion Moult 179a970974 Utility to print out all maintainable assets for FM paper documentation 2021-10-14 11:36:46 +11:00
Dion Moult 7fb77a794e Fix #1793. Whoops. 2021-10-13 19:09:30 +11:00
Dion Moult 1d74306bc2 New recipe (and essay) to fix ArchiCAD IFC4 door swings showing up in Revit 2021-10-13 16:39:16 +11:00
Dion Moult 0c6a3eafd2 IfcCSV now supports setting properties to null values. Neat. 2021-10-13 12:18:29 +11:00
Dion Moult 292cbf55ad Resolve #1773. IfcCSV now supports editing properties that were previously null. 2021-10-13 12:17:20 +11:00
Dion Moult e17ae4ef61 Fix #1792. Regression caused by other improvements in editing object placement. 2021-10-13 11:55:03 +11:00
Dion Moult dba6a8d0b4 Fix #1786. Swap out sub-operators with refactored core calls. 2021-10-13 10:49:28 +11:00
Dion Moult 13725411c9 Migrate project operator tests to pytest-bdd 2021-10-13 09:48:35 +11:00
maxfb87 b0e9f389a5 Add first tooltip (#1646) (#1791) 2021-10-13 09:03:36 +11:00
Dion Moult f6128febe9 You can now clear the active user for ownership history. See #1790. 2021-10-12 19:12:15 +11:00
Dion Moult fc2e12bff6 New usecase for adding conversion based units 2021-10-12 18:34:26 +11:00
Gorgious56 e455f87305 First batch of Pset Templates tests (#1772) 2021-10-09 13:26:23 +02:00
Vukas Pajic 84fc198bbe added new functionality and adjusted UI (#1771) 2021-10-09 10:13:10 +11:00
Thomas Krijnen d39e97f6a7 Default HDF5 dynamic libs 2021-10-08 22:01:34 +02:00
Thomas Krijnen 96d509698b Prefix namespaces for swig 2021-10-08 21:35:41 +02:00
Thomas Krijnen cefa66cdf9 Link to TKBin 2021-10-08 21:07:56 +02:00
Thomas Krijnen 8198df3fa6 header 2021-10-08 20:39:16 +02:00
Thomas Krijnen 4ebdb5e339 header 2021-10-08 15:50:51 +02:00
Thomas Krijnen 8dca84dd07 Geometry caching 2021-10-08 15:38:46 +02:00
Thomas Krijnen 4cee76ddc3 Make preprocessor defs consistent in IfcConvert.cpp and util.h 2021-10-08 15:25:28 +02:00
Gorgious56 8b34eb41fd Fix and test importing style attributes twice (#1784)
* Test importing surface attributes twice

* Fix style attributes not cleared when re-importing
2021-10-08 22:10:24 +11:00
Dion Moult 170cd3b5f5 Minor fix again 2021-10-07 18:59:41 +11:00
Dion Moult b8c4dd971c Minor fix 2021-10-07 18:55:22 +11:00
Dion Moult f26d43e0cd Prioritise editing rendering surface styles over shading surface styles 2021-10-07 18:51:50 +11:00
Dion Moult 9508858fcb New unassign aggregate feature. 2021-10-06 14:11:54 +11:00
Dion Moult 3aa36dd4b7 Changing aggregation now ensures spatial containment is mutually exclusive to prevent invalid IFC data 2021-10-06 12:52:01 +11:00
Dion Moult f21005c29e Assigning aggregations now protects against various invalid aggregation combinations 2021-10-06 12:50:46 +11:00
Dion Moult cbc0b8d5d4 When assigning containers, ensure aggregates and containers are mutually exclusive 2021-10-05 17:49:29 +11:00
Dion Moult c105b8f3a7 Fix bug where assigning a spatial container didn't work with non local placements 2021-10-05 17:49:29 +11:00
Dion Moult f284ae5753 Spatial containment now distinguishes between direct and indirect containment 2021-10-05 17:49:29 +11:00
Dion Moult 7c94d4275a Removing or changing spatial containers now supports updating more types of collection organisations 2021-10-05 17:49:29 +11:00
Dion Moult f5913baaca Maintain active object throughout complex IFC operations for a better user experience 2021-10-05 17:49:29 +11:00
Dion Moult f54a1a163d Changing spatial container now guards against invalid containment operations 2021-10-05 17:49:29 +11:00
Dion Moult 216029ea10 Unlinking elements is now a bit more stable. Also simplify core tool namespace. 2021-10-05 17:49:29 +11:00
Jesusbill e8764c58b5 minor mods in api structural data 2021-10-04 21:32:48 +02:00
Jesusbill a6d363c542 place structural items in collections for new project 2021-10-04 21:32:09 +02:00
Jesusbill df2a2edeea fix for structural surface items #1751 2021-10-04 21:31:10 +02:00
Maryanne Wachter 39fa932037 Updated readme usage links 2021-10-04 19:27:46 +02:00
Maryanne Wachter f1977643b6 Added build instructions for MacOS 2021-10-04 19:23:57 +02:00
Priit Laes 8b1a389855 build: nix: Bump minor versions of Python toolchains to latest versions
It's nice to keep it up with the latest releases.
2021-10-04 19:18:08 +02:00
Priit Laes 46d7eb5643 build: nix: Drop support for Python 3.{2,3,4} versions
Python project currently supports only 3.6+, so keep 3.5 still
on lifeline... 2.7 has also end of life status.
2021-10-04 19:18:08 +02:00
Priit Laes 6f6f89de0d build: nix: Drop unused imports
Print function has been supported since Python since 2.6, so
there's no need to use the import.
2021-10-04 19:18:08 +02:00
Thomas Krijnen cdc5d7a04e Missing semicolons (for consistency) 2021-10-04 10:43:04 +02:00
Thomas Krijnen 79f31fa4fe Unused include 2021-10-04 10:42:47 +02:00
Thomas Krijnen 666b55b3a3 Fix unref param addDrawing() 2021-10-04 10:40:19 +02:00
Dion Moult 8ff5ac974f Minor fix. 2021-10-04 18:50:03 +11:00
Dion Moult 6e6cbcef6f Test edit object placement. See #1711 2021-10-04 13:14:47 +11:00
Thomas Krijnen cd965fd4a9 todo note re #1769 2021-10-03 09:00:59 +02:00
Dion Moult 808ae37c66 Forgot to commit tests 2021-10-03 08:58:47 +02:00
Dion Moult adf784236c Upon removal, empty aggregates prioritise null if possible. 2021-10-03 08:58:47 +02:00
Dion Moult 6cc7d7963a Allow user to toggle duplicates when getting inverses. See #1747. 2021-10-03 10:20:24 +11:00
Dion Moult 4697e063af You can now add and remove users for ownership history 2021-10-01 17:32:58 +10:00
Dion Moult fe1e30702a Fix bug where removing addresses and roles could leave other elements in invalid states, "IfcPersonAndOrganization" 2021-10-01 14:48:44 +10:00
Dion Moult 291bb0cd55 Removing an organisation now properly handles references appropriately. 2021-10-01 13:29:10 +10:00
Dion Moult 915fa9f9b0 Removing a person no longer has the potential to leave files in an invalid state 2021-10-01 12:35:46 +10:00
Dion Moult 0a27308532 Optimise create owner history to not rely on a person and organisation lookup, speeding up long procedures 2021-10-01 11:05:35 +10:00
Dion Moult 8bcec29429 Application data in IFC now reflects the latest IFC version tag 2021-10-01 10:10:45 +10:00
Dion Moult 42d321d553 Removing contexts now also reassign to parent or remove references to the context. 2021-10-01 09:29:38 +10:00
Dion Moult a7a1616f9d Minor fix 2021-09-30 20:31:21 +10:00
Gorgious56 35ee1d5e96 Use pytest-bdd syntax for void tests (#1765) 2021-09-30 20:28:08 +10:00
Dion Moult d83295d3c3 Minor fix 2021-09-30 20:27:38 +10:00
Dion Moult b86b8c1b5a You can now edit attributes of contexts and subcontexts. Fix bug where 2D contexts were not created with the right dimensionality. 2021-09-30 18:28:50 +10:00
Dion Moult 9753ed07a0 Fix bug where you could accidentally add a context other than what you selected in the UI 2021-09-30 12:08:07 +10:00
Dion Moult 352a4866dd Refactor context. See #1711. 2021-09-30 08:46:02 +10:00
Dion Moult beff90cd5e Organisations now support null attributes. 2021-09-29 18:39:10 +10:00
Dion Moult 406fd158d3 Minor fix. See #1754. 2021-09-29 17:23:52 +10:00
Gorgious56 2ed30ef0a2 Improve filling operators and tests (#1754)
* Test add_filling operator

* Test Remove filling

* Update bootstrap defs for filling test

* Fix possible errors in add_filling and remove_filling

* Enable adding fillings from the opening object ui

* Typo

* Revert "Enable adding fillings from the opening object ui"

This reverts commit b217860840.

* Display a list of all fillings when an opening is selected

* Ensure an IfcOpeningElement can't be voided

* merge 0.7.0

* Add test cases for filling operators

* Test Opening operators

* Delete related fill relations on object deletion

* Remove try/except

* typo

* Minor fix

* Remove boolean modifier on previous element when voiding a new one

* Don't show ui elements when not applicable

* Test filling void b with an element that already fills void a
correctly removes the filling from void a

Co-authored-by: Dion Moult <dion@thinkmoult.com>
2021-09-29 16:27:43 +10:00
Dion Moult 24eac8ccdd Just realised pytest-bdd existed. Migrating over. See #1711. 2021-09-29 16:17:41 +10:00
Dion Moult 086d8749ec Add support for null attributes for people, roles, and addresses. New prototoype testable architecture. See #1711. 2021-09-29 14:14:10 +10:00
Gorgious 6fb4714317 Prevent using pset operators when no template available 2021-09-28 13:20:20 +02:00
Gorgious dbac865a39 Fix error when displaying a selected but inactive object's properties with the pin feature 2021-09-27 12:51:43 +02:00
Thomas Krijnen 024a306a36 #1757 opencollada and serializers 2021-09-27 09:04:38 +02:00
Thomas Krijnen 6182814845 rerun code gen 2021-09-26 19:55:04 +02:00
Thomas Krijnen d241af0c1b filter out redundant select membership with inheritance 2021-09-26 19:54:33 +02:00
Thomas Krijnen 39b1f4c477 #1705 fixes for missing object placement 2021-09-26 11:25:36 +02:00
Dion Moult 165966bc59 Decoupling of Blender from the BlenderBIM Add-on. See #1711. 2021-09-25 21:53:51 +10:00
Dion Moult cdb2a91f67 Remove need for IfcConvert since we can drawing is now part of v0.7.0. 2021-09-25 20:07:16 +10:00
Dion Moult c4f823a487 Upgrade BlenderBIM Add-on to v0.7.0. 2021-09-25 19:48:34 +10:00
Dion Moult 343f56b0cd Minor fix 2021-09-25 19:24:45 +10:00
Thomas Krijnen 7155f7ce3d Update cd.yml 2021-09-24 10:49:24 +02:00
Thomas Krijnen 9853d3d86a Update cd.yml 2021-09-24 10:46:22 +02:00
Thomas Krijnen 9dd30e8e53 Update cd.yml 2021-09-24 10:42:54 +02:00
Thomas Krijnen ce08fa9c1a Merge remote-tracking branch 'origin/v0.6.0' into v0.7.0
# Conflicts:
#	src/ifcparse/IfcParse.h
2021-09-24 10:29:10 +02:00
Thomas Krijnen b8d36a63a2 Bump to 0.6.0rc0 2021-09-24 10:25:22 +02:00
Thomas Krijnen 51e13c06ba Update ci.yml 2021-09-24 10:19:23 +02:00
Thomas Krijnen 529c007198 Update cd.yml 2021-09-24 10:06:47 +02:00
Thomas Krijnen 4334775618 #1747 retry 2021-09-24 10:02:20 +02:00
Thomas Krijnen da8e3e6288 #1753 2021-09-24 09:49:28 +02:00
Thomas Krijnen 768b754a0b Merge remote-tracking branch 'origin/v0.6.0' into v0.7.0
# Conflicts:
#	.github/workflows/ci.yml
#	src/ifcparse/IfcParse.cpp
2021-09-24 09:03:58 +02:00
Thomas Krijnen e1a5de793a #1747 2021-09-23 13:46:37 +02:00
Gorgious 4868edaa83 Fix #1745 : Test startup file contains no object 2021-09-23 12:35:05 +02:00
Gorgious56 98cc0b93ce Fetch pytest-blender dependencies (#1746)
* Fetch pytest-blender dependencies

* Fix command location
2021-09-23 12:29:28 +02:00
Thomas Krijnen fe533077f4 Regen schema code 2021-09-23 10:33:56 +02:00
Thomas Krijnen 63c2ca356e sort select supertypes 2021-09-23 09:27:14 +02:00
Dion Moult bc993c959e Improve error message when keyword not found. See #491. 2021-09-23 09:25:58 +02:00
Dion Moult b833dd1fe5 Merge commit '1187ad5feaf56ccb48c549a9e52147d2604d8601' into v0.7.0 2021-09-23 09:46:09 +10:00
Dion Moult ae5be40a3f Merge commit '28864cefb11bbbfa132' into v0.7.0 2021-09-23 09:33:05 +10:00
Dion Moult b2dd4781cf Block the user from creating sub resources under a subcontract resource. 2021-09-23 09:30:36 +10:00
Dion Moult 32f5c459c1 Fixes from code review. 2021-09-22 17:25:24 +02:00
Dion Moult bc5e33489e Implement IfcBoundingBox. 2021-09-22 17:25:24 +02:00
Dion Moult 0f73c43638 Fixes from code review. 2021-09-22 12:09:00 +02:00
Dion Moult 02fed24745 Refactor for readability. 2021-09-22 12:09:00 +02:00
Dion Moult c57daf8aed Let context_ids coexist with curves and solid settings. 2021-09-22 12:09:00 +02:00
Dion Moult 514c5eb790 Filter by context id, not using curves or solids. See #1674. 2021-09-22 12:09:00 +02:00
Gorgious d01b894734 Fix error when filling has no IFC type 2021-09-22 11:40:02 +02:00
Thomas Krijnen 37bddc25ca #1734 fix inv attr population on entity addition 2021-09-22 10:34:19 +02:00
Dion Moult b60ce80eb4 Add support for IfcAnnotationFillArea. See #1291. 2021-09-22 10:08:30 +02:00
Dion Moult ef8c82e1c9 Fix bug where you could add a filling twice or to multiple openings. 2021-09-21 17:29:28 +10:00
Dion Moult 04d64de6d0 Fix bug where you could add an opening twice to the same element. 2021-09-21 16:56:28 +10:00
Dion Moult a29d691944 Fix #1737. Bug where copying an opening didn't copy relevant boolean modifiers too. 2021-09-21 15:19:18 +10:00
Dion Moult 1abca2681e Fix bug where copying a filled opening would create an invalid relationship 2021-09-21 14:19:41 +10:00
Dion Moult a37d36e0c7 Fix #1733. Bug where structural member data was not updated correctly. 2021-09-21 11:06:29 +10:00
Dion Moult 1d1e051e0f Fix #1709. 2021-09-21 10:33:03 +10:00
Dion Moult f83d13b97c New support for specifying collection modes. Spatial elements now support 2D representations as well. 2021-09-21 10:14:07 +10:00
Dion Moult 090aae5ff6 Generated construction visibility now works in renders, not just viewport view. 2021-09-20 18:52:43 +10:00
Gorgious 500c7cdc37 (partially) Fix #1737 : Active object swaps to opening
Void operator would swap active object if opening IFC type is not set
Also changed the modifier creation/update logic
to accomodate for user potentially breaking things
2021-09-20 10:23:56 +02:00
Dion Moult 8fb218c335 Fix bug where demolition animations were not generated properly. 2021-09-20 18:03:51 +10:00
Thomas Krijnen 94c009d179 #1227 layer slicing 2021-09-20 09:27:56 +02:00
Dion Moult 132ec473ec New feature to see the current frame's real life date as text during a generated animation 2021-09-20 17:06:02 +10:00
Dion Moult 8cde074fd8 Editing psets can now accept user specified data types and auto-detect non-string data types 2021-09-20 15:37:01 +10:00
Dion Moult 92e519de9e Be more accommodating when fetching properties to allow for incomplete scripts. 2021-09-20 14:45:31 +10:00
Dion Moult 70ba681b35 Resource work duration can now be calculated based on counting produced products. 2021-09-20 13:27:26 +10:00
Dion Moult e2b5ecf0a1 Resource work durations can now be calculated either daily or hourly 2021-09-20 13:26:01 +10:00
Dion Moult 5efa65195f Fix bug where nested task resource-based durations failed to calculate 2021-09-20 11:52:31 +10:00
Dion Moult 20e731235c Fix task duration calculation bug where hourly work greater or equal to 24 hours were incorrectly parsed 2021-09-20 10:45:36 +10:00
Dion Moult 90e481ce2c Optimise update owner history to speed up complex operations 2021-09-20 10:17:16 +10:00
Gorgious56 2dac81ee8d Parametric object gizmo scale follows scene unit (#1715)
* Add missing units in si-conversions

* Fix error when using Miles or Thou-inch units

* Parametric gizmo scales with scene units

* use "thou" instead of "thousandth of an inch"
2021-09-19 10:02:34 +02:00
Thomas Krijnen 721fe4729a Fix another ommision with tree.select(extend) 2021-09-17 11:18:32 +02:00
Dion Moult 3eb7c7a6a1 Fix bug where assigning a new container would shift object placements incorrectly due to SI unit conversion 2021-09-17 17:13:20 +10:00
Dion Moult 2b82eaf019 Fix bug when shifting object placements and their children. Add support for specifying placement matrixes in project units or SI units. 2021-09-17 16:54:53 +10:00
Dion Moult 02a68f6827 New utility to get spatial and object decompositions from any IFC element 2021-09-17 15:40:27 +10:00
Dion Moult 2b4d4439ea Fix bug where IFC patch didn't work on case insensitive file extensions 2021-09-17 14:00:25 +10:00
Dion Moult e7a8780828 Create shape debugger now includes time information. 2021-09-15 12:43:12 +10:00
Thomas Krijnen 38a0c71060 #1674 use id to filter 2021-09-14 11:36:19 +02:00
Thomas Krijnen 99cd952c98 Add time stamp to logging 2021-09-13 14:52:23 +02:00
Thomas Krijnen 1058dc7099 Fix some casting logic 2021-09-13 13:19:56 +02:00
Thomas Krijnen 99a27fbfef option to disable guid map and lazy loading 2021-09-13 13:17:08 +02:00
Dion Moult 2dc6a3bcc6 You can now load, unlink, and unload links. 2021-09-13 10:48:38 +10:00
Dion Moult 5cee2fb08a New interface to view linked IFCs 2021-09-13 10:00:54 +10:00
Dion Moult 8aa790c1c1 Fix bug where filtering did not work for indirectly spatially contained elements 2021-09-13 09:12:51 +10:00
Dion Moult 2a07f7082a Deprecate auto detection of vendor workarounds as no longer necessary. 2021-09-12 19:19:53 +10:00
Dion Moult 92adeca837 Fix bug where aggregates break with filtered elements during import. 2021-09-12 17:29:11 +10:00
Dion Moult 0453db7745 You can now filter imported objects by IFC class when loading a project 2021-09-12 16:02:08 +10:00
Dion Moult 5f29379a6d You can now unload a partially loaded project 2021-09-12 15:42:59 +10:00
Dion Moult a9f76fc8c0 You can now partially load an IFC filtered by spatial containers. 2021-09-12 15:25:03 +10:00
Thomas Krijnen 7440321b30 Fix static atomic init 2021-09-11 13:31:20 +02:00
Thomas Krijnen e37c2d8aab Small character decoder fixes 2021-09-11 13:11:02 +02:00
Thomas Krijnen 7661899e9d #1732 0.7 IfcBaseClass::identity() 2021-09-11 12:59:48 +02:00
Dion Moult 48cb598975 You can now load a project from the project panel. See commit message.
This is in preparation for partial loading and unloading for scaling up to larger IFC scenes.

Similarly, there are bits in place for different collection modes instead of the hardcoded collection hierarchy which we currently have.
2021-09-11 20:29:14 +10:00
Thomas Krijnen d99caf15e6 #1705 fix nix build wrt schemas 2021-09-10 10:47:31 +02:00
Dion Moult d350a17ce5 Fix bug where editing styles didn't work if factors were stored instead of RGB colours 2021-09-10 17:43:26 +10:00
Thomas Krijnen 09d6f1130d #1730 correctly register inverse attributes on rooted types 2021-09-10 09:27:07 +02:00
Dion Moult 9b94c3ceca New recommended pylint command as part of qa target 2021-09-10 10:01:06 +10:00
Dion Moult 865c0f4895 Run black, and add black to a "qa" target to make it a standardised process. 2021-09-09 21:27:31 +10:00
Thomas Krijnen 95903c965d Fixes for annotations in SVG 2021-09-09 10:58:59 +02:00
Thomas Krijnen 3bebfcd8a7 Pass branch and sha to compiler 2021-09-09 09:43:28 +02:00
Dion Moult 5b711a23d3 Expose MaxId to Python 2021-09-09 08:44:12 +02:00
Dion Moult 99b776b10e Deleting openings or voided elements now also remove openings. 2021-09-09 14:48:40 +10:00
Dion Moult ce92aa6e00 Fix bug where openings were not unlinked or renamed if they were removed from a non-dynamic object 2021-09-09 13:45:49 +10:00
Dion Moult 33bc0be5ff Non dynamically voided objects now auto update when their opening is removed 2021-09-09 12:54:43 +10:00
Dion Moult 3004d5424c Assigning an opening now ensures it displays as a wire 2021-09-09 12:51:54 +10:00
Dion Moult d6aec719e5 Fix bug where removing an opening might remove an element twice 2021-09-09 12:38:52 +10:00
Thomas Krijnen 55a220751b Fix symbol direction 2021-09-08 14:21:25 +02:00
Thomas Krijnen f31ab80731 Fix combination --draw-storey-heights --svg-without-storeys 2021-09-08 13:50:27 +02:00
Dion Moult d0eb716738 Fix #1727. BIMTester now runs within the BlenderBIM Add-on, implement attribute checking in IDS, and fix some minor IDS bugs. 2021-09-08 20:17:16 +10:00
Thomas Krijnen b9084ad0f5 #1725 exports 2021-09-08 10:14:30 +02:00
Dion Moult 2580cd5e37 More tests. See #1711. 2021-09-08 17:25:54 +10:00
Dion Moult 177d46b7b6 Remove create project library ability, as you should create a project first 2021-09-08 13:41:36 +10:00
Dion Moult d026fcc900 Implement lightweight Gherkin testing for full stack tests 2021-09-08 13:15:48 +10:00
Thomas Krijnen 5f508e9ad8 Small fixes to advanced house 2021-09-07 15:31:18 +02:00
Thomas Krijnen 46f983b9ae Update build-all.py 2021-09-07 14:45:18 +02:00
Thomas Krijnen 41f2b11234 Virtual inheritance prototype for select 2021-09-06 18:52:37 +02:00
Thomas Krijnen f898893607 whitespace 2021-09-05 09:32:39 +02:00
Thomas Krijnen 6cc842a2ac #1721 fix mmap in ifcconvert 2021-09-04 15:38:07 +02:00
Thomas Krijnen cfc1ddee5e #1676 null handling in inverses 2021-09-04 14:27:46 +02:00
Dion Moult 89535e0b6a Manual import offsets now apply on object placements for efficiency. 2021-09-03 14:13:37 +10:00
Dion Moult b71684955d Simplify packaging, add create project smoke test. New license target. 2021-09-03 14:11:15 +10:00
Dion Moult 81b0442abe Fix licensing for code by qwiglydee. See #1082. 2021-09-02 09:46:11 +10:00
Gorgious 88f0938bd2 Fix errors introduced in #1683 2021-09-01 12:05:20 +02:00
Gorgious cdd5094d38 Immediately redraw the Library panel on load
This improves interface responsiveness.
Previously you would have to hover your mouse over the panel
After import to see the contents of the library visually update.
2021-09-01 08:46:31 +02:00
Dion Moult a1b462a83b Fix bug where project libraries were not legal. 2021-09-01 08:58:26 +10:00
Gorgious56 41db0f4705 Notify if file already contains library element (#1708)
* Notify if file already contains library element

* Minor fix. See #1711.

* Test util.element module. See #1711.

* Test IFC file module. See #1711.

* Minor fix. See #1711.

* Move logic into operators

Co-authored-by: Dion Moult <dion@thinkmoult.com>
2021-09-01 08:01:44 +10:00
Gorgious 06d3ed7d2a Addendum #1710 : Remove superfluous parameters fetching
bim.get_representation_ifc_parameters already called earlier in the code
2021-08-31 14:37:37 +02:00
Thomas Krijnen 66faea1285 HDF5 optional in code 2021-08-31 11:03:28 +02:00
Thomas Krijnen dbf6a1dda9 libxml2 no longer optional 2021-08-31 10:54:46 +02:00
Dion Moult 5485177888 Minor fix. See #1711. 2021-08-31 18:33:52 +10:00
Dion Moult 8792c6db63 Test IFC file module. See #1711. 2021-08-31 17:28:31 +10:00
Dion Moult 5990d6b66d Test util.element module. See #1711. 2021-08-31 15:44:57 +10:00
Dion Moult b1b3d7e312 Minor fix. See #1711. 2021-08-31 14:10:43 +10:00
Dion Moult 770f35fd97 Move tests outside src, as per convention. See #1711. 2021-08-31 13:58:41 +10:00
Gorgious56 829ff5e152 Improve mesh IFC Representation User Experience (#1710)
* Must be in object mode to update representation
This may prevent random CTDs due to invalidated data

* Use self.file instead of re-fetching from IfcStore

* Keep ifc parameters expanded when updating representation

* Clear previous ifc parameters when re-fetching
2021-08-31 13:45:17 +10:00
Dion Moult 4accf30626 Add transaction support for adding elements. See #1709. 2021-08-31 10:25:13 +10:00
Dion Moult 0ed38a4128 Fix #1707. Fix bug where project library browser could self reference. 2021-08-31 08:22:12 +10:00
Dion Moult 0a2afa4879 Fix bug where element replacement would sometimes fail leading to various problems. 2021-08-30 21:32:23 +10:00
Gorgious 9d4f0730e2 Fix typo in material style assignment code 2021-08-30 13:17:20 +02:00
Dion Moult 6b33b23a29 Fix bug when copying objects, don't copy their decomposition to prevent invalid IFCs. 2021-08-30 18:59:50 +10:00
Dion Moult 6addbd935f Add copyright boilerplate to BCF and OpenCDE code 2021-08-29 16:51:56 +10:00
Prabhat Singh 5782691cdb minor fix (#1704) 2021-08-29 15:48:37 +10:00
Dion Moult bcda3d8e93 Minor fix 2021-08-29 15:26:45 +10:00
Dion Moult c131b81565 New bunny rabbit furniture asset :) It's the BlenderBIM Bunny! 2021-08-28 20:16:04 +10:00
Dion Moult 99d7eaaf70 You can now insert doors, and we distribute a sample demo and site library 2021-08-28 19:00:32 +10:00
Dion Moult c726e8feb9 You can now calculate costs from direct resources and indirect task-based resources 2021-08-28 18:21:22 +10:00
Dion Moult faaeef92de You can now edit resource base quantity 2021-08-28 14:38:20 +10:00
Kristoffer Andersen 126bac462d Add basic BCF pypi upload CI action. (#1701)
* Add basic pypi upload CI action.

For now I propose a simple trigger using a commit tag "[bcf release]". I think this is just as well since we do not (yet) have an automatic versioning for the bcf package

* add correct subfolder (point to bcf) to ci recipe
2021-08-27 20:30:39 +10:00
Gorgious a4b4c7b37c Minor fix for https://github.com/IfcOpenShell/IfcOpenShell/pull/1699 2021-08-27 10:38:19 +02:00
Dion Moult 75a8e4af02 Minor fix for #1699 2021-08-27 18:21:11 +10:00
Gorgious56 8d5970f002 Display project units instead of hardcoded ones (#1699)
* Display project units instead of hardcoded ones

* Treat MapUnit as a regular attribute

* Remove left over attributes

* Refactor operator for MapUnit change

* Fix unit fetch failing because of wrong id type
2021-08-27 18:07:51 +10:00
Dion Moult dd0a3d0421 Minor fix. 2021-08-27 17:24:42 +10:00
Dion Moult b272210a97 Resource base costs are now supported with all the features coming from the cost module. 2021-08-27 17:12:21 +10:00
Dion Moult b99c5036e6 You can now edit nested arithmetic cost values by using spreadsheet-like formulas 2021-08-27 14:45:14 +10:00
krande 16b34f942a Update path to bcf package 2021-08-26 14:50:50 +02:00
Gorgious56 104e9c9ca7 Apply object operators to all selected objects (#1696)
* Remove container executes on all selected objects

* Pass silently if assigning or removing container on non-bim object

* Assign / Unassign Material executes on all selected objects

* AddRepresentation executes on all selected objects

* Assign / Unassign Constraint executes on all selected objects

* Fix error when trying to assign representation to non-mesh object

* Assign / Unassign Document executes on all selected objects

* Code Cleanup & Consistency

* Fix Attribute data type not being assigned when it makes sense

* Revert changes to geometry operator

* Revert "Fix Attribute data type not being assigned when it makes sense"

This reverts commit 1117c8670c.

* Revert changes to material operator

* Use attribute helper functions

* Filter select entities in import_attributes

* revert changes to attribute fetching

* Revert "Filter select entities in import_attributes"

This reverts commit 7f84c2ea63.

* Enforce new attribute data type to string

* Restrict import_attributes usecase

* Remove trailing spaces

* Revert changes to IfcProjectedCRS attributes
This is done prior to the planned unit refactor
2021-08-26 21:44:33 +10:00
Dion Moult 5e1fbacef7 Cost values are now serialised and shown as formulas 2021-08-26 21:37:25 +10:00
krande c96d1e6387 add lxml package as another dep to be installed before running tests 2021-08-26 09:58:37 +02:00
krande d4ace423a3 Prep BCF for pypi upload.
* Refactored the BCF dir into a "src-layout" which I am more comfortable with. We can likely change this back if it is not compatible with other development

* I added a few setup files for the bcf package (setup.cfg, pyproject.toml and a MANIFEST.in file)

* Added two __init__.py files in the v2 and v3 subfolders for them to be picked up during package compilation
2021-08-26 09:58:37 +02:00
krande 9c81418492 Add numpy as a dependency 2021-08-26 09:58:37 +02:00
Kristoffer Andersen a60c5367ee Update rel path 2021-08-26 09:58:37 +02:00
krande cb0c124745 cd into test folder before running tests 2021-08-26 09:58:37 +02:00
krande 6aea3361c1 Add proposal for CI workflow on PR and commits 2021-08-26 09:58:37 +02:00
Boris Brangeon 1ae7bd3a9a add (in() IfcGeomShapes 2021-08-26 09:47:23 +02:00
Dion Moult 00f779fc49 You can now count elements, tasks, and resources parametrically for cost items 2021-08-26 15:48:04 +10:00
Dion Moult 2cfa1d8bc0 Only equipment and labour resources can now have time-based usages 2021-08-26 11:54:15 +10:00
Gorgious56 6e3484fd46 Fix https://github.com/IfcOpenShell/IfcOpenShell/issues/1695 : (#1697)
Removing material from IfcMaterialList removes all occurences of the material
2021-08-26 09:06:27 +10:00
Thomas Krijnen 0a03632e95 #1693 get_info_2() derived and select 2021-08-25 18:44:35 +02:00
ArturTomczak 178611faa8 Finalizing Gsoc#45 ids checking (#1694) 2021-08-25 13:49:25 +02:00
Dion Moult 8c97b53bd2 You can now store productivity rates and calculate resource work parametrically based on productivity 2021-08-25 18:15:19 +10:00
Dion Moult ae42d91c5c You can now manage psets on resources 2021-08-25 17:24:18 +10:00
Dion Moult 8fa1a99864 Fix bug where the pset templates with multiple applicable entities only checked the first entity 2021-08-25 17:22:02 +10:00
Dion Moult a430d356c0 You can now parametrically derive task durations from resource utilisation 2021-08-25 16:27:23 +10:00
Gorgious56 112ce48350 Improve groups and systems interface (#1688)
* Enable Batch adding/removing objects from groups
Might hang up Blender for a few secs with a big number of object on execution

* Enable Batch adding/removing objects from systems
Might hang up Blender for a few secs with a big number of object on execution

* Add Group Panel in object properties
+ Transfer adding object(s) to group into the object properties

* Add Systems Panel in object properties
+ Transfer adding object(s) to system into the object properties

* Simplify group & systems operators

* Disabling Editing of groups/systems also disables individual edition
2021-08-24 13:58:52 +02:00
ArturTomczak 486eb4d9a0 Implement new IDS schema 0.4.1 (#1623) 2021-08-24 12:57:44 +02:00
Dion Moult cb4001b47b Detect units from project libraries, and convert nested double aggregates 2021-08-24 10:58:26 +02:00
Dion Moult 1187ad5fea Implement new ICOM-based UI for managing process inputs, outputs, and resources 2021-08-24 18:08:06 +10:00
Dion Moult a2a04cb341 Non-rooted subcontract resources are now allowed. 2021-08-24 14:44:30 +10:00
Dion Moult 28864cefb1 Block the user from creating sub resources under a subcontract resource. 2021-08-24 14:42:50 +10:00
Thomas Krijnen 88f7d307b8 Merge remote-tracking branch 'origin/v0.6.0' into v0.7.0 2021-08-23 13:13:40 +02:00
Thomas Krijnen e9ad1019a4 freetype-2.7.1 2021-08-23 13:13:16 +02:00
Prabhat Singh 9513a9ebef Minor improvements (#1682)
* Added Schema Check in bcf routes

* Basic Changes

Co-authored-by: Dion Moult <dion@thinkmoult.com>
2021-08-23 17:18:34 +10:00
Dion Moult d27d0acbc0 Simple prototype integration to run an OpenLCA analysis from Blender 2021-08-23 16:34:19 +10:00
Dion Moult 869d067c94 Project libraries are now sorted alphabetically for convenience 2021-08-23 09:38:24 +10:00
Dion Moult 268241bf5d Hide types collection when importing assets. See #1590. 2021-08-23 08:31:10 +10:00
Gorgious56 67c055579c Various tweaks and fixes (#1683)
* Use operator's poll method to ensure correct execution

* Add utilities to get active collection item

* Minor fixes
zombie code
list comprehensions
typos
cleanup
tooltips, descriptions
ensure file extension in folder operator
use custom UI List instead of generic one
ensure active object stays the same after operator execution
use passed context instead of bpy

* Jump through hoops to not display empty dynamic enums

* Group mesh calculation methods in helper module
If not using bmesh, the polygon selection status
is updated only when getting out of Edit mode.
Using bmesh we can get the values in realtime

* Remove unused arg name in dosctring
2021-08-23 08:07:29 +10:00
Dion Moult 4d7ff493a8 Minor iterator optimisation to prevent inverse check for associated materials 2021-08-22 14:32:12 +02:00
Dion Moult afb3d998c8 Rudimentary handling of purging voids and fills 2021-08-22 22:02:22 +10:00
Dion Moult 0d2d5ff16b Windows now move with openings and walls when toggled. 2021-08-22 20:57:54 +10:00
Dion Moult 3c235208de Fix #1679. Again. 2021-08-22 20:54:05 +10:00
Thomas Krijnen 37851fac9d #1674 store inverse references as tuple of (id type index) 2021-08-22 12:22:44 +02:00
Dion Moult 52f4b564b3 Minor fix. It seems as though StructRNA of type Scene may be removed during undo/redo, which results in handlers failing. 2021-08-22 19:11:17 +10:00
Thomas Krijnen 4c131b85bc Wrong OCCT patch for 7.5.3 2021-08-22 11:05:02 +02:00
Dion Moult 6db1a8a85f Minor fix 2021-08-22 11:04:39 +10:00
Dion Moult 8178dd330d Fix #1679 2021-08-22 10:53:43 +10:00
Dion Moult 616f284126 Minor fix 2021-08-21 21:53:16 +10:00
Dion Moult 5e6343885c Filtered imports is now much faster and works with omitted aggregates 2021-08-21 21:09:48 +10:00
Thomas Krijnen 54687f064c Update build-deps.cmd 2021-08-21 09:11:40 +02:00
Dion Moult fd603f7035 IfcZip and IfcXML can now be set manually, and prevent double loading when importing, which can save ~20 seconds for large file imports. 2021-08-21 16:17:06 +10:00
Gorgious 3b36029b1d Use label instead of dummy dynamic enum
And fix error in last commit...
2021-08-20 10:16:58 +02:00
Gorgious 447c07460a Disable editing operators : Change icon 2021-08-20 10:13:00 +02:00
Gorgious 5c62cb244a Create Drawing op: Add tooltip and use poll method 2021-08-20 09:55:44 +02:00
Dion Moult 7fa79a2cec Work schedule psets are now supported, so you can set work day/week/month durations 2021-08-20 09:42:03 +10:00
Dion Moult 6c6d4c047c Fix #1672. Bug where style attributes couldn't be edited. 2021-08-20 08:51:46 +10:00
Prabhat Singh a0def600e8 Added Schema Check in bcf routes (#1671) 2021-08-20 08:10:20 +10:00
Cyril Waechter a37338a6d3 Complete IfcSIUnitName exponents (#1670) 2021-08-20 08:08:49 +10:00
Dion Moult 11e36bf744 Minor fix 2021-08-20 08:01:48 +10:00
Gorgious56 511e1c8a95 Merge pull request #1673 from Gorgious56/improve-object-ux
Improve Object, Material BimProperties UX and fix a few bugs
2021-08-19 23:03:54 +02:00
Gorgious 1c9cd058c8 Fix errors if no ifc file 2021-08-19 22:46:01 +02:00
Gorgious b5ff3cd818 Fix error due to typo 2021-08-19 22:31:29 +02:00
Gorgious f904648783 Keep active object as active when creating ifc file 2021-08-19 22:29:43 +02:00
Gorgious 0f38cd712e Fix errors due to accessing empty enum 2021-08-19 22:26:00 +02:00
Gorgious 9b9326721d Fix error when trying to select type if type is not set 2021-08-19 22:06:56 +02:00
Gorgious 29cda05025 Fix error when adding opening with None object 2021-08-19 22:05:22 +02:00
Gorgious d1a39d8004 Fix possible error due to typo 2021-08-19 21:59:00 +02:00
Gorgious e0bfa8f55a Fix console error due to accessing empty dynamic enum 2021-08-19 21:58:37 +02:00
Gorgious 95f2d939e8 Fix error when filling opening with None object 2021-08-19 21:43:31 +02:00
Gorgious a14c3b181d Keep active object when removing from containers 2021-08-19 21:27:37 +02:00
Gorgious 17e61afd59 Add tooltip to CopyToContainer Operator 2021-08-19 21:26:54 +02:00
Gorgious bf6c3e40d3 Fix console error due to accessing empty dynamic enum 2021-08-19 21:06:45 +02:00
Gorgious ef557e96a7 IfcCobie : Prevent executing operator if no ifc file 2021-08-19 14:06:36 +02:00
Gorgious 59f156bae3 IFC Cobie : Fix Elements not being assigned in selector 2021-08-19 14:04:01 +02:00
Gorgious56 6eaa13b5f1 BlenderBim : Improve BCF project UX (#1669)
* Improve related topic selection UX

* Foolproof active topic access with property

* Use self when available

* Add utility method to explicitely refresh topic

* Simplify Refresh topic code

* BCF Topics can now be deleted using Blender UI

* Revert dynamic enum for related topics

* Minor fix and cleanup

* Fix bug when trying to display deleted related topic
2021-08-19 18:50:27 +10:00
Dion Moult 92f55504e9 New site project library for stuff like site sheds and cranes 2021-08-19 09:24:14 +10:00
Gorgious56 cb2995a255 BlenderBim : Improve BCF Project UX (#1668)
* Store fields on BCFProperties class rather than individual topics

* Clear input fields on active topic change

* BCF : Fix resetting comment has_related_viewpoint default value

* Prevent global function use from import

* Use dynamic enum to choose related topic

* Add newline at eof

* Show only .bcf and .bcfzip files when saving project
2021-08-19 07:42:41 +10:00
Dion Moult bbd7264a9b Improve UX of task tree by shifting buttons and changing column widths 2021-08-18 18:40:54 +10:00
Dion Moult a6b8e40829 Cost subtotals that are calculated from per X units are now supported 2021-08-18 18:05:01 +10:00
Gorgious 799fb688b5 Fix https://github.com/IfcOpenShell/IfcOpenShell/issues/1667 : Passed scene is None when creating file 2021-08-18 07:59:23 +02:00
Gorgious56 2d730fbee7 Improve drawing style save and load (#1665)
* Replace raster style save & load with enum functionality

* Rename DrawingStyleProp to RasterStyleProperty

* Minor Fix

* Correct Typo
2021-08-18 08:50:24 +10:00
LaurensJN 4b7058e22e ifccityjson: updated georeferencing & added option to split IFC files based on Level of Detail 2021-08-17 16:37:40 +02:00
Thomas Krijnen 96017bb36c Update draw.py 2021-08-17 16:00:42 +02:00
Thomas Krijnen 0483b929d7 auto elev closed to bounds to have storey heights printed 2021-08-17 15:58:35 +02:00
Thomas Krijnen 4afa6cd78b draw settings 2021-08-17 15:58:15 +02:00
Thomas Krijnen 9d6230eb16 Add ifcopenshell.draw module 2021-08-17 14:55:32 +02:00
Gorgious fb1c340664 Use passed context instead of bpy.context 2021-08-17 14:55:19 +02:00
Thomas Krijnen ba8088395b Retain elements when addDrawing() used 2021-08-17 14:50:38 +02:00
Thomas Krijnen a7d349cbac SVG addDrawing() option 2021-08-17 14:50:04 +02:00
Gorgious 4614bde8d7 Cleanup : Use clear instead of while...remove loop 2021-08-17 14:41:15 +02:00
Thomas Krijnen 9cc3810650 Initialize storey_height_display_ 2021-08-17 13:50:37 +02:00
Thomas Krijnen 707f43a1fb Correct auto EW section 2021-08-17 13:50:11 +02:00
Thomas Krijnen 5740816a37 SVG serializer check file existence 2021-08-17 13:49:49 +02:00
Thomas Krijnen 15c28a1815 Remove win build deps python2 and oce options. Bundle sections for writing of cache 2021-08-17 13:35:19 +02:00
LaurensJN 88669701b2 cityjson: Implement conversion of all LODs instead of only the most detailed 2021-08-17 11:24:21 +02:00
Gorgious f4fac9210d Fix https://github.com/IfcOpenShell/IfcOpenShell/issues/1664 : IFCPatch wouldn't correctly unpack un-hinted arguments 2021-08-17 09:46:43 +02:00
Gorgious 2c270a7315 Fix https://github.com/IfcOpenShell/IfcOpenShell/issues/1663 : Extract Docs is bundled with IfcPatch module 2021-08-17 09:36:53 +02:00
Dion Moult 912699e63c You can now assign rates from a schedule of rates to a cost plan 2021-08-17 12:22:57 +10:00
Dion Moult 899a0c6fb5 You can now browse a schedule of rates alongside a cost schedule 2021-08-17 11:01:41 +10:00
Dion Moult f2aec9440f UoM and unit rates are now shown for schedule of rates in costing 2021-08-17 09:44:43 +10:00
Dion Moult 2284f7b16e BlenderBIM Add-on licensing. See #1082. 2021-08-17 08:55:29 +10:00
Dion Moult 2dbf9665be IfcSverchok licensing. See #1082. 2021-08-17 08:39:38 +10:00
Gorgious56 06b43e7f80 Make BCF project UI (more) foolproof (#1662)
* Various code fixes and optimizations

* Prevent running operators if conditions not met
2021-08-17 07:52:55 +10:00
Prabhat Singh 1b4d0bf577 updated routes (#1661) 2021-08-17 07:48:55 +10:00
Dion Moult ee0d594f9f WIP window tool progress. 2021-08-16 20:34:28 +10:00
Dion Moult be08d0ad1b Fix #1657. 2021-08-16 19:41:30 +10:00
Dion Moult 21c975540d Fix #1658. Fix bug where changing slab layer thicknesses didn't work if it didn't have a solidify modifier already. 2021-08-16 18:45:44 +10:00
Dion Moult f040dbcb6c You can now assign / unassign cost items in a schedule of rates to type products 2021-08-16 17:46:23 +10:00
Dion Moult 6b7b81765c You can now add and edit context dependent units including dimensional exponents 2021-08-16 15:58:44 +10:00
Dion Moult 6ee0027f33 Import of CSV-based schedule of rates is now possible 2021-08-16 15:07:09 +10:00
Dion Moult 897d7a6b2d Half complete "add window" tool prototype 2021-08-16 10:42:06 +10:00
bosonprojets b4256c504f Implement metric constraints in the ifcopenshell.api 2021-08-16 01:35:14 +01:00
Dion Moult 745411ee47 Minor fix & refactor, run black, fix pset optionality. See #1655. 2021-08-16 09:15:43 +10:00
Gorgious56 296bf0387d Improve ifc patch arguments User Experience (#1655)
* Add description field to Attribute Container

* Add helper function to extract IFCPatch arguments

* Add Operator to populate Attributes with IFCPatch arguments

* Support int, float, bool and improve UX/UI

* Move all reflection logic inside helper module

* Improve UI

* Correctly unpack arguments when Patching IFC

* Refactor Attribute class to provide agnostic value access

* Take advantage of Attribute agnosticity refactor

* Use regular json if no docstring when Patching

* centralize docstring extraction in UI module

* Revert "centralize docstring extraction in UI module"

This reverts commit e7a63d2a0b.

* Place Patch description in recipe enum field

* Minor fixes

* Minor fixes

* Remove description field from Attribute

* Auto-update IFC Patch args on recipe change
2021-08-16 08:16:51 +10:00
Thomas Krijnen bee3926c7f SVG fix auto drawings 2021-08-15 20:43:55 +02:00
Thomas Krijnen cd68ce1c8f submodule 2021-08-15 20:43:40 +02:00
Thomas Krijnen 47b30aa689 tree ray intersection 2021-08-15 20:42:36 +02:00
Thomas Krijnen d79298e18d occt 7.5.3 2021-08-15 20:41:43 +02:00
Thomas Krijnen 8f1db0019b Merge remote-tracking branch 'origin/v0.6.0' into v0.7.0 2021-08-15 20:40:55 +02:00
Gorgious d22c11c200 Fix : Poll checking for file is not needed 2021-08-15 19:27:25 +02:00
Gorgious d7a76bfa11 Fix https://github.com/IfcOpenShell/IfcOpenShell/issues/1656 : Operator needs a file to execute 2021-08-15 19:19:32 +02:00
Dion Moult a6c11b7e23 Improved accuracy of boolean modifiers for dynamic voids 2021-08-15 18:32:42 +10:00
Dion Moult f280aa3a13 Demo library now includes a window type. Neat. 2021-08-15 18:08:12 +10:00
Dion Moult 1515ef98b7 Walls and slabs (or any vertical or horziontal layer) now auto recalculate origins after editing 2021-08-15 11:05:58 +10:00
Dion Moult 184081ebaf Fix #1653. Walls grow or shrink from their origin point. 2021-08-15 11:05:58 +10:00
Dion Moult 91d1f69d58 Fix #1652. Minor fix. 2021-08-15 11:05:58 +10:00
bosonprojets ca20d94d66 Fix issue #1637 Blender ID collision for bim.assign_resource and bim.unassign_resource 2021-08-14 15:04:13 +01:00
Dion Moult 0cc6ca11b1 Fix #1648. Adding openings now intelligently detect the shape of the element you are voiding. 2021-08-14 21:21:14 +10:00
Dion Moult c086104573 Fix #1640. A Blender material is now always applied even if indirectly applied through a set or usage. 2021-08-14 20:02:31 +10:00
Dion Moult b29ace296a Fix #1642. New feature to select the type's Blender object of the active object. 2021-08-14 19:12:09 +10:00
Dion Moult ac9e6cc661 New convenience button to add an empty for a type with no representation 2021-08-14 19:03:04 +10:00
Thomas Krijnen 4cb59009b4 #1649 allow profile def in create shape() 2021-08-14 09:12:11 +02:00
Dion Moult 0ce35466ff Fix #1645. Fix bug where you could accidentally have a layer set with zero thickness which caused object creation to fail. 2021-08-14 15:09:19 +10:00
Dion Moult 58921e200c Fix #1647. Bug where auto spatial containment assignment failed when you were not in a container. 2021-08-14 14:40:45 +10:00
Dion Moult 3e2b66ef2f You can now edit psets of profiles 2021-08-14 13:01:22 +10:00
Dion Moult 8300868a9b New profile browser with basic profile edit and remove feature. See #1641. 2021-08-14 12:34:18 +10:00
Dion Moult 305465a898 You can now import profile definitions from a library 2021-08-14 12:05:59 +10:00
Jesusbill c2530b7a61 added some named dimensions for units 2021-08-13 12:11:15 +02:00
Dion Moult 2f3c79a0e6 Implement cost identification numbers and big cleanup to cost schedule UI 2021-08-13 18:01:23 +10:00
Dion Moult 26f800331e New utility to get the exponential dimensions of named unit types 2021-08-13 16:20:30 +10:00
Dion Moult fd163a3d1e Implement ability to add SI units 2021-08-13 16:18:05 +10:00
Dion Moult 671f1ab9cf New feature to toggle default project unit assignment 2021-08-13 14:58:25 +10:00
Dion Moult 2a6d6cfdbf You can now edit the unit basis of a cost value for a schedule of rates 2021-08-13 11:56:33 +10:00
Thomas Krijnen 44c868caed #1531 Breadth-first search and maintain insertion order on remove_deep() 2021-08-12 13:35:45 +02:00
Thomas Krijnen 83d2548978 Validate instance attribute values by catching exceptions 2021-08-12 13:10:16 +02:00
Dion Moult 199bc86a88 Minor code review 2021-08-12 17:56:58 +10:00
Prabhat Singh 7a5b15e5a2 Added Routes to BCF (#1644) 2021-08-12 17:10:25 +10:00
Dion Moult 4b64e096a5 You can now assign resource-based parametric quantities to cost items 2021-08-12 13:59:49 +10:00
Dion Moult b92e3fcf01 Implement task-based parametric cost item quantities 2021-08-12 13:29:35 +10:00
Dion Moult acb446bfc2 Changing task scheduled dates now auto updates its related quantity take off data 2021-08-12 10:32:42 +10:00
Dion Moult 5af0d65306 You can now remove cost quantities in bulk. 2021-08-12 10:03:58 +10:00
Dion Moult f600186496 Parametric quantity breakdowns for cost items are now shown 2021-08-12 09:54:01 +10:00
Thomas Krijnen a2a606940a cgal header only in win build script 2021-08-11 21:47:18 +02:00
Thomas Krijnen 878c130924 cgal header only in win build script 2021-08-11 21:47:15 +02:00
Dion Moult e8e12a567e Assigning a product to a cost item now also assigns a quantity in one step 2021-08-11 21:22:23 +10:00
Dion Moult e21b4479b2 Minor fix. Fix #1639. 2021-08-11 21:01:56 +10:00
Dion Moult 858f48c49d New interface to view physical products assigned to a cost item 2021-08-11 20:56:07 +10:00
LaurensJN 62b8f10677 ifccityjson: support for object parent/children relationships 2021-08-11 10:02:23 +02:00
LaurensJN f42b018943 ifccityjson: more appropriate conversion of classes from cityjson to ifc 2021-08-11 09:15:57 +02:00
Dion Moult dff91e233b Distribution IFC-extended pset definitions for parametric costing and modeling 2021-08-11 17:09:51 +10:00
Dion Moult 2f49658d66 Implement resource quantity sets for parametric quantification 2021-08-11 17:08:49 +10:00
Dion Moult 0c27caf522 Implement task quantity sets for parametric quantification 2021-08-11 16:50:52 +10:00
aothms a304bc4021 Merge branch 'v0.7.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.7.0 2021-08-10 19:03:15 +00:00
aothms 92ae058f1e Build cgal/gmp/mpfr in build-all 2021-08-10 19:02:52 +00:00
Thomas Krijnen f9deaa53de submodule 2021-08-10 21:01:05 +02:00
aothms c8a357c228 Changes to build-all 2021-08-10 14:34:01 +00:00
aothms 095f1b3056 Merge branch 'v0.7.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.7.0 2021-08-10 14:32:43 +00:00
aothms ebf41592cc submodule 2021-08-10 14:32:34 +00:00
Thomas Krijnen 636c45f421 Merge remote-tracking branch 'origin/v0.6.0' into v0.7.0
# Conflicts:
#	src/ifcparse/Ifc4x3_rc4.cpp
#	src/ifcparse/Ifc4x3_rc4.h
2021-08-10 15:20:35 +02:00
Thomas Krijnen b3087e31f8 Regenerate schemas 2021-08-10 15:17:25 +02:00
Thomas Krijnen a8fbdb4c92 update RC4 schema 2021-08-10 15:14:59 +02:00
Thomas Krijnen f9c3bbb544 run blenderbim ci only on 0.6 2021-08-10 14:32:57 +02:00
Thomas Krijnen 007c5893c1 Merge branch 'v0.7.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.7.0 2021-08-10 14:30:21 +02:00
Thomas Krijnen 43f528ce04 Merge remote-tracking branch 'origin/v0.6.0' into v0.7.0
# Conflicts:
#	src/ifcgeom/IfcGeomTree.h
#	src/ifcgeom_schema_agnostic/IfcGeomIterator.h
#	src/ifcgeom_schema_agnostic/IteratorImplementation.cpp
#	src/ifcgeom_schema_agnostic/IteratorImplementation.h
#	src/ifcparse/Ifc4x3_rc3.cpp
#	src/ifcparse/Ifc4x3_rc3.h
#	src/serializers/SvgSerializer.cpp
2021-08-10 14:30:07 +02:00
Dion Moult a0f7a70419 Parametric types can how define a default layer set direction. 2021-08-10 22:16:45 +10:00
Thomas Krijnen ea9fd80998 Update ci.yml 2021-08-10 14:01:33 +02:00
Thomas Krijnen 5773c304dc Update ci.yml 2021-08-10 13:53:37 +02:00
Thomas Krijnen 5bf7aea21b Update ci.yml 2021-08-10 13:50:57 +02:00
Thomas Krijnen 83d5effb49 submodule 2021-08-10 13:47:56 +02:00
Thomas Krijnen e69b081962 cgal 2021-08-10 13:44:05 +02:00
Thomas Krijnen 443d769f62 recursive checkout 2021-08-10 12:54:55 +02:00
Dion Moult cb95c93424 You can now parametrically create profile / layer based objects of any type, no longer limited to walls, slabs, etc. 2021-08-10 18:56:24 +10:00
Dion Moult ab38e6bf7c You can now add and edit monetary units, and basic editing of other unit types. 2021-08-10 17:35:18 +10:00
Dion Moult 538029f396 Fix bug in work schedule cascading where some cascades wouldn't work and non-working dates would lead to an infinite recursion 2021-08-10 12:35:07 +10:00
Dion Moult ebd84a662e Updating model quantities now auto refreshes parametric quantities in cost schedules 2021-08-10 12:01:29 +10:00
Dion Moult f393c5f1d2 Copying an object / class now also copies pset and qtos 2021-08-10 11:48:38 +10:00
Dion Moult 1d42ce04eb Fix bug where editing a schedule finish date by itself wouldn't work 2021-08-10 10:55:01 +10:00
bosonprojets 023dd289fa BlenderBIM and ifcopenshell.api features to enable adding and editing resource time information 2021-08-10 00:59:20 +01:00
Dion Moult 869bb22830 You can now import a cost schedule from an IFC project library 2021-08-10 09:35:09 +10:00
LaurensJN 4bf074f97a ifccityjson conversion support for MultiLineString and MultiPoint 2021-08-09 13:10:26 +02:00
Dion Moult 4c67137d47 You can now create curve shapes from the debug panel too 2021-08-09 20:30:14 +10:00
Dion Moult 4bb888c862 You can now customise cost category columns in the cost schedule tree 2021-08-09 19:06:06 +10:00
Dion Moult 9a748e640e Fix bug where you couldn't delete non active task columns 2021-08-09 18:29:25 +10:00
Dion Moult efec360a00 Ifc5d can now parse cost category breakdowns in CSV form 2021-08-09 17:57:34 +10:00
Dion Moult d4fc135209 You can now import cost schedules as CSVs into IFC in Blender 2021-08-09 17:12:23 +10:00
Dion Moult 09098c1bdc New Ifc5D utility for converting and generating analysis of IFC cost data 2021-08-09 16:56:38 +10:00
bosonprojets 6899f9fa8f Feature to enable assigning Construction Resources to Tasks 2021-08-09 03:14:11 +01:00
Dion Moult a83952cec2 You can now import materials from a project library 2021-08-09 11:17:17 +10:00
Thomas Krijnen 21e064acaf fixes 2021-08-08 21:16:30 +02:00
Thomas Krijnen 83a8745959 --svg-no-css 2021-08-08 20:40:15 +02:00
Thomas Krijnen 42ae4f9a3c add `cut' to classname 2021-08-08 20:21:01 +02:00
Thomas Krijnen 3cd47cdd0f svg skip empty 2021-08-08 20:20:23 +02:00
Thomas Krijnen 92ca549b0b setNoCSS() 2021-08-08 18:10:19 +02:00
Thomas Krijnen 2213b4e212 --elevation-ref-guid setElevationRefGuid 2021-08-08 18:06:58 +02:00
Dion Moult 7abccbd713 Deleting a material set from a type now also purges usages from type instances 2021-08-08 20:56:31 +10:00
Dion Moult b696d302f9 Minor fix. See #1616. 2021-08-08 20:24:44 +10:00
Dion Moult 2c66fbf1c4 Fix #1546. New feature to copy the material of the active object to selected objects. 2021-08-08 20:13:24 +10:00
Dion Moult 18a52fd5f8 IfcClash now has logging and fix bug where exclude clash filters on large files was very slow 2021-08-08 16:54:48 +10:00
Dion Moult 2033ee1c69 Minor fix 2021-08-08 16:13:19 +10:00
Dion Moult c1ae066e76 Switching BCF viewpoints is now sigificantly faster on large projects. 2021-08-08 14:02:24 +10:00
Dion Moult 70f6857325 Fix #1357. Remove temporary workaround for broadphase tree creation. Thanks aothms! 2021-08-08 14:02:24 +10:00
Dion Moult 0d6cacdd73 BCF cameras now support global absolute coordinates with a Blender offset 2021-08-08 14:02:24 +10:00
Thomas Krijnen 17ef18cd2a submodule 2021-08-07 23:14:39 +02:00
Thomas Krijnen 2f8ff9391c #1153 work on embedding svgfill in ifcopenshell wrapper 2021-08-07 23:09:19 +02:00
Thomas Krijnen 0183cf3b31 Update FUNDING.yml 2021-08-07 15:48:50 +02:00
Dion Moult ab8fd0a6fe WIP licenses. See #1082. 2021-08-07 21:15:36 +10:00
Dion Moult 5a52f3aeea Fix #1528. Fix bug where IFC project libraries could not be imported as a file. 2021-08-07 21:06:42 +10:00
Thomas Krijnen 0087fa875b separate tree::add_element(), dynamic_cast<> for invalid settings 2021-08-07 13:01:52 +02:00
Dion Moult a874a6b673 Fix #1632. Fix bug where you couldn't load the add-on in background mode. Thanks s-leger! 2021-08-07 20:35:08 +10:00
Thomas Krijnen 872306fdd0 further optional type changes 2021-08-07 11:53:45 +02:00
Thomas Krijnen 0e6962c311 further optional type changes 2021-08-07 11:23:41 +02:00
Thomas Krijnen 49cf297eee further optional type changes 2021-08-07 10:58:20 +02:00
Thomas Krijnen 321d18990f Position() != nullptr 2021-08-07 10:44:29 +02:00
Thomas Krijnen 8a7016c135 update parse example for optional<double> 2021-08-07 10:41:00 +02:00
Thomas Krijnen 34cb672075 string literals 2021-08-07 10:40:43 +02:00
Dion Moult 176e22af8b Fix bug to prevent users from appending a project library asset twice 2021-08-07 18:37:45 +10:00
Thomas Krijnen 5d14f187b0 Position() != nullptr 2021-08-07 10:16:07 +02:00
Thomas Krijnen 85645aca28 use assignment operator 2021-08-07 10:08:19 +02:00
Thomas Krijnen ef5b41b566 specify template differently 2021-08-07 10:00:56 +02:00
Thomas Krijnen 44de9a387f reverse overload order 2021-08-07 09:44:21 +02:00
Dion Moult bcf82984ce New feature to extend columns, beams, and members to a target 2021-08-07 17:01:42 +10:00
Dion Moult cdd46066fa Fix bug where you couldn't use userdefined types for type elements 2021-08-07 14:20:07 +10:00
LaurensJN 10011436d0 Copyright statements for ifccityjson. See #1082 2021-08-06 15:47:47 +02:00
Dion Moult 00be87ff07 Fix bug where wall origin recalculations will shift openings 2021-08-06 22:25:32 +10:00
Dion Moult e22c68a842 Units for cost items are now autodetected 2021-08-06 18:19:41 +10:00
Dion Moult 07bf60819a Minor fix 2021-08-06 16:44:47 +10:00
Prabhat Singh 62c5efe591 Updated Server (#1630) 2021-08-06 15:50:05 +10:00
Dion Moult 05ef6542ef New utility to derive the unit of a property or quantity. 2021-08-06 15:48:07 +10:00
Dion Moult 326e7e591f You can now delete unit assignments 2021-08-06 14:11:08 +10:00
Dion Moult 4ccadc4f36 New unit utility to auto detect SI unit dimensional exponents 2021-08-06 12:38:34 +10:00
Dion Moult 7d087d2919 You can now view all assigned project units 2021-08-06 12:38:18 +10:00
Dion Moult 3b5bc531cb Fix bug where FM types for COBie were not selected properly 2021-08-06 11:43:57 +10:00
Dion Moult 47440edb8b Fix bug where undoing broke the IFC link for child objects 2021-08-06 10:26:18 +10:00
Dion Moult 0ee881fb32 You can now toggle whether decomposed elements are parented in blender when editing, so voids/fills etc move with you. 2021-08-05 21:14:18 +10:00
Dion Moult fee5d17f61 Fix builds to use name "blenderbim" instead of "blender28-bim" which now confuses people since 2.9 is out. 2021-08-05 14:02:11 +10:00
Dion Moult 94f0612752 WIP copyright statements. See #1082. Also IFCP6 is now IFC4D as we will expand into more 4D apps and widen the scope. 2021-08-05 13:21:55 +10:00
Thomas Krijnen b149f4f56d #1047 2021-08-04 18:24:47 +02:00
Dion Moult 00bf08c220 Walls are now dynamically voided when joining, so you can join/unjoin voided walls 2021-08-04 20:45:46 +10:00
Dion Moult 3bb3a8018a Fix bug where materials weren't created when importing assets from a library 2021-08-04 20:30:40 +10:00
Boris Brangeon d71e89f823 Update selector.py (#1627)
Add new inverse_relationship ==> boundedby

If Entity IfcRelSpaceBoundary exist then hasattr(element, "BoundedBy") is True and relationship.RelatedBuildingElement exist.

New Rule Lark :  "@@ .IfcSpace[Name *= \"Bedroom\"] & .IfcSlab"
2021-08-04 19:55:51 +10:00
Dion Moult 562b520233 Split BCF-API client and OpenCDE Foundation-API client system 2021-08-04 18:03:52 +10:00
Prabhat Singh 44f8255296 Added BCF Server (#1626) 2021-08-04 12:14:24 +10:00
Dion Moult 2c5442accc Fix #1124. Fix example and document quirk to prevent memory related bug. 2021-08-04 11:45:56 +10:00
Dion Moult 5cf07a910e Include licenses on IfcOpenShell sub-utilities. See #1082. 2021-08-04 10:51:31 +10:00
Dion Moult 4184cff1a0 Add sample docstring and type hints for IfcPatch recipe. 2021-08-04 09:33:33 +10:00
Gorgious 67740a5f79 Fix error due to trying to patch non-existent file 2021-08-03 20:30:30 +02:00
Dion Moult ecfe8c3799 IfcClash is now able to be built as an isolated Python binary. Hooray! 2021-08-03 22:44:46 +10:00
Dion Moult 7403d14001 Fix IfcPatch pyinstaller script to make it easier to distribute ifcpatch. 2021-08-03 22:35:40 +10:00
Gorgious 2b63698d7c Use module variables as dynamic enum containers
As explained in
https://devtalk.blender.org/t/can-bpy-props-be-used-for-dynamic-lists/10130/11
Dynamic enums can crash Blender if container is not set using
at least a module-level variable.
Using global keyword is not mandatory but may help debugging
2021-08-03 12:51:31 +02:00
Dion Moult e0cd74d0ad Fix #1338. Add documentation for how to use IfcClash. 2021-08-03 17:46:26 +10:00
Dion Moult 4fe427558f Minor fix. 2021-08-03 16:55:30 +10:00
Dion Moult b59a9f5264 Unbreak everything. 2021-08-03 16:09:43 +10:00
Dion Moult f25fb0db51 New hppfcl IfcClash packaged for the BlenderBIM Add-on. New MacOS support. See #1357. 2021-08-03 13:29:40 +10:00
Dion Moult bfaa89cdec Fix #1608. Fix warnings when no people or organisations existed. 2021-08-03 09:43:39 +10:00
Gorgious56 9625200a2a Improve Debug Panel UI (#1621)
* Inline parameters with their respective operator

* Restrict min number of polygons to 0

* Simplify high poly mesh operator execution

* Clear debug attributes when purging ifc

* Poll if ifc file exists in operators

* Poll if ifc filepath exists before import

* Delete leftover whitespaces
2021-08-03 09:08:35 +10:00
Gorgious56 5562c9d2b5 Fix error if no ifc file set (#1620)
* Fix error trying to access unset ifc file

* Return prematurely from operator if no file is set

* Revert "Return prematurely from operator if no file is set"

This reverts commit f876cfbcef.

* Revert "Fix error trying to access unset ifc file"

This reverts commit 6782c47d86.

* Prevent error message if ifc_types enum is empty

* Hide panel if no ifc file to avoid error
2021-08-03 09:07:56 +10:00
Gorgious56 7c0405fab0 Improve UI for multi input string fields (#1617)
* Add utility operator for CollectionProperty

* Support Multi input string fields

* Simplify people & organisation UI code

* General-purpose code cleanup

* Use more compact and user friendly UI
2021-08-03 09:07:19 +10:00
Dion Moult 557f8e6d69 New ifcopenshell.geom.tree based broadphase collision for IfcClash instead of aabbtree. Also, upgrades for new bcf.v2 namespace implemented. See #1357. 2021-08-02 20:32:31 +10:00
Chun 2137b34063 Add descriptions to IFC Search function (#1618)
* Added descriptions to IFC Search function

* change color to colour
2021-08-01 19:33:55 +10:00
Dion Moult 86a44c21ac WIP experimental hpp-fcl and aabbtree-based IfcClash 2021-08-01 10:51:11 +10:00
Long a427462646 GlobalId is string (#1615) 2021-07-31 12:39:05 +10:00
Gorgious56 b79d23b3e2 Hide panels with features unsupported in V2x3 (#1614) 2021-07-30 22:13:41 +10:00
Gorgious56 2af1ebc614 Use passed context instead of bpy when available (#1607) 2021-07-30 07:08:17 +10:00
Thomas Krijnen 0d49c89943 logical handling in python and small fixes 2021-07-29 16:32:45 +02:00
Thomas Krijnen 7c3fcc26f4 hierarchy helper ifc4 RepresentationContexts compatibility 2021-07-29 16:23:09 +02:00
Thomas Krijnen bb93545b35 actualize wrapper code 2021-07-29 15:15:51 +02:00
Thomas Krijnen 5a25f336c9 update .gitignore 2021-07-29 15:09:23 +02:00
Thomas Krijnen d1fe1117be adapt code for previous commits 2021-07-29 14:54:51 +02:00
Thomas Krijnen e529eeb540 require C++14 for string literals 2021-07-29 14:54:00 +02:00
Thomas Krijnen 995500e90b rerun codegen 2021-07-29 14:53:42 +02:00
Thomas Krijnen 2cd85234bd code generation changes boost::optional and tribool 2021-07-29 14:53:26 +02:00
Dion Moult d2e421382b Minor fix 2021-07-29 20:08:51 +10:00
Bruno Postle 7b22f9c85b BlenderBIM some data_dir / schema_dir workarounds (#1606)
* write process.log to a tempdir if data_dir is not writable

* Don't include filename returned by data_dir and schema_dir chooser
2021-07-29 20:07:04 +10:00
Gorgious56 e06591bbbd Prevent linking non-existant or non-ifc file (#1604) 2021-07-29 17:03:53 +10:00
Dion Moult 110daf4ca7 Fix #1592. Material name changes are now auto synced with style names. 2021-07-29 17:03:06 +10:00
Dion Moult 6bf692b44d Fix #1401. Modified custom psets are now immediately available without needing to restart Blender. 2021-07-29 16:16:01 +10:00
bosonprojets c257afbd1c Fix BlenderBIM bug Class assignement for predefined_type attribue 2021-07-29 00:28:04 +01:00
bosonprojets cdf18e9f20 Revert "Fix BlenderBIM bug class assignement when PredefinedType is set as USERDEFINED"
This reverts commit d1e51fb05b.
2021-07-29 00:24:38 +01:00
bosonprojets c715f41972 Fix BlenderBIM bug missing module reference for Pie Menu shortcuts 2021-07-28 23:37:06 +01:00
bosonprojets d1e51fb05b Fix BlenderBIM bug class assignement when PredefinedType is set as USERDEFINED 2021-07-28 15:27:51 +01:00
Gorgious56 99f72a8451 Fix Assign Container operator loses active object (#1601)
* Fix Assign Container operator loses active object

* Fix bad indentation for restoring active object
2021-07-28 21:40:23 +10:00
Dion Moult 2537349ec2 Object style colours are now auto synchronised upon export. See #1585. 2021-07-28 21:01:09 +10:00
Dion Moult 10b6253a36 Fix #1585. Materials are added as a potential if you assign it as an object material too, for convenience. 2021-07-28 19:55:18 +10:00
Dion Moult d88c4fd377 Fix #1597. Prevent mixing objects on project creation. 2021-07-28 18:43:20 +10:00
Dion Moult 0596e2000c New debug utility to purge all Blender IFC links. See #1599. 2021-07-28 18:21:05 +10:00
Dion Moult b685610900 Fix #1599. Bug where removing the last object in a container would have an error. 2021-07-28 18:21:05 +10:00
dedicos 5cab72deaa removed get_property in attributes_psets step file (not implemented yet) (#1596)
* removed get_property in attributes_psets step file (not implemented yet)

problem with stepmatcher remains

* Fix pattern search for properties
2021-07-28 17:51:16 +10:00
Dion Moult 52f15d27b1 Fix bug where import filters didn't properly exclude types and empty objects 2021-07-28 17:48:36 +10:00
Thomas Krijnen c694b5534a Work in progress on mapping templates 2021-07-27 15:46:38 +02:00
Dion Moult cfa0575263 Minor fix 2021-07-27 20:47:49 +10:00
Dion Moult f5e089e0fd Material based surface styles are now supported on import as a style fallback. See #1585. 2021-07-27 20:47:49 +10:00
Dion Moult 5d246a8716 Fix bug where module data was not purged correctly when a new scene was started 2021-07-27 20:47:49 +10:00
Dion Moult 1f241912f2 Make recipe name generic 2021-07-27 20:47:49 +10:00
Carmen Fan f7765c531b GeomIterator is not exposed for use if the library is built dynamically on windows (#1583) 2021-07-27 09:36:44 +02:00
Carmen Fan 3b401ec28f fix hash define logical operation 2021-07-27 09:36:16 +02:00
Dion Moult 77206cb761 Fix #1588. Profiles now auto recalculate cardinal points after editing. 2021-07-27 09:42:42 +10:00
Dion Moult f8e9f81b9b Parametric profiles now auto sync prior to depth changes. See #1588. 2021-07-26 21:13:15 +10:00
Dion Moult 186c4dd118 New experimental serialiser-based drawing generation code. See #1153. See #1564. 2021-07-26 20:24:39 +10:00
Dion Moult aa9b6b61fa Fix bug where material profile data was not purged since a profile module didn't exist. See #1588. 2021-07-26 09:45:46 +10:00
Dion Moult 6337d04efc IfcSverchok API node now actually executes API calls and has descriptive tooltips 2021-07-25 18:42:28 +10:00
Dion Moult c00bcc78e9 Editing voids or dumb walls now auto enable dynamic voids, so openings work well with them. 2021-07-25 14:06:49 +10:00
Dion Moult 07f19ad80a New patch to fix duplicate Revit types. See commit message for details.
Types in Revit are secretly duplicated (or more) if they are mirrored or hosted in another object unbeknownst to the user. So what the user thinks is a single construction type in Revit ends up being multiple IFC types. This leads to incorrect results when someone interrogates the IFC file. This is fundamentally an issue in the way Revit handles element mirroring and hosting, so there is no fix on the Revit side, so this workaround mitigates the issue by doing a shallow merge of the type objects.
2021-07-25 12:00:05 +10:00
Dion Moult 8ca6183313 Fix #169. New recipe to fix duplicate and invalid GlobalIds. 2021-07-25 11:39:11 +10:00
Ryan Schultz 492df6845b cleaned up list of hotkeys a bit (#1586) 2021-07-25 10:29:33 +10:00
Alexander Nitsch 43f8d8547d Bimtester: Fixed attributes_psets step files (#1580)
Co-authored-by: Nitsch Alexander <alexander.nitsch@scs.ch>
2021-07-25 09:57:59 +10:00
Thomas Krijnen 6e3c72707d submodule 2021-07-24 22:25:01 +02:00
Dion Moult 08d6c0a2d8 Openings are now auto dissolved when authoring for easier editing. 2021-07-24 22:08:50 +10:00
Dion Moult 8c1eff5c26 New workspace hotkey to toggle visibility of openings when authoring 2021-07-24 21:50:14 +10:00
Dion Moult fe3ffb7771 Openings are now placed in their own collection in case they accidentally get placed in the spatial tree 2021-07-24 21:35:27 +10:00
Thomas Krijnen 1375f25de9 #1564 typemap for optional string 2021-07-24 11:19:07 +02:00
Dion Moult 6660714308 New feature to add slab openings 2021-07-23 21:18:43 +10:00
Dion Moult 2420ad2fa7 New feature to add wall openings where your cursor is 2021-07-23 21:10:36 +10:00
Dion Moult 16fd06a4e9 Initial commit for half implemented IfcFM library to support new FM exchange requirements and related FM tasks. Initially just an IfcCOBie replacement but will grow. 2021-07-23 18:03:07 +10:00
Dion Moult beb5dda6dd New FM utility module for selecting maintainable assets according to different FM definitions 2021-07-23 16:10:38 +10:00
Dion Moult c04afe1a4b Minor fix. 2021-07-23 10:41:08 +10:00
Dion Moult d2a1e0193b Fix #1574. Fix #1578. Bug where deprecated functions were used in Python 3.9 for drawing generation. 2021-07-22 20:42:03 +10:00
Thomas Krijnen f2f4057c98 #1579 Fix attribute assignment to enum types 2021-07-22 11:48:27 +02:00
Thomas Krijnen 347aae9696 #1579 regenerate code 2021-07-22 11:48:02 +02:00
Thomas Krijnen 1a2d0d702b #1579 Update templates, thanks @RickBrice 2021-07-22 11:47:47 +02:00
Dion Moult e791449d3d Bump IfcOpenShell. See #1567. 2021-07-22 19:36:31 +10:00
Dion Moult 8071e079b3 New system module with UI to browse systems in an IFC. 2021-07-22 17:40:50 +10:00
Dion Moult 1c71af058f Fix bug where date conversions fail if IFC2X3 seconds have fractions 2021-07-22 13:22:23 +10:00
Dion Moult c4f3633ab8 Property and quantity sets are now shown in alphabetical order to be much less confusing. 2021-07-21 17:05:02 +10:00
Dion Moult c40fd91730 New feature where you can select related objects from an actively selected type. 2021-07-21 10:41:59 +10:00
Dion Moult a7252273b4 Fix bug where searching a GlobalId wouldn't work if you previously used the debug panel. 2021-07-21 10:41:29 +10:00
Dion Moult 6e0a443cca Fix bug where the covetool module didn't detect skylights properly. See #967. 2021-07-21 08:58:57 +10:00
Dion Moult 4574887709 Fix bug where editing multiple objects didn't synchronise changes when exporting. 2021-07-20 23:01:16 +10:00
Dion Moult f14d349be0 Fix bug where psets didn't show up for non element types like 2X3 door styles. 2021-07-20 09:50:46 +10:00
Dion Moult 023eb719f5 Added profiles of more specialised profile subtypes are now supported. 2021-07-19 21:35:20 +10:00
Dion Moult 8ba1b1c9b4 New script to generate a demo project asset library 2021-07-19 21:22:54 +10:00
Dion Moult 7cb163efef New print object placement debug feature 2021-07-19 20:16:47 +10:00
Dion Moult e68c57e9ef Fix bug where reused placements (e.g. from copied objects) were all updated which led to incorrect locations 2021-07-19 20:16:07 +10:00
Dion Moult 7d17b3170c New feature to select all of the active IFC element's class 2021-07-19 19:19:12 +10:00
Dion Moult a968f2b04d The BIM Tool can now create profiled members. 2021-07-18 17:20:16 +10:00
Dion Moult 9a14406f92 BIM tool can now add parametric profiles for beams, not just columns. 2021-07-18 14:48:30 +10:00
Dion Moult 32062e4085 Experimental WIP broken Sverchok API node. 2021-07-18 12:58:27 +10:00
Dion Moult 8da17cf4a0 New extract docs system to dynamically parse usecases. 2021-07-18 12:57:38 +10:00
Dion Moult 2d6e941c41 New documentation for project create_file usecase 2021-07-18 12:56:49 +10:00
Dion Moult 0fffbac519 Fix #1569. 2021-07-18 09:26:37 +10:00
Dion Moult db62faa5ae Fix #1570. 2021-07-18 09:21:38 +10:00
Dion Moult 02dc7b5274 The align tool now works on any generic product, not just walls. 2021-07-17 21:36:03 +10:00
Dion Moult 1bf136e93c Copying a spatial element now also automatically creates a new collection. See #1565. 2021-07-17 18:58:25 +10:00
Dion Moult cccab9e751 Minor fix. See #1567. 2021-07-17 18:38:04 +10:00
Thomas Krijnen 99e74533c3 #1567 Clear inverse cache map after entity insertion 2021-07-17 10:20:50 +02:00
Thomas Krijnen 0f39b09396 #1567 add instance after the values are set 2021-07-17 09:38:31 +02:00
Dion Moult ac2324a65f Minor fix 2021-07-17 17:28:27 +10:00
Thomas Krijnen ca85927a51 #1572 wrong serializer output temp name 2021-07-17 09:06:03 +02:00
Prabhat Singh e3786423c2 Update README.md (#1571) 2021-07-17 16:42:19 +10:00
Dion Moult 8d352ea07a Fix bug where editing a single material didn't quite work. 2021-07-17 09:13:37 +10:00
Dion Moult fd04066940 Minor fix 2021-07-15 18:21:18 +10:00
Dion Moult d34956c2c7 Add readme info on how to use new BCFAPI. Thanks TestPrab! 2021-07-15 18:02:16 +10:00
Prabhat Singh ad2585c571 Merge branch 'v0.6.0' of https://github.com/TestPrab/IfcOpenShell into prabhat_gsoc (#1566) 2021-07-15 17:41:24 +10:00
Dion Moult a08cf23d63 Fix #1562. Fix bug where all instances change meshes when changing type. 2021-07-14 09:37:29 +10:00
Dion Moult 37fe04ffd2 New recipe to downgrade indexed poly curves, often used to allow IFC4 grids to show up in viewers like Revizto / XBim Xplorer / etc. 2021-07-13 19:32:12 +10:00
Dion Moult 248b21eab3 Importing 2D elements of any arbitrary element is now supported 2021-07-13 18:58:30 +10:00
Thomas Krijnen 83049bf41a Update CMakeLists.txt 2021-07-13 10:52:45 +02:00
Dion Moult 63f578315d Add support for 3D curve / wireframe representations. 2021-07-13 18:45:07 +10:00
Dion Moult 19b6765994 Minor fix 2021-07-13 16:39:56 +10:00
Dion Moult 7456c270ff You can now extend a wall to your cursor location instead of another wall 2021-07-12 22:10:10 +10:00
Dion Moult b480b43435 BIM workspace tool is now no longer wall specific, and adapts to different element types 2021-07-12 17:34:35 +10:00
aothms b48ff530eb Tweaks to nix build and cmake 2021-07-11 19:15:20 +00:00
Thomas Krijnen b0993bb382 Update geom server 2021-07-11 15:20:06 +02:00
Thomas Krijnen b0e12023b8 conditionally install pdb 2021-07-11 15:12:27 +02:00
Thomas Krijnen 34fd959011 expose serializers in higher level module 2021-07-11 15:03:49 +02:00
Thomas Krijnen 985f4665d1 expose 2 serializers in python 2021-07-11 15:03:21 +02:00
Thomas Krijnen c949211e1b remove templates in wrapper 2021-07-11 15:03:05 +02:00
Thomas Krijnen 7c0459bc6e install pdb 2021-07-11 15:01:50 +02:00
Thomas Krijnen 975379a3a4 approach to pass stringstream to serializers 2021-07-11 15:01:31 +02:00
Thomas Krijnen eeaf04c6ea Remove templates on iterator and element 2021-07-11 15:00:59 +02:00
Thomas Krijnen ff73f82798 remove FASTER_BOOLEANS (to stay under 31 settings) 2021-07-11 14:57:49 +02:00
Thomas Krijnen 192f140960 Merge branch 'v0.7.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.7.0 2021-07-11 14:55:32 +02:00
Thomas Krijnen 38b4bb564e MSVC /MP 2021-07-11 14:55:27 +02:00
Thomas Krijnen d85b3dfba0 ifc max default to off 2021-07-11 11:03:51 +02:00
Thomas Krijnen f032378ca7 no double/float parametrization anymore 2021-07-11 11:03:35 +02:00
Thomas Krijnen a727f81844 Update ci.yml 2021-07-11 09:29:23 +02:00
Thomas Krijnen 2ede620068 Update release.yml 2021-07-11 09:29:19 +02:00
Dion Moult 3614587556 Fix #1558. New loading bar when importing an IFC. 2021-07-11 10:29:19 +10:00
Dion Moult 86ce367ba8 Fix #1561. 2021-07-11 09:28:22 +10:00
Thomas Krijnen 436bcd078f Merge remote-tracking branch 'origin/v0.6.0' into v0.7.0 2021-07-10 21:59:06 +02:00
Thomas Krijnen c7c9ebe61a Remove build-deps shortcurt 2021-07-10 21:57:40 +02:00
Thomas Krijnen e7786e83b7 Update CMakeLists.txt 2021-07-10 21:47:51 +02:00
Thomas Krijnen d320c1dac1 Some quick and dirty #1560 2021-07-10 21:43:27 +02:00
Thomas Krijnen 88af0e569a Update .travis.yml 2021-07-10 21:39:27 +02:00
Thomas Krijnen a762c980b9 Update CMakeLists.txt 2021-07-10 21:39:09 +02:00
Thomas Krijnen 5db7f52e03 Merge branch 'v0.6.0' into v0.7.0 2021-07-10 21:21:22 +02:00
Thomas Krijnen 9776cd2c99 Update .travis.yml 2021-07-10 21:19:45 +02:00
Thomas Krijnen 25f2ef8cf1 Merge branch 'v0.7.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.7.0 2021-07-10 21:16:45 +02:00
aothms 2fe0ec061a Fixes for windows build 2021-07-10 21:15:39 +02:00
Thomas Krijnen cf48661a35 limit schema versions on Travis 2021-07-10 21:10:03 +02:00
Thomas Krijnen 5e03846783 Update .travis.yml 2021-07-10 17:17:47 +02:00
Thomas Krijnen 316e0eda2f Update .travis.yml 2021-07-10 17:06:47 +02:00
Thomas Krijnen a92ade7835 Merge branch 'v0.6.0' into v0.7.0 2021-07-10 16:55:57 +02:00
Thomas Krijnen acddbfd18c Update .travis.yml 2021-07-10 16:08:23 +02:00
Thomas Krijnen 791f57072e Update .travis.yml 2021-07-10 16:05:32 +02:00
Thomas Krijnen 078f7b3dae Update .travis.yml 2021-07-10 15:58:54 +02:00
Rick Brice c02f270993 Adds support for 4x3 rc3 and rc4 for IfcParser library 2021-07-10 15:38:34 +02:00
Rick Brice a73178fe3e Adds ignore settings for vs2015 and vs2019 2021-07-10 15:38:34 +02:00
Thomas Krijnen 24808ced60 Merge pull request #1530 from atomczak/GSoC#45-IDS-checking
IDS - xmlschema, restrictions and requirements
2021-07-10 15:35:08 +02:00
Dion Moult 1d523c9636 Implement assigning material definition representation styles 2021-07-10 22:06:11 +10:00
Dion Moult 6ccb208345 Fix #1557. Surface style attributes can now be explicitly edited. 2021-07-10 12:34:25 +10:00
Dion Moult af0f0a4f6c Implement support for removing styles. See #1557. 2021-07-10 11:43:01 +10:00
Dion Moult edd737aa5d Minor fix 2021-07-10 10:32:34 +10:00
ArturTomczak 5d8f71128e add tests for parsing and authoring 2021-07-09 08:44:36 +02:00
ArturTomczak 1ea4f50d30 fix facet constructors 2021-07-09 08:35:04 +02:00
ArturTomczak 93fad2a5c3 add ids constructor, fix ids bug 2021-07-08 18:14:49 +02:00
ArturTomczak 30a03b0c51 add facet creation methods 2021-07-08 18:12:55 +02:00
ArturTomczak b0bb2cb58d add ids.to_xml() 2021-07-08 18:09:32 +02:00
ArturTomczak 3837c9d6ff add methods to specification class 2021-07-08 18:09:02 +02:00
ArturTomczak d189113b98 add asdict() to all ids classes 2021-07-08 18:06:07 +02:00
ArturTomczak 6dba96e780 add location_msg as separate param 2021-07-08 18:04:50 +02:00
ArturTomczak c2bdfa9394 fix imports and move ids_schema outside 2021-07-08 18:00:33 +02:00
Dion Moult 519a53dc61 Fix #1554. Changing Blender material name now auto updates both IFC material name and surface style name 2021-07-08 18:59:40 +10:00
Dion Moult 21c4433c75 Allow setting to toggle cascading of edited object placements 2021-07-08 18:00:41 +10:00
Dion Moult 0e24d4411f Fix #1556. Ensure that styles are always present when updating a representation. 2021-07-08 13:02:30 +10:00
Dion Moult cb6837b0ac Add Windows install docs for BlenderBIM for devs 2021-07-07 16:10:47 +10:00
Kai Zhu 5ec7f65df5 Update source installation for windows docs (#1555)
Added docs for Windows mklink syntax.
2021-07-07 16:03:11 +10:00
Dion Moult db04cc1bb5 Implement partial undo for BCF operators. Note that undo is not supported in BCF lib itself, nor BCF API. See #1475. 2021-07-07 11:57:07 +10:00
Dion Moult 1f128fd7e4 Minor BCF fix 2021-07-07 11:44:16 +10:00
bosonprojets 56633b8126 Implement undo for Costing, Sequencing, and Resources 2021-07-07 02:01:19 +01:00
Dion Moult 6706ad9bd5 Implement undo for augin, bimtester, clash, cobie, and covetool operators. See #1475. 2021-07-07 10:40:07 +10:00
Dion Moult fb6c670aa6 Fix colour by undo operators in search module. See #1475. 2021-07-07 10:25:19 +10:00
Dion Moult a87637163a Fix #1553. Bug where reloading an IFC file didn't refresh the ID map without needing to restart. 2021-07-07 09:55:42 +10:00
Jesusbill 4bc5a3ba46 small bug fix from 75d67cd719 2021-07-06 16:02:14 +02:00
Jesusbill 866df1f040 implement undo for "search" module, may need improvement for some operators #1475 2021-07-06 12:19:45 +02:00
Jesusbill 2fa2fddf46 implement undo for "owner" module, may need improvement for some operators #1475 2021-07-06 12:19:27 +02:00
Jesusbill 1aeae0bf4d use import_attributes from helper for #1549 2021-07-06 12:17:59 +02:00
Jesusbill 6a2c4aee46 implement undo for 'patch' module #1475 2021-07-06 12:15:45 +02:00
Dion Moult 5cfbcf211b Minor fix 2021-07-06 18:17:34 +10:00
Dion Moult 3dcd10b478 Implement undo in debug and diff operators. 2021-07-06 16:03:27 +10:00
Dion Moult c687e9af05 Implement undo for model operators. See #1475. 2021-07-06 15:47:53 +10:00
Dion Moult b10c228155 Implement undo for drawing operators. See #1475. 2021-07-06 15:17:55 +10:00
Dion Moult b1d731447a Implement undo for non-module operators. See #1475. 2021-07-06 15:06:21 +10:00
Dion Moult 32e7083e21 Implement undo for pset template operators. See #1475. 2021-07-06 14:21:02 +10:00
Dion Moult 597b5ffbd6 Minor fix 2021-07-06 12:33:05 +10:00
Dion Moult f7e550b926 Add documentation on georeferencing 2021-07-06 12:20:22 +10:00
Dion Moult 75d67cd719 Fix #1551. Support mixed geolocation workarounds of both object placement and cartesian point. 2021-07-06 12:20:04 +10:00
ArturTomczak 41a47f14ae add basic parsing tests 2021-07-05 13:21:36 +02:00
Dion Moult cca28231ee Implement undo for material operators. See #1475. 2021-07-05 18:59:10 +10:00
s-leger d7b3a1d95a Delete OCC.pth (#1550)
Remove no more needed OCC.pth (setup OCC as module)
2021-07-05 18:35:50 +10:00
Dion Moult 30ba45f6cb Implement undo for pset operators. See #1475. 2021-07-05 17:09:04 +10:00
Dion Moult d832c9780a Implement undo for qto operators. See #1475. 2021-07-05 16:51:26 +10:00
Dion Moult 7f3b7f4e21 Implement undo for georeference operators. See #1475. 2021-07-05 16:42:38 +10:00
Dion Moult dc7dea21ce Implement undo for spatial operators. See #1475. 2021-07-05 16:36:33 +10:00
Dion Moult d6a9b73657 Minor fix. 2021-07-05 16:35:13 +10:00
Dion Moult 97cd919a7b Improve undo redo object linking robustness. See #1475. 2021-07-05 15:59:26 +10:00
Dion Moult 41bc109556 Implement undo for type, unit, and void operators. See #1475. 2021-07-05 15:03:50 +10:00
Dion Moult 4f5d4def1e Implement batch transaction support. See #1475. 2021-07-05 14:16:19 +10:00
admin bc32481185 merge 2021-07-05 10:30:06 +08:00
Jesusbill 3a24f03bed black formatting 2021-07-05 02:31:13 +02:00
Jesusbill f3ed96846e bug fix in constraint module, see #1549 2021-07-05 02:27:56 +02:00
Jesusbill cbe8165e08 add undo for "document" module #1475 2021-07-05 02:21:10 +02:00
Jesusbill 6a7a122de2 add undo for "csv" module #1475 2021-07-05 02:20:54 +02:00
Jesusbill e44db61fbd add undo for "classification" module #1475 2021-07-05 02:20:24 +02:00
Dion Moult 72b60e85d4 Minor fix 2021-07-05 09:01:10 +10:00
Dion Moult c48263ade9 Add installation instructions for IfcSverchok 2021-07-05 09:00:21 +10:00
Jesusbill 5ec081c6bc add undo for "contraint" module #1475 2021-07-04 18:33:35 +02:00
Jesusbill cc3f94097c add undo for "layer" module #1475 2021-07-04 18:32:29 +02:00
Dion Moult 253d478fdc Implement undo for style module operators. See #1475. 2021-07-04 20:28:21 +10:00
Dion Moult 549bc0e1a9 Minor fix. See #1475. 2021-07-04 20:22:20 +10:00
Dion Moult 9286de4813 Minor fix. See #1547. 2021-07-04 19:57:09 +10:00
Dion Moult b8015644e9 Implement undo for context and geometry operators. See #1475. 2021-07-04 19:45:34 +10:00
Dion Moult 8a917dc050 Fix #1529. Properly represent Blender materials as 1:1 mappings to surface styles, with support for material definition representation. 2021-07-04 12:38:41 +10:00
Dion Moult 68b6389794 Fix #1547. 2021-07-04 09:54:49 +10:00
Dion Moult 85bd616f6e Minor fix 2021-07-03 18:46:17 +10:00
Dion Moult 4ff60553cc Fix bug with inability to refresh token in bsdd api. Thanks TestPrab! 2021-07-03 17:45:29 +10:00
Dion Moult dcd6cace03 Fix bug in IfcSverchok nodes where refresh buttons didn't work 2021-07-03 14:34:15 +10:00
Dion Moult b7cfa53b4d IfcSverchok by_type node now updates to be schema dependent on the input file 2021-07-03 14:33:47 +10:00
Dion Moult e0048f7a3c Minor fix 2021-07-03 10:41:06 +10:00
Jesusbill a8dcb2f306 undo for structural - wip 2021-07-03 02:08:31 +02:00
Dion Moult a8f0a4807c Add undo support for group module operators 2021-07-03 10:03:27 +10:00
Dion Moult d5539399e8 New print IFC file debug operator 2021-07-03 10:02:26 +10:00
ArturTomczak ad8542f244 add unittest init 2021-07-02 17:27:09 +02:00
Dion Moult eb89308019 Minor fix 2021-07-02 19:16:55 +10:00
Dion Moult e7e7b22fd5 Implement undo support for all root operations. Clean up implementation, making passing transaction keys unnecessary. See #1475. 2021-07-02 19:10:51 +10:00
Dion Moult b4a422c2b8 New add application usecase, improved add_classification usecase and better defaults for owner settings. Thanks johltn 2021-07-02 16:30:57 +10:00
Carmen Fan 30f778e0a7 restore other schema versions 2021-07-01 20:42:45 +02:00
Carmen Fan 2032b361c8 fix spelling 2021-07-01 20:42:45 +02:00
Carmen Fan 529b3a9867 add necessary export definitions , add IFCParse as a dependency to IfcGeom build 2021-07-01 20:42:45 +02:00
Dion Moult cac8c64ac8 Document undo system 2021-07-01 21:05:26 +10:00
Dion Moult 3847c9bd7a Implement undo for aggregate operations, with automatic element-obj link undo/redo and improved undo syntax. See #1475. 2021-07-01 20:43:33 +10:00
Thomas Krijnen ffbaa6f0e0 #1537 implement schema enum cast 2021-07-01 11:13:50 +02:00
Thomas Krijnen b5c3812849 Missing change for 6ecedaa128 2021-07-01 11:09:15 +02:00
Dion Moult 30ad915649 Minor fix 2021-07-01 11:59:25 +10:00
Dion Moult c2cf3e8639 Minor fix 2021-07-01 11:53:56 +10:00
Dion Moult c1527b4199 Document module architecture 2021-07-01 11:53:00 +10:00
Dion Moult a1032a3bf0 Describe IfcOpenShell python architecture in the developer guide 2021-07-01 11:17:59 +10:00
Dion Moult 733b7c0e1e Add basic documentation for developer guide 2021-07-01 09:55:59 +10:00
Dion Moult 6b0a58db7d Experimental undo and redo Python prototype (#1539)
* Experimental undo and redo Python prototype

* Simplify history, use transaction jargon, use walk for more robust serialisation

* Black file, set history size, add file reference to entity_instance constructor

* Ensure that files are always passed when entities are wrapped

* Add support for undo/redo of all project module operations

* Minor fix

* Blender to IFC mappings are now managed by Blender RNA, so they don't break on undo operations. See #1475.

* Implement undo for all attribute operations. See #1475.

* Update documentation for installation of add-on

* Revert Blender RNA approach for Blender-IFC mappings, because it didn't scale, but still fix the undo/redo object memory corruption with new "reload_linked_elements" method.
2021-06-30 18:34:12 +10:00
Thomas Krijnen 10bf875e92 Remove wrong and unnecessary shape cast in derived profile 2021-06-27 20:29:47 +02:00
Thomas Krijnen 2fd2b49709 #1539 Option to specify id/instance_name in file::add() 2021-06-27 11:14:26 +02:00
Dion Moult 37a61c549f Accommmodate incorrect body representation contexts coming from Revit 2021-06-27 11:00:20 +10:00
Thomas Krijnen da10a1060e #1475 IfcFile::recalculate_id_counter() 2021-06-26 13:23:55 +02:00
Dion Moult ebfb29d6da Fix #1538. Bug when absolute coordinates are detected from a coordinate list. 2021-06-26 17:09:44 +10:00
Dion Moult 6e4e6a88a4 Add support for parametric updating of cardinal points 1-9 for profile set usages 2021-06-25 17:25:26 +10:00
Dion Moult 312de694b6 Task trees can now be sorted by any attribute independent of the WBS 2021-06-23 18:17:39 +10:00
Dion Moult 788a5a829e Tasks now auto generate identification numbers 2021-06-23 14:13:18 +10:00
Dion Moult a4391df9ca Wall tool now rebranded as BIM tool with a new icon thanks to s-leger! 2021-06-23 11:25:05 +10:00
Dion Moult 1071ac00d4 Fix validation errors in IFC2X3 with missing ownership and mandatory attributes 2021-06-23 10:35:25 +10:00
Thomas Krijnen 6ecedaa128 tree select(gp_Pnt) also with extend 2021-06-22 15:46:21 +02:00
blocovin 8f154c753c Fix xml double value is rounded #1533 2021-06-22 15:12:36 +02:00
Dion Moult e863015e85 You can now customise the data columns shown in the work task tree 2021-06-22 19:32:59 +10:00
Dion Moult 2c49b3bde8 MSProject XML to IFC conversion now supports blank IFCs or non-existent work plans 2021-06-22 13:22:48 +10:00
ArturTomczak eaa527f512 include location (type/inst/any) 2021-06-21 17:48:27 +02:00
ArturTomczak 99f0e6c93e add regex pattern validation 2021-06-21 15:23:03 +02:00
ArturTomczak f27fbecc9a Merge branch 'v0.6.0' into GSoC#45-IDS-checking 2021-06-21 08:48:46 +02:00
Dion Moult 650ebeddd6 Column profiles now update when switching type 2021-06-21 14:44:42 +10:00
Dion Moult 5d0d3aaa16 Minor fix 2021-06-21 14:13:25 +10:00
Dion Moult 54526960c8 Column profiles now auto update when you change the material profile 2021-06-21 12:21:55 +10:00
Jesusbill e0b93a70d3 black formatting 2021-06-20 20:58:36 +02:00
Jesusbill e569b97c56 Add general CRUD operations for boundary conditions (from scene properties) 2021-06-20 20:57:12 +02:00
Jesusbill a0b7fe2736 you can now filter structural loads based on name and inverse references 2021-06-20 20:53:45 +02:00
ArturTomczak 3b270a61df handle ifc2x3 and 4
handles .ItemReference or .Identification
2021-06-19 11:44:33 +02:00
ArturTomczak 5b94043cdc ids parse, restrictions
change __init__ to parse for separating those two
2021-06-18 16:50:26 +02:00
Dion Moult aadb28bb79 Fix #1456. Improve usability when a project library only has a single class type in it. 2021-06-18 16:05:58 +10:00
Dion Moult 2f1f332d31 Fix #1522. Appending from project libraries now supports material properties and styles. 2021-06-18 15:54:01 +10:00
Dion Moult 1ee2f420c8 New feature to see derived global and local elevations 2021-06-18 14:19:53 +10:00
Dion Moult 567bc7b667 Fix confusing transparency attribute in add style API usecase. See #1529. 2021-06-18 08:03:44 +10:00
Dion Moult 2a2f4d692a Fix bug where extrusion detection on voided profiles was not reliable 2021-06-17 19:24:16 +10:00
Dion Moult 1b49a10a15 Minor fix, bump readme 2021-06-17 18:30:25 +10:00
Dion Moult a08918fd22 Scheduled dates now cascade when dependencies, lag times, and calendars are modified 2021-06-17 14:59:28 +10:00
Dion Moult 50608d9459 Modifications to scheduled dates can now cascade through the task tree 2021-06-17 13:23:09 +10:00
Dion Moult 97d0286b57 Uncached schedule recalculation is now twice as fast 2021-06-17 11:05:58 +10:00
Cyril Waechter 2a7fbea9c3 Add recipe to extract only spaces (#1521)
`ExtractElements` was not allowing to extract only spaces.
It also helps to workaround revit-ifc failure in linking spaces.
See: https://github.com/Autodesk/revit-ifc/issues/15
2021-06-17 10:31:18 +10:00
Dion Moult 257997c2cb New feature to copy elements to multiple spatial containers 2021-06-16 09:21:44 +10:00
Dion Moult 2dfc35877c Generated construction animations now support animating input product consumptions, movement to/from, and multiple processes per product 2021-06-15 21:22:28 +10:00
Dion Moult 68233a8fb2 Add support for product inputs into tasks, such as for movements on site 2021-06-15 20:55:43 +10:00
Dion Moult 76e2f688e5 Level of Effort activities are now excluded from P6 import to IFC. 2021-06-15 18:28:43 +10:00
Dion Moult 4d4bedcf9a Fix #1526. Fix bug where custom pset template properties wouldn't show up. 2021-06-15 17:48:45 +10:00
Dion Moult 36a18ea0f9 You can now bulk copy task attributes to other tasks in the task tree 2021-06-15 17:29:04 +10:00
Dion Moult fa1984e89e You can now animate demolition, logistic, and renovation type processes during construction sequencing 2021-06-15 16:35:40 +10:00
Dion Moult 3be0a74316 Minor UI fix for unreadable "derived grid north" in geolocation panel 2021-06-15 15:15:49 +10:00
Dion Moult 90cb56220f Fix #1524. Fixed bug where unlinking copied Blender objects didn't work. 2021-06-15 13:05:24 +10:00
ArturTomczak 8fd4965106 add length restriction
both length and min/maxlength added
2021-06-12 22:35:37 +02:00
ArturTomczak ba26772e46 add bounds restriction 2021-06-12 21:10:50 +02:00
ArturTomczak 7e02eb923d add bounds restriction 2021-06-12 21:10:09 +02:00
ArturTomczak 459149e418 add enumeration restriction 2021-06-12 18:08:13 +02:00
ArturTomczak 768606571e fix multiple requirements at a time 2021-06-11 19:03:03 +02:00
ArturTomczak 65fa5768f2 implement material facet
added actual evaluation and extended current implementation with all possible ifc relations for materials.
2021-06-11 17:10:54 +02:00
ArturTomczak 9db01bc6cc implement classification facet 2021-06-10 15:21:51 +02:00
ArturTomczak 4e60ca01c3 improve feedback message
added counters and runtime info
2021-06-10 15:21:07 +02:00
ArturTomczak 8c9ab98697 switch from dom to xmlschema
as suggested by @Moult, xmlschema better fits the purpose than xml.dom.minidom
2021-06-10 15:19:23 +02:00
Dion Moult fc05bdf6d6 Support importing elements with no representations 2021-06-10 11:17:49 +10:00
Dion Moult 4c50b2d224 Support editing profile set usage attributes cardinal point and reference extent. Thanks Jesusbill! 2021-06-09 11:23:34 +10:00
ArturTomczak 4017097f19 Add xmlschema validation 2021-06-08 10:34:02 +02:00
Dion Moult b9472c9bae Implement free float calculation. Thanks SigmaDimensions! 2021-06-08 11:36:07 +10:00
Dion Moult 7d841c3f27 New dumb column tool. Creates a parametric solid column from profile sets. 2021-06-07 19:43:02 +10:00
Dion Moult ca0dac1353 The authoring UI now only shows available types so you don't waste your time checking what's available. 2021-06-07 16:09:56 +10:00
Dion Moult 1a962a7f60 Dumb slabs now auto calculate new quantities when edited 2021-06-07 15:58:03 +10:00
Dion Moult f3c1d1df31 Fix bug where you couldn't delete a quantity from a quantity set 2021-06-07 15:52:38 +10:00
Dion Moult 6a0562d00a Footprint and side areas are now generated for dumb wall quantities 2021-06-07 14:44:05 +10:00
Dion Moult 137a00225c Dumb slabs now auto generate footprint representations 2021-06-07 14:28:46 +10:00
Dion Moult 5a822d5e39 Slabs with voided profiles are now supported. 2021-06-07 11:20:05 +10:00
Dion Moult d844223367 Fix bug where P6 import module was not shipped 2021-06-07 10:32:26 +10:00
Dion Moult 6a29ab0d61 Fix bug where 2D or 1D objects generated an invalid box representation 2021-06-07 10:32:05 +10:00
Dion Moult e9c7b21bfc Fix bug where all meshes were cast to a solid by accident. Thanks s-leger! 2021-06-07 10:31:27 +10:00
Dion Moult ed316ba691 Fix #1382. You can now search property values agnostic of pset names. Thanks stefkeB! 2021-06-06 20:55:25 +10:00
Dion Moult cfd5742b5b Fix unnecessary error message when getting psets. 2021-06-06 20:54:40 +10:00
Dion Moult feac601340 Fix #1513. Materials now are included when importing types from a project library. 2021-06-06 10:05:24 +10:00
Dion Moult a8dc734351 Fix bugs where adding types without a material was broken. See #1513. 2021-06-06 09:57:50 +10:00
Dion Moult e0cbbf2eb7 Minor fixes to slab/wall syncing and stability in changing thicknesses. 2021-06-05 19:48:04 +10:00
Dion Moult 082ee3c95d Fix #1511. Prevent double registration of listener callbacks, and simplify listeners. 2021-06-05 19:48:04 +10:00
Thomas Krijnen ece6e6c8ca #1480 continued 2021-06-05 09:49:19 +02:00
Dion Moult 5c1d26ac91 Dumb walls and slabs now are always exported as parametric solids instead of meshes. 2021-06-04 17:30:37 +10:00
Dion Moult 153b6ee24d Total float calculation now takes into account calendar 2021-06-04 17:22:35 +10:00
Dion Moult 8b3b1eeb8e Fix #1510. Whoops :) 2021-06-04 15:29:14 +10:00
Dion Moult 8e279ea862 Improved date calculations during import and editing ensure that start / finish dates are always on working days. 2021-06-04 15:21:48 +10:00
Dion Moult 6f8861c030 ES, EF, LS, LF calculations in work schedules now are calendar based. Thanks SigmaDimensions! 2021-06-04 15:20:38 +10:00
Dion Moult 2ac6fe9eef Rewrite schedule calculation to be much faster and scale up to huge schedules. 2021-06-03 13:40:18 +10:00
Dion Moult 8338cc72db New styles on sequencing gantt chart to show dependency arrows, critical path, task groups, and milestones 2021-06-02 17:31:55 +10:00
Dion Moult 67b636f5fb New API usecase to recalculate schedule times, including:
* Critical path
* Total float
* Early start
* Early finish
* Late start
* Late finish
2021-06-02 17:30:05 +10:00
Jesusbill 3a754c8ecc fix of the fix n add_pset 2021-06-01 16:33:47 +02:00
Dion Moult d64d7cf27a Dumb slabs now roundtrip the Blender solidify modifier 2021-05-31 17:43:42 +10:00
Dion Moult 6ff4c95ac7 Dumb slabs now auto update thickness based on layer thickness and type changes. 2021-05-31 15:27:22 +10:00
Dion Moult 0b6af5f848 Experimental usecase serialisation function, in preparation for client-server systems and version control. 2021-05-31 14:18:24 +10:00
Dion Moult 3ded4dff5f Parametric engine is now registered on load, so you don't need to manually activate it 2021-05-31 14:17:33 +10:00
Dion Moult 452631b997 Updating either a duration, start, or finish date for a task now auto-updates the other attribute 2021-05-31 12:42:02 +10:00
Dion Moult c041dd13ad Fix bug where users saw a scary error message when exporting with no IFC data 2021-05-31 09:19:04 +10:00
Jesusbill 994ccb94f4 fix bug in adding psets for materials 2021-05-30 13:32:59 +02:00
Dion Moult c7ba643ef7 Fix material unassignment greedy purging bug, and auto assign usages of typed layer / profile sets. 2021-05-30 21:03:50 +10:00
Dion Moult 0b6f3113a7 Changing types of a dumb wall now auto updates their wall thicknesses 2021-05-30 21:03:50 +10:00
s-leger 730efcae49 Bugfix Set changed size during iteration (#1506)
Fix for remove  RuntimeError: Set changed size during iteration
Add docstring
2021-05-29 22:03:00 +10:00
Dion Moult 62b297757e Dumb slabs now are marked as parametric and inherit thickness from the slab type 2021-05-29 14:59:02 +10:00
s-leger 0533a00631 Allow global listeners (#1500)
* Allow global listeners

Add "global" listeners when ifc_file is None, listeners are run whatever the file.
This way allow to register listeners before a file exists, and "global" listeners.

Add listener returns the ifc_key
Remove listeners allow optional filtering by usecase_path / ifc_key.usecase_path.

* Update __init__.py

Fix was only removing the first listener found.
2021-05-29 09:06:38 +10:00
Dion Moult 7fe2e93dea Fix #1491. Bug where drawings couldn't have a slash in their names. 2021-05-28 17:26:00 +10:00
Dion Moult acc9bd736f Fix #1048. Switching drawings now works when in local view. 2021-05-28 16:09:42 +10:00
Dion Moult 478612b6ae Fix #976. Bug where project data dir was not very customisable without running into issues. 2021-05-28 15:58:19 +10:00
Dion Moult a24d683613 Fix #1396. New walls are selected when created. 2021-05-28 14:50:36 +10:00
Dion Moult 0b5d7cdbf3 Fix #1455. Bump IfcOpenShell. 2021-05-28 14:36:48 +10:00
Dion Moult b8e20ec1a5 Reimplement raster underlays when generating drawings. See #1153. 2021-05-28 14:33:46 +10:00
Dion Moult 1cd243f13c Fix #1462. Standardise IfcOpenShell API to use Pythonic argument names. 2021-05-28 10:59:39 +10:00
s-leger 0a2adbb632 Implement remove pre / pos / all listeners (#1498)
Remove listeners, passing callback method.
Will not handle file pre_load cleanup / post_load setup here to prevent any blender's dependancy.
2021-05-28 10:07:56 +10:00
Dion Moult 8882c99455 Implement editing IFC header metadata. See #747. 2021-05-28 09:50:55 +10:00
Dion Moult 7890ded698 Fix #1429. MVDs now reflect the full DesignTransferView by default. 2021-05-28 09:49:57 +10:00
bosonprojets 7d2d9b2bcf purging of cost and task inverse relationships in ifcopenshell.api, and amendement to cost item values editing UX in BlenderBIM 2021-05-28 00:24:01 +01:00
s-leger 75ae501ff9 Evaluate coplanar vertex in faces (#1489)
The idea is to only triangulate non co-planar faces when required.

Timings for evaluation with matrix based algo.
IfcRoof/Roof found 3927 of 116178 polygons: 0.366638 sec
IfcWall/Wall.012 found 0 of 6 polygons: 0.000046 sec

So should be acceptable for common use cases
But with single precision in blender we may still be over occ precision with a 1e-6 epsilon.
2021-05-28 08:57:22 +10:00
luz paz 880fbe9533 Fix misc. source comment typos
Found via `codespell`
2021-05-27 09:40:06 +02:00
Dion Moult c2684f4fbf New split wall tool 2021-05-27 16:33:34 +10:00
Dion Moult afdc1e6679 New feature to export point lights (IfcLightSourcePositional) into IFC 2021-05-27 13:55:44 +10:00
Dion Moult 8935a17844 Really barebones UI to list space boundaries. 2021-05-27 13:54:18 +10:00
Dion Moult 93c59e81c6 Minor code review for BCF XML 3.0 implementation with TestPrab 2021-05-26 18:00:21 +10:00
Dion Moult d423274e62 New wall flip tool with hotkey. Wall aligner now allows flipped walls. 2021-05-26 17:20:34 +10:00
Dion Moult 7958dd837b New wall tool with hotkeys for rapid wall editing 2021-05-26 15:45:45 +10:00
Long e42a638220 implement DatePicker, visualisation time demo (#1488) 2021-05-26 14:59:20 +10:00
Dion Moult f5f314a58f Dumb walls now auto update thicknesses if the wall layer thickness changes 2021-05-26 11:36:06 +10:00
Dion Moult 96465bed8f Code review for BCFXML v3 Markup.xsd implementation with TestPrab 2021-05-25 18:44:11 +10:00
Prabhat Singh 41bdeea981 Added Script for V3 bcfxml (#1486)
* Added Module Loader

* Added Project and Version script for v3

* Cleaning the code

* optional fix

* Added markup.xsd in v3 bcfxml

* Completed Vision.xsd and Markup.xsd

Co-authored-by: Dion Moult <dion@thinkmoult.com>
2021-05-25 17:22:01 +10:00
Dion Moult 14e0910e59 Purge old dumb wall. Bye bye! 2021-05-25 13:39:55 +10:00
Dion Moult e0ba1c2183 Total layer set thickness is now calculated and shown in the UI 2021-05-25 13:25:05 +10:00
Dion Moult a13b71abf0 Layer set usages now inherit layer sets from the type. Walls now support material layer set usages. Also minor fixes, thanks s-leger! 2021-05-25 13:10:26 +10:00
Dion Moult 32fb359ee2 Copying objects in Blender now auto copy them in IFC too. See #1360. Thanks s-leger! 2021-05-25 11:07:56 +10:00
s-leger 61661fe6f3 implement missing create curve 2d method (#1484) 2021-05-24 23:14:26 +10:00
Dion Moult 92054b1999 Fix bug where objects created with the same name fail to sync geometry on export 2021-05-24 21:22:50 +10:00
Dion Moult 22d9bce591 Dumb walls now automatically generate wall axis upon update 2021-05-24 20:56:47 +10:00
Dion Moult bfe9213f67 Dumb walls now auto calculate length, width, height, and simple volume quantities when being updated 2021-05-24 19:28:47 +10:00
Dion Moult 1abf854f01 New formwork area calculation feature 2021-05-24 18:56:20 +10:00
Dion Moult 686b2a187d New wall align tool (align exterior, interior, or centerline) 2021-05-24 17:29:32 +10:00
Dion Moult 7c2764c98a General bugfix and stability improvements to WIP wall join tool 2021-05-24 17:03:55 +10:00
Dion Moult f73a3a8f79 Fix bug where you were unable to delete certain objects. See #1483. 2021-05-24 13:51:51 +10:00
s-leger b9723c08e4 Ensure polygons are always coplanar (#1482)
* Ensure polygons are always coplanar

fix #1481
May adopt a bmesh approach instead ?

* Ensure polygons are coplanar

The bmesh version is lot faster than modifier one
2021-05-24 08:19:39 +10:00
Thomas Krijnen 1e80e67df5 #1472 various considerations for handling of non-manifold elements with openings 2021-05-23 16:26:34 +02:00
Thomas Krijnen 3e8c10b775 first rough partial draft of alignment handling in python 2021-05-23 09:48:47 +02:00
Thomas Krijnen fd9f209a19 Additional validity check with log level debug 2021-05-23 09:36:31 +02:00
Dion Moult 6b72f7322b Creating walls from cursor now auto-align perpendicular to the wall the cursor is at 2021-05-23 11:48:20 +10:00
Dion Moult 9b0d9c1f91 Stroke-generated walls now auto-join likely butt joints and t-junctions 2021-05-23 11:09:56 +10:00
Dion Moult 26b699be7c You can now join walls in bulk 2021-05-23 10:56:34 +10:00
Dion Moult 294eba24c4 You can now unjoin walls 2021-05-23 09:32:39 +10:00
Dion Moult 09094c090c New sketch wall tool, and join wall tool (T-junction, butt joint, and mitre joints) 2021-05-22 15:39:28 +10:00
ahladik a0dad0802e Fix to IfcHierarchyHelper.cpp (#1476) 2021-05-21 13:26:40 +02:00
Dion Moult 97244d1919 Revisiting dumb walls - typed dumb walls now auto derive wall thickness from the type material 2021-05-20 12:53:40 +10:00
Dion Moult 1541cbbbb8 Fix bug where sometimes active object edits would not get synced correctly. 2021-05-19 21:05:03 +10:00
Dion Moult 82692bb88d Adding a new type instance (like furniture, walls) now snaps it to the bottom of the storey you're working on. Nice. 2021-05-19 17:59:13 +10:00
Dion Moult 77a97233c5 New authoring panel for adding instances and fix bug where new cube instances were missing a face 2021-05-19 16:24:34 +10:00
Dion Moult 4214a449a8 Only show search UI if an IFC model is loaded. 2021-05-19 14:46:02 +10:00
Dion Moult b650c045f5 Simple support for API listeners for parametric IFC authoring - editing any parameter can now trigger events from a "parametric engine" which synchronises other related geometry and attributes in the IFC dataset. Implement auto box generation as a first demo. 2021-05-19 14:45:47 +10:00
Prabhat Singh 851ab07192 Added Project and Version script for v3 bcfxml.py (#1473)
* Added Project and Version script for v3

* Removed Redundant part

* Optional Element Fixes
2021-05-19 08:40:28 +10:00
civilx64 20a36c39fc finish implementing clothoid transition 2021-05-18 15:46:55 +02:00
civilx64 38544e2ba9 develop calcs for biquadratic parabola and clothoid curves 2021-05-18 15:46:55 +02:00
civilx64 41a88bcd4d create implementation of IfcTransitionCurveSegment2D 2021-05-18 15:46:55 +02:00
Dion Moult 966850c54a Minor fix 2021-05-18 20:02:56 +10:00
Dion Moult 319fe13f9e Minor refactor 2021-05-18 17:48:44 +10:00
Dion Moult 0d5110b7af Fix bug where you were unable to remove a representation 2021-05-18 16:42:41 +10:00
Dion Moult de873461e1 Fix bug where IFC2X3 files did not correctly generate 2D representations 2021-05-18 16:41:55 +10:00
Dion Moult cbce3cbec0 Assigning a representation to a product type now syncs mapped representations of all of its typed products. 2021-05-18 16:41:30 +10:00
Dion Moult 0822d1d377 Fix crash when switching representations for a type products. 2021-05-18 16:29:19 +10:00
Dion Moult e6bf32b832 Fix potential instability when assigning types and synchronising Blender geometry 2021-05-18 14:36:12 +10:00
Dion Moult 30c31d694a Purge OCC dependency and old drawing system. See #1153. 2021-05-18 10:44:33 +10:00
s-leger 65c2f9a038 Add support for rel_void / rel_fill / rel_project relative placement when editing object placements(#1471)
* Add support for rel_void / rel_fill

* Fix relationships, and add support for projection elements

Co-authored-by: Dion Moult <dion@thinkmoult.com>
2021-05-18 09:46:15 +10:00
Dion Moult 2d42846fa3 Basic reimplementation of the 2D representation support without PythonOCC. See #1153. 2021-05-17 21:52:23 +10:00
Dion Moult d3bb895c9d No new functionality. Just throwing all drawing code in the drawing module. See #1153. 2021-05-17 15:15:25 +10:00
Dion Moult aeead1c011 Purge old swept solid system. No longer relevant in the land of native IFC. 2021-05-17 14:24:10 +10:00
Dion Moult ba742d5976 Fix #1465. Bump BCF to new namespace. 2021-05-17 14:02:29 +10:00
s-leger 27750e0caf fix is_native_swept_disk_solid logick (#1469)
* Update import_ifc.py

Ensure that at least a raw representation exists before checking for type.

* Update import_ifc.py
2021-05-17 10:02:41 +10:00
s-leger 5b02d3214d Unlink only from relevant collections (#1467)
Objects may be linked to non ifc related collections, so keep those links whatever.
2021-05-17 09:35:14 +10:00
Prabhat Singh 0f55a98b2f Added Module Loader (#1468) 2021-05-17 09:34:31 +10:00
Laurens Oostwegel 13209b6d03 Create mapping to IFC for all CityJSON object types & semantic surfaces 2021-05-16 18:55:00 +02:00
Laurens Oostwegel 411855495e support for CityJSON MultiSurface, CompositeSurface & interior faces for cityjson2ifc convert 2021-05-16 18:16:59 +02:00
Laurens Oostwegel 79ebbb82ef Minor fix in previous commit regarding writing of ifc file 2021-05-16 15:46:31 +02:00
LaurensJN 647a96a655 Update README.md of ifccityjson 2021-05-16 15:36:58 +02:00
Laurens Oostwegel 66d4665498 Instead of using a template ifc file, ifccityjson now uses ifcopenshell.api to create a new file for conversion 2021-05-16 15:32:35 +02:00
Dion Moult 537efdcb53 Continue refactor, and provide user options to regenerate vector base layer / annotation layer of drawings. See #1153. 2021-05-16 23:13:27 +10:00
Dion Moult f2352e9a17 Old annotation systems now creates IFC elements again. Also text and misc annotations now work again with new system. See #1153. 2021-05-16 18:26:48 +10:00
Dion Moult e0b3a87fdb You can now select all products that are part of a group 2021-05-16 11:24:51 +10:00
s-leger ff06f452d5 disable boolean for mesh evaluation (#1466)
Disabling boolean modifier on screen instead of remove / add is enough to get proper mesh representation.
2021-05-16 10:20:56 +10:00
Dion Moult 5aec0718f4 IFC drawings are now roundtrip and are imported as Blender camera objects. See #1153. 2021-05-15 18:05:15 +10:00
Dion Moult fdcafa98b3 Continued grid bugfixing, especially related to export-time syncing. 2021-05-15 12:06:58 +10:00
bosonprojets 1776b19c07 Further fix to task_time durations editing 2021-05-15 02:04:43 +00:00
bosonprojets e1d1dca518 Minor fix to editing task durations 2021-05-14 23:25:54 +00:00
bosonprojets e8ab4dcc14 Improved UX for editing task durations 2021-05-14 23:04:51 +00:00
Dion Moult 41443d1a64 Fix bunch of bugs related to grid name syncing, axis deleting, copy axes and grid deletion 2021-05-14 20:19:30 +10:00
Dion Moult 13c642c6ab A little progress on refactoring the old drawing module into an IfcConvert based system. See #1153. 2021-05-14 17:49:24 +10:00
bosonprojets c40f07f9b5 Minor fix for editing Work Schedule Attributes 2021-05-14 07:40:54 +00:00
Dion Moult ae7d123aa2 Qto module now has various qto methods you can do to bulk populate quantities 2021-05-14 15:13:40 +10:00
Dion Moult 7c6e7996ff Improve the costing UI to format numbers properly and not take up so much space for cost components 2021-05-14 15:13:40 +10:00
ahladik 6ec23faf26 A few fixes of types and a typo (#1464) 2021-05-13 21:11:19 +02:00
Thomas Krijnen 81ad689478 #841 missing return value 2021-05-13 10:09:09 +02:00
Dion Moult b3c918f15f Implement load management and assigning activities with named loads. Thanks Jesusbill! 2021-05-13 18:04:50 +10:00
Dion Moult de7ddd9b97 You can now filter products assigned to a cost item or schedule 2021-05-13 15:54:26 +10:00
Dion Moult 66862a6cba You can now copy cost values from one cost item to another 2021-05-13 15:11:45 +10:00
Dion Moult 4e014d1a10 New utility functions for copying and deep copying IFC elements 2021-05-13 15:11:18 +10:00
Dion Moult 3b33977acc Linked cost item products now auto update cost quantities upon assignment and unassignment, with user friendly quantity type selection dropdown 2021-05-13 14:25:05 +10:00
Dion Moult 5334d2b754 Refactor pset module to follow the same design patterns as other modules, in preparation for complex property / quantity handling in the future 2021-05-13 11:55:25 +10:00
Jesusbill 75ed4dcdd8 you can now edit a structural connection coordinate system 2021-05-12 17:43:07 +02:00
Prabhat Singh 0276c8271e Prabhat gsoc (#1463)
* Added Pipfile and Pipfile.lock in gitignore

* Added File Structure for v3

* Add files via upload
2021-05-12 22:22:12 +10:00
Dion Moult beb813cb21 Fix bug where related openings are not deleted when you delete a product 2021-05-12 22:20:58 +10:00
Dion Moult 35ceba2e88 Fix #1462. 2021-05-12 19:12:46 +10:00
Thomas Krijnen 64b8eee077 #1461 only check for numbers on basename 2021-05-12 11:04:28 +02:00
Thomas Krijnen 229ba95d4b #1442 no longer create compsolids in extrusions 2021-05-12 09:58:11 +02:00
Thomas Krijnen 3f9e5ca806 respect --orient-shells for tesselated items 2021-05-11 23:09:41 +02:00
Thomas Krijnen cf68cf6f5c new_helper 2021-05-11 22:35:46 +02:00
Thomas Krijnen 34386ea27c Hacky solution to disable schemas to speedup compilation 2021-05-11 22:29:16 +02:00
ahladik ce76d27acc Update Boost download address (#1458) 2021-05-11 14:49:18 +02:00
Dion Moult 353281fa4d Updating a task duration now auto calculates the scheduled finish times based on the working calendar 2021-05-11 11:35:47 +10:00
Thomas Krijnen dd6f593e26 V7_5_2.patch 2021-05-10 21:36:38 +02:00
Dion Moult a9228c0800 Support importing lag times from P6 XML 2021-05-10 21:15:23 +10:00
Thomas Krijnen 5e52abb3cf Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.6.0 2021-05-10 11:47:25 +02:00
Thomas Krijnen 8384235e10 Tree API extensions in wrapper 2021-05-10 11:47:16 +02:00
Dion Moult d98ac8ce89 Implement inherited calendars in the sequencing task tree 2021-05-10 18:40:51 +10:00
Dion Moult 1b4b2a526d Derived durations now calculate working days based on the calendar 2021-05-10 18:34:25 +10:00
Dion Moult b1ed85adda Fix incorrect P6 duration import. Now things finally make sense. 2021-05-10 18:31:49 +10:00
admin 58e9f1baf9 merage 2021-05-10 14:06:18 +08:00
Dion Moult 02bfbf0144 You can now show calendars in the work schedule task tree 2021-05-10 11:34:50 +10:00
Dion Moult 3224c4fc77 New IfcPatch recipe to convert units of an IFC file. See #1247. 2021-05-10 10:39:17 +10:00
Dion Moult 19e67613db New recipe to clean up IFCs that store quantities in properties. 2021-05-10 09:27:31 +10:00
Thomas Krijnen e98771ae09 win build: boost dl dir 2021-05-08 21:51:28 +02:00
Thomas Krijnen 58663769c9 Update boost dl location
https://www.boost.org/users/news/boost_has_moved_downloads_to_jfr.html
2021-05-08 14:15:43 +02:00
Thomas Krijnen 28081f7df8 Fixes for spatial tree on iterator and positive extend param 2021-05-08 13:04:22 +02:00
Dion Moult a80fbdbc1d Implement arithmetic formulas for cost value components 2021-05-08 12:18:27 +10:00
Dion Moult 46bc688f26 Fix bug where empty material slots caused errors 2021-05-08 08:57:33 +10:00
Dion Moult f9b79b4beb Implement add / remove load groups, and half implement structural activities. Thanks Jesusbill and ihabelaghoury 2021-05-07 18:41:03 +10:00
Dion Moult 15927dd501 Refactor cost operator to use helpers 2021-05-07 15:10:45 +10:00
Dion Moult 7919c193b8 Minor improvement to deep purging for removing work schedules 2021-05-07 11:16:05 +10:00
Dion Moult 6492b93c69 Minor fix 2021-05-07 10:58:12 +10:00
Dion Moult 992474fbf2 Minor structural code review 2021-05-06 18:24:13 +10:00
Dion Moult 8a3e023408 Fix unfinished time/date/duration handling in edit task time, work plan, work schedule, and finally refactor attribute i/o like I promised 2021-05-06 17:14:28 +10:00
Jesusbill a13b257452 add point orientation - wip 2021-05-06 08:43:12 +02:00
Jesusbill 3f9842e358 extend structural api data for loads 2021-05-06 08:32:49 +02:00
bosonprojets 764b880ea8 Fix MSProject relationship_id issue at import 2021-05-06 06:19:40 +00:00
bosonprojets a10f4c070a Fix MSProject calendar day mapping at import, and add relationship type display in blenderBIM 2021-05-06 06:08:21 +00:00
Dion Moult 114214e2a1 Implement natural sorting for task trees, and support nested tasks in MS Project XML imports 2021-05-06 14:23:20 +10:00
bosonprojets d19d4fca3e FEature to import Microsoft Project .xml Schedules and convert to IFC schema 2021-05-06 02:40:04 +00:00
admin db5432d902 merge master v0.6.0 2021-05-06 09:54:33 +08:00
Jesusbill a031bffe6c you can now add, edit and remove structural load cases 2021-05-05 14:22:18 +02:00
Dion Moult 6ff792d75c Whoops 2021-05-05 18:43:12 +10:00
Dion Moult 6b3393c003 You can now generate construction sequence animations to visualise within a date range 2021-05-05 18:36:28 +10:00
Dion Moult da5a2625a9 New feature to visualise construction progress at a particular date 2021-05-05 17:07:17 +10:00
Dion Moult a1eb2a1ec3 Fix identification sorting issue of construction sequencing task trees 2021-05-05 12:49:22 +10:00
Dion Moult 403412e088 Support importing activity and calendar assignments from P6 2021-05-05 12:48:48 +10:00
Dion Moult ee46e76340 Derive start and finish dates and elapsed durations where possible in the task tree 2021-05-05 11:59:33 +10:00
Dion Moult 925c40c6ba Fix duration type when importing durations from P6 2021-05-05 11:58:36 +10:00
Dion Moult dea844dcf6 Fix purging when removing tasks 2021-05-05 11:57:47 +10:00
Dion Moult 018d754b2e Fix P6 WBS identification import 2021-05-05 10:16:25 +10:00
Dion Moult a05d017341 Implement adding, editing, and removing time lags to sequence relationships 2021-05-04 20:56:19 +10:00
Dion Moult f63479c823 Code review and use isodate library to handle durations for robustly 2021-05-04 12:52:14 +10:00
bosonprojets 8a8bdeeaa3 Update to ifcopenshell.util.date for handling of IfcDuration with python and import of Planned Durations from P6 .xml exports in blenderBIM 2021-05-04 00:27:53 +00:00
bosonprojets 6b46ff71a6 Implement feature to select all products related to a task in blenderBIM, and the ifcopenshell.api 2021-05-02 01:44:56 +00:00
bosonprojets d73a5c46ea Add support for editing sequence relationship attributes in blenderBIM 2021-05-01 21:45:27 +00:00
ArturTomczak 037261afb9 IDS Add PredefinedType support (#1447)
* fixed typos

changed all 'applicabiliy' to 'applicability'

* added boolean restriction

* Add PredefinedType support

* replace f-string with %

* skip PredefinedType if not IFC4

* code formatting

* check PredefinedType if exists not based on schema

* narrow try-except

* remove debug data
2021-05-01 09:09:35 +02:00
Dion Moult be87b17909 Support importing P6 sequence types and new view sequences UI 2021-04-30 21:34:18 +10:00
atom3 5419d72a6a remove debug data 2021-04-30 11:31:23 +02:00
atom3 9ca1e011e5 narrow try-except 2021-04-30 11:06:36 +02:00
Dion Moult 932a21309f Support assigning work calendars to tasks 2021-04-30 17:40:00 +10:00
atom3 3b806a5466 check PredefinedType if exists not based on schema 2021-04-30 08:41:33 +02:00
Dion Moult 7a1b35f7e2 Support different versions of P6 XML imports 2021-04-30 15:57:42 +10:00
Dion Moult 79dcf809ed Implement support of importing calendars from P6 2021-04-30 14:53:40 +10:00
bosonprojets 2f53e43b90 Added Usecases to assign, edit and unassign Lag Times to the ifcopenshell.api 2021-04-30 02:21:54 +00:00
Dion Moult cdc9180111 Support root-level activities when importing from P6 XML 2021-04-30 12:04:15 +10:00
atom3 a65a34cfe7 code formatting 2021-04-30 00:09:04 +02:00
atom3 2e0d5fa707 skip PredefinedType if not IFC4 2021-04-29 23:41:22 +02:00
atom3 de40049c9c Merge branch 'GSoC#45-IDS-checking' of https://github.com/atomczak/IfcOpenShell into GSoC#45-IDS-checking 2021-04-29 21:33:51 +02:00
atom3 29fa5bdffa replace f-string with % 2021-04-29 21:33:07 +02:00
ArturTomczak d55ad90319 Merge branch 'v0.6.0' into GSoC#45-IDS-checking 2021-04-29 21:05:26 +02:00
atom3 90ece8a058 Add PredefinedType support 2021-04-29 20:46:55 +02:00
Thomas Krijnen a936a5317d #1445 comment 2021-04-29 16:29:31 +02:00
Thomas Krijnen f5e5ede0fa Revert "Fixes IfcUtil::valid_binary_string so it returns false for an empty string"
This reverts commit 2514e93a8d.
2021-04-29 16:28:16 +02:00
Rick Brice 2d1ddea3d0 Fixes conditional logic 2021-04-29 16:27:57 +02:00
Rick Brice df932b90d6 Adds parsing for Ifc4x3_rc2 schema 2021-04-29 16:27:57 +02:00
Rick Brice 2514e93a8d Fixes IfcUtil::valid_binary_string so it returns false for an empty string 2021-04-29 16:27:57 +02:00
Rick Brice 64e6561828 Initalizes list_ with null points 2021-04-29 16:27:57 +02:00
Thomas Krijnen 76685d236c SVG Fixes to text positioning 2021-04-29 16:16:41 +02:00
Dion Moult fd83564af0 Sorry forgot to commit 2021-04-29 19:37:59 +10:00
Dion Moult 37e3a65ffb Decouple pset APIs from blenderbim namespace 2021-04-29 19:35:21 +10:00
Dion Moult e5cf0cde2d Improve time and date support (don't cast to datetime) and support all recurrence types and time periods in work schedules 2021-04-29 17:52:45 +10:00
Thomas Krijnen 78e4478242 Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.6.0 2021-04-29 07:54:15 +02:00
Thomas Krijnen 3497022c78 SVG Also include annotations in non-floorplans 2021-04-29 07:53:05 +02:00
Dion Moult 810d36781c Add support for editing calendar work and exception times and recurring work times 2021-04-29 13:16:47 +10:00
bosonprojets f8eb1c178a Usecases to edit WorkCalendar Attributes in the ifcopenshell.api 2021-04-29 02:43:14 +00:00
Dion Moult b726ba7816 Simplify work calendar UI 2021-04-29 09:55:50 +10:00
bosonprojets 4ab23d231d Usecase to Unassign object aggregation in the ifcopenshell.api 2021-04-28 12:43:14 +00:00
Dion Moult 00694854af UI clean up for work plans and code review for assign schedules to plan 2021-04-28 17:59:57 +10:00
Dion Moult fa52ed6dbc Fix bug where you might have an activity that is not part of any WBS from P6 2021-04-28 16:54:54 +10:00
Dion Moult 319b59a266 Fix bug where sometimes migrating an IFC file schema version can explode in filesize 2021-04-28 16:53:38 +10:00
Dion Moult 357fcded71 Implement OAuth authorization in the bSDD library 2021-04-28 13:27:31 +10:00
bosonprojets c3cc5881df Aggregate WorkSchedules to WorkPlans 2021-04-28 02:17:08 +00:00
atom3 ca34c95057 added boolean restriction 2021-04-28 00:25:08 +02:00
atom3 5078db8b26 fixed typos
changed all 'applicabiliy' to 'applicability'
2021-04-28 00:10:13 +02:00
Dion Moult 56046dd6f9 Cost quantities that are counting that have controlled products now automatically count the number of products for convenience 2021-04-27 14:45:14 +10:00
Dion Moult 9164a7bcc3 Support importing predecessor and successor relationships from P6 2021-04-27 12:30:09 +10:00
Dion Moult e0a5c9c8f3 You can now assign derived quantities from products to cost items 2021-04-27 12:09:52 +10:00
Dion Moult 22e087c82a Fix #1443 bug where UI update of type name was not refreshed when you changed it 2021-04-26 19:46:27 +10:00
Dion Moult 57396e1bb9 Make cha-ching noise whenever you're checking out cost schedules 2021-04-26 18:46:35 +10:00
Dion Moult 389076bff4 Implement feature for manipulating cost values, with support for calculation of subtotals 2021-04-26 18:18:42 +10:00
Dion Moult bfcc067257 New feature to manipulate cost item quantities 2021-04-26 12:41:19 +10:00
Dion Moult f88ac5de62 Minor code review to assign / unassign resource products 2021-04-26 09:38:45 +10:00
bosonprojets cdd456bede Assign and Unassign resources to scene objects in BlenderBIM 2021-04-25 23:25:05 +00:00
bosonprojets 7041d17c16 Unassign Resources Usecase added to the ifcopenshel.api 2021-04-25 22:59:01 +00:00
Dion Moult de842f7aba Code review with myoualid for IFC resource module 2021-04-25 12:29:11 +10:00
bosonprojets 6107c39c1c Update to IfcResources panel and authoring subtypes of IfcConstructionResource with ifcopenshell.api 2021-04-24 23:34:38 +00:00
Thomas Krijnen 9584687fcf Ensure solid from tapered extrusions 2021-04-24 20:47:25 +02:00
Thomas Krijnen b231e9051b Update main.py 2021-04-24 15:23:36 +02:00
Thomas Krijnen 40f9875930 Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.6.0 2021-04-24 14:19:10 +02:00
Thomas Krijnen 328773550d SVG: Text annotations in elevations 2021-04-24 14:18:53 +02:00
Dion Moult 303544dc5c Merge branch 'v0.6.0' of github.com:IfcOpenShell/IfcOpenShell into v0.6.0 2021-04-24 20:32:10 +10:00
Dion Moult 1c66f986cc Implement basebones bSDD API client library. 2021-04-24 20:31:50 +10:00
Thomas Krijnen e801629f86 Add BRepExtrema_DistShapeShape option to tree with extend keyword 2021-04-24 11:06:13 +02:00
Thomas Krijnen 74bbd6d116 Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.6.0 2021-04-24 11:05:31 +02:00
Thomas Krijnen e06794ef3d #1153 SVG OBB check 2021-04-24 11:05:18 +02:00
bosonprojets cd7062c905 UX layout for IfcResources in blenderBIM 2021-04-24 05:59:17 +00:00
LaurensJN 42d476cbb0 Replace old naming of ifccityjson README.md 2021-04-23 17:12:29 +02:00
Laurens Oostwegel cd0d3908d3 Add ifccityjson to start with supporting conversions between IFC and CityJSON files 2021-04-23 17:05:59 +02:00
Thomas Krijnen cb70f97789 Update ids.py 2021-04-23 12:14:52 +02:00
Thomas Krijnen 572ed0db0f Update ids.py 2021-04-23 12:13:41 +02:00
Dion Moult 43d78af767 Fix crash when pressing undo after assigning an IFC class to an object. Baby steps to solving the "Undo Sync". 2021-04-23 17:44:50 +10:00
bosonprojets c7aa42bfd5 Feature to Add Crew Resources and SubContract Resources with the ifcopenshell.api and blenderB 2021-04-23 06:38:11 +00:00
ArturTomczak 3104743a02 Merge pull request #1 from IfcOpenShell/v0.6.0
Upstream update
2021-04-22 15:35:05 +02:00
Dion Moult 18d7193efc Fix bug where a new Blender file would remember old pset templates and libraries 2021-04-22 18:37:41 +10:00
Dion Moult 8da92557cc Fix bug where deletion syncing may fail on freshly created objects 2021-04-22 18:37:03 +10:00
Dion Moult 761b4c035f Optimisations for construction sequencing task trees where there are thousands of tasks 2021-04-22 18:34:45 +10:00
Dion Moult ee0f7f1677 You can now import an IFC work schedule from a P6 XML export 2021-04-22 15:44:58 +10:00
Dion Moult dca2e58586 Fix bug where you shouldn't be able to reassign classes of non-rooted elements 2021-04-22 14:00:18 +10:00
Dion Moult 3810255f04 Fix bug where syncing was not maintained across file saves and collection names were not synced 2021-04-22 13:56:01 +10:00
Dion Moult d3ca647cd5 Minor code review fix 2021-04-22 10:53:25 +10:00
bosonprojets 8b35a3aadd Assign control to cost items and UX Workschedules and Costchedules cleanup 2021-04-22 00:18:22 +00:00
Dion Moult 78314b1ec7 Forgot to commit append_asset usecase, also minor fixes 2021-04-21 20:49:58 +10:00
Dion Moult ef88b30639 Fix bug where import mesh cleaning would inadvertently mark meshes as edited 2021-04-21 20:40:45 +10:00
Dion Moult 5e815e7832 You can now append object types from an IFC project library to your active project 2021-04-21 16:45:11 +10:00
Dion Moult e7b153cbf6 You can now generate gantt charts from work schedules 2021-04-21 12:57:31 +10:00
Dion Moult 9b855bed2d Implement unassigning products to tasks 2021-04-21 11:53:33 +10:00
Dion Moult 3143f8c9a5 Code review for assign product with myoualid 2021-04-21 11:11:08 +10:00
Dion Moult 8dd781aea2 Fix bug where you couldn't assign objects to a fresh layer 2021-04-21 11:03:36 +10:00
bosonprojets 0506475f26 Feature to add building elements to construction scheduling tasks in blenderBIM and assign product to process with the ifcopenshell.api 2021-04-20 23:51:55 +00:00
Dion Moult ac092fb6f8 Minor fix - add dateutil as dependency 2021-04-21 09:14:57 +10:00
Dion Moult 9beddca2f7 You can now toggle showing time columns in work schedule, minor fixes and ui cleanup 2021-04-20 23:34:10 +10:00
Dion Moult 6d9770542f Fixes to editing task times 2021-04-20 17:11:06 +10:00
bosonprojets 544d6ee695 Add IfcTaskTime to IfckTask 2021-04-20 05:13:03 +00:00
Dion Moult b8963b3d6e You can now modify project context declarations for project libraries, denoting which assets are part of the library 2021-04-20 13:51:41 +10:00
Dion Moult f2bd46d699 Selecting an IFC file dialog now filters ifc files for convenience 2021-04-20 12:45:42 +10:00
Dion Moult 8ac8ad33b3 You can now load and browse a tree of project library types products 2021-04-20 12:45:20 +10:00
Dion Moult 44bbd17d97 Collection assignment is now synced on export, so you don't need to manually manage your tree 2021-04-19 16:08:57 +10:00
Dion Moult 8f0e67a35b You can now assign task successor and predecessors. Sweet. Thanks myoualid! 2021-04-19 13:09:00 +10:00
Dion Moult d2d4112724 Clean up UX to either edit a work schedule attributes or task tree but not both simultaneously 2021-04-19 11:42:39 +10:00
Dion Moult 209eea6a18 You can now edit tasks. Thanks myoualid! 2021-04-19 11:10:49 +10:00
Dion Moult 85426b3fef Minor tweak 2021-04-19 10:41:25 +10:00
Thomas Krijnen c602f0f233 Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.6.0 2021-04-18 15:06:34 +02:00
Thomas Krijnen bb6312e174 #1153 --svg-without-storeys and correct positioning and scale based on annotation block 2021-04-18 15:03:28 +02:00
Dion Moult d6d70af5a0 You can now copy classes in bulk. 2021-04-18 20:24:08 +10:00
Dion Moult 8187c75183 If you are already authoring a file, exporting now no longer prompts for a file location. 2021-04-18 20:17:54 +10:00
Rick Brice 01cfcebb09 Fixes problem with dereferencing the end iterator for empty std::string objects 2021-04-18 12:00:48 +02:00
Rick Brice 75040b6ffb Fixes initialization issues in IfcEntityInstanceData constructors
attributes_ was allocated as an array of Argument pointers but the pointers were uninitialized in the construction. Initialization was done in the HeaderEntity class constructor.

offset_in_file_ is uninitialized in one constructor
2021-04-18 12:00:48 +02:00
Dion Moult 6c8858e51d Fix bug where edit mode syncing didn't work if you edited many objects at once 2021-04-18 19:58:07 +10:00
Dion Moult 6bb63817af Fix #1435. Fix bug where box reps could be duplicated upon adding a new body, and ensure all styles are created prior to adding new body geometry. 2021-04-18 19:28:05 +10:00
Dion Moult 1e299a0ddd Make remove_deep_batched the default since I'm the only guy using it so far and I'm feeling lucky! Let's battle test it! 2021-04-18 19:02:39 +10:00
bosonprojets 3201c234fa Feature to create IfcTask trees for entities of IfcWorkSchedule 2021-04-18 00:49:43 +00:00
Dion Moult f5d27621e7 Fix #1436. Bug where saving is done twice in authoring mode. 2021-04-17 20:18:01 +10:00
Dion Moult 3e1eb9648f Fix showstopper bug with editing pset templates module 2021-04-17 17:59:12 +10:00
bosonprojets 5f9474acb7 Feature to add multiple summary cost items and remove cost items 2021-04-15 23:16:32 +00:00
Dion Moult f4e6e924b1 Spaces are now always imported, and consistent with the rest of the spatial tree. Yes, I don't know why I held off for so long. Deprecate "import spaces". Spaces are important. 2021-04-15 19:56:18 +10:00
Dion Moult bcfc97037c Spatial aggregations are auto assigned when you create them. Neat. 2021-04-15 19:33:01 +10:00
Dion Moult 65d0abd072 Material profile set usages are now supported. Hooray! Thanks Jesusbill! 2021-04-15 18:38:51 +10:00
Thomas Krijnen 776c68e2b0 --svg-write-poly 2021-04-15 10:36:37 +02:00
Dion Moult dab2d5ce04 You can now toggle expansion of the cost item tree 2021-04-15 11:14:03 +10:00
Dion Moult 29b33661d7 You can now assign summary tasks to a work schedule. Thanks myoualid! 2021-04-15 10:38:45 +10:00
Sigma Dimensions 5dec636584 New Feature to add Tasks and Task Relationships in the python ifcopenshell API (#1432) 2021-04-15 09:40:29 +10:00
Dion Moult d11b91f152 Fix bug where adding a new material didn't make it immediately available 2021-04-14 18:41:13 +10:00
Dion Moult b0fc98e384 Fix bug where Blender prop enums persisted when starting new files 2021-04-14 18:41:13 +10:00
Tigran Khachatryan 56f09d2541 Broken link fixes
Links to Open Cascade were broken
2021-04-13 16:57:15 +02:00
Tigran Khachatryan 4484b77232 broken link fix
OCCT download link has changed
2021-04-13 16:57:15 +02:00
Dion Moult f6c054066b You can now assign spatial containers in bulk 2021-04-13 20:09:01 +10:00
Dion Moult d5c70e51f2 You can now edit structural member axis orientations. Thanks Jesusbill! 2021-04-13 13:04:05 +10:00
Dion Moult cab9e4d892 You can now assign aggregates in bulk 2021-04-13 08:25:43 +10:00
admin 397b6ae5fe merage master v6.0.0 2021-04-12 10:26:10 +08:00
Dion Moult 14cd8289ea You can now create IFC project libraries 2021-04-11 21:56:45 +10:00
Dion Moult 4202c08487 You can now select stuff like doors / windows instead of having to select the opening element itself when adding voids, with some assumptions. See #1426. 2021-04-11 21:15:39 +10:00
Julien Moutinho a70fb41652 blenderbim: fix reference before assignment in PieAddOpening (#1426)
Co-authored-by: Julien Moutinho <julm+blenderbim@sourcephile.fr>
2021-04-11 20:52:42 +10:00
Dion Moult df437fd3e3 You can now add cost items into a cost schedule, and as sub items to a parent cost item. Thanks myoualid and Jesusbill! 2021-04-10 20:40:35 +10:00
Dion Moult 3102dbcd44 Fix bug where you couldn't add a presentation layer 2021-04-10 20:01:37 +10:00
Dion Moult 9d838db096 You can now edit cost schedule attributes. Thanks Jesusbill and myoualid! 2021-04-10 18:10:33 +10:00
johltn 0c9d555693 Handle more restrictions, save validation results to JSON objects, modification to classification class, and partly handle material terms 2021-04-09 10:56:52 +02:00
johltn 4b637c7049 Typo fix 2021-04-09 10:56:52 +02:00
Dion Moult fd3a873bbd Fix bug where you couldn't do a partial import when whitelisting only spatial elements 2021-04-09 15:43:41 +10:00
Dion Moult 5cea988911 You can now assign parameterized profiles to material profiles. Thanks Jesusbill! 2021-04-08 21:03:37 +10:00
Dion Moult 70fcbfa990 Fix bug where extrusion direction was incorrectly detected for some automagic mesh to parametric solid conversions 2021-04-08 17:15:05 +10:00
Dion Moult c541aa78e5 Fix bug where syncing upon export was broken 2021-04-08 12:22:59 +10:00
Dion Moult b821e62391 You can now add/remove material profiles in a profile set. Thanks Jesusbill! 2021-04-08 08:57:45 +10:00
Dion Moult 41141b8fc9 Geolocation micromvd now supports checking true north 2021-04-07 16:08:02 +10:00
Dion Moult ae0789e4ec New assign / unassign declaration usecase, minor code & formatting cleanup 2021-04-07 13:15:16 +10:00
Sigma Dimensions 13d4a99358 Feature to manipulate Work Calendars (#1420) 2021-04-07 09:51:20 +10:00
Sigma Dimensions becb375ec2 Feature work schedule (#1419)
* ifcopenshell.api modules Persons and Organisations account for IFC4 SCHEMA CHANGE

* New Feature to manpiulate Work Plans
2021-04-07 09:31:16 +10:00
Sigma Dimensions a777a558bd Feature edit work plan (#1418)
* ifcopenshell.api modules Persons and Organisations account for IFC4 SCHEMA CHANGE

* New Feature to Edit Workplans
2021-04-07 09:04:57 +10:00
Bruno Postle de37aeb515 faces in DXF polyfacemesh objects can have three or four sides (#1414) 2021-04-07 08:28:11 +10:00
Sigma Dimensions 23be1a6939 ifcopenshell.api modules Persons and Organisations account for IFC4 SCHEMA CHANGE (#1417) 2021-04-07 08:28:02 +10:00
Dion Moult 8edced5a0c Fix bug where rotation check in geolocation micromvd broke in the last release 2021-04-07 08:03:01 +10:00
Dion Moult 21937e88e8 Hotfix 2021-04-05 21:20:05 +10:00
Thomas Krijnen f7da83737a SVG fix bug in point interpolation 2021-04-04 22:34:16 +02:00
Thomas Krijnen 27663d80ba SVG sample more points for space name position check 2021-04-04 21:15:13 +02:00
Thomas Krijnen 4ec5d4fc65 Don't fail on lack of IfcAnnotation 2021-04-04 21:06:38 +02:00
Dion Moult 2b34ca9eb7 Minor fix 2021-04-04 12:59:39 +10:00
Dion Moult 2bb9810072 Bump IfcOpenShell 2021-04-04 12:54:08 +10:00
Dion Moult c7e87324de Fix bug where Blender floats lost precision for geolocation. Everything is now a string. 2021-04-04 12:43:41 +10:00
Dion Moult ec62d8fbb9 Fix bug where assigning a spatial container didn't update the object placement tree 2021-04-04 09:02:14 +10:00
Dion Moult 7b5aae9487 Implement getting and setting true north rotation independent of grid north 2021-04-04 08:58:24 +10:00
Dion Moult 12c94fafab Minor code shuffling to reflect the fact that projected CRS has a higher priority than map conversion 2021-04-03 22:05:20 +11:00
Dion Moult 09be170820 Geolocation utilities now support converting either X axis or Y axis to an angle 2021-04-03 21:58:35 +11:00
Dion Moult 966af5a757 You can now add / remove cost schedules 2021-04-03 19:46:52 +11:00
Thomas Krijnen 89557460c8 SVG text annotation descriptions 2021-04-02 21:59:49 +02:00
Thomas Krijnen 2bad6b2722 yet another todo note 2021-04-02 21:25:01 +02:00
Thomas Krijnen e5cd30c6d0 SVG dimension text offset depending on scale 2021-04-02 21:21:27 +02:00
Thomas Krijnen 6f2da2896e try catch convert_placement() 2021-04-02 21:20:53 +02:00
admin 72fdca9e82 merage 2021-04-01 16:41:28 +08:00
Dion Moult 0387c778f4 Fix bug where you couldn't add type instances for IFC4 2021-04-01 15:03:42 +11:00
Dion Moult 76568ea67c Fix bug where express has a typo that broke the ability to add ifc transformers 2021-04-01 14:55:10 +11:00
Dion Moult 8e2a1a1649 A reference graph view context is now created automatically for convenience when you create an analytical model 2021-04-01 12:06:25 +11:00
Dion Moult cb5f57d68a Point connections are now treated as regular geometry, not an edge case (get it?). See #1409. Thanks @Jesusbill! 2021-04-01 11:58:46 +11:00
Dion Moult e7c6f28312 You can now add structural connections to members 2021-04-01 11:09:44 +11:00
Jesusbill 1820f72bc4 You can now remove structural connection conditions + minor mods 2021-03-31 18:58:02 +02:00
Dion Moult 1631dc39f5 You can now add and remove work plans with a new UI. Thanks @bosonprojets and @jesusbill! 2021-03-31 11:35:40 +11:00
Dion Moult d2f19e7c28 You can now edit structural boundary conditions on member connections 2021-03-30 12:00:25 +11:00
Jesusbill 736703336c work on structural connection conditions 2021-03-30 01:12:33 +02:00
Dion Moult 44df1f676d Finish decoupling ownership history code from Blender 2021-03-29 16:53:11 +11:00
Dion Moult f1ffb81c86 See #841. Minor optimisation and fixes. Thanks @ecke101 ! 2021-03-29 13:55:05 +11:00
Thomas Krijnen 08ec3fc73f SVG --space-name-transform 2021-03-28 22:16:58 +02:00
Thomas Krijnen f1d7cf1dfb SVG --storey-height-line-length 2021-03-28 21:38:29 +02:00
Thomas Krijnen 1ee488b148 Quick solution for inline dasharray 2021-03-28 16:55:52 +02:00
Thomas Krijnen ecb9827e7f Explicit cast 2021-03-28 13:04:16 +02:00
Thomas Krijnen 88f26eaead Work towards #1153 2021-03-28 12:48:20 +02:00
Dion Moult ce03742aab New ifcopenshell.api.run syntax, and rename create_product to create_entity. See #1399. 2021-03-27 22:53:13 +11:00
Thomas Krijnen 62540f0b00 #1404 2021-03-27 10:00:41 +01:00
Dion Moult 406b8b4540 IfcOpenShell API now uses kwargs to improve user syntax. See #1399. 2021-03-27 19:14:46 +11:00
Dion Moult ca24838a3f Don't load OCC upon startup, in preparation for deprecation when IfcConvert can handle #1153. See #1400 and #1358. 2021-03-27 18:38:20 +11:00
Thomas Krijnen ff7219b557 CMake < 3.7 compatibility
See https://github.com/glfw/glfw/issues/1584
2021-03-26 20:40:01 +01:00
Jesusbill 711acfe120 revert erroneous mod from bulk change 2021-03-26 17:51:35 +01:00
Dion Moult f1acda85c9 Call the daily builds "developer testing builds" to prevent misleading users 2021-03-26 20:52:32 +11:00
Dion Moult 228f62d218 Minor fix 2021-03-26 20:49:57 +11:00
Dion Moult 6186a88568 Rename misleading "ifcblenderexport" directory to "blenderbim" 2021-03-26 20:44:14 +11:00
Dion Moult 074a8c287f Support owner histories for a bunch more usecases. About half done. 2021-03-26 10:39:07 +11:00
Dion Moult d4736710a5 Thanks @ihabelaghoury! You can now select objects in the viewport by GlobalId from the IFC inspector 2021-03-25 20:29:37 +11:00
Dion Moult 0bc86631a5 Minor fixes after the refactor mess 2021-03-25 20:19:48 +11:00
Dion Moult 9751b6af05 Deletions are now synced on export, so you don't need to delete via the UI. 2021-03-25 16:48:58 +11:00
Dion Moult 6d641aaac1 Still cleaning up related to ownership histories. See #1399. 2021-03-25 16:32:43 +11:00
admin 29b8e67bc8 merge all 2021-03-25 10:04:25 +08:00
Dion Moult 489a248e9a Refactor ownership history system to be simpler and just a usecase. See #1399. 2021-03-25 11:42:12 +11:00
Jesusbill 9c00872a57 replace settings=None with {} 2021-03-25 00:54:42 +01:00
Dion Moult d77bc6bdaa First attempt at ripping out agnostic code into ifcopenshell.api namespace. See #1399. 2021-03-25 10:48:48 +11:00
Priit Laes 911d703f57 build: Use -Wno-deprecated-copy for GCC 9+
OpenCascade causes a lot of warnings due to -Wdeprecated-copy on GCC 9+.
These warnings are also emitted with clang, but only once per file.
2021-03-24 09:25:13 +01:00
Dion Moult 09bf5b85aa Refactor getting primitive data type into util 2021-03-24 16:09:29 +11:00
Dion Moult 41a694d0dc Fix bug where you couldn't set logical properties in psets. See #1086. 2021-03-24 14:57:52 +11:00
Jesusbill 6232ee36f9 add structural connection connected members - wip 2021-03-24 00:15:22 +01:00
Jesusbill 5b1cc2cab5 rename connection to boundary condition + minor edits 2021-03-24 00:10:07 +01:00
Thomas Krijnen f706adfb81 OCCT pre 7 compatibility 2021-03-23 13:27:31 +01:00
Thomas Krijnen b0358a5a7b Keep a set of visited edges in sort 2021-03-23 10:43:12 +01:00
Thomas Krijnen eb09cc8af8 Costrain number of edges in sorted_edges 2021-03-22 14:03:24 +01:00
Dion Moult 7c61c7d200 You can now import and export IFCCSV to the current file in memory without writing to disk 2021-03-22 16:19:29 +11:00
Dion Moult 92d28901ac Fix bug where IFCCSV delimiter was not able to be specified on read/write properly 2021-03-22 15:35:17 +11:00
Dion Moult 32769184b0 Attempt number 4 2021-03-21 20:13:27 +11:00
Dion Moult de7f1d9d46 Attempt number 3 2021-03-21 20:10:53 +11:00
Dion Moult cbd0c8a410 Attempt number 2 2021-03-21 20:07:40 +11:00
Dion Moult f4f40c4b16 Fix fatal bug with BIMTester where languages were not bundled in installation. 2021-03-21 20:04:24 +11:00
Dion Moult f9d70fd51d Whoops 2021-03-21 12:13:42 +11:00
Dion Moult bb43405299 Fix #1294 bug where BIMTester doesn't run if you have multiple drives on Windows. Thanks @rbertucat! 2021-03-21 12:07:27 +11:00
Priit Laes 00cb3cd0db travis: Bump to Ubuntu 20.04, Python3 and use apt addon as well 2021-03-20 10:58:47 +01:00
Priit Laes 823f988536 travis: Use system JSON package 2021-03-20 10:58:47 +01:00
Priit Laes d95977a784 travis: Simplify directory "shuffling" 2021-03-20 10:58:47 +01:00
Priit Laes 4f9991fb13 travis: Use make -j $(nproc) 2021-03-20 10:58:47 +01:00
Priit Laes d8b2cc77cc travis: Enable ccache 2021-03-20 10:58:47 +01:00
Priit Laes 077f9b701d ifcgeom: Remove unneeded cast causing warning by -Wignored-qualifiers 2021-03-20 10:56:57 +01:00
Priit Laes 36ade628cf Fix grammar 2021-03-20 10:56:57 +01:00
Priit Laes 0f59f3e35a ifcgeom: Remove unused variable 2021-03-20 10:56:57 +01:00
Priit Laes 31e7bad056 ifcgeom: Reorder the members in constructors to avoid side effects (Wreorder) 2021-03-20 10:56:57 +01:00
TestPrab eee693dfcb Added requirements file (#1397) 2021-03-20 20:31:36 +11:00
Dion Moult 4a8e03862b Improve usability that you can run a patch recipe without providing arguments. See #1393. 2021-03-20 20:04:10 +11:00
Dion Moult 04f7fc0bdb Minor fix 2021-03-20 20:02:53 +11:00
Dion Moult fbe9bb1ee2 Fix bcf bug for optional project.bcfp and optional project data 2021-03-20 17:56:43 +11:00
Jesusbill ca59b3220b small fix and mod in ifc2ca 2021-03-19 23:39:25 +01:00
Jesusbill 39c8c8db37 small fix and mods 2021-03-19 23:38:28 +01:00
Dion Moult f49de02ab7 Minor purge 2021-03-19 11:04:27 +11:00
Dion Moult 8b0a7821b1 You can now view / add / edit / remove structural boundary conditions 2021-03-19 10:55:52 +11:00
Dion Moult 0f365cadbd Experimental code for (currently slow) native faceted brep handling. See #841. 2021-03-18 19:02:54 +11:00
Dion Moult 0bc76b1af7 Reimplement lost feature from refactor - native handling of swept disks (mostly rebar) in Blender during import 2021-03-17 12:39:35 +11:00
Cyril Waechter efce28c053 Fix: get_applicable return empty generator (#1390)
`PsetQto.get_applicable` was returning an empty generator when called
multiple times. Combination on lru_cache and generator seems to lead to
this unwanted behavior.
It now returns a list to keep gains of lru_cache performance.
2021-03-17 09:23:06 +11:00
Dion Moult 071505038d Fix #1388. Extract elements IfcPatch recipe now retains aggregation relationships. 2021-03-16 21:48:17 +11:00
Dion Moult 98938acb26 Fix bug where nested aggregates were not nested in the Blender scene during import 2021-03-16 20:48:12 +11:00
Jesusbill 4817360ecd place structural elements in dedicated collections 2021-03-16 01:05:25 +01:00
Dion Moult b8e3fbba8c You can now import structural point connections. 2021-03-15 21:02:25 +11:00
Dion Moult 49ea774851 Export auto syncs edited meshes if authoring mode enabled. See #1360. 2021-03-15 20:32:47 +11:00
Dion Moult f4f2a3d24e Object placements are now updated on export in case you forgot to sync them in authoring mode. See #1360. 2021-03-15 18:58:32 +11:00
Dion Moult a25ca91ba6 Fix fundamental coordinate placement resolution utility bug. See #688. 2021-03-15 18:58:32 +11:00
Jesusbill fded9b3523 avoid warning for structural analysis entities
regarding spatial hierarchy
2021-03-15 01:41:29 +01:00
Jesusbill 9257f275af Import structural curve connections + small fixes 2021-03-15 01:39:35 +01:00
Priit Laes 40039e65df Ivccsv fixes (#1385)
* ifccsv: Fix reference to invalid variable

* ifccsv: Remove unused import
2021-03-15 08:20:51 +11:00
Priit Laes dbce9ec049 actions: ci: Skip installing recommended packages
Not much, but still small improvement:
6 upgraded, 138 newly installed, 0 to remove and 43 not upgraded.
6 upgraded, 135 newly installed, 0 to remove and 43 not upgraded.
2021-03-14 16:42:09 +01:00
Priit Laes b9c5c28c54 actions: ci: Use single apt install call
Reduces time for this step ~10%
2021-03-14 16:42:09 +01:00
Priit Laes 184a189f2a actions: ci: Enable ccache
Reduces build time with full cache from 20 to ~3 minutes.
2021-03-14 16:42:09 +01:00
Thomas Krijnen 37f549927d Update ci.yml 2021-03-14 12:29:05 +01:00
Thomas Krijnen a5fe3e77e7 Update ci.yml 2021-03-14 11:59:36 +01:00
Dion Moult 708da97bbd New IFC authoring mode - when enabled, exporting the IFC auto saves the Blender file too. See #1360. 2021-03-14 20:38:25 +11:00
Thomas Krijnen f80792091f #1290 Consider dimensionality in geometricset processing 2021-03-14 10:22:43 +01:00
Dion Moult a1e34b0acb Fix bug on Windows where sometimes, the body representation wouldn't be loaded by default. See #1290. 2021-03-14 19:34:18 +11:00
Thomas Krijnen e618232e70 clone --recursive in build-all.py 2021-03-14 09:32:38 +01:00
Dion Moult 922fc2beda Build fix 2021-03-14 18:04:57 +11:00
Dion Moult 4564ee3476 Fix bug where you couldn't add layers to a fresh project 2021-03-14 10:27:12 +11:00
Priit Laes 510dca1aca build: actions: Don't hardcode parallel builds to 10 in release workflow
And convert from deprecated `backtick` syntax to POSIX-compatible $(...)
2021-03-13 15:00:46 +01:00
Dion Moult 5604db8072 The IFC Debug inspector now also shows inverse references, great for debugging IFC2X3 or style relationships 2021-03-13 22:21:44 +11:00
Thomas Krijnen 5961253c29 #1376 remove_deep_batched() 2021-03-13 12:16:40 +01:00
Thomas Krijnen 624e296d24 #1368 fix layerset folding: check length thichkness ratio 2021-03-13 10:05:33 +01:00
Dion Moult 6ad605fbeb Minor fix 2021-03-13 10:11:17 +11:00
Dion Moult 797a5ec1a0 You can now delete objects in bulk 2021-03-13 09:58:22 +11:00
Dion Moult d56869d341 Create build on every commit to see what happens 2021-03-12 10:15:01 +11:00
Dion Moult 405e8bc5aa You can now automagically create arbitrary polygonal profiles with voids from meshes 2021-03-11 21:57:47 +11:00
Dion Moult b607242339 You can now add/edit/remove/assign/unassign structural analysis models 2021-03-11 10:46:55 +11:00
Dion Moult f57aa77ac2 You can now import structural curve members (again) 2021-03-10 21:18:55 +11:00
Dion Moult 01cc1887e0 Readd support for creating structural curves representations (vertex still WIP) 2021-03-10 21:10:00 +11:00
Dion Moult 003441a451 Add support for nano and micro meter units 2021-03-10 20:59:18 +11:00
Dion Moult 4b64f09aaa Fix #1370. Bug where loading pset templates makes it unable to install on Windows. 2021-03-10 20:28:08 +11:00
Dion Moult 4afcca8550 Adding drawings now creates groups and psets. Also very basic operator added to call IfcConvert from UI. See #1153. 2021-03-10 17:48:06 +11:00
Dion Moult 1a7ea1ea05 Provide upgrade / uninstall instructions to prevent users hitting that remove error message 2021-03-10 17:48:06 +11:00
Thomas Krijnen 5616a6ede5 SVG Ugh, fix transform syntax 2021-03-09 20:40:18 +01:00
Thomas Krijnen 28fa774a9a SVG --draw-storey-heights=left option 2021-03-09 16:11:42 +01:00
Thomas Krijnen 52d4fa4781 #1363 todo note 2021-03-09 09:57:18 +01:00
Thomas Krijnen 9258dc3104 IFC2X3 IfcAsymmetricIShapeProfileDef fillet radii 2021-03-09 09:55:40 +01:00
Thomas Krijnen 469fb9c204 SVG small fix 2021-03-09 09:52:47 +01:00
ahladik f7175a67c8 Shorten Boost pathnames and fix IfcParse::IfcSIPrefixToValue() (#1364) 2021-03-09 09:11:06 +01:00
Dion Moult ebfaeafeee You can now bulk assign / unassign construction types 2021-03-09 14:25:04 +11:00
Dion Moult 1f68c3f612 Fix bug where you could not assign a related window or door type. 2021-03-09 12:51:18 +11:00
Dion Moult aceb2140ad Fix #1361. You can now unlink objects and styles of elements that you've lost the IFC of to recover them. 2021-03-09 12:50:50 +11:00
Dion Moult 310d13ac75 Unbreak macos builds 2021-03-09 08:36:15 +11:00
Krande bc2ac6b31a Automated Blenderbim releases using github actions ci (#1354)
* Initial commit for suggested blenderbim github actions setup

* Changed the github repo address from fork to main repo for clarity

* Include python version info to appear on asset name. Consider using additional matrix loop on python versions 37 and 39. Currently hardcoded py37 for testing

* Cleanup of "python_fcl" files in dist/working before compiling BIMTester

* Loop over python 3.7 and 3.9 for all platforms and build 6 releases

* Set the correct repository name in the trigger. Also make the trigger only run when "[release]" is added in the commit message.
2021-03-09 08:11:47 +11:00
Thomas Krijnen 059c405652 Github actions nproc 2021-03-08 15:20:59 +01:00
Priit Laes 28d168b96c build: cmake: Improve OCC_LIBRARY_DIR detection 2021-03-08 14:53:07 +01:00
Priit Laes e4640df6f0 build: cmake: Rework OpenCascade header directory lookup 2021-03-08 14:53:07 +01:00
Thomas Krijnen 5c3642e1d1 Use BUILD_PACKAGE option 2021-03-08 14:52:57 +01:00
Thomas Krijnen 615f567ebf username 2021-03-08 14:52:57 +01:00
Thomas Krijnen a56ca661e8 BUILD_PACKAGE option 2021-03-08 14:52:57 +01:00
Thomas Krijnen 8ee9835e27 Change repo name 2021-03-08 14:52:57 +01:00
Christophe Prud'homme b26147c1c7 Release V 0.6.0 alpha 3 2021-03-08 14:52:57 +01:00
Christophe Prud'homme c3847ff38a add runtime depends 2021-03-08 14:52:57 +01:00
Christophe Prud'homme 8299505672 Release V 0.6.0 alpha.2 2021-03-08 14:52:57 +01:00
Christophe Prud'homme 0db743d3f7 Release V0.6.0 alpha 2
install in standard python dir
bump up version
2021-03-08 14:52:57 +01:00
Christophe Prud'homme e7558d0008 Release v0.6.0 alpha.1
add EXTRA_VERSION to set prerelease (to be set to null string for final release)

add release workflow
2021-03-08 14:52:57 +01:00
Christophe Prud'homme c9f40126c3 fix python package dir
@aothms the selection of the directory needs to fixed but the current choice is reasonnable
2021-03-08 14:52:57 +01:00
Christophe Prud'homme b0554e71d5 use GNUInstallDirs to define properly the installation directories
fix typo in name LIBARY -> LIBRARY
2021-03-08 14:52:57 +01:00
Christophe Prud'homme 1bed25408f up ci 2021-03-08 14:52:57 +01:00
Christophe Prud'homme 603a034ac6 use host ubuntu 20.04 2021-03-08 14:52:57 +01:00
Christophe Prud'homme 6f802ed770 prepare for docker image of ifcopenshell 2021-03-08 14:52:57 +01:00
Christophe Prud'homme c1b9062fa4 add package using cpack and install properly 2021-03-08 14:52:57 +01:00
Christophe Prud'homme e4f591babf add gh action 2021-03-08 14:52:57 +01:00
Thomas Krijnen e9c84d1c11 SVG Rotate dimension text 2021-03-08 14:19:07 +01:00
Dion Moult e62b7e94a4 Fix #1339. You can now search case insensitively for pset, prop and attribute names 2021-03-08 16:42:47 +11:00
Dion Moult e89d540236 Fix bug where assigning a new constituent or profile was borked. Also you can now reorder material lists and constituent set items. 2021-03-08 16:19:26 +11:00
Dion Moult fa23f64e9f Fix #1344. You can now reorder items in a material layer set 2021-03-08 14:20:43 +11:00
Dion Moult cfaa90b1fb Fix bug where material / style UI was showing without a loaded IFC 2021-03-08 12:11:29 +11:00
Dion Moult dc909f1fc6 Add support for adding material layer set usages to elements 2021-03-08 08:41:06 +11:00
Thomas Krijnen 30fc2ad580 SVG: Fix storey elevations 2021-03-07 12:07:40 +01:00
Thomas Krijnen c542fb2480 explicit cast 2021-03-07 10:22:22 +01:00
Dion Moult 25717d002f Fix bug where nested aggregates failed to import 2021-03-07 14:16:08 +11:00
Dion Moult 0181bd7e56 Add support for square and cubic decimetre units 2021-03-07 10:51:30 +11:00
Dion Moult 71c6bba36d Third time lucky. 2021-03-06 14:42:30 +11:00
Dion Moult eb539666d9 Second time lucky. 2021-03-06 14:02:22 +11:00
Dion Moult e43eec6203 Add support for Python 3.9 2021-03-06 09:36:42 +11:00
Thomas Krijnen 4ca64ac42e SVG: preliminary --draw-storey-heights 2021-03-05 21:50:32 +01:00
Priit Laes f51e0db7fe build: Check for libxml2
Fixes issue #1298

Signed-off-by: Priit Laes <plaes@plaes.org>
2021-03-05 21:36:18 +01:00
Thomas Krijnen b1e8e0a968 Update vs-cfg.cmd 2021-03-05 20:58:34 +01:00
Dion Moult be66a98cfa Implement support for showing IfcMaterialLayerSetUsage material types 2021-03-05 18:27:19 +11:00
Dion Moult 76487ea3bf Deprecate the "allow non-element aggregates" workaround for prostructures as the new aggregate system should make it obsolete. 2021-03-05 16:42:39 +11:00
Dion Moult 13fe011c75 Fix bug where sometimes cartesian point offsets wouldn't get detected correctly for poorly geolocated files 2021-03-05 16:38:51 +11:00
Dion Moult 266a341c6b You can now assign/unassign products to groups. Part of #1153 roadmap. 2021-03-05 15:37:40 +11:00
Dion Moult a5bcbe046f You can now view, add, edit, and remove IFC groups. Useful, but also needed for #1153. 2021-03-05 14:06:51 +11:00
Dion Moult ab057e3eff Fix bug where you couldn't do import profiling on Windows. Thanks erab! 2021-03-05 10:02:29 +11:00
Thomas Krijnen 6aa0651190 #1153 support IfcAnnotation with Box as drawing view 2021-03-04 14:39:32 +01:00
Thomas Krijnen 0f296c486f todo note 2021-03-04 14:38:36 +01:00
Dion Moult 29f64f7c11 Drawing cameras now save IfcBlock representations in IFC. See #1153. 2021-03-04 22:04:40 +11:00
Dion Moult d2d4a1b976 Bundle IfcConvert with the BlenderBIM Add-on. See #1153. 2021-03-04 20:54:31 +11:00
Dion Moult 249ff95920 Minor fix 2021-03-04 17:26:39 +11:00
Dion Moult 4c8d12d978 Fix bug where you could add psets of the same name multiple times 2021-03-04 17:02:05 +11:00
Dion Moult 04d02feb86 Null automatically toggles when you set a property in a pset now 2021-03-04 14:58:26 +11:00
Dion Moult e6700ea29b Fix bug where existing blender offsets weren't used when importing two offset models consecutively 2021-03-04 11:58:07 +11:00
Dion Moult 9c7c3d7078 Users can now toggle hiding of null / empty properties in case they are powerusers 2021-03-03 21:50:13 +11:00
Dion Moult 0d3175c6ef Improve pset UI to show if no properties are set 2021-03-03 21:42:00 +11:00
Dion Moult 04abadac22 You can now reassign classes in bulk 2021-03-03 21:16:51 +11:00
Jesusbill 0b39226869 update readme and changelog 2021-03-01 23:39:13 +01:00
Jesusbill 9e31991e75 add "bonded" case for mesh and run 2021-03-01 23:22:55 +01:00
QwiglyDee b40bd681b1 fixed disappearing extrusion gizmo 2021-03-01 23:46:52 +07:00
QwiglyDee 63384a730b WIP gizmo for parametreic extrusion, see #1324 2021-03-01 18:42:28 +07:00
Dion Moult b9f81b8014 Minor packaging fix 2021-03-01 10:57:48 +11:00
Dion Moult c34f357301 Minor fix 2021-03-01 10:52:21 +11:00
Dion Moult beb58b89fe Basic module for integration with Augin. Nice. 2021-03-01 10:52:09 +11:00
Thomas Krijnen 97df037c93 Reformat ids.py 2021-02-28 09:34:35 +01:00
Thomas Krijnen a7d8bffca5 Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.6.0 2021-02-28 09:31:38 +01:00
Thomas Krijnen b5f58dc113 #1349 result formatting 2021-02-28 09:31:21 +01:00
Dion Moult 4e889b75d7 BIMTester can now accept both IDS .xml as well as Gherkin .feature files and generate HTML reports 2021-02-28 14:35:21 +11:00
Dion Moult 36cfb0d3f5 Meshes can now be automagically converted into circular and arbitrary profile extrusions (swept solids) 2021-02-28 12:04:30 +11:00
Dion Moult 5921bcb63d You can now automagically convert meshes into rectangular solid extrusions 2021-02-27 21:15:18 +11:00
Thomas Krijnen 23ad1a8005 Preliminary bSI IDS implementation 2021-02-27 11:04:45 +01:00
Thomas Krijnen f257aef8f4 #1348 special case profiledefwithvoids, needs more work 2021-02-27 10:58:22 +01:00
Thomas Krijnen 3eacd809b0 validate() docstring 2021-02-24 14:06:48 +01:00
Dion Moult e1b90ed3b2 Rebuild pset template UI to be less confusing and match the UX paradigm of other modules 2021-02-24 21:07:27 +11:00
Dion Moult 28c2d7248e Fix bug in where IfcCountMeasure and similar properties were not editable 2021-02-24 16:21:27 +11:00
Dion Moult 3bee746f49 Optimise aggregate creation on large file imports 2021-02-24 13:49:06 +11:00
Dion Moult eeb27bb1c7 Fix regression in last release where the file was loaded twice during import, which led to increased import times 2021-02-24 12:51:50 +11:00
Dion Moult d50c89abee Fix #1337. Changing the name of a Blender object now also auto changes its IFC name. 2021-02-23 21:15:27 +11:00
Dion Moult 15cf3f5afd Fix bug where undo operations may invalidate an ID map and break everything 2021-02-23 20:01:00 +11:00
Dion Moult 1e22dbca1e Meshes are auto updated in the IFC as well when edit mode is toggled now. 2021-02-23 19:19:06 +11:00
Dion Moult 28fbf0ea99 Minor fix 2021-02-23 18:55:42 +11:00
Dion Moult d874a0089d Add documentation for ifcpatch. 2021-02-22 22:04:23 +11:00
Dion Moult 441d842f67 You can now easily get and set the cursor location for local<->global coordinate conversions 2021-02-22 18:27:57 +11:00
Dion Moult 667ac307c3 Fix bug where cursor was not placed in the correct unit after a global->local coordinate conversion 2021-02-22 18:16:09 +11:00
Dion Moult c81031819c Fix bug where blender offsets were not considered in local<->global coordinate conversion 2021-02-22 18:15:22 +11:00
Dion Moult 7cbb87284c Fix bug where selecting high polygon meshes for debugging fails 2021-02-22 16:52:10 +11:00
RobinVanTol d0a9edd186 Update occ_utils.py 2021-02-21 16:04:42 +01:00
Dion Moult 425379aaad Bump IfcOpenShell build 2021-02-21 22:11:05 +11:00
johltn a1f740bd81 Don't use pointers for Representation elements 2021-02-21 11:41:04 +01:00
Dion Moult 25d86a50c5 Minor fix for previous commit 2021-02-21 11:55:04 +11:00
Dion Moult 0286cd370d Improve UI to change spatial container to prevent accidentally selecting incorrect objects 2021-02-21 11:24:27 +11:00
johltn 5be6954fd7 Made changes accordign to PR review 2021-02-20 15:35:33 +01:00
Dion Moult 0178804feb Fix bug where removing mapped representations leaving you with nothing was a poor user experience 2021-02-20 18:03:03 +11:00
Dion Moult 1892e9cc86 Fix bug where copying a class did not enforce mapped representations 2021-02-20 17:23:58 +11:00
Dion Moult 1b46f5c83a Fix bug where you couldn't edit the geometry of a grid axis 2021-02-20 17:13:36 +11:00
Dion Moult 3a0edab8c1 Blender now helps prevent saving Blender without having an exported IFC. See #1323. 2021-02-20 15:15:44 +11:00
Dion Moult 7032ee9f11 STEP IDs are now shown for non-rooted elements, like grid axes. 2021-02-20 13:53:11 +11:00
Dion Moult fd19b2d730 Fix #1312. Allow null ownership histories in IFC4. 2021-02-20 10:26:58 +11:00
Dion Moult a65b9f2ba7 You can now add type instances, and mapped representations are enforced. 2021-02-20 10:11:27 +11:00
Dion Moult 2db4a6f89f Fix bug where you couldn't copy classes without representations. 2021-02-20 09:21:18 +11:00
johltn 415203e9c2 Add HDF description in IfcConvert 2021-02-19 17:12:58 +01:00
johltn 029c2cc33d Cleaning 2021-02-19 17:05:32 +01:00
johltn 40266e7bf2 Fix constructor arguments names 2021-02-19 17:03:41 +01:00
johltn 9816e96a34 Add OCCT data to output file 2021-02-19 12:05:29 +01:00
johltn f4fc8914b8 Get BrepElement to triangulate + serialize from it 2021-02-19 11:52:32 +01:00
Thomas Krijnen 517b819504 .bat script typo 2021-02-19 10:43:47 +01:00
johltn aa9fd1de21 Get OCCT data 2021-02-18 20:54:22 +01:00
johltn 17bb42faab Add IFC entity type as element group attribute 2021-02-18 11:19:03 +01:00
johltn c7a0003ef4 Handle isyup 2021-02-18 10:41:54 +01:00
johltn 12983ea4fe Move HDF compound type definitions to constructor 2021-02-18 10:35:51 +01:00
johltn 0882bfaf3e Add faces existence condition and keep cleaning 2021-02-18 10:12:29 +01:00
Dion Moult a0f79cc0db Fix #1318 - unable to install add-on due to clash with Blender-OSM. 2021-02-18 17:45:06 +11:00
johltn bf24f46806 Change file extension and start cleaning 2021-02-17 17:20:03 +01:00
Thomas Krijnen 67666ed70e Attempt at https://github.com/IfcOpenShell/IfcOpenBot/issues/1 2021-02-17 16:06:50 +01:00
Dion Moult 6bcfa5946f New basic UI to view tasks in an IFC file 2021-02-17 22:54:11 +11:00
Dion Moult 52691b7ee5 You can now edit parameters of parametric profile definitions in geometry. 2021-02-17 22:03:41 +11:00
Dion Moult 780ea707b0 Highly experimental script to convert from IFC task trees into a Gantt chart JSON for jsgantt-improved 2021-02-17 21:17:02 +11:00
Dion Moult 7e7cfbdd5f Highly experimental script to convert from P6 XML into an IFC task tree. 2021-02-17 21:16:21 +11:00
Dion Moult ab102176cc IfcOpenShell date util now supports converting to IFC2X3 date entities 2021-02-17 21:12:04 +11:00
johltn b69b2fb960 Use compound types for the 3 datasets 2021-02-17 10:38:27 +01:00
Thomas Krijnen d7f289bc8a Update stylesheet 2021-02-16 20:23:36 +01:00
johltn ba5751e535 Create Positions, Normals, and Indices datasets 2021-02-16 13:13:00 +01:00
Thomas Krijnen 95a34cb8d0 Update stylesheet 2021-02-16 12:13:59 +01:00
Dion Moult 8369818b88 Fix bug where geolocation was lost if you tried to edit an absolutely positioned file 2021-02-16 20:27:37 +11:00
Dion Moult 5251bdabc6 Fix bug #1315 - regression in the absolute coordinate offset feature where I forgot to convert non-meter units. 2021-02-16 18:50:04 +11:00
Dion Moult 83c33dd5b0 Fix bug where only a light removal occured when removing elements. Now, a full geometry purge is done as well. 2021-02-16 11:12:42 +11:00
johltn 13cda38e0c Change datatype type and arg 2021-02-15 22:26:04 +01:00
johltn fbf1ad14b2 Change file extension 2021-02-15 21:23:08 +01:00
johltn 08f7008cb5 Create first groups and datasets 2021-02-15 21:17:35 +01:00
Thomas Krijnen bfc695c756 #1311 better error handling during parse for schema and header 2021-02-15 11:11:14 +01:00
Thomas Krijnen 459faec01a #1311 normalize schema name case 2021-02-14 17:39:15 +01:00
Thomas Krijnen 4fb65199b8 Validate: better handling of boxed enum 2021-02-14 17:32:08 +01:00
Thomas Krijnen 08576e28d6 fixed boxed enum validation 2021-02-14 17:23:16 +01:00
Thomas Krijnen b3f581d78d Handle boxed enum creation in Python 2021-02-14 17:22:15 +01:00
Thomas Krijnen 89d6b3d21a Fixes for RC2 changes re IfcPoint and IfcSegment 2021-02-14 17:21:58 +01:00
Thomas Krijnen d2bf2cf46e Pick RC2 definitions where required 2021-02-14 17:21:34 +01:00
Thomas Krijnen 43b2982dbb fix char encoding issue in source 2021-02-14 17:20:55 +01:00
Thomas Krijnen e750a134d0 Add generated rc2 schemas 2021-02-14 17:20:34 +01:00
Thomas Krijnen 6bbbc528fe prep for 4x3_rc2 2021-02-14 12:43:27 +01:00
Thomas Krijnen 7f4a436708 regen schema 2021-02-14 12:43:09 +01:00
johltn 274235ebea Initialize file 2021-02-14 12:23:43 +01:00
Thomas Krijnen e6592ca706 conversion rules for first citizin enum types #1276 2021-02-14 12:19:06 +01:00
Thomas Krijnen cc2138463e Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.6.0 2021-02-14 09:49:03 +01:00
Thomas Krijnen 6de3e55d19 make wrapper import in schema_class optional 2021-02-14 09:43:10 +01:00
Dion Moult 595131e6e8 Fix #1313. Fix bug where you couldn't import two different IFC files in succession in the same Blender file. 2021-02-14 17:27:10 +11:00
Dion Moult 6966da3bdf Switching construction type now has an option to map representations 2021-02-14 16:50:27 +11:00
Thomas Krijnen 4e897a0c21 surface style ids on serialization 2021-02-13 16:03:57 +01:00
Long 73a9015801 ifcpatch make.py (#1319) 2021-02-13 20:23:59 +11:00
Dion Moult 1b2bebecb0 You can now assign types with a smart type filter, without needing to first import types into Blender 2021-02-13 18:29:52 +11:00
Dion Moult e4dee2258d Fix #1300. New IfcOpenShell.util.type module for checking applicable type classes. 2021-02-13 18:27:02 +11:00
Long 7de3eec1b1 make ifcpatch callable from command line (#1317) 2021-02-13 10:06:15 +11:00
johltn addef5dfa3 Create HdfSerializer based on ObjSerializer 2021-02-12 17:32:43 +01:00
johltn 84550fddcb Clean CMakeLists.txt 2021-02-12 15:34:07 +01:00
johltn 6a3390dbb6 Fix compilation 2021-02-12 15:30:10 +01:00
rbertucat 20fe48bd6a BuildingSmart IFCRail changes to BIMTester (#1309)
* Add a way to validate the IFC file in BIMTester

* Fix an issue in Report where only the first error was shown

* Fix the usage of Schema in BIMTester

* Add Aggreation steps to BIMTester
2021-02-12 09:34:10 +11:00
johltn ec04644c54 Building process changes 2021-02-11 11:41:15 +01:00
johltn 84b37af72d Merge branch 'v0.6.0' into hdf5 2021-02-10 16:04:56 +01:00
Thomas Krijnen 1d6b2dcb37 SVG: IfcAnnotation objectype handling 2021-02-09 14:04:01 +01:00
Thomas Krijnen 45f3e677df Also process wires as part of geometric sets 2021-02-09 14:03:35 +01:00
Jesse Vander Does 65160f9bb4 Removed new line 2021-02-09 13:43:29 +01:00
Jesse Vander Does 333ba08841 Added '--no-wire-intersection-tolerance' option 2021-02-09 13:43:29 +01:00
Jesse Vander Does 2cb3b0817f Updated description 2021-02-09 13:43:29 +01:00
Jesse Vander Does 4ea95960a2 Added '--strict-tolerance' option 2021-02-09 13:43:29 +01:00
Jesse Vander Does 10f4bca5d2 Moved no wire flag inside of wire_intersections method 2021-02-09 13:43:29 +01:00
Jesse Vander Does d4a01618cd Fixed white space 2021-02-09 13:43:29 +01:00
Jesse Vander Does c9c6529978 Added '--no-wire-intersection-check' 2021-02-09 13:43:29 +01:00
Jesse Vander Does 2829a0764b Remove wire intersection check to preserve faces 2021-02-09 13:43:29 +01:00
Dion Moult 76d61cb4d4 Minor fix - map representation now only does that, and nothing more 2021-02-07 22:15:21 +11:00
Dion Moult e9d2a39166 Only IFC files are now shown in the export file dialog for a less confusing user experience 2021-02-07 20:00:26 +11:00
Dion Moult d08f4171e3 Type representations are now always imported (better for authoring), and also import super fast compared to before (before, enabling types being imported would significantly slow down import times) 2021-02-07 19:57:32 +11:00
Dion Moult 23483eafb3 Fix bug where removing a mapped representation did not properly considered all mapped usages 2021-02-07 19:13:36 +11:00
Dion Moult 686ba2536b Fix bug where you could create mapped representations without having a type product 2021-02-07 19:08:34 +11:00
Dion Moult 7d5ac99f34 Fix bug where representations wouldn't be purged correctly if they were part of a layer with many items 2021-02-07 19:05:56 +11:00
Dion Moult 9b8d224aca Minor fix 2021-02-07 13:27:23 +11:00
Dion Moult 8939d93333 Fix bug where product and type representations wouldn't be linked in Blender when importing 2021-02-07 12:53:41 +11:00
Dion Moult 04aad216ba Type representation maps are now shown in the IFC Representations UI panel 2021-02-07 11:44:14 +11:00
aothms 27eb9d340a sphinx theme 2021-02-06 15:24:17 +00:00
aothms fbb53f93d8 Merge branch 'v0.6.0' of https://github.com/IfcOpenshell/IfcOpenShell into v0.6.0 2021-02-06 15:11:00 +00:00
aothms af6aed80da Documentation changes 2021-02-06 15:10:41 +00:00
Dion Moult 92ba412c95 Fix bug where add grids didn't work. See #1284. 2021-02-06 15:24:53 +11:00
Dion Moult 110c382973 Fix ability to create grids which was totally broken 2021-02-06 15:14:38 +11:00
Dion Moult 977df60f05 Fix #1283 - dumb objects now have an assigned class 2021-02-06 08:01:29 +11:00
Thomas Krijnen 22067992cb Update HDF5 version 2021-02-05 21:33:58 +01:00
Thomas Krijnen 539d77b5ad #1247 Boost_NO_BOOST_CMAKE=On 2021-02-05 17:04:37 +01:00
Thomas Krijnen 70f109ce09 Initial setup 2021-02-05 13:47:54 +01:00
aothms ea34c3de85 Changes to docs 2021-02-05 12:01:57 +00:00
Thomas Krijnen 9374594920 Merge pull request #1297 from IfcOpenShell/docs
Documentation generation by @johltn
2021-02-05 11:57:14 +01:00
Thomas Krijnen 6aeddcabc0 Delete file 2021-02-05 11:54:03 +01:00
Thomas Krijnen 2703dce209 Small changes 2021-02-05 11:52:05 +01:00
Thomas Krijnen dc529d4146 Merge branch 'v0.6.0' into ifcopenshell_documentation 2021-02-05 11:47:35 +01:00
Thomas Krijnen 8648b16e00 Small changes to script 2021-02-05 11:41:44 +01:00
Thomas Krijnen c0a62e8593 more cleanup 2021-02-05 11:39:35 +01:00
Thomas Krijnen ef5d672d4d Also add prefix install path with _ 2021-02-05 11:24:50 +01:00
Long 01b1f4642f fix ifcpatch recipe import path (#1296) 2021-02-05 18:19:10 +11:00
Dion Moult e92a84f917 Bump IfcOpenShell to address bug #1293 and bug #1281. 2021-02-05 10:08:20 +11:00
Dion Moult 04a2949d75 Fix import bug where loading existing elements wouldn't work. 2021-02-05 08:54:46 +11:00
Dion Moult 031a0cec59 Minor fix 2021-02-05 08:30:54 +11:00
Dion Moult 5f8e77c292 New create shape debugging tool to help determine broken or crashing elements 2021-02-04 22:25:43 +11:00
Dion Moult 384d007770 Validating IFCs UI now moved over into debug panel 2021-02-04 21:59:08 +11:00
Dion Moult e14a3a99c0 Fix bug where spatial objects with representations didn't import correctly. 2021-02-04 14:50:46 +11:00
Dion Moult 96260cdb39 Minor fix 2021-02-04 12:35:34 +11:00
Dion Moult d7f526eafd Minor fix 2021-02-04 11:56:56 +11:00
Dion Moult 55b081edf7 Implement BIMTester web app mockup 2021-02-04 11:54:42 +11:00
Thomas Krijnen ffb8c016b6 #1287 Don't wel accross different rep items 2021-02-03 14:51:02 +01:00
Dion Moult 11697fbd47 You can now specify a set of custom step definitions to BIMTester. 2021-02-03 21:58:49 +11:00
Dion Moult 4b9520a1bb Fix #1289. Users can now reassign the IFC file location if it moves. 2021-02-03 19:15:25 +11:00
Dion Moult 9717d6b1eb Fix #1288 - error when importing consecutive files. 2021-02-03 17:30:19 +11:00
Dion Moult 2f2b4e7dc2 Fix bug where switching representations would not work or create duplicate meshes. 2021-02-03 16:41:41 +11:00
Dion Moult f6c2a18e63 Now, users don't need to consider include curves and 2D annotations will always be imported. See #1142. 2021-02-03 16:22:23 +11:00
Dion Moult 08d959f66d Fix #1282. Bug where unable to install add-on in older Blender versions. 2021-02-03 14:45:52 +11:00
Dion Moult aa41f698c1 Fix #1287. Back to IfcOpenShell for booleans. Optional conversion to Blender if the user decides to do so. 2021-02-03 13:49:36 +11:00
Dion Moult c6a7dfdadb There is now an ID and GUID map to Blender objects for easy access especially for devs 2021-02-03 13:47:09 +11:00
ahladik adf5af947b Some more fixes to the Windows build procedure (#1285) 2021-02-02 12:00:55 +01:00
Thomas Krijnen 55b63410bd #747 Apply typemaps and checks to spf header 2021-02-02 11:49:42 +01:00
Dion Moult 012a2cca0f Fix bug where BIMTester audit classes dropdown wouldn't show. 2021-02-02 20:46:17 +11:00
Dion Moult 5a722a792a You can now load the active IFC file into a BIMTester audit. Rapid auditing go go go! 2021-02-02 20:45:56 +11:00
Dion Moult c3f7410f76 Fix #1266. Standardise BIMTester quotes, always translate, and refactor. 2021-02-02 16:51:12 +11:00
Dion Moult 7c1a23e5e3 BIMTester custom schema is now specified as an argument, not as a test requirement, which is where it belongs. 2021-02-02 16:11:38 +11:00
Dion Moult ac95fb1aa2 BIMTester now operates on single feature files, which heavily improves usability 2021-02-02 12:34:14 +11:00
Dion Moult 1f4df32d04 Fix bunch of error messages (commonly seen in IFCCSV) when you try to get a property value which is None 2021-02-01 10:18:10 +11:00
Dion Moult b09d030e12 Owner histories now updated when assigning aggregates. 2021-01-31 11:10:14 +11:00
Dion Moult ed9557539d Remove cache dir 2021-01-31 11:10:14 +11:00
Thomas Krijnen 500467b3a8 Fix json logger on validator for arg formatting 2021-01-30 21:58:27 +01:00
Thomas Krijnen 1cee5c3108 SVG Exclude IfcGrid from HLR 2021-01-30 16:15:54 +01:00
Thomas Krijnen 5e84d8da83 SVG Move section/elevation to origin to workaround PolyHLR bug 2021-01-30 16:15:26 +01:00
Thomas Krijnen 1317263536 SVG: Explicitly cast object type 2021-01-29 15:57:57 +01:00
Thomas Krijnen f4ef17eea6 Also exclude spaces from HLR 2021-01-29 15:57:34 +01:00
Thomas Krijnen 5db0f78646 Add result_type typedef 2021-01-29 13:49:45 +01:00
Thomas Krijnen b185f56dcc SVG Dimension ObjectType and Boolean sub for slanted slabs 2021-01-29 13:03:44 +01:00
Dion Moult b8ab478416 Editing attributes now stores a modified owner history 2021-01-29 21:19:20 +11:00
Dion Moult 97d34a7061 WIP unbreak drawing generation and support box context generation. See #1222. 2021-01-29 17:44:52 +11:00
Dion Moult 3e6a737cdb Implement assigning annotation representation. See #1222. 2021-01-29 15:16:29 +11:00
Dion Moult 4c87ea321d Improve UX of assigning classes to multiple objects. See #1222. 2021-01-29 15:16:29 +11:00
Dion Moult 91c6fb402d Sync blender and IFC names. See #1222. 2021-01-29 15:16:29 +11:00
Thomas Krijnen 47d4ea00ca Include outline in HLR render 2021-01-28 16:32:16 +01:00
Dion Moult f55438e871 You can now add 2D representations. Also, we now support exporting "wireframe" or 2D meshes into IFC2X3 which we didn't before. See #1222. 2021-01-28 17:27:23 +11:00
admin 33ec80e54d merge update 2021-01-28 13:56:47 +08:00
Thomas Krijnen b1232ecb02 Option to use projection logic on floor plans 2021-01-27 22:34:19 +01:00
Dion Moult a37e124d8f You can now duplicate or linked duplicate objects in IFC. Neat. See #1222. 2021-01-27 19:00:35 +11:00
Dion Moult c472dc2f1b You can now unlink blender objects to IFC ones. See #1222. 2021-01-27 15:41:24 +11:00
Dion Moult c0ed4074d8 You can now assign reps to type products. See #1222. 2021-01-27 15:28:29 +11:00
Dion Moult c94cac29a5 Add ability to map representations. See #1222. 2021-01-27 15:02:34 +11:00
Dion Moult f90c56013e Editing placements and meshes now can happen in bulk. See #1222. 2021-01-27 15:02:07 +11:00
Dion Moult 572efd7ea6 Minor fixes for loading schema data. See #1222. 2021-01-27 09:14:47 +11:00
Dion Moult b71febab0d Clear IfcStore when you load a new file. See #1222. 2021-01-26 21:28:54 +11:00
Dion Moult bbde897113 Fix importing of grids and non contextual geometry. See #1222. 2021-01-26 21:13:33 +11:00
Dion Moult 4527d3a96e Only allow material assignment if we have available materials to assign. See #1222. 2021-01-26 20:01:16 +11:00
Dion Moult 447a7a0eb2 Minor fix. See #1222. 2021-01-26 19:50:50 +11:00
Dion Moult 92cb138ca8 WIP improved UI ordering, and print export time in console for convenience. See #1222. 2021-01-26 16:07:35 +11:00
Dion Moult fa7353c923 WIP owner model now records ADDED state for creating products. New feature. See #1222. 2021-01-26 13:56:38 +11:00
Dion Moult 1023c8bc1c WIP fix BIMTester packaging. See #1222. 2021-01-26 12:54:27 +11:00
Dion Moult 276dc0d894 WIP implement add/remove material. See #1222. 2021-01-26 11:45:58 +11:00
Dion Moult 8618befa0f WIP refactor clash and smart clash. See #1222. 2021-01-26 09:51:33 +11:00
Dion Moult 20ab036016 WIP implement presentation layers. Nicer UI. See #1222. 2021-01-25 18:10:18 +11:00
Long 911ff4484f Improve snapshot filename checking in bcf (#1274) 2021-01-25 14:59:16 +11:00
Dion Moult b4ecdfba69 WIP refactor model module with new pie menu for convenience. See #1222. 2021-01-25 14:58:12 +11:00
Dion Moult f9521eca54 WIP Refactor patch module. See #1222. 2021-01-24 19:57:22 +11:00
Dion Moult af3ed303d8 WIP port pset template module. It probably needs rewriting, but at least no regressions. See #1222. 2021-01-24 19:17:33 +11:00
Dion Moult 9d893d2c5a WIP merge MVDs into geometry workarounds UI. Cleaner, more usable import / export UI. Remove obsoleted MVD options. See #1222. 2021-01-24 14:33:56 +11:00
Dion Moult 900aa20e10 New "remove deep" function in the element util module. See #1228. 2021-01-24 14:32:04 +11:00
Dion Moult b68f490dbc WIP port covetool. See #1222. 2021-01-24 08:19:26 +11:00
Dion Moult 65f381a377 WIP minor tweaks to port IfcSverchok. See #1222. 2021-01-23 18:42:11 +11:00
Dion Moult 8b7d96893f WIP purge old export IFC. No going back! See #1222. 2021-01-23 18:29:59 +11:00
Dion Moult aa3a855b4c Refactor qto utils and migrate to bmesh volume calculation. See #1222. 2021-01-23 18:01:29 +11:00
Dion Moult f19b962ab1 WIP More import function purging - remove groups. Openings always imported. See #1222. 2021-01-23 16:40:27 +11:00
Dion Moult 9b6366ddac WIP port constraints module. See #1222. 2021-01-23 16:32:52 +11:00
Dion Moult d0b2bf85cc WIP port search module with new features! See #1222.
* New IFC class search
 * Slicker UI
 * Colour by class and reset colours now available in search panel
2021-01-23 14:17:50 +11:00
Dion Moult 86e3d1e548 WIP refactor root module properties. See #1222. 2021-01-23 12:54:27 +11:00
Dion Moult d1e2ac4c5a WIP port BCF to new refactored approach. See #1222. 2021-01-23 12:20:06 +11:00
Dion Moult 8c36217e26 Line ending git fix? 2021-01-23 12:02:41 +11:00
Dion Moult b7f574fa30 WIP implement document assign/unassign. See #1222. 2021-01-23 12:02:27 +11:00
Thomas Krijnen 395d63279f Log messages 2021-01-22 22:01:08 +01:00
root 55d24ba1ee No boost cmake flag 2021-01-22 20:47:05 +01:00
Thomas Krijnen 923771f448 #1269 implement SurfaceCurveSweptAreaSolid with non-planar ref 2021-01-22 16:32:51 +01:00
Dion Moult 2f2611e0cb WIP implement most of the document module apart from object references. See #1222. 2021-01-22 21:04:30 +11:00
ahladik 94737da1f5 Workaround for Visual C++ / OCCT conflict with x86 release
Workaround for Visual C++ hanging when compiling 32-bit release OCCT up to version 7.4.0.
See https://tracker.dev.opencascade.org/view.php?id=31628
2021-01-22 10:56:50 +01:00
ahladik 6a6025302e Update vs-cfg.cmd
Prefixed the build folders with a '_' to better distinguish them from source.
Removed a superfluous 'pause' command.
2021-01-22 10:56:50 +01:00
ahladik b92fac5c5e Update vs-cfg.cmd 2021-01-22 10:56:50 +01:00
ahladik 824f09a1e7 More changes to Visual Studio build process
Prevented incorrect linking to default libraries in Boost
Boost version updated to 1.74
2021-01-22 10:56:50 +01:00
ahladik 6a8d8139ed More changes to Windows build scripts
Limited compatibility to Visual Studio 2013 or newer
Fixed the missing 'd' suffix linking ....\opencollada\xmld.lib
Fixed failure when calling the scripts without specifying a generator
2021-01-22 10:56:50 +01:00
ahladik 36f51e19b5 Changes to the build scripts to support Visual Studio 2019
Changes to the build scripts to support Visual Studio 2019, to optionally use a toolset different from the default and to build correctly when more than a single Visual Studio version is installed.
2021-01-22 10:56:50 +01:00
Dion Moult 3bbdc3f277 WIP fix IFC2X3 errors in classification refactor 2021-01-22 16:55:38 +11:00
Dion Moult c67a99fb5d New IfcOpenShell date utility module, because we shouldn't need to think too hard about dates 2021-01-22 16:21:17 +11:00
Dion Moult 7522f8fb7a WIP fix issues in IFCCSV refactor. See #1222. 2021-01-22 16:15:39 +11:00
Dion Moult 84959d1cf8 You can now export container data from IFCCSV 2021-01-22 15:52:48 +11:00
Dion Moult 404a6c244c WIP deprecate merging/import aggregates setting as they are much more usable now. See #1222. 2021-01-22 10:20:38 +11:00
Dion Moult 83c22ebce3 Merge branch 'iospectar-feature/extract-openings' into v0.6.0 2021-01-22 08:27:02 +11:00
Dion Moult 28717beff8 Merge branch 'feature/extract-openings' of https://github.com/iospectar/IfcOpenShell into iospectar-feature/extract-openings
# Conflicts:
#	src/ifcpatch/recipes/ExtractElements.py
2021-01-22 08:26:18 +11:00
Bernd Hahnebach 02fa8c8413 [read carefully before decide merge] !!! normalize line endings of src files (#1268)
* all source: prepare to normalize line ending

* all src: normalize line endings
2021-01-22 08:22:34 +11:00
Manuel 3202174903 Attempt for compatibility with PythonOCC 7.4.1
Used import statement from occ_utils.py 
added an If-Statement to the GetObject()-call.

Calling SetSelectionPriority directly on ais, as proposed by aothms (https://github.com/IfcOpenShell/IfcOpenShell/issues/1098) did not work.
Could load some ifc-models but needs further testing.
2021-01-21 13:34:33 +01:00
Thomas Krijnen 37fe54d247 erase enitty mapping upon deletion 2021-01-21 13:24:18 +01:00
Dion Moult 73439e2114 WIP port classification module with new features. See #1222.
* Adaptive UI based on IFC version
 * You can now load new classification libraries on the fly
 * You can mix classification libraries with project references
2021-01-21 21:58:27 +11:00
Dion Moult 460cb85e4b Minor fixes. 2021-01-21 21:55:08 +11:00
admin 371e4137f1 update mager 2021-01-21 13:43:19 +08:00
Dion Moult b938e4b3c3 Add new get volume by material script 2021-01-21 10:54:48 +11:00
ihabelaghoury 37f35a7b2e Small Refactor to Bimtester + Diff Module (#1271)
* Refactoring of BIMTester Module

* Modification to Bimtester refactor + Diff refactor

Co-authored-by: Ihab El Aghoury <ihab_elaghoury@yahoo.ca>
Co-authored-by: Dion Moult <dion@thinkmoult.com>
2021-01-21 08:56:00 +11:00
Jesse Vander Does dc41ad5ab1 Adding openings from extracted elements 2021-01-20 09:51:46 -06:00
Dion Moult 8411333f66 WIP implement project UI to show basic project metadata. See #1222. 2021-01-20 16:53:34 +11:00
Dion Moult 95ce82a79e WIP implement deep removal of geometry. See #1222. See #1228. 2021-01-20 16:03:35 +11:00
Dion Moult 1d8a568a0b WIP finish refactoring owner module props. See #1222. 2021-01-20 10:44:43 +11:00
Dion Moult 70a45be904 WIP purge old aggregate system. See #1222. 2021-01-20 10:17:31 +11:00
Dion Moult e3444c60af WIP implement blender offsets for non-geolocated files. Also deprecate a whole bunch of geolocation vendor workarounds into a standard feature. See #1222. 2021-01-20 10:13:07 +11:00
Dion Moult 4cea2b7044 WIP code cleanup and deprecate legacy product import. Finally! See #1222. 2021-01-20 10:11:32 +11:00
Dion Moult 1142c5285c Geolocation util can now apply georeferencing to matrices 2021-01-20 10:07:48 +11:00
Dion Moult ea524767a0 WIP implement georeference module for correctly geolocated files. See #1222. 2021-01-19 11:18:26 +11:00
Bernd Hahnebach 45bba127ff bimtester: steps, remove comment 2021-01-17 22:40:11 +01:00
Bernd Hahnebach b9ba138d8d bimtester: normalize line endings 2021-01-17 22:30:04 +01:00
Bernd Hahnebach 2ea04f97f9 bimtester: add git attributes to be able to normalize line endings 2021-01-17 22:30:04 +01:00
Bernd Hahnebach d15c5c7e21 bimtester: recreate translation pot file and update lang po files 2021-01-17 22:30:04 +01:00
Bernd Hahnebach 9574b7e08f bimtester: start italian and dutch translation 2021-01-17 22:30:04 +01:00
Bernd Hahnebach 19ba6f86d7 bimtester: example feature files, add lang short cut to file name 2021-01-17 22:30:04 +01:00
Bernd Hahnebach c5c5bbd290 bimtester: example feature files, formating 2021-01-17 22:30:04 +01:00
Bernd Hahnebach bc9f7d214d bimtester: rename project of example ifcs 2021-01-17 22:30:04 +01:00
Dion Moult ee0b9004e3 WIP reimplement material psets with new features. See #1222.
* Data type sensitive UI
 * New standardised UI
 * Accomodate custom pset templates for materials
 * Explicitly disable IFC2X3 material psets which are horrible and I don't want to support it
2021-01-17 21:54:37 +11:00
Dion Moult 3fe5c88910 WIP implement material attributes panel. See #1222. 2021-01-17 21:07:01 +11:00
Dion Moult 25fb9be82e WIP port object material assignment with 3 new features. See message. See #1222.
* Full support for editing IfcMaterialList added
 * The reusability of material set relationships are now roundtripped
 * UI is sensitive to IFC schema version and adapts intelligently
2021-01-17 12:46:47 +11:00
Dion Moult fa4ba58cac Minor fix 2021-01-17 12:46:47 +11:00
Thomas Krijnen 5a11ac0545 Remove debugging statement 2021-01-16 15:12:19 +01:00
johltn 894bae66fd Clean branch 2021-01-16 14:52:07 +01:00
johltn ccb538c756 Clean branch 2021-01-16 14:50:09 +01:00
johltn c87baa1a50 Clean branch 2021-01-16 14:46:24 +01:00
johltn 30fa59960d Clean branch 2021-01-16 14:42:34 +01:00
johltn bdd86366bf Clean branch 2021-01-16 14:40:39 +01:00
johltn 142a38d402 Clean branch 2021-01-16 13:12:10 +01:00
johltn 257f4b2bf0 Clean branch 2021-01-16 13:03:28 +01:00
johltn 4e8a827822 Clean branch 2021-01-16 12:55:24 +01:00
Cyril Waechter b10ba45194 Allow to install ifcpatch separately (#1263)
Will allow to provide ifcpatch as a standard python package for
various usages (eg. standalone, blenderbim addon, FreeCAD)
* Copy folder instead of files [using svn](https://stackoverflow.com/a/18194523/4098083)
* Fetch recipes from ifcpatch module path
2021-01-16 10:42:45 +11:00
Bernd Hahnebach a04ce8a24d bimtester: steps, translate some project attribute tests 2021-01-15 21:03:45 +01:00
Bernd Hahnebach 1d0b13960f bimtester: steps, translate some attributes 2021-01-15 21:03:45 +01:00
Bernd Hahnebach 418574fe40 bimtester: steps, translate ifcdata provide ifc file by argument 2021-01-15 21:03:45 +01:00
Bernd Hahnebach 2e07fd1cde bimtester: steps, improve ifcdata schema test 2021-01-15 21:03:45 +01:00
Bernd Hahnebach 0123e2a69f Merge pull request #1262 from berndhahnebach/btprdev
bimtester
2021-01-15 10:59:45 +01:00
Bernd Hahnebach 843917a431 bimtester: run, merge run and run wich copy in temp 2021-01-15 10:58:14 +01:00
Bernd Hahnebach 2fce21fd88 bimtester: run, merge getting the behave arguments 2021-01-15 10:58:08 +01:00
Bernd Hahnebach c9e85c5d34 bimtester: run, merge run behave commands 2021-01-15 10:58:03 +01:00
Bernd Hahnebach 521a5a5981 bimtester: parse behave args to the gui too and other small gui
improvements
2021-01-15 10:57:55 +01:00
Bernd Hahnebach c6347e30be bimtester: rename project in example 1 2021-01-15 10:57:51 +01:00
Bernd Hahnebach 21d4203688 bimtester: parse ifcfile by behave user args 2021-01-15 10:57:47 +01:00
Bernd Hahnebach aefd4e3387 bimtester: run, move comments and add prints 2021-01-15 10:57:44 +01:00
Bernd Hahnebach 3df2c89b0a bimtester: report generator, add another parameter report file 2021-01-15 10:57:40 +01:00
Bernd Hahnebach ebd53250e7 bimtester: report, simplify generation code 2021-01-15 10:57:36 +01:00
johltn 6444376ecd Script to generate docs outside CMake 2021-01-15 07:30:09 +01:00
ihabelaghoury f5796eaed3 Refactoring of BIMTester Module (#1259)
Co-authored-by: Ihab El Aghoury <ihab_elaghoury@yahoo.ca>
2021-01-14 20:43:39 +11:00
Dion Moult a4b2285e8a Minor fix 2021-01-14 08:02:00 +11:00
ihabelaghoury 713e70ff63 Total refactoring for CSV into a blenderBim module + use of IfcStore (#1254)
* Add new feature to Load from IFCStore in Cobie

* Initial refactor for CSV to become a CSV Module

* Update __init__.py

* Address Dion's review

Co-authored-by: Ihab El Aghoury <ihab_elaghoury@yahoo.ca>
Co-authored-by: Dion Moult <dion@thinkmoult.com>
2021-01-14 07:53:48 +11:00
Thomas Krijnen 540f793940 Workaround: IfcLine as segment with IfcVector magnitude length in composite curve 2021-01-13 15:46:00 +01:00
Dion Moult 071c84ddf8 WIP implement qtos. See #1222. 2021-01-13 21:26:10 +11:00
Bernd Hahnebach f2b645b73f bimtester: get back dummy feautre file, deleted in 91773e8fc6 2021-01-13 08:38:51 +01:00
Bernd Hahnebach 7554714fff bimtester: sort command line args by abc 2021-01-13 08:29:33 +01:00
Bernd Hahnebach 2d04d988e7 bimtester: improve gui 2021-01-13 08:29:33 +01:00
Bernd Hahnebach 91773e8fc6 bimtester: improve and fix copy in temp and run 2021-01-13 08:29:33 +01:00
Bernd Hahnebach 6ee3c8fd98 bimtester: start script, improve arguments 2021-01-13 08:29:33 +01:00
Bernd Hahnebach a54b84b4c3 bimtester: run, better variable name 2021-01-13 08:29:33 +01:00
Bernd Hahnebach addf28c1e2 bimtester: run, improve method run copy in temp 2021-01-13 08:29:33 +01:00
Bernd Hahnebach aa82cb15d2 bimtester: run, rename method run copy in temp 2021-01-13 08:29:33 +01:00
Bernd Hahnebach 2e3c5c42bf bimtester: fix import 2021-01-13 08:29:33 +01:00
QwiglyDee a1be2ef868 #1234 section view decorations 2021-01-13 06:27:05 +07:00
Thomas Krijnen ab8aa95479 #1224 update inverse cache upon deletion 2021-01-12 21:49:17 +01:00
Dion Moult b78e710479 WIP implement add / remove fills. See #1222. 2021-01-12 16:39:01 +11:00
Dion Moult 9400eab0ff WIP implement void module with add / remove openings. See #1222. 2021-01-12 15:14:14 +11:00
QwiglyDee 1836136049 adding section annotations 2021-01-12 09:33:46 +07:00
QwiglyDee d1a2a12e94 close #1232 elevating grid in section views 2021-01-12 09:33:46 +07:00
QwiglyDee 6502b2c18d little drawing helper 2021-01-12 09:33:46 +07:00
ihabelaghoury 1779fe88ef Add new feature to Load from IFCStore in Cobie (#1253)
Co-authored-by: Ihab El Aghoury <ihab_elaghoury@yahoo.ca>
2021-01-12 11:26:59 +11:00
ihabelaghoury 497f793a6b Cobie Module Refactoring (#1252)
* Create Mylog.txt

* Remove Cobie references from ui and operator

* Update __init__.py

* Extra Updates

* Update operator.py

* Update ui.py

Co-authored-by: Ihab El Aghoury <ihab_elaghoury@yahoo.ca>
2021-01-12 10:02:37 +11:00
Bernd Hahnebach a85d7c66a5 bimtester: add simple example and translated feature files 2021-01-11 06:58:39 +01:00
admin 555a2ce79e merge master v6.0 2021-01-11 11:39:36 +08:00
admin 699742880e fix IFC to xml - IFCGROUP in IFC cannot be found in xml #1154 2021-01-11 10:59:03 +08:00
Thomas Krijnen e1b68dafa4 #841 cpp implementation of get_info() 2021-01-10 12:36:47 +01:00
johltn df2f4b69e3 40 min waiting time 2021-01-10 09:02:27 +01:00
johltn e76d401d15 Use 4 threads 2021-01-09 19:05:32 +01:00
Thomas Krijnen 3182c75f14 Some changes after #1155 2021-01-09 15:08:30 +01:00
admin 68767c3656 #1097
fix:IFC file conversion obj file, some cases will be rotated 90 °
2021-01-09 14:51:01 +01:00
Thomas Krijnen 6976144d80 Fix syntax for py27 2021-01-09 14:25:26 +01:00
Thomas Krijnen 2a54fee41a Fix ifcopenshell.create_entity() by including schema 2021-01-09 11:59:34 +01:00
Thomas Krijnen 3d0c9378c1 Quickfix #1246 2021-01-09 11:49:30 +01:00
Dion Moult 8ef752f173 WIP port owner history setting to partial editing. See #1222. 2021-01-09 12:00:22 +11:00
Dion Moult 06e1ee7825 WIP implement organisation editing. Also new features see commit message. See #1222.
* Organisations are now imported.
 * Organisation identification attribute support is now added, which I missed before
2021-01-09 11:42:21 +11:00
Dion Moult 84de1f1b09 WIP port address and role editing to owner module. See #1222. 2021-01-08 20:53:51 +11:00
Bernd Hahnebach 2e85a80fc8 bimtester: geometric step translation improvement 2021-01-08 08:41:41 +01:00
Bernd Hahnebach 8eab1ec4a5 bimtester: code formating 2021-01-08 08:26:28 +01:00
Bernd Hahnebach 7871dea3ca bimtester: very small code improvements in reports 2021-01-08 08:26:28 +01:00
Bernd Hahnebach bf41ee013c bimtester: improve step translation 2021-01-08 08:26:28 +01:00
Bernd Hahnebach ef3f9489ea bimtester: improve some step method names 2021-01-08 08:26:28 +01:00
Dion Moult be2ea335f5 WIP partial port of IfcPerson to partial editing. New feature too! See message. See #1222.
* Previously, IfcPerson was not imported. Now it is! Funky.
2021-01-08 16:27:19 +11:00
Dion Moult 53de93e582 WIP move the IFC Debug code into its own module. See #1222. 2021-01-08 13:49:31 +11:00
Dion Moult 0dcdfcf46c WIP implement local placement tree. See #1222. 2021-01-08 13:29:59 +11:00
Dion Moult 2d061f63fb WIP port add aggregate and remove container. See #1222. 2021-01-08 11:41:54 +11:00
Dion Moult afbdedaee8 WIP minor fixes to aggregate and spatial collection handling. See #1222. 2021-01-07 21:02:46 +11:00
Dion Moult 30d9ad1fbc Fix #1194. Aggregates no longer use collection instances. 2021-01-07 20:21:41 +11:00
Dion Moult d673e845f6 WIP psets now use partial editing with new features! See full message. See #1222.
* Psets are now sensitive to data type
 * Psets now support null vs empty
 * Psets now respect shared STEP IDs
2021-01-07 19:09:55 +11:00
Dion Moult fcc2b9ee13 WIP migrate types to partial editing. See #1222. 2021-01-07 10:47:50 +11:00
Dion Moult 02ac150a51 WIP Implement style edit/add. See #1222. 2021-01-06 17:57:24 +11:00
Dion Moult d206dff9c0 WIP class dropdowns are now schema version specific and generated. See #1222. 2021-01-06 15:19:55 +11:00
Dion Moult cac635107e WIP spatial operator now updates the blender collection structure. See #1222. 2021-01-06 11:06:59 +11:00
Dion Moult 8eb9973045 WIP refactor mesh UI into geometry module and minor fixes. See #1222. 2021-01-06 10:28:22 +11:00
Dion Moult c4aecd6e61 Minor fix for #1235. 2021-01-06 08:45:34 +11:00
QwiglyDee cef3b9537a toggle decorations onload
fix #1237
2021-01-06 04:01:03 +07:00
QwiglyDee 02b01b2a44 refectored decorations.
fixed #1241 somehow
2021-01-06 03:52:40 +07:00
QwiglyDee db5418cbfe fixed #1233 grid cropping 2021-01-06 02:32:55 +07:00
Bernd Hahnebach 44d3ddbb7c bimtester: add log file and zoom smart view for failed elements tests 2021-01-05 18:06:09 +01:00
Bernd Hahnebach b2e5c904c3 bimtester: copy all files of source code features path to tmp run 2021-01-05 18:06:09 +01:00
QwiglyDee 19d07892f4 fix #1240 undoing add_grid 2021-01-05 21:33:38 +07:00
Dion Moult 113efa1206 WIP you can now start a fresh project with partial editing support. See #1222. 2021-01-05 21:15:52 +11:00
Dion Moult f76d792a25 WIP port unit assignment to partial editing. See #1222. 2021-01-05 21:13:44 +11:00
Dion Moult d74b344a95 WIP create aggregation module to manipulate aggregations. See #1222. 2021-01-05 16:29:14 +11:00
Dion Moult 30b3090386 WIP migrate attribute management to partial editing with 4 new features! See #1222.
New features include:

 - New clarity between null and empty string attributes
 - Attribute editing now shows appropriate UI widgets depending on data type
 - Attribute editing for enumerations now show a dropdown
 - Attribute editing is now schema sensitive
2021-01-05 13:16:31 +11:00
Dion Moult d4a219e54f WIP assigning a class also assigns the spatial container if possible. See #1222. 2021-01-04 16:23:36 +11:00
Dion Moult 23a66b3a72 WIP allow partial editing of spatial container. See #1222. 2021-01-04 15:57:25 +11:00
Dion Moult d9dbda6b5a Minor fix 2021-01-04 15:57:25 +11:00
QwiglyDee cbcd04c81d drawing grid clipping 2021-01-04 11:31:30 +07:00
Dion Moult 1fe2bd8332 Merge branch 'v0.6.0' of github.com:IfcOpenShell/IfcOpenShell into v0.6.0 2021-01-04 13:07:36 +11:00
Dion Moult 6387c03dbc WIP port reassign and unassign class to partial editing. See #1222. 2021-01-04 13:07:29 +11:00
Cyril Waechter 516869ba5d Use lru_cache for pset module (#1229)
New features
===========
* `get_by_name` : get pset template by name
* `is_templated` : allow to check if a pset template correspond to given name

Enhancement
============
* Use of lru_cache simplify code and enhance performance largely
(10+ times more requests in 4 less time)
kudo to aothms for the idea. See https://github.com/IfcOpenShell/IfcOpenShell/pull/1221#issuecomment-752902996.
* Take advantages of new caching system and new features in blenderbim
2021-01-04 12:13:04 +11:00
Dion Moult 0c0ffce908 WIP assigning a class now ported over to partial editing and creates an IFC element. See #1222. 2021-01-04 11:08:15 +11:00
johltn f120f0c77c Added travis_wait to CMake command 2021-01-03 14:42:49 +01:00
johltn 3961ecd322 Added travis_wait to CMake command 2021-01-03 14:01:26 +01:00
johltn 23c0e279be Added travis_wait to CMake command 2021-01-03 13:56:48 +01:00
johltn 6e4bb95e82 Update 2021-01-03 13:10:57 +01:00
Dion Moult af5350bb9f WIP refactor representation editing into geometry module. See #1222. Some new functionality as a result:
- Representations can now be added to any context, even invalid ones, non-subcontext, or missing target views
 - Switching representations now change all linked data objects
2021-01-03 19:45:40 +11:00
Dion Moult c5ec54ca7f WIP refactor context UI into its own module. Remove dependency to Blender properties. See #1222. 2021-01-03 12:08:00 +11:00
johltn efea9d429e Verbose 2021-01-02 15:48:34 +01:00
Thomas Krijnen b91dfb401d Rewrite svg array_to_string() 2021-01-02 13:08:01 +01:00
Thomas Krijnen 979f37d7c6 --svg-poly option and correct HLR view direction 2021-01-02 12:34:10 +01:00
Dion Moult 23abc604f9 WIP implement partial editing for adding / removing subcontexts. See #1222. 2021-01-02 20:28:52 +11:00
Dion Moult a997b2f999 WIP you can now partially edit the object placement of an object. See #1222. 2021-01-02 19:33:32 +11:00
Dion Moult 0ecf66f7fa New IfcOpenShell placement utility module 2021-01-02 19:32:27 +11:00
Dion Moult 2c6686846a WIP allow partial mesh geometry editing to preserve style assignments. See #1222. 2021-01-02 17:45:36 +11:00
Dion Moult 008014a89b WIP refactor ability to partially write a new shape representation. See #1222. 2021-01-02 15:39:24 +11:00
Dion Moult b016d39eca WIP refactoring representations to be incrementally edited. See #1222.
# Conflicts:
#	src/ifcblenderexport/blenderbim/bim/operator.py
2021-01-01 12:15:18 +11:00
QwiglyDee c773b5741b decorations anti-aliasing 2020-12-31 19:56:55 +07:00
Cyril Waechter 9060b6ee40 Rework python pset module (#1221)
New features
============
* Handle all syntax for ApplicableEntity as defined in IFC documentation. (drawback it increase request time by ~2/3)
* Allow to get applicable psets directly from template definition without caching.
This allow more general purpose usages. (drawback it increase request time by ~2.4)

To notice / discuss
===================
* `ifcwrap/CmakeLists` was installing only `.py` and `.bnf` files from `ifcopenshell-python`.
Why ? It now copy all files. Is it an issue ?
* property template file is now stored in ifcopenshell python module to allow usage
from every softwares. It was before only available for blenderbim addon.
* psets and qtos are now optionnally cached at object instead of module level.
This allow to work with multiple schema in the same python interpreter.
(eg. might help conversion between schemas)
* in blenderbim addon psetqto are now stored in `schema.psetqto`.
2020-12-31 21:39:33 +11:00
Thomas Krijnen c3d4ce8f51 Store drawing location in SVG 2020-12-31 11:31:05 +01:00
GisSpace d99348f163 Merge pull request #3 from IfcOpenShell/v0.6.0
merge master
2020-12-31 15:44:04 +08:00
Thomas Krijnen a5adb01dff IfcConvert --svg-xmlns option 2020-12-30 14:44:43 +01:00
Thomas Krijnen de5ce28a78 --auto-section and --auto-elevation flags 2020-12-30 14:25:08 +01:00
Dion Moult 9def261316 Importing now stores a link to the original IFC representation contexts and subcontext IDs 2020-12-30 21:09:19 +11:00
Dion Moult c844076efb New experimental option to export file from memory in preparation for incremental editing 2020-12-30 13:50:10 +11:00
Dion Moult ee222628f3 Add Vim swp files to gitignore 2020-12-30 12:20:02 +11:00
Dion Moult cd6c258687 IFC Clash in the BlenderBIM Add-on now generates snapshots of clashes in BCF 2020-12-30 12:18:41 +11:00
QwiglyDee 0799a78e9a aligned grid labels horizontally 2020-12-30 02:44:46 +07:00
QwiglyDee a073015a9a Merge branch 'v0.6.0' of github.com:IfcOpenShell/IfcOpenShell into v0.6.0 2020-12-30 01:07:13 +07:00
QwiglyDee 01d59a1bc2 decoration code cleanedup/refactored 2020-12-30 01:05:48 +07:00
QwiglyDee 453dbd65ac grid decorations. 2020-12-29 21:43:35 +07:00
aothms 7ae685dbff Nix build: py39, boost1.71, no py34 on macos, boost url, no dae validator build 2020-12-29 07:59:52 -05:00
QwiglyDee 0d457ba0ce breakline decoration.
close #1214
2020-12-29 19:10:29 +07:00
Dion Moult ef8b3d60b7 Merge branch 'v0.6.0' of github.com:IfcOpenShell/IfcOpenShell into v0.6.0 2020-12-29 22:49:28 +11:00
Dion Moult c502d39aaf Add support for BCFXML export of IFC Clash results 2020-12-29 22:49:22 +11:00
QwiglyDee 397a09846e Merge branch 'v0.6.0' of github.com:IfcOpenShell/IfcOpenShell into v0.6.0 2020-12-29 18:18:45 +07:00
Dion Moult ceb7b0e13f Refactor BCF features into its own module 2020-12-29 14:15:15 +11:00
Dion Moult f49174cab4 Refactor main init to call module inits instead 2020-12-29 13:49:53 +11:00
Dion Moult 17e805e144 Minor fix - see #1062 2020-12-29 10:03:57 +11:00
Long 5c92bd7348 implement Open Drawing Camera button (#1220) 2020-12-29 10:00:49 +11:00
QwiglyDee 7c45181a6e fixed decoration of broken geom again 2020-12-29 02:15:28 +07:00
QwiglyDee 82468370a7 fixed Level decoration color
close #1213
2020-12-29 02:09:48 +07:00
QwiglyDee 7f49ebea55 fixed addin grid
close #1217, close #1215
2020-12-29 02:04:08 +07:00
Dion Moult c0381588f3 Implement add BCF related topic 2020-12-28 20:13:41 +11:00
Dion Moult 37e56c4011 Implement remove BCF related topic 2020-12-28 19:56:57 +11:00
Dion Moult ea83238e7a Implement support for adding BCF document references 2020-12-28 19:46:47 +11:00
Dion Moult fa6df3fa30 Implement support for deleting document references 2020-12-28 18:44:33 +11:00
johltn 424069893e Include ifcparse 2020-12-28 06:38:06 +01:00
johltn abb34d33e4 Update 2020-12-28 06:07:00 +01:00
Dion Moult 36a0119f40 Implement add BIM Snippet 2020-12-28 16:04:09 +11:00
Dion Moult 9fc5d97488 Merge pull request #1219 from htlcnn/v0.6.0
ifccsv delimiter
2020-12-28 15:03:55 +11:00
htlcnn f277733ff5 ifccsv delimiter 2020-12-28 10:18:55 +07:00
Dion Moult 510d756cc4 Implement delete BCF topic BIM snippet 2020-12-28 13:14:33 +11:00
Dion Moult bca9c82c3d Implement ability to edit labels 2020-12-28 12:50:22 +11:00
Dion Moult 3deba2e71e Implement support for adding BCF labels to topics 2020-12-28 12:46:52 +11:00
Dion Moult d5566785be Implement BCF delete label 2020-12-28 11:40:40 +11:00
Dion Moult 6cfa9f6e9b Implement ability to edit individual BCF reference links 2020-12-28 11:20:44 +11:00
Dion Moult 6a00f2f0d2 Implement adding BCF reference links 2020-12-27 17:07:02 +11:00
Dion Moult b9583c562d Implement support for deleting reference links 2020-12-27 16:53:40 +11:00
Dion Moult e51b7d3c85 Implement ability to add BCF header file 2020-12-27 16:20:35 +11:00
Maxim Vasilyev 5234c8086f fixed typo 2020-12-27 00:21:59 +07:00
QwiglyDee 7e306251c1 Misc annotation and decoration.
close #1209
2020-12-26 23:41:10 +07:00
QwiglyDee 8d05ceaea9 Merge branch 'v0.6.0' of github.com:IfcOpenShell/IfcOpenShell into v0.6.0 2020-12-26 23:26:00 +07:00
QwiglyDee abaae7f06d copying grid.
close #1210
2020-12-26 23:25:39 +07:00
QwiglyDee 3c2c591d6d breakline annotation
close #1208
2020-12-26 22:01:14 +07:00
Thomas Krijnen 315b32dd38 Nix build: assert cmake in path 2020-12-26 13:49:57 +01:00
Dion Moult 6699f2dccf Merge pull request #1212 from htlcnn/v0.6.0
fix IfcGetAttribute malfunction #1089
2020-12-26 15:13:09 +11:00
htlcnn f235f5765b fix IfcGetAttribute malfunction 2020-12-26 11:08:07 +07:00
aothms 877bf3207a Nix build: no longer build cmake, some fixes for 32bit crosscompiling 2020-12-24 20:46:42 +00:00
QwiglyDee 119a729319 fix #1165 imperial formatting 2020-12-24 21:55:27 +07:00
QwiglyDee 1b9b005820 decorations colour.
close #1197
2020-12-24 21:04:44 +07:00
QwiglyDee 1bea18d3cf fixed #1206, #1207 decorating incomplete and zero segments 2020-12-24 19:50:36 +07:00
Bernd Hahnebach 1b6857b8ba bimtester: also use gettext for html report translation 2020-12-23 11:41:35 +01:00
Bernd Hahnebach 666641bb18 bimtester: reports, code formating 2020-12-23 11:41:35 +01:00
Dion Moult 67f7e68fa7 Implement support for deleting BCF header files 2020-12-23 16:22:29 +11:00
Dion Moult 7b2fa3e877 Add support for adding BCF viewpoints 2020-12-23 15:53:38 +11:00
Dion Moult 4d2be3e3c5 Since current implementations will allow BCF FoV outside the 45-60 range, let's allow it 2020-12-23 15:53:18 +11:00
Dion Moult 5a1f2ec4fe Implement support for editing BCF comments 2020-12-23 13:58:28 +11:00
Bernd Hahnebach b22055a588 bimtester: once again move report data into resources dir 2020-12-22 20:37:41 +01:00
Bernd Hahnebach 27051cce8a bimtester: move report data into new directory 2020-12-22 20:29:56 +01:00
Bernd Hahnebach 4df8418e72 bimtester: steps, add more attributes tests 2020-12-22 20:14:05 +01:00
QwiglyDee 6dfeaf5509 bpy-based formatting units for decoration
close #1164
2020-12-22 22:46:49 +07:00
QwiglyDee 30f8350156 decorators for Levels 2020-12-22 22:28:55 +07:00
QwiglyDee 7a7caffaae fix #1198 stair decorator arrow shape 2020-12-22 19:35:29 +07:00
QwiglyDee a5530acfd7 fixed Hidden decotator in edit mode 2020-12-22 19:27:44 +07:00
QwiglyDee 8baf9b056d decorators cleanup 2020-12-22 18:47:50 +07:00
Dion Moult 6f84bc6ce5 Implement BCF add comment 2020-12-22 18:41:51 +11:00
Dion Moult 6a5d255c2f Implement delete BCF comment 2020-12-22 18:23:43 +11:00
Dion Moult ee42703f9f Implement delete BCF viewpoint 2020-12-22 16:22:29 +11:00
Bernd Hahnebach 2226d5a565 bimtester: steps, remove a newline added by accident 2020-12-21 17:14:12 +01:00
Bernd Hahnebach 7d138b8f72 bimtester: steps, add missing import 2020-12-21 17:09:46 +01:00
Bernd Hahnebach edd6e74813 bimtester: steps, add element class attributes test 2020-12-21 17:05:08 +01:00
Bernd Hahnebach 2a6efaaaa4 bimtester: step, prepare attributes eleclasses for translation 2020-12-21 17:05:08 +01:00
Bernd Hahnebach dafdd06b2e bimtester: steps, split steps testmodule 2020-12-21 16:37:13 +01:00
Bernd Hahnebach 1a48472b19 bimtester: steps, sort them according expression matcher 2020-12-21 16:08:21 +01:00
Bernd Hahnebach 8e78ed332f bimtester: steps, move project test into project test module 2020-12-21 16:08:21 +01:00
Bernd Hahnebach de5dc40e63 bimtester: steps, add new test module for spatial structure 2020-12-21 16:08:21 +01:00
Bernd Hahnebach 60dd74c64d bimtester: steps, better name for element class guid tests 2020-12-21 16:08:21 +01:00
QwiglyDee ff0a7891be decorators code cleanup 2020-12-21 20:22:23 +07:00
QwiglyDee a14c0f70a6 decorator for hidden close #1178 2020-12-21 20:22:23 +07:00
QwiglyDee babbd51e70 decorations for Dim, Eq, Leader, Stair
close #1177, #1176, #1158, #1150
2020-12-21 20:22:23 +07:00
QwiglyDee ec02c8600b refactored shaders 2020-12-21 20:22:23 +07:00
QwiglyDee 0c06639635 decorator classes for Dim/Eq/Leader/Stair/Hidden 2020-12-21 20:22:23 +07:00
QwiglyDee 97913e8592 fixed #1157 again with proper perspective correction 2020-12-21 20:22:23 +07:00
Bernd Hahnebach 26d537cb4f gitignore: add gettext binary translation files, used in bimtester 2020-12-21 12:16:55 +01:00
Bernd Hahnebach 3b856f446e bimtester: remove binary mo files from repository 2020-12-21 12:16:55 +01:00
Bernd Hahnebach b8fe04b7a9 bimtester: fix error in step code 2020-12-21 11:28:51 +01:00
Bernd Hahnebach 81326ba48f bimtester: improve and translate geometric representation class type test 2020-12-21 11:24:42 +01:00
Bernd Hahnebach 21a7599d45 bimtester: small code improvements 2020-12-21 11:24:42 +01:00
Bernd Hahnebach 1074c2431c bimtester: add dummy feature file to be able to run a command to get all implemented steps 2020-12-21 11:24:42 +01:00
johltn b77aa11776 Update 2020-12-21 10:15:39 +01:00
johltn b6cf97a291 Change RST file title 2020-12-21 09:32:52 +01:00
Dion Moult eb0f2de197 New snap spaces together utility for cleaning up spaces for energy modeling 2020-12-21 18:26:39 +11:00
GisSpace d7034c6a40 Merge pull request #2 from IfcOpenShell/v0.6.0
merge
2020-12-21 11:13:59 +08:00
Dion Moult 1a48343bcb Optimise import and editing for files with lots of aggregations 2020-12-21 10:44:14 +11:00
Dion Moult b0bd027f84 Optimise import to only consider surface styles 2020-12-21 10:43:21 +11:00
Thomas Krijnen 8bf530d0d7 Missing file that accompanies 9bcd932bed 2020-12-20 21:53:51 +01:00
Thomas Krijnen a3bc159359 #1173 mutex in get_default_style() 2020-12-20 14:38:54 +01:00
Thomas Krijnen 7d756138f2 Add generator expresss_parser.py 2020-12-20 11:10:21 +01:00
Dion Moult c16b63e5ae New import code profiler in the IFC debug panel 2020-12-20 13:48:37 +11:00
Dion Moult 3eee5aba78 Optimise presentation layer assignment which was ridiculously slow and badly implemented 2020-12-20 11:03:19 +11:00
Dion Moult 05d835410d Reimplement basic BCF metadata editing and further improve BCF UI 2020-12-19 21:48:23 +11:00
Dion Moult 03d8537a2d Revert borked submodules. See #1186. 2020-12-19 14:29:43 +11:00
Dion Moult 509ee78b67 Merge pull request #1184 from IFCRail/v0.6.0-ifcrail-mod
Set of improvements for BIMTester
2020-12-19 14:24:52 +11:00
Roch Bertucat 8cc546a9a2 Add path option for providing a schema in a step 2020-12-18 17:14:55 +01:00
Roch Bertucat 0ab82295f9 Fix a small issue in report path 2020-12-18 16:51:01 +01:00
Roch Bertucat 0f66f88420 Revert template change 2020-12-18 16:25:00 +01:00
Roch Bertucat 5572faf8b4 Fix an issue with localedir 2020-12-18 16:12:11 +01:00
Roch Bertucat 322860cc51 Merge remote-tracking branch 'origin/v0.6.0-ifcrail-contrib' into
v0.6.0-ifcrail-mod

Conflicts:
	src/ifcbimtester/bimtester/features/steps/ifcdata.py
	src/ifcbimtester/bimtester/features/template.html
	src/ifcbimtester/bimtester/reports.py
	src/ifcbimtester/bimtester/run.py
2020-12-18 15:44:46 +01:00
rbertucat 1bff04d2c0 Merge pull request #3 from IfcOpenShell/v0.6.0
Merge changes from main repo
2020-12-18 12:54:34 +01:00
Dion Moult de4f18e2af New UI to show BCF comments in the BCF panel as a subpanel 2020-12-18 22:14:31 +11:00
Roch Bertucat 03dd4c39b7 Add skipped step to the HTML template 2020-12-18 11:24:33 +01:00
Roch Bertucat fc7d05c691 Improve referencing files using the path if available 2020-12-18 11:24:01 +01:00
Roch Bertucat 854a0fe863 Add a way to specify a path to the arguments 2020-12-18 11:22:51 +01:00
Roch Bertucat 9ffc2874da Add a way to stop if fail step and improve report accordingly 2020-12-18 11:22:14 +01:00
Roch Bertucat e01b677845 Add build/dist folders to gitignore 2020-12-18 11:20:42 +01:00
GisSpace ac632d0698 Merge pull request #1 from IfcOpenShell/v0.6.0
同步源库
2020-12-18 16:23:04 +08:00
Bernd Hahnebach 85a78a6e48 bimtester: se gettext for message translation 2020-12-18 17:25:05 +11:00
Bernd Hahnebach 3ae20637d7 bimtester: code formating 2020-12-18 17:25:05 +11:00
Dion Moult 7dd40149aa Migrate from bcfplugin to new bcf library in the BlenderBIM Add-on 2020-12-18 16:28:17 +11:00
Dion Moult d08da0a61d Document basic usage of bcf library 2020-12-17 22:47:15 +11:00
Dion Moult 1b09bb37e8 The BCF-XML library can now handle most data writing functions 2020-12-16 23:47:50 +11:00
Bernd Hahnebach 90f225e93b bimtester: improve submodule handling for step translation 2020-12-16 23:10:40 +11:00
QwiglyDee f00040c7d9 decorators for equal dimentions #1158 2020-12-16 17:29:15 +07:00
QwiglyDee b8286e8fb5 arrow size fix #1157 2020-12-16 17:06:36 +07:00
QwiglyDee dbafcc2fa1 fixed #1159 zero projection 2020-12-16 16:54:49 +07:00
Håkon Åmdal a869e88de0 fix: use correct initializer function when compiling with USE_MMAP 2020-12-15 13:25:48 +01:00
Dion Moult 5ad6abea1a Add simple BCF library to supersede bcfplugin, with bcfxml read capability 2020-12-15 14:49:29 +11:00
Bernd Hahnebach d00da09cdc start translation into German and French with one step as well as the report 2020-12-15 10:09:46 +11:00
Dion Moult 17a8b33387 You can new create new BCF projects from scratch 2020-12-14 13:51:01 +11:00
Dion Moult 4f2bf3a36f You can now add new BCF topics to a BCF project 2020-12-14 13:29:52 +11:00
Carlos Dias e208dd0381 Update selector.py
Changes fix problem with boolean values
2020-12-14 12:59:20 +11:00
Dion Moult a62a32d414 Support for setting the BCF author. You can also now edit basic BCF topic metadata. 2020-12-13 21:56:04 +11:00
Dion Moult 6a06c292a1 Fix #1148. Fix crash when creating drawings on Windows with Blender >= 2.91 2020-12-13 16:54:11 +11:00
Dion Moult 9dcf44fbea You can now view and edit the BCF project name 2020-12-13 16:35:51 +11:00
Dion Moult e39a997f5f Bump to latest bcfplugin, new operator to save BCF projects 2020-12-13 13:45:21 +11:00
Vincent Cadoret f3269b732f More sensible names for the Smart Clash Groups 2020-12-12 13:04:28 +11:00
Vincent Cadoret 14c726008d Split out clashes that were not grouped so they so up individually. 2020-12-12 13:04:28 +11:00
rbertucat c0b4115202 Merge pull request #1 from engisis-com/v0.6.0
Apply changes done under Engisis to the IFCRail fork
2020-12-11 15:48:56 +01:00
Dion Moult d5e6721ac4 Minor fix to support multiple dimension objects for decorations. See #1150. 2020-12-11 11:13:48 +11:00
QwiglyDee 48de2f77ab fix arrows heads 2020-12-11 10:11:47 +11:00
QwiglyDee f37283f61c drawing arrows 2020-12-11 10:11:47 +11:00
QwiglyDee cc5f34a705 text drawing 2020-12-11 10:11:47 +11:00
QwiglyDee 33bf7054bf ui and decorator handler 2020-12-11 10:11:47 +11:00
admin f3696788cb #1097
fix:IFC file conversion obj file, some cases will be rotated 90 °
2020-12-10 18:44:23 +08:00
Thomas Krijnen 14193fb486 #1126 more elaborate polygonal curve segment check 2020-12-10 10:48:14 +01:00
Roch Bertucat 34174dd3f3 Add a set of steps to test aggregations in IFC files 2020-12-10 10:42:49 +01:00
Roch Bertucat 479b937f81 Add a way to load a custom IFC Schema and add util methods 2020-12-10 10:37:17 +01:00
Roch Bertucat cada9c9e3b Specify encoding for HTML report for special characters 2020-12-10 10:35:47 +01:00
Roch Bertucat 860d795ba1 Add a way to generate a report after the tests in the same command 2020-12-10 10:35:13 +01:00
Dion Moult 2ac0b75dbc New Link IFC operator to easily append IFCs from another Blend file into a master file 2020-12-10 13:52:29 +11:00
Dion Moult fb7998980d Fix bug where aggregates were accidentally hidden when generating drawings 2020-12-10 13:51:51 +11:00
Dion Moult b9af4906aa Fix bug where selecting the IFC file for drawing generation didn't work 2020-12-10 13:51:27 +11:00
Dion Moult ce6350a52f New clean wireframes operator to easily apply edge split modifier to nicer drawings 2020-12-10 13:50:43 +11:00
Dion Moult b65c1e94ad Purge old experimental painter algorithm code for vector background elements
In preparation to migrate this to C++
2020-12-09 10:38:13 +11:00
Dion Moult 0387783e9d Minor fix 2020-12-07 17:28:16 +11:00
Dion Moult b72b2aa7d7 Package new BIMTester for the BlenderBIM Add-on 2020-12-07 16:42:01 +11:00
Dion Moult c1bbb1e721 You can now bake parametric geometry to meshes 2020-12-07 15:33:51 +11:00
Dion Moult 0d28e741fc Fix bug where spatial elements didn't get styles exported correctly 2020-12-06 19:10:03 +11:00
Dion Moult 0d03b4e008 Allow graceful migration of IFC entities when exporting so the user doesn't need to fix every invalid schema attribute themselves3RlG$Bayj3kPlwh4EEvXJP 2020-12-06 11:38:02 +11:00
fbpyr 981f0c23c7 apply matrix to object in BlenderClasher
Since scale is not supported in fcl upstream as found in https://github.com/IfcOpenShell/IfcOpenShell/issues/1129
2020-12-04 19:05:53 +11:00
Dion Moult 884e8a5663 Fix #1071. New IFC file version 2X3<->4 upgrader and downgrader IfcPatch recipe 2020-12-04 11:52:18 +11:00
Dion Moult 06685f9768 Fix example script for printing out properties. See #1145. 2020-12-04 10:59:59 +11:00
Dion Moult 9a20de914b Add new workaround for the DESITE BIM application 2020-12-04 09:23:44 +11:00
Bernd Hahnebach 26f6e875ed bimtester: add more ifc file tests 2020-12-04 09:20:41 +11:00
Bernd Hahnebach cda131d6c1 bimtester: move ifc steps in separte module 2020-12-04 09:20:41 +11:00
Dion Moult e1fa6fb306 You can now apply drawing styles to elements with material set usages 2020-12-03 22:17:46 +11:00
Dion Moult 679c2bef02 Fix bug where aggregates cause drawing generation to fail 2020-12-03 21:52:17 +11:00
Dion Moult 8bb157ce0a Auto-add the currently loaded IFC when creating a drawing for the first time 2020-12-03 21:51:14 +11:00
Dion Moult bdaf8cd0f3 Fix import bug where duplicate material names with accents cause import to fail 2020-12-03 21:44:20 +11:00
Dion Moult 4e62c276ee Fix #1111 - issue where sometimes class and product dropdown gets out of sync. Also new utility function to query is_a() in the schema. 2020-12-02 09:51:00 +11:00
Dion Moult c70b41f21a Fix #1112. You can now tag material attributes. 2020-12-02 09:03:18 +11:00
Dion Moult aaf9b10a9e Fix #1128 with improved IFCCSV description 2020-12-02 08:50:15 +11:00
Thomas Krijnen 9281c8fbce #1126 Update serialization for trimmed curve 2020-12-01 14:03:07 +01:00
Dion Moult 5f76062575 Fix issue where invalidly declared representation contexts can confuse drawing creation 2020-12-01 22:26:02 +11:00
Dion Moult efd2663f15 Support layer set material names classes in drawings 2020-12-01 22:25:30 +11:00
Dion Moult 823b10e323 Dumb grids are auto placed in an IfcSite if it can be detected for convenience 2020-12-01 21:37:47 +11:00
Dion Moult 431de8d5a1 Package ExtractElements IfcPatch recipe with the BlenderBIM Add-on 2020-12-01 21:29:09 +11:00
Dion Moult dce730d9c2 Ship optimise IfcPatch recipe with BlenderBIM 2020-12-01 21:24:30 +11:00
Vincent Cadoret 50d7efa99b move import statements to make dependencies optional
so regular clashing doesn't break if the dependencies are not present.
2020-12-01 14:06:57 +11:00
Vincent Cadoret 957c719224 Skip clash_set if it has 0 clashes 2020-12-01 14:06:57 +11:00
Vincent Cadoret b407b815e2 Allow selection of max grouping distance in UI 2020-12-01 14:06:57 +11:00
Vincent Cadoret ac12a6785c Added a button to Load the smart clash groups for the active clash set 2020-12-01 14:06:57 +11:00
Vincent Cadoret 8aae7c95e6 Rename IsolateSmartGroup operator to SelectSmartGroup 2020-12-01 14:06:57 +11:00
Vincent Cadoret bbde4e7522 Added a ui to select input and output files to clash smart grouper. 2020-12-01 14:06:57 +11:00
Vincent Cadoret 803a4b6c12 cleanup unnecessary imports and prints 2020-12-01 14:06:57 +11:00
Vincent Cadoret 5a06bd5a57 Minimum viable protoype for Smart Clash Grouping completed 2020-12-01 14:06:57 +11:00
Vincent Cadoret 51dca4329c Add a more useful error message when no clashes are loaded for the given clashset 2020-12-01 14:06:57 +11:00
Vincent Cadoret 1921b4cecf Added clash manager basic interface to load smart grouped clashes 2020-12-01 14:06:57 +11:00
Dion Moult f7e05e011a Merge branch 'fix-roundtrip' into v0.6.0 2020-12-01 10:47:49 +11:00
Dion Moult 2596f90015 Fix #952. Implement roundtripping of all representation contexts. 2020-12-01 10:46:28 +11:00
Bernd Hahnebach 24c542e33a bimtester: small code improvements in gui 2020-11-30 17:54:10 +11:00
Dion Moult 7b7f756506 Add support of exporting material sets for construction types 2020-11-30 11:28:32 +11:00
Dion Moult 9ca124bf2f New UI to show inherited materials from related types 2020-11-30 11:27:51 +11:00
Dion Moult c9666015bb Fix error when creating a drawing of a file with material set usages 2020-11-30 09:51:42 +11:00
Thomas Krijnen 8815b74ff8 thanks @tpaviot 2020-11-29 16:16:11 +01:00
Dion Moult 98f45817a6 Improved UI for psets and qtos with collapsible panels and improved readibility 2020-11-29 23:24:56 +11:00
Dion Moult e3f61510ad The object psets panel now show inherited psets too 2020-11-29 22:26:51 +11:00
Bernd Hahnebach 864dcffef8 bimtester: startscript, add argument to start gui with some start directories 2020-11-28 08:27:24 +11:00
Bernd Hahnebach fae899823b bimtester: rename startscript, if startscript and package have the same name it is difficault to import the startscrip as the package has priority 2020-11-28 08:27:24 +11:00
Bernd Hahnebach 26d35a7644 bimtester: improve the signatures of the methods to run behave in temporary directory 2020-11-28 08:27:24 +11:00
Dion Moult 4a5fe83dab Fix minor regression where the section cutting plane doesn't work if you haven't selected an object 2020-11-27 22:07:32 +11:00
Dion Moult 78666caa47 Minor improvement to roundtripping. Combined with 2.91 booleans, this rocks. 2020-11-27 22:02:12 +11:00
Dion Moult 3ad2d0eaac Fix import bug where some IfcOpeningElements aren't put in the openings collection properly 2020-11-27 22:01:43 +11:00
Dion Moult 7ad35249b8 IfcOpeningElements now show up as wireframe for convenience by default 2020-11-27 22:01:15 +11:00
Dion Moult 259d467164 Add experimental support for non-IFC Blender clashing. See #1129. 2020-11-27 18:18:23 +11:00
Dion Moult cfa97be080 Be less accommodating to invalid Revit grids. See #1133. 2020-11-27 12:14:08 +11:00
Dion Moult fddea742b8 Support invalid IfcGrid elements coming from Revit. See #1133. 2020-11-27 09:31:00 +11:00
Bernd Hahnebach 6ebb69f62e bimtester: steps, improve imports 2020-11-27 09:07:01 +11:00
Dion Moult b0097d35b4 Merge branch 'v0.6.0' of github.com:IfcOpenShell/IfcOpenShell into v0.6.0 2020-11-26 21:31:52 +11:00
Dion Moult 15ea15d9ab Roundtripping geometry now works for one to many styled item relationships 2020-11-26 21:31:42 +11:00
Bernd Hahnebach b88eb37bdf bimtester: improve imports in steps 2020-11-26 19:00:57 +11:00
Bernd Hahnebach 5ce334019c bimtester: merge guibimtester into bimtester module 2020-11-26 19:00:57 +11:00
Bernd Hahnebach 15199152ac bimtester: code formating and comments 2020-11-26 19:00:57 +11:00
Dion Moult e346d5e3c6 Support invalid empty IFC properties coming from ArchiCAD. See #1131. 2020-11-26 12:48:03 +11:00
Dion Moult 957cc02157 Support exporting downgraded material definitions to IFC2X3 from IFC4 2020-11-26 09:53:05 +11:00
Bernd Hahnebach 32f99428c3 bimtester: move code into a package directory 2020-11-26 08:30:03 +11:00
Thomas Krijnen acb518613b #1118 check parallel and shape type 2020-11-25 11:02:57 +01:00
Dion Moult 25a26db360 Exporting classifications to IFC2X3 (including downgrading) is now supported 2020-11-25 20:35:11 +11:00
Dion Moult 5cbc924c85 Merge branch 'v0.6.0' of github.com:IfcOpenShell/IfcOpenShell into v0.6.0 2020-11-25 20:17:47 +11:00
Dion Moult 4bff3dc3dd Roundtripping native geometry now works across different IFC schema versions 2020-11-25 20:17:30 +11:00
Bernd Hahnebach a5b00f1ac9 bimtester: pass the ifc base file name to behave 2020-11-25 19:29:47 +11:00
Bernd Hahnebach a9a8213731 bimtester: comments and code formating 2020-11-25 19:29:47 +11:00
Dion Moult 33b2661464 Merge branch 'v0.6.0' of github.com:IfcOpenShell/IfcOpenShell into v0.6.0 2020-11-25 13:15:20 +11:00
Dion Moult 3085c88647 New experimental IfcOpenShell IFC2X3<->IFC4 version migration utility 2020-11-25 13:13:46 +11:00
Bernd Hahnebach 7ec91728be bimtester: remove the just added licence headers to avoid any confusion 2020-11-25 08:56:03 +11:00
Thomas Krijnen b1c4481795 Option to disable boolean results (sets result to first operand) 2020-11-24 16:58:05 +01:00
Bernd Hahnebach dd4902be18 bimtester: fix licence header 2020-11-24 18:04:34 +11:00
Dion Moult c057cb9aab Recreating round-tripped representations now preserves surface styles 2020-11-24 12:09:49 +11:00
Dion Moult e2543954c0 Native geometry round-tripping now works with decoupled surface styles 2020-11-24 10:18:16 +11:00
Bernd Hahnebach 7ba812c6c9 bimtester: some restructure work 2020-11-24 08:21:19 +11:00
Thomas Krijnen b15acfed42 Update IfcGeomShapes.cpp 2020-11-23 11:21:14 +01:00
Thomas Krijnen 648c976dd4 Remove debugging code #1121 2020-11-23 11:20:55 +01:00
Dion Moult dd0a3ad7b8 Minor fix. Forgot to commit when I cleaned up the simpler copy attributes operator. 2020-11-23 16:01:21 +11:00
Dion Moult b37ddb766f Native representation roundtripping now supports layer assignments and will "fix" representations to use subcontexts properly. See #952. 2020-11-23 16:00:45 +11:00
Dion Moult 7cc832ea15 Fix warnings in new simplified copy attribute to selection operator 2020-11-22 09:29:33 +11:00
johanrd fc5fcef079 Fix for #1119 (regression from 0984751) 2020-11-21 10:53:00 +01:00
Dion Moult 280466df53 Fix bug where a material wouldn't get assigned for multiple mapped representations 2020-11-20 23:31:52 +11:00
Dion Moult 2bd44e2fe8 Add support for importing IfcMaterial description and category attributes 2020-11-20 23:31:29 +11:00
Dion Moult 9a87f3673a Vendor workaround "treat styled item as material" deprecated, as new material & style system supports styles much better 2020-11-20 20:30:30 +11:00
Dion Moult 5af85ee7a3 Add support for IFC2X3 material data imports 2020-11-20 19:49:50 +11:00
Dion Moult e150e5f6c3 Fix default layer category to none, not load bearing, in case we import IFC2X3 where this is blank 2020-11-20 19:49:04 +11:00
Dion Moult 44dc5a92b7 Fix bug where no colour is set if only a styled item has a style but a material has no representation 2020-11-19 22:38:23 +11:00
Laurens Oostwegel 1f938c7f1a Deleted IfcWall duplicate in defaut styles 2020-11-19 20:35:56 +11:00
Dion Moult 225f8c788b Bump IFCJSON dep 2020-11-15 22:15:53 +11:00
Dion Moult 17d069e9b5 Bump IfcOpenShell & minor fix 2020-11-15 21:08:25 +11:00
Dion Moult 21b9557b97 Minor fix 2020-11-15 20:26:22 +11:00
Dion Moult 76b29cb174 Presentation layers are now assigned to meshes, and implement representation assignment. See #1109. 2020-11-15 17:00:50 +11:00
Dion Moult 1c24a59075 Merge branch 'v0.6.0' of github.com:IfcOpenShell/IfcOpenShell into v0.6.0 2020-11-14 22:18:14 +11:00
Dion Moult 9080744669 Minor fixes to new presentation layer features by Krande 2020-11-14 22:17:56 +11:00
Thomas Krijnen 47cd183e61 submodule 2020-11-14 11:04:12 +01:00
Dion Moult 9dcb2f9094 Merge branch 'Krande-presentationlayer' into v0.6.0 2020-11-14 19:55:09 +11:00
Dion Moult 2e762854fa Merge branch 'presentationlayer' of https://github.com/Krande/IfcOpenShell into Krande-presentationlayer 2020-11-14 19:54:51 +11:00
Dion Moult 819b62a747 Fix bug where a styled item could be incorrectly assigned if an element has more than one representation context 2020-11-14 14:33:58 +11:00
Dion Moult 599089ad67 Now materials that aren't also used as a styled item can be exported 2020-11-14 13:36:49 +11:00
Dion Moult ddfe0e0c98 IFCCSV will now skip GUIDS that it cannot find 2020-11-14 10:11:36 +11:00
Dion Moult 27a8e7c89a IFCCSV now continues to edit other attributes even if it cannot change a class 2020-11-14 10:07:08 +11:00
Kristoffer b9e34a107b Prepare for pull request 2020-11-13 14:45:08 +01:00
Dion Moult df3bb0428c Fix #1103 bug where importing multiple grids with the same name fails 2020-11-13 22:01:49 +11:00
htlcnn 728b60e8c3 remove unused imports 2020-11-13 20:13:07 +11:00
Dion Moult 808ef1a19e New UI to manage material psets instead of needing to use CSVs 2020-11-11 23:02:07 +11:00
Dion Moult d6397baa59 Blender materials now map 1:1 to IfcMaterial and can store attributes 2020-11-11 22:13:50 +11:00
htlcnn ecdc05d265 remove unused IfcElementType dropdown items 2020-11-11 11:35:14 +11:00
Bernd Hahnebach 7bb5860200 bimtester: fix in report creation on empty steps 2020-11-11 11:34:55 +11:00
Dion Moult b3d180a288 Add workaround to guess geolocation data from Revit 2020-11-10 22:43:05 +11:00
Dion Moult a9ae92883d Add support for importing material data for type elements with no representation geometry 2020-11-10 18:02:43 +11:00
Dion Moult 1866b7852a Provide support of upgrading a deprecated material list as a constituent set during import 2020-11-10 17:50:04 +11:00
krande aca90b38c8 further experimentation. Still not able to hide\unhide 2020-11-09 18:08:03 +01:00
Kristoffer 2eae3a70d9 Added support for importing Presentation Layers from Ifc 2020-11-09 16:44:56 +01:00
Kristoffer 26510de9e0 Cleaned up formatting to align with master v0.6 branch 2020-11-09 13:40:14 +01:00
Kristoffer 2a585c98d8 Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into presentationlayer 2020-11-09 13:35:15 +01:00
Kristoffer 9f86396edf Finished with creating, exporting Presentation Layer. Will start work on importing Presentation layer 2020-11-09 13:34:55 +01:00
Dion Moult 3477d3f1a2 Implement import support for material profile sets 2020-11-09 21:03:21 +11:00
htlcnn caa1677181 rearrange logic 2020-11-09 20:41:11 +11:00
htlcnn 84509b7cc2 add IfcClass selector for Ifc By Type node 2020-11-09 20:41:11 +11:00
Luis C. Pérez Tato 09847513ab Fixes #1038 2020-11-09 09:19:46 +01:00
Dion Moult 40e30eaa36 Support exporting more metadata labels like names and descriptions for profile sets 2020-11-09 19:15:23 +11:00
Dion Moult 527e6b0ca7 Minor fix 2020-11-09 15:26:16 +11:00
Dion Moult 8bdd24ba16 Add support for importing all attributes of material layers and consitutents 2020-11-09 15:01:39 +11:00
Dion Moult 4a6c980779 You can now rewind a breadcrumb trail when inspecting IFCs and show attribute lists 2020-11-09 11:45:53 +11:00
johltn 47af56cfa0 Fix typo 2020-11-08 18:13:13 +01:00
johltn e186bc8e15 Update 2020-11-08 18:08:16 +01:00
tpaviot ba094f2967 [clang-warning-fix] Removed unused format_edge and format_pnt functions from IfcGeomFunctions.cpp 2020-11-08 15:52:54 +01:00
tpaviot 8c507ea007 [g++-warning-fix] Fix wrong initialization order in SvgSerializer.h 2020-11-08 15:52:54 +01:00
tpaviot 640dc7cf5a [g++-warning-fix] Fix ambiguous parenthesis in SvgSerializer.cpp 2020-11-08 15:52:54 +01:00
tpaviot 28d9bccb6e [g++-warning-fix] Fix sign comparison in IfcGeomServer.cpp 2020-11-08 15:52:54 +01:00
tpaviot 1aa3e70d89 [g++-warning-fix] Removed unused function 2020-11-08 15:52:54 +01:00
tpaviot e4662cf209 [g++-warning-fix] Fix wrong enum compare 2020-11-08 15:52:54 +01:00
tpaviot f17702c66a [g++-warning-fix] Fix sign comparison, unused function, unused variables in IfcGeomShapes.cpp 2020-11-08 15:52:54 +01:00
tpaviot b8e0c21dcc [g++-warning-fix] Fixed comparison between signed and unsigned integer expressions 2020-11-08 15:52:54 +01:00
tpaviot 4ea56ba987 [g++-warning-fix] Fixed initialization reorder 2020-11-08 15:52:54 +01:00
tpaviot e793683668 [g++-warning-fix] Removed unused variable 2020-11-08 15:52:54 +01:00
johltn 9645b9f189 Update 2020-11-08 14:37:04 +01:00
johltn a0d2bc25b1 Update 2020-11-08 14:02:50 +01:00
Kristoffer a1cbf9a055 minor improvements in ui,export and operator 2020-11-08 13:52:20 +01:00
johltn 34e5cd9d16 Update 2020-11-08 13:37:01 +01:00
Dion Moult b37ea77934 Implement IFC element inspector interface, useful for training and teaching OpenBIM 2020-11-08 21:52:34 +11:00
johltn 7827b15479 Update 2020-11-08 11:32:09 +01:00
johltn f8e57b04b0 Update 2020-11-08 11:30:40 +01:00
Kristoffer 6423d13054 Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into presentationlayer 2020-11-08 11:25:04 +01:00
johltn 3ca2a8be39 Update 2020-11-08 10:42:17 +01:00
johltn 388ac5740d Update 2020-11-08 10:30:23 +01:00
johltn 7825adf8e0 Update Travis 2020-11-07 20:55:54 +01:00
johltn 1eaa2ca8b4 Update Doxyfile 2020-11-07 19:30:51 +01:00
johltn e366c15dde Update conf.py 2020-11-07 19:12:33 +01:00
johltn 63f0c87920 Try to fix index.rst and also incude python docs 2020-11-07 18:55:39 +01:00
johltn 247a285b68 Test customized Doxyfile 2020-11-07 18:41:15 +01:00
johltn ad9382de08 Create nojekyll file to handle underscore 2020-11-07 07:55:33 +01:00
Bernd Hahnebach 05c952073b bimtester: some small improvements 2020-11-07 10:24:08 +11:00
Kristoffer 9a385c2118 minor improvements 2020-11-06 16:53:42 +01:00
Kristoffer 5928ddba40 Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into presentationlayer 2020-11-06 12:24:06 +01:00
Dion Moult 19b867dae8 Full support added for exporting material layer and constituent set attributes 2020-11-06 21:57:34 +11:00
Dion Moult adf9ac52b2 Revert "add flake8 to travis-ci"
This reverts commit 990e6ee24e.
2020-11-06 20:53:02 +11:00
htlcnn 7c63370548 update travis-ci badge 2020-11-06 14:17:29 +11:00
htlcnn b8c3da4951 fix EnumProperty items 2020-11-06 13:52:22 +11:00
htlcnn 322f3773e4 Ifc By Type dropdown 2020-11-06 08:18:15 +11:00
htlcnn 990e6ee24e add flake8 to travis-ci 2020-11-06 08:18:15 +11:00
ofskrand 87e25cc597 Attempt to simplifying assigned items pointer. Stuck on read only 2020-11-05 16:32:49 +01:00
ofskrand 5009371e0f Ran into error when attempting to append EnumProperty. How is that done? 2020-11-05 13:54:20 +01:00
Thomas Krijnen f5c57d2a1c #1078 check optional opening attributes 2020-11-05 13:37:21 +01:00
Dion Moult ba09e08da5 Create new UI to manage material constituents 2020-11-05 22:41:43 +11:00
Dion Moult 4b2c129a4e Add IFC export to Navisworks workaround to enforce triangulation 2020-11-05 22:01:53 +11:00
Dion Moult 2fb67b09cd New category for IFC export workarounds for RIB iTWO costing program 2020-11-05 21:47:53 +11:00
Dion Moult 50b8718e3a Fix bug where setting north angle from a geolocated IFC was wrong 2020-11-05 21:37:26 +11:00
johltn e306da65c9 Update Travis file 2020-11-05 11:16:54 +01:00
johltn e57ffa9447 Change username 2020-11-05 09:04:01 +01:00
johltn 35a668f3a8 Add sudo to mv command 2020-11-05 08:38:17 +01:00
Dion Moult 6ecf7a80f5 You can now convert from global to local coordinates 2020-11-05 18:17:45 +11:00
johltn 4fe44d0f47 Fix directory path 2020-11-05 08:07:14 +01:00
ofskrand 227ec74a51 Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into presentationlayer 2020-11-05 08:00:24 +01:00
ofskrand 9560211307 debugging collection property 2020-11-05 07:57:24 +01:00
johltn 617cad0b1a Check current dir 2020-11-05 07:44:34 +01:00
Dion Moult 30afd6c95b New fancy UI for material layer set management 2020-11-04 21:28:47 +11:00
Cyril Waechter 04943b216b Add pyproject.toml
Following #1057. For this project black should apply a line lenghth of 120.
This is automatically set up with pyproject.toml
2020-11-04 18:54:58 +11:00
ofskrand aed4706e4c updated ui with Presentation Layer 2020-11-04 08:52:20 +01:00
ofskrand eeef2cfb3f Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into presentationlayer 2020-11-04 07:57:40 +01:00
Dion Moult 3240ec63b7 New recipe to extract out elements into its own IFC 2020-11-04 16:47:49 +11:00
Kristoffer ae25d97307 minor change [skip ci] 2020-11-03 15:55:08 +01:00
Dion Moult b07d999bce Fix #946. More intuitive UI for reassigning IFC class of the active object. 2020-11-03 22:59:35 +11:00
Dion Moult ad1cc7f0b9 Fix #1011. Add example tooltips of add-on preferences external commands. 2020-11-03 21:14:39 +11:00
Dion Moult 81cba70f33 You can now add / remove qtos in bulk. See #1060. 2020-11-03 21:04:50 +11:00
Dion Moult 8b0f0fe60f You can now add / remove psets in bulk. See #1060. 2020-11-03 20:59:48 +11:00
htlcnn cde2d55694 add .git-blame-ignore-revs 2020-11-03 17:15:05 +11:00
Dion Moult 67baad5182 Fix #971. New utility function to query which psets/qtos apply to a class. 2020-11-03 09:53:03 +11:00
Kristoffer d9ecd20414 testing with layers [skip ci] 2020-11-02 15:14:33 +01:00
johltn 0def2a9b13 See if output exists 2020-11-02 13:14:46 +01:00
johltn a75ced62ce Try first commit 2020-11-02 12:43:17 +01:00
Dion Moult 96b8bc638b Add support for deleting attributes in bulk. See #1060. 2020-11-02 22:12:31 +11:00
Dion Moult ba8689468e You can now add attributes in bulk by selecting multiple before adding. See #1060. 2020-11-02 22:05:47 +11:00
Kristoffer 2b1a7eec47 Merge remote-tracking branch 'origin/presentationlayer' into presentationlayer
# Conflicts:
#	src/ifcblenderexport/blenderbim/bim/prop.py
#	src/ifcblenderexport/blenderbim/libs/site/packages/.gitignore
2020-11-02 07:15:05 +01:00
Kristoffer 35bcaa804b testing with layers [skip ci] 2020-11-02 07:13:51 +01:00
Dion Moult 8660d22476 Minor fix. 2020-11-02 11:26:31 +11:00
Dion Moult 3bc4e756cb Add support for case insensitive file units on import 2020-11-02 10:20:44 +11:00
htlcnn 163075a821 black ifcblenderexport 2020-11-02 08:28:02 +11:00
htlcnn 286c77e3b0 black ifcopenshell-python 2020-11-02 08:28:02 +11:00
krande 19c8d13e86 Started on PresentationLayer support. Made necessary change to props set_unit enumerate list of tuples to adhere to actual IFC naming. 2020-11-01 15:59:43 +01:00
htlcnn 2c9d6a47f4 black ifcsverchok 2020-11-01 23:50:02 +11:00
htlcnn 4a6ec11f6f black ifccsv, ifcdiff 2020-11-01 23:50:02 +11:00
htlcnn d169a964dd black ifccobie 2020-11-01 23:50:02 +11:00
htlcnn 892be5444c black ifcclash 2020-11-01 23:50:02 +11:00
htlcnn d6881e833d black ifc2ca 2020-11-01 23:50:02 +11:00
htlcnn c14f5eeca0 black ifcbimtester 2020-11-01 23:50:02 +11:00
johltn c263012287 Modify conf 2020-11-01 12:13:54 +01:00
johltn 5aae70875d Change doxygen output directory abd try to commit generated docs 2020-11-01 12:03:49 +01:00
johltn 0fb6d5a903 Re Comment python doc generation in CMake 2020-11-01 11:09:00 +01:00
Dion Moult 1a570aea83 Fix #1063. Log error if you try to export an abstract IFC class. 2020-11-01 19:00:45 +11:00
johltn 2669819292 Install sphinx after exhale 2020-11-01 08:39:10 +01:00
johltn a9c986020b Try other version of sphinx 2020-11-01 08:28:07 +01:00
johltn 9d6468bbf6 Install sphinx with apt-get 2020-11-01 08:12:01 +01:00
Ryan Schultz 5c89a386ca added drop down menus for area_unit and volume_unit 2020-11-01 15:29:42 +11:00
johltn 348c58a387 Uncomment test section 2020-10-31 20:43:18 +01:00
johltn cb0a5c90e3 Test sphinx directly from Travis 2020-10-31 20:02:04 +01:00
johltn 6267187950 New test 2020-10-31 19:44:09 +01:00
johltn 3575aff235 Comment test section 2020-10-31 19:15:24 +01:00
johltn 54d5d4cc63 Try pip install for sphinx 2020-10-31 16:35:35 +01:00
johltn f2bdcda369 Try without python docs generation 2020-10-31 15:31:23 +01:00
johltn 4020e9a1ce Update conf.py 2020-10-31 15:20:35 +01:00
johltn 1d51d6cac0 Update conf.py 2020-10-31 15:03:30 +01:00
Dion Moult 9447e87ebd Add support for rounding metric and imperial units in drawings 2020-10-31 21:46:09 +11:00
johltn d1f8832af6 Cleaner RST file 2020-10-31 11:21:30 +01:00
Thomas Krijnen b08346cc64 #1054 initialize memory in case of too few attribute values 2020-10-30 09:59:01 +01:00
Dion Moult 3fdcf3c7b7 Add support for multiple dimension objects per view 2020-10-30 10:58:02 +11:00
Dion Moult 84c0ad9ded Auto fix incorrect file format settings when creating drawings 2020-10-30 09:17:57 +11:00
Dion Moult 0061d9d1a9 Fix bug where Views wasn't allowed to be in the IfcProject 2020-10-30 09:11:43 +11:00
johltn 6e589527db Update CMakeLists.txt 2020-10-29 20:55:42 +01:00
johltn cac5203523 Find Sphinx module 2020-10-29 20:43:24 +01:00
johltn dafa6a546c Install doxygen and sphinx 2020-10-29 20:22:34 +01:00
Dion Moult e08260d6a2 Whoops. See #1056. 2020-10-29 20:49:49 +11:00
johltn e42f96faa7 Test modif on Travis file 2020-10-29 07:21:52 +01:00
Dion Moult 23abd3def4 Fix #1056. Fix error in case you switch drawing styles and the style it used to have was deleted. 2020-10-29 16:27:48 +11:00
htlcnn 5e844682ea unformat log messages 2020-10-29 09:15:07 +11:00
johltn b2e7809ee5 Test Travis 2020-10-28 11:44:38 +01:00
johltn fb75906fab Test Travis 2020-10-28 11:26:02 +01:00
johltn 0a6d5a733a Submodule 2020-10-28 11:07:19 +01:00
Dion Moult f15d62c35e Merge branch 'v0.6.0' of github.com:IfcOpenShell/IfcOpenShell into v0.6.0 2020-10-28 20:20:52 +11:00
Dion Moult 970f735b76 Fix bug where non uniform translations of spatial elements are exported wrongly. See #1052. 2020-10-28 20:20:25 +11:00
Thomas Krijnen aa49db07d3 Validate entity is_abstract in ifcopenshell.geom.validate 2020-10-27 11:41:39 +01:00
Dion Moult 6fd5f8d8c7 Support import of IFC2X3 document information / reference date times and formats 2020-10-27 11:08:22 +11:00
Thomas Krijnen e70241fc53 #1047 add swig array wrapper 2020-10-26 14:10:13 +01:00
Dion Moult e68f25bcfb ResetAbsoluteCoordinates recipe now attempts to avoid changing object placement coordinates, instead focusing on geometry coordinates.
This prevents a double up when combining with the OffsetObjectPlacement recipe when doing tricky patching.
2020-10-26 14:59:18 +11:00
Dion Moult 3bd58b7738 You can now specify user coordinates to ResetAbsoluteCoordinates recipe 2020-10-26 14:58:23 +11:00
Dion Moult 76af85264f Fix bug where attributes wouldn't import for some IFC classes 2020-10-26 14:25:39 +11:00
Dion Moult 473d97649c Implement workaround when importing ProStructures files that aggregate elements of different types together 2020-10-26 14:06:06 +11:00
Dion Moult e1c1cf6c9b Implement model offset workaround for Bentley ProStructures. See #1047.
In an ideal world, projects are geolocated properly in IFC. If not, they tend to store it in the spatial structure placement which is then inherited (e.g. Revit) or in the geometry coords themselves (e.g. 12D). In the case of Bentley ProStructures, it seemas s though large coords can be found in both object placements and geometry coords and who knows where else. In this scenario, a model offset is a clean solution rather than patching. However, it will lead to mesh inaccuracies in Blender due to the mixing of large numbers in both object locations and geometry coordinates.

Also model offsetting is useful to have available in general.
2020-10-26 13:36:18 +11:00
johltn 2243e0ab14 Set BUILD_DOCUMENTATION to OFF by default and ignore ifcopenshell python documentation generation 2020-10-25 12:52:48 +01:00
Johan Luttun a25c6245bf Update conf.py 2020-10-25 12:28:51 +01:00
Johan Luttun 0b6d55a8a3 Delete make.bat 2020-10-25 12:20:48 +01:00
Johan Luttun 9eaeea5462 Delete Makefile 2020-10-25 12:20:38 +01:00
Johan Luttun 483fb34e3a Delete Doxyfile.in 2020-10-25 12:20:26 +01:00
Johan Luttun 001fbeb525 Delete Doxyfile.out 2020-10-25 12:20:16 +01:00
Johan Luttun 8fd685b4dc Delete Doxyfile 2020-10-25 12:20:03 +01:00
johltn 1f76f73aa6 Upload files to generate documentation 2020-10-25 12:17:21 +01:00
Thomas Krijnen ef0f00792a #1034 Compound fallback for boolean union 2020-10-25 11:57:59 +01:00
johltn 5ed0b4d972 Added test submodule 2020-10-25 10:45:43 +01:00
johltn f3282003f4 Modify gitignore 2020-10-25 10:44:57 +01:00
johltn b534dc2199 Add Optimise recipe to ifcpatch 2020-10-25 18:22:33 +11:00
Dion Moult 5df723b9db Package IFCSverchok 2020-10-25 18:17:10 +11:00
Dion Moult b5d43b1d58 Fix #1036. Fix export issue where units aren't set explicitly, or set to adaptive. 2020-10-25 13:12:14 +11:00
Dion Moult 4ebed8d029 Fix export of classifications if they are only applied to a type or spatial element, not a regular element. See #1031. 2020-10-25 12:48:35 +11:00
johltn 25a5b435a6 Automatic documentation generation 2020-10-24 14:48:03 +02:00
Dion Moult 8872a13fd8 Classification trees are now stored in the blend instead of an external file for portability. See #1036. 2020-10-24 21:35:01 +11:00
Dion Moult ee6e96c226 Auto add owner history on IFC2X3 so the user doesn't need to do that manually 2020-10-24 18:20:42 +11:00
Dion Moult 4013a7e8b7 IFC Clash now uses iterator filters for faster clashing when using filters 2020-10-22 13:01:04 +11:00
Dion Moult 1a09658ec9 Fix IfcClash bug where spatial elements wouldn't get affected by user filters 2020-10-21 23:14:42 +11:00
Dion Moult 982166ac62 Increase maximum contacts threshold default so that it works out of the box for larger projects 2020-10-21 23:14:09 +11:00
Dion Moult 44d6060924 IFC clash now optimistically skips clashes that are likely to be merely coincident, thus resulting in less false positives 2020-10-21 23:13:43 +11:00
Jesusbill 95d6685597 add curve connections 2020-10-14 11:13:23 +02:00
Thomas Krijnen a625a8aea3 Update img urls 2020-10-13 17:13:50 +02:00
Thomas Krijnen 7131c62600 Add docs/geom/settings 2020-10-13 17:12:24 +02:00
Dion Moult 88e20582dd New node to get IFC attribute 2020-10-13 20:30:00 +11:00
Dion Moult 56209fa0ec New IFC get property node 2020-10-13 20:25:35 +11:00
Dion Moult d7e2f29eae New node to read IFC entities 2020-10-13 20:13:59 +11:00
Dion Moult 2ead44e1c5 New node to generate IFC guid 2020-10-13 19:40:42 +11:00
Thomas Krijnen fd18916b20 Add express.bnf to install 2020-10-11 14:23:54 +02:00
Thomas Krijnen d7f246c86d #1020 Map BezierCurve to BSplineWithKnots 2020-10-11 10:38:38 +02:00
Dion Moult 38e5321dbb Add IFC remove node 2020-10-11 13:13:33 +11:00
Dion Moult 275fa479d6 New IFC add node 2020-10-11 12:32:23 +11:00
CyrilWaechter 60147a8ec9 Fix collections deprecation warning
```python
ifcopenshell/geom/occ_utils.py:28ifcopenshell/geom/occ_utils.py:28
  /home/cyril/git/BIMxBEM/ifcopenshell/geom/occ_utils.py:28: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.9 it will stop working
    from collections import namedtuple, Iterable
```
2020-10-10 10:30:08 +02:00
Dion Moult 8b982df1c0 New IFC create shape node for Sverchok 2020-10-10 10:21:17 +11:00
Dion Moult 688c799d1b New select blender objects node - select objects in the Blender scene based off entities in an IFC file 2020-10-09 21:17:18 +11:00
Dion Moult cc778778ee Add new by query IFC node 2020-10-09 21:05:00 +11:00
Dion Moult b5fa993531 Fix #1007. Bug where box representations don't respect project units. 2020-10-09 20:42:07 +11:00
CyrilWaechter 85e7ed380e Import materials psets and display it
Import psets similarly to objects.
Display in the UI similarly to objects.
Basic handling for ConstituentSet and MaterialList.
2020-10-09 13:22:34 +11:00
Thomas Krijnen fcc056e204 #1032 Consider swept disk Start- and EndParam on single circle/ellipse edge 2020-10-08 16:51:01 +02:00
Thomas Krijnen 16663d4db3 Swept disk revolution processing on face instead of wire 2020-10-08 16:50:05 +02:00
Thomas Krijnen c24a91c42a #1030 Check for intersecting axis and sweptarea 2020-10-08 16:23:55 +02:00
Thomas Krijnen 681fd43599 #1019 check if trimmedcurve compcurve parent has siblings 2020-10-08 13:05:06 +02:00
Dion Moult 1fa7791b8b Three new nodes for IfcSverchok. By ID, By Guid, and By Type 2020-10-08 20:22:18 +11:00
Thomas Krijnen 38e5b17b0f Update schema feature detection in serialization. #1020 2020-10-07 14:12:31 +02:00
Thomas Krijnen ac40b90f27 Python settings.__init__ and settings.__repr__ 2020-10-05 15:39:19 +02:00
Thomas Krijnen 11657207c2 Python settings.__init__ and settings.__repr__ 2020-10-05 15:38:26 +02:00
Dion Moult 8982c8d045 Experimental create entity node created 2020-10-01 14:47:42 +10:00
Thomas Krijnen 373fd417eb #1022 2020-09-30 10:24:50 +02:00
fluider e3831be16e Warning iterator invalidation in removeEntity 2020-09-30 10:22:12 +02:00
Dion Moult b4f4d9b3c5 Improve prototype of native round-tripping by reading from original file and preserving styles 2020-09-28 22:14:03 +10:00
Thomas Krijnen e70d08c3a1 update_default_style() and default material for IfcSpace 2020-09-27 16:01:59 +02:00
Thomas Krijnen a13e28930a SVG drawing center option 2020-09-27 14:29:27 +02:00
Thomas Krijnen fd90d558b3 Correct X axis in SVG elevations 2020-09-27 14:28:47 +02:00
Thomas Krijnen 88bfa6fa96 smaller font-size in SVG print 2020-09-27 14:28:07 +02:00
Thomas Krijnen e17c6e4c9f SVG use stylesheet for all styling 2020-09-27 11:51:23 +02:00
Thomas Krijnen ee1e9b4aec --force-space-transparency 2020-09-27 11:51:00 +02:00
Thomas Krijnen 64153eb39a Fix SVG elevation direction 2020-09-27 11:10:44 +02:00
Thomas Krijnen f489487a20 --force-space-transparency option in IfcConvert 2020-09-27 10:43:11 +02:00
Walter Stanish 44306b036d Fix #1013 2020-09-24 11:51:33 +10:00
Thomas Krijnen bead7192fe #1008 via tpaviot 2020-09-22 14:10:38 +02:00
Dion Moult c01fd01c92 Implement read, create, and write for IfcSverchok 2020-09-22 21:22:10 +10:00
Thomas Krijnen 788c5b32f3 Proper orientation on SVG sections and elevations 2020-09-20 16:39:01 +02:00
Thomas Krijnen 08d773e346 Correctly name SVG section 2020-09-20 15:50:41 +02:00
Thomas Krijnen 5864de6dff Sort SVG drawings plans before elevations 2020-09-20 15:43:57 +02:00
Thomas Krijnen 2dd1a00834 Draw door arcs only on floor plans 2020-09-20 15:37:47 +02:00
Thomas Krijnen 76896fe9d6 write svg drawing name in data-name 2020-09-20 15:36:43 +02:00
Thomas Krijnen 46c82d07d0 submodule 2020-09-20 15:26:09 +02:00
Thomas Krijnen 3e9210d29f support for section and elevation references as annotation lines 2020-09-20 15:08:52 +02:00
Thomas Krijnen 0fba3bde2d Update Travis ICU version after dist upgrade 2020-09-20 14:05:25 +02:00
Thomas Krijnen ca8cf3620a Disable gltf validation on Travis. Stuck on building DART code. 2020-09-20 13:34:04 +02:00
Thomas Krijnen 8f43a65b74 Update travis to bionic 2020-09-20 13:14:47 +02:00
Thomas Krijnen bf57258895 #1005 Check degenerate edges on trimmed linear curves bounded by parameter value as well. 2020-09-20 12:59:11 +02:00
Dion Moult cbeaee8501 Fix bug where spatial elements with representations would import twice 2020-09-20 20:36:38 +10:00
Thomas Krijnen 32ebd08158 #996 Handle CompSolid/Compound in Slicer output 2020-09-20 11:12:57 +02:00
Thomas Krijnen 757e3b5272 #996 Correct thickness computation 2020-09-20 11:11:44 +02:00
Dion Moult 6cc4ce46c2 Proof of concept of native representation roundtripping 2020-09-17 17:28:17 +10:00
Dion Moult 2310bf628f You can now set facet tolerances (angular and deflection tolerance) when importing. See #766. 2020-09-15 15:59:52 +10:00
Dion Moult 85d77798c3 You can now modify IFC classes using IFC CSV 2020-09-15 14:58:17 +10:00
Dion Moult d4a629cbe8 Exporting now sets the IFC file if unset for convenience 2020-09-15 14:57:38 +10:00
Thomas Krijnen 3440dd4bf7 #766 2020-09-14 14:03:35 +02:00
Thomas Krijnen df886b3a6b Add missing express module init 2020-09-12 11:08:31 +02:00
Dion Moult ce831c0e05 Bump IfcOpenShell 2020-09-12 11:07:19 +10:00
Dion Moult 1a04e54f03 Fix bug where multiple presentation style assignments in IFC2X3 would get ignored 2020-09-12 10:59:45 +10:00
Dion Moult aac61a8948 Let users set their own app to open SVGs and PDFs 2020-09-11 19:02:33 +10:00
Dion Moult e25629e64f Remove papercuts when creating drawings to minimise manual tasks 2020-09-11 18:29:09 +10:00
Dion Moult 518c3eb6f0 Remove deprecated representation item operators in the mesh properties 2020-09-11 16:33:33 +10:00
Dion Moult c6a5bdf4eb Fix bugs in geocoding and geolocation MicroMVDs. 2020-09-10 17:43:30 +10:00
Dion Moult 9c591ce285 Add support for exporting addresses to the site and building 2020-09-10 16:11:33 +10:00
johltn a70429d2c8 New cmake for doc 2020-09-09 20:45:42 +02:00
Dion Moult 970832411c Enable exporting the plan context by default 2020-09-09 23:21:24 +10:00
Dion Moult 38765c8f0e Adding openings now detects if you've selected the filling object instead 2020-09-09 23:20:29 +10:00
Dion Moult 681083e757 Fix bug in autodetection of wireframe meshes in case you use a modifier 2020-09-09 23:20:01 +10:00
Thomas Krijnen ac2494968c Actualize trapezium profile per https://forums.buildingsmart.org/t/how-are-the-sides-of-ifctrapeziumprofiledefs-bounding-box-calculated-in-most-implementations/2945/8 2020-09-09 14:20:15 +02:00
Dion Moult 68a821b0ec Drawing styles store the render type and include outlines for more CAD-like drawings, and store shadow and lighting settings 2020-09-09 18:49:27 +10:00
Dion Moult 7f95759df0 Implement model federation MicroMVD for BIMTester 2020-09-09 16:44:36 +10:00
Dion Moult ca6adffc25 Fix incorrect auditing of geolocation MicroMVD in BIMTester 2020-09-09 14:21:10 +10:00
Dion Moult c58db675e3 You can now audit high poly objects using BIMTester 2020-09-09 11:23:11 +10:00
Thomas Krijnen 1494657368 Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.6.0 2020-09-08 14:40:37 +02:00
Thomas Krijnen d506ad77b7 python changes for latebound schema manipulation from python 2020-09-08 14:40:27 +02:00
Thomas Krijnen 95a29dec7b cpp changes for latebound schema manipulation from Python 2020-09-08 14:37:50 +02:00
Thomas Krijnen 27f358b314 Move express parser into module code 2020-09-08 14:36:57 +02:00
Thomas Krijnen fa4ff3e46b Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.6.0 2020-09-08 14:36:14 +02:00
Thomas Krijnen 44565b320c Submodule 2020-09-08 14:36:05 +02:00
Dion Moult f2de8ce8df Implement imperial formatting for drawing dimensions 2020-09-08 22:13:41 +10:00
Thomas Krijnen 6ceda94cd4 Submodule 2020-09-08 10:49:57 +02:00
Dion Moult 635e84610e Fix #986. Text IfcAnnotation now stores classes and metadata like all IFC objects in SVG. 2020-09-08 18:32:11 +10:00
Dion Moult 94bd8da75e Fix #985. If the active object is a camera, the temporary section plane matches the camera orientation. 2020-09-08 18:14:39 +10:00
Dion Moult 627be5725a Fix #983. Minor fix. 2020-09-08 17:17:45 +10:00
Dion Moult cd5786d2a7 Fix bug where sometimes you cannot add a context 2020-09-07 22:09:48 +10:00
Dion Moult 9c190d74bb Fix #981. Incorrect and inaccurate conversion to imperial units in quantities. 2020-09-07 21:46:13 +10:00
Dion Moult b43f77bc01 Fix #980. You can now have rotated text in drawings. 2020-09-07 19:54:36 +10:00
Dion Moult f351d80453 Fix #979. Include IfcSpace in the preset for cut objects for an overall plan / section 2020-09-07 18:16:39 +10:00
Dion Moult ffebc44c64 Make stroke linecaps use round ends. They're just nicer, you know. 2020-09-07 17:50:04 +10:00
Dion Moult 22d7aef7be You can now refresh the drawing list, in case you are manually creating drawings 2020-09-07 17:47:19 +10:00
Dion Moult 36bd903736 Switch between drawings with one click, with access from the 3D view 2020-09-07 17:08:04 +10:00
Dion Moult 24c00c0235 New feature to select high polygon meshes 2020-09-07 11:28:35 +10:00
Dion Moult 14c824dfee If objects are not selected, export entire project to IFC 2020-09-06 10:21:12 +10:00
Dion Moult dae5adc38b Dumb walls are now even simpler, using two modifiers by default. Plane walls are still available as an option. 2020-09-05 14:23:43 +10:00
Dion Moult 57bc6f7763 Fix #978. Minor fix. 2020-09-05 14:15:37 +10:00
Dion Moult 45b805b05f New debug panel to create shapes from STEP IDs. See #977. 2020-09-05 12:58:53 +10:00
Dion Moult 0522ea61f6 Minor cleanup 2020-09-05 12:20:16 +10:00
Dion Moult a2f24a265a Support exporting qtos related to a spatial element 2020-09-05 10:33:50 +10:00
Dion Moult 0583a5f430 Fix #975. Add error message if drawing not created when adding to sheet 2020-09-05 08:08:50 +10:00
Dion Moult 7e80615fe0 Minor fix 2020-09-03 23:02:41 +10:00
Dion Moult 71fffa41a9 Minor: add demolish hatch pattern 2020-09-03 23:02:00 +10:00
Dion Moult b2e6075aa3 Fix bug where enum properties won't export 2020-09-03 19:36:35 +10:00
Dion Moult d1852b2415 Minor fix 2020-09-03 19:36:06 +10:00
Dion Moult 0b0876877e Provide 3 default hatching styles for orthogonal squares (e.g. for tiling) 2020-09-03 19:35:51 +10:00
Dion Moult 147bf664cc You can now copy properties to selection even if the pset doesn't exist yet 2020-09-03 19:24:55 +10:00
Dion Moult dbbc56ef0d You can now store arbitrary IFC data in the SVG, depending on the drawing style 2020-09-02 21:51:58 +10:00
Dion Moult 9c8f8ba56f You can now add arbitrary annotation to a drawing, not just belonging to one of the preset types 2020-09-02 21:50:58 +10:00
Dion Moult 73e5f1adf2 Switching cameras now automatically sets all of the drawing styles on the fly 2020-09-02 21:49:18 +10:00
Dion Moult 311174b1e7 Fix bug where Plan RL tag was not projected correctly onto the drawing 2020-09-02 21:48:16 +10:00
Dion Moult cba30f0831 Fix bug where 2D annotation curves geometry would be mangled on export. 2020-09-01 22:44:51 +10:00
Dion Moult 03b8503049 2D annotation now extracts from IFC directly, and considers bounding box intersection with the section plane 2020-09-01 22:44:28 +10:00
Dion Moult 3c8c411dc5 Fix #963. Allow getting / setting north to / from IFC and Blender sun position. 2020-09-01 22:43:00 +10:00
Dion Moult 2e6150b5ef You can now set the viewport shadow from the sun angle, useful for shadow studies 2020-09-01 22:26:57 +10:00
Dion Moult 55a54098dd Fix #961. Reloading is now more robust, and detects opening and projection changes to geometry 2020-09-01 12:18:48 +10:00
Dion Moult f1269c7618 Fix #964. Allow import of nested IfcSpace. 2020-09-01 09:46:40 +10:00
Dion Moult 6ac56cbcf6 Fix #965. Improve canonicalisation of material names to fix import failure. 2020-08-31 22:31:15 +10:00
Dion Moult 6f6a1aede6 You can now export to DXF automatically when creating sheets 2020-08-31 10:38:48 +10:00
Thomas Krijnen 1e3dc6ba16 Update validate.py 2020-08-30 15:21:21 +02:00
Dion Moult 1b2c8bdf8e Enable multiprocessing by default. Let's see how stable it is. 2020-08-30 21:41:46 +10:00
Dion Moult 9107c65ad0 New default site boundary CSS stroke style 2020-08-30 21:41:25 +10:00
Dion Moult 8d80c58e2d You can now render OpenGL for drawings - allowing much better wireframe views 2020-08-30 21:41:01 +10:00
Dion Moult 9c50e909e3 Fix bug where adding text no longer works with new scales 2020-08-30 21:40:21 +10:00
Thomas Krijnen b31caf3310 --json option for validate command line usage 2020-08-30 13:01:16 +02:00
Thomas Krijnen fac949cf95 Remove duplicate import 2020-08-30 13:00:56 +02:00
Dion Moult 880a269e21 Fix silly bug causing uninstall to fail 2020-08-29 20:10:25 +10:00
Dion Moult aca70434be Minor fix 2020-08-29 20:07:33 +10:00
Dion Moult f6280dec68 Bump IfcOpenShell 2020-08-29 19:00:33 +10:00
Dion Moult 4c4bc8ffd7 You can now generate annotation references for building storey levels 2020-08-29 18:56:23 +10:00
Dion Moult 2f4c96b9dc Drawings can now be associated with an IFC geometric subcontext target view 2020-08-29 18:55:38 +10:00
Thomas Krijnen bc2ce0ee62 Update express parser to retain AST parse tree 2020-08-29 10:23:59 +02:00
Dion Moult 77d686724e Annotation tools are now in the viewport instead of in properties for easier access 2020-08-29 11:02:43 +10:00
Dion Moult c5dd9a24cb Different drawings can now have different aspect ratios. Finally! 2020-08-29 10:28:34 +10:00
Dion Moult 6bc05c5bdc Add support for custom titleblocks, and provide presets for A1, A2, A3 sizes 2020-08-28 23:16:25 +10:00
Dion Moult 0c145dd885 Fix #956. Add support for imperial and custom drawing scales. 2020-08-28 21:40:24 +10:00
Dion Moult e7aa8d0e27 Support all ODS units for creating schedules (e.g. LibreOffice and Microsoft Excel have different defaults from a quick test) 2020-08-28 18:31:45 +10:00
Dion Moult c368ae6596 Fix #882. All SVG scales are now standardised to human units with appropriate spacing and placement. Views now appear within the titleblock border. 2020-08-28 11:45:57 +10:00
Dion Moult eea7b6547e Fix bug where mapped representations belonging to a context fails to import 2020-08-28 08:24:32 +10:00
Dion Moult 6cbf8cc8db Creating drawing sheets now understand templates in any CSS unit 2020-08-26 20:37:48 +10:00
Dion Moult d2fcf07b37 Utility to get all descriptions of IFC entities 2020-08-26 20:09:14 +10:00
Dion Moult c552e90897 Utility to extract documentation for all maintainable assets 2020-08-26 20:08:28 +10:00
Dion Moult 345ef27b15 Support IFC2X3 classification CalendarDates 2020-08-26 20:04:07 +10:00
Thomas Krijnen c872ee8844 Support writing SVG to scale 2020-08-25 15:01:07 +02:00
Thomas Krijnen 34c51fa9be #823 fallback to BRepBuilderAPI_Transformed in case of errors 2020-08-25 14:43:31 +02:00
Thomas Krijnen 5c20e7b62a #816 Use more than one cycle of self intersections in IfcArbitraryClosedProfileDef 2020-08-25 13:51:59 +02:00
Thomas Krijnen c15fdc7fa9 Remove erouneous line related to #939 2020-08-25 13:00:54 +02:00
Thomas Krijnen d0c207f6b9 #941 version numbers 2020-08-23 14:01:43 +02:00
Thomas Krijnen 1893f6cea4 #941 version numbers 2020-08-23 14:00:53 +02:00
Bruno Postle a2fa3a39e9 configure cmake to use linux/unix soname conventions for shared libraries, initial soversion is 0 2020-08-23 13:59:48 +02:00
Thomas Krijnen 628f9a2879 Iteration of inverse attribute list 2020-08-23 13:54:23 +02:00
Dion Moult 6ec368901b Types are now categorised in the project upon assignment 2020-08-22 19:34:52 +10:00
Dion Moult af05f72010 Grids in drawings now read from the AxisTag attribute when possible 2020-08-22 19:25:58 +10:00
Dion Moult a66b4f138a Support export of IfcCircleProfileDef 2020-08-22 19:11:17 +10:00
Dion Moult 609a2d3a7d Add dumb opening feature 2020-08-21 20:38:57 +10:00
Dion Moult afd6811c08 Improve error reporting for BIMTester auditing lists 2020-08-21 19:52:50 +10:00
Dion Moult ff5bc25228 Support tessellated polygonal face set for much more efficient files (44kb vs 84kb Suzanne!) 2020-08-21 18:14:46 +10:00
Dion Moult 09dd778f97 You can now specify custom attribute mappings to COBie spreadsheets 2020-08-21 14:38:41 +10:00
Dion Moult 668edbc45e Add support to override COBie types/components selection 2020-08-21 11:38:43 +10:00
Dion Moult f64e0c9acc Minor fix 2020-08-20 23:37:03 +10:00
Thomas Krijnen 99a76b5a6e #949 remove trailing dot from tmp filename 2020-08-19 12:56:43 +02:00
Dion Moult 3968bb2bf5 Auto add to drawings IFCs at export time for usability improvement 2020-08-18 15:58:46 +10:00
Dion Moult df382d3e64 Fix bug where predefined types aren't audited correctly by BIMTester 2020-08-18 13:36:07 +10:00
Dion Moult b6f51bc080 You can now add schedules to sheets 2020-08-18 10:04:19 +10:00
Jesusbill cf6ec3777f update changelog - ifc2ca 2020-08-17 20:35:16 +02:00
Thomas Krijnen 48f3d52880 Fix brace init with struct defaults #951 2020-08-17 18:02:59 +02:00
Jesusbill 7f48923153 add rigid connections - add spring stiffness for point connections 2020-08-17 17:05:31 +02:00
Dion Moult eac72dc852 Convert ODS schedules into SVG schedules for inclusion in drawings 2020-08-17 22:10:06 +10:00
Dion Moult d3da378ba3 New UI to add and manage schedules from ODS spreadsheets 2020-08-17 21:43:33 +10:00
Dion Moult 78d33b4ffd Support converting drawings to PDF on the fly 2020-08-17 21:12:31 +10:00
Dion Moult db0c266a17 Update titleblock with white background 2020-08-17 21:11:59 +10:00
Dion Moult 75b34b6a95 Support import of native IfcCircleProfileDef 2020-08-17 10:22:27 +10:00
Thomas Krijnen 1978ffa8df --log-file option 2020-08-16 16:17:38 +02:00
Thomas Krijnen d4afc6d1c0 #923 2020-08-16 14:35:39 +02:00
Thomas Krijnen 6eee9476a6 Default initialize verbosity 2020-08-16 13:40:58 +02:00
Thomas Krijnen 45c16e5318 Option for realtime logging with -vv 2020-08-16 13:37:58 +02:00
Thomas Krijnen f2884f9b0f Annotations with arrow heads and reuse path_objects 2020-08-16 11:41:40 +02:00
Thomas Krijnen 431e703137 Don't emit material warnings without faces 2020-08-16 11:41:07 +02:00
Dion Moult 31c349b0f1 Exports now automatically detect curve representations 2020-08-16 12:54:41 +10:00
Dion Moult b7bb7815ad Improved user friendly UI for sheet creation 2020-08-16 11:54:05 +10:00
Dion Moult b5acf81be2 COBie now shows log too when generating spreadsheet 2020-08-16 10:57:05 +10:00
Dion Moult 2c79f07abf New purge classifications feature, and imported systems shows up immediately 2020-08-15 18:37:03 +10:00
Dion Moult bd02c8e34b Fix bug where aggregate creation doesn't work if the aggregates collection doesn't exist 2020-08-15 17:34:13 +10:00
Dion Moult c359e35747 Enforce directories when selecting features directory for usability 2020-08-15 13:13:30 +10:00
Dion Moult 0a7c365d78 Selecting multiple objects will now guess quantities in bulk 2020-08-15 13:05:09 +10:00
Dion Moult a1e5135a9e More robust footprint area calculation with support for IfcSpace floor area 2020-08-15 12:40:55 +10:00
Dion Moult e9e0dbabe4 You can now implement element filters for drawing styles 2020-08-15 11:52:58 +10:00
Dion Moult 75b14d4c15 Added button to conveniently edit the vector style CSS within Blender 2020-08-15 09:45:20 +10:00
Dion Moult 217098132f Windows now generate a 2D annotation symbol 2020-08-15 09:27:42 +10:00
Dion Moult 6c064ecd51 Doors now have 2D annotation symbols generated too 2020-08-14 21:27:36 +10:00
Dion Moult cc4a29fc11 New feature to quickly add an Ifc Grid system object 2020-08-14 20:43:44 +10:00
Dion Moult 7386da14dc Support export of grids and UVW grid axes 2020-08-14 18:23:24 +10:00
Dion Moult 0a657be394 Grid axes are now categorised in UVW and have attributes on import 2020-08-14 18:22:07 +10:00
Dion Moult 9062d9720b Add import support for IfcGrid itself, not just the grid axes 2020-08-14 16:54:47 +10:00
Dion Moult 43186e4e59 You can now pick the vector style for each drawing style 2020-08-13 20:38:50 +10:00
Dion Moult 3254bc3c14 Merge branch 'v0.6.0' of github.com:IfcOpenShell/IfcOpenShell into v0.6.0 2020-08-13 20:23:36 +10:00
Dion Moult cee53689aa Fix bug in extracting smart data for annotation tags 2020-08-13 20:23:26 +10:00
Thomas Krijnen afb2aaab5a Fixes for polygonal facesets and skip over errors in SVG 2020-08-13 12:22:03 +02:00
Dion Moult e9b791adaa Improve drawings management UI from a single dropdown to a proper list 2020-08-13 20:17:51 +10:00
Dion Moult 7f6c9e61c8 Add highly incomplete proof of concept DXF2IFC script 2020-08-13 17:47:56 +10:00
Dion Moult a7c76b1f48 Drawing styles now can store rudimentary rendering settings 2020-08-13 09:22:27 +10:00
Dion Moult a47d1ac32a Add prototype drawing style UI 2020-08-12 21:50:57 +10:00
Dion Moult 01d0d125a6 Utility to quickly set object colours, also colour mode is automatically changed now 2020-08-12 19:59:30 +10:00
Dion Moult 5db2a46369 Aggregation matrix inversion is no longer required now that relative placements are fixed from the previous commit 2020-08-12 19:04:47 +10:00
Dion Moult 4c3913353c Fix bug where parts of an aggregate were not placed relative to the whole 2020-08-12 18:27:31 +10:00
Dion Moult 71e59922ec Support IfcIndexedPolyCurve for more robust 2D representations 2020-08-12 12:39:39 +10:00
Dion Moult d56dd25245 Add dumb window 2020-08-12 08:57:58 +10:00
Dion Moult a477a2046d Add dumb slab feature 2020-08-11 21:10:02 +10:00
Dion Moult f6e8d5e281 Create dumb door feature 2020-08-11 20:54:54 +10:00
Dion Moult 0d221fa759 New dumb stair tool 2020-08-11 19:05:26 +10:00
Dion Moult e2fd9add83 Add dumb wall feature 2020-08-11 17:24:30 +10:00
Dion Moult e858930755 Enable export with auto-generated bounding box representations 2020-08-11 16:32:59 +10:00
Dion Moult ffa4e7570d Add button for camera to quickly open relevant drawing 2020-08-11 15:04:09 +10:00
Dion Moult cd6bd0e3cc Body subcontext added by default when a new rep is added, with a cloned mesh 2020-08-11 14:50:21 +10:00
Dion Moult ef41daedb9 Users can now specify what objects to cut for documentation with presets 2020-08-11 13:52:16 +10:00
Dion Moult 114e835d4a Implement multiprocessing in shape creation for IFC drawings 2020-08-10 21:47:37 +10:00
Dion Moult 12345b14ac Minor fix 2020-08-10 14:38:46 +10:00
Dion Moult 1e02353922 Minor fix 2020-08-10 13:01:42 +10:00
Dion Moult 6c868033e3 Fix project setup MicroMVD 2020-08-10 11:21:33 +10:00
Dion Moult 1e6e6a4977 Publish MicroMVD definitions for classifications 2020-08-10 10:40:19 +10:00
Thomas Krijnen f9bf6f814d #945 don't fail on degenerate edges in polygonal faceset 2020-08-09 20:55:44 +02:00
Thomas Krijnen 06b512c2e3 #939 break up closed loops for swept disk 2020-08-09 20:50:39 +02:00
Dion Moult 64db48276c Add a blank material style for documentation 2020-08-09 18:19:05 +10:00
Dion Moult 34fc2136c6 Fix #839. Add upstream support for IFCJSON, including compact, v4, and v5a 2020-08-09 18:10:30 +10:00
Dion Moult fb5c25bb68 Fix #873 2020-08-09 17:32:54 +10:00
Dion Moult d12643197e Bump IfcOpenShell 2020-08-09 17:22:20 +10:00
Dion Moult f58847502e Support transparency in non-nodal materials 2020-08-09 17:13:01 +10:00
Dion Moult 57d44c9066 Hotfix IfcOpenShell util module 2020-08-09 13:26:11 +10:00
Dion Moult b1842de9fa New function to add ifc opening relationships 2020-08-09 13:09:29 +10:00
Dion Moult f2dcd8bb75 Add feature to calculate multiple object volumes 2020-08-09 11:46:14 +10:00
Dion Moult 829b97a0d8 New feature to calculate area of selected faces 2020-08-09 11:33:47 +10:00
Dion Moult be4fe1b684 Simplify UI by making GlobalId generation more automated and show in context 2020-08-09 11:21:00 +10:00
Dion Moult 09af3b052b Move object structural properties to its own panel 2020-08-09 11:14:11 +10:00
Dion Moult 3292b98080 Allow export of type relations in IFCCSV 2020-08-08 17:58:45 +10:00
Dion Moult 11a66ee181 Convert units to project settings when guessing quantities 2020-08-08 16:31:27 +10:00
Dion Moult 7d976b1bc7 Add support for importing area and volume units 2020-08-08 14:47:33 +10:00
Dion Moult 43f0f396ab New feature to calculate total length of selected edges 2020-08-08 14:22:48 +10:00
Dion Moult ec66d7c0b8 Split object psets and qto into their own panels for usability 2020-08-08 13:19:56 +10:00
Dion Moult c79ef17a58 Minor fix 2020-08-07 20:18:43 +10:00
Dion Moult 0dbe7b9cc1 Add perimeter quantity calculation 2020-08-07 20:00:45 +10:00
Dion Moult 1d2677543d Allow calculation of depth 2020-08-07 18:23:50 +10:00
Dion Moult e56648e393 Simple recipe to merge two IFC files 2020-08-06 20:27:10 +10:00
Dion Moult 562dc72129 Publish implementation of geocoding MicroMVD 2020-08-06 18:32:33 +10:00
Thomas Krijnen bc8b377d6d #928 make trim param precision comparison dependent on radius 2020-08-05 10:40:25 +02:00
Dion Moult b60438b51c New UI in Blender to run IFCPatch 2020-08-05 17:18:10 +10:00
Dion Moult 277786771c Optimise the optimisation recipe. See #944. 2020-08-05 15:12:23 +10:00
Dion Moult 61f6ecbf17 New IFCPatch recipe to optimise IFCs by recycling non rooted elements 2020-08-04 21:11:37 +10:00
Dion Moult 6772886e65 New utility function to replace an attribute 2020-08-04 21:08:49 +10:00
Dion Moult 2a22acfdc9 Make util.element.get_psets() support IfcComplexProperty 2020-08-04 20:18:08 +10:00
Dion Moult 323dddf082 New feature to visualise IFC diff changes 2020-08-04 19:00:34 +10:00
Dion Moult a2454cf5ee Add support for dimensions added with MeasureIt-ARCH 2020-08-03 21:43:48 +10:00
Dion Moult 91917dcbb4 Minor fix for OCC import 2020-08-03 21:43:10 +10:00
Thomas Krijnen 97f03d3933 Skip degenerate triangles in IfcTriangulatedFaceSet #934 2020-08-03 10:57:10 +02:00
Thomas Krijnen 0d28978a48 Reuse py build dir in build script to speed up builds 2020-08-01 19:32:50 +02:00
Dion Moult 8ad9c215af Allow keyboard shortcuts for import and export.
Turns out operators need to start with import/export. Odd.
2020-08-01 09:31:28 +10:00
Dion Moult ecebb4b853 Fix #932 - bug where a material_id of -1 will not import. 2020-07-31 20:28:01 +10:00
Dion Moult 3e985facdd When absolute coordinates are offset during import, record the offset 2020-07-31 20:10:05 +10:00
Dion Moult 6c7ddcca9c Fix #940 2020-07-31 16:12:14 +10:00
Dion Moult e9cd48c62d Fix import bug getting geometry type of objects without a representation
E.g. an IfcGridAxis
2020-07-31 15:41:38 +10:00
Dion Moult e63f083a40 Fix bug where IFC2X3 files cannot have coordinates reset properly 2020-07-31 09:32:08 +10:00
Dion Moult a376ec1b12 Accommodate blank qto names. Probably invalid IFC though. 2020-07-31 09:31:31 +10:00
Dion Moult a3e38d2322 Merge branch 'v0.6.0' of github.com:IfcOpenShell/IfcOpenShell into v0.6.0 2020-07-30 19:15:19 +10:00
Dion Moult e7446dc6cb Fix bug #936 where long, duplicate, material names fail to import. 2020-07-30 19:15:06 +10:00
Thomas Krijnen 75cff21efe #939 closed sweep 2020-07-30 11:12:55 +02:00
Dion Moult 5c2ded1486 Merge branch 'v0.6.0' of github.com:IfcOpenShell/IfcOpenShell into v0.6.0 2020-07-30 17:09:44 +10:00
Dion Moult 8197621232 Curves, if they are a swept disk solid, may belong to multiple items.
Not sure if this is the best approach. It'll probably bite me in the future.
2020-07-30 17:09:09 +10:00
Bruno Postle 0cc816922c Fix shebang in command-line scripts 2020-07-30 10:11:32 +10:00
Dion Moult a337c480a9 Support exporting IfcSweptDiskSolid for curves with no bevel profile 2020-07-29 21:46:16 +10:00
Thomas Krijnen cc40726618 Fix SVG storey sorting and element naming 2020-07-28 12:19:05 +02:00
Dion Moult 7f58df876b Allow explicit checking for null attributes and properties 2020-07-28 17:31:26 +10:00
Dion Moult 330aa1b6e3 Publish element classes MicroMVD definitions 2020-07-28 17:31:11 +10:00
Dion Moult 252479189c Refactor geolocation MicroMVD definitions 2020-07-28 16:41:13 +10:00
Dion Moult f56269301f Fix bug where IFCCSV won't correctly store boolean data types 2020-07-28 11:47:22 +10:00
CyrilWaechter d87ea93e89 Restore OCC 0.18.1 support 2020-07-27 23:03:25 +10:00
Dion Moult 1d6f0c8e63 Document dependencies 2020-07-27 21:01:16 +10:00
Dion Moult 9359c388d1 Add true north conversion function to IfcOpenShell geolocation util lib 2020-07-27 18:38:34 +10:00
Dion Moult e2621e0207 Publish definitions for geolocation and project setup MicroMVD 2020-07-27 18:38:13 +10:00
Dion Moult 2837f75d50 BIMTester will now report unspecified tests with fancy colours 2020-07-27 18:37:05 +10:00
CyrilWaechter ab1f7337a5 Support for pythonocc-core 7.4.0 2020-07-27 08:39:28 +10:00
Cyril Waechter 21a4680811 Adapt data type for python-fcl/fcl 0.6.1
Credit to @aothms #919 
Need testing with python-fc 0.0.12l / fcl 0.5 to make sure it breaks nothing
2020-07-26 10:53:25 +10:00
Dion Moult 019f460af2 IFCPatch can now be used as a library or as a CLI 2020-07-25 18:38:35 +10:00
Thomas Krijnen 2a7c406412 #916 2020-07-23 10:49:45 +02:00
blocovin 1018118341 Add center-model-geometry 2020-07-23 10:47:48 +02:00
Dion Moult 5fbb324d7d New GUI to run IFCCOBie using the BlenderBIM Add-on 2020-07-23 17:02:48 +10:00
Dion Moult 7d4c760332 IFCCOBie now supports the ODS format, not just XLSX and CSV 2020-07-23 15:36:25 +10:00
Dion Moult d636775cad Create a better CLI for IFCCOBie, and don't create CSVs when you just need a XLSX 2020-07-23 13:43:57 +10:00
Dion Moult 18a2996a93 Fix bug where COBie convert fails on empty names of related objects for assemblies 2020-07-23 13:42:41 +10:00
Thomas Krijnen 4f1aca8ceb #921 2020-07-22 12:25:24 +02:00
HeySora 416640891f Use cerr_ instead of std::cerr
It was crashing on UNICODE builds.
2020-07-22 10:36:03 +02:00
Yoni Chechik 02bb7bea92 fixed broken url
fixed broken url (thanks https://github.com/IfcOpenShell/IfcOpenShell/issues/656)
2020-07-21 11:39:53 +02:00
Thomas Krijnen f92d1708f2 #924 2020-07-21 11:35:56 +02:00
Dion Moult 37e32738b9 Minor fix 2020-07-21 16:40:33 +10:00
Dion Moult 2d3ede02da BIMTester can now audit predefined types 2020-07-21 16:37:11 +10:00
Dion Moult 95f97efa72 Minor fix 2020-07-21 15:26:43 +10:00
Dion Moult a89f7dc116 New UI to run BIMTester from BlenderBIM Add-on 2020-07-20 22:08:39 +10:00
Dion Moult f1ed9d5b53 More granular reporting from BIMTester, and ability to run without packaging 2020-07-20 16:59:16 +10:00
Dion Moult e7afa0b3e4 Improved error reporting on failed BIMTester tests 2020-07-20 16:58:18 +10:00
Thomas Krijnen 20303ed6a8 Check for unbounded composite curve segments 2020-07-18 10:32:18 +02:00
Thomas Krijnen fdfe1097c4 Minor changes after #916 2020-07-18 09:59:07 +02:00
Stefan Fink ea71a1f8a7 IfcSiPrefix.cpp changes for MSVC 2013
IfcHierarchyHelper.h:176,185 changes in addRelatedObject about throw exception
exception comes from

ifcparse/IfcHierarchyHelper.h line 176 get_parent_of_relation(rel)
if (get_parent_of_relation(rel) == relating_object) {

ifcparse/IfcHierarchyHelper.h line 47
IfcUtil::IfcBaseClass* get_parent_of_relation(IfcUtil::IfcBaseClass* t)

ifcparse/IfcSchema.h
ptrdiff_t attribute_index(const std::string& attr_name) const {

ptrdiff_t index = -1;

-1 return but getArgument(..) Parameter is unsigned int
in the methode -1 is ca. 42123423423423 and throw IfcParse::IfcAttributeOutOfRangeException
we catch this exception and all works as expected and before in 0.5-rc1
2020-07-18 09:55:31 +02:00
Dion Moult 9d6e7c2481 Allow for wildcard expansion in IFCCSV export 2020-07-18 17:29:40 +10:00
Dion Moult 41c539965c Add automatic quantities calculated at export. See #898. 2020-07-18 14:22:18 +10:00
Dion Moult ab432ba3dd Allow "none" geometry types for objects with no body representation 2020-07-18 13:11:13 +10:00
Dion Moult 11472f9aa9 Allow export of mesh edges for structural curve members 2020-07-18 13:10:28 +10:00
Dion Moult 1ec78e57ce Minor fix 2020-07-16 17:35:57 +10:00
Dion Moult 418e4133b7 Minor fix 2020-07-16 17:19:07 +10:00
Dion Moult 2e1a32d540 Provide manual length, area, volume calc operators in qto UI. See #898. 2020-07-16 17:12:11 +10:00
Dion Moult c885652338 Minor fix 2020-07-16 13:05:50 +10:00
Dion Moult ee4a93c0d3 Remove TK interface for BIMTester. Will provide a Blender UI instead. 2020-07-16 12:59:28 +10:00
Dion Moult 9f63f42e6e Support import of IfcObjective constraints 2020-07-16 11:52:51 +10:00
Dion Moult 4d30be716e You can now select all COBie defined assets and types using the selector 2020-07-16 11:37:56 +10:00
Dion Moult e3de339ab2 Fix import bug where truncated material names cause import failure 2020-07-16 11:11:47 +10:00
Jesusbill 2a6b3b981a update changelog 2020-07-15 00:33:06 +02:00
Jesusbill a8d261f271 add zero-length springs for point connections and connection-to-member 2020-07-14 21:48:54 +02:00
Jesusbill 6c22894a93 import elements with no material or profile 2020-07-14 21:44:14 +02:00
Jesusbill 6e8eca37ef experimental ca2ifc (json -> ifc) for creating example files 2020-07-14 21:40:23 +02:00
Dion Moult 63e65b2114 Fix broken selector utility 2020-07-14 19:27:56 +10:00
Dion Moult 1222716e16 BIMTester UI updated to new Gherkin syntax conventions 2020-07-14 18:22:32 +10:00
Thomas Krijnen 98ed21a1e2 Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.6.0 2020-07-13 13:20:08 +02:00
Thomas Krijnen 093ebb2d8f Don't try to apply opening elements marked as Reference 2020-07-13 13:19:28 +02:00
Dion Moult 42f597a7af New experimental mode to allow users to profile import progress 2020-07-13 16:15:23 +10:00
Dion Moult 88331d16a2 Fix bug where imported materials that duplicated a name could be incorrectly assigned 2020-07-13 16:12:34 +10:00
Dion Moult fa1926fa84 Exporting now uses custom people and organisations defined from the UI. See #875. 2020-07-13 15:29:06 +10:00
Dion Moult bdbe988dc7 Don't bother creation relationships to invalid psets.
An invalid pset can occur when the pset doesn't contain any properties. This can happen when all properties are not part of the pset definition template. This may lead to unwanted data loss, but strictly enforces buildingSMART pset definitions.
2020-07-12 11:06:14 +10:00
Dion Moult 6b07aeb703 Allow export of positioning elements (only IfcGrid for now) See #911 2020-07-12 10:19:22 +10:00
Thomas Krijnen 4015c5b5b2 --door-arcs option in SVG serializer 2020-07-11 23:26:21 +02:00
Thomas Krijnen a62fd01725 Move late bound inverse access to IfcBaseEntity 2020-07-11 23:24:49 +02:00
Dion Moult 58fad83d4f No longer require object linked materials in Blender in preparation for new material system 2020-07-11 22:25:06 +10:00
Thomas Krijnen 1e916896ab --section-height-from-storeys 2020-07-11 13:39:09 +02:00
Thomas Krijnen 803cc66abb #873 2020-07-11 11:55:00 +02:00
Thomas Krijnen 8500daf1cc #915 2020-07-11 11:40:27 +02:00
Dion Moult 4baec5754d Allow you to specify whether to recut all, or just recut selected. See #901. 2020-07-10 21:22:22 +10:00
Dion Moult 607e506767 Users no longer need to manually select types for collections when exporting 2020-07-10 14:08:04 +10:00
Dion Moult 65821c4367 Group all aggregates into a single collection and update aggregate operators 2020-07-10 13:52:34 +10:00
s-leger fd283b9c84 Update export_ifc.py
Fix for objects where material index > material slots
Keep material indexes in material slots range (index % slots is blender default behavior)
Fallback to a minimal slot count to 1 for objects without material slots
2020-07-10 12:09:10 +10:00
Dion Moult 2132706c6e Migrate import geolocation to util module 2020-07-10 12:00:54 +10:00
Dion Moult e781dbd789 Export now supports Ifc2x3 style classes in IFC4 2020-07-10 11:59:21 +10:00
Dion Moult 07f8f8c489 Support IfcSpatialElementTypes for export 2020-07-10 11:55:45 +10:00
Dion Moult a7e1eb15ab Add support for triangular grids in IFC import 2020-07-10 10:30:41 +10:00
Dion Moult a27b00e616 Allow import of invalid grids coming from Revit. See #911. 2020-07-10 10:18:33 +10:00
Dion Moult c7211ed171 Create basic UI to manage people and organisations. See #875. 2020-07-09 20:46:50 +10:00
Dion Moult fbaa6cd2ed New UI to assign constraints to objects and export 2020-07-07 12:33:41 +10:00
Dion Moult e2868f871a Support export of scaled curve bevel objects. See #900. 2020-07-06 19:14:27 +10:00
Dion Moult b866106293 Exported constraints are now managed using the new UI, no CSV required 2020-07-06 17:48:00 +10:00
Dion Moult fda508e3f8 New UI to manage IFC constraints in the file 2020-07-06 17:26:38 +10:00
Thomas Krijnen 436eb3a637 msvc utf8 conversion in wrapper write() 2020-07-05 11:40:17 +02:00
Dion Moult 155a1eeca9 Fix incorrect dimension export of rectangle profiles 2020-07-04 13:26:14 +10:00
Dion Moult 79fdfa878c Rename "documentation" to "drawings and sheets" for more universal terminology. See #881. 2020-07-03 22:00:25 +10:00
Dion Moult 9a026d93fb Update fetch object passport to substitute a mesh from a Blender file only. See #871. 2020-07-03 21:54:22 +10:00
Dion Moult 125c0ced6e New feature to remove a representation subcontext. See #870. 2020-07-03 21:08:40 +10:00
Dion Moult 36b262dff9 Allow for null data in exporting georeferencing 2020-06-30 21:28:46 +10:00
Dion Moult 4d8b130f2d Fix IfcPatch ResetAbsoluteCoordinates recipe to account for coordinate lists 2020-06-30 21:24:08 +10:00
Dion Moult d22d903a36 Improve absolute coordinate support for georeferencing 2020-06-29 11:16:49 +10:00
Yorik van Havre c76c72c017 Added USERSPACE_PYTHON_PREFIX cmake variable to allow install IfcPython in userspace instead of system-wide. 2020-06-28 12:48:25 +02:00
Dion Moult 3e9fff6c19 New feature to unassign/reassign IFC class easily 2020-06-23 23:42:33 +10:00
Dion Moult da7ba7b1e9 Fix bug for exporting slots with no materials 2020-06-23 22:49:56 +10:00
Dion Moult 794e55aadd Fallback to non-native if boolean operations exist. See #865. 2020-06-23 08:02:46 +10:00
Dion Moult ebc305c0e1 Bump IfcOpenShell 2020-06-21 19:43:58 +10:00
Dion Moult 358d9ef1c8 Reimplement edge based mesh import
We don't use foreach_set, since for some reason doing it with foreach_set requires edit mode to be toggled for the edges to be visible. We make the assumption that an object is either edge based or face based, but not both.
2020-06-21 09:48:54 +10:00
Dion Moult a931c5ced9 Fix bug with incorrect unit scales on native elements 2020-06-20 21:23:53 +10:00
Dion Moult 189177300a Allow export of native faceted breps 2020-06-20 21:23:15 +10:00
Dion Moult b77ed5aab6 Fix bug where group subtypes are imported as the wrong class 2020-06-20 21:22:49 +10:00
Harald Geyer 501447fa5f Fix building with -DIFCXML_SUPPORT=OFF 2020-06-20 08:47:42 +02:00
Dion Moult 8962e3bcf4 Don't fail on importing case insensitive file extensions 2020-06-19 16:43:22 +10:00
Dion Moult d3f07c4ac4 Support native export of IfcArbitraryClosedProfileDef and IfcRectangleProfileDef 2020-06-18 21:55:07 +10:00
Dion Moult 1280eed00e Merge branch 'v0.6.0' of github.com:IfcOpenShell/IfcOpenShell into v0.6.0 2020-06-18 11:50:54 +10:00
Dion Moult 391ae80e36 Add support for storing subitems of a representation, like a profile. See #865. 2020-06-18 11:50:23 +10:00
Thomas Krijnen 67754ecfb8 opencascade_knotspec_to_ifc multiple definition 2020-06-16 10:34:48 +02:00
Thomas Krijnen e155cb4ab0 #586 Edge curve point projection error logging 2020-06-15 16:24:45 +02:00
Thomas Krijnen 89a7584d0c --edge-arrows debugging setting 2020-06-15 16:24:16 +02:00
Thomas Krijnen f01ae4a45b #842 IFC4X3 schema and some other schema init cruft 2020-06-15 12:48:30 +02:00
Thomas Krijnen b8d0e22aa8 #891 silence gcc-10 bug 2020-06-15 11:56:04 +02:00
Thomas Krijnen e2784fb69b Backwards pyocc compatibility in occ_utils 2020-06-15 11:36:13 +02:00
Thomas Krijnen e9a9c1ab7a #891 fix wrapper compilation 2020-06-15 10:34:47 +02:00
Thomas Krijnen 724d8c405b Fix constructors and assignment op for Kernel 2020-06-14 16:08:50 +02:00
Thomas Krijnen 4ca158e47b Merge branch '672' into v0.6.0 2020-06-14 13:06:38 +02:00
blocovin 32511bd9e9 Move center-model, model-offset and model-rotation under geom_options instead of serializer_options 2020-06-14 12:16:20 +02:00
blocovin e1af6d34e4 Update IfcConvert documentation 2020-06-14 12:16:20 +02:00
blocovin 6e2038c1f5 Use model-offset in IfcGeom::Kernel and add model-rotation 2020-06-14 12:16:20 +02:00
Dion Moult 76e7205692 Add experimental native support for faceted breps import 2020-06-14 19:19:54 +10:00
Dion Moult 7e362110d2 Optimise import process. See commit notes.
* When there is only one material slot, there is no need to assign materials as the slot becomes the default
 * Don't loop through collections to find the collection you need, we now store aggregate collcetions
 * The project collection is not added to the scene collection until the very end. Apparently linking objects to collections when the collection is enabled in the view_layer causes it to be twice as slow. Therefore all view layer operations happen at the end.
 * Don't print the progress bar, as excessive prints and calls to the iterator.progress() makes it very, very slow. Like, so slow you wouldn't even wait for the file to finish you'd just give up. See #895.
 * Only create materials once per mesh. Nobody seems to be using styled items properly as an object override anyways.
 * Use foreach_set to create meshes instead of mesh.from_pydata. This is much faster.
 * Similarly use foreach_set to set material indexes. This leads to a crazy speed increase on big meshes.
2020-06-14 19:17:58 +10:00
Dion Moult 7b98e48b9c Prevent adding a crazy number of material slots, especially in messy IFCs coming from Revit 2020-06-14 19:03:43 +10:00
Dion Moult d8373715e2 Disable mesh cleaning if objects >= 10000, for import optimisations 2020-06-12 21:48:35 +10:00
Dion Moult 9961f6172f Users can now choose whether to import type representations, disabled by default 2020-06-12 21:46:28 +10:00
Thomas Krijnen e2e217700d #843 SetTransparency requires theToUpdateViewer 2020-06-12 11:18:30 +02:00
Dion Moult 2035cf64c2 Improve i18n support in section plane tool and fix bug for invalid materials 2020-06-12 16:59:27 +10:00
Dion Moult 8b7850b3ff New IFC Patch recipe to split an IFC by building storey 2020-06-11 15:15:54 +10:00
Dion Moult 2f8ea33da5 Native elements are now always processed separately with multithreading, reducing bugs with 2D axis representation parsing too. See #865. 2020-06-11 10:57:29 +10:00
Dion Moult edc3aa6157 Support import whitelists and blacklist filters. Groundwork for #865. 2020-06-11 10:52:00 +10:00
Dion Moult 4a6868495e Opening elements now create a boolean relationship. See #865. 2020-06-11 09:58:40 +10:00
Dion Moult 9ae3adf0d7 Distinct representation items are now stored in different vertex groups. See #865 2020-06-08 17:04:36 +10:00
Dion Moult a8a51eb212 Add support for styled surfaces for native elements. See #865 2020-06-08 12:06:15 +10:00
Thomas Krijnen afb05f42db Merge branch 'master' into v0.6.0 2020-06-07 20:23:00 +02:00
Thomas Krijnen 2a42a582fd Merge branch 'master' into HEAD 2020-06-07 19:46:34 +02:00
Thomas Krijnen 86d7205760 layerset-first setting 2020-06-07 19:46:10 +02:00
Thomas Krijnen c8cca08dfa TODO note 2020-06-07 16:44:42 +02:00
Thomas Krijnen 603cf011c3 Implement LINE primitives in glb exporter #864 2020-06-07 16:39:23 +02:00
Thomas Krijnen 91bfd116e8 Fix correspondence between material_ids and edges 2020-06-07 16:13:20 +02:00
Thomas Krijnen 95c953fd52 Share vertices amonst edge-segments 2020-06-07 15:47:19 +02:00
Dion Moult 0237f12ceb Add native element processor for extruded solids and swept disks. See #865 #885
* New user option to enable native element processing
 * Native element geometry will be substituted with dummy geometry so that the iterator doesn't waste time on it
 * IfcArbitraryClosedProfileDef and IfcRectangleProfileDef are supported for IfcExtrudedAreaSolid
 * Old rebar code full of assumptiosn deleted for a more globally applicable native support for IfcSweptDiskSolid
 * Probably created a whole bunch of new useful utility functions in the process, which can contribute to #829
2020-06-07 22:53:33 +10:00
Thomas Krijnen a17b211983 rename by_type_excl_subtypes 2020-06-07 12:49:39 +02:00
Dion Moult a575b701b7 Merge pull request #888 from robertguetzkow/v0.6.0
Fix #883 by adding correct number of edges
2020-06-07 08:12:27 +10:00
Robert Gützkow 7c7587f167 Fix #833 by adding correct number of edges
The mesh structure was invalid because the vertex indices for only one edge were set. The other edge had the same index for both vertices.
2020-06-06 23:42:24 +02:00
Dion Moult 793c1c8ec6 Enable curve imports by default, so rebar, profiles, are imported without user confusion. See #771 and #865. 2020-06-06 11:55:22 +10:00
Dion Moult 9c111a1470 Disable limited dissolve, which can break geometric accuracy. 2020-06-05 21:24:28 +10:00
Dion Moult f21ae53950 Merge pull request #880 from globalcitizen/v0.6.0
Section Plane -> Temporary Section Cutaway
2020-06-05 21:11:04 +10:00
Walter Stanish 8ab42cf09f Section Plane -> Temporary Section Cutaway 2020-06-05 20:53:20 +10:00
Dion Moult a6a4cb81c5 Merge pull request #876 from globalcitizen/v0.6.0
Minor UX and documentation tweaks
2020-06-04 12:05:16 +10:00
Walter Stanish 619abdae51 Update strings as per pull request 2020-06-04 11:42:29 +10:00
Walter Stanish f5d01a90a9 Note on platform specificity 2020-06-04 11:08:34 +10:00
Walter Stanish 3a8a4b7c86 Normalize UI panel naming 2020-06-04 11:06:46 +10:00
Dion Moult d0f02f9247 Users are prompted to assign an IFC class prior to changing IFC metadata. See #869. 2020-06-04 10:47:51 +10:00
Dion Moult 12bb14da48 Minor fix. See #874. 2020-06-04 10:33:05 +10:00
Dion Moult b708c25f90 Minor fix 2020-06-03 22:03:30 +10:00
Dion Moult 4f1514022a Material layer set usage data is now half-imported, with no metadata. See #865. 2020-06-03 11:21:10 +10:00
Dion Moult 43abb87e82 Fix incorrect type assignment on non-unique type names bug. See #865. 2020-06-02 20:48:36 +10:00
Dion Moult 2e19d7697a IFC4 georeferencing data is now imported 2020-06-02 09:34:24 +10:00
Dion Moult 72a1c00e46 Switching contexts are now more tolerant of broken IFCs. See #865. 2020-06-01 22:37:11 +10:00
Dion Moult fa461502a0 Store the IFC geometry type on import. See #865. 2020-06-01 21:57:56 +10:00
Dion Moult 0ec205ad1d Retain material data if a surface style overrides it on import. See #865 2020-06-01 20:55:14 +10:00
Jesusbill 82ada5c102 minor fix in ifc2ca (revert a bad modification :|) 2020-06-01 01:41:20 +02:00
Jesusbill 9fa89651c4 minor fixes in ifc2ca 2020-06-01 01:26:35 +02:00
Thomas Krijnen 6aa32fb77a Remove debugging statement 2020-05-31 17:11:00 +02:00
Thomas Krijnen be96cee77d Iterator include/exclude of entity_instance in Python 2020-05-31 17:08:19 +02:00
Thomas Krijnen 4ffa658faf Don't segfault on empty multithreaded iterator result set 2020-05-31 17:07:41 +02:00
Thomas Krijnen 1eea532c9e python interator include/exlude entity types 2020-05-31 12:51:21 +02:00
Dion Moult ee7ea5445a Covetool now reads north angle from project geolocation 2020-05-30 19:40:05 +10:00
Dion Moult 7e77c0c92c You can now submit custom geometry for covetool environmental analysis 2020-05-29 19:18:57 +10:00
Dion Moult ec8a07ec6a Setup a default project if one hasn't been setup yet instead of an error 2020-05-29 09:24:07 +10:00
Dion Moult bdf17e5c12 Allow for objects with no placement 2020-05-28 22:34:54 +10:00
Jesusbill e071c7812f major update, refactoring to consider generalization of connections 2020-05-27 05:33:36 +02:00
Dion Moult 8bef6b9347 Bump IfcOpenShell build 2020-05-25 20:42:35 +10:00
Dion Moult 11b3f1c70c Minor fix 2020-05-25 20:38:18 +10:00
Dion Moult e75cc10988 New feature to select IFC clash results 2020-05-25 19:07:09 +10:00
Dion Moult 0d93633326 Update docstrings as per aothms comments 2020-05-22 11:30:45 +02:00
Dion Moult 295b2fb56b More documentation 2020-05-22 11:30:45 +02:00
Dion Moult d62bbd995f Add sphinx docstrings to ifcopenshell python binding 2020-05-22 11:30:45 +02:00
Dion Moult 1361c7b7e5 Users can now switch between IFC4 and IFC2X3 for exporting 2020-05-22 12:06:55 +10:00
Dion Moult 3b81a69591 You can now export psets for spatial elements 2020-05-22 11:08:54 +10:00
Dion Moult 72a2ab93c3 When importing, existing rooted elements are reused 2020-05-21 20:26:08 +10:00
Dion Moult d3590c2325 You can now specify relationships to IFC Diff in Blender 2020-05-21 19:26:28 +10:00
Dion Moult 5ead8995e1 BIMTester now purges data based on the latest MicroMVD syntax spec 2020-05-21 12:46:27 +10:00
Jesusbill ea1c3079cb add export to .ifcjson, related #839 2020-05-21 04:10:20 +02:00
Thomas Krijnen d81196316d Alternative implementation to #801 2020-05-20 16:27:59 +02:00
kukalaka eba631d245 Add missing IFC_PARSE_API 2020-05-20 16:15:08 +02:00
didi-ux 2ee9dafd16 Fix visualization for pythonocc 7.4.0
Following up the issue disscused here: https://sourceforge.net/p/ifcopenshell/discussion/1782717/thread/06e3103d93/

The yield and for-loop in initialize_display() changed slightly, 'GetHandles' and 'SetDiffuse' were removed. The directions are now V3d_TypeOfOrientation enumerations (randomly chosen by me) instead of tuples of integers.
2020-05-20 16:14:41 +02:00
Thomas Krijnen 839ca49a7a Fix #861 2020-05-20 11:55:59 +02:00
Dion Moult 3d06af0001 New simple energy/daylight analysis through cove.tool integration 2020-05-20 10:42:48 +10:00
Dion Moult f081c9dbcb Add support for import and export of clash sets from Blender 2020-05-19 20:35:00 +10:00
Dion Moult bc56196f27 New UI to create, manage, and run clash sets within BlenderBIM Add-on 2020-05-19 15:08:54 +10:00
Dion Moult e45f5d867b IFC Clash now supports clashing multiple clash sets and recording the results for each clash set 2020-05-18 19:40:01 +10:00
carlopav 35ea0b1b8b further fix to geolocation.py 2020-05-17 15:26:54 +02:00
Thomas Krijnen 3427b99521 libxml2.so on travis 2020-05-17 13:46:36 +02:00
carlopav 8fe4eb1dba util/geolocation.py fix imports and dms2dd 2020-05-17 12:32:52 +02:00
Dion Moult b08fb47a47 You can now perform internal collision checks 2020-05-17 19:53:13 +10:00
Dion Moult b0bb05bcdb Minor fix. See #854. 2020-05-17 19:41:26 +10:00
Dion Moult 6193a18734 You can now filter elements in IfcClash with either inclusion or exclusion IFC selectors 2020-05-17 19:32:04 +10:00
Dion Moult c7e3dba8c4 Add util module to IfcOpenShell, including element, geolocation, unit, and selector. See #829. 2020-05-17 18:32:56 +10:00
Dion Moult 1ac37d9110 Users can now configure clash tolerance distance and results show the greatest distance 2020-05-17 14:40:48 +10:00
Dion Moult ca4b257188 You can now clash multiple IFC files against multiple IFC files 2020-05-17 14:35:08 +10:00
Dion Moult ef5f86273e Minor fix.
Use PyPi windows build of fcl instead. https://github.com/BerkeleyAutomation/python-fcl/issues/17
2020-05-17 08:34:50 +10:00
Dion Moult e44eaf0ccd Implement import and export of relative placements of spatial hierarchy. See #852. 2020-05-16 21:36:34 +10:00
Dion Moult 3235d2495a Minor fix. See #852. 2020-05-16 20:04:51 +10:00
Dion Moult 81b3711c33 Bump IOS build and add support for IFCXML import. See #854. 2020-05-16 16:07:12 +10:00
Dion Moult 588549ca91 If you export two IfcProjects, they get merged into one by default. See #852. 2020-05-16 15:10:11 +10:00
Dion Moult 64fe2e978e Bundle IFC Clash in Blender for clash detection for Windows and Linux 2020-05-16 12:54:26 +10:00
Dion Moult 3e223b53e4 Move utility as it is starting to mature 2020-05-16 09:16:54 +10:00
Thomas Krijnen 64c0679a7e FIx code generation import for schema_class 2020-05-15 14:28:56 +02:00
Dion Moult 67cf93d182 Let IFCClash be used either as a standalone or as a library 2020-05-15 21:08:27 +10:00
Dion Moult fd821f3553 Allow ifcclash to patch coordinates to aid clash accuracy 2020-05-15 21:01:18 +10:00
Dion Moult e3c36a28f2 Fix bug where type mapped representations were not isolated to a single IFC 2020-05-15 16:39:40 +10:00
Dion Moult 480a1100ea Allow custom Qto quantities to be exported 2020-05-14 21:37:33 +10:00
Dion Moult 25f5407933 Fix inability to export due to truncated object names 2020-05-14 21:36:21 +10:00
Dion Moult 395d5ebea7 Fix round-trip bug when IFC2X3 classifications are imported. See #851. 2020-05-14 21:35:43 +10:00
Dion Moult dd525d8a30 Fix bug where a subcontext is always assumed during import, causing a fail 2020-05-14 16:30:16 +10:00
Dion Moult 32c621139b Fix bug where monetary unit causes import to fail 2020-05-14 16:29:56 +10:00
Dion Moult 5d7a841380 Rewrite IFCClash to get good results 2020-05-13 22:08:30 +10:00
Dion Moult 619416f7ad Merge branch 'v0.6.0' of github.com:IfcOpenShell/IfcOpenShell into v0.6.0 2020-05-12 13:32:01 +10:00
Dion Moult df12d6bab1 New feature to convert from local to global coordinates 2020-05-12 13:31:16 +10:00
Thomas Krijnen ad4e7fa14f Fix amiguous implicit cast 2020-05-11 11:19:54 +02:00
Dion Moult df62643fc7 Minor fix 2020-05-11 17:55:26 +10:00
Dion Moult 42f325295e Refactor SVG writer class to make multiprocessing easier in Blender 2020-05-11 17:46:38 +10:00
Dion Moult 48341176df Minor fix 2020-05-11 17:29:35 +10:00
Dion Moult 754ebaba1f Forgot to commit this 2020-05-11 17:24:56 +10:00
Dion Moult 7728e83f1e Default to IfcAnnotation for all annotation objects 2020-05-11 17:13:27 +10:00
Dion Moult 42634e9c60 Export views as groups, and text annotation as IfcTextLiteralWithExtents 2020-05-11 15:30:31 +10:00
Dion Moult 1d7865c558 Add support for IfcAnnotation elements 2020-05-11 15:17:39 +10:00
Dion Moult c481b77e73 Add support for breakline annotations 2020-05-11 10:00:54 +10:00
Dion Moult 4871243445 New door tag symbol 2020-05-11 08:34:10 +10:00
Dion Moult 1a31999abf Release new optimised patterns with caching for polygon metadata 2020-05-10 22:11:20 +10:00
Thomas Krijnen b8f790ca8b SVG: Sort storeys and output elements names 2020-05-10 11:48:39 +02:00
Thomas Krijnen 1c82d8c936 svg print space areas 2020-05-10 11:10:30 +02:00
Dion Moult 58a40316af Stair annotations now work in 3D 2020-05-09 22:45:16 +10:00
Dion Moult af11ebdc4f Annotation contexts are now drawn as solid lines in section cuts 2020-05-09 22:26:39 +10:00
Dion Moult 2a8251fc94 New UI to manage representation contexts for each object 2020-05-09 18:14:10 +10:00
Dion Moult 561009c330 Support solid line annotations using curve data 2020-05-09 16:38:05 +10:00
Dion Moult e270cf6989 Improved section caching, with annotation objects not cut. 2020-05-09 15:50:24 +10:00
Dion Moult 752a7c9b1c Minor fix for IFC2X3 2020-05-09 12:47:26 +10:00
Dion Moult c83af5fc2a Switching contexts and pushing contexts now works on object types 2020-05-09 12:02:10 +10:00
Dion Moult b857d9a37b Type representations are now properly mapped to instance representations if they share a rep 2020-05-08 20:40:06 +10:00
Dion Moult ac49d1f7aa For IFC2X3, IfcDoorStyle and IfcWindowStyle metadata will be imported 2020-05-08 10:18:32 +10:00
Dion Moult 1b237ccefe Type representations are now imported too, not just element representations 2020-05-08 10:18:02 +10:00
Dion Moult cdbe3433c0 New feature to add/override a single representation to an existing IFC file 2020-05-07 22:15:16 +10:00
Dion Moult 6300b27ac4 IFC unit settings are now preserved on import 2020-05-07 21:25:53 +10:00
Dion Moult bbc429bb99 New feature to switch / load / create new contexts per object 2020-05-07 16:57:14 +10:00
Dion Moult 673f12dd8a New feature to bulk add smart annotations to objects 2020-05-07 09:36:38 +10:00
Dion Moult 0af8902dde Allow text annotation formatting functions 2020-05-06 21:10:39 +10:00
Dion Moult 4ed3517c47 Minor fix 2020-05-06 20:23:37 +10:00
Dion Moult ef88f574c1 Namespace import/export operator so we can use it headlessly 2020-05-06 09:59:22 +10:00
Thomas Krijnen 9fca1aca3a catch errors during iterator construction 2020-05-05 13:08:38 +02:00
Thomas Krijnen 9c5c05202f more defensive XML parsing 2020-05-05 13:08:09 +02:00
Thomas Krijnen c9c2f76960 parse_xml can return nullptr 2020-05-05 13:07:55 +02:00
Dion Moult 23f5c808e8 Add export support for profile 3d geometry representations 2020-05-05 18:39:14 +10:00
Dion Moult 956e9ab034 Support Annotation 2D and 3D geometry representations 2020-05-05 18:30:43 +10:00
Dion Moult 0288af196d Support FootPrint GeomSet geometry representations 2020-05-05 18:17:12 +10:00
Dion Moult 9384cc04b8 Support 2D axis representations, and curves from either mesh or curves 2020-05-05 18:07:21 +10:00
Dion Moult 01e82620aa Make IFC export more granular to only export contexts that are specified
This allows us to build up highly specific IFC exports instead of monolithic files.
2020-05-05 15:25:48 +10:00
Dion Moult fa8b12497c Reuse materials on subsequent imports if they already exist 2020-05-05 09:35:15 +10:00
Dion Moult 534ede4839 Relevant types are auto selected for export if you don't select them 2020-05-04 18:47:57 +10:00
Dion Moult c3b04d554c Lat/longs are converted to decimal degrees when imported from DMS 2020-05-04 18:46:47 +10:00
Dion Moult 3fedbad7bb Fix classification round-trip bug 2020-05-04 18:46:19 +10:00
Dion Moult 11362becc8 Geometric representation contexts and subcontexts are now imported 2020-05-04 15:27:12 +10:00
Jesusbill 2d2c5cfc3d add orientation in the json file for point and line geometries 2020-05-04 05:34:19 +02:00
Dion Moult 3ce71e855f Text annotation can now extract dynamic variables from IFC data 2020-05-04 12:20:34 +10:00
Dion Moult dce5c40007 Aggregates are now placed inside IfcProject during import 2020-05-04 10:21:28 +10:00
Dion Moult 7410d75ef5 Users can now specify a symbol for text annotation 2020-05-04 09:35:35 +10:00
Dion Moult be2556aa0c Minor fix 2020-05-04 07:46:25 +10:00
Dion Moult 97ac0e09b7 Add option to use cached render during documentation 2020-05-03 20:37:51 +10:00
Dion Moult 61a2eb4a43 Feature to set and resize text to 1.8, 2.5, 3.5, 5 and 7 sizes 2020-05-03 19:54:27 +10:00
Dion Moult 7deedf6ec9 New UI to add annotation objects 2020-05-03 15:41:05 +10:00
Dion Moult 9e250a9616 Cache IFC metadata so you don't need to reload the IFC file on every view generation 2020-05-03 11:24:52 +10:00
Dion Moult a712861633 Grid annotations now work in 3D too 2020-05-03 11:24:22 +10:00
Dion Moult 280c7df79a Don't cut rooms in documentation, fix non single material bug, and add view present for construction style documentation 2020-05-02 21:01:39 +10:00
Dion Moult 47eb032689 Users can now specify which IFC files they want to cut 2020-05-02 17:33:16 +10:00
Dion Moult 741ae2575d Full classification HasReferences hierarchy is now exported 2020-05-02 13:57:11 +10:00
Dion Moult 70f298baae Support import of document information and relationships 2020-05-02 09:21:13 +10:00
Dion Moult 04afc101a3 You can now relate and export document references and information entities 2020-05-01 19:13:54 +10:00
Dion Moult 784a394298 New document reference UI, where all docs are imported regardless of object association, and you can edit almost all metadata 2020-05-01 17:24:59 +10:00
Dion Moult 6e0fb6145e Author and export document information metadata 2020-05-01 12:56:57 +10:00
Dion Moult 7b5d8a4079 Import rebar more efficiently without needing to create a profile 2020-05-01 10:23:19 +10:00
Dion Moult 9d9911c4c0 Import all document association metadata, not just location 2020-05-01 09:58:15 +10:00
Dion Moult 7ac2dc6712 Import element classification references 2020-05-01 08:33:50 +10:00
Dion Moult ce00b3d5f8 Import classifications, as well as the hierarchy tree which can be browsed 2020-04-30 17:03:01 +10:00
Dion Moult 38167af916 Fix section planes not cutting through aggregates and appearing at cursor 2020-04-30 08:28:00 +10:00
Dion Moult adb4a3f72a New feature to select similar type 2020-04-29 20:26:36 +10:00
Dion Moult a34a05262e Minor fix 2020-04-29 18:11:44 +10:00
Dion Moult fcd528abfa Aggregate metadata is now imported (attributes / psets / types / etc) 2020-04-29 09:29:55 +10:00
Dion Moult 3eee143bed New option to merge aggregates into a single object for artists 2020-04-29 09:20:30 +10:00
Dion Moult 203fcc1dca Bump bcfplugin dependency to latest version 2020-04-28 18:32:45 +10:00
Dion Moult 2fa49d36d8 New operator to reload an existing IFC file 2020-04-28 14:52:04 +10:00
Dion Moult 7bb7d91c7e Improve usability of IFCDiff by prompting for export JSON file 2020-04-28 11:42:08 +10:00
Dion Moult 1fdd3352ec Add support for BCF bitmaps 2020-04-28 10:46:08 +10:00
Dion Moult 6d26e1c31f Add support for BCF clipping planes 2020-04-27 14:30:33 +10:00
Dion Moult bb935bf167 Add support for BCF line annotations 2020-04-27 13:35:39 +10:00
Dion Moult 01cd5d1d79 Let user control section plane colour 2020-04-27 09:33:00 +10:00
Dion Moult 9f5ef32173 Eyedrop tool to visually select objects to export to IFC 2020-04-27 08:32:01 +10:00
Dion Moult d65f2b432b New import workaround for vendors who create a silly amount of materials like DDS-CAD 2020-04-26 22:06:27 +10:00
Dion Moult b8ea5dc3be IFCCSV now supports queries for inverse spatial or type relationships 2020-04-26 17:33:18 +10:00
Dion Moult cbfd41ad28 Package IFCCSV with BlenderBIM, with UI to import export CSV IFC data 2020-04-26 14:41:38 +10:00
Dion Moult 753fdae0d4 Allow export of IFC class into CSV 2020-04-26 14:40:33 +10:00
Dion Moult 011c50a042 IFCCSV can now be included as a library in your app! 2020-04-26 14:21:11 +10:00
Dion Moult a695eecd9a Minor fix to IFCCSV when exporting non-existant attributes 2020-04-26 14:12:31 +10:00
Dion Moult 3d45f9afeb New feature to only apply section planes to specific objects 2020-04-25 19:17:47 +10:00
Dion Moult 82e38e3abe New feature to remove a section plane 2020-04-25 19:09:34 +10:00
Dion Moult 3671953472 New feature to have multiple section planes at any angle 2020-04-25 17:40:24 +10:00
Dion Moult b250472d60 New feature to create a section plane on a model in real-time 2020-04-25 16:21:15 +10:00
Thomas Krijnen 2ee0cda83e delitem in ifc express parser schema 2020-04-24 13:56:28 +02:00
Thomas Krijnen 186da7ce8b Better formatting in IFC express parser 2020-04-24 13:56:06 +02:00
Dion Moult 4db3b83681 Deprecate CSV-based pset assignment 2020-04-24 20:54:24 +10:00
Dion Moult 13fef5a452 New workaround for importing Civil 3D files with absolute coords 2020-04-24 19:55:00 +10:00
Dion Moult 80863f94d3 New feature to write new property set templates 2020-04-24 18:05:59 +10:00
Dion Moult 9ad57d658e New feature to read pset template files 2020-04-24 17:14:07 +10:00
Dion Moult a90ad6e16c Only bundle Uniclass and Omniclass. Other systems can be downloaded online. 2020-04-23 18:16:04 +10:00
Dion Moult 19130b109e New hierarchical classification navigator, reading class data from IFCs. Thanks to Lucyon Oak (Teck-Freak) 2020-04-23 16:05:06 +10:00
Dion Moult 9217af315b New Graphisoft classification XML to IFC converter utility 2020-04-23 14:31:58 +10:00
Dion Moult 13d434c00f Fix incorrect OffsetObjectPlacement patch when coordinates or directions are recycled 2020-04-23 09:48:52 +10:00
Dion Moult 2bb57aebb5 New IfcPatch recipe to offset and rotate an entire model 2020-04-21 18:55:28 +10:00
Dion Moult 048966bda2 Read from model precision to determine tolerance when doing diffs 2020-04-21 17:29:47 +10:00
Dion Moult ee69bfedcb New feature to copy attributes or psets to all selected objects courtesy of Lucyon Oak (Teck-Freak) 2020-04-20 11:06:34 +10:00
Dion Moult f63ac9609b Optimise rebar profile creation on IFC import 2020-04-16 13:40:46 +10:00
Dion Moult 7adf4934aa Add support for importing IFC groups 2020-04-15 10:08:09 +10:00
Dion Moult 66afa9872d Minor fix 2020-04-14 20:53:32 +10:00
Dion Moult 4e0347fb05 Fix IFC grids imported in wrong location 2020-04-14 20:51:38 +10:00
Dion Moult 442ab790d4 Add export support for CAD presentation layer assignment 2020-04-13 18:24:47 +10:00
Dion Moult ddc37ab4d1 Minor fix 2020-04-13 13:23:53 +10:00
Dion Moult c3a795c825 Add support for BCF orthogonal camera scales 2020-04-12 21:00:13 +10:00
Dion Moult 88bb7da0b2 Add support for BCF component visibility, colouring, and selection sets 2020-04-12 20:40:07 +10:00
Dion Moult d180c4732f Support for exporting IFCZIP files. See #834 2020-04-12 09:51:10 +10:00
Dion Moult bdfe197c64 Support for importing IFCZIP files. See #834 2020-04-12 09:17:26 +10:00
Thomas Krijnen 42fedf81c4 Add parse_ifcxml to ifcopenshell_wrapper 2020-04-11 14:13:19 +02:00
Dion Moult c93a4b6808 Fix schema-invalid exports for booleans, mat slots without polys, and linked duplicate objects having duplicate materials 2020-04-11 21:54:36 +10:00
Dion Moult 3562b566d0 Remove unnecessary cmake files for linux builds 2020-04-11 11:11:53 +10:00
Dion Moult 65a9d6ac50 Fix potential infinite loop during export thanks to Stephen Leger 2020-04-11 11:03:29 +10:00
Dion Moult 2e21c97d82 Remove obsolete IFC file 2020-04-11 10:40:35 +10:00
Dion Moult efc8533c2d Delete obsolete ifcdoc tool 2020-04-11 10:38:12 +10:00
Dion Moult 407e64632e Reorganise libs into its own folder thanks to Stephen Leger 2020-04-11 10:37:47 +10:00
Dion Moult 3d1c796f14 Minor fix 2020-04-09 18:14:55 +10:00
Dion Moult 2db3cf0aa0 Merge pull request #830 from s-leger/patch-3
Remove hardcoded selection
2020-04-09 10:51:57 +10:00
s-leger f59f017bde Remove hardcoded selection
use selected_objects argument of exporter
2020-04-09 02:46:38 +02:00
s-leger abbaef459b Remove hardcoded input objects
Small cleanup of add_spatial_elements_if_unselected using sets
IfcExporter.export and IfcParser.parse take selected_objects as argument
2020-04-09 02:42:03 +02:00
Dion Moult dd1b0a1056 Merge pull request #828 from s-leger/patch-2
Use ifcExportSettings.factory()
2020-04-09 08:26:55 +10:00
Dion Moult 79b741225b Merge pull request #827 from s-leger/patch-1
Settings factory
2020-04-09 08:26:45 +10:00
s-leger c78bb18c8d Use ifcExportSettings.factory() 2020-04-08 15:43:45 +02:00
s-leger 4cf3479036 Settings factory
Use a static "factory" method to keep init logic near settings definition.
```python
logger = logging.getLogger('ExportIFC')
            logging.basicConfig(
                filename=context.scene.BIMProperties.data_dir + 'process.log',
                filemode='a', level=logging.DEBUG)
            output_file = bpy.path.ensure_ext(self.filepath, '.ifc')
            ifc_export_settings = export_ifc.IfcExportSettings.factory(context, output_file, logger)
            ifc_parser = export_ifc.IfcParser(ifc_export_settings)
            ifc_export_settings.logger.info('Starting export')
```
2020-04-08 15:40:12 +02:00
Thomas Krijnen 8bf8cdf51b Guarantee schemas are initialized for serialization and tesselation 2020-04-08 15:04:17 +02:00
Thomas Krijnen a59633ae0b Update MVD submodule 2020-04-08 12:34:18 +02:00
Dion Moult f6db62c758 Psets and qtos can be selected from a list instead of typed 2020-04-08 14:15:36 +10:00
Dion Moult 44b49f4ce9 Minor fix 2020-04-08 12:07:27 +10:00
Dion Moult b6e97dd26c Optimise spatial tree creation during import 2020-04-08 11:05:27 +10:00
Dion Moult 67bb18b580 Bump to latest IfcOpenShell build 2020-04-08 11:04:18 +10:00
Jesusbill 4786dc78a3 create ifc2ca dedicated folder and populate with existing scripts 2020-04-07 16:10:42 +02:00
Dion Moult fb51e85f79 Minor fix 2020-04-07 19:01:57 +10:00
Dion Moult acf1289d50 Import rebar as an extruded circle instead of a brep 2020-04-07 18:50:07 +10:00
Dion Moult b8edcb880d Minor fix 2020-04-07 18:49:16 +10:00
Dion Moult e86839d2db Diffs are now supported in non-legacy importer 2020-04-07 15:44:54 +10:00
Dion Moult 3049d24f6f Accomodate invalid psets without properties created by Solidworks 2020-04-07 14:46:58 +10:00
Dion Moult 28d5d11474 Spatial elements without geometry are now imported too 2020-04-07 14:34:24 +10:00
Dion Moult 503fcee432 Remove uninstall feature, as the built-in Blender remove plugin now handles this 2020-04-07 12:57:07 +10:00
Dion Moult 4c3051267e Repackage BlenderBIM Add-on in single add-on dir thanks to Stephen Leger from Archipack 2020-04-07 12:02:44 +10:00
Dion Moult df14ab57bf Fix wrapped data values in COBie extracts 2020-04-06 17:30:02 +10:00
Dion Moult 374d5a5d1d New optional GUI for BIMTester for user friendly testing 2020-04-06 16:55:36 +10:00
Dion Moult ee288bf7f9 Implement Project setup MicroMVD steps in BIMTester 2020-04-06 11:59:28 +10:00
Dion Moult 96ab539a0f Allow people to export context / project metadata 2020-04-06 10:18:23 +10:00
Dion Moult 1662b11fb2 Support different aspect ratios for BCF snapshots 2020-04-03 17:35:45 +11:00
Dion Moult 7ee385866a Minor fix 2020-04-03 16:08:49 +11:00
Dion Moult f3590f2b7b Allow people to check all inverse relationships without filters 2020-04-03 11:15:29 +11:00
Dion Moult 22e4eb4570 Allow to diff inverse relationships 2020-04-03 11:10:14 +11:00
Dion Moult 82c38f67ba BIMTester can now package test definitions for portability 2020-04-02 18:38:42 +11:00
Dion Moult 4c58cec393 Fix bug where missing styles in invalid IFCs cause imports to fail 2020-04-02 13:11:07 +11:00
Dion Moult 02e29955bf Merge pull request #819 from Jesusbill/v0.6.0
udpate ifc2ca.py - major revision
2020-04-02 09:04:00 +11:00
Jesusbill f4681b2053 udpate ifc2ca.py - major revision 2020-04-01 15:39:49 +02:00
Thomas Krijnen b41d3ed2e6 SVG --print-space-names and entity classes 2020-04-01 12:19:56 +02:00
Dion Moult 55f3f20531 Add experimental multicore import to IFCClash 2020-04-01 15:11:05 +11:00
Dion Moult a6c88a1d01 Accomodate deprecreated IfcPresentationStyleAssignment better 2020-04-01 09:25:34 +11:00
Dion Moult 3ff4b056b7 Support multiple materials per object on import 2020-03-31 19:37:04 +11:00
Dion Moult a5fd66706a Add support for BCF header files 2020-03-31 12:35:17 +11:00
Thomas Krijnen 293ba0db51 Don't fail on parse errors in multithreaded mode #746 2020-03-30 10:53:08 +02:00
Dion Moult d5d36f85be Change exception to error log 2020-03-30 10:20:15 +02:00
Dion Moult f921b6a7e7 Make validate module write to logger 2020-03-30 10:20:15 +02:00
Dion Moult fe633d9698 Add support for ordered BCF viewpoint snapshot images 2020-03-30 18:27:28 +11:00
Dion Moult c4cd6ef710 New feature to validate IFC files against specification 2020-03-30 12:47:14 +11:00
Thomas Krijnen df81490f86 Don't run wire intersection checks on parallel edge pairs 2020-03-27 13:26:34 +01:00
Dion Moult c99bf6e63a Compile views and sheets with automatic numbers, names, and scales 2020-03-27 18:23:46 +11:00
Dion Moult 46c878341d Fix broken ResetAbsoluteCoordinates IfcPatch recipe 2020-03-27 09:04:20 +11:00
Thomas Krijnen 21c9598409 Remove duplicate element quantity from XML #802 2020-03-26 18:53:57 +01:00
Dion Moult 03a23958a3 Store scale and view title in views on sheets, so it can be post-processed 2020-03-26 21:44:54 +11:00
Dion Moult f37e5e5d83 New buttons to open views and sheets instead of browsing manually 2020-03-26 20:47:21 +11:00
Dion Moult bf4eb330e0 New feature to add a sheet, and add a view to a sheet 2020-03-26 18:26:35 +11:00
Dion Moult cdb7a00f0a Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.6.0 2020-03-26 18:23:36 +11:00
Dion Moult 8613834129 Optimise titleblock template. Skip pattern adding until it is optimised. 2020-03-26 18:23:27 +11:00
Thomas Krijnen 8625aab5f0 Check CWD in builds-deps.cmd #804 2020-03-25 14:20:47 +01:00
Thomas Krijnen 7e6ebbebe0 Update docs in accordance with #804 2020-03-25 14:09:22 +01:00
Thomas Krijnen ed98983687 Tolerance handling, error detection and triangulation on tesselation geometry #814 2020-03-25 14:05:22 +01:00
Dion Moult 3a590e4ba1 Implement BCF related topics 2020-03-25 17:55:52 +11:00
Dion Moult 1971bfe014 Support BCF topic document references 2020-03-25 17:12:02 +11:00
Dion Moult dd98ac3a89 Add links to project homepage, docs, wiki, and community 2020-03-25 16:32:14 +11:00
Dion Moult 2678dc3a09 Add support for BCF topic BIM snippets 2020-03-25 16:20:24 +11:00
Dion Moult f2e203d699 Show topic reference links and allow browsing of links 2020-03-25 15:03:06 +11:00
Dion Moult 52ff61a91c Show BCF topic metadata in UI 2020-03-24 17:53:58 +11:00
Dion Moult 8a22169036 Add support for viewing BCF comments 2020-03-24 14:44:03 +11:00
Dion Moult 7c66c5e4fc Allow users to select just objects for convenience when exporting 2020-03-24 11:25:27 +11:00
Dion Moult 44d884590a Allow any type of curve to be used for construction documentation annotation 2020-03-24 10:34:58 +11:00
Dion Moult 662a9fdad7 Allow users to see different BCF viewpoints through a camera 2020-03-23 19:35:02 +11:00
Dion Moult 648aaaa778 Show list of BCF viewpoints in UI for each topic 2020-03-22 20:39:22 +11:00
Dion Moult a8cb855613 Add button and operator to uninstall add-on 2020-03-22 15:25:57 +11:00
Dion Moult 7079e2aee2 Package BCF 2.1 schemas with distribution 2020-03-21 21:54:53 +11:00
Dion Moult 65a5dcbe25 Add list of BCF topics in UI 2020-03-21 21:44:02 +11:00
Dion Moult 5454521c2a Minor fix 2020-03-21 00:25:26 +01:00
Dion Moult 9932e7f012 Add ability to select a BCF file to be loaded 2020-03-20 21:22:32 +11:00
Dion Moult a7b52b5578 Add dependencies for patched bcfplugin 2020-03-20 21:21:23 +11:00
Dion Moult 114611d173 Do limited dissolve on imported meshes 2020-03-20 14:42:43 +11:00
Dion Moult 3b8b0cbbbf Don't assume the first representation when checking materials 2020-03-20 09:38:41 +11:00
Thomas Krijnen 83bba733c7 Update .travis.yml 2020-03-19 14:37:11 +01:00
Thomas Krijnen c991b9812f Update .travis.yml 2020-03-19 13:51:45 +01:00
Dion Moult 5454c5b1e7 Allow manually specified qto values to be exported 2020-03-19 18:16:30 +11:00
Dion Moult 7fe067498f Allow qtos to be imported 2020-03-19 16:48:50 +11:00
Dion Moult ea71485f3b Allow import of contained in IfcSpace relationship 2020-03-19 15:53:36 +11:00
Dion Moult 41acb6c985 Allow export of objects contained inside IfcSpace and other spatial elements 2020-03-19 14:37:18 +11:00
Dion Moult 772468d1ec Minor fix 2020-03-19 10:41:07 +11:00
Dion Moult 296ae71606 Merge remote-tracking branch 'refs/remotes/origin/v0.6.0' into v0.6.0 2020-03-19 10:35:07 +11:00
Dion Moult 160c055906 Add workaround for IfcOpenShell e44221c - see bug #812 2020-03-19 10:33:31 +11:00
Thomas Krijnen 86b02a9adf Address some warnings 2020-03-18 11:59:11 +01:00
Thomas Krijnen 30b28d5a8f Update .travis.yml 2020-03-18 11:42:00 +01:00
Thomas Krijnen d02182793b Product names in STP export thanks to luuk https://sourceforge.net/p/ifcopenshell/discussion/1782717/thread/55558229/?limit=25#a843 2020-03-18 10:12:54 +01:00
Dion Moult 358323492e Add new feature to auto-clean mesh on import 2020-03-18 17:49:08 +11:00
Dion Moult e99c775d51 Fix bug where some objects inside spaces won't import 2020-03-18 17:48:42 +11:00
Dion Moult e068776141 Fix bug where aggregate objects might not be exported 2020-03-18 14:22:44 +11:00
Dion Moult 130d732745 Support multiple materials per object on IFC export 2020-03-18 14:22:01 +11:00
Thomas Krijnen f24db3402f Support for 3D part of IfcSurfaceCurve 2020-03-17 15:13:36 +01:00
Thomas Krijnen 0cfbde13b9 PERMISSIVE_EXTRUSION preproc directive 2020-03-17 11:57:43 +01:00
Thomas Krijnen 9a99f85026 IfcCraneRailAShapeProfileDef for better or worse 2020-03-17 11:55:54 +01:00
Thomas Krijnen 481c6165ca Parametrize code generation actions from the command line 2020-03-17 11:55:28 +01:00
Dion Moult dc8e73b822 Add support for IfcSpatialElements and exclude abstract classes. 2020-03-17 19:16:11 +11:00
Dion Moult 8ba9b37ec9 Add icon and embed common.lark for packaging IFCCSV 2020-03-16 14:54:45 +11:00
Dion Moult a5b5b10d29 Add IFCCSV tool - import and export data from CSV 2020-03-16 13:19:35 +11:00
Thomas Krijnen 3e55297eb0 Propagate hierarchy helper template archument to IfcFile schema name 2020-03-11 16:19:13 +01:00
Thomas Krijnen bd27ff150a Place fills under openings in XML 2020-03-11 15:16:18 +01:00
Thomas Krijnen cb872a5bff Miirror SVG output to account for coordinate systems 2020-03-11 14:45:58 +01:00
Dion Moult f540e3495c Allow user toggle if aggregates are created. Useful for artists. 2020-03-11 15:44:00 +11:00
Dion Moult 9ce34ce395 Add feature to merge by material when importing, useful for artists 2020-03-11 15:27:03 +11:00
Dion Moult 608abf2e55 Calculate position of hidden lines in views in absolute coordinates
Very useful for creating projection lines in axonometrics
2020-03-10 18:28:03 +11:00
Dion Moult c6e10abc51 New feature to merge import geometry by class, which is useful for artists who don't care too much about the data 2020-03-10 09:56:34 +11:00
Thomas Krijnen 4df2feabe2 Add py38 to nix build 2020-03-08 10:14:47 +01:00
Thomas Krijnen 3c355b4848 Add py38 to nix build 2020-03-08 10:13:35 +01:00
Dion Moult a7c14bc7c3 Fix bug where placing spaces in a spatial structure fails with non-unique names 2020-03-08 14:51:32 +11:00
Dion Moult 3a91ed1382 Support IFC2X3 materials without transparency 2020-03-06 22:03:01 +11:00
Dion Moult e2cfc676d8 New test to check that no elements exist of a particular type 2020-03-06 11:35:05 +11:00
Dion Moult 8008ad16b1 Fix import bug where not all objects are typed 2020-03-06 10:17:00 +11:00
Dion Moult 5dd919f028 Create argument to specify a single feature in BIMTester, and separate report generation into its own function 2020-03-06 10:16:30 +11:00
Dion Moult 43348ce236 Bump to latest IfcOpenShell build 2020-02-28 11:24:43 +11:00
AlaaB2020 9f2443e01c Update IfcGeomFunctions.cpp
Changing comment to be suitable for the code change
2020-02-26 10:42:23 +02:00
Dion Moult c8cb9d8a7c Auto detect badly geolocated site from Tekla upon import 2020-02-25 17:47:32 +11:00
Dion Moult ffc8ec8c8d Accomodate deprecated IFC2X3 ways of relating type products 2020-02-25 17:43:48 +11:00
AlaaB2020 9cab063671 Update IfcGeomFunctions.cpp
get the first material even if there are more than one material layer
2020-02-24 13:08:21 +02:00
Dion Moult baf5f1891f New import option to toggle the import of space objects 2020-02-21 11:43:48 +11:00
Dion Moult bdc8caa5f6 New feature to colour code objects by attribute or pset values 2020-02-21 09:41:35 +11:00
Dion Moult 7a5ec24d8d Add ability to search with regex for pset values 2020-02-20 17:31:38 +11:00
Dion Moult eac8925134 Minor UI clean-up to hide panels by default 2020-02-19 17:24:28 +11:00
Dion Moult c3ffe9c3de Build new attribute search operator with regex support and ignorecase 2020-02-19 17:24:01 +11:00
Dion Moult 6c47ff73fd Specially import grids even though they are 2D as grids are pretty important. 2020-02-19 16:20:02 +11:00
Dion Moult cfe18d41d6 Implement support for importing pset data 2020-02-19 14:43:34 +11:00
Dion Moult 5beb3dc755 Show percentage results in BIMTester, add tests for element existance, attributes from a list, and more generic attribute checking 2020-02-18 14:03:32 +11:00
Thomas Krijnen e44221c9c2 XML serializer decomposition fixes for IFC4 2020-02-10 16:36:56 +01:00
Thomas Krijnen 56e3353879 Add inverse attribute availability to schema definition macros 2020-02-10 16:36:38 +01:00
Sander Boer 861dab0d9e proposed fix for #739, build with swig4 2020-02-07 10:45:14 +01:00
Dion Moult 7c97ad05fd New IFCPatch tool, which can "patch" an IFC, including adjusting coordinates and elevations. 2020-02-06 16:20:15 +11:00
Dion Moult bf55214e1a IFC2CA made more IFC specific - Merge pull request #778 from Jesusbill/v0.6.0
minor update of ifc2ca.py
2020-02-05 22:05:01 +11:00
Dion Moult 207359ec2c Minor fix 2020-02-04 17:38:08 +11:00
Dion Moult 1f89a00896 Allow people to maintain parametric modifiers, or bake the results 2020-02-04 11:57:06 +11:00
Dion Moult b449f8afaa Handle scenarios where the data block name is the name for meshes and curves 2020-02-04 11:56:39 +11:00
Dion Moult 2d53c691f5 Prevent duplicate GlobalIds if the author manually creates a collision 2020-02-04 11:55:54 +11:00
Thomas Krijnen 3b0585ae4b Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.6.0 2020-02-03 14:00:51 +01:00
Thomas Krijnen 2e6f5c1bd9 Fix #776 IfcPolygonalFaceSet units 2020-02-03 14:00:21 +01:00
Dion Moult c87903d3d7 Allow arbitrary locations for leaders and section levels. 2020-02-03 18:01:41 +11:00
Dion Moult e03e961a2f Add support for projection elements 2020-02-02 20:28:51 +11:00
Dion Moult c7c3d366bc Allow 3D dimension annotations with arbitrary origins for flexibility. 2020-02-01 22:50:49 +11:00
Dion Moult 691cc8759a New operator to quickly set diagram render options 2020-02-01 22:49:35 +11:00
Jesusbill 2786d7a20c minor update of ifc2ca.py 2020-01-31 16:52:15 +01:00
Dion Moult 9571d4a67b Allow users to toggle import of opening elements. 2020-01-31 12:52:44 +11:00
Dion Moult bb462659a3 Fix import of multiple spatial elements with the same name 2020-01-31 12:44:02 +11:00
Dion Moult 85e55b6deb Implement import and association of type products 2020-01-30 17:23:57 +11:00
Dion Moult e354354b1a Fix curve profile orientation on export. 2020-01-30 15:33:01 +11:00
Dion Moult 56a2f9eedc Minor fix where enum position would get lost when refreshed 2020-01-30 08:57:20 +11:00
Dion Moult 9cf81d5c7b Record the source IFC file as metadata in preparation for partial writes 2020-01-29 11:42:43 +11:00
Dion Moult 1800ebc893 Sites now can have a long/lat attribute exported. 2020-01-29 11:29:29 +11:00
Dion Moult 9895ff3c22 Quick project set up now creates spatial objects. 2020-01-29 11:28:26 +11:00
Dion Moult 52fae93a14 Allow export of objects for spatial tree 2020-01-28 22:06:58 +11:00
Dion Moult 5a3303837d You can now write BIMTester tests directly to the features dir. 2020-01-28 18:10:33 +11:00
Dion Moult f501aaeb01 Add new import workaround for 12D files with absolute coordinates. 2020-01-24 10:19:44 +11:00
Dion Moult 98e082ccac Assign product types using a property, not by parenting for scalability. 2020-01-23 15:23:19 +11:00
Dion Moult 9e67b05df9 Add workaround for importing wrongly geolocated Revit buildings. 2020-01-22 21:43:18 +11:00
Dion Moult f80e700997 Add autodoc for IfcOpenShell-python. See #755. 2020-01-21 21:34:32 +11:00
Dion Moult 2f1b5ff2d4 Add doc pages for utilities, rename doc to IfcOpenShell 2020-01-21 18:03:15 +11:00
Dion Moult 9b5265e6fd Merge IfcOpenShell documentation structure. See #755. 2020-01-21 17:53:05 +11:00
Dion Moult b88739eed8 Add progress bar when importing. Fix #759. 2020-01-21 14:55:35 +11:00
Dion Moult 3108d3ecfe Add experimental IFC to Code_Aster converter script. See #756. 2020-01-21 09:55:40 +11:00
Dion Moult f78a0ec88a Assign all structural members to group. See #756. 2020-01-20 20:15:06 +11:00
Dion Moult afaab7c9e0 Allow export of structural analysis models. See #756. 2020-01-20 17:26:41 +11:00
Dion Moult 8dce661830 Allow export of structural member connections. See #756. 2020-01-20 16:22:24 +11:00
Dion Moult 47723b4e63 Allow export of boundary conditions. See #756. 2020-01-20 15:06:24 +11:00
Dion Moult f50722c4bc New UI to add structural boundary condition data. See #756. 2020-01-19 18:41:57 +11:00
Dion Moult a34588179d Extract select attributes from XSD into JSON. 2020-01-19 18:40:39 +11:00
Dion Moult 3fb268f687 Properly detect all possible representation contexts for an object. See #756. 2020-01-18 12:47:55 +11:00
Dion Moult 368f76b713 Minor fix 2020-01-17 14:13:11 +11:00
Dion Moult 09e4fe56f4 Add junit dir argument 2020-01-17 12:52:55 +11:00
Dion Moult e077235eee Add bimtester definitions related to model setup tests 2020-01-16 17:55:37 +11:00
Thomas Krijnen d9805185ee Fix boolean op style selection 2020-01-15 11:50:44 +01:00
Thomas Krijnen f58d9243fa Fix trimmed curve where vertex order does not agree with linear curve geom 2020-01-15 10:35:31 +01:00
Dion Moult 9a2f101df7 Allow structural point connections to be exported. See #756. 2020-01-15 17:43:21 +11:00
Dion Moult af278b5724 Add UI for pset overrides without the need to create a CSV. 2020-01-15 17:17:03 +11:00
Dion Moult 71f836d013 Add ability to export parameterised profiles for material profiles. 2020-01-14 17:38:54 +11:00
Dion Moult 8490dc7841 Allow material profile sets to be exported. 2020-01-14 16:11:11 +11:00
Dion Moult 2dbcd6712e Create UI to add/remove material attributes 2020-01-14 15:38:22 +11:00
Dion Moult ef919ab431 Create UI to change material definition type 2020-01-14 13:28:48 +11:00
Dion Moult 29b7b2963e Allow topological reference export of structural members. See #756. 2020-01-14 12:11:26 +11:00
Dion Moult 8ae8042d65 Only show predefined type and user defined type if it is a valid input 2020-01-13 17:42:59 +11:00
Dion Moult c4af52e8ee Allow IfcStructural* elements to be exported. See #756. 2020-01-13 17:35:56 +11:00
Thomas Krijnen 9ef9498c35 Submodule 2020-01-12 15:21:09 +01:00
Thomas Krijnen 68763f4988 Don't raise error on eliminated compcurve polygon points 2020-01-12 15:18:12 +01:00
Thomas Krijnen 98d8a3477d Limit max angle for trimmed curve approx 2020-01-12 15:17:48 +01:00
Thomas Krijnen 07756ab2da Renable wire segmentation for #468 and #674 2020-01-12 14:40:27 +01:00
Dion Moult a2003101a0 Support export of point clouds to IFC 2020-01-12 20:47:06 +11:00
Dion Moult ce5bf5749f Minor fix 2020-01-12 20:45:55 +11:00
Dion Moult 7519447966 Add sample data for doors and window. 2020-01-12 19:02:32 +11:00
Dion Moult e1cfa68dcb Allow export of material properties. Related to #756. 2020-01-12 19:01:35 +11:00
Thomas Krijnen 614348d3a2 Update testfile submodule 2020-01-11 14:45:36 +01:00
Thomas Krijnen 4320888d9d Fix #726, #728, #730 by other transition mode, more aggressive curve approx and custom revolution implementation 2020-01-11 14:23:16 +01:00
Dion Moult d84cfeffcc Export an axis representation for beveled curves. Related to #756. 2020-01-11 22:58:53 +11:00
Dion Moult a762afc7c1 All export of vector curve objects. Related to #756 2020-01-11 09:55:39 +11:00
Dion Moult 7c0f5ca7bc Allow import of site objects 2020-01-11 07:51:57 +11:00
Thomas Krijnen 6047addfae #include <Message_Msg.hxx> 2020-01-10 10:05:31 +01:00
Dion Moult b66e5e9911 Document context panel 2020-01-10 18:44:05 +11:00
Dion Moult e5cd71dd1e Minor fix 2020-01-10 18:24:05 +11:00
Dion Moult 28e043f97a Minor makefile fix 2020-01-09 06:00:30 +01:00
Dion Moult af2dd8f9bb Minor fix 2020-01-09 15:52:11 +11:00
Dion Moult 0f1be45990 Automatically detect and set import workarounds for Revit 2020-01-09 15:30:43 +11:00
Dion Moult d91fa69e83 Write documentation for BIM panel and owner history panel 2020-01-09 13:49:11 +11:00
Dion Moult a286082a1c Add scene documentation 2020-01-09 07:28:30 +11:00
Dion Moult fde80896a1 Add assign context operator and minor UI cleanup 2020-01-08 16:58:59 +11:00
Dion Moult 579d3d9f86 Add feature to explode an aggregation. 2020-01-08 15:58:39 +11:00
Dion Moult f11021b505 Place opening elements into collection on import. Fix #750. 2020-01-08 15:26:31 +11:00
Dion Moult 21ed3ea515 Import aggregations into collections. Fix #750. 2020-01-08 15:07:29 +11:00
Dion Moult e927ac49ac Add basic sphinx docs 2020-01-08 10:58:52 +11:00
Thomas Krijnen e8494dcbfd Fix placement on STP and IGS export 2020-01-07 15:37:22 +01:00
Thomas Krijnen 99706bdf5a Fix #741 2020-01-07 14:17:55 +01:00
Dion Moult 6b9a01c50d Add STEP header metadata 2020-01-07 16:12:11 +11:00
Dion Moult 13e0b77c7f Fallback to legacy importer if diff feature enabled 2020-01-07 15:48:54 +11:00
Dion Moult dcaef14b5f Add dependencies for IFC Diff 2020-01-07 14:42:03 +11:00
Dion Moult 6d6f7af3d7 Create UI to run IFCDiff tool from Blender 2020-01-07 14:27:34 +11:00
Dion Moult dfe8149b17 Package IFC diff utility for Windows 2020-01-06 17:39:04 +11:00
Dion Moult fc220efb6c Create UI to switch between views easily 2020-01-06 14:30:44 +11:00
Dion Moult 6d83815ab1 Allow view scales to be set per camera instead of global 2020-01-06 11:46:42 +11:00
Dion Moult 461b1735dd New interface to quickly create a new view for documentation 2020-01-06 10:41:59 +11:00
Dion Moult 642738e0c0 Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.6.0 2020-01-06 08:49:24 +11:00
Dion Moult 99c77fff5e Remove unnecessary example blend file 2020-01-06 08:48:14 +11:00
Dion Moult 8a255d3b0d Fix duplicate material assignment bug on import 2020-01-03 21:21:36 +11:00
Dion Moult 94d2a11096 Minor fix when ignoring site coordinates 2020-01-03 16:56:32 +11:00
Dion Moult 403cda5bc8 Allow you to select person and organisation when exporting owner history metadata 2020-01-03 15:53:57 +11:00
Dion Moult d6b9810b94 Add about 50 hatches in SVG pattern format taken from LibreCAD 2020-01-03 12:46:29 +11:00
Dion Moult 7c6e7742a8 Implement "should recut" to force recutting of a diagram 2020-01-03 08:44:51 +11:00
Dion Moult 220826f141 Turn BIMTester into a CLI app with ability to set arguments to Behave 2020-01-02 15:02:40 +11:00
Dion Moult 2007277bfc Add unit tests to check for names, shapes, attributes, properties, and quantities 2020-01-02 13:01:17 +11:00
Dion Moult f74295127b Allow people to create spatial structure elements 2020-01-02 13:00:18 +11:00
Dion Moult 4ed4bcf660 Implement multicore importer using IfcOpenShell iterator with Revit material hack 2019-12-31 16:32:20 +11:00
Dion Moult 4da2f9c9e7 Don't strictly enforce Ifc naming in objects or meshes 2019-12-29 07:28:54 +11:00
Dion Moult 782b10fbde Add AI-enabled web 2.0 hypermedia API generate digital twin button 2019-12-20 10:43:39 +11:00
Dion Moult 4bb5248593 Minor fix 2019-12-19 16:49:27 +11:00
Dion Moult 5127555740 Implement Conda Mac and Linux lib loading workaround 2019-12-19 15:31:00 +11:00
Dion Moult 276ac5c1d1 Isolate libs for macos and linux builds 2019-12-19 05:05:57 +01:00
Dion Moult d6e16c5373 Fix bug with loading absolute dependencies on a fresh install 2019-12-19 04:35:19 +01:00
Dion Moult a93844bb83 Support multiline annotation, improve RL tags, detect active camera 2019-12-19 13:00:19 +11:00
Dion Moult 6f5a6418a7 Fix rotated dimensions, add engineering style dimensions 2019-12-19 08:17:14 +11:00
Dion Moult f63161e40a Add view cut caching, equal dims, and RL tags 2019-12-17 17:05:03 +11:00
Dion Moult b500dab88a Fix PDF dimension annotation rendering bug 2019-12-17 17:04:00 +11:00
Dion Moult eed5d05af5 Convert template to OpenGOST typeface 2019-12-17 14:59:02 +11:00
Adrien Scho 4b6fe80fb2 chore: updated broken links in readme 2019-12-16 13:43:52 +01:00
Adrien Scho 05a5c3c3f9 fix: #734 - No XML serializer registered for IFC4X1 2019-12-16 13:43:52 +01:00
Thomas Krijnen 3937d995b6 Merge branch 'master' into v0.6.0
# Conflicts:
#	src/ifcopenshell-python/ifcopenshell/geom/main.py
2019-12-16 13:41:54 +01:00
Dion Moult 1b2af78e65 Experimental packaging with OCC and SVG deps 2019-12-16 05:44:52 +01:00
Thomas Krijnen 974e3fa904 Correct clean up in Iterator 2019-12-14 13:23:40 +01:00
Dion Moult c0cd0ce07e Add section cut multiprocessing, grids, hidden lines, stair arrows, text annotations, and leaders 2019-12-13 17:25:52 +11:00
Dion Moult 4f7925580a Implement dimension text rotation, technical font, and dimension position 2019-12-12 18:17:39 +11:00
Dion Moult e87bff736e Add simple section cut results caching 2019-12-12 18:16:02 +11:00
Dion Moult 948ff287f1 Standardise line thicknesses and dimension tick styles 2019-12-12 18:14:44 +11:00
Dion Moult b452d7c794 Add support for different view scales 2019-12-12 12:51:47 +11:00
Mieszko Boczkowski 1426c7066b Move has_occ() function to __init__ 2019-12-11 11:54:56 +01:00
Mieszko Boczkowski f84982f99a Change exception on failed import for Python 2 compatibility 2019-12-11 11:54:56 +01:00
Mieszko Boczkowski 8d4f34461e Fix OCC imports in Python 2019-12-11 11:54:56 +01:00
Dion Moult 516757ba38 Support placing a view / section / diagram on a sheet 2019-12-11 18:50:01 +11:00
Dion Moult 25dfa32b7e Switch to absolute paths for module loading 2019-12-11 18:44:46 +11:00
Dion Moult 2eeb507b78 WIP support for cutting a section with dimension annotation lines 2019-12-10 18:54:26 +11:00
Dion Moult 1d04a3a5c7 Move section generator into plugin to prepare for integration 2019-12-09 21:26:29 +11:00
Dion Moult d3b56bd79b Experimental code to merge background faces in a section cut 2019-12-08 21:14:04 +11:00
Dion Moult 53d64348fd Allow people to configure exportable contexts 2019-12-07 21:33:44 +11:00
Dion Moult d46ba7d1cd Simplify UI for context management 2019-12-07 17:02:59 +11:00
Dion Moult c339a97443 Allow IFC clash utility to run as a command line app 2019-12-05 17:28:34 +11:00
Dion Moult dfc30c2137 Add sample material pass files and fix relative material locations 2019-12-05 09:54:35 +11:00
Dion Moult e9418bfb0b Allow IFC diff utility to read from command line input 2019-12-04 21:58:59 +11:00
Dion Moult f7116d70e7 Add experimental UI to manage geometric contexts 2019-12-04 17:49:28 +11:00
Dion Moult 2d495e6124 Add support to do basic import of document relationships 2019-12-04 15:30:33 +11:00
Dion Moult 5df2b3aa0a Experimental support to proxy one shape for another in IFC 2019-12-03 17:27:22 +11:00
Dion Moult a00449e34b Export clash results to JSON with metadata 2019-12-01 22:17:23 +11:00
Dion Moult 6250f903ff Implement experimental clash detection with a tolerance 2019-12-01 22:04:28 +11:00
Dion Moult 5bb59f3136 Allow fetching Eevee or Cycles materials from a material pass file 2019-11-30 22:42:04 +11:00
Dion Moult d76a67450c Import externally defined materials 2019-11-30 12:05:56 +11:00
Dion Moult a38df48d5a Support styled item surface colours on IFC import 2019-11-30 11:26:02 +11:00
Thomas Krijnen e283b51dbc Add includes for older occt versions 2019-11-26 12:47:43 +01:00
Dion Moult 44491c6167 Make the audit class a drop down in the panel UI 2019-11-26 21:05:05 +11:00
stephassoria afaa34ffc2 IfcOpenShell v0.6.0 as subrepo 2019-11-26 10:09:16 +01:00
Dion Moult 031fd1baff Mostly stable implementation of mirror modifier 2019-11-26 11:49:14 +11:00
Dion Moult e643966191 Fix incorrect version replacement 2019-11-25 07:49:13 +11:00
Dion Moult ad7ef0be4f Implement experimental support for mirror modifier 2019-11-24 22:11:57 +11:00
Dion Moult b9e6665eab Fix reuse of representation maps. See #724 2019-11-24 18:12:33 +11:00
Thomas Krijnen 9bcd932bed fixes for macos catalina 2019-11-22 18:45:11 +01:00
Thomas Krijnen bfaa9ed5f9 Old OCC compatibility 2019-11-22 13:12:39 +01:00
Johan Luttun a2418cf260 added faceset feature (#714)
* added faceset feature

* indented code correctly

* better indentation on selected hunk
2019-11-22 12:58:30 +01:00
Dion Moult 69a6f5ee36 Minor fix to build script 2019-11-21 21:49:18 +11:00
Dion Moult e781df10b8 Merge branch 'v0.6.0' of github.com:IfcOpenShell/IfcOpenShell into v0.6.0 2019-11-21 21:27:49 +11:00
Dion Moult f16861d5a9 Implement support for IfcLibraryInformation like a Git server 2019-11-21 21:27:32 +11:00
Dion Moult ad504ff081 Add sentences to exempt IFC files from BIMTester auditing 2019-11-21 09:46:37 +11:00
Dion Moult 9a18198988 Partial implementation of project library information 2019-11-21 07:09:08 +11:00
Dion Moult de64e3afc3 Reorder BIM property panels for better user experience 2019-11-21 06:48:22 +11:00
Dion Moult 7253b07b0c Fix broken select IFC type operator 2019-11-21 06:43:35 +11:00
Dion Moult b4f344627d Merge pull request #725 from s-leger/patch-5
Fix bug in boolean modifier support
2019-11-19 07:42:59 +11:00
Thomas Krijnen c385257c92 Add more warning related to rep usage. See #724 2019-11-18 12:59:48 +01:00
s-leger 859afaeece Fix negative right axis 2019-11-18 07:54:11 +01:00
s-leger e510d5a197 Fix resolve_boolean_modifier
Use matrix col for axis instead of row ..
Store product indexes in resolve_boolean_modifier
Remove get_product_from_raw_name
2019-11-18 07:51:09 +01:00
Dion Moult 33967953b7 Merge pull request #723 from s-leger/patch-5
Implement element voiding and clean up to PEP8
2019-11-18 15:55:14 +11:00
s-leger 34c2cd3c06 Update export_ifc.py
Fix function names, spaces, "type" shadowing 
improve vertices export using list comprehension
Check for empty material slot
2019-11-18 05:46:52 +01:00
s-leger 5cd6f44e73 Update export_ifc.py
Fix translation and axis of type_products
2019-11-18 04:23:41 +01:00
s-leger b75f1e1758 Merge branch 'v0.6.0' into patch-5 2019-11-18 04:07:26 +01:00
Stephen Leger f12e732854 fix merge error 2019-11-18 03:49:04 +01:00
Stephen Leger c9a5fbf221 merge 0.6 into patch-5 2019-11-18 03:45:24 +01:00
Dion Moult c930b8f155 Optimise select audited operator 2019-11-18 11:30:08 +11:00
Dion Moult 1e802bd0a3 Bugfix for BIMTester purge function to overwrite existing feature files 2019-11-18 10:48:50 +11:00
Dion Moult c46167073b Specifying an IFC diff now does an incremental import 2019-11-18 10:18:21 +11:00
Thomas Krijnen 5237f4a634 Add warning related to rep usage. See #724 2019-11-17 14:07:32 +01:00
s-leger b54be81408 Update export_ifc.py
fix typo in product
2019-11-17 14:00:05 +01:00
s-leger 39a5ecb6d2 Update export_ifc.py
Replace object by obj   - never override native var "object" 
Implements get_axis from matrix helper
2019-11-17 13:25:41 +01:00
s-leger a6128f118a Update export_ifc.py 2019-11-17 13:12:22 +01:00
Dion Moult 448a56afe9 Minor scale fix and code cleanup 2019-11-17 20:41:53 +11:00
Dion Moult 0d243beb36 Implement export for objects with non-uniform scale 2019-11-17 19:08:29 +11:00
s-leger 9e4092a050 Update export_ifc.py
Retrieve product from raw name
2019-11-17 03:15:46 +01:00
s-leger 44d4d9e563 process booleans
process booleans as RelFillsElements and RelVoidsElements
Fills are expected to be parent of holes so when you move a fill hole follow in real time
2019-11-17 02:52:20 +01:00
Dion Moult f249d55d3c Add version string to Makefile so users know their version 2019-11-17 12:40:14 +11:00
Dion Moult 85076dc697 Rename plugin to "BlenderBIM" 2019-11-17 12:29:02 +11:00
Dion Moult c074bd455f Ensure null values cannot be picked which result in bad IFC data 2019-11-17 11:59:35 +11:00
Dion Moult c04e8f98ec Refactor Blender property definitions in its own file 2019-11-17 11:38:56 +11:00
Dion Moult ef6dcd9291 Fix location for parented and constrained objects 2019-11-16 07:38:21 +11:00
s-leger c51c8602a3 Update ui.py
Dynamic enum cache
Update on change
Use direct propertygroup access in enum functions
2019-11-15 17:33:11 +11:00
Dion Moult 9659de6ebf Support export of people and organisations 2019-11-15 15:44:04 +11:00
Dion Moult 396979954f Add ability to purge tests of deleted elements 2019-11-15 15:43:33 +11:00
Dion Moult 836e350a15 Merge pull request #721 from s-leger/patch-3
Update ui.py
2019-11-15 15:03:59 +11:00
s-leger 0532048f37 Update ui.py 2019-11-15 04:59:51 +01:00
s-leger 78e18f0a01 Update ui.py
Fix for dynamic enum function signature
2019-11-15 04:53:58 +01:00
Dion Moult e1bf82b88e Merge pull request #720 from s-leger/patch-2
Class naming convention
2019-11-15 14:18:44 +11:00
Dion Moult ed0dffb409 Merge pull request #719 from s-leger/patch-1
Dynamic enumerators
2019-11-15 14:18:29 +11:00
s-leger c66a2589d8 Class naming convention
Fix naming convention for Panel classes
2019-11-15 01:48:20 +01:00
s-leger 7140b2c4e8 Dynamic enumerators
Dynamic enums require to hold proper reference to enum array. (may lead to access violation and strange ui behaviour)
Cleanup bpy.props.xxx and bpy.types.xxx
Fix in path for files with hardcoded "/"
BIM_PT_ prefixes for Panel classes
Use poll method for panels
2019-11-15 01:44:29 +01:00
Dion Moult 21e87095dc Minor fix 2019-11-14 07:51:47 +11:00
Dion Moult cfe030378a New UI to assign multiple swept solids per object 2019-11-13 18:48:12 +11:00
Dion Moult 556a476f9f Improved extrusion algorithm calculates extrusion profiles per face
Bugfixes incorrect extrusion axis locations, and also decouples object matrix_world from the extrusion axis, allowing you to have multiple extrusion per object in the future.
2019-11-12 17:57:59 +11:00
Dion Moult 49efce7eca New option to ignore site, to import incorrectly geolocated IFCs
This behaviour occurs extensively in IFC files coming from Revit
2019-11-08 17:24:15 +11:00
Dion Moult c425b44ca9 Store generated GlobalId values for parametric geometry 2019-11-08 16:45:39 +11:00
Dion Moult af16e64fd9 Add UI option to import curves and tolerate invalid IfcSite objects 2019-11-08 16:02:57 +11:00
Dion Moult 60b3daf686 Create legacy features to export materials into broken BIM programs like Revit 2019-11-08 15:10:51 +11:00
Dion Moult 80dccfeb54 Add support for inner curves in mesh extrusions and fix position bug 2019-11-08 12:39:34 +11:00
Thomas Krijnen c89d268986 More elaborate shape fixing on face surface 2019-11-07 14:04:45 +01:00
Dion Moult ee7956d921 Add support for plan representations and all target views 2019-11-07 21:49:14 +11:00
Dion Moult 609ef5f3a7 Add support for exporting survey points geometry 2019-11-07 17:59:37 +11:00
Dion Moult 0477910fc0 Add support for export of imperial units 2019-11-07 16:40:57 +11:00
Dion Moult 85a3a97d13 Fix import of conversion based units 2019-11-07 14:20:54 +11:00
Dion Moult 9eb035e6f5 Fix export bug with uncast attribute data types 2019-11-07 09:11:25 +11:00
Thomas Krijnen 2a407f007c Document fontconfig dependency for occt 7.4 2019-11-06 14:05:05 +01:00
Thomas Krijnen 5992cdfdaf Build script changes for occt 7.4 2019-11-06 12:03:32 +01:00
Dion Moult 0d7d843fc9 Support extruded vector curves and tilts 2019-11-06 17:37:51 +11:00
Dion Moult fae405bfe0 Add support for importing curves, such as for survey point curve sets 2019-11-06 11:10:51 +11:00
Thomas Krijnen c59c74aeed Confitionally select num_bytes, see #699 2019-11-05 17:23:13 +01:00
Thomas Krijnen e36357d381 Log error about missing triangulation 2019-11-05 15:47:02 +01:00
Thomas Krijnen 8d96f40934 Check for inner wires before reinitializing face builder 2019-11-05 15:27:39 +01:00
Thomas Krijnen a1253b004d Fixes for closed/non-periodic nurbs curve edges #586 2019-11-05 15:13:34 +01:00
Thomas Krijnen ee79401a34 Correct attribute_filter notice 2019-11-05 14:43:37 +01:00
Dion Moult 37990310eb Experimental half-broken support for curves added 2019-11-05 21:49:17 +11:00
Dion Moult d806c6ab55 Cull-backfaces and cache geometry creation in IfcDoc 2019-11-02 20:08:34 +11:00
Thomas Krijnen ed013db011 throw exception on invalid nested aggregates 2019-11-01 16:11:46 +01:00
Thomas Krijnen 5fcee9dfe5 spherical toroidal surface 2019-11-01 16:11:26 +01:00
Thomas Krijnen 159ce931b4 Break up sweeps along adjacent non-linear segments. 2019-11-01 15:06:04 +01:00
Dion Moult 2d0d0ed786 New UI to add and remove classifications 2019-11-01 17:44:10 +11:00
Dion Moult 635ad552d3 New UI to create, edit, and save aggregates 2019-11-01 16:32:11 +11:00
Thomas Krijnen d3eab88ab9 Create FUNDING.yml 2019-10-30 08:31:30 +01:00
Dion Moult c3a36b7cdb Support cartesian transformations on mapped representations on import 2019-10-30 13:15:03 +11:00
Thomas Krijnen f231db0aff Remove newlines and other characters from material names 2019-10-29 10:06:02 +01:00
Dion Moult 0a610f88e0 New UI to set features dir and diff JSON file 2019-10-29 18:13:10 +11:00
Dion Moult e2764c9764 Merge branch 'v0.6.0' of github.com:IfcOpenShell/IfcOpenShell into v0.6.0 2019-10-28 21:02:03 +11:00
Dion Moult d6ef64aef4 Proof of concept for IFC construction documentation 2019-10-28 21:01:32 +11:00
Dion Moult cf454c6306 IFC cutting tool now supports multiple files and classes 2019-10-28 20:59:16 +11:00
Dion Moult 18daa6aacd Allow gbXML export of simple objects that don't have vertex groups
Also record space names
2019-10-28 17:53:13 +11:00
Dion Moult 55717756e6 Create IFC Diff tool, showing added, removed, and modified.
It produces a JSON output of exactly what changed. It requires a patched version of the DeepDiff library, which I will provide.
2019-10-25 16:42:49 +11:00
Dion Moult 852df6e2ce Some bugfixes and package IFC COBie for alpha release 2019-10-25 08:22:16 +11:00
Dion Moult bc2bce8fae Add experimental support for openings in gbXML export 2019-10-23 13:29:25 +11:00
Dion Moult e5efa2803a Fix BIMTester file overwrite bug and template re-reading. 2019-10-23 13:28:18 +11:00
Dion Moult d3ccd9ee61 Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.6.0 2019-10-23 11:33:05 +11:00
Dion Moult 593af0509f Optimise import to only create shapes once. Much faster. 2019-10-23 11:32:30 +11:00
Thomas Krijnen 60073da049 Update validate.py 2019-10-22 10:49:07 +02:00
Dion Moult 681a3c3a5c Test new way of getting element position matrix in import 2019-10-22 15:54:38 +11:00
Dion Moult f63c0293bf IFC import now supports IFC attributes 2019-10-21 17:44:06 +11:00
Dion Moult 7e8cda6c12 Add interface to add or remove documents to objects 2019-10-21 15:31:10 +11:00
Dion Moult 1bdb64d9e7 Refactor properties to have prefix to prevent name clashes with other addons 2019-10-21 14:56:40 +11:00
Dion Moult e2ada7ce90 Implement IFC import mesh reuse for mapped representations 2019-10-21 14:33:51 +11:00
Dion Moult 2751b7728f Add new feature to select object by GlobalId 2019-10-19 17:38:25 +11:00
Dion Moult 9ee708fbe6 Create UI to input georeferencing variables 2019-10-19 15:15:42 +11:00
Dion Moult 851acca4b2 Support custom psets 2019-10-19 14:45:07 +11:00
Dion Moult 4cddd95337 Fix bug where blank predefined types could be added by accident 2019-10-19 13:59:05 +11:00
Dion Moult 5a7acda57d Allow to add attributes from a drop down for ease of use 2019-10-19 13:48:07 +11:00
Dion Moult 62f04fc9a6 Move pset definitions into a property group and create a UI for it 2019-10-19 11:36:29 +11:00
Dion Moult 4dbe7d92aa Merge branch 'v0.6.0' of github.com:IfcOpenShell/IfcOpenShell into v0.6.0 2019-10-19 10:47:15 +11:00
Dion Moult c79db0380d Create quick project setup button for convenience 2019-10-19 10:47:00 +11:00
Demetrio92 e6cae6e7b9 minor bugfix
should be OR, not AN;  color is spelled without U everywhere else; exception call itself was breaking
2019-10-17 14:14:15 +02:00
Dion Moult 791be5006b Couple of minor fixes to make importing more robust 2019-10-17 18:47:01 +11:00
Dion Moult 240b642d6d Test light schedule data for gbxml 2019-10-17 18:46:06 +11:00
Dion Moult 574d9a3036 Add attributes interface 2019-10-16 23:17:48 +11:00
Dion Moult 34e5dac549 Merge branch 'v0.6.0' of github.com:IfcOpenShell/IfcOpenShell into v0.6.0 2019-10-16 07:23:39 +11:00
Dion Moult 1fc06da7a2 Create UI to assign and remove Psets 2019-10-16 07:23:03 +11:00
Thomas Krijnen 4000fef4c7 Don't apply too many half space subtraction operands at once 2019-10-15 15:06:51 +02:00
Thomas Krijnen 503029733c Fix face-face distance calc and hardcode tolerance independent of precision. 2019-10-15 14:14:50 +02:00
Thomas Krijnen 734c456fa5 Properly adjust wire intersection tolerance based on vertex clustering 2019-10-15 12:53:44 +02:00
Thomas Krijnen 5b81d7a0c1 Fix previous commit 2019-10-15 10:39:58 +02:00
Thomas Krijnen f9b76ce022 Don't write materials without diffuse color in geom server 2019-10-15 10:38:49 +02:00
Dion Moult fa3431f983 Fix bug with Revit where Revit expects normalised unit vectors.
I think IFC doesn't require it, but fine, we'll play with Revit.
2019-10-15 18:11:06 +11:00
Dion Moult 2d673acb1d Styled items repeat per product, so this should be a list, not a dict 2019-10-15 18:10:32 +11:00
Dion Moult 05c05b5700 Purge old BIMTester files 2019-10-15 16:30:10 +11:00
Dion Moult 58b7c42fc5 Create features template 2019-10-15 11:58:26 +11:00
Dion Moult f78fb0a4f0 Package up BIMTester - basically a super lightweight wrapper around Behave and a JUnit HTML formatter. 2019-10-15 11:19:44 +11:00
Dion Moult 2b34d66ca4 Include Behave configuration 2019-10-14 18:27:17 +11:00
Dion Moult f21fac9edc Change build url 2019-10-13 20:30:01 +11:00
Dion Moult 15a93b1651 Merge branch 'v0.6.0' of github.com:IfcOpenShell/IfcOpenShell into v0.6.0 2019-10-13 20:23:53 +11:00
Dion Moult b7ffd4e350 Fix makefile to build just one plugin, since import and export are merged now 2019-10-13 20:20:48 +11:00
Thomas Krijnen 833d16404f Update attribute filter in accordance with help string 2019-10-13 07:45:19 +02:00
Dion Moult c55dbfc7fa Implement UI to toggle wireframe / swept solid, and assign profiles and extrusions
Also allow file browser to select a location for an external material
2019-10-13 15:36:49 +11:00
Dion Moult 4476cce08c Create interface panel to select external materials 2019-10-13 11:14:49 +11:00
Dion Moult 3db6f42f04 Add latest features into readme 2019-10-13 09:46:12 +11:00
Dion Moult 4732dae384 Allow to define surface styles via object, rather than by material 2019-10-12 22:20:09 +11:00
Dion Moult a9397e23ba Refactor material creation to follow IFC data, not rely on ifcopenshell geom, since we want to retain a bunch of smart IFC data later 2019-10-12 20:09:41 +11:00
Dion Moult c5645a1084 Prevent infinite loops on broken spatial trees 2019-10-12 18:54:12 +11:00
Dion Moult 556766bf2b Spatial elements should check both class and name to prevent issue where two elements have the same name 2019-10-12 18:53:40 +11:00
Dion Moult 33bea4bf6c Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.6.0 2019-10-11 17:24:53 +11:00
Dion Moult bf31ced530 Create JUnit to HTML converter 2019-10-11 17:23:54 +11:00
Dion Moult 642fd08d1f Define a few more steps 2019-10-11 17:23:20 +11:00
Dion Moult 9d0bbf52a2 Don't include IfcSpace since there can be _lots_ in a large file, and ifc spaces actually have geometry 2019-10-10 21:13:00 +11:00
Dion Moult 9056fd7fd1 Remove some abstract entities 2019-10-10 21:12:40 +11:00
Dion Moult 7513906aaa Implement basic Gherkin-based QA system 2019-10-10 18:29:22 +11:00
Dion Moult 7b15edb44c Implement CSV and XLS writer with logging features for COBie 2019-10-09 14:44:10 +11:00
Dion Moult e25bdd009b Remove unnecessary files 2019-10-09 10:45:30 +11:00
Dion Moult 72f09e6a22 Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.6.0 2019-10-09 10:13:37 +11:00
Dion Moult 7b8a4501e6 Bug #663 - Implement support for COBie issues spreadsheet 2019-10-09 10:12:38 +11:00
Dion Moult ba443232b3 Bug #663 - Implement support for COBie coordinates spreadsheet 2019-10-09 10:01:41 +11:00
Dion Moult 71153abaf6 Bug #663 - Implement support for COBie attributes spreadsheet 2019-10-09 09:43:22 +11:00
Dion Moult d9ebd2d08e Merge experimental new importer plugin into export plugin 2019-10-08 23:05:27 +11:00
Dion Moult 792c9b65b1 Build "select by class / type" feature in the UI panel 2019-10-08 22:09:39 +11:00
Dion Moult 202a4c0a08 Bug #663 - Implement support for COBie documents spreadsheet 2019-10-08 18:35:56 +11:00
Dion Moult 8cb8e22cdc Bug #663 - Implement support for COBie impacts spreadsheet 2019-10-08 18:16:32 +11:00
Dion Moult 38972d7ee4 Bug #663 - Implement support for COBie jobs spreadsheet 2019-10-08 17:33:14 +11:00
Dion Moult 959609db99 Bug #663 - Implement support for COBie resources spreadsheet 2019-10-08 16:56:37 +11:00
Dion Moult e3d24856b9 Bug #663 - Implement support for COBie spares spreadsheet 2019-10-08 16:51:56 +11:00
Dion Moult 6513cb6a88 Bug #663 - Implement support for COBie connections spreadsheet 2019-10-08 16:14:00 +11:00
Dion Moult 77578b0ade Bug #663 - Implement support for COBie assemblies spreadsheet 2019-10-08 15:45:23 +11:00
Dion Moult 32f51086ca Bug #663 - Implement support for COBie systems spreadsheet 2019-10-08 14:52:30 +11:00
Dion Moult f426f2c0af Bug #663 - Implement support for COBie components spreadsheet 2019-10-08 14:32:10 +11:00
Dion Moult a6916e1f59 Bug #663 - Implement support for COBie types spreadsheet 2019-10-08 13:45:48 +11:00
Dion Moult 8f757810e7 Bug #663 - Implement support for COBie zones spreadsheet 2019-10-08 12:22:05 +11:00
Dion Moult 2b786ef945 Bug #663 - Implement suport for COBie spaces spreadsheet 2019-10-08 11:47:49 +11:00
Dion Moult dc7fb6eb98 Bug #663 - Implement support for COBie floors spreadsheet 2019-10-08 10:54:32 +11:00
Dion Moult 3ff9af1421 Bug #663 - Implement support for COBie facilities spreadsheet extraction 2019-10-08 10:18:39 +11:00
Dion Moult fc44b4e0d4 Allow user option to export without representations 2019-10-07 22:23:31 +11:00
Dion Moult 0ebb33da18 Improve error messaging for incorrect psets 2019-10-07 22:14:52 +11:00
Dion Moult eceba6932c Fix date in dist filename 2019-10-07 21:20:39 +11:00
Dion Moult 1f6f7f570e Refactor operators into their own file and provide logging capabilities 2019-10-07 21:11:11 +11:00
Dion Moult 23d65da0e2 Add makefile 2019-10-06 19:59:41 +11:00
Dion Moult 824b30b3da Bundle and implement basic UI with addon 2019-10-05 21:15:53 +10:00
Dion Moult 90fee4ef7f Throw in bootstrap file for when you don't want to reload blender to test the plugin 2019-10-04 17:28:57 +10:00
Dion Moult adeb3dea61 Include utility to merge materials by diffuse colour to clean up bad IFC files 2019-10-04 17:26:15 +10:00
Dion Moult 75f254d162 Extract definitions and descriptions for use in plugin 2019-10-04 17:24:49 +10:00
Dion Moult 00aad53181 Bug #663 - Implement experimental support for cobie IFC->CSV conversion for contact information 2019-10-04 17:22:03 +10:00
Dion Moult bf7005acfc Add experimental support for gbxml - make importer import spaces, as it is very important for energy modeling 2019-10-04 17:20:19 +10:00
Dion Moult e37c882fe2 Experimental code for a user interface 2019-10-03 22:11:05 +10:00
Dion Moult 624888adab Half-implement experimental support for space boundary relationships 2019-10-03 17:56:45 +10:00
Dion Moult 144df86380 Throw in experimental import and bulk rename script 2019-10-01 18:37:33 +10:00
Dion Moult 50c51530e7 Add pset examples 2019-10-01 18:03:16 +10:00
Dion Moult 7312b8cbe7 Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.6.0 2019-10-01 18:01:55 +10:00
Dion Moult 4e878f5848 Move pset into pset dir 2019-10-01 18:00:54 +10:00
Thomas Krijnen d99b5fb2f9 Merge branch 'master' into v0.6.0 2019-09-30 09:11:04 +02:00
Dion Moult 51e0097db1 Add prepackaged installation instructions. 2019-09-30 10:10:50 +10:00
Dion Moult 1cac87fa50 Bump readme with new features 2019-09-30 08:07:56 +10:00
Dion Moult e688f781f5 Parenting is reserved for type assignment, whereas a named child of constraint now specifys a nesting relationship
This allows you to have a defined by type and a rel nests at the same time. Using parenting for types is the more common operation, whereas nesting is a less frequent operation.
2019-09-29 22:41:26 +10:00
Dion Moult 2f2c40406f Implement support for window attributes 2019-09-29 22:29:06 +10:00
Dion Moult a406f3d78a Implement support for door attributes 2019-09-29 22:12:51 +10:00
Dion Moult 22d35cf89a Fix placement rel to for nested elements for a start. 2019-09-28 23:43:50 +10:00
Dion Moult 8e2723951d Fix #670 - fix compilation with OCE and C++11 range based for loop 2019-09-28 23:14:08 +10:00
Dion Moult 4d4c111d5f Implement nested relationships between elements 2019-09-28 14:08:09 +10:00
Dion Moult 0c294a58bf Implement support for material constituent sets 2019-09-28 12:41:51 +10:00
Dion Moult 81864def9e Implement support for material layer sets 2019-09-28 10:54:10 +10:00
Thomas Krijnen 6771c91224 Remove duplicate swig dependency statement 2019-09-27 15:45:48 +02:00
Thomas Krijnen 596e13b24c Add null check on trimmed curve 2019-09-27 15:12:35 +02:00
Dion Moult a07c2cb1f8 Minor fix to packaging 2019-09-27 08:43:49 +10:00
Thomas Krijnen ae6dfce7e3 Add an excemption for the requirement of boolean op result to be manifold 2019-09-26 15:14:23 +02:00
Dion Moult 1f371f3319 Create Blender export plugin 2019-09-26 21:55:30 +10:00
Dion Moult a41e7fc298 Add SVG sectioning utility 2019-09-26 07:37:08 +10:00
Dion Moult 739c5fb326 Roundtrip export of swept solid for basic extrusions for programs like Revit 2019-09-20 09:15:32 +10:00
Dion Moult 8b40b9944f Provide support for center of gravity representations 2019-09-18 11:30:07 +10:00
Dion Moult 19d587d17c Allow generated mesh representations such as bounding box 2019-09-17 12:56:43 +10:00
Dion Moult 45678c8536 Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.6.0 2019-09-17 11:21:05 +10:00
Dion Moult c21c9c24f8 Handle materials which don't have nodes 2019-09-17 11:20:22 +10:00
Dion Moult 32588c63eb Bump readme with new features 2019-09-16 19:36:44 +10:00
Dion Moult 611f0e7248 Minor fixes to representation detection 2019-09-16 17:25:00 +10:00
Dion Moult 2d408eb985 Add support for footprint and reference subcontexts 2019-09-16 16:53:34 +10:00
Dion Moult ac166691c4 Allow support for clearance geometry 2019-09-16 16:47:48 +10:00
Dion Moult 7516177304 Add support for multiple representations such as body and axis 2019-09-16 16:28:26 +10:00
Birger Brekke f8d713a412 fixup! Use model-offset in IfcGeom::Kernel and add model-rotation 2019-09-16 07:54:10 +02:00
Dion Moult 6d36ee3f53 Relate documents and classifications to project itself 2019-09-16 13:16:58 +10:00
Birger Brekke e6606e363a Use model-offset in IfcGeom::Kernel and add model-rotation
Applying model-offset in IfcGeom::Kernel makes it work
independently of the serializer.

`model-rotation` was also added to support rotation in the same
manner as `model-offset` supports offset.
2019-09-13 16:09:11 +02:00
Dion Moult dee8af6ec9 Implement associations to qualitative objective constraints 2019-09-11 16:50:27 +10:00
Dion Moult 00af240915 Implement rel associate classifications for objects and types 2019-09-11 14:47:53 +10:00
Dion Moult 730057ed4d Allow objects and types to be associated with external documents 2019-09-11 12:44:36 +10:00
Dion Moult 675ba205ef Bump readme with new features 2019-09-11 09:23:02 +10:00
Dion Moult 9ab13a3e0c Maintain GlobalIds for type products 2019-09-10 20:11:58 +10:00
Dion Moult 9b7ea1e83c Allow for psets to be assigned to types, and pset overrides 2019-09-10 20:11:37 +10:00
Dion Moult 2c84a07bdc Don't hardcode unit definitions 2019-09-10 17:08:45 +10:00
Dion Moult dd1ddfcd8e Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.6.0 2019-09-10 05:26:43 +01:00
Dion Moult cd21611646 Define diffuse colour, and give possibility for externally defined material URI 2019-09-10 14:18:50 +10:00
Dion Moult 360767a6eb Bump feature list 2019-09-09 22:00:12 +10:00
Dion Moult 2bf89f11c8 Minor code cleanup 2019-09-09 15:11:32 +10:00
Dion Moult 018123aa21 Export basic material information 2019-09-09 15:11:07 +10:00
Dion Moult 0bf149c894 Fix minor bug where libraries don't exist 2019-09-09 12:48:42 +10:00
Dion Moult b0797db321 Maintain GlobalIds for projects and spatial structures 2019-09-08 20:51:59 +10:00
Dion Moult 58e870d185 Relate objects to psets 2019-09-08 19:02:00 +10:00
Dion Moult 70ec98a9e0 Add ability to detect data types from property set templates so that psets are easier to insert 2019-09-08 18:30:16 +10:00
Dion Moult 22bb5cc276 Relate types to their respective project library 2019-09-08 14:55:23 +10:00
Dion Moult cecb623e76 Prevent unnecessary duplicate creation of the same representation 2019-09-08 11:24:41 +10:00
Dion Moult 04aa0ad04d Support IfcProjectLibrary as related to IfcProject 2019-09-08 11:07:40 +10:00
Dion Moult 58be8e95b0 Bump readme with new features 2019-09-07 22:32:41 +10:00
Dion Moult 5f8a792cf4 Allow the creation and storage of map conversions and CRSes 2019-09-07 22:27:52 +10:00
Dion Moult 5dbbe174de Allow wireframe geometry exports 2019-09-07 08:05:42 +10:00
Dion Moult 9908e5cf05 Clean up trailing whitespace 2019-09-07 08:04:49 +10:00
Dion Moult 3d11a98eef Fix #665 - Display curves too, not just solid elements 2019-09-07 07:40:16 +10:00
Dion Moult 5ce8917c82 Allow type definitions which have no representation, to be used as simply ways to inherit properties 2019-09-05 21:38:52 +10:00
Dion Moult 9c11e6bd09 Update readme with new features 2019-09-05 18:50:32 +10:00
Dion Moult dd3df2258d Allow settings to toggle export of representations and quantities 2019-09-05 17:18:13 +10:00
Dion Moult 826280f35c Add support for multiple collection instances 2019-09-05 12:04:34 +10:00
Dion Moult 5536bd5d59 Minor fix where qto calculator wasn't passed in, whoops 2019-09-05 12:03:07 +10:00
Krzysztof Trzciński 90bf32c342 Fix reusing meshes and mesh naming 2019-09-05 07:14:08 +10:00
Dion Moult d917e738db Merge pull request #662 from elmopl/blender_ifc_280rc1
Fix reusing meshes and mesh naming
2019-09-05 07:13:16 +10:00
Krzysztof Trzciński 42307972a8 Fix reusing meshes and mesh naming 2019-09-04 21:02:47 +01:00
Dion Moult bd9aa18053 Record and remember globalids between exports 2019-09-04 17:46:58 +10:00
Dion Moult 3074242aa0 Add basic support for some forms of quantity take-off 2019-09-04 16:53:10 +10:00
Dion Moult 684e687b6a Simplify unnecessary code to get representations 2019-09-04 11:58:18 +10:00
Krzysztof Trzciński 1dff84ace3 Fix clash of mesh names (fixes #661) 2019-09-04 09:01:09 +10:00
Krzysztof Trzciński 99d8e96a35 Add support for collections 2019-09-04 09:01:00 +10:00
Krzysztof Trzciński c3a3cbee3f Fix filename -> ifcopenshell.file 2019-09-04 09:00:41 +10:00
Krzysztof Trzciński 748f826418 Introduce defaultdict instead of checks 2019-09-04 08:58:48 +10:00
Dion Moult 032a4743ac Merge pull request #641 from elmopl/blender_ifc_280rc1
Blender ifc 2.80rc1 collections enhancement
2019-09-04 08:55:46 +10:00
Krzysztof Trzciński 7c99294ba8 Fix clash of mesh names (fixes #661) 2019-09-03 17:57:39 +01:00
Dion Moult 1665d8e0f6 Merge remote-tracking branch 'blender-bim-ifc/master' into v0.6.0 2019-09-03 21:06:15 +10:00
Dion Moult 6e9f24af66 Move to subdir 2019-09-03 21:02:57 +10:00
Dion Moult 359b55aeab Add feature about IfcRelAggregates to readme 2019-09-03 20:55:10 +10:00
Dion Moult b1dda0a679 Support element decomposition through IfcRelAggregates 2019-09-03 20:52:22 +10:00
Dion Moult a7286e5527 Add a timer for export times 2019-09-03 20:51:58 +10:00
Dion Moult c055a8e9e8 Allow objects to be an arbitrary collection as long as some parent is part of the spatial tree 2019-09-03 20:51:39 +10:00
Dion Moult 8c0a24c463 Add screenshots 2019-09-02 21:38:14 +10:00
Dion Moult 164c249a48 Add instruction about adding to path 2019-09-02 21:28:53 +10:00
Dion Moult adb3a08638 Bump readme with demo blend file 2019-09-02 21:27:24 +10:00
Dion Moult cba28fbb72 Minor fix to template so that it isn't syntatically incorrect, at least.
We'll fix the hardcoded variables later.
2019-09-02 21:18:22 +10:00
Dion Moult 4de35bc252 Fix missing data for type products 2019-09-02 21:16:21 +10:00
Dion Moult 27407b8642 Parse array modifiers and create instances. Take into account local vs global rotation. 2019-09-02 19:43:55 +10:00
Dion Moult 3490b1b388 Report exceptions about spatial structure 2019-09-02 19:43:11 +10:00
Dion Moult 46c5cd4ee2 Describe newly coded features in readme 2019-09-01 22:17:49 +10:00
Dion Moult 73b387011d Add example pset 2019-09-01 22:03:40 +10:00
Dion Moult 931b00d651 Add types schema 2019-09-01 22:03:33 +10:00
Dion Moult c461a483b3 Now allow the creation of psets in a crude form 2019-09-01 22:03:02 +10:00
Dion Moult 36a74a212c Only parse selected types, not all types in the type collection 2019-09-01 19:30:58 +10:00
Dion Moult 291a54d07e Support IfcRelDefinesByType 2019-09-01 18:40:20 +10:00
Dion Moult 6a5bedc02e Support exporting product types 2019-09-01 17:23:48 +10:00
Dion Moult e11d4e4e4c Support custom attributes for products 2019-09-01 13:22:26 +10:00
Dion Moult fdb6af4ce3 Clean up files I should've put in gitignore 2019-09-01 11:46:11 +10:00
Dion Moult 1c28055afe Support object instancing, so product representations are reused if the mesh data is the same 2019-09-01 11:45:32 +10:00
Dion Moult 72fa983e81 Allow export of any product class 2019-09-01 11:21:24 +10:00
Dion Moult bb29a493c7 Don't hardcode spatial structure elements. Make a sensible assumption instead that all collections are either contexts or spatial structures. 2019-09-01 10:33:06 +10:00
Dion Moult 1c647c5365 Print errors in case the name cannot be detected 2019-09-01 10:32:22 +10:00
Dion Moult 6b53ebdc5e Hardcode context names, since there are unlikely to be many 2019-09-01 10:27:05 +10:00
Dion Moult c2cb11c594 Remove useless function 2019-09-01 10:26:54 +10:00
Dion Moult 153d6fe337 Use an IFC4 template. Don't let 2X3 hold us back! 2019-09-01 10:26:33 +10:00
Dion Moult 11e187fc76 We don't need this ifc_schema class, it seems 2019-09-01 10:14:31 +10:00
Dion Moult fa38317438 Whitespace cleanup 2019-09-01 09:45:57 +10:00
Dion Moult 7c2d640106 Refactor representation creation into its own function 2019-09-01 09:44:06 +10:00
Dion Moult 64b23393a0 Remove unnecessary comment 2019-09-01 09:43:36 +10:00
Dion Moult ae9fce8c45 Support dynamic contexts and trees of spatial structures 2019-08-31 23:51:53 +10:00
Dion Moult bd35a9924e Refactor into a class. It's gonna get big! 2019-08-31 17:37:53 +10:00
Dion Moult 2f4e82e0b9 Rename to sensible name 2019-08-31 17:16:16 +10:00
Dion Moult e9649a5217 Basic geometry export 2019-08-29 23:11:12 +10:00
gpioto 98f4c8518e Casting default timestamp template to integer
The documentation of IFC indicates that the timestamp must be of type Integer. (https://standards.buildingsmart.org/IFC/DEV/IFC4_2/FINAL/HTML/link/ifctimestamp.htm)
If not, it cause some problems importing the generated IFC file in some platforms
2019-08-28 09:01:13 +02:00
Thomas Krijnen 75b24c2352 Put maximum length on layerset wall end point intersection 2019-08-21 11:59:30 +02:00
Thomas Krijnen 16ce1f0823 Make sure layerset fold is parallel to other wall axis curve 2019-08-16 10:42:48 +02:00
Thomas Krijnen af1853de04 Iterative epsilon in faceset helper 2019-08-09 17:48:56 +02:00
Thomas Krijnen b3711ad8cb thread_local define for clang 2019-08-09 10:05:49 +02:00
Thomas Krijnen 188b20533b Only pull when on a branch 2019-08-03 14:48:01 +02:00
Thomas Krijnen f32e034963 Merge pull request #639 from aothms/multithreaded
Multithreaded
2019-08-02 15:37:00 +02:00
Thomas Krijnen fd3469029f -pthread on unix 2019-08-02 14:55:55 +02:00
Thomas Krijnen 88a5dc3053 fix po::value 2019-08-02 13:27:33 +02:00
Thomas Krijnen 6e4a692de3 Threads in python app 2019-07-19 15:55:22 +02:00
Krzysztof Trzciński e450101a12 Add support for collections 2019-07-16 19:31:16 +01:00
Krzysztof Trzciński 3f3b548d74 Fix filename -> ifcopenshell.file 2019-07-16 18:33:54 +01:00
Krzysztof Trzciński 6284b3960d Introduce defaultdict instead of checks 2019-07-16 18:30:03 +01:00
Thomas Krijnen a6835360e4 Guarantee get_decomposing(IfcProject*) == nullptr 2019-07-12 10:43:35 +02:00
Thomas Krijnen 4ec9ab52f1 Remove IfcFileWithSchema 2019-07-10 16:34:57 +02:00
Thomas Krijnen 7ee6cdeeab Add missing header 2019-07-10 16:17:11 +02:00
Thomas Krijnen c9530999f7 Update CMakeLists.txt 2019-07-10 15:44:38 +02:00
Thomas Krijnen 2154e24af1 GLTF_SUPPORT depends on BUILD_CONVERT 2019-07-10 14:35:56 +02:00
Thomas Krijnen 1cd2287d86 Cleanup concurrently created breps and triangulations 2019-07-09 16:34:35 +02:00
Thomas Krijnen 40937b3c72 Write progress for threaded conversion 2019-07-09 16:12:12 +02:00
Thomas Krijnen 3bcced7baa Some fixes to threading work 2019-07-09 16:00:29 +02:00
Thomas Krijnen 3ebca0516e Implement multi_threaded implementation in Iterator 2019-07-03 12:10:27 +02:00
Thomas Krijnen ae2feb2848 Merge remote-tracking branch 'origin/pr/638' into multithreaded 2019-07-02 15:21:46 +02:00
Thomas Krijnen 2a447039d0 Merge remote-tracking branch 'sander/multithreaded' into multithreaded 2019-07-02 15:21:24 +02:00
You Yue 0dec407dbe Last commit for multithreading, Airsquire implementation 2019-07-02 12:30:40 +02:00
You Yue a286598e55 Sander boer's change for multithreading
1. Added multithread for create element
2. Added support function in IfcConvert.cpp for multithreading at bottom
2019-07-02 12:10:08 +02:00
Thomas Krijnen 869cc25061 rollback prcre version due to https://github.com/KhronosGroup/OpenCOLLADA/issues/570 2019-07-01 11:15:12 +02:00
Thomas Krijnen b4ce5be86d Fix error after merge 2019-06-30 15:46:36 +02:00
Thomas Krijnen 1341be223b Merge branch 'master' into v0.6.0 2019-06-30 10:52:21 +02:00
Thomas Krijnen 1103f545a2 Double braces for older version of g++ 2019-06-30 10:51:45 +02:00
Thomas Krijnen 51cf52c388 Build script: Don't use wget or curl, just urlretrieve 2019-06-30 09:44:40 +02:00
Thomas Krijnen c29cc87660 Revert cmake version due to build errors, more careful json install 2019-06-28 08:38:24 +02:00
Thomas Krijnen 839b5a2699 Minor cleanups, 4x1 and 4x2 geom lib, granular schema macros 2019-06-26 13:50:46 +02:00
Thomas Krijnen 73f7c34c8d Update build-all.py 2019-06-26 12:44:56 +02:00
Andrej Tibaut 636b2aafdf 1) Added support for IFC4x1 (see issue https://github.com/IfcOpenShell/IfcOpenShell/issues/504#issuecomment-505051675).
2) New build parameters (flags) introduced for use of IFC4x1 and IFC4x2: USE_IFC4X2 (for use of IfcBridge), USE_IFC4X1 (for use of IfcAlignment)

This explains new parameters (flags):
#ifdef USE_IFC4X2
#include "../ifcparse/Ifc4x2enum.h"
#elif USE_IFC4X1
#include "../ifcparse/Ifc4x1enum.h"
#elif USE_IFC4
#include "../ifcparse/Ifc4enum.h"
#else
#include "../ifcparse/Ifc2x3enum.h"
#endif

3) Added comment block  "This file is part of IfcOpenShell. ..." at the beggining of the Ifc4x2* files.
2019-06-26 12:44:26 +02:00
Andrej Tibaut cee2c4e748 Reverted from SWIG_VERSION=4.0.0 back to SWIG_VERSION=3.0.12 because of https://github.com/IfcOpenShell/IfcOpenShell/issues/582#issuecomment-497789849 as recommended by @aothms. 2019-06-26 12:44:26 +02:00
Andrej Tibaut e7a08a3de6 #634 solved:
- new method to_pystring(...) added to solve the TypeError: Can't mix strings and bytes in path components:
- import "urlib" changed to "urlib.urlretrieve"
- JSON version extracted to a constant
2019-06-26 12:44:26 +02:00
Andrej Tibaut 827c6ac6b4 Motivated by issue #608 to improve the method def git_clone(...) to the def git_clone_or_pull_repository(...).
Also, dependencies versions were updated.
2019-06-26 12:44:26 +02:00
Andrej Tibaut d371f1a6be UnicodeDecodeError problem solved (#630)
* UnicodeDecodeError problem solved

UnicodeDecodeError problem described in #626 solved.

* UnicodeDecodeError solved (2)

UnicodeDecodeError problem described in #626 changed (fname replaced with fn) and solved.
2019-06-21 11:43:53 +02:00
Otso Alho a851a25ddc catch Standard_ConstructionError when serialising xml attributes 2019-06-21 11:21:33 +02:00
Thomas Krijnen 35160e5a94 Update some code comments 2019-06-19 12:41:54 +02:00
Mathias Artus a9a6cfabca Added support for Ifc 4x2 2019-06-19 11:31:11 +02:00
Thomas Krijnen ecb0fee0cd Fix latebound enumeration writing in IfcConvert 2019-06-18 14:28:57 +02:00
Thomas Krijnen 12e9f7b941 Merge branch 'master' into v0.6.0 2019-06-15 15:24:53 +02:00
ninichki 443b8c2079 Boolean Operands like ST_SHAPELIST should not append all shapes 2019-06-14 17:33:30 +02:00
Thomas Krijnen 826316cb2b Remove duplicate faces in faceset_helper. Fixes #600 2019-06-14 11:32:59 +02:00
Thomas Krijnen 491dc57098 Update README.md 2019-06-14 10:00:42 +02:00
Otso Alho 19ed074b4a inverse thicknesses 2019-06-07 11:17:51 +02:00
Otso Alho 2cfe74ce09 reverse styles also when reversing surfaces 2019-06-07 11:17:51 +02:00
Thomas Krijnen b0b844ea5a Provide node names in gltf serializer 2019-06-07 10:38:52 +02:00
Thomas Krijnen 2d0812d46e Update test file submodule 2019-06-05 16:59:04 +02:00
Thomas Krijnen f5b7d0db59 Remove additional fuzz markup on halfspace operands and initially process with smaller fuzz. Fixes #601 2019-06-05 16:58:08 +02:00
Thomas Krijnen 68068cb816 Fix merge error: bring back assignment to Logger::max_severity 2019-06-04 17:24:59 +02:00
Thomas Krijnen 40d2c237fc Merge master 2019-06-04 17:07:35 +02:00
Thomas Krijnen 7e089ab8b5 Fix cleanup of temp files in case of failed initialization 2019-06-04 17:06:13 +02:00
Thomas Krijnen 8ee86f9968 Clean up glb tempfiles in case of error 2019-06-04 17:03:58 +02:00
Thomas Krijnen 2590bd01d5 Fix gltf max accessor meta-data 2019-06-04 16:55:19 +02:00
Thomas Krijnen ef9b9e743f Typo 2019-06-04 16:34:57 +02:00
Thomas Krijnen 532f129458 Tolerance tweaks on unification prior to boolean ops 2019-06-04 14:24:19 +02:00
Thomas Krijnen d535cf0222 Merge master 2019-05-31 14:33:40 +02:00
Thomas Krijnen 77e02ddae4 Remove all references to _newclass from wrapper code 2019-05-31 14:31:31 +02:00
Thomas Krijnen 98bf6c2d95 Merge branch 'master' into v0.6.0
# Conflicts:
#	src/ifcconvert/IfcConvert.cpp
2019-05-28 12:50:38 +02:00
Thomas Krijnen b27482db46 Correct change_extension after unicode changes 2019-05-28 12:48:40 +02:00
Thomas Krijnen 3d2e99b5fa Correct change_extension after unicode changes 2019-05-28 12:44:58 +02:00
Thomas Krijnen 8b382df7cc CMake IFCOPENSHELL_LIBRARIES depending on configuration options 2019-05-28 12:04:13 +02:00
Thomas Krijnen 1a57162873 Do unify boolean operands, especially after new triangulation logic. 2019-05-24 17:16:31 +02:00
Thomas Krijnen 69f25a563c Merge branch 'master' into v0.6.0 2019-05-24 15:39:52 +02:00
Thomas Krijnen 9a85fbc225 Fix static/const declaration 2019-05-24 15:38:35 +02:00
Thomas Krijnen dd71abc672 Fix enum name in geom wrapper 2019-05-24 15:11:09 +02:00
Thomas Krijnen aa493f5987 Merge branch 'master' into v0.6.0 2019-05-24 14:53:50 +02:00
Thomas Krijnen 784c1724d5 Check shell validity in accordance with https://github.com/IfcOpenShell/IfcOpenShell/commit/342cce89d70a5ded5fb1bf52d87383bfce5021ca#commitcomment-31511282 2019-05-24 14:49:14 +02:00
Thomas Krijnen 901e805d24 Revert 13d2cf3357 2019-05-24 14:29:21 +02:00
Thomas Krijnen 41972bba7d Merge branch 'master' into v0.6.0 2019-05-24 12:10:00 +02:00
Thomas Krijnen 17077c74a9 Unify transitionmode for swept disk and swept area 2019-05-24 12:09:33 +02:00
Thomas Krijnen 825a493d7a Add an additional reuse_ok check to the products associated to the *mapped* representation 2019-05-24 12:08:39 +02:00
Thomas Krijnen 6f5e4ec655 Fix iterator constructor in ifcblender 2019-05-24 10:38:31 +02:00
Thomas Krijnen de3f8cdaf4 Merge branch 'master' into v0.6.0 2019-05-24 10:36:43 +02:00
Thomas Krijnen 241c95e6df Some fixes for Blender 2.8? 2019-05-24 10:34:54 +02:00
Thomas Krijnen 8015ea217e codecvt fallback for g++4.8 2019-05-22 22:13:12 +02:00
Thomas Krijnen 285d40d586 add to_string() method in ifcopenshell.file 2019-05-22 16:18:48 +02:00
Thomas Krijnen 80e166302a Fix SVG exporer in 0.6 branch 2019-05-22 14:44:06 +02:00
Thomas Krijnen bcf8cadc30 Correct Y-UP transform in gltf serializer 2019-05-21 18:02:10 +02:00
Thomas Krijnen 26621cbcd5 Update version string to 0.6.0b0 2019-05-21 13:33:59 +02:00
Thomas Krijnen 703c69fdde Update nix build script to default GLTF_SUPPORT to ON 2019-05-21 13:31:43 +02:00
Thomas Krijnen 21981403c7 Merge branch 'master' into v0.6.0
# Conflicts:
#	nix/build-all.py
2019-05-21 13:30:58 +02:00
Daniel Smith c61bc29f06 Relocate random header include 2019-05-21 13:12:27 +02:00
Thomas Krijnen 90ac50f210 Document libffi dependency in nix build script for installing py37 2019-05-21 12:53:54 +02:00
Thomas Krijnen 4e21298009 Merge branch 'master' into v0.6.0 2019-05-19 13:25:14 +02:00
Thomas Krijnen a5cc0f1cef Add python version 3.7.3 2019-05-19 13:22:24 +02:00
Thomas Krijnen d106f178d5 Merge branch 'master' into v0.6.0 2019-05-18 11:07:13 +02:00
Thomas Krijnen a98ab72f67 Update version number 2019-05-18 11:06:27 +02:00
Thomas Krijnen 62e4bf8fb3 Update to OCCT 7.3.0p3 2019-05-18 11:05:12 +02:00
Thomas Krijnen e532a2ead2 Merge branch 'master' into v0.6.0 2019-05-18 11:01:45 +02:00
Thomas Krijnen fd9ba0d243 char wchar_t compatibility 2019-05-18 11:01:17 +02:00
Thomas Krijnen 9a9422bea6 Use ASCII temp name for DAE on nix as well 2019-05-18 10:53:45 +02:00
Thomas Krijnen f10b4bdecc Use ASCII temp name for DAE on nix as well 2019-05-17 16:52:15 +02:00
Thomas Krijnen fd6de77577 Smaller markup on fuzziness for boolean result interference checks 2019-05-17 14:25:28 +02:00
Thomas Krijnen 1d5e560e66 Large refactoring of convert(IfcFace*) to support triangulation of non-planar faces with inner boundaries 2019-05-17 12:31:23 +02:00
Thomas Krijnen fa8ff0d878 Travis: reverse grep command order 2019-05-15 19:43:36 +02:00
Thomas Krijnen 7296bd1382 Try to fix python encoding test error 2019-05-15 17:38:46 +02:00
Thomas Krijnen d60b9df40c Add back ICU as a libxml2 dependency on Travis 2019-05-15 17:20:23 +02:00
Thomas Krijnen 373934f993 Update submodule 2019-05-10 12:09:46 +02:00
Thomas Krijnen a8f6444cad Option to build -static on *nix 2019-05-10 12:04:32 +02:00
Thomas Krijnen 0b2bd5d0e8 Eliminate ICU dependency 2019-05-10 11:59:00 +02:00
Thomas Krijnen c15120e0ae Process string encoding test on travis 2019-05-10 11:56:40 +02:00
Thomas Krijnen 96cb6a73a2 Update .travis.yml 2019-05-08 14:27:00 +02:00
Thomas Krijnen 92b7ca15cf Update .travis.yml 2019-05-08 14:12:40 +02:00
Thomas Krijnen db65678f5e Setup glTF-Validator 2019-05-08 14:06:29 +02:00
Thomas Krijnen f3a7a6594a Small gcc fixes 2019-05-08 13:46:21 +02:00
Thomas Krijnen a786c9a9ee Validate glTF glb 2019-05-08 13:31:51 +02:00
Thomas Krijnen ab1d34fe1d Update CMakeLists.txt 2019-05-08 13:16:50 +02:00
Thomas Krijnen ff542d7381 Update .travis.yml 2019-05-08 13:16:29 +02:00
Thomas Krijnen 3023e084a6 Initial implementation of a direct binary glTF serializer 2019-05-07 17:06:45 +02:00
Sander Boer 0b02f7fb2b .clang-format settings indent=2 for me, temporarily. style=allman width=80 2019-05-03 17:30:48 +02:00
Sander Boer 66508876a5 builds nicely, but chokes immediately on serializer- first element, needs debugging 2019-05-03 17:28:08 +02:00
Sander Boer 8ea77bdeca Linearizing the use of IfcGeomIterator by integrating it into IfcConvert in full, atm it does not build. 2019-05-01 18:34:01 +02:00
Sander Boer 6468329f01 merge with ifcopenshell 2019-04-30 14:26:27 +02:00
Thomas Krijnen 0fd3c69579 FindFromKey() backwards compat 2019-04-30 11:54:56 +02:00
Sander Boer 513d5d0666 Merge branch 'master' of https://github.com/IfcOpenShell/IfcOpenShell 2019-04-26 11:22:36 +02:00
Thomas Krijnen 4792fd9efe Don't do brute-force edge sewing in case of non-manifold faceset from wire intersections or triangulations 2019-04-24 17:15:18 +02:00
Thomas Krijnen 587edca99f Don't log empty error messages from boolean op 2019-04-24 17:01:02 +02:00
Thomas Krijnen 71118fb126 Retain topology information when triangulating face boundaries. #574 2019-04-24 16:32:06 +02:00
Thomas Krijnen 80bdb36ccc Reduce face triangulation message severity to warning 2019-04-09 17:09:27 +02:00
Thomas Krijnen 013b7a763d Some fixes to make sure that non-planar faces get explicitly triangulated 2019-04-09 17:03:24 +02:00
Thomas Krijnen f0fa9ca736 Install python module files using glob 2019-04-05 11:18:22 +02:00
Thomas Krijnen 8a197a6305 Work on 3ds max plug-in 2019-04-03 15:08:14 +02:00
Thomas Krijnen 91d10a1465 Provide basic validation utility in Python 2019-04-03 14:41:25 +02:00
Thomas Krijnen 1314209a89 Map empty aggregate to empty tuple in python 2019-04-03 14:40:09 +02:00
Thomas Krijnen 45c3c27fb5 Fixes for mapping declaration subtypes to SWIG 2019-04-03 13:55:29 +02:00
Thomas Krijnen 6e42f82e1a Merge branch 'master' into v0.6.0 2019-03-29 09:32:22 +01:00
Thomas Krijnen 0ae1c90797 --ignore-whitespace in patch Fixes #565 2019-03-29 09:31:39 +01:00
Thomas Krijnen 94bf798168 Merge branch 'master' into v0.6.0 2019-03-24 14:26:14 +01:00
Thomas Krijnen 8c1924084a Don't consider openings as children in geom filters 2019-03-24 12:36:33 +01:00
Thomas Krijnen 2bf3648966 Add MVD subrepo 2019-03-19 11:04:24 +01:00
Thomas Krijnen 5e54e84a92 Delete MVD module now separate repo 2019-03-19 11:02:24 +01:00
Thomas Krijnen e43e02c003 Vector of bool type conversion in python wrapper. 2019-03-13 13:32:24 +01:00
Thomas Krijnen 2a026e93d5 Fix errors after merge 2019-03-08 17:22:05 +01:00
paul dafa304936 Update Python to 2.7.16 - So Fedora 29 Compile 2019-03-08 15:03:20 +01:00
Thomas Krijnen ac4be43170 Merge branch 'master' into v0.6.0
# Conflicts:
#	src/ifcconvert/IfcConvert.cpp
#	src/ifcgeom/IfcGeomRenderStyles.cpp
#	src/ifcgeom/IfcGeomWires.cpp
#	src/ifcparse/IfcLogger.cpp
#	src/ifcparse/IfcLogger.h
#	src/ifcparse/IfcParse.cpp
#	src/ifcparse/IfcUtil.cpp
#	src/serializers/ColladaSerializer.cpp
#	src/serializers/schema_dependent/XmlSerializer.cpp
2019-03-08 11:40:16 +01:00
Thomas Krijnen e4fdfd2eb3 Apply length unit to IfcCylindricalSurface Radius. Fixes #553 2019-03-04 17:23:15 +01:00
johltn a800a9e7c7 FIx MVD module 2019-03-04 12:50:28 +01:00
Thomas Krijnen 9052721a00 Preliminary work on MVD parser/converter/checker 2019-03-04 10:20:42 +01:00
Thomas Krijnen 2538eeea87 Fixes for latebound inverse attributes in Python 2019-02-27 17:18:19 +01:00
Thomas Krijnen dbc3c5ebef Mark abstract entities in latebound schema 2019-02-20 15:35:19 +01:00
Thomas Krijnen 45136fce6c GeomServer: precision on double formatting, compound in meters, bounding box also from compound 2019-02-20 12:29:44 +01:00
Thomas Krijnen bf1623975c Merge remote-tracking branch 'dleverton/master' 2019-02-15 14:30:55 +01:00
hlg df49f1bc1b prevent index out of bound in case of a single point 2019-02-15 14:22:02 +01:00
hlg acde878946 process IfcIndexedPolyCurve without segments #549 2019-02-15 14:22:02 +01:00
Thomas Krijnen 33cbcc2510 Provide LARGEST_FACE_DIRECTION in geom server quantities 2019-02-15 13:46:13 +01:00
Thomas Krijnen d583bf5284 Populate entity subtypes, get schema info in Python 2019-02-15 13:09:54 +01:00
David Leverton d12cacbd2e Fix Position handling for IfcSurfaceCurveSweptAreaSolid 2019-02-13 15:34:50 +00:00
Thomas Krijnen 8d65086e01 Fix #540. Fix XML serializer schema registration. 2019-02-13 14:16:58 +01:00
Thomas Krijnen 4822b57584 Process binary trees of boolean ops in a single call. Fixes #546 2019-02-13 10:08:55 +01:00
Thomas Krijnen 94c3261ba8 Geomserver positions in 64bit 2019-02-12 16:31:38 +01:00
Thomas Krijnen 5db91e52da Fixes to logger templates 2019-02-12 14:55:03 +01:00
Thomas Krijnen 68151b970a Conditionally sew faces based on detection of shared edges 2019-02-12 13:59:49 +01:00
Thomas Krijnen 826752ca6c Geomserver bounding box sizes 2019-02-12 12:47:01 +01:00
Thomas Krijnen c3adcf631a Fix previous commit 2019-02-08 16:53:09 +01:00
Thomas Krijnen a4c2aa8f42 IfcConvert Windows unicode support (#258) 2019-02-08 15:18:55 +01:00
Thomas Krijnen 7f9d418112 Add LARGEST_FACE_AREA to geom server 2019-02-06 16:24:17 +01:00
Dawid Huczyński 9b0be0fb4e Delete intersection.py 2019-02-06 16:23:22 +01:00
Dawid Huczyński 3fdd92dc84 Create intersection.py 2019-02-06 16:23:22 +01:00
Dawid Huczynski 9f7a7a2c5b basic update to blender2.8, use of existing mesh if id match, 2019-02-06 16:23:22 +01:00
Thomas Krijnen 4df526f023 Merge branch 'master' into v0.6.0 2019-02-06 15:39:43 +01:00
Thomas Krijnen 6bac067488 Keep behaviour of returned null pointers for now 2019-02-06 13:33:38 +01:00
Stinkfist0 000d11daab IfcFile: possibility to mark an entity as modified so that potential cache is invalidated. 2019-02-06 13:30:33 +01:00
Stinkfist0 3bef32bb87 IfcGeom::Kernel::get_layers: remove what would appear to be unnecessary code (yields 0 layers in my tests).
The LayerAssignments() calls can take up to 95 % of the function's execution time yielding no results.
2019-02-06 13:30:33 +01:00
Stinkfist0 9211f80625 IfcFile::entitiesByReference: cache loaded references. Profiling shows around 3x speed-up (avg. of first 5000 calls to this function). 2019-02-06 13:30:33 +01:00
Stinkfist0 910cdb3754 IfcConvert: print durations of file parsing and XML conversion. 2019-02-06 13:30:33 +01:00
Stinkfist0 38f7ccdc20 Optimize IfcFile::entitiesByReference() by reserving capacity for IfcEntityList in advance.
Around 18.4 % speed-up (avg. of first 2000 calls) when converting a somewhat large (176 MB) file to XML.
2019-02-06 13:30:33 +01:00
Thomas Krijnen 40c2602b0e Fix discrepancy with v06 2019-02-06 13:29:56 +01:00
Thomas Krijnen 42e00581cd Merge branch 'master' into v0.6.0
# Conflicts:
#	src/ifcgeom/IfcRepresentationShapeItem.h
#	src/ifcgeom_schema_agnostic/IfcGeomFilter.h
2019-02-06 12:22:48 +01:00
Thomas Krijnen 81f978f101 Changes to Axis with missing refDirection 2019-02-06 12:18:10 +01:00
Xavier Lamorlette 3e041a1fb2 Migrate deprecated bind1st and mem_fun to C++11 bind 2019-02-06 11:01:23 +01:00
Xavier Lamorlette bd3118b4a3 Fix a "declaration of 'identifier' hides class member" warning 2019-02-06 11:01:23 +01:00
Thomas Krijnen 4b57a7bdd6 Set a lower bound tot faceset_helper::epsilon 2019-01-26 15:00:20 +01:00
Thomas Krijnen 6a5bfefce9 Merge branch 'master' into v0.6.0
# Conflicts:
#	src/ifcparse/Ifc4-latebound.cpp
#	src/ifcparse/Ifc4.cpp
#	src/ifcparse/Ifc4.h
#	src/ifcparse/Ifc4enum.h
2019-01-20 14:27:09 +01:00
Thomas Krijnen ef7eee411b Update to IFC4Add2TC1 2019-01-20 13:47:12 +01:00
Thomas Krijnen 5ee32fb945 Merge branch 'master' into v0.6.0 2019-01-16 12:30:12 +01:00
Thomas Krijnen 944813146e Close polylines on closed profile def. Fixes #538 2019-01-16 12:28:58 +01:00
Thomas Krijnen 16cafb9f8b Fix #534 2019-01-11 16:22:53 +01:00
Thomas Krijnen b1754f7b26 Remove debug prints 2019-01-05 13:45:54 +01:00
Thomas Krijnen 55ac6e760d Merge branch 'master' into v0.6.0 2019-01-05 13:43:19 +01:00
Thomas Krijnen 9d6eec0f5a Update suprepo 2019-01-05 13:42:51 +01:00
Thomas Paviot 9048ce4857 Fixed BRepAlgoAPI_BooleanOperation::DumpErrors method only available for OCC version > 7 2019-01-02 10:26:03 +01:00
Thomas Krijnen f24944be48 Merge branch 'master' into v0.6.0 2018-12-31 11:40:16 +01:00
Thomas Krijnen dec0c646cc Only round corners on discontinuous spines. Fixes #358. 2018-12-31 11:39:35 +01:00
Thomas Krijnen 421daa3d19 Work-around for invalid IfcOrganization instances 2018-12-30 12:55:17 +01:00
Thomas Krijnen 7bf9f637e7 Fix some warnings 2018-12-30 12:51:13 +01:00
Thomas Krijnen 9a2623953b Merge branch 'master' into v0.6.0 2018-12-30 12:50:27 +01:00
Thomas Krijnen 382efc0255 Fix some warnings 2018-12-30 12:50:04 +01:00
Thomas Krijnen 93a80c6148 Merge branch 'master' into v0.6.0 2018-12-29 14:35:41 +01:00
Thomas Krijnen bf50d0534b Fixes for edge curves and non-planar faces with inner boundaries. #338 2018-12-29 14:34:47 +01:00
Thomas Krijnen b1ab829c14 Merge branch 'master' into v0.6.0 2018-12-29 14:26:16 +01:00
Thomas Krijnen 7022e842bf Update subproject 2018-12-29 14:18:51 +01:00
Thomas Krijnen 65b5453ef1 More verbosity adjustments 2018-12-29 13:48:20 +01:00
Thomas Krijnen 5e32c1e55c More verbosity adjustments 2018-12-29 13:37:51 +01:00
Thomas Krijnen e6f523a2b8 Adjust verbosity of several log messages 2018-12-29 12:34:32 +01:00
Thomas Krijnen 2c8a79e186 Re-enable some disabled functionality in the 0.6 branch 2018-12-28 16:02:03 +01:00
Thomas Krijnen 13d2cf3357 Remove --sew-shells option, always on now 2018-12-28 15:36:10 +01:00
Thomas Krijnen 427720f369 Addendum to previous merge 2018-12-28 15:18:41 +01:00
Thomas Krijnen d20f4a5af6 Merge branch 'master' into v0.6.0 2018-12-28 15:18:14 +01:00
Thomas Krijnen 4936ea3ac3 Document boolean operation failure reasons, correct min len check and manifoldness check. Fix #478 2018-12-28 15:15:41 +01:00
Thomas Krijnen 4101407b43 Small changes to convert(face) 2018-12-24 16:04:51 +01:00
Thomas Krijnen 29d3b436b4 Merge branch 'master' into v0.6.0 2018-12-24 16:03:20 +01:00
Thomas Krijnen a2231605a5 Take into account edge orientation; small fixes to convert(face) 2018-12-24 16:02:00 +01:00
Thomas Krijnen 4380e1d86a Merge branch 'master' into v0.6.0 2018-12-22 14:06:28 +01:00
Thomas Krijnen 161deeb4e0 Fix warnings and compilation on clang 2018-12-22 14:05:49 +01:00
Thomas Krijnen 31eac564f6 Detect self-intersections in faceset helper and clamp bounding box eps factor to 1. 2018-12-21 15:58:21 +01:00
Thomas Krijnen 99b865bbd9 Some layerset processing comments 2018-12-21 14:40:58 +01:00
Thomas Krijnen 4de617e398 Merge branch 'master' into v0.6.0 2018-12-21 11:53:36 +01:00
Thomas Krijnen 1a1b7e93ab Changes to no-material message 2018-12-19 16:54:02 +01:00
Thomas Krijnen f5af6ee6c0 speed-up min_vertex_edge_distance(). Fixes #518 2018-12-19 16:39:54 +01:00
Thomas Krijnen 94f49af00b Fix header order 2018-12-19 16:30:05 +01:00
Thomas Krijnen 39b8680f64 Improve performance of layerset slicing 2018-12-19 16:10:33 +01:00
Thomas Krijnen 26282437cc Layerset processing error message 2018-12-19 15:15:28 +01:00
Thomas Krijnen 6911b48a46 project() more efficiently onto planar surfaces 2018-12-19 15:15:00 +01:00
Sander Boer de416eca49 Too lazy to comment 2018-12-18 12:49:11 +01:00
Thomas Krijnen acd3564429 Remove some warnings for open shells 2018-12-17 13:25:28 +01:00
Thomas Krijnen 20471bd33e Check comcurve segments extent before creating iterator 2018-12-17 10:56:26 +01:00
Thomas Krijnen bb15446822 Make std::map inheritance private. #512 #517 2018-12-17 10:37:48 +01:00
Thomas Krijnen e3b415ad54 Use miimal bounding box edge length for faceset relative epsilon 2018-12-14 17:14:55 +01:00
Thomas Krijnen 27b9689e14 Work-around gcc issue 2018-12-14 12:14:12 +01:00
Thomas Krijnen 32338e2490 Make std::map inheritance private. #512 #517 2018-12-14 11:56:09 +01:00
Thomas Krijnen e104d1aac3 Travis: max log length 2018-12-12 17:01:11 +01:00
Thomas Krijnen 632d36e2ba Sync subrepo 2018-12-12 16:40:43 +01:00
stephassoria 9a9475adcb Exclude parse_ifcxml.cpp content from build when WITH_IFCXML is not define 2018-12-12 16:29:37 +01:00
Thomas Krijnen f307f39023 Fix remaining merge conflict 2018-12-12 16:29:10 +01:00
Thomas Krijnen f526277a7d Fix some warnings 2018-12-12 16:26:49 +01:00
Thomas Krijnen 0c8e9e7040 Merge branch 'master' into v0.6.0
# Conflicts:
#	src/ifcgeom/IfcGeomIteratorImplementation.h
2018-12-12 16:20:50 +01:00
Thomas Krijnen a0f37cf9ea Fix some warnings 2018-12-12 16:12:38 +01:00
Thomas Krijnen 49c6346af7 Travis: fix shell syntax 2018-12-12 15:57:38 +01:00
Thomas Krijnen eb166da930 Travis: pin py version 2018-12-12 15:53:48 +01:00
Thomas Krijnen d5216c8201 Travis: Build succeeds regardless of conversion result 2018-12-12 15:43:04 +01:00
Thomas Krijnen 027226fb96 Travis: compile on two cores 2018-12-12 14:43:25 +01:00
Thomas Krijnen 5dbd0249b4 Travis: newer gcc for c++11 compat with package manager 2018-12-12 14:40:14 +01:00
Thomas Krijnen 4821226ec2 Travis: xenial, occt 7.3, run IfcConvert 2018-12-12 14:07:13 +01:00
Thomas Krijnen 72c96905b9 Option to validate created geometries based on explicit quantities 2018-12-12 12:33:09 +01:00
Thomas Krijnen a8f4f0270a Don't double quote boost dependency dir #515 2018-12-11 13:01:28 +01:00
Thomas Krijnen 336601a7ae Missing FindFromKey() overload on older versions of occt 2018-12-11 10:55:03 +01:00
Thomas Krijnen d39c7bd641 Postfix integers 2018-12-10 17:26:41 +01:00
Thomas Krijnen d3092090df Substitute tiny trimmed curves with linear approximation when deflection within tolerance 2018-12-10 17:15:39 +01:00
Thomas Krijnen b88c5ee930 Missing include for older occt versions 2018-12-10 12:12:23 +01:00
Thomas Krijnen 645f88a313 Calculate quantities more defensively 2018-12-10 11:51:54 +01:00
Thomas Krijnen a7c7a684ee Emit surface genus for representation items 2018-12-10 11:33:54 +01:00
Thomas Krijnen 20b3a8af3e Faceset_helper: no recursive clustering, epsilon relative to bounds 2018-12-10 10:45:58 +01:00
Thomas Krijnen 0fcf1f14c8 Merge branch 'master' into v0.6.0 2018-12-10 10:41:58 +01:00
Stinkfist0 327be7030f ColladaSerializer minor tweaks and to-dos. 2018-12-09 12:23:44 +01:00
Michael Sundqvist 06589ca1c6 Refactor ColladaSerializer.cpp, encode material names only once, decode them before passing to OpenCollada functions that take URI parameters 2018-12-09 12:23:44 +01:00
Michael Sundqvist 1c83b2db53 Remove object name from no material log message, raise level to warning 2018-12-09 12:23:44 +01:00
Michael Sundqvist 6f3eb84f66 Fix instance_material missing material names as well. 2018-12-09 12:23:44 +01:00
Michael Sundqvist e7a8a97639 If material name is empty when writing collada file, name it as a missing material. Logger::Notice() objects that do not have a material assigned. 2018-12-09 12:23:44 +01:00
Otso Alho fe1cb9e92b default to blank material with IfcMaterial name 2018-12-09 12:23:44 +01:00
Thomas Krijnen f849434f24 More defensive IfcCurveBoundedPlane processing 2018-12-09 11:59:49 +01:00
Thomas Krijnen 8c0c216a1d Check boolean result manifoldness for shells individually. Fixes #516. 2018-12-08 10:37:54 +01:00
Thomas Krijnen 7ed47dee67 Faceset helper: check whether edge has been created 2018-12-03 12:36:30 +01:00
Thomas Krijnen 4f8b430040 Improvements to faceset_helper in case of nearby verts 2018-11-30 11:08:19 +01:00
Thomas Krijnen b48d17c690 Merge branch 'master' into v0.6.0
# Conflicts:
#	src/ifcgeom/IfcGeomFunctions.cpp
#	src/ifcparse/IfcCharacterDecoder.cpp
2018-11-28 14:18:58 +01:00
Thomas Krijnen 3d240deed1 Extended data backwards compatibility 2018-11-28 10:50:09 +01:00
Thomas Krijnen 747ddeb20c Apply openings in batches sorted by increasing detail 2018-11-23 11:45:23 +01:00
Thomas Krijnen 4afd104f3d fit_halfspace() correct padding 2018-11-21 11:28:22 +01:00
Thomas Krijnen 4ed9166e8a Check for null pointers returned by find_representation() 2018-11-20 12:10:44 +01:00
Bernd Hahnebach 64eb5b4d1d namespace fix for debian buster, fixes issue #506 2018-11-20 11:59:08 +01:00
Thomas Krijnen 116de5daec Test powershell v5 or higher 2018-11-20 11:53:11 +01:00
Thomas Krijnen 0016256f57 Merge branch 'master' into v0.6.0 2018-11-19 17:13:28 +01:00
Thomas Krijnen 0018224da7 Handle python positional arguments in case of derived fields more explicitly 2018-11-19 16:38:52 +01:00
Thomas Krijnen 334d867873 Fix #498 2018-11-19 14:56:21 +01:00
Thomas Krijnen 9caa753d27 Fix geom server quantities 2018-11-14 12:14:00 +01:00
Thomas Krijnen ba274bb164 Merge branch 'master' into v0.6.0 2018-11-13 14:46:41 +01:00
Thomas Krijnen 50e5d5f4d5 Sort instances before emitting to file 2018-11-13 14:46:15 +01:00
Thomas Krijnen e7daf871b8 Disallow adding instances from different schema 2018-11-04 15:16:08 +01:00
Thomas Krijnen f7e66d1e7f make_unique<>() is C++14 2018-11-03 16:55:41 +01:00
Thomas Krijnen 6cf214d2e0 Missing header on Travis 2018-11-03 11:34:12 +01:00
Thomas Krijnen 1590ffd6ec Missing header on Travis 2018-11-03 09:59:37 +01:00
Thomas Krijnen 752bda71af Missing header on Travis 2018-11-02 17:01:15 +01:00
Thomas Krijnen e463dca0df Absolute value for dot product in projected areas 2018-11-02 16:37:54 +01:00
Thomas Krijnen 66859c7140 Missing option 2018-11-02 16:24:32 +01:00
Thomas Krijnen 3ff619c7ed Quantities in convert and geomserver. Faceset helper for creating edge pairs. 2018-11-02 16:10:06 +01:00
Thomas Krijnen ad41f04f11 Merge branch 'master' into v0.6.0
# Conflicts:
#	src/ifcconvert/IfcConvert.cpp
#	src/ifcgeom/IfcGeomRenderStyles.cpp
#	src/ifcparse/IfcParse.cpp
2018-10-30 14:32:28 +01:00
Thomas Krijnen e64d8750e1 Use all representations if no representations found through context check 2018-10-30 12:15:35 +01:00
Thomas Krijnen 342cce89d7 #487 perform fix after sewing if not valid 2018-10-30 09:05:18 +01:00
Stinkfist0 ffa282af9d IfcGeomIterator: check the filtered products, not unfiltered ones, for reusability. Speeds up things significantly and also fixes geometry reusability in many cases. 2018-10-15 15:22:44 +02:00
Stinkfist0 fbc0215ef1 IfcGeomIterator: optimize filtering by performing it prior to geometry reuse inspections.
Improves the iteration speed immensely, especially on very large files when only a fraction of the content is wanted to be converted.
2018-10-15 15:22:44 +02:00
Stinkfist0 58759cf365 IfcConvert: prevent memory leaks and clean up code by utilizing shared_ptr. 2018-10-15 14:02:17 +02:00
Stinkfist0 2024a24e31 IfcConvert: proper "exit routine" if initialization of input fails when trying to create geometry files. 2018-10-15 14:02:17 +02:00
Stinkfist0 c420cc1abb IfcFile::Init: return false if unexpected schema encountered. 2018-10-15 14:02:17 +02:00
Jean Niklas L'orange e39835d25e Make API more consistent 2018-10-15 11:25:17 +02:00
Jean Niklas L'orange 9c1660a84b Catch and inform about errors
The changes in how specular roughness and transparency is read in was
done to ensure type safety. If you added

    "transparency": "0.8"

to the file, then that would be silently ignored. In the new style, it
instead errors out if the type cannot be converted to a double.
2018-10-15 11:25:17 +02:00
Jean Niklas L'orange 7e9e56cd2c Support setting default "fallback" material style
Specifying a fallback default material style is added by specifying a
style for "*" in the --default-material-file.
2018-10-15 11:25:17 +02:00
Jean Niklas L'orange a6d3619449 Fix bug where default material was not initialised
We kind-of sort-of do double work here, but I think it is better to
always assume that InitDefaultMaterials when setting the defaults, to
avoid too many code paths.
2018-10-15 11:25:17 +02:00
Jean Niklas L'orange dab3382b29 Implement support for custom default materials
The support for custom default materials is implemented as a JSON
file passed via the command line. The default material specification
will override the defaults, except the toplevel default value.
2018-10-15 11:25:17 +02:00
Stinkfist0 882d27fe25 Use /permissive- introduced in VS 2017 to enforce standards-conformance.
https://docs.microsoft.com/en-us/cpp/build/reference/permissive-standards-conformance?view=vs-2017
2018-10-01 10:30:04 +02:00
paul 81a9d0e747 Changing opencollada version to "v1.6.63"
Discussion:
https://github.com/IfcOpenShell/IfcOpenShell/issues/480

Summary:
"... Compiling OpenCOLLADA  fail on fedora 27... changing  opencollada version to "v1.6.63" (since some time now they do proper tagging over there, the commit we track now is from 19 Dec 2013, probably worth updating as newer compilers might rightfully complain)...

Probably best to rm -rf ... IfcOpenShell/build/Linux/x86_64/build/OpenCOLLADA before restarting."
2018-10-01 10:29:01 +02:00
Thomas Krijnen cb535b4ba8 Merge branch 'master' into v0.6.0 2018-09-25 12:47:31 +02:00
Thomas Krijnen 3102a1c179 Check for empty bounding boxes in boolean op filter 2018-09-25 12:47:06 +02:00
Thomas Krijnen a8effa8289 No need to cast to TopoDS_Face anymore 2018-09-25 12:46:20 +02:00
Thomas Krijnen bf3ec5e507 Add comment 2018-09-24 12:56:07 +02:00
Thomas Krijnen 5526f421f0 Merge branch 'master' into v0.6.0 2018-09-21 14:55:20 +02:00
Thomas Krijnen e24ddae064 Forgot to update code generator 2018-09-21 14:55:10 +02:00
Thomas Krijnen 92f4d76c81 Check for empty list of boolean operands 2018-09-21 14:53:39 +02:00
Thomas Krijnen 59be8f742d Merge branch 'master' into v0.6.0 2018-09-21 12:06:32 +02:00
Thomas Krijnen d2337dc692 Missing FindFromKey() overload on older versions of occt 2018-09-21 12:06:10 +02:00
Thomas Krijnen 2b501a93c9 Merge branch 'master' into v0.6.0
# Conflicts:
#	src/ifcgeom/IfcGeomFunctions.cpp
#	src/ifcgeom/IfcGeomWires.cpp
2018-09-21 12:02:22 +02:00
Thomas Krijnen 6b8681b74a That was bad 2018-09-21 11:45:36 +02:00
Thomas Krijnen 297812d4e2 Better handling of consecutive circular arc segments 2018-09-21 11:43:06 +02:00
Thomas Krijnen 7205f0165e Work around private copy constructor on older versions of occt 2018-09-21 11:21:51 +02:00
Thomas Krijnen bf4b5928dd Fail on empty face early 2018-09-21 10:22:37 +02:00
Thomas Krijnen 3840bd1154 Limit tolerance on wire self-intersection to edge segment length 2018-09-21 10:22:24 +02:00
Thomas Krijnen 47ec4e2240 Merge branch 'master' into v0.6.0 2018-09-19 20:27:03 +02:00
Thomas Krijnen 622853d73d Filter boolean subtraction operands by intial bounding box test 2018-09-19 16:42:34 +02:00
Thomas Krijnen e8b28a099f Some fixes for clang 2018-09-19 14:05:19 +02:00
Thomas Krijnen 9a3039765f Merge remote-tracking branch 'origin/master' into v0.6.0 2018-09-19 10:09:48 +02:00
Unknown bef9bd25f7 Fix dll export on Windows
Fix dll export on Windows
2018-09-19 10:09:05 +02:00
Thomas Krijnen 53577d9da9 Fix ifcopenshell-python build on nix build script 2018-09-18 19:42:01 +02:00
Thomas Krijnen 55d07f8bba Merge branch 'master' into v0.6.0
# Conflicts:
#	nix/build-all.py
2018-09-18 13:42:06 +02:00
Thomas Krijnen 34b3ca307f Enable exception handling on occt release builds Fix #462 2018-09-18 13:39:44 +02:00
Thomas Krijnen 028e8fb926 Merge branch 'master' into v0.6.0
# Conflicts:
#	nix/build-all.py
#	src/ifcgeom/IfcGeomFunctions.cpp
#	src/ifcparse/IfcLogger.cpp
2018-09-17 17:46:13 +02:00
Thomas Krijnen 08557c2664 Don't fail on empty bounding box during halfspace processing 2018-09-17 15:21:12 +02:00
Thomas Krijnen a54b7863cd Fail early on duplicate (non consecutive) points in face loops 2018-09-17 14:59:15 +02:00
Thomas Krijnen 3101ccb83a Fixes for degenerate polylines 2018-09-17 14:42:22 +02:00
Thomas Krijnen 394a7f14ad Emit unopened shapes in case of exceptions during subtraction 2018-09-17 14:11:03 +02:00
Thomas Krijnen 983745b508 More careful face orientation check 2018-09-17 12:05:30 +02:00
Thomas Krijnen b05b62f440 Perform additional check on boolean result output for small edges or distances 2018-09-17 12:02:41 +02:00
Thomas Krijnen 51a9bb0ac1 Retry boolean operations if output is non-manifold on manifold input 2018-09-17 12:00:49 +02:00
Thomas Krijnen 452ab6e5bc Fix flaw in vertex-edge distance used to limit tolerance in boolean ops 2018-09-17 11:33:40 +02:00
Thomas Krijnen 0df2bfadef Don't sew overly complex geometries even as part of boolean operations #455 2018-09-12 16:44:30 +02:00
Thomas Krijnen 12623dd1e5 Only install/strip on Release build 2018-09-12 13:57:41 +02:00
Thomas Krijnen 2eaae2bda8 Use BVH tree for wire intersections 2018-09-12 13:26:11 +02:00
Thomas Krijnen a3141b2acc Make nix build script more granular 2018-09-08 13:23:36 +02:00
Thomas Krijnen 3a4fa2e6dd Merge commit '58ce86d538971fc1815d56368d7077aa85e0592c' into v0.6.0 2018-09-08 13:07:09 +02:00
Thomas Krijnen 472c3478e0 Emit error messages on missing units 2018-09-08 08:27:45 +02:00
Thomas Krijnen 54d96fe167 Merge branch 'master' into v0.6.0
# Conflicts:
#	src/ifcconvert/IfcConvert.cpp
#	src/ifcgeom/IfcGeom.h
2018-09-07 14:42:15 +02:00
Thomas Krijnen 229a708fc3 Emit error messages on missing units 2018-09-07 14:25:46 +02:00
Thomas Krijnen 0df4edff01 Revive some temporarily disabled features in de 0.6 branch 2018-09-07 14:08:56 +02:00
luz.paz d78c9171db Misc. typos
Found via `codespell -q 3`
2018-09-07 11:52:01 +02:00
Thomas Krijnen 03da7bc6e4 Fix missing schema identifier in geometry function 2018-09-05 14:43:25 +02:00
Thomas Krijnen 34d28e8b3a Prefix Kernel factory struct as well 2018-09-05 14:42:59 +02:00
Thomas Krijnen 6e8f5c84e6 Still no working submodule 2018-09-04 15:52:51 +02:00
Thomas Krijnen 08d003ddcd Something went wrong merging submodule 2018-09-04 15:07:14 +02:00
Thomas Krijnen bdf22856e4 Add explicit cast to attribute value 2018-09-04 13:59:57 +02:00
Thomas Krijnen 4d33ed5cb8 Merge branch 'master' into v0.6.0
# Conflicts:
#	src/ifcconvert/IfcConvert.cpp
#	src/ifcgeom/IfcGeomShapes.cpp
#	src/serializers/ColladaSerializer.cpp
#	src/serializers/schema_dependent/XmlSerializer.cpp
2018-09-04 13:23:11 +02:00
Thomas Krijnen 4babe84941 Force decltype using for boost::resulf_of 2018-09-02 13:55:36 +02:00
Thomas Krijnen 4138103541 Fix libxml2 directives on travis 2018-09-02 11:59:54 +02:00
Thomas Krijnen a3894cdcda Fix libxml2 directives on travis 2018-09-02 11:59:54 +02:00
Thomas Krijnen 840f1463e5 Fix libxml2 directives on travis 2018-09-02 11:59:54 +02:00
Thomas Krijnen ad5444b974 Inverse attributes with 0-1 cardinality not as ifcXML aggregates 2018-09-02 11:59:54 +02:00
Thomas Krijnen c0d41103fa add missing file 2018-09-02 11:59:54 +02:00
Thomas Krijnen 3e80d3646c Work on ifcxml parsere 2018-09-02 11:59:54 +02:00
Thomas Krijnen c2f4c2cf74 Add missing patch files. Fix #448 2018-09-02 10:51:16 +02:00
Thomas Krijnen 45be79443f Prefix typename for iteratorimplementation factory function struct 2018-08-29 12:55:27 +02:00
Thomas Krijnen dbc3577497 Test files in submodule 2018-08-26 17:09:01 +02:00
Thomas Krijnen 0a45a82109 Move test files to separate repo 2018-08-26 12:30:18 +02:00
Stinkfist0 07f5ac6994 IfcGeomIterator: compute model's bounding box only if needed (IfcConvert --center-model used). 2018-08-26 12:17:24 +02:00
johanrd 0eb6c597f0 Create 443--segfault-beam.ifc 2018-08-26 12:12:48 +02:00
Thomas Krijnen b13c912c47 Work on #426 2018-08-20 11:46:26 +02:00
Thomas Krijnen 683cadeb76 occt 7.3 2018-08-19 10:29:01 +02:00
Thomas Krijnen b023f6a31d Fix sillyness preventing install of IfcGeomServer 2018-08-16 13:58:50 +02:00
Thomas Krijnen 891448e902 Fix #343 2018-08-15 17:10:29 +02:00
Michael Sundqvist 82718fad30 Catch some ifc file header exceptions to prevent crashing during xml serialization 2018-08-15 16:15:25 +02:00
Stinkfist0 9f03a78652 ColladaSerializer::differentiateSlabTypes: IfcSlab.PredefinedType is optional so check for its existence.
https://github.com/Tridify/IfcOpenShell/commit/c4f426392cfc021b8a9c617f21d258759b289d6a#diff-cca49440331fb4c1363204028192c459
2018-08-15 16:09:15 +02:00
Stinkfist0 505d234ea2 Unify GeometrySerializers' object ID logic. Fixes #397. 2018-08-15 16:09:15 +02:00
Robbe Derks bd5e25889a Added command-line option to output progress to stderr stream 2018-08-15 14:45:43 +02:00
Thomas Krijnen 5609cbdde9 Fix missing symbols for boost 1.67 and BOOST_ALL_NO_LIB 2018-08-15 09:07:40 +02:00
Thomas Krijnen caa6056f01 Conda bld.bat python version 2018-08-14 17:09:00 +02:00
Thomas Krijnen 3ea3627639 Conda bld.bat python version 2018-08-14 16:15:32 +02:00
Thomas Krijnen 175387bd88 Fix IfcOpenHouse 2018-08-13 11:43:28 +02:00
Thomas Krijnen ba5049a7eb Break out of loop in case of attribute count mismatch 2018-08-10 14:57:33 +02:00
Felipe Mesquita 40b70b1815 Workaround wrong argument count. Fix #419 2018-08-10 14:55:47 +02:00
Thomas Krijnen 54d9edfee5 Fix build on gcc 2018-07-12 12:33:35 +02:00
Thomas Krijnen 1c2587ba19 Fix for inverse update on delete 2018-07-12 11:37:23 +02:00
Thomas Krijnen d09abbd260 Merge pull request #409 from IfcOpenShell/master
Additional potential occt lib location
2018-07-08 15:08:32 +02:00
Thomas Krijnen 5359e88f0e Additional potential occt lib location 2018-07-08 15:07:30 +02:00
Thomas Krijnen 2dc01aec2d Update conda meta 2018-07-08 15:06:12 +02:00
Thomas Krijnen 20b35ec4ea Preprocessor stuff for stp and igs serializers 2018-07-08 11:08:07 +02:00
Thomas Krijnen 5245341cdc Correct previous commit 2018-07-08 11:06:45 +02:00
Thomas Krijnen 49932ba5c0 Python wrapper precision updates 2018-07-08 10:32:26 +02:00
Thomas Krijnen 7a7aab01bb IfcGeomServer matrices in double precision 2018-07-07 21:14:27 +02:00
Thomas Krijnen d105292817 Merge branch 'master' into v0.6.0
# Conflicts:
#	src/ifcconvert/IfcConvert.cpp
#	src/ifcgeom/IfcGeomFilter.h
#	src/ifcgeom/IfcGeomIteratorImplementation.h
#	src/ifcgeom/IfcGeomWires.cpp
#	src/ifcparse/IfcFile.h
#	src/ifcparse/IfcLogger.cpp
#	src/ifcparse/IfcLogger.h
#	src/ifcparse/IfcParse.cpp
#	src/serializers/SvgSerializer.cpp
#	src/serializers/schema_dependent/XmlSerializer.cpp
2018-07-07 17:15:54 +02:00
Thomas Krijnen 6fdd2049a2 Restore previous boost version on nix 2018-07-01 11:37:36 +02:00
Thomas Krijnen 8428b93451 nix cmake download url 2018-07-01 09:16:34 +02:00
Thomas Krijnen 8e2a074d70 Correct accidentally committed lines 2018-06-30 18:53:16 +02:00
Thomas Krijnen 1b809ed849 Update boost version 2018-06-30 15:36:51 +02:00
Thomas Krijnen 8c0bcc4ce7 Silent extraction in build-deps.cmd 2018-06-30 10:21:11 +02:00
Victor Haefner 11d0c6ef56 compiles under ubuntu 18.04 2018-06-22 17:16:11 +02:00
Stefan Boeykens 58ce86d538 Pushing cmake to enforce C++ 11
To be able to compile with a recent ICU version (for Unicode) C++11 is required. This enforces this in the main CMakeLists.txt
2018-06-19 09:45:16 +02:00
Stefan Boeykens 0ba1ac7df3 Add ICU header and namespace in IfcCharacterDecoder
To compile on macOS with a recent ICU, we have to add the correct header and refer to the right namespace in IfcCharacterDecoder
2018-06-17 15:15:52 +02:00
Thomas Krijnen 4cfb2f1027 SetNonDestructive does not exist prior to OCCT 7.0 2018-06-15 12:39:29 +02:00
Thomas Krijnen 6d25047c6b higher fuzz on half spaces 2018-06-12 16:15:28 +02:00
Thomas Krijnen 136ec5b224 'nondestructive' boolean ops 2018-06-12 16:15:12 +02:00
Thomas Krijnen 3ac8379187 Set precision on fix after boolean op 2018-06-08 14:12:01 +02:00
Thomas Krijnen 6c1ad47481 Additional improvements for comp curve wire building 2018-06-01 15:38:08 +02:00
thorade 20cd383504 triple double-quoted docstring
and do not use builtin names for variables
2018-05-30 11:32:47 +02:00
Thomas Krijnen 5aebfe9f22 Fix for setting type decl instances 2018-05-29 10:34:38 +02:00
Thomas Krijnen fd821d08cd Dont fail on missing AIS_MultipleConnectedShape in earlier versions of pyocc 2018-05-17 15:54:12 +02:00
Thomas Krijnen 6b772d18b8 Fixes to qt5 port of viewer app 2018-05-17 15:53:40 +02:00
civilx64 33635c2c40 Port viewer app to PyQt5 2018-05-17 00:11:09 -04:00
civilx64 7e6b758450 Add instructions for install via conda. 2018-05-16 23:05:07 -04:00
Yorik van Havre 127bcaf96e adding exception for OCCT 7.3 2018-05-16 16:10:40 +02:00
Yorik van Havre 2d59f9d53a Removed one last remaining BOPCol_ListOfShapes
Replaced one last remaining BOPCol_ListOfShapes with TopTools_ListOfShapes (deprecated in OCC7.3)
2018-05-16 16:10:40 +02:00
Otso Alho 1014049b05 use unordered map for entity by id 2018-05-14 13:36:38 +02:00
Otso Alho 37460d3df9 do not calculate reuse_ok multiple times for mapped representations 2018-05-14 13:36:38 +02:00
Thomas Krijnen 637d3e2eb6 Optimize generation of faces with large (n > 128) number of edges. 2018-05-14 11:06:07 +02:00
Thomas Krijnen 2ed2e9cf86 Add include, missing depending on occt version 2018-05-13 18:52:53 +02:00
Thomas Krijnen c1635d65eb Add include, missing depending on occt version 2018-05-13 16:04:15 +02:00
Thomas Krijnen 495ad75b14 Proper scope around goto labels 2018-05-13 15:30:20 +02:00
Thomas Krijnen 966e57e94a #332 2018-05-13 14:41:39 +02:00
Thomas Krijnen ef7a1ab421 Limit boolean fuzz to edge length 2018-05-13 09:15:06 +02:00
Thomas Krijnen 089bb95c9f Fix previous commit on gcc 2018-05-13 08:45:33 +02:00
Thomas Krijnen 7786b89269 Machine readable progress with -q and --log-format json 2018-05-12 20:12:25 +02:00
Thomas Krijnen 589f4bda2e ... but keep close point removal at 10 times precision 2018-05-08 16:19:47 +02:00
Thomas Krijnen 8ffc12e6cd Reduce radius on wire intersections 2018-05-08 09:41:19 +02:00
thorade bd9875fae5 set TLS to 1.2 2018-05-07 10:53:03 +02:00
thorade 7994bcbb80 https plus original URL 2018-05-07 10:53:03 +02:00
thorade baa0211562 append download to the URL
https://sourceforge.net/p/forge/documentation/Downloading%20files%20via%20the%20command%20line/
2018-05-07 10:53:03 +02:00
thorade a24333486a use SF instead of mirror 2018-05-07 10:53:03 +02:00
thorade 452ba651d0 update SF.net download URL 2018-05-07 10:53:03 +02:00
Thomas Krijnen 161f24d804 Copy operands prior to boolean operation 2018-05-05 16:09:12 +02:00
Thomas Krijnen 6ee283dbae Don't fail on parse errors while resolving inverse attributes 2018-05-04 10:25:57 +02:00
Thomas Krijnen c748c8dcea Better instance not found error messages 2018-04-23 10:51:59 +02:00
Thomas Krijnen 1f68d9d5bc TColgp_SequenceOfPnt::Upper() does not exist on all versions of occt 2018-04-18 11:57:38 +02:00
Thomas Krijnen 120ff2f629 Fix download of occt in nix build 2018-04-18 11:50:59 +02:00
Thomas Krijnen 656346741e #288 #297 2018-04-18 11:33:57 +02:00
Thomas Krijnen e21277e80a nix: use and patch occt 7.2 2018-04-15 14:01:37 +02:00
Thomas Krijnen 9f55444d2e win: apply patch for HLR 2018-04-15 09:27:16 +02:00
Thomas Krijnen 05fd266a65 gcc compatibility 2018-04-14 20:06:25 +02:00
Thomas Krijnen 42c09deb8c #354 loose faces in SewedShape 2018-04-11 12:26:01 +02:00
Thomas Krijnen cb61873179 conda osx build 2018-04-10 19:55:56 +02:00
Thomas Krijnen dbf9f213fd Dont fail on adding length measure instances to empty files 2018-04-04 14:40:10 +02:00
Thomas Krijnen 77e0d9cca7 Freeing of lazily loaded inst attrs 2018-03-21 17:29:37 +01:00
Thomas Krijnen 0cbe984c71 Default to 2x3 for older schemas 2018-03-21 17:18:38 +01:00
Thomas Krijnen 93cca8f7b7 Update README.md 2018-03-16 16:36:36 +01:00
Thomas Krijnen 5082fe8be4 Revive XML serializer 2018-03-16 16:04:48 +01:00
Thomas Krijnen 834780b726 Schema dependent serializers 2018-03-16 13:49:11 +01:00
Thomas Krijnen d374fd3778 More changes to conda build 2018-03-16 12:17:49 +01:00
Thomas Krijnen b86b359563 Schema independent layer and transformation conv functions 2018-03-16 12:10:05 +01:00
Thomas Krijnen 6685ea6d7a Schema dependent serializers 2018-03-16 12:10:05 +01:00
Thomas Krijnen 0a809ba127 Schema dependent serializers 2018-03-16 12:10:05 +01:00
Thomas Krijnen 14be6b49fe #348 2018-03-16 11:03:02 +01:00
Thomas Krijnen e87a1a0b32 #329 Only auto close IfcCompositeCurve when used for profile 2018-03-09 10:41:22 +01:00
Thomas Krijnen 768f49dcc7 Update meta.yaml 2018-03-04 10:50:17 +01:00
Thomas Krijnen 27e335343e Win build script occt7.2 2018-03-04 10:45:44 +01:00
Thomas Krijnen 0920116178 Fix prompt 2018-03-04 10:45:05 +01:00
Thomas Krijnen 1a7a4bdc3e Update boost download path 2018-02-27 18:09:43 +01:00
Thomas Krijnen 5d0c04a077 Fix geometry reuse in case of IfcTypeProducts with maps 2018-02-21 14:54:38 +01:00
Anders Granskogen Bjørnstad 8a316e45ed IfcConvert: Add --building-local-placement argument
Similar to --site-local-placement. Motivated by dealing with at least
two examples where IFC files for the same construction site have
inconsistent ObjectPlacement hierarchy:

- MEP models exported from MagiCAD for Revit:
   ObjectPlacement.PlacementRelTo of IfcBuilding is empty
- Regular construction models exported from Revit:
   ObjectPlacement.PlacementRelTo of IfcBuilding is pointing to
   IfcSite's placement
2018-02-19 16:17:12 +01:00
Thomas Krijnen ef97ea0593 Properly toposort type decl instantiation 2018-01-29 15:03:12 +01:00
Thomas Krijnen 19d834b19e Fix python wrapper 2018-01-29 15:02:36 +01:00
Thomas Krijnen bc64b339a7 Bump version identifier 2018-01-29 15:02:16 +01:00
Thomas Krijnen af93f2a64d Use naked pointer for attribute list and derive size from schema type to reduce mem usage 2018-01-29 12:11:50 +01:00
Thomas Krijnen a3b7a25866 conda yaml: add space before version spec 2018-01-26 14:36:51 +01:00
Thomas Krijnen 25bae21a42 Merge pull request #322 from 3drepo/Convert_Server_Optional
Make IFCConvert and IFCGeomServer optional
2018-01-25 12:50:18 +01:00
Thomas Krijnen d9679d6905 Merge branch 'v0.6.0' into Convert_Server_Optional 2018-01-25 12:49:55 +01:00
carmenfan 7a4059fbfd Adding ifcgeom_schema_agnostic headers in include directory 2018-01-25 12:46:52 +01:00
carmenfan 623e95cefe Add Options on Cmake to selectively compile IFCConvert and IFCGeomServer 2018-01-24 15:55:44 +00:00
Thomas Krijnen 9f91109e66 Update conda 2018-01-21 15:58:36 +01:00
Thomas Krijnen 162b665d07 Update blender addon for str geometry.id 2018-01-15 11:00:25 +01:00
Thomas Krijnen 7b728b9e6d Fix ambiguous call to overloaded function
(`std::exception` has a `char*` constructor?)
2018-01-08 12:33:27 +01:00
Thomas Krijnen 6240191980 Conda build script 2018-01-08 12:19:36 +01:00
Thomas Krijnen c7329497a6 Don't use static boost libs with conda build 2018-01-08 12:02:34 +01:00
Thomas Krijnen 4bed639d9c Python wrapper geometry handling 2018-01-01 11:22:12 +01:00
Thomas Krijnen 5739fa7239 Single threaded compilation on travis 2017-12-31 13:06:18 +01:00
Thomas Krijnen e2f79ec1ba Work on python wrapper 2017-12-31 12:20:13 +01:00
Thomas Krijnen 05e6f56911 Linker errors, geom server, warnings 2017-12-29 13:48:08 +01:00
Thomas Krijnen 19aebacbd8 Initialize kernel base class 2017-12-29 12:25:29 +01:00
Thomas Krijnen aeabe87779 Disable optimization for schema instantiation on gcc as well 2017-12-29 12:21:20 +01:00
Thomas Krijnen 7b3d334472 Warnings and errors 2017-12-29 12:09:07 +01:00
Thomas Krijnen 93c3afa1ae Schema dependent names for serialization functions 2017-12-29 11:23:46 +01:00
Thomas Krijnen 21e53d24e0 Fixes to examples 2017-12-28 18:44:50 +01:00
Thomas Krijnen f5d6f4f7f9 No anonymous structs to work around gcc 5 issue 2017-12-28 16:33:07 +01:00
Thomas Krijnen 24b46c1f43 Work on serialization 2017-12-22 17:37:58 +01:00
Thomas Krijnen ddde7bc367 Fix hierarchy helper 2017-12-22 17:34:13 +01:00
Thomas Krijnen 5f6a18c212 Fixes for hierarchy helper 2017-12-22 17:04:19 +01:00
Thomas Krijnen 5e23086947 Sprinkle with template and typename keywords 2017-12-22 16:45:02 +01:00
Thomas Krijnen 472fde5599 Fixes 2017-12-22 15:19:09 +01:00
Thomas Krijnen b3458c872f Work on python wrapper 2017-12-22 13:51:11 +01:00
stefkeB 5bf7f53fd8 BaseQuantities support in IfcConvert XmlSerializer
Added the export of BaseQuantities in the XML export of IfcConvert.
Very similar to the export of properties.
2017-12-22 11:33:28 +01:00
Thomas Krijnen 4d325e026e Fix compilation and execution of IfcConvert 2017-12-21 14:14:04 +01:00
Thomas Krijnen 6622afd93a Rename 2017-12-20 17:09:42 +01:00
Thomas Krijnen 8b4650b169 Fix compilation on msvc 2017-12-20 16:38:55 +01:00
Thomas Krijnen 6e525662c3 Disable XML serializer for the time being 2017-12-20 12:41:39 +01:00
Thomas Krijnen d46dfb6061 Work on serializers 2017-12-20 12:40:15 +01:00
Thomas Krijnen 830a03ffcd Schema agnostic iterator 2017-12-20 11:10:27 +01:00
Thomas Krijnen f4463d2935 Crazy factory implementation 2017-12-19 20:24:00 +01:00
Thomas Krijnen e3a7e6137d Update SvgSerializer.cpp 2017-12-19 14:58:56 +01:00
Xsoiou 01d261e168 SVG storey elevation (#315)
IfcConvert SVG does not generate <path d=""> for IfcSpace. #313
2017-12-19 12:10:19 +01:00
Thomas Krijnen a792a7e2c7 Two simultaneous IfcGeom implementations 2017-12-18 15:25:09 +01:00
civilx64 c4e56f670d Corrected name of *nix build script. 2017-12-18 15:17:21 +01:00
civilx64 4e28caaf8d Corrected name of *nix build script. 2017-12-18 15:17:21 +01:00
Xsoiou b7992d6a12 This closes #309 and it also fixes #310 2017-12-16 09:25:08 +01:00
Xsoiou efe765f71f Changed from http to https on ICU download 2017-12-16 09:25:08 +01:00
Thomas Krijnen 5eba7af791 Use struct instead of namespace to represent schema 2017-12-13 18:05:10 +01:00
Thomas Krijnen 761e9d7248 Continuing. 2017-12-13 13:58:58 +01:00
Thomas Krijnen 85515e904e Begin phasing out type enumeration in favour of declaration pointers 2017-12-13 13:16:49 +01:00
Thomas Krijnen 33fc2080df Runtime schema by name 2017-12-12 11:00:42 +01:00
Thomas Krijnen 33e1fa6a14 Update python wrapper 2017-12-11 17:20:22 +01:00
Thomas Krijnen e7ccf7269a Remove limited latebound schema representation in favour of full runtime schema representation 2017-12-11 15:46:57 +01:00
Thomas Krijnen 322dec6fd0 Update ifcconvert 2017-12-11 15:46:17 +01:00
Thomas Krijnen c099234796 Update ifcgeom 2017-12-11 15:07:40 +01:00
Thomas Krijnen 0468f12051 Address conflicts in ifcparse 2017-12-11 14:47:30 +01:00
Thomas Krijnen 988094b796 Resolving merge conflicts 2017-12-11 14:20:30 +01:00
Thomas Krijnen f36d27f7af Run codegen 2017-12-11 13:44:01 +01:00
Thomas Krijnen 3763ae18b2 Rough merge of schema runtime representation 2017-12-11 13:43:06 +01:00
Thomas Krijnen be5bd2e735 optional building storey argument added to setSectionHeight() 2017-12-11 11:19:15 +01:00
Thomas Krijnen ce782cc784 2d edges in svg serializer 2017-12-11 11:18:37 +01:00
tymokvo 39b0d11746 fixed missing bracket 2017-12-06 12:20:22 +01:00
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 95be422d4f Grep for command line arg name in ld stderr output 2017-11-25 19:15:25 +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 2647eacb74 test: Add {cylinders,ellipses}.ifc samples
A bare-bones IFC with four cylinders/ellipses. Used for SVG conversion
testing.
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 ea3318ae2e Don't rely on man for ld feature detection 2017-11-18 16:51:59 +01:00
Thomas Krijnen fb37899b26 Don't pass empty arguments to boost build 2017-11-18 16:50:38 +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
Stinkfist0 403f64a0d0 build-deps.cmd: fix boost build configuration for VS 2015. Fixes #279. [ci skip] 2017-11-05 16:18:00 +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
thorade 352b14f07d ignore *.py.bak files 2017-11-03 11:05:02 +01:00
thorade d7bcd00904 also ignoe files generated by PyCharm 2017-11-03 11:05:02 +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 a2b575eec8 update SWIG to latest release
#277
2017-10-30 10:26:27 +01:00
Matthis Thorade eb87d50548 update SWIG to latest release
because SWIG 3.0.7 is two years old and the intermediate releases all mention minor Python fixes.
http://www.swig.org/

I have used this for the last couple of builds and did not notice any negative effects.
2017-10-30 10:23:53 +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
Stinkfist0 b347a488af build-deps.cmd: update Boost to latest 1.65.1. Fixes #249. 2017-10-18 13:58:32 +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 34d04c0da7 Add test case 2017-10-06 15:41:39 +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 ada503dbf1 Fix #266 2017-10-02 10:22:57 +02:00
Thomas Krijnen 8d0c95a939 Fix typo 2017-09-26 21:16:44 +02:00
Thomas Krijnen 7ba0b04031 Set mmacosx-version-min to 10.9 for OCCT
See https://github.com/openMVG/openMVG/issues/316#issuecomment-332142824
2017-09-26 11:43:03 +02:00
Thomas Krijnen 688a652bc1 Fix #261 2017-09-25 14:57:49 +02:00
Thomas Krijnen d839238949 Yet another repetition for cyclic symbol references 2017-09-24 22:15:33 +02:00
Thomas Krijnen f91ac2b375 Add py 3.6.2 to build-all.py 2017-09-24 13:37:14 +02:00
thomas.guenet 8792a8d750 CMakeLists.txt: add icui18n library for linux compilation 2017-09-22 11:56:10 +02:00
Thomas Krijnen f981c43042 More robust file download 2017-09-18 14:51:58 +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 ee16deabe5 Fix #38 2017-09-10 17:15:04 +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
Stinkfist0 93c2ca6267 CMakeLists.txt: Add ws2_32.lib to OPENCASCADE_LIBRARIES on Win32 as OCCT might require this depending on the used version and build configuration. Closes #250. 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
Stinkfist0 b019ff6aed build-deps.cmd: fix URL for Git download (TortoiseGit doesn't contain Git) 2017-08-16 14:12:12 +02:00
Thomas Krijnen 4c6ca83528 Add option to build with OCCT 7.1 in nix build script 2017-08-13 13:13:26 +02:00
Thomas Krijnen 9ba5e8fd88 Add win build script occt patches 2017-08-12 10:53:28 +02:00
Thomas Krijnen 2e36793af2 win build script OCCT 7.1.0 2017-08-12 10:29:23 +02:00
Thomas Krijnen e3d2621ea9 Alternative for CTRL+C in win build script 2017-08-12 10:28:05 +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
Thomas Krijnen 132e5d5f6e Disable log_notice message on exceeding tolerance values 2017-08-09 17:00:41 +02:00
Thomas Krijnen 62794d4b07 Unused variable warning 2017-08-09 12:55:03 +02:00
Thomas Krijnen fd7f6e1f26 IfcIndexedPolyCurve 2017-08-05 12:39:15 +02:00
Thomas Krijnen b00acd3f67 only convert length unit if units are present in both files 2017-08-04 16:31:34 +02:00
Thomas Krijnen f12d8eeaa6 by_guid() and unicode in py2 2017-08-04 16:31:10 +02:00
Thomas Krijnen 85524170dd More advanced entity_instance.get_info() 2017-08-04 16:30:43 +02:00
Thomas Krijnen c67de4bbb3 Mark attributes as 'derived in supertype' also in getArgumentType() 2017-08-04 16:29:26 +02:00
Thomas Krijnen 36c52b3bea Update tests 2017-08-02 16:09:20 +02:00
Thomas Krijnen ceff8a8822 Fixes for IfcEntityInstanceData copy construction 2017-08-02 16:09:01 +02:00
Thomas Krijnen a58f23fae2 Missing introspection methods in Python 2017-08-02 16:08:07 +02:00
Thomas Krijnen b696df0da1 Missing semicolons in header 2017-08-02 16:07:30 +02:00
Thomas Krijnen 94224411a9 Recursive get_info() 2017-08-02 16:06:27 +02:00
Thomas Krijnen 5c7e7cab1a Raise IndexError 2017-08-02 16:05:56 +02:00
Thomas Krijnen 29323e4f74 Fix recursion in traverse() 2017-08-01 19:07:46 +02:00
Thomas Krijnen aa0a6aa5d1 Fix #178 2017-08-01 16:45:11 +02:00
Thomas Krijnen d10efe69cd Fix typo in test 2017-07-27 15:53:06 +02:00
Thomas Krijnen fb1fed247e Fix #243 2017-07-27 10:21:37 +02:00
Thomas Krijnen 59d7e0cad3 nix build script: fix compilation of boost.iostreams, disable USE_MMAP 2017-07-25 16:27:13 +02:00
Thomas Krijnen ae0afe2c0a mmap #22 2017-07-25 16:27:13 +02:00
Thomas Krijnen 3edb057178 Bring back id() to python wrapper. Fixes #241 2017-07-17 18:10:28 +02:00
Thomas Krijnen 04e3018f3c Use default logger 2017-07-17 18:09:49 +02:00
Thomas Krijnen f81616a6fb Narrow and wide unicode builds in nix build script 2017-07-03 20:42:18 +02:00
Thomas Krijnen f58539d6d8 Construct not only allocate token buffer 2017-07-03 20:39:40 +02:00
Thomas Krijnen 90bdf03f54 Disable exception 2017-07-03 16:38:04 +02:00
Thomas Krijnen 6e87a21806 Ignore some methods in wrapper to fix build 2017-07-03 15:43:56 +02:00
Thomas Krijnen d94eb9a96e IfcMaterialList in XML output 2017-07-03 15:18:07 +02:00
Thomas Krijnen ac5800326b Fix compilation on gcc 2017-07-03 14:42:08 +02:00
Thomas Krijnen 901ef57d60 Fix #180 2017-07-03 14:18:56 +02:00
Thomas Krijnen b604e5cf99 Fix #204 2017-07-02 19:57:10 +02:00
Thomas Krijnen 1e79eb535a Build comprehensive representation id. Fix #225 2017-06-28 15:59:03 +02:00
Thomas Krijnen 6f7afd4b2a Build comprehensive representation id. Fix #225 2017-06-28 15:24:49 +02:00
Thomas Krijnen a90936a7de Properly initialize parsed simple types 2017-06-24 21:35:38 +02:00
Thomas Krijnen 7c1cf6ebd0 Fix #233 2017-06-24 13:36:26 +02:00
Stinkfist0 7eb1346407 IfcConvert: prevent doing IfcFile::Init() "prematurely", e.g. before some additional program option parsing that might fail. 2017-06-23 14:12:07 +02:00
Stinkfist0 771b1f3d3c IfcConvert: consistent style for user error prints. 2017-06-23 14:12:07 +02:00
Stinkfist0 3fb96cad0b IfcConvert: make sure to delete temp file if no actual conversion occurs. Also fixes serializer memory leaks. Closes #199.
C
2017-06-23 14:12:07 +02:00
Thomas Krijnen 23beb096a0 Remove auto keywords 2017-06-20 19:47:53 +02:00
Thomas Krijnen 101ef69ae9 Fail serialize() if one of the faces cannot be mapped to IFC (2x3) 2017-06-20 18:55:52 +02:00
Thomas Krijnen e60202b738 Unique filter on IfcEntityList 2017-06-20 18:54:55 +02:00
Thomas Krijnen 1e8b1d9c9c traverse() as a global function rather than method on IfcFile 2017-06-20 18:54:30 +02:00
Thomas Krijnen a27e516011 Elided argument in ifcopenshell.file constructor 2017-06-20 18:53:39 +02:00
Thomas Krijnen 69c8b7c1c8 One more boost::blank() refactoring 2017-06-20 18:52:56 +02:00
Thomas Krijnen c25cff6bad Correct setting attributes on lazily loaded instances 2017-06-15 14:12:03 +02:00
Thomas Krijnen 48a61219f7 Fix #228 2017-06-14 12:42:38 +02:00
Stinkfist0 84813084d0 Fix/suppress signed-unsigned integer conversion warnings. 2017-06-05 19:53:10 +02:00
Thomas Krijnen 5e0da9725a ifcparse refactoring (#190)
Unify attribute containers, provide latebound attribute access on IfcBaseEntity, more basic tests on Travis
2017-06-05 17:26:58 +02:00
Thomas Krijnen 9a43658716 Correct verbosity check 2017-06-05 13:08:07 +02:00
Stinkfist0 f3f4c41f8d IfcConvert: add --no-progress option to suppress possible progress bar type of prints that use carriage return. 2017-06-05 11:41:55 +02:00
Stinkfist0 273c977f66 Remove extraneous spaces in geom filter description prints. 2017-06-05 11:41:55 +02:00
Stinkfist0 0adcb9ae20 IfcConvert --filter-file: Specifies a filter file that describes the used filtering criteria. 2017-06-05 11:41:55 +02:00
Thomas Krijnen 1751cf1c95 Generate example models on Travis 2017-06-05 11:29:23 +02:00
Thomas Krijnen 1704862d0d Correct test for when to reuse representation in iterator 2017-06-05 11:08:07 +02:00
Janus Troelsen d7c275e941 use boost's blank instead of none_t 2017-05-23 12:48:17 +02:00
Stinkfist0 1b9a28d799 CMakeLists.txt: fix Windows/MSVC lib search when only Debug versions of libs are found. 2017-05-20 20:19:15 +02:00
Stinkfist0 68b432f6c0 CMakeLists.txt: fix add_debug_variants() to work on Debug build. Re: #201 [ci skip] 2017-05-20 20:19:15 +02:00
Thomas Krijnen af2799acd4 Matrix multiplication in OCC rather than boost::ublas (re #211) 2017-05-20 19:50:10 +02:00
Thomas Krijnen c093dc0335 Merge pull request #211 from mitmadness/feature/hierarchy
Represent hierarchy in Collada files
2017-05-20 19:46:56 +02:00
Balleux Benjamin 834e05a01c Feature : For each parent element, include the type in the name if --use-element-types if used 2017-05-18 11:26:19 +02:00
Balleux Benjamin 4680298bee Clean : Remove debug logs 2017-05-16 16:34:50 +02:00
Balleux Benjamin be39f30029 Fix : fix build error 2017-05-16 15:54:26 +02:00
Balleux Benjamin 3919c1f32e Feature : Retrieve the full hierarchy
(merged from hierarchyDevelop branch)
2017-05-16 15:30:57 +02:00
Balleux Benjamin e02bbefa68 Clean : Removed debug logs 2017-05-16 15:20:30 +02:00
Balleux Benjamin 5c497c8f6c Fix : Handle the case where the first representation element has 0 parent 2017-05-16 15:01:55 +02:00
Balleux Benjamin 942d34ee39 Feature : Retrieve the full hierarchy. Fix the placement of the objects.
Check slab->HasObjectType before using slab->ObjectType
2017-05-16 14:27:36 +02:00
Balleux Benjamin 45ec08f840 feature (WIP) : retrieve the full hierarchy. The placement of several objects still be incorect 2017-05-16 11:27:45 +02:00
Balleux Benjamin be3dbce9f4 feature (WIP) : retrieve full hierarchy
Bug : the element are not at the right location
2017-05-15 17:45:05 +02:00
Stinkfist0 20c189c321 set-python-to-path.bat: fix for command for quoted filename 2017-05-13 14:03:15 +02:00
arzezniczak 97c5126a77 Authenticated proxy support for DownloadFile
DownloadFile subroutine gets credentials from system settings.
2017-05-13 14:02:42 +02:00
Balleux Benjamin ff64ce1e0e Fix : change wrong namespace 2017-05-11 14:02:34 +02:00
Balleux Benjamin 4f6e8a7d56 Fix : Change wrong namespace 2017-05-11 13:27:00 +02:00
Balleux Benjamin 93ece6b3ea Fix : Add missing include 2017-05-11 11:49:25 +02:00
Balleux Benjamin ced9d8c917 Merge branch 'feature/hierarchyDevelop' into feature/hierarchy 2017-05-11 11:22:11 +02:00
Balleux Benjamin ef0e9d9eb4 Feature : Handle every IfcSlabTypeEnum (3 were missing) and sort the floors by elevation 2017-05-09 15:55:37 +02:00
Balleux Benjamin 3c2fbcc4e1 Feature : Handle every IfcSlabTypeEnum (3 were missing) and sort the floors by elevation 2017-05-09 15:54:21 +02:00
Balleux Benjamin a6ffa7fc42 Fix : fill the storey property of an Element with NULL when we don't find any IfcBuildingStorey parent 2017-05-09 14:40:23 +02:00
Thomas Krijnen 0f825b7050 Fix missing import 2017-05-03 15:10:20 +02:00
Stinkfist0 845dd13870 Windows/MSVC: Fix OCCT deployment on VS 2017. 2017-05-03 14:13:24 +02:00
Thomas Krijnen d713b7e06a Limit retries for boolean op on OCCT 6.9 and higher 2017-05-03 12:07:10 +02:00
Tristan Zimpfer e3e4fba63a Clean of the double declaration of IfcSlabTypeEnum. 2017-04-26 10:59:07 +02:00
Tristan Zimpfer 78b904dfeb Differentiate slab types when option --use-element-types is used. 2017-04-26 10:28:38 +02:00
Thomas Krijnen 00c70fa8fb IfcOpenHouse fixes for IFC4 2017-04-25 17:38:59 +02:00
Thomas Krijnen d34c3b4b20 Example for #209 2017-04-25 16:53:35 +02:00
Thomas Krijnen 033075f809 Fix #208 2017-04-25 16:37:50 +02:00
Balleux Benjamin 1d8f6addf8 Get the information on the IfcSlab (floor or roof..) and put it in the element name.
To be cleaned
2017-04-25 16:27:14 +02:00
Balleux Benjamin 26a9167eea Add coments 2017-04-25 11:55:09 +02:00
Balleux Benjamin 5fae7a5992 Merge branch 'feature/hierarchy' of https://github.com/mitmadness/IfcOpenShell into feature/hierarchy 2017-04-25 10:13:37 +02:00
Balleux Benjamin 7edca081bf Raise an error when the option --use-element-hierarchy is used with a file different of .dae 2017-04-25 10:13:18 +02:00
Tristan Zimpfer 08e4d16f28 Modified the condition checking if the parent had changed so an object without parent isn't placed in a storey. 2017-04-21 18:05:35 +02:00
Tristan Zimpfer 470e8e772e Comments + conditions for sorting the deferred objects added. 2017-04-21 16:15:41 +02:00
Balleux Benjamin ea609af394 comments added 2017-04-21 16:02:13 +02:00
Balleux Benjamin 8ac18752b2 Remove temp file 2017-04-21 15:59:54 +02:00
Balleux Benjamin 95acd4c517 Clean : remove debug lines
Find the floor of an element in the IfcGeomIterator class
2017-04-21 15:49:34 +02:00
Balleux Benjamin 7ce795def3 clean WIP 2017-04-20 15:06:49 +02:00
Balleux Benjamin 8e4febecc0 clean : Remove the debug print
debug : don't display the name of the element in unity anymore
2017-04-19 16:38:35 +02:00
Balleux Benjamin 195979d4f0 Merge branch 'feature/hierarchy' of https://github.com/mitmadness/IfcOpenShell into feature/hierarchy
# Conflicts:
#	src/ifcconvert/ColladaSerializer.cpp
2017-04-19 15:09:59 +02:00
Balleux Benjamin ab0e47c55f Options added : --use-element-types and --use-element-hierarchy 2017-04-19 12:07:03 +02:00
Tristan Zimpfer 9f362853d6 Added a matrix for the parent node and a better id. 2017-04-19 11:48:52 +02:00
Tristan Zimpfer 79e1e0ec04 Hierarchy v1 2017-04-13 16:39:36 +02:00
Tristan Zimpfer f446f25cee Sort DeferredObject. 2017-04-12 17:28:29 +02:00
Balleux Benjamin a02b189f69 Bug Fix : the previous commit made the program crash when an object has no parent 2017-04-12 16:11:37 +02:00
Balleux Benjamin 8312853b99 add parent property to deffered objects 2017-04-12 15:49:05 +02:00
Balleux Benjamin be326e13ed Send Hierarchy data to the serializer 2017-04-12 14:56:00 +02:00
Balleux Benjamin a2aa2bf9eb Send hierarchy data to the serializer WIP 2017-04-12 14:38:54 +02:00
Balleux Benjamin b9e9bfeceb Handle errors : when an object has no parent 2017-04-12 13:36:12 +02:00
Stinkfist0 dd8ee915c3 ifcwrap/CMakeLists.txt: as PYTHONLIBS_FOUND and PYTHONINTERP_FOUND cannot seem to be trusted, perform further checks to see whether the packages were actually found or not.
E.g. one can doo set PYTHONHOME=C:/NoPythonHere
and when running CMake it will happily report:
-- Found PythonLibs: C:/NoPythonHere/libs/python34.lib
2017-04-12 10:39:41 +02:00
Stinkfist0 7fdbc9811d src/ifcwrap/CMakeLists.txt: use PYTHON_INCLUDE_DIRS instead of the deprecated PYTHON_INCLUDE_PATH 2017-04-12 10:39:41 +02:00
Stinkfist0 2edf867818 Use boost functions for string manipulation instead of std ones in order to silence char-int conversion warnings on VS 2017. 2017-04-12 10:39:41 +02:00
Stinkfist0 e4a7d2a149 Windows/MSVC build scripts: support for VS 2017 CMake generators, update Boost to 1.63.0, update ICU download to 58.2 in order to have VS 2107 download available, configure Boost using generic MSVC instead of specific version, make sure to 'git fetch' before 'git checkout <revision>'. 2017-04-12 10:39:41 +02:00
Balleux Benjamin 37f7fbecca Retrieve the type and the hierarchy of the IFC and write it in the .dae files 2017-04-11 17:26:30 +02:00
Alexandre Lemire 0f993b32f4 Fix generation of IfcOpenHouse.ifc which doesn't have its ground representation. See #200 2017-04-07 12:29:38 +02:00
Thomas Krijnen f71ee35f57 More 'tolerant' to tolerances higher than the modeling precision 2017-04-03 14:55:34 +02:00
Thomas Krijnen 1856c499b7 Fix misalignment between enum and boost::variant. See #200 2017-04-03 11:41:14 +02:00
Thomas Krijnen 06cad59fa2 Fix missing python module installation 2017-03-24 10:11:44 +01:00
Thomas Krijnen 8e69f84430 Trigger license redetection 2017-03-19 09:47:28 +01:00
Thomas Krijnen 9e3fe84c66 Trigger license redetection 2017-03-19 09:46:07 +01:00
Thomas Krijnen 9ad68db0dc set OCE_VERSION, executable flags in win build script 2017-03-12 11:38:23 +01:00
Thomas Krijnen 40f3447ad1 Update dependency versions in nix build script 2017-03-09 14:36:00 +01:00
Thomas Krijnen c8cc8ab1c8 Resolve python library linking issues on OSX 2017-03-09 13:59:54 +01:00
Thomas Krijnen 4faa66f9b8 Fix for python 2.7 2017-03-09 12:04:07 +01:00
Thomas Krijnen 5705f24f3e python: make logging import conditional in case time is not built 2017-03-09 11:47:54 +01:00
Thomas Krijnen 52d035d09a python: don't import platform module as it may depend on select which might be unavailable 2017-03-09 10:16:22 +01:00
Stinkfist0 921e343187 Fix assertion. Closes #192 2017-03-08 09:31:51 +01:00
Thomas Krijnen 50ea73a28f Update IfcConvert help text 2017-03-04 14:16:54 +01:00
Stinkfist0 3275119d1d TokenFunc::asStringRef: protect against null token. 2017-03-04 13:54:19 +01:00
Stinkfist0 026b4853a2 IfcConvert: single point for IFC file parsing and potential parsing error reporting. 2017-03-04 13:54:19 +01:00
Stinkfist0 cd132473f5 IfcConvert: instead of global --traverse option provide --include+ and --exclude+ options that control traversal on per filter basis. 2017-03-04 13:54:19 +01:00
Stinkfist0 06c1ea9d2c Doc tweaks [ci skip] 2017-03-04 13:54:19 +01:00
Stinkfist0 b058647d46 IfcLogger: convenience shorthands Notice(), Warnings() and Error() 2017-03-04 13:54:19 +01:00
Stinkfist0 8e44290341 string_arg_filter: make sure the argument type is string 2017-03-04 13:54:19 +01:00
Stinkfist0 5d7b392415 IfcGeomIterator: use fully qualified symbol for filter_t to fix SWIT code generation + fix getObject() 2017-03-04 13:54:19 +01:00
Stinkfist0 0383221d00 IfcConvert: print information about the used filters. 2017-03-04 13:54:19 +01:00
Stinkfist0 678d422ec8 Fix errors in rebase merge. 2017-03-04 13:54:19 +01:00
Stinkfist0 eade74c919 Fix --traverse --exlucde=<entities|layers> + clean up duplicate code. filter::traverse_match: dynamic_cast instead of static_cast as the decomposing entity is not guaranteed to be IfcProduct 2017-03-04 13:54:19 +01:00
Stinkfist0 9074f25e93 Fix --exclude=arg when --traverse used also. 2017-03-04 13:54:19 +01:00
Stinkfist0 4b5790e83a IfcConvert: minor cleanup + fix guid exclusion filter's value population. 2017-03-04 13:54:19 +01:00
Stinkfist0 470b08cd04 IfcConvert: output regular prints to cout instead of cerr. 2017-03-04 13:54:19 +01:00
Stinkfist0 d88c93a150 Cleaning up geom filters. 2017-03-04 13:54:19 +01:00
Stinkfist0 7101ac22c8 Refactor template class arg_filter into string_arg_filter instead, support for IfcProxy.Tag (untested, did not find suitable test input yet). 2017-03-04 13:54:19 +01:00
Stinkfist0 1b7d38a56d support for IfcConvert -include=arg <Description|Tag> (for IfcElement.Tag, not yet for IfcProxy.Tag). 2017-03-04 13:54:19 +01:00
Stinkfist0 de5864fc72 IfcConvert: change syntax of --<include|exclude>=<names|guids> to --<include|exclude>=arg <Name|GlobalId>. The plan is to support arbitrary arguments in the future. 2017-03-04 13:54:19 +01:00
Stinkfist0 195d68cd0a Generalize IfcGeom::Iterator filtering and move make the filter specification external to the Iterator. 2017-03-04 13:54:19 +01:00
Stinkfist0 d8a11dd096 Refactoring and cleaning up geom iterator filtering. 2017-03-04 13:54:19 +01:00
Stinkfist0 63b0488909 Implement filtering created geometry by layer assignments. 2017-03-04 13:54:19 +01:00
Stinkfist0 3abee03b9b Filtering by entity GUID and layer name w.i.p. 2017-03-04 13:54:19 +01:00
Stinkfist0 f1709dc71a IfcConvert/IfcGeom: Possibility to include and exclude simultaneously by type and name, w.i.p. 2017-03-04 13:54:19 +01:00
Carles 6b2c8ad23e Update vs-cfg.cmd
prepend win/utils path instead of append it.
It should force the build-deps.cmd to call 7za.exe within utils and not any other old-version that users might already have. 
Discussed in https://sourceforge.net/p/ifcopenshell/discussion/1782717/thread/53803197/
2017-02-23 15:48:37 +01:00
Thomas Krijnen 8ce4bbdf61 Adaptive tolerance boolean ops 2017-02-16 15:54:34 +01:00
Thomas Krijnen e2cf5f4826 Typo in build script 2017-02-16 15:53:58 +01:00
Thomas Krijnen 332a9a571f Special case the normal at the poles of a spherical surface 2017-01-24 14:56:28 +01:00
Thomas Krijnen ac9505506c Extend IfcGeomServer with calculated quantities 2017-01-22 16:09:14 +01:00
Thomas Krijnen 257c28d450 Take into account IfcTrimmedCurves with unspecified preference 2017-01-22 11:06:36 +01:00
Thomas Krijnen f95ad29c7a Extra check for single-face IfcConnectedFaceSets. Fixes #181. 2017-01-19 10:42:03 +01:00
Thomas Krijnen 93c2f93c44 Download PCRE from sourcefore in nix build script. Fixes #182 2017-01-19 10:24:09 +01:00
Stinkfist0 77d53429e3 Make sure to link ifcwrap to Boost libs + fix integer conversion warning. 2017-01-14 20:13:46 +01:00
Stinkfist0 fa76aa9bb0 IfcConvert: add --unicode=utf8|escape when UNICODE_SUPPORT enabled. 2017-01-14 20:13:46 +01:00
Stinkfist0 f0e07f3447 Add status prints for writing XML output. Re: #122 2017-01-14 20:13:46 +01:00
Stinkfist0 80f0ff688d IfcConvert: add --model-ofset x;y;z option. Remove SerializerSettings::CENTER_MODEL as unneeded. 2017-01-14 20:13:46 +01:00
Stinkfist0 222cbe73d3 Use unnamed enum instead of static const member variable for SerializerSettings::DEFAULT_PRECISION in order to fix compilation on GCC & Clang. 2017-01-14 20:13:46 +01:00
Stinkfist0 ecff54c480 IfcConvert --precision option.
Sets the decimal precision to be used to format floating-point values, 15 by default.
Use a negative value to use the system's default precision (should be 6 typically).
Applicable for OBJ and DAE output. For DAE output, value >= 15 means that up to 16 decimals are used,
and any other value means that 6 or 7 decimals are used.
2017-01-14 20:13:46 +01:00
Stinkfist0 2d58a1bc7c Separate serialization-specific settings from IteratorSettings into its own class, SerializerSettings. 2017-01-14 20:13:46 +01:00
Thomas Krijnen 5667f3f94a build script changes for boost 2017-01-09 13:10:01 +01:00
Jelle Feringa 5d6160b47a log exceptions on get_info method
these exceptions currently are actively being hidden, which is
intransparent / could make debugging challenging

improved formatting tot pep8
2017-01-04 10:26:04 +01:00
Stinkfist0 37905c6725 Windows/MSVC: support spaces in the IfcOpenShell build directory's path. re: #171 2017-01-01 18:16:56 +01:00
aahoo 99bde93af5 adds get_info method for class #resolves #175 2017-01-01 18:15:55 +01:00
Thomas Krijnen e6ff78fa29 Size() -> Length() 2016-12-10 15:39:20 +01:00
Thomas Krijnen c08aa3216d Fix #163 Disallow narrow IfcPolygonalBoundedHalfSpace 2016-12-10 14:11:01 +01:00
Thomas Krijnen da0b350378 Fix #140 2016-12-09 16:51:03 +01:00
Thomas Krijnen 4354361a13 More elaborate wire ordering check and shell sewing code (#147) 2016-12-09 16:40:14 +01:00
Thomas Krijnen 51409aff8f Fix #87 2016-12-09 16:33:06 +01:00
Thomas Krijnen c94ed73b8d Incorporate console into main app, fallback to QPlainTextEdit, some styling 2016-11-28 17:46:57 +01:00
jakob-beetz 90e4f21f29 Interactive scripting pane added to pyQt viewer geom.app 2016-11-28 17:46:57 +01:00
jakob-beetz 3ba2f781d8 added a property panel tab to the PyQt geom.app viewer that shows all properties from IfcPropertySets attached to the currently selected object 2016-11-28 17:46:57 +01:00
Ali Kämäräinen aec20057c7 Fix build when USE_IFC4=1 (#160) 2016-11-18 12:43:14 +01:00
Thomas Krijnen 5c107eb165 Merge pull request #161 from IfcOpenShell/aothms-travis-2x3-4
Build Ifc2x3 and Ifc4 on travis
2016-11-18 12:42:50 +01:00
Thomas Krijnen 3d1ea31098 Build Ifc2x3 and Ifc4 on travis 2016-11-18 12:22:02 +01:00
Thomas Krijnen 3d24b67146 Fix #157 2016-11-17 16:05:28 +01:00
Thomas Krijnen 18c87b515b Install ifcopenshell binaries in nix build script 2016-11-13 20:27:22 +01:00
Thomas Krijnen 11a95e7045 Merge pull request #156 from aothms/nix_python_build_script
Nix python build script
2016-11-13 13:45:12 +01:00
Ali Kämäräinen 714a365942 IfcConvert/IfcGeom --traverse option (#159)
geometry filtering option for including/excluding decomposition and containment of filtered entities.
Usage example: IfcConvert Duplex_A_20110907.ifc Level1.dae --include --traverse --names "Level 1"
2016-11-13 13:44:38 +01:00
Thomas Krijnen 739bbcc744 Don't run build script on travis, doesn't complete in under 50m0s 2016-11-11 14:55:07 +01:00
Thomas Krijnen 6a275d04b9 Don't export TARGET_ARCH in nix build script 2016-11-09 11:12:29 +01:00
Thomas Krijnen e8ae491dc3 Type hint from schema when encountering empty aggregate. Fixes #127 2016-11-08 17:24:08 +01:00
Thomas Krijnen 8e2f528a99 Fix python build script 2016-11-06 19:07:25 +01:00
Carmen Fan 00215867c0 Fix matrix multiplication ordering for nested mapped items (#144) 2016-11-06 16:18:30 +01:00
Thomas Krijnen 1e86a31b81 Add nested_mapped_item.ifc test case, based on acad2010_objects.ifc 2016-11-06 16:15:52 +01:00
Ali Kämäräinen f0c4ce5753 Add layer information (IfcPresentationLayerAssignment) to IfcConvert's XML output. Closes #141 (#149)
Add layer information (IfcPresentationLayerAssignment) to IfcConvert's XML output. Closes #141
2016-10-31 18:21:25 +01:00
Thomas Krijnen ea514e9528 Fix #148 catch errors when computing model bounding box from product placements. 2016-10-25 10:11:14 +02:00
Thomas Krijnen 229b123798 Fix potential segfault in hierarchy helper 2016-10-09 12:45:17 +02:00
Thomas Krijnen 86c9d7074b Fix traversal of type relationships in IFC4 XML output 2016-10-09 12:44:37 +02:00
Thomas Krijnen bc000fcbab Fix additional warnings identified in #139 2016-10-09 12:42:39 +02:00
Ali Kämäräinen a171b2b9b0 Couple warning fixes (#139)
* Use -Wno-tautological-constant-out-of-range-compare for Clang (these warnings come from the sanity checks in generated IfcXXX files).

* Remove unused variable and typedefs + suppress uint->bool conversion warnings (MSVC) + add note about Clang in README

* MSVC uint->bool convesion warning fixes when IFC4 is defined
2016-10-09 12:39:47 +02:00
Thomas Krijnen 8a92e1a766 Speed up geometry generation in ifcopenshell.geom.application by using iterator pt2. 2016-09-22 13:45:32 +02:00
Thomas Krijnen efd6eb7f97 Speed up geometry generation in ifcopenshell.geom.application by using iterator 2016-09-22 13:40:39 +02:00
Thomas Krijnen 7ed98869d2 Update ifcopenshell.geom.app for pyocc-0.16.5
https://github.com/tpaviot/pythonocc-core/commit/3d7b9745359b436b4144105f7e17aa0040acb8c6
2016-09-13 14:05:28 +02:00
Karl-Philipp Richter 72d8b5377c ported nix/build-all.sh to python in order to be able to provide any feedback
for the user at all (shell scripts systematically are working against providing
any useful user feedback, so the port is the only option)
2016-09-12 15:50:39 +02:00
Thomas Krijnen 8efd9757b7 Check for null shapes among layer set slicing results 2016-09-01 15:13:48 +02:00
Thomas Krijnen a0f5a422e2 Fix #128. XML serializer. HasPropertySets is an optional attribute. 2016-09-01 14:47:27 +02:00
Thomas Krijnen 8a950b1475 Fix compilation of ifcopenshell-python in nix build script 2016-09-01 12:53:32 +02:00
Thomas Krijnen d2ce8d70b1 Add template disambiguation to make g++ happy 2016-09-01 12:42:12 +02:00
Thomas Krijnen ac1a8f6d16 Add types and placement to XML output 2016-09-01 11:59:43 +02:00
Thomas Krijnen 7883953290 Do not find PCRE in default paths on Windows 2016-09-01 11:40:49 +02:00
Ali Kämäräinen 64dc2ea95c Windows/MSVC + OCCT 7.0.0 (#124)
* Windows/MSVC build scripts: option to build and use official Open CASCADE instead of the community edition.

* Fix C4800 warnings ("'Standard_Boolean': forcing value to bool 'true' or 'false' (performance warning)") + unnecessary integer cast.

* build-deps.cmd: fix OCCT download

* Fix MSVC linking against OCCT 7.0.0. Example executables fail still, needs research.

* occt-V7_0_0-9059ca1_CMakeLists.txt: add_definitions(-DHAVE_NO_DLL) in order to fix static linking to OCCT. Mark IfcOpenShell patches in the OCCT patch files for clarity.

* Patch OCCT in order to fix compliaction when HAVE_NO_DLL is defind. Clean up IfcOpenSHell's linker warnings by defining HAVE_NO_DLL.

* CMakeLists.txt: remove linking to the newly added OCCT libs, these are not needed when HAVE_NO_DLL is defined.

* cmake/CMakeLists.txt: make add_debug_variants() function to handle filenames/paths also. Apply the coding conventions while at it. Fixes #123.

* Patch OCCT's OpenGl_PrimitiveArray.cxx and XCAFDoc_GeomTolerance.cxx in order to fix Debug build. Do not trigger OCCT rebuild each time build-deps.cmd is ran.

* build-deps.cmd: fix OCCT file patch copy.

* Non-MSVC compiler: use -Wextra, suppress/fix -Wignored-qualifiers warnings.

* build-deps.cmd: do not check return values of copy commands as they seem not to be fully reliable.
2016-09-01 11:28:17 +02:00
Ali Kämäräinen e064098f84 Build instructions and PCRE lib dir (#120)
* CMakeLists.txt: show fatal error if PCRE not found if COLLADA_SUPPORT is on.

* Compiling on *nix instruction tweaks.
2016-08-22 11:45:37 +02:00
Bernd Hahnebach 8dadb71648 Add OpenCollada to travis and fix cmake (#119)
* travis: collada support

* travis: opencollada, specify pcre library
2016-08-15 13:14:15 +02:00
Thomas Krijnen 9d757e1b3c Correct typo https://github.com/IfcOpenShell/IfcOpenShell/pull/114/files#r74275264 2016-08-13 10:51:04 +02:00
Thomas Krijnen 92032b6e3b Add travis status 2016-08-09 14:12:12 +02:00
Thomas Krijnen 202b226ea0 Silence compiler warning when without ICU 2016-08-09 14:09:44 +02:00
Bernd Hahnebach 1e8c7ef7f0 Travis 2016-08-09 14:03:26 +02:00
Thomas Krijnen 59035e7ce2 Merge pull request #114 from aothms/cmake_improvements
Cmake improvements: LINK_DIRECTORIES and OCCT 7
2016-08-08 13:40:38 +02:00
Thomas Krijnen 2c332199b1 Merge pull request #115 from aothms/tridify_ifcgeom_dll
Dllimport/export for IfcGeom. Closes #77
2016-08-08 13:40:09 +02:00
Thomas Krijnen ecf67fe939 IFC_PARSE_API for IfcInvalidTokenException after merge 2016-08-08 13:39:43 +02:00
Thomas Krijnen f1099fc3b1 Merge branch 'master' into tridify_ifcgeom_dll
# Conflicts:
#	cmake/CMakeLists.txt
2016-08-08 10:56:06 +02:00
Thomas Krijnen 16e8fff9ca virtual dtor 2016-08-08 10:41:51 +02:00
Stinkfist0 0f857283e8 CMakeLists.txt: append possible extra libraries to OPENCASCADE_LIBRARIES before the variable is used for any target. 2016-08-08 01:40:26 +03:00
Thomas Krijnen 1def5db7e4 Detect OCCT7 and set -std=c++11 accordingly. 2016-08-07 10:38:18 +02:00
Thomas Krijnen e9bd18fd4b Don't search default directories. Use absolute paths to specify libraries. 2016-08-07 10:37:29 +02:00
Stinkfist0 fb98275f50 Typo fix. 2016-08-06 19:08:13 +03:00
Stinkfist0 97a62f45d0 Fix IfcGeomWrapper.i and IfcParseWrapper.i 2016-08-06 18:19:27 +03:00
Stinkfist0 4ebee68736 Ifc2x3enum.h: fix header inclusion. 2016-08-06 13:44:35 +03:00
Ali Kämäräinen a26253321f Bash on Ubuntu on Windows instructions, readme and cmake improvements (#113)
* README.md: add note about Visual C++ Build Tools and Bash on Ubuntu on Windows. Enhance the Compiling on *nix instructions.

* Fix newline.

* README.md tweak

* CMakeLists.txt: remove CHECK_ADD_OCE_OCC_DEF INCLUDE() for good as these are not needed any more at all (OCE codebase also checked and no signs of these).
2016-08-06 10:45:29 +02:00
Thomas Krijnen 4b90e618b0 Add warning #109 2016-08-04 11:47:14 +02:00
Thomas Krijnen 21b35767ba Fix #109 2016-08-02 15:53:41 +02:00
Thomas Krijnen e6fbfee766 Check for existence of representation identifier in python wrapper create_shape 2016-08-02 15:44:42 +02:00
Stinkfist0 3cba5e6e94 Rename BUILD_SHARED_LIBS project-wide precompiler definition to IFC_SHARED_BUILD 2016-07-20 22:59:19 +03:00
Stinkfist0 6d6e7c2982 Unify IfcParse's dllimport/export macros with IfcGeom. 2016-07-20 22:49:32 +03:00
Thomas Krijnen fd4086aa8d Report errors in string escape sequences more verbosely 2016-07-19 16:41:36 +02:00
Ivano Ras cd2b0c3a05 fix #106. (#107) 2016-07-19 16:31:37 +02:00
Ivano Ras 42067de44c use union to remove warning (issue 105). (#108) 2016-07-19 16:29:01 +02:00
Thomas Krijnen 240133515a Unify usage of spaces in Python library code 2016-07-18 15:53:20 +02:00
Thomas Krijnen b7f23ee701 Implement option to get generic inverses from Python 2016-07-18 14:47:32 +02:00
Ali Kämäräinen 4a85e5e7a5 MSYS build scripts and instructions (#99) and warning fixes
* Preliminary MSYS2 + MinGW build scripts and instructions.

* CMakeLists.txt: MinGW tweaks, enforce C++03, suppress warnings for now.

* Fix some GCC warnings.

* Fix unused parameter warnings coming from Ifc*.h.

* Fix warning regarding unreachable code (++jt) on MSVC.

* Add IfcParse_EXPORT for IfcInvalidTokenException

* Fix potentially uninitialized pointer variables.

* Note about OpenCASCADE cyclic dependencies fix.

* GCC warning fix: don't generate 'current_enum' variable that is only set and not used for anything ever

* Work around -Wmaybe-uninitialized warnings about boost::optional constructs. Also prevent passing of negative values for --bounds.

* Remove unused variable.

* CMakeLists.txt: ENABLE_BUILD_OPTIMIZATIONS for GCC (simply enforce -03)
2016-07-15 05:49:32 +02:00
Stinkfist0 3a507ca061 Code doc tweak 2016-07-11 22:41:18 +03:00
Stinkfist0 6bcabfd567 Dllimport/export for IfcGeom. Closes #77 2016-07-11 22:37:50 +03:00
Thomas Krijnen 435eb7ae10 Update python module install script 2016-06-28 15:48:58 +02:00
Thomas Krijnen 17e153d0c5 Fix rename conflict after merge 2016-06-22 15:52:31 +02:00
Thomas Krijnen aebb9e324b Geometry serialization (#71)
Serialize geometry to IFC instances directly from a TopoDS_Shape
2016-06-22 15:03:18 +02:00
Thomas Krijnen 90ad3a4a93 Merge pull request #97 from aothms/dynamic_lib_fixes_2
Dynamic lib fixes
2016-06-22 14:57:16 +02:00
Thomas Krijnen 478bda30bc Install both libraries. Force IfcGeom to static on Windows. Correct IfcParse linkage. Update IfcMax 2016-06-22 14:54:55 +02:00
Thomas Krijnen 69535800b5 Do no silently drop invalid faces from IfcConnectedFaceSets 2016-06-21 11:27:59 +02:00
Thomas Krijnen ee2303d965 Support for IfcExtrudedAreaSolidTapered 2016-06-21 11:25:10 +02:00
Thomas Krijnen b792aba95f Support for *BrepWithVoids 2016-06-21 11:19:51 +02:00
Thomas Krijnen 8f55aa732d IfcParameterizedProfileDef.Position and IfcSweptAreaSolid.Position optional in IFC4 2016-06-21 11:18:16 +02:00
Thomas Krijnen 2c2be389fb Fix header parsing 2016-06-21 11:11:16 +02:00
Thomas Krijnen 62a0f21a57 Fix #94 2016-06-20 11:34:13 +02:00
Ali Kämäräinen 3c418e8e0a Windows batch script enhancements (#88)
* Make possible to invoke run-cmake.bat, build-ifcopenshell.cmd (now bat), install-ifcopenshell.cmd (now bat) directly from File Explorer or command prompt without VS env vars set, if BuildDepsCache file exists, by utilizing CMake's --build functionality. Do not delete CMakeCache.txt always now in order to keep the build options consistent.

* win/readme.md tweaks + make the line width smaller

* Windows batch files: use the last modified BuildDepsCache. Show an error if GEN_SHORTHAND does not exist.
2016-06-17 22:30:33 +02:00
Johannes Obermayr ea6fbc77dd Bring back logic for BUILD_SHARED_LIBS.
Also remove C++11 code.
2016-06-14 20:30:02 +02:00
Thomas Krijnen be10bc46ca More elaborate error reporting 2016-06-12 11:22:08 +02:00
Thomas Krijnen f4fd3a5ca1 Compiler warnings 2016-06-12 10:43:28 +02:00
Ali Kämäräinen 685717b8b8 Fix build of IfcWrap (#90) 2016-06-09 22:49:00 +02:00
stgatilov 8725c66306 Performance improvement of IfcParse tokenizer (#82)
* Applied MSVC tabify to IfcParse.cpp/h.

* Now Argument base class has throwing implementation for each conversion operator (removed those from derived classes).

* Added NullArgument class for the case when null arguments appear after setting elements.

* Now operator tokens are handled just like any other token.

* Refactoring: Token is now a struct with good fields, not a nameless pair.

* Now end position of token is set at its construction.

* Now type of token is determined on construction, as* function simply check stored type.

* Now int-s, float-s and some etc are parsed when token is created.

* Implemented simple way to remove spaces in parsing.

* Tokens are now created without allocations.

* Call RemoveTokenSeparators once for every token.

* Added temporary std::string object in lexer (for optimization purposes).

* Reimplemented asString without allocations.

* Parsing keywords without allocations.

* Added checks for type to tokenFunc::as*** functions.
2016-06-09 18:25:50 +02:00
Thomas Krijnen cbbdb61a0c Merge pull request #89 from aothms/dynamic_lib_fixes
Dynamic lib fixes (#79)
2016-06-09 10:51:05 +02:00
Thomas Krijnen b3167cf1e6 build script simplification 2016-06-09 10:48:43 +02:00
Thomas Krijnen 44f785cce0 Merge branch 'master' into dynamic_lib_fixes
# Conflicts:
#	cmake/CMakeLists.txt
2016-06-09 10:46:58 +02:00
Thomas Krijnen 8e998ec7db MSYS2 Mingw64 compilation (#84) 2016-06-09 10:39:27 +02:00
Thomas Krijnen fc50e6ac23 Revert change adding additional argument to ColladaSW::Scene constructor 2016-06-05 14:41:17 +02:00
Thomas Krijnen 815ed07192 MinGW fixes and warnings 2016-06-05 14:03:03 +02:00
Thomas Krijnen 009870135f Merge branch 'pr/78' into mingw 2016-06-05 14:01:55 +02:00
Stinkfist0 dbc59fe346 Add .vscode to ignored files 2016-06-03 10:03:58 +03:00
Stinkfist0 08aeb80f58 Make set-python-to-path.bat callable from outside locations 2016-06-02 14:39:29 +03:00
Stinkfist0 7f2729c956 .gitignore: ignore __pycache__ in general 2016-06-02 14:36:55 +03:00
Stinkfist0 4d6e25fb69 Also mark the full URL source for Ifc2x3* files 2016-06-02 14:36:09 +03:00
Stinkfist0 37aadcbfbf Update the source information for Ifc4* files 2016-06-02 14:20:12 +03:00
Stinkfist0 74a3f131be Make IfcException's dtor and what() virtual 2016-05-31 17:08:39 +03:00
Stinkfist0 77b72a9dde IfcException.h: suppress C4275 warnings 2016-05-31 14:45:22 +03:00
Stinkfist0 c644ffbe5e Move wildcard_string_to_regex() from IfcParse to IfcGeom as it's not really related to parsing IFC at all. 2016-05-31 14:04:44 +03:00
Stinkfist0 aa03da20a8 Bump up non-MSVC compiler's warning level to a level somewhat similar to MSVC. 2016-05-30 17:44:36 +03:00
Stinkfist0 42acc7224c Add couple missing IfcParse_EXPORTs + add a missing license information 2016-05-30 17:12:53 +03:00
Stinkfist0 53fadd9808 CMakeLists.txt: document usage of IFCDIRS. 2016-05-30 15:29:45 +03:00
Thomas Krijnen 4afc568a41 Remove unsupported feature from IfcGeomServer 2016-05-30 14:14:45 +02:00
Stinkfist0 906fefaf35 Fix installation of IfcParse DLL. 2016-05-30 15:12:07 +03:00
Stinkfist0 90a2c445ea Fix broken build of the project when BUILD_SHARED_LIBS=1 2016-05-30 13:54:24 +03:00
Stinkfist0 cae24a9492 Fix warnings regarding unused variables. 2016-05-30 13:44:03 +03:00
Stinkfist0 8b3d581131 README: IFC4 -> IFC4 Add1 2016-05-30 13:20:03 +03:00
Stinkfist0 c13eb9e131 The usual way of doing MSVC dllimport/export. Add a warning print if building as DLL against the static VC-runtime. 2016-05-30 01:09:39 +03:00
Fredounet 3b169219af MSYS2 Mingw64 compilation. Compilation successful considering everything but the following:
- IFC4 (only IFC2x3 tried; should work)
- VLD
- IfcMax
- shared libraries
2016-05-29 17:58:03 +01:00
Thomas Krijnen 83243ec514 IFCPARSE_STATIC_DEFINE only when BUILD_SHARED_LIBS is not set 2016-05-29 14:18:18 +02:00
stgatilov b5c4eb3b6f IfcParse dynamic linking, IFCPARSE_NO_REGEX, fixes for three memory leaks (#76)
* CMake: moved setting link directories before all the projects.

* Added IfcParse_Export header for declaring export macro.

* Added IFCPARSE_STATIC_DEFINE macro to all projects.

* Added include for export macro to swig file.

* Added IfcParse_EXPORT macro for all classes in headers generated by express parser.

* Allow removing boost.regex dependency by defining macro IFCPARSE_NO_REGEX.

* Fixed bug in deletion of ICU converter.

* Added export macro to most of the classes across headers

* Fixed memory leak: delete nested IfcAbstractEntity in EntityArgument.

* Fixed memory leak in destructor of IfcWritableEntity (args values).
2016-05-29 14:12:57 +02:00
Thomas Krijnen a298903fdd IfcGeomServer settings 2016-05-28 16:08:31 +02:00
Fredounet ccb24948df Merge pull request #1 from IfcOpenShell/master
Fresh-Upgrade-1
2016-05-28 09:43:59 +01:00
iNEHCi 5bdb4ce668 Add IfcReinforcingBar/IfcSweptDiskSolid generation example 2016-05-27 10:18:39 +02:00
Thomas Krijnen 9909e2f7e2 Don't emit OBJ vertex normal if absent (e.g --weld-vertices) 2016-05-24 15:01:34 +02:00
Thomas Krijnen 38d1ec7a78 #28 2016-05-24 13:50:50 +02:00
Thomas Krijnen 85ddae1228 Do not set wire tolerance prior to creating face 2016-05-24 12:51:00 +02:00
Thomas Krijnen 06c3f8d6a9 Record conversion status on IfcFaceBasedSurfaceModel 2016-05-24 12:50:32 +02:00
Thomas Krijnen b04ca74308 Derive minimal face area from modeling precision 2016-05-24 12:50:05 +02:00
Thomas Krijnen 7c0944e43b Defer pythonOCC imports in order not to break if unavailable 2016-05-19 13:31:54 +02:00
Thomas Krijnen a1c660f4ab Fix static linking 2016-05-19 11:34:04 +02:00
Thomas Krijnen 2a5974fde1 Remove superfluous error message 2016-05-18 17:28:58 +02:00
Thomas Krijnen e2ffd0b6d6 Fix IFC4 compilation 2016-05-18 17:15:44 +02:00
Thomas Krijnen 9bff4876c5 Don't apply rpaths on windows due to possible path separator conflicts 2016-05-15 15:51:12 +02:00
Johannes Obermayr 42188904af Fixes to build on openSUSE/Packman. (#67)
- Support different BINDIR, INCLUDEDIR and LIBDIR on install
- Take right python dir on x86_64 arch
- Fix build against Boost >= 1.58
- Make it possible to build libIfcGeom shared to reduce size of dependent binaries
- Fix INSTALL_RPATH
- Fix some more compiler warnings
2016-05-15 15:47:21 +02:00
Lars Moastuen 414d7bb810 OBJ precision and log messages
* Fixes #68: Increase precision in OBJ files (regression in commit 43f5d44)
* Add some verbose logging of a few geometry errors
2016-05-13 12:59:00 +02:00
Thomas Krijnen 01269e5dd5 Fix missing include for debug build 2016-05-11 14:01:38 +02:00
Ivano Ras 0253c1ddbe Extended error logging
Fixes #33
2016-05-11 10:56:40 +02:00
Thomas Krijnen 3f5d30f497 Merge pull request #65 from iras/nested_argument_list_bug
separated nested argument lists to avoid an error when compiling with…
2016-05-05 11:03:38 +02:00
iras 3d2ab25175 separated nested argument lists to avoid an error when compiling with gcc. 2016-05-05 08:09:45 +01:00
Thomas Krijnen d4dc933b99 Qualify auto keyword 2016-05-04 17:30:31 +02:00
Thomas Krijnen d54c1cdc9c Remove compiler warning 2016-05-03 16:32:36 +02:00
Thomas Krijnen c848a7dbe0 remove redundant type attribute on latebound entity instance 2016-05-03 11:24:26 +02:00
Thomas Krijnen 60cf4ab757 Additional check pertaining to face surfaces 2016-05-03 11:22:15 +02:00
Thomas Krijnen 2c3fa89dd0 Preprocessor consistency 2016-05-03 11:21:39 +02:00
Thomas Krijnen e9c7cf235b Fix compiler warning 2016-05-03 11:19:46 +02:00
Thomas Krijnen fefa8a0563 option to pass settings to pyqt4 app 2016-05-03 11:05:46 +02:00
Thomas Krijnen 04acfe1169 Fix #63 2016-05-03 11:01:47 +02:00
Thomas Krijnen 0e25787df3 Merge pull request #64 from aothms/layerset_slicing
Layerset slicing
2016-05-02 16:14:14 +02:00
Thomas Krijnen 3c3bee71d1 Don't process mapped items in case of material layer associations 2016-05-02 16:11:06 +02:00
Thomas Krijnen 37f0e09947 Fix compiler warnings 2016-05-02 15:56:08 +02:00
Thomas Krijnen 39e26dff46 Merge branch 'master' into layerset_slicing
# Conflicts:
#	src/ifcconvert/IfcConvert.cpp
#	src/ifcgeom/IfcGeom.h
#	src/ifcgeom/IfcGeomFunctions.cpp
#	src/ifcgeom/IfcGeomIteratorSettings.h
2016-05-02 15:13:30 +02:00
Thomas Krijnen 2f129556fd Merge pull request #47 from aothms/performance_improvements
Performance improvements
2016-05-01 20:43:37 +02:00
Thomas Krijnen a1d584796a Set reasonable defaults for caching behavior 2016-05-01 20:38:10 +02:00
Thomas Krijnen c6d5adfa42 Merge branch 'master' into performance_improvements
# Conflicts:
#	src/ifcexpressparser/implementation.py
#	src/ifcgeom/IfcGeomFunctions.cpp
#	src/ifcparse/Ifc4.cpp
2016-04-24 15:22:10 +02:00
Thomas Krijnen 1e262c8768 Update build script to install pyqt app 2016-04-23 11:42:11 +02:00
Thomas Krijnen d8919c50ab Fix serialization of list of list of entity instance 2016-04-19 16:44:08 +02:00
Thomas Krijnen 416b163050 Correct display_shape on TopoDS_Shape 2016-04-19 15:42:59 +02:00
Thomas Krijnen 1d1fb6d27a First steps towards a PyQt4 application 2016-04-17 15:27:05 +02:00
Thomas Krijnen 9fedbbff6d Only convert faces once if sewing shell fails pt.2 2016-04-17 15:12:02 +02:00
Thomas Krijnen 1c1097c8a4 Only convert faces once if sewing shell fails 2016-04-16 14:47:34 +02:00
Thomas Krijnen 884b3fe850 Project wires onto a plane if non-planar. Fixes #57. 2016-04-16 14:47:09 +02:00
Thomas Krijnen 81ee60079e Enable per-item styles in the pythonOCC viewer 2016-04-11 11:50:43 +02:00
Thomas Krijnen 426b1279e3 Implement __hash__ and __eq__ functions on entity_instance 2016-04-09 20:20:08 +02:00
Thomas Krijnen 1142db3265 remove msvc specific leniencies 2016-04-09 17:54:23 +02:00
Thomas Krijnen 191c029546 Correctly allow rule labels to be optional 2016-04-09 13:29:35 +02:00
Thomas Krijnen 9bcfe2f50e Generate code for IFC4_ADD1 2016-04-08 23:24:35 +02:00
Thomas Krijnen fa585e60ee Update EXPRESS code generator to work on ancient IFC schemas 2016-04-08 23:23:45 +02:00
Thomas Krijnen 0ff9de3cd9 Update EXPRESS code generator to work on ancient IFC schemas 2016-04-08 23:23:29 +02:00
Thomas Krijnen 63c3b54762 Merge pull request #56 from Tridify/obj_mtl_fix
Fix temp name usage of .mtl file
2016-03-28 11:17:20 +02:00
Stinkfist0 d7f990d8bd IfcConvert: Do not use temp file for MTL as it's such a small file. Fixes #55. 2016-03-28 11:47:21 +03:00
Stinkfist0 b59e8e22a7 IfcConvert: Show an error msg if renaming from temp to final file fails. 2016-03-28 11:47:02 +03:00
Thomas Krijnen 25a5135e8d Disable geometry re-use with world coords 2016-03-27 21:18:28 +02:00
Thomas Krijnen 4c574df1a4 Immediately emit to serializer and remove option to obtain ownership of objects 2016-03-27 21:17:51 +02:00
Thomas Krijnen f3d5954aee Merge pull request #53 from shsteven/fix_build_script_osx_boost
Fix build script under os x
2016-03-24 10:42:03 +01:00
Steven Zhang 7d145a5f69 fix build script under os x 2016-03-24 15:07:52 +08:00
Thomas Krijnen 5b30dfc580 Set required boost components again after merge 2016-03-23 10:27:34 +01:00
Thomas Krijnen e1bb6c95c3 Merge pull request #51 from shsteven/osx_build_fix
Fix build script under os x
2016-03-23 10:15:56 +01:00
Steven Zhang edc6f8ebd4 fix build script under os x 2016-03-23 15:27:03 +08:00
Thomas Krijnen ee56aad90d Merge branch 'master' into performance_improvements
# Conflicts:
#	src/ifcconvert/ColladaSerializer.cpp
#	src/ifcconvert/ColladaSerializer.h
#	src/ifcgeom/IfcGeomIterator.h
#	src/ifcgeom/IfcGeomRenderStyles.h
2016-03-22 16:15:28 +01:00
Thomas Krijnen 5c1ac39f19 Merge pull request #42 from Tridify/ifcconvert_enhancements
IfcConvert enhancements
2016-03-22 13:28:15 +01:00
Stinkfist0 0fd2f04f08 Utilise Collada stream's double precision feature 2016-03-21 11:42:40 +02:00
Stinkfist0 b171bd4a14 Add note/todo regarding Collada stream's double precision feature. 2016-03-20 13:13:15 +02:00
Stinkfist0 54a9d72e25 IfcConvert: use temp file when writing output. 2016-03-20 12:48:20 +02:00
Stinkfist0 798597d5d9 IfcConvert: check that input file exist early, print filenames in error prints 2016-03-18 22:33:03 +02:00
Stinkfist0 f7453c033a IfcConvert: check if output file already exists and ask user for confirmation for overwriting. Overwriting can be forced with -y/--yes 2016-03-18 22:14:05 +02:00
Stinkfist0 bf76bd17b2 Add large_offset.ifc (wallwindow.ifc, courtesy of @klokoy) as test input case. 2016-03-18 14:45:00 +02:00
Thomas Krijnen 59d2d227d9 Directly re-use IfcMappedItem triangulated elements when not using world coordinates 2016-03-18 11:23:25 +01:00
Thomas Krijnen 4a3a0bff71 Cleanup triangulations after use 2016-03-18 11:21:23 +01:00
Thomas Krijnen 8ecc1269d7 Compile-time options to manipulate caching behaviour 2016-03-18 11:21:04 +01:00
Thomas Krijnen 614148e5e4 Don't iterate past material indices in collada serializer 2016-03-18 11:18:02 +01:00
Thomas Krijnen 74e495cec0 python2.7 compatibility on code generator 2016-03-18 11:17:26 +01:00
Thomas Krijnen 0ceef8fe67 Use constant time parent enumeration lookup 2016-03-18 11:14:14 +01:00
Stinkfist0 562f38756f Calculate and store min. and max. placements IfcGeom::Iterator. Implement --center-model for OBJ. 2016-03-17 23:25:53 +02:00
Stinkfist0 76d3823bd4 Make UVs a property of IfcGeom::Representation::Triangulation. Implement writing of UVs for OBJ output. 2016-03-17 00:25:33 +02:00
Thomas Krijnen 28560d164c Add IfcGeomServer description 2016-03-12 16:54:21 +01:00
Stinkfist0 923f1212f5 Clean up program_options printings 2016-03-11 10:05:33 +02:00
Stinkfist0 e9f551ea71 --names for filtering included or excluded entities by name, e.g. --include --names "Wall Compound*" 2016-03-10 21:15:50 +02:00
Stinkfist0 b9c5b0e6c8 Add IFCCONVERT_DOUBLE_PRECISION build option 2016-03-10 17:00:06 +02:00
Stinkfist0 4953b35849 --generate-uvs, applicable for DAE only currently 2016-03-10 16:46:20 +02:00
Stinkfist0 83e5096570 Support for --deflection-tolerance 2016-03-10 16:09:39 +02:00
Stinkfist0 5008c3503d --center-model for DAE output, fixes #8 (TODO: implement also for OBJ) 2016-03-10 14:39:42 +02:00
Stinkfist0 ce38854cff Add --no-normals 2016-03-10 13:29:22 +02:00
Stinkfist0 24e2aece0b Rename --use-guids and --use-names to --use-element-guids and --use-element-names. Add explicit --use-material-names for controlling material naming. 2016-03-10 12:01:04 +02:00
Stinkfist0 43f5d446ec Implement --use-names and --use-guids for DAE, OBJ, and SVG output. 2016-03-10 11:35:32 +02:00
Stinkfist0 50a467fda5 Fix IfcUtil::wildcard_string_to_regex() 2016-03-07 23:15:29 +02:00
Stinkfist0 0da0e63687 Begin to implement IfcConvert enhancements discussed in #20. Remove C++-specific getters and setters and use the same set() and get() functions in in both C++ and Python. Enhance output of IfcConvert, especially in error situations (spamming a hundred lines of options always hides the original error message), utilize Boost's foreach macro to provide cleaner iteration code. 2016-03-07 22:37:36 +02:00
Stinkfist0 e35cefac52 Fix crash (deleting garbage ptr) when nonexisting file passed to IfcSpfStream ctor. Bug surfaced due to recent memory leak fix. 2016-03-07 22:37:04 +02:00
Stinkfist0 84e7a86e77 XmlSerializer: handle openings. Original author of the commit/idea @otsoa. 2016-03-07 22:37:03 +02:00
Thomas Krijnen 82a1e33386 Merge pull request #39 from Tridify/fixed_opencollada_revision
Use a fixed revision of OpenCOLLADA...
2016-03-05 13:50:41 +01:00
Thomas Krijnen 827c6fd407 Build script fixes and compatibility with OSX / bash 3.2 2016-03-03 20:36:16 +01:00
Stinkfist0 851fadb4ec build-deps.cmd: GitCloneAndCheckoutRevision - always checkout the revision, so that users don't have the nuke their existing clones before running the script. 2016-02-27 17:44:45 +02:00
Thomas Krijnen 90f72c4b2c Merge pull request #35 from Tridify/ifcmax
Create CMake file for building IfcMax
2016-02-27 15:52:10 +01:00
Stinkfist0 7ed219af70 Use a fixed revision of OpenCOLLADA in order to prevent introducing breaking changes. Closes #36, related to #38 2016-02-25 17:34:41 +02:00
Stinkfist0 d1a1759016 Use a fixed revision of OpenCOLLADA in order to prevent introducing breaking changes. Closes #36, related to #38 2016-02-25 17:23:04 +02:00
Thomas Krijnen acc4af87d6 Merge pull request #34 from yilativs/master
Set cmake search paths to ubuntu 16.04 package manager defaults
2016-02-24 09:03:06 +01:00
Stinkfist0 ee75545ecd README tweaks 2016-02-21 16:52:00 +02:00
Stinkfist0 58b5838da9 README.md tweaks 2016-02-20 00:43:35 +02:00
Stinkfist0 e171e308d0 Enable solution folders 2016-02-20 00:13:04 +02:00
Stinkfist0 645315a8f4 remove win/sln as these are not needed anymore 2016-02-19 23:02:09 +02:00
Stinkfist0 5ee9bed590 CMakeLists.txt for IfcMax. Tested with VS 2015 and 3ds Max + SDK 2016 2016-02-19 22:53:09 +02:00
yilativs 0f88520e75 [fix] CmakeLists.txt now works on ubuntu 16.04 without the need to compile oce
instead you can
apt-get install git swig cmake gcc g++ libftgl-dev libtbb2 libtbb-dev libboost-all-dev libgl1-mesa-dev libfreetype6-dev liboce-modeling-dev opencollada-dev liboce-foundation-dev
2016-02-19 20:28:46 +03:00
aothms 481515f5ae Add missing include 2016-02-18 16:57:22 +01:00
Thomas Krijnen a33f5b6e17 Merge pull request #31 from aothms/cmake_compile_schema
Add option to compile (external) schema by cmake + general improvements
2016-02-18 15:43:52 +01:00
aothms 10bec3eee0 Replace PYTHONPATH with PYTHONHOME 2016-02-18 14:57:57 +01:00
aothms da0af77570 Compatibility for older versions of cmake, python, open cascade, boost 2016-02-18 13:17:15 +01:00
aothms a6094f50b9 Let CMake find python interpreter for schema compilation and installation dir
Remove unused compiled schema in cpp installation target
2016-02-17 12:03:38 +01:00
aothms c3f1b41860 Fix https://github.com/IfcOpenShell/IfcOpenShell/issues/30 2016-02-15 17:59:31 +01:00
aothms 4122759f1a Add option to compile (external) schema by cmake 2016-02-15 16:59:47 +01:00
Thomas Krijnen a583339492 Merge pull request #29 from Tridify/win_build_script_improvements
Windows build script improvements
2016-02-15 16:14:51 +01:00
Stinkfist0 f12e980bfe build-all.cmd: simplify "yes" trick 2016-02-15 15:08:13 +02:00
Stinkfist0 4979deb111 CMakeLists.txt: Remove sources specific to an IFC release we are not using from the project 2016-02-09 15:51:18 +02:00
Stinkfist0 c575352d20 ~IfcCharacterDecoder: call ucnv_flushCache() to fix two ICU mem leaks. 2016-02-07 23:01:34 +02:00
Stinkfist0 2f8fa3282b Fix mem leak in IfcSpfStream (not closed upon destruction), make Entity's dtor virtual. 2016-02-07 22:45:42 +02:00
Stinkfist0 993e322a8e Fix memory leakage from IfcSpfHeader 2016-02-07 13:14:14 +02:00
Stinkfist0 61ccd8a7cf VLD, not VLC... 2016-02-07 12:28:05 +02:00
Stinkfist0 450baf224f Remove accidentally committed lines 2016-02-07 00:51:10 +02:00
Stinkfist0 7b2197fa37 add /test/__pycache__ to ignore list 2016-02-07 00:31:29 +02:00
Stinkfist0 cde1c5f2ee Add build option for using Visual Leak Detector for debugging memory leaks. Initial report:
- IfcConvert (no arguments): 2 leaks (140 bytes) (from OCE)
- IfcConvert (acad2010_objects.ifc): 47 memory leaks (6,158 bytes)
- IfcGeomServer: 2 leaks (from OCE)
- IfcOpenHouse: 11,952 leaks (1,169,658 bytes)!
- IfcParseExamples (acad2010_objects.ifc): 40 memory leaks (4,564 bytes)
2016-02-07 00:30:08 +02:00
Stinkfist0 33772a4710 run-cmake.bat & build-all.cmd: fix cmake arguments parsing when arguments passed for the batch scripts 2016-02-06 18:48:18 +02:00
Stinkfist0 178c34fb22 README.md: document the supported IFC releases with links 2016-02-05 14:48:51 +02:00
Stinkfist0 17ecc43f78 vs-cfg.cmd: remove if-clause, an erroneous syntax print comes if this script is called when VS env vars not set but that's OK. 2016-02-04 11:46:53 +02:00
Stinkfist0 72999e04d9 vs-cfg.cmd: clean up output when used wrongly (VS tools not in path and empty/no generator argument passed). 2016-02-04 00:43:52 +02:00
Stinkfist0 f191b1fdd2 Fix warning regarding shadowing variable names. 2016-02-03 22:34:50 +02:00
Stinkfist0 d095bfecde Fix command-line argument parsing in run-cmake.bat and build-all.cmd 2016-02-03 22:16:50 +02:00
Stinkfist0 2e1699beea build-all.cmd: support for passing arguments, e.g. build-all.cmd vs2015-x64 RelWithDebInfo -DUSE_IFC4=1 -DENABLE_BUILD_OPTIMIZATIONS=1 2016-02-03 16:36:07 +02:00
Stinkfist0 5c07c8dc95 run-cmake.bat print tweak 2016-02-03 16:15:40 +02:00
Stinkfist0 0fa05faee8 Simplify run-cmake.bat, the script can now be used e.g. run-cmake.bat vs2015-x64 -UDUSE_IFC4=1 -DCMAKE_INSTALL_PREFIX=C:/IfcOpenShell/Ifc4 2016-02-03 16:12:52 +02:00
Stinkfist0 21e8a1e8e6 vs-cfg.cmd: provide support for user-friendly VS generators, e.g. vs2013-x86, and converted them to the appropriate CMake ones. 2016-02-03 16:10:55 +02:00
Stinkfist0 2e6601b3e7 build-deps.cmd: do not print build times if build did not even start properly. 2016-02-03 16:10:55 +02:00
Stinkfist0 634932e6e7 run-cmake.bat: set CMAKE_INSTALL_PREFIX also when passing extra parameters for the script 2016-02-03 16:10:55 +02:00
Stinkfist0 a041d289c6 Add build-all.cmd script for convenience. 2016-02-03 16:10:55 +02:00
Stinkfist0 01f8882311 adjust build-ifcopenshell & install-ifcopenshell to the build cfg batch file change 2016-02-03 16:10:54 +02:00
Stinkfist0 f2bdfbd049 Windows build scripts: move build configuration type to a separate file. 2016-02-03 16:10:32 +02:00
Stinkfist0 c7bf03e8f8 Add set-python-to-path.bat helper, add instructions for using preinstalled Python. 2016-02-03 16:10:32 +02:00
Stinkfist0 18e451b874 Windows build scripts: detect case where user installed Visual Studio but not the C++ toolset. Also detect case where user's CMake version is too old for the desired generator. 2016-02-03 16:10:32 +02:00
aothms f4d58b3969 Fix for IfcAdvancedFace when compiling for 2x3 2016-02-01 14:58:42 +01:00
aothms 76a3146b70 Fix one statement deleted too much in https://github.com/IfcOpenShell/IfcOpenShell/commit/f3af39546be9ecd485737ff0954cfb92807fca1d 2016-01-29 15:25:18 +01:00
aothms fe70acb541 Fix https://github.com/IfcOpenShell/IfcOpenShell/issues/26 2016-01-26 16:45:39 +01:00
Stinkfist0 a52901344c build-deps.cmd: print start, end, and elapsed time + .gitignore doc tweak 2016-01-26 13:41:19 +02:00
Thomas Krijnen d0e26f07fc Merge pull request #25 from aothms/master
Refactoring shared_ptr and array usage
2016-01-25 16:00:49 +01:00
aothms 5270710fc2 Use vanilla C arrays instead of std::tr::array
Fixes https://github.com/IfcOpenShell/IfcOpenShell/issues/17
2016-01-25 14:44:35 +01:00
aothms ed8cc620ea Use boost::shared_ptr
Fixes https://github.com/IfcOpenShell/IfcOpenShell/issues/17
2016-01-25 14:42:41 +01:00
aothms 9b13ed3f38 Emit more debug information when failing to join curve segments 2016-01-25 14:25:24 +01:00
aothms 801c7da40f Use multiple argument boolean operands for IfcOpeningElement subtractions 2016-01-25 13:30:33 +01:00
aothms 4be7da1a43 Use fuzzy boolean subtraction if available
Remove collinear points from polygonal halfspace boundary
Lookup styled items on boolean operation operands

Fixes https://github.com/IfcOpenShell/IfcOpenShell/issues/6
Fixes https://sourceforge.net/p/ifcopenshell/discussion/1782717/thread/a7f99e41/?limit=25#5c36
2016-01-22 17:27:28 +01:00
aothms a0db3a3406 chmod +x on *nix build script 2016-01-09 06:42:35 +01:00
aothms 18f8d7b3a3 Add *nix build script
Set paths by CMake cache entries or env vars
Windows build script: Don't fail on non-zero exit code returned by `git fetch`
2016-01-09 06:38:33 +01:00
Thomas Krijnen 010e05308d Merge pull request #19 from aothms/master
Fixes for sequences of extended control directives
2016-01-08 09:20:50 +01:00
aothms 973fa9ccb5 Fixes for sequences of extended control directives 2016-01-08 09:17:49 +01:00
aothms 0d42a293ad Add license header to occ_utils 2016-01-08 08:38:21 +01:00
Thomas Krijnen a02a06a0e3 Merge pull request #16 from Tridify/win_oce_update
Windows build scripts: OCE & OpenCOLLADA updates
2016-01-06 07:29:06 +01:00
Stinkfist0 d3438335a2 Work around https://github.com/KhronosGroup/OpenCOLLADA/issues/377 2015-12-30 16:26:16 +02:00
Stinkfist0 a0bb589ed3 build-deps.cmd: use OCE and oce-win-bundle from the official repos. 2015-12-30 13:32:22 +02:00
Thomas Krijnen 056bcd12d0 Merge pull request #14 from aothms/master
Various fixes
2015-12-21 11:51:45 +01:00
aothms fe699e0a81 Fix python module import 2015-12-21 11:47:38 +01:00
aothms 4eee9a1936 Merge remote-tracking branch 'official/master'
Conflicts:
	src/ifcconvert/IfcConvert.cpp
	src/ifcgeom/IfcGeomIterator.h
2015-12-21 11:36:23 +01:00
Thomas Krijnen 8c1710cae1 Merge pull request #11 from Tridify/windows_build_scripts
build-ifcopenshell & install-ifcopenshell batch files
2015-12-07 19:21:24 +01:00
Stinkfist0 e2d3b3734f Use IFCOS_NUM_BUILD_PROCS also in build-ifcopenshell.cmd and install-ifcopenshell.cmd. 2015-12-07 16:30:08 +02:00
aothms b243572d23 Don't fail on opening elements lacking representation or placement 2015-12-05 17:14:10 +01:00
Stinkfist0 3224a2cf83 build-ifcopenshell & install-ifcopenshell batch files 2015-12-04 17:33:13 +02:00
aothms a2d91f9331 Fix compilation error reported by bezumenez 2015-12-04 11:56:54 +01:00
aothms 0301e2fb1b Emit an error message on extrusions with negative height or under model precision 2015-12-02 10:17:59 +01:00
Thomas Krijnen 0036bd2dc2 Merge pull request #9 from Tridify/windows_build_scripts
Windows & Visual Studio build scripts continued
2015-12-01 14:27:34 +01:00
Stinkfist0 0877bb0ac3 Windows build scripts: if CMake generator not passed, deduce the generator from VS env vars. 2015-12-01 14:53:16 +02:00
aothms e62ce005dc Work on unit issues with step and iges files 2015-12-01 11:14:50 +01:00
aothms b6e2d78bfa Catch syntax errors during iterator initialization 2015-11-30 23:41:27 +01:00
aothms bf292cccd0 Precision fixes 2015-11-30 22:59:21 +01:00
aothms 9d730054dd Merge branch 'master' into layerset_slicing 2015-11-24 17:19:05 +01:00
Stinkfist0 2dc5cd44b7 Enable warning C4100 ("'identifier' : unreferenced formal parameter") and fix warnings. 2015-11-23 15:52:12 +02:00
Stinkfist0 fcbe93c4c2 vs-cfg.cmd: support CMake pre-3.0 Visual Studio generator strings. 2015-11-23 15:27:58 +02:00
Stinkfist0 89b3b96f1e .gitignore: add /src/ifcexpressparser/__pycache__ & /src/ifcexpressparser/express_parser.py 2015-11-22 02:39:45 +02:00
Stinkfist0 16a82f035f templates.py: disable C4100 warnings for headers created by this file + move <map> inclusion to .cpp as it's not needed in .h + use spaces instead of tabs consistently for these files as seems to be the convention. 2015-11-22 02:26:28 +02:00
Stinkfist0 b562508f5b win/readme.md tweak 2015-11-22 00:04:21 +02:00
Stinkfist0 a13042f227 Fix warnings: unused variables, shadowing variable names, constant conditional expressions, integer conversions, inability to generate copy-ctor and/or assignment operator, etc. 2015-11-21 23:05:28 +02:00
Stinkfist0 3cbb47a831 Bump up MSVC warning level. 2015-11-21 23:01:29 +02:00
Stinkfist0 7d806296c1 vs-cfg.cmd: use the longer generator names for all generator so that VS version can be identified in generic fashion 2015-11-21 13:16:47 +02:00
Stinkfist0 d6bd0c861b README.md formatting fix 2015-11-21 13:15:31 +02:00
Thomas Krijnen 8164c90ba0 Merge pull request #5 from Tridify/windows_build_scripts
Windows & Visual Studio build scripts
2015-11-20 13:38:45 +01:00
Stinkfist0 fff6f97651 build-deps: when building OpenCOLLADA, enforce that the embedded LibXml2 and PCRE are used as there might be problems with arbitrary versions of the libraries. 2015-11-20 12:45:56 +02:00
Stinkfist0 6a5d5dcb12 Further cleanup for the batch scripts. 2015-11-20 12:34:31 +02:00
Stinkfist0 bb3dc351b8 Batch file tweaks, fix printing of the used generator 2015-11-20 11:44:17 +02:00
Stinkfist0 90946e0877 Windows build scripts: TODO & indentation tweaks. 2015-11-20 00:45:01 +02:00
Stinkfist0 7895835ca3 build-deps.cmd: check that powershell, git and cmake are in path using where.exe. Print instructions upon missing VS env vars or tools in PATH. 2015-11-19 18:01:03 +02:00
Stinkfist0 7caa4e3e1d Replace cecho.exe with PowerShell snippet, fix exit bug in vs-cfg.cmd, fix Visual Studio download URL, rename IFCOS_NUM_BUILD_PROCESSES -> IFCOS_NUM_BUILD_PROCS 2015-11-19 17:30:55 +02:00
Stinkfist0 d721dabf3b Replace wget usage with PowerShell. 2015-11-17 16:02:06 +02:00
Stinkfist0 9087bc65a7 win/readme.md tweaks 2015-11-14 20:18:29 +02:00
Stinkfist0 ccf4e84e18 CMakeLists.txt: Clean up addition of debug lib variants on MSVC. 2015-11-14 19:19:55 +02:00
Stinkfist0 0f1db1267b Rename readme.txt to readme.md, link to the Windows readme.md from the main README.md. 2015-11-11 17:41:38 +02:00
Stinkfist0 431e993ba3 CMake biz: Instead of providing elusive prints of missing dependencies for required features and continuing the build configuration, fail fast instead; user can easily disable the feature or fix the paths for the dependency. 2015-11-11 13:30:30 +02:00
Stinkfist0 d912e73282 Allow both debug and release variants of dependencies to co-exist allowing effortless switching between IfcOpenShell debug and release builds. 2015-11-10 23:18:02 +02:00
Stinkfist0 106da12444 build-deps.cmd: make debug libs of OpenCOLADA and ICU to have "d" postfix so that release and debug variants can co-exist in the same dir as is the default with OCE. 2015-11-10 20:05:11 +02:00
Stinkfist0 89a015724b CMake biz: rename OCE_LIBRARIES to OPENCASCADE_LIBRARIES, use this variable also in examples & qtviewer CMakeLists.txt 2015-11-09 17:42:46 +02:00
Stinkfist0 8b63959509 Use separate BuildDepsCache.txt for x86 and x64 builds. 2015-11-09 16:04:06 +02:00
Stinkfist0 0a8791e04e Clean up CMake biz by using OCE_LIBRARIES variable for defining OCE libs + fix setting of PYTHON_INCLUDE_DIR + PYTHON_LIBRARY vars + small README.md cleanup. 2015-11-09 15:36:57 +02:00
Stinkfist0 318779196b Use BuildDepsCache.txt to store information about used Python version so that it's available for "autonomic" run-cmake.bat runs. 2015-11-05 18:05:20 +02:00
aothms d076fa588b Work on runtime representation of schema 2015-11-05 11:55:19 +01:00
Stinkfist0 6190771817 Fix/suppress signed-unsigned int conversion warnings on Windows x64. 2015-11-04 18:27:46 +02:00
Stinkfist0 206a9cf5d0 Work around https://github.com/swig/swig/issues/325 2015-11-04 16:25:13 +02:00
Stinkfist0 d4b51a82e7 Fix/suppress plethora of integer conversion warnings on x64 Visual Studio build. 2015-11-03 17:58:08 +02:00
Stinkfist0 a749775045 build-deps.cmd: use OpenCOLLADA from the official repo now that it has the static MSVC run-time option. 2015-11-03 16:55:33 +02:00
Stinkfist0 26ed16ba52 Make possible to switch between Python 2 & 3 easily. Fixes also possible confusion when having both 32-bit and 64-bit Python installations side by side. 2015-11-03 16:28:30 +02:00
Stinkfist0 7b4d8734ed run-cmake.bat: ensure Python packages are installed to the right direction. 2015-10-30 22:49:52 +02:00
Stinkfist0 455d382a9e build-deps.cmd: add option to use Python 2 instead of 3, fix Boost build variant (for some reason error did not manifest itself until clean build) 2015-10-30 21:12:08 +02:00
Stinkfist0 c9313c8e02 build-deps.cmd: update SWIG, build Boost as debug or release, not both, each run. 2015-10-29 00:23:19 +02:00
Stinkfist0 b44a88d203 CMakeLists.txt: install IfcGeomServer executable. 2015-10-28 21:25:48 +02:00
Stinkfist0 921c3eb2d3 SvgSerializer.cpp: add missing #include <Standard_Version.hxx> 2015-10-28 21:25:23 +02:00
Stinkfist0 d5efe45b0b Update READMEs. 2015-10-28 21:21:23 +02:00
Stinkfist0 b8a7b5426d build-deps.cmd: fix Python installation. Also uninstall Python if build type is Clean or Rebuild. 2015-10-28 21:08:08 +02:00
Stinkfist0 89bea19b75 Enhanced CMakeLists.txt for Windows build scripts. 2015-10-28 19:45:45 +02:00
Stinkfist0 5c0eb05482 Add Windows build scripts from https://github.com/Tridify/IfcOpenShell-SourceForge 2015-10-28 19:43:10 +02:00
Stinkfist0 c9ff455812 Move Visual Studio solution files from win\ to win\sln 2015-10-28 19:41:59 +02:00
aothms fdf1b29682 Return shape for arbitrary representation items in ifcopenshell.geom.create_shape() 2015-10-22 12:04:49 +02:00
aothms f3af39546b Don't construct transformation from matrix, but use original data. 2015-10-13 11:15:45 +02:00
aothms 44ddc5e6dc Don't use IfcMappedItems for IfcOpenHouse walls, as suggested by Ian Clévy in https://sourceforge.net/p/ifcopenshell/discussion/1782716/thread/f9b586ca/?limit=25#ab87 2015-10-09 14:23:38 +02:00
aothms c9db70c7c3 Initial implementation of layerset slicing 2015-10-07 17:33:30 +02:00
aothms c7ddc0643e Fixes to flatten_shape_list() 2015-10-07 16:14:34 +02:00
aothms 3a9e90f94f Mark IfcGeom::Kernel::getValue as const 2015-10-07 16:13:25 +02:00
aothms db6630c1f8 Use boost::to_lower() 2015-10-05 13:34:43 +02:00
aothms c20afd24a5 Remove unnecessary precision cast 2015-10-05 13:09:16 +02:00
aothms 7b82bfb477 Update log messages in parser 2015-10-05 13:08:24 +02:00
aothms 3e00139a87 Add const pointer cast to IfcBaseClass 2015-10-05 13:07:40 +02:00
Thomas Krijnen 23beb5691c Detect abstract entities in schema parser 2015-09-17 10:33:19 +02:00
Thomas Krijnen c6a265adf8 Merge pull request #2 from aothms/master
Assorted fixes
2015-09-13 15:05:46 +02:00
aothms 94d214808e Use boost::to_upper() and -::to_upper_copy() for string manipulation throughout codebase 2015-09-13 15:00:21 +02:00
aothms a58b2ede63 Fixes for unicode handling in Python 2015-09-13 14:43:42 +02:00
aothms e5c20a009d Add convenience method for relating objects to types. As suggested by Cadline St2. 2015-09-12 14:27:58 +02:00
aothms b590747db9 Add version information and schema identifier to Python wrapper 2015-09-10 15:53:59 +02:00
aothms 2532ba30e4 Fix addRelatedObject, fix by Cadline St2 2015-09-10 13:58:27 +02:00
aothms 9096895bdb Support for schemas using TYPE definitions to redeclare BINARY types 2015-09-08 15:27:05 +02:00
aothms 82143f226e Small changes to SVG serialization 2015-09-06 14:50:07 +02:00
aothms 22a8d9a17b Don't leave MakeFace in an invalid state when one of the face boundaries cannot be processed or is not planar 2015-09-04 11:48:53 +02:00
aothms 4385f3b14d Revert some of the typemap work in b96cf38e17 and rely on a general mapping from const vector to tuple 2015-09-04 11:46:52 +02:00
aothms 3cba242295 When built without ICU filter characters outside of unencoded range 2015-08-14 22:11:32 +02:00
aothms 822fa91f4d Work on a C++ representation of the parsed EXPRESS schema 2015-08-13 14:28:50 +02:00
aothms 266d6f4c97 Cache the output of the parsed express schema as a Python pickle stream for speedier code generation 2015-08-13 14:26:14 +02:00
Thomas Krijnen 8406c5243c Merge pull request #1 from aothms/master
Ignore tail remarks in the express schema parser
2015-08-13 14:20:12 +02:00
aothms 810d3eab1e Ignore tail remarks in the express schema parser 2015-08-13 14:18:59 +02:00
aothms 17f6e67706 Update README 2015-08-10 11:38:43 +02:00
Thomas Krijnen f5c32adff1 Be sure to flush fstream when finalizing SVG export 2015-07-26 17:59:52 +00:00
Thomas Krijnen bb43dec90f Fix typos 2015-07-26 17:58:08 +00:00
Thomas Krijnen 0e5edbcd84 Reverse preprocessor statement to work without definition, defaulting to 2x3 2015-07-26 15:26:34 +00:00
Thomas Krijnen 68fc361d96 Add SvgSerializer developed in collaboration with ROOT B.V. 2015-07-26 14:26:13 +00:00
Thomas Krijnen 06b4fcb066 Remove orphaned file. Thanks Stinkfist 2015-07-26 14:22:50 +00:00
Thomas Krijnen 85d5d86c84 Update code examples for recent changes 2015-07-09 13:52:55 +00:00
Thomas Krijnen 78f4d7d592 Fix build with Boost 1.58.0. Patch by stinkfist0. Thanks. 2015-07-09 13:23:40 +00:00
Thomas Krijnen 92bc7b13cb Use custom typemaps for geometry related classes as well 2015-06-26 13:06:28 +00:00
Thomas Krijnen e518146bd6 Fix IfcCurveBoundedPlane implementation 2015-06-21 16:15:15 +00:00
Thomas Krijnen e9eb7db620 Fix ensure_fit_for_subtraction() function when input shape is a solid 2015-06-21 16:14:37 +00:00
Thomas Krijnen 1068070037 Do not free the IFC file if it has not been constructed by the iterator 2015-06-20 14:23:59 +00:00
Thomas Krijnen 3d302619c5 Check for numbers.Integral instead of int, to catch py2.7's long type as well 2015-06-20 14:22:54 +00:00
Thomas Krijnen 48febb7eff Check for null values when setting attributes in IfcOpenShell-Python, also return value being set 2015-06-18 13:15:33 +00:00
Thomas Krijnen feaa13a809 gcc compatibility 2015-06-18 08:55:29 +00:00
Thomas Krijnen 76cbb79c75 Correctly wrap arbitrarily nested aggregates of entity instance attributes in IfcOpenShell-Python 2015-06-17 19:46:11 +00:00
Thomas Krijnen 6aabbd4a55 Correctly interpret SWIG return code of type check 2015-06-17 19:44:15 +00:00
Thomas Krijnen 48676a733f Rework SWIG python binding not to rely on polymorhpic functions. Use hand-written typemaps that map vectors to tuples and iterables to vectors. Add support for multidimensional aggregates in Python. 2015-06-17 11:27:02 +00:00
Thomas Krijnen f8c45b2a99 Fix serialization of binary values 2015-06-17 11:22:43 +00:00
Thomas Krijnen 1ec14118fe Introduce specific exception for out of range attribute indexing 2015-06-17 11:04:28 +00:00
Thomas Krijnen 381f711103 Update string representation of ArgumentTypeToString 2015-06-16 14:47:03 +00:00
Thomas Krijnen b748c0a573 Add source code for generation of IfcTriangulatedFaceSet test case 2015-06-16 13:00:19 +00:00
Thomas Krijnen c4e8a409de Add another IfcTriangulatedFaceSet test case 2015-06-16 12:59:49 +00:00
Thomas Krijnen 28863f90b9 Add support for IFC4.IfcTriangulatedFaceSet 2015-06-16 12:58:51 +00:00
Thomas Krijnen 4f60c7d48c Provide concrete C++ implementations for all multidimensional aggregate types in IFC4 2015-06-16 12:58:07 +00:00
Thomas Krijnen f70b37137d Emit an error message rather than exception for GlobalId parsing inconsistencies to accomodate files with invalid GlobalIds. 2015-06-04 14:33:13 +00:00
Thomas Krijnen 49d491704e Add support for IfcBSplineCurveWithKnots 2015-06-02 15:56:09 +00:00
Thomas Krijnen a3f17cd4e7 Enable passing explicit IfcRepresentation in IfcOpenShell-Python create_shape() 2015-06-02 13:30:02 +00:00
Thomas Krijnen b96cf38e17 Minimize passing STL objects past dynamic library boundaries to improve stability of IfcOpenShell-Python 2015-06-02 13:29:08 +00:00
Thomas Krijnen 5a994ebe28 vc9 compatibility 2015-05-26 12:56:00 +00:00
Thomas Krijnen ffc008228d gcc compatibility 2015-05-26 12:55:00 +00:00
Thomas Krijnen 77ba3f5a80 Perform shape healing after opening subtraction 2015-05-22 15:41:56 +00:00
Thomas Krijnen 04d4095ffe Correctly mark face boundary edges in case of vertex welding 2015-05-22 13:13:48 +00:00
Thomas Krijnen 569fa49796 Prevent an issue with obtaining precision from sub contexts 2015-05-22 13:13:16 +00:00
Thomas Krijnen 7abe2df066 Update implementation of IfcBSplineSurfaceWithKnots for IfcAdvancedFace in IFC4 2015-05-21 13:02:10 +00:00
Thomas Krijnen 9b64c6f4b9 Check for orientation of wires when creating outer boundary of face 2015-05-21 13:01:01 +00:00
Thomas Krijnen 771f78a671 Fix surface style association when compiling with IFC4 2015-05-21 12:55:54 +00:00
Thomas Krijnen 3d6b330366 Reintroduce binary type in express parser 2015-05-21 12:53:17 +00:00
Thomas Krijnen 37d4e9bcbd Fix express parser for simple types that redefine aggregates of entities 2015-05-21 12:09:57 +00:00
Thomas Krijnen 7390faa654 Adapt XML serializer for changes in IFC4 decomposition and property set types 2015-05-21 12:06:38 +00:00
Thomas Krijnen b7d4eb62d5 Add IfcFaceSurface example 2015-05-21 12:05:23 +00:00
Thomas Krijnen 40a60386c8 Brand new implementation of IfcFace(Surface) 2015-05-20 08:55:02 +00:00
Thomas Krijnen 9bf9f82b3b Format obj and dae output predictably based on rfc notation of GlobalId. As discussed in https://sourceforge.net/p/ifcopenshell/discussion/1782717/thread/cbb0c8ca/ 2015-05-13 14:30:21 +00:00
Thomas Krijnen b37a684eb9 Append line segment indices in the IfcGeomServer 2015-04-25 09:13:14 +00:00
Thomas Krijnen c97cf661a2 1. Also emit Plan and Axis shape representations and IfcTopologyRepresentations if requested. 2. Add serialization for curves. 3. In Python add option to specify representation for which to generate shape. 2015-04-22 09:15:48 +00:00
Thomas Krijnen 53f625346f Fix compilation with gcc 2015-04-07 19:26:01 +00:00
Thomas Krijnen 608c7d9841 Don't rely on exceptions for testing whether a Python attribute names a valid (inverse) IFC attribute 2015-04-07 15:49:38 +00:00
Thomas Krijnen 955190b517 Add support for reading and writing BINARY attributes. Rename members of the IfcUtil::ArgumentType enumeration. 2015-04-07 15:06:56 +00:00
Thomas Krijnen 462425f61d Update README 2015-03-22 20:06:04 +00:00
Thomas Krijnen 0a0f44b674 Reduce link time for MSVC release builds. Patch by ch0kee. 2015-03-22 19:52:29 +00:00
Thomas Krijnen 9f9a0ea3dc Update generated code for IFC4 2015-03-20 20:58:05 +00:00
1955 changed files with 1112008 additions and 222641 deletions
+8
View File
@@ -0,0 +1,8 @@
c14f5eeca042232025797990396232e4feab53e7
d6881e833da0b6278313870d37d42ca6ece8686a
892be5444c5bd01a601c99243ac8d3e7b2f0e779
d169a964dd7e9ab5c98b35a82bcbc76dc6229a7a
4a6ec11f6f84a3d1fed2ee9b2f85d783ac3daa9d
2c9d6a47f4d24a923069775206bf734feeb14830
8f1743ed64a2a52c201a1ef5e312b4d3a7a922cf
ad7f030344c405e10cfa7d5cf06d82c121eeb825
+4
View File
@@ -0,0 +1,4 @@
# These are supported funding model platforms
github: [aothms]
open_collective: opensourcebim
+116
View File
@@ -0,0 +1,116 @@
name: CD
on:
push:
jobs:
activate:
runs-on: ubuntu-latest
if: |
github.repository == 'IfcOpenShell/IfcOpenShell' &&
!startsWith(github.event.head_commit.message, 'Release ') &&
!contains(github.event.head_commit.message, 'ci skip')
steps:
- run: echo ok go
build:
runs-on: ubuntu-20.04
needs: activate
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Install dependencies
run: |
sudo apt update
sudo apt-get install --no-install-recommends \
git cmake gcc g++ libboost-all-dev python3-all-dev swig libpcre3-dev libxml2-dev \
libocct-foundation-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev libocct-ocaf-dev libocct-visualization-dev libocct-data-exchange-dev \
libhdf5-dev libcgal-dev
-
name: ccache
uses: hendrikmuhs/ccache-action@v1
-
name: Build ifcopenshell
run: |
mkdir build && cd build
cmake \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_INSTALL_PREFIX=$PWD/install/ \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=/usr \
-DCMAKE_SYSTEM_PREFIX_PATH=/usr \
-DBUILD_PACKAGE=On \
-DOCC_INCLUDE_DIR=/usr/include/opencascade \
-DOCC_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3 \
-DPYTHON_INCLUDE_DIR:PATH=/usr/include/python3.8 \
-DPYTHON_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libpython3.8.so \
-DCOLLADA_SUPPORT=Off \
-DLIBXML2_INCLUDE_DIR=/usr/include/libxml2 \
-DLIBXML2_LIBRARIES=/usr/lib/x86_64-linux-gnu/libxml2.so \
-DCGAL_INCLUDE_DIR=/usr/include \
-DGMP_INCLUDE_DIR=/usr/include \
-DMPFR_INCLUDE_DIR=/usr/include \
-DGMP_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DMPFR_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DHDF5_INCLUDE_DIR=/usr/include/hdf5/serial \
../cmake
make -j $(nproc)
make install
-
name: Package
run: |
make package
working-directory: build
- name: Upload
uses: actions/upload-artifact@v2
with:
# Artifact name
name: ifcos-artifacts
# Directory containing files to upload
path: build/assets/Ifc*
deliver:
runs-on: ubuntu-20.04
needs: build
name: Docker Build, Tag, Push
steps:
- uses: actions/checkout@v2
with:
lfs: true
- name: Download
uses: actions/download-artifact@v2
with:
# Artifact name
name: ifcos-artifacts
path: artifacts/
-
name: Set up QEMU
uses: docker/setup-qemu-action@v1
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
-
name: Login to Dockerhub
uses: docker/login-action@v1
with:
username: aecgeeks
password: ${{ secrets.DOCKER_HUB_TOKEN }}
-
name: Build container image
uses: docker/build-push-action@v2
with:
context: artifacts
repository: aecgeeks/ifcopenshell
tags: aecgeeks/ifcopenshell:latest
file: ./Dockerfile
push: true
+38
View File
@@ -0,0 +1,38 @@
name: ci-bcf
on:
push:
jobs:
activate:
runs-on: ubuntu-latest
if: |
github.repository == 'IfcOpenShell/IfcOpenShell' &&
contains(github.event.head_commit.message, '[bcf release]')
steps:
- run: echo ok go
upload:
needs: activate
name: Upload BCF package to Pypi
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Build package
run: |
cd src/bcf
pip install build
python -m build
- name: Publish package
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_TOKEN }}
packages_dir: src/bcf/dist
+92
View File
@@ -0,0 +1,92 @@
name: Publish-blenderbim-chocolatey package
on:
schedule:
# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12 or JAN-DEC)
# │ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT)
# * * * * *
- cron: "30 0 * * *" # 30min past utc midnight
env:
major: 0
minor: 0
name: blenderbim
choco_version: 1.1.0
CHOCO_TOKEN: ${{ secrets.CHOCO_TOKEN }}
jobs:
activate:
runs-on: ubuntu-latest
if: |
github.repository == 'IfcOpenShell/IfcOpenShell'
steps:
- name: Set env
run: echo ok go
build:
needs: activate
name: ${{ matrix.config.name }}-${{ matrix.pyver }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
pyver: [py310]
config:
- {
name: "Windows Build",
short_name: win,
}
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2 # https://github.com/actions/setup-python
with:
python-version: '3.7.7' # Version range or exact version of a Python version to use, using SemVer's version range syntax
architecture: 'x64' # optional x64 or x86. Defaults to x64 if not specified
- run: echo ${{ env.DATE }}
- name: Check in published releases if we should do a choco release
id: do_choco
run: |
echo "::set-output name=choco_release::$(python3 /home/runner/work/IfcOpenShell/IfcOpenShell/choco/blenderbim/check_repo_infos.py --do_choco_release?)"
- name: Fill chocolatey scripts on win with latest blender python
if: ${{steps.do_choco.outputs.choco_release}} == 'do_choco_release'
run: |
yesterday_non_iso="$(date --date='yesterday' +'%y%m%d' | tr -d '\n')" &&
target_os=${{ matrix.config.short_name }} &&
latest_blender_python_version_maj_min=$(python3 /home/runner/work/IfcOpenShell/IfcOpenShell/choco/blenderbim/check_repo_infos.py --latest_blender_python_version_maj_min?) &&
echo "latest_blender_python_version_maj_min?: $latest_blender_python_version_maj_min" &&
pyver=$(python3 /home/runner/work/IfcOpenShell/IfcOpenShell/choco/blenderbim/check_repo_infos.py --pyver?) &&
export latest_blender_version_maj_min=$(python3 /home/runner/work/IfcOpenShell/IfcOpenShell/choco/blenderbim/check_repo_infos.py --latest_blender_release_maj_min?) &&
export latest_blender_version_maj_min_pat=$(python3 /home/runner/work/IfcOpenShell/IfcOpenShell/choco/blenderbim/check_repo_infos.py --latest_blender_release_maj_min_pat?) &&
echo latest_blender_version_maj_min_pat?: $latest_blender_version_maj_min_pat &&
export blenderbim_build_version="${{ env.major }}.${{ env.minor }}.$yesterday_non_iso" &&
export url_blenderbim_py310_win_zip="https://github.com/IfcOpenShell/IfcOpenShell/releases/download/blenderbim-$yesterday_non_iso/blenderbim-$yesterday_non_iso-$pyver-$target_os.zip" &&
wget $url_blenderbim_py310_win_zip --no-verbose &&
export sha256sum_blenderbim_py310_win_zip=$( sha256sum blenderbim-$yesterday_non_iso-$pyver-$target_os.zip --tag | cut -d ' ' -f 4 | tr -d '\n') &&
echo sha256sum_blenderbim_py310_win_zip: $sha256sum_blenderbim_py310_win_zip &&
python3 choco/blenderbim/fill_dynamic_parameters.py &&
echo __build choco with mono &&
wget "https://github.com/chocolatey/choco/archive/refs/tags/$choco_version.tar.gz" --quiet &&
tar -xzf "$choco_version.tar.gz" &&
cd choco-$choco_version &&
chmod +x build.sh zip.sh &&
./build.sh &&
cp -r build_output/chocolatey /opt/chocolatey &&
cd /home/runner/work/IfcOpenShell/IfcOpenShell/choco/blenderbim/ &&
echo __choco pack &&
mono /opt/chocolatey/choco.exe --version &&
mono /opt/chocolatey/choco.exe pack --allow-unofficial &&
echo __choco set apiKey &&
mono /opt/chocolatey/choco.exe setapikey --key="$CHOCO_TOKEN" --source="https://push.chocolatey.org/" --allow-unofficial # &&
echo __choco push &&
mono /opt/chocolatey/choco.exe push --source="https://push.chocolatey.org/" --key="$CHOCO_TOKEN" --allow-unofficial --verbose
- name: Inform user about not packaging
if: ${{steps.do_choco.outputs.choco_release}} != 'do_choco_release'
run: |
echo "no releases found today ${{ env.DATE }}, therefore choco packaging is skipped."
@@ -0,0 +1,83 @@
name: Publish-blenderbim-multiplatform
on:
push:
paths:
- '.github/workflows/ci-blenderbim-matrix.yml'
- 'src/blenderbim/**'
- 'src/ifcopenshell-python/ifcopenshell/**'
- 'src/bcf/src/bcf/**'
- 'src/ifcclash/ifcclash/**'
- 'src/ifccobie/**'
- 'src/ifcdiff/**'
- 'src/ifccsv/**'
- 'src/ifcpatch/ifcpatch/**'
- 'src/ifc4d/ifc4d/**'
- 'src/ifc5d/ifc5d/**'
- 'src/ifccityjson/**'
branches:
- v0.7.0
env:
major: 0
minor: 0
name: blenderbim
jobs:
activate:
runs-on: ubuntu-latest
if: |
github.repository == 'IfcOpenShell/IfcOpenShell'
steps:
- name: Set env
run: echo ok go
build:
needs: activate
name: ${{ matrix.config.name }}-${{ matrix.pyver }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
pyver: [py37, py39, py310]
config:
- {
name: "Windows Build",
short_name: win,
}
- {
name: "Linux Build",
short_name: linux
}
- {
name: "MacOS Build",
short_name: macos
}
- {
name: "MacOS ARM Build",
short_name: macosm1
}
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2 # https://github.com/actions/setup-python
with:
python-version: '3.7.7' # Version range or exact version of a Python version to use, using SemVer's version range syntax
architecture: 'x64' # optional x64 or x86. Defaults to x64 if not specified
- run: echo ${{ env.DATE }}
- name: Get current date
id: date
run: echo "::set-output name=date::$(date +'%y%m%d')"
- name: Compile
run: |
cp -r src/blenderbim src/blenderbim_${{ matrix.config.short_name }}_${{ matrix.pyver }} &&
cd src/blenderbim_${{ matrix.config.short_name }}_${{ matrix.pyver }} &&
make dist PLATFORM=${{ matrix.config.short_name }} PYVERSION=${{ matrix.pyver }}
- name: Upload Zip file to release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: src/blenderbim_${{ matrix.config.short_name }}_${{ matrix.pyver }}/dist/blenderbim-${{steps.date.outputs.date}}-${{ matrix.pyver }}-${{ matrix.config.short_name }}.zip
asset_name: blenderbim-${{steps.date.outputs.date}}-${{ matrix.pyver }}-${{ matrix.config.short_name }}.zip
tag: "blenderbim-${{steps.date.outputs.date}}"
overwrite: true
body: "Daily developer testing build blenderbim-${{steps.date.outputs.date}}"
@@ -0,0 +1,64 @@
name: ci-ifcopenshell-conda-daily
on:
workflow_run:
workflows: ["ci"]
types:
- completed
jobs:
activate:
runs-on: ubuntu-latest
if: |
github.repository == 'IfcOpenShell/IfcOpenShell'
steps:
- name: Set env
run: echo ok go
test:
name: ${{ matrix.platform.distver }}-${{ matrix.pyver.name }}
needs: activate
runs-on: ${{ matrix.platform.distver }}
defaults:
run:
shell: bash -l {0}
strategy:
fail-fast: false
matrix:
pyver: [
{ name: py39, distver: '3.9' },
{ name: py310, distver: '3.10'}
]
platform: [
{ name: Windows, distver: windows-2022, upload: 'false' },
{ name: Windows, distver: windows-2019, upload: 'true' },
{ name: Linux, distver: ubuntu-20.04, upload: 'false' },
{ name: Linux, distver: ubuntu-18.04, upload: 'true' },
{ name: macOS, distver: macos-11, upload: 'true' },
{ name: macOS, distver: macos-10.15, upload: 'false' }
]
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Download MacOSX SDK
if: ${{ matrix.platform.name == 'macOS' }}
run: |
curl -o MacOSX10.13.sdk.tar.xz -L https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX10.13.sdk.tar.xz && \
tar xf MacOSX10.13.sdk.tar.xz && \
sudo mv -v MacOSX10.13.sdk /opt/ && \
ls /opt/
- uses: seanmiddleditch/gha-setup-ninja@master
- uses: conda-incubator/setup-miniconda@v2 # https://github.com/conda-incubator/setup-miniconda
with:
activate-environment: conda-build
python-version: ${{ matrix.pyver.distver }}
environment-file: conda/environment.yml
- name: build, test and upload ifcopenshell
if: ${{ matrix.platform.upload == 'true' }}
run: |
conda-build . --python ${{ matrix.pyver.distver }} -c conda-forge --token ${{ secrets.ANACONDA_TOKEN }} --user ifcopenshell --no-remove-work-dir
- name: build & test ifcopenshell
if: ${{ matrix.platform.upload == 'false' }}
run: |
conda-build . --python ${{ matrix.pyver.distver }} -c conda-forge --no-remove-work-dir
@@ -0,0 +1,73 @@
name: ci-ifcopenshell-pypi
on:
schedule:
# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12 or JAN-DEC)
# │ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT)
# * * * * *
- cron: "49 23 1 * *" # 11min before utc midnight
env:
major: 0
minor: 0
name: ifcopenshell
jobs:
activate:
runs-on: ubuntu-latest
if: |
github.repository == 'IfcOpenShell/IfcOpenShell'
steps:
- name: Set env
run: echo ok go
build:
needs: activate
name: ${{ matrix.config.name }}-${{ matrix.pyver }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
pyver: [py36, py37, py38, py39, py310]
config:
- {
name: "Windows Build",
short_name: win,
}
- {
name: "Linux Build",
short_name: linux
}
- {
name: "MacOS Build",
short_name: macos
}
- {
name: "MacOS ARM Build",
short_name: macosm1
}
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2 # https://github.com/actions/setup-python
with:
python-version: '3.7.7' # Version range or exact version of a Python version to use, using SemVer's version range syntax
architecture: 'x64' # optional x64 or x86. Defaults to x64 if not specified
- run: echo ${{ env.DATE }}
- name: Get current date
id: date
run: echo "::set-output name=date::$(date +'%y%m%d')"
- name: Compile
run: |
pip install build
cp -r src/ifcopenshell-python src/ifcopenshell_${{ matrix.config.short_name }}_${{ matrix.pyver }} &&
cd src/ifcopenshell_${{ matrix.config.short_name }}_${{ matrix.pyver }} &&
make dist PLATFORM=${{ matrix.config.short_name }} PYVERSION=${{ matrix.pyver }}
- name: Publish a Python distribution to PyPI
uses: ortega2247/pypi-upload-action@master
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
packages_dir: src/ifcopenshell_${{ matrix.config.short_name }}_${{ matrix.pyver }}/dist
+95
View File
@@ -0,0 +1,95 @@
name: ci_py_only
on:
push:
paths:
- 'src/**'
- 'test/**'
- 'conda/**'
- 'cmake/**'
- '.github/workflows/ci_py_only.yml'
pull_request:
jobs:
activate:
runs-on: ubuntu-latest
if: |
github.repository == 'IfcOpenShell/IfcOpenShell' &&
!contains(github.event.head_commit.message, 'skip ci')
steps:
- run: echo ok go
build:
runs-on: ubuntu-20.04
needs: activate
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Install C++ dependencies
run: |
sudo apt update
sudo apt-get install --no-install-recommends \
git cmake gcc g++ \
libboost-date-time-dev \
libboost-filesystem-dev \
libboost-iostreams-dev \
libboost-program-options-dev \
libboost-regex-dev \
libboost-system-dev \
libboost-thread-dev \
python3-all-dev python3-pip \
swig libpcre3-dev libxml2-dev \
libtbb-dev nlohmann-json3-dev \
libocct-foundation-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev libocct-ocaf-dev libocct-visualization-dev libocct-data-exchange-dev \
libhdf5-dev libcgal-dev
- name: ccache
uses: hendrikmuhs/ccache-action@v1
- name: Build ifcopenshell
run: |
mkdir build && cd build
cmake \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=/usr \
-DCMAKE_SYSTEM_PREFIX_PATH=/usr \
-DOCC_INCLUDE_DIR=/usr/include/opencascade \
-DOCC_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3 \
-DPYTHON_INCLUDE_DIR:PATH=/usr/include/python3.8 \
-DPYTHON_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libpython3.8.so \
-DCOLLADA_SUPPORT=Off \
"-DSCHEMA_VERSIONS=2x3;4" \
-DBUILD_CONVERT=Off \
-DGLTF_SUPPORT=On \
-DJSON_INCLUDE_DIR=/usr/include \
-DCGAL_INCLUDE_DIR=/usr/include \
-DGMP_INCLUDE_DIR=/usr/include \
-DMPFR_INCLUDE_DIR=/usr/include \
-DGMP_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DMPFR_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DHDF5_INCLUDE_DIR=/usr/include/hdf5/serial \
../cmake
sudo make -j $(nproc)
sudo make install
- name: Install Python dependencies
run: |
sudo /usr/bin/python -m pip install -U pip
sudo /usr/bin/python -m pip install xmlschema numpy lxml
sudo /usr/bin/python -m pip install src/bcf
sudo /usr/bin/python -m pip install pytest
sudo /usr/bin/python -m pip install isodate
sudo /usr/bin/python -m pip install lark
sudo /usr/bin/python -m pip install networkx
- name: Test
run: |
cd test
sudo /usr/bin/python tests.py
cd ../src/ifcopenshell-python
mv ifcopenshell ifcopenshell-local # Force testing on installed module
make test
+105
View File
@@ -0,0 +1,105 @@
name: ci
on:
push:
paths:
- 'src/ifcblender/**'
- 'src/ifcconvert/**'
- 'src/ifcgeom/**'
- 'src/ifcgeom_schema_agnostic/**'
- 'src/ifcgeomserver/**'
- 'src/ifcjni/**'
- 'src/ifcmax/**'
- 'src/ifcopenshell-python/**'
- '!src/ifcopenshell-python/docs/**'
- 'src/ifcparse/**'
- 'src/ifcwrap/**'
- 'src/qtviewer/**'
- 'src/serializers/**'
- 'conda/**'
- 'cmake/**'
- '.github/workflows/ci.yml'
pull_request:
jobs:
activate:
runs-on: ubuntu-latest
if: |
github.repository == 'IfcOpenShell/IfcOpenShell' &&
!contains(github.event.head_commit.message, 'skip ci')
steps:
- run: echo ok go
build:
runs-on: ubuntu-20.04
needs: activate
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Install C++ dependencies
run: |
sudo apt update
sudo apt-get install --no-install-recommends \
git cmake gcc g++ \
libboost-date-time-dev \
libboost-filesystem-dev \
libboost-iostreams-dev \
libboost-program-options-dev \
libboost-regex-dev \
libboost-system-dev \
libboost-thread-dev \
python3-all-dev python3-pip \
swig libpcre3-dev libxml2-dev \
libtbb-dev nlohmann-json3-dev \
libocct-foundation-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev libocct-ocaf-dev libocct-visualization-dev libocct-data-exchange-dev \
libhdf5-dev libcgal-dev
- name: ccache
uses: hendrikmuhs/ccache-action@v1
- name: Build ifcopenshell
run: |
mkdir build && cd build
cmake \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=/usr \
-DCMAKE_SYSTEM_PREFIX_PATH=/usr \
-DOCC_INCLUDE_DIR=/usr/include/opencascade \
-DOCC_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3 \
-DPYTHON_INCLUDE_DIR:PATH=/usr/include/python3.8 \
-DPYTHON_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libpython3.8.so \
-DCOLLADA_SUPPORT=Off \
"-DSCHEMA_VERSIONS=2x3;4;4x3" \
-DGLTF_SUPPORT=On \
-DJSON_INCLUDE_DIR=/usr/include \
-DCGAL_INCLUDE_DIR=/usr/include \
-DGMP_INCLUDE_DIR=/usr/include \
-DMPFR_INCLUDE_DIR=/usr/include \
-DGMP_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DMPFR_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DHDF5_INCLUDE_DIR=/usr/include/hdf5/serial \
../cmake
sudo make -j $(nproc)
sudo make install
- name: Install Python dependencies
run: |
sudo /usr/bin/python -m pip install -U pip
sudo /usr/bin/python -m pip install xmlschema numpy lxml
sudo /usr/bin/python -m pip install src/bcf
sudo /usr/bin/python -m pip install pytest
sudo /usr/bin/python -m pip install isodate
sudo /usr/bin/python -m pip install lark
sudo /usr/bin/python -m pip install networkx
- name: Test
run: |
cd test
sudo /usr/bin/python tests.py
cd ../src/ifcopenshell-python
mv ifcopenshell ifcopenshell-local # Force testing on installed module
make test
+117
View File
@@ -0,0 +1,117 @@
name: Release
on:
push:
tags:
- 'v[0-9].[0-9].[0-9]*'
jobs:
activate:
if: github.repository == 'IfcOpenShell/IfcOpenShell'
runs-on: ubuntu-latest
steps:
- run: echo ok go
build:
needs: activate
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v2
with:
submodules: recursive
- name: Install C++ dependencies
run: |
sudo apt update
sudo apt-get install --no-install-recommends \
git cmake gcc g++ \
libboost-date-time-dev \
libboost-filesystem-dev \
libboost-iostreams-dev \
libboost-program-options-dev \
libboost-regex-dev \
libboost-system-dev \
libboost-thread-dev \
python3-all-dev python3-pip \
swig libpcre3-dev libxml2-dev \
libtbb-dev nlohmann-json3-dev \
libocct-foundation-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev libocct-ocaf-dev libocct-visualization-dev libocct-data-exchange-dev \
libhdf5-dev libcgal-dev opencollada-dev
- name: Build
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
mkdir build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=$PWD/install/ \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=/usr \
-DCMAKE_SYSTEM_PREFIX_PATH=/usr \
-DBUILD_PACKAGE=On \
-DOCC_INCLUDE_DIR=/usr/include/opencascade \
-DOCC_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3 \
-DPYTHON_INCLUDE_DIR:PATH=/usr/include/python3.8 \
-DPYTHON_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libpython3.8.so \
-DLIBXML2_INCLUDE_DIR=/usr/include/libxml2 \
-DLIBXML2_LIBRARIES=/usr/lib/x86_64-linux-gnu/libxml2.so \
-DGLTF_SUPPORT=On \
-DJSON_INCLUDE_DIR=/usr/include \
-DCGAL_INCLUDE_DIR=/usr/include \
-DGMP_INCLUDE_DIR=/usr/include \
-DMPFR_INCLUDE_DIR=/usr/include \
-DGMP_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DMPFR_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DHDF5_INCLUDE_DIR=/usr/include/hdf5/serial \
-DOPENCOLLADA_INCLUDE_DIR=/usr/include/opencollada \
-DOPENCOLLADA_LIBRARY_DIR=/usr/lib/opencollada/ \
../cmake
make -j $(nproc)
make install
- name: Package
id: package
run: |
make package
echo ::set-output name=tgz::$( ls assets/*.tar.gz | head -n 1 | xargs basename )
echo ::set-output name=deb::$( ls assets/*.deb | head -n 1 | xargs basename )
working-directory: build
env:
CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Release
id: release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: true
body: |
Changes to this release
- add github actions support #1306
- add boost depends to ifcopenshell deb packaging
- <add more changes here>
See more details in the documentation
# body_path: build/CHANGELOG.md
- name: Upload TGZ
id: upload-tgz
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
asset_path: build/assets/${{ steps.package.outputs.tgz }}
asset_name: ${{ steps.package.outputs.tgz }}
asset_content_type: application/x-gzip
- name: Upload DEB
id: upload-deb
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
asset_path: build/assets/${{ steps.package.outputs.deb }}
asset_name: ${{ steps.package.outputs.deb }}
asset_content_type: application/vnd.debian.binary-package
+75
View File
@@ -0,0 +1,75 @@
# Dependency and build folders created by the build scripts
/_deps/
/_build-vs*-x*/
/_deps-vs*-x*-installed/
/_installed-vs*-x*/
/build/
# output directories
/cmake/out/
/docs/out/
/src/examples/out/
/src/ifcmax/out/
/src/ifcwrap/out/
/src/qtviewer/out/
/win/BuildDepsCache*.txt
# IfcExpressParser residue
/src/ifcexpressparser/express_parser.py
# General Python residue
__pycache__
*.py.bak
# Visual Studio Code files
.vscode
.vs
# PyCharm files
.idea
#Virtual Env Files
Pipfile
Pipfile.lock
# Docs
/docs/output
/docs/rst_files
/docs/doxygen
/src/ifcblenderexport/docs/_build
# gettext binary translation files
*.mo
# Vim
*.swp
*.swo
# Flask
instance/*
!instance/.gitignore
.webassets-cache
.env
*.db
# Byte-compiled / optimized / DLL files
*.py[cod]
*$py.class
# pipenv
Pipfile
Pipfile.lock
# Database
*.db
# PyTest
htmlcov
.coverage
# Blender
*.blend1
# Sphinx
_build/
# IDS Docs
src/ifcopenshell-python/test/build
+13
View File
@@ -0,0 +1,13 @@
[submodule "test/input"]
path = test/input
url = https://github.com/IfcOpenShell/files
ignore = dirty
[submodule "src/ifcopenshell-python/ifcopenshell/mvd"]
path = src/ifcopenshell-python/ifcopenshell/mvd
url = https://github.com/opensourceBIM/python-mvdxml/
[submodule "src/svgfill"]
path = src/svgfill
url = https://github.com/IfcOpenShell/svgfill
[submodule "src/ifcopenshell-python/test/Sample-BIM-Files"]
path = src/ifcopenshell-python/test/Sample-BIM-Files
url = https://github.com/IfcOpenShell/ids-test-files
+81
View File
@@ -0,0 +1,81 @@
language: cpp
compiler: gcc
cache: ccache
os: linux
dist: focal
addons:
apt:
update: true
packages:
- libboost-date-time-dev
- libboost-filesystem-dev
- libboost-iostreams-dev
- libboost-program-options-dev
- libboost-regex-dev
- libboost-system-dev
- libboost-thread-dev
- libocct-data-exchange-dev
- libocct-foundation-dev
- libocct-modeling-algorithms-dev
- libocct-modeling-data-dev
- libxml2-dev
- nlohmann-json3-dev
- opencollada-dev
- python3-all-dev
- python3-pip
- swig
- libhdf5-dev
before_script:
- if [ $TRAVIS_OS_NAME == "linux" ]; then ccache -z; fi
install:
# for IDS
- python3 -m pip install xmlschema
script:
- pwd
- mkdir build && cd build
- |
cmake \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DOCC_INCLUDE_DIR=/usr/include/opencascade \
-DOCC_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3 \
-DPYTHON_INCLUDE_DIR:PATH=/usr/include/python3.8 \
-DPYTHON_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libpython3.8.so \
"-DSCHEMA_VERSIONS=2x3;4" \
-DGLTF_SUPPORT=On \
-DJSON_INCLUDE_DIR=/usr/include \
-DHDF5_INCLUDE_DIR=/usr/include/hdf5/serial \
../cmake
# TODO: Drop sudo
- sudo make -j $(nproc) install
- cd ../test
- /usr/bin/python tests.py
- /usr/bin/python ../src/ifcopenshell-python/ifcopenshell/test_ids.py
- cd input
- /usr/local/bin/IfcConvert -yv acad2010_walls.ifc acad2010_walls.glb
- /usr/bin/python -c "from io import open; import ifcopenshell; f = ifcopenshell.open('encoding.ifc'); assert list(map(ord, f[1][0])) == [39, 97, 39, 32, 49, 109, 179, 32, 8804, 32, 53, 109, 179, 32, 8805, 32, 49, 48, 109, 179]"
- |
(for i in *.ifc; do \
echo $i | tee -a log; \
timeout 1m /usr/local/bin/IfcConvert -yv "$i" "$i.dae" --validate >> log 2>&1; \
echo $i $? >> statuses; \
done) || true
- echo Failed
- grep -v 0$ statuses
- grep -v 0$ statuses | wc -l
- echo Succeeded
- grep 0$ statuses
- grep 0$ statuses | wc -l
after_script:
- if [ $TRAVIS_OS_NAME == "linux" ]; then ccache -s; fi
+2 -2
View File
@@ -1,7 +1,7 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -618,4 +618,4 @@ an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
END OF TERMS AND CONDITIONS
+1 -1
View File
@@ -1,7 +1,7 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
+39
View File
@@ -0,0 +1,39 @@
# -*- mode: Dockerfile -*-
FROM ubuntu:focal
ARG CHANNEL
ENV CHANNEL=${CHANNEL:-latest}
RUN apt-get update \
&& apt-get install -y \
vim \
ssh \
sudo \
wget \
software-properties-common ;\
rm -rf /var/lib/apt/lists/*
RUN useradd --user-group --create-home --shell /bin/bash IfcOpenShell ;\
echo "IfcOpenShell ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
ENV DEBIAN_FRONTEND=noninteractive
RUN echo "deb http://archive.ubuntu.com/ubuntu focal-proposed main restricted" | tee -a /etc/apt/sources.list; \
echo "deb http://archive.ubuntu.com/ubuntu focal-proposed universe" | tee -a /etc/apt/sources.list; \
echo "deb http://archive.ubuntu.com/ubuntu focal-proposed multiverse" | tee -a /etc/apt/sources.list; \
apt-get -qq update; \
apt-get -y install tzdata dos2unix rsync; \
apt-get -y install python3 libxml2 libpython3.8 \
libboost-all-dev \
libocct-foundation-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev \
libocct-ocaf-dev libocct-visualization-dev libocct-data-exchange-dev \
libhdf5-serial-dev ; \
rm -rf /var/lib/apt/lists/* ;
COPY . /home/IfcOpenShell/
RUN ls -lrtR /home/IfcOpenShell
RUN dpkg -i /home/IfcOpenShell/*.deb
USER IfcOpenShell
-65
View File
@@ -1,65 +0,0 @@
IfcOpenShell
============
open source (LGPL) software library for working with the IFC file format
http://IfcOpenShell.org
Compiling on Windows
====================
Users are advised to use the Visual Studio .sln file in the win/ folder.
For Windows users a prebuilt Open CASCADE version is available from the
http://opencascade.org website. Download and install this version and
provide the paths to the Open CASCADE header and library files to MS
Visual Studio C++.
For building the Autodesk 3ds Max plugin, the 3ds Max SDK needs to be
installed as well as 3ds Max itself. Please provide the include and
library paths to Visual Studio.
For building the IfcPython wrapper, SWIG needs to be installed. Please
download the latest swigwin version from http://www.swig.org/download.html.
After extracting the .zip file, please add the extracted folder to the PATH
environment variable. Python needs to be installed, please provide the
include and library paths to Visual Studio.
Compiling on *nix
====================
Users are advised to build IfcOpenShell using the cmake file provided in
the cmake/ folder. There might be an Open CASCADE package in your operating
system's software repository. If not, you will need to compile Open
CASCADE yourself. See http://opencascade.org.
For building the IfcPython wrapper, SWIG and Python development are
required.
To build IfcOpenShell please take the following steps:
$ cd /path/to/IfcOpenShell/cmake
$ mkdir build
$ cd build
Optionally:
$ OCC_INCLUDE_PATH="/path/to/OpenCASCADE/include"
$ OCC_LIBRARY_PATH="/path/to/OpenCASCADE/lib"
$ export OCC_INCLUDE_PATH
$ export OCC_LIBRARY_PATH
$ cmake ../
$ make
If all worked out correctly you can now use IfcOpenShell. For example:
$ wget ftp://ftp.dds.no/pub/ifc/Munkerud/Munkerud_hus6_BE.zip
$ unzip Munkerud_hus6_BE.zip
$ ./IfcObj Munkerud_hus6_BE.ifc
$ less Munkerud_hus6_BE.obj
Or:
$ wget ftp://ftp.dds.no/pub/ifc/Munkerud/Munkerud_hus6_BE.zip
$ unzip Munkerud_hus6_BE.zip
$ python
>>> import IfcImport
>>> IfcImport.Init('Munkerud_hus6_BE.ifc')
>>> geom = IfcImport.Get()
>>> geom.name
>>> for v in geom.mesh.verts: v
+332
View File
@@ -0,0 +1,332 @@
IfcOpenShell
============
IfcOpenShell is an open source ([LGPL]) software library for working with the Industry Foundation Classes ([IFC])
file format. Extensive geometric support is implemented for the IFC releases [IFC2x3 TC1] and [IFC4 Add2 TC1].
Support for parsing is provided for IFC4x1, IFC4x2, and the IFC4x3 release candidates. Extending with support for
arbitrary IFC schemas is possible at compile-time when using C++ and at run-time when using Python.
For more information, see
* [http://ifcopenshell.org](http://ifcopenshell.org)
* [http://academy.ifcopenshell.org](http://academy.ifcopenshell.org)
| Service | Status |
| ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| Anaconda Daily Build | [![Anaconda-Server Badge](https://img.shields.io/conda/vn/ifcopenshell/ifcopenshell)](https://anaconda.org/ifcopenshell/ifcopenshell) |
| Anaconda v0.7.0 Stable | [![Anaconda-Server Badge](https://img.shields.io/conda/vn/conda-forge/ifcopenshell)](https://anaconda.org/conda-forge/ifcopenshell) |
| PyPi Daily Build | [![PyPi Badge](https://img.shields.io/pypi/v/ifcopenshell)](https://pypi.org/project/ifcopenshell/) |
| ArchLinux AUR Package | [![AUR Badge](https://img.shields.io/aur/version/ifcopenshell-git)](https://aur.archlinux.org/packages/ifcopenshell-git) |
| BlenderBIM Add-on Chocolatey (under moderation) | [![Chocolatey Badge](https://img.shields.io/chocolatey/v/blenderbim-nightly)](https://community.chocolatey.org/packages/blenderbim-nightly/) |
| Sponsor development on OpenCollective | [![Financial Contributors](https://opencollective.com/opensourcebim/tiers/badge.svg)](https://opencollective.com/opensourcebim/) |
| Docker hub | [![Docker Pulls](https://img.shields.io/docker/pulls/aecgeeks/ifcopenshell)](https://hub.docker.com/r/aecgeeks/ifcopenshell) |
Prerequisites
-------------
* Git
* CMake (3.1.3 or newer)
* Windows: [Visual Studio] 2008 to 2019 (2022 not yet supported by dependency CMake) with C++ toolset (or [Visual C++ Build Tools]) or [MSYS2] + MinGW
* *nix: GCC 4.7 or newer, or Clang (any version)
Dependencies
-------------
* [Boost](http://www.boost.org/)
* [Open Cascade](https://dev.opencascade.org/) - *optional*, but required for building IfcGeom
([official](https://dev.opencascade.org/release), "OCCT", or [community edition](https://github.com/tpaviot/oce), "OCE")
For converting IFC representation items into BRep solids and tessellated meshes
* [OpenCOLLADA](https://github.com/khronosGroup/OpenCOLLADA/) - *optional*
For IfcConvert to be able to write tessellated Collada (.dae) files
* [SWIG](http://www.swig.org/) and [Python](https://www.python.org/) - *optional*
For building the IfcOpenShell Python interface and the Blender add-on
* [3ds Max SDK](http://www.autodesk.com/products/3ds-max/free-trial) - *optional*
For building the 3ds Max plug-in.
All recent versions of 3ds Max (2014 and newer) are 64-bit only, so a 64-bit installation is assumed.
Building IfcOpenShell
---------------------
Note 1: The path where the source code is cloned to can contain spaces but non-ASCII characters are very likely to cause problems with the build.
Note 2: If you had not used `git clone --recursive https://github.com/IfcOpenShell/IfcOpenshell.git`, update the submodules by running `git submodule init & git submodule update`.
Note 3: Be careful with special characters is the path when using the nix or win build scripts, because the OpenCASCADE build will fail on paths containing ++ and likely other situations.
### Compiling on Windows
The preferred way to fetch and build this project's dependencies is to use the build scripts
in win/ folder. **See [win/readme.md] for more information**.
#### Using Visual Studio
Instructions in a nutshell (**assuming Visual Studio 2015 x64 environment variables set**):
> cd IfcOpenShell\win
> build-deps.cmd
> run-cmake.bat
NB: `build-deps.cmd` need to be ran from the directory containing it, i.e. the `./win` folder.
You can now open and build the solution file in Visual Studio:
> ..\build-vs2015-x64\IfcOpenShell.sln
As the scripts default to using the `RelWithDebInfo` configuration, and a freshly created solution by CMake defaults
to `Debug`, make sure to switch the used build configuration. Build the `INSTALL` project (right-click -> Project
Only) to deploy the headers and binaries into a single location if wanted/needed.
Alternatively, one can use the utility batch file(s) to build and install the project easily from the command-line
(installing a project will build it also, if required):
> install-ifcopenshell.bat
#### Using MSYS2 + MinGW
Start the MSYS2 Shell and then:
$ cd IfcOpenShell/win
$ ./build-deps.sh
$ ./run-cmake.sh
$ ./install-ifcopenshell.sh
#### Using Bash on Ubuntu on Windows
Start Bash on Ubuntu on Windows and follow the instructions below. Compiling on Ubuntu 14.04.4 LTS using GCC 4.8.4
or Clang 3.5 has been confirmed to work.
### Compiling on *nix
The following instructions are for Ubuntu, modify as required for other operating systems. [nix/build-all.py] script
can be experimented with and studied for pointers for other operating systems, but note that this script is not currently
meant to be used for a typical IfcOpenShell workspace setup.
Note 1: It is recommended to use OCCT for IfcOpenShell. You could use OCE as well, but sometimes it may lag behind OCCT and
therefore not compile with the latest IfcOpenShell.
Note 2: where `make -j` is written, add a number roughly equal to the amount of CPU cores + 1.
**1)** Install most of the prerequisites and dependencies:
$ sudo apt-get install git cmake gcc g++ libboost-all-dev libcgal-dev
**2a)** Either use an OCCT package from your operating system's software repository
$ sudo apt-get install libocct-data-exchange-dev libocct-draw-dev libocct-foundation-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev libocct-ocaf-dev libocct-visualization-dev
**2b)** or, if OCCT is not available or the latest code is wanted, obtain and compile OCCT from https://dev.opencascade.org/release
**2c)** or, if you'd like to try using OCE, use the package from your operating system's software repository
$ sudo apt-get install liboce-foundation-dev liboce-modeling-dev liboce-ocaf-dev liboce-visualization-dev liboce-ocaf-lite-dev
**2d)** or if OCE is not available, or the latest code is wanted, compile OCE yourself (note that the build takes a long time)
$ sudo apt-get install libftgl-dev libtbb2 libtbb-dev libgl1-mesa-dev libfreetype6-dev
$ git clone https://github.com/tpaviot/oce.git
$ cd oce
$ mkdir build && cd build
$ cmake ..
$ make -j
$ sudo make install
**3)** For building IfcConvert with COLLADA (.dae) support (on by default), OpenCOLLADA is needed:
$ sudo apt-get install libpcre3-dev libxml2-dev
$ git clone https://github.com/KhronosGroup/OpenCOLLADA.git
$ cd OpenCOLLADA
Using a known good revision, but HEAD should work too:
$ git checkout 064a60b65c2c31b94f013820856bc84fb1937cc6
$ mkdir build && cd build
$ cmake ..
$ make -j
$ sudo make install
**4)** For building the IfcPython wrapper (on by default), SWIG and Python development are needed, if not already available:
$ sudo apt-get install python-all-dev swig
**5)** To build IfcOpenShell please take the following steps. Alternatively use environment variables for setting the
dependencies' paths. `OCC_INCLUDE_DIR` might be needed to set also. `OPENCOLLADA_INCLUDE_DIR` and `OPENCOLLADA_LIBRARY_DIR`
(and potentially `PCRE_LIBRARY_DIR`) are needed if building with COLLADA support. (`-DCOLLADA_SUPPORT=0` disables it).
$ cd /path/to/IfcOpenShell
$ mkdir build && cd build
$ cmake ../cmake -DOCC_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu/ \
-DOPENCOLLADA_INCLUDE_DIR="/usr/local/include/opencollada" \
-DOPENCOLLADA_LIBRARY_DIR="/usr/local/lib/opencollada" \
-DPCRE_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu/ \
-DCGAL_INCLUDE_DIR=/usr/include \
-DGMP_INCLUDE_DIR=/usr/include \
-DMPFR_INCLUDE_DIR=/usr/include \
-DGMP_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DMPFR_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DHDF5_SUPPORT=Off
$ make -j
If all worked out correctly you can now use IfcOpenShell. See the examples below.
**6)** Install the project if wanted:
$ sudo make install
### Installing on MacOS Using Homebrew
**1)** Install all dependencies using [Homebrew](https://brew.sh/)
```{shell}
$ brew install boost cmake python3 cgal ftgl gmp libaec opencascade swig hdf5 zlib
# homebrew automatically links most libraries, except some keg-only ones
$ brew link zlib --force
```
**2)** Clone the git repo and its submodules
```{shell}
$ git clone --recurse-submodules https://github.com/IfcOpenShell/IfcOpenShell.git
```
**3)** Build IfcOpenShell with flags for Homebrew dependencies: (``/usr/local/``) for Intel machines with x84_64 architecture,
(``/opt/homebrew/``) for Apple Silicon processors with arm64 architecture.
```{shell}
$ cd /path/to/IfcOpenShell
$ mkdir build && cd build
# set library flags
$ export LDFLAGS="$LDFLAGS -Wl,-flat_namespace,-undefined,suppress"
$ cmake ../cmake
-DPYTHON_EXECUTABLE=/opt/homebrew/bin/python3.10 \
-DPYTHON_LIBRARY=/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10/lib/libpython3.10.dylib \
-DPYTHON_INCLUDE_DIR=/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10/include/python3.10/ \
-DOCC_LIBRARY_DIR=/opt/homebrew/lib/ \
-DOCC_INCLUDE_DIR=/opt/homebrew/include/opencascade/ \
-DCGAL_INCLUDE_DIR=/opt/homebrew/include/ \
-DGMP_LIBRARY_DIR=/opt/homebrew/lib/ \
-DMPFR_LIBRARY_DIR=/opt/homebrew/lib/ \
-DHDF5_LIBRARY_DIR=/opt/homebrew/lib/ \
-DHDF5_INCLUDE_DIR=/opt/homebrew/include/ \
-DCOLLADA_SUPPORT=0
# `sysctl -n hw.ncpu` returns the number of cpu cores on macOS
$ make -j$(sysctl -n hw.ncpu)
```
Note: Make sure to compile using the XCode provided Apple Clang compiler, installed with `xcode-select --install
`, rather than a ```brew``` installed C/C++ compiler.
Installing IfcOpenShell with Conda
----------------------------------
Another option for building and installing IfcOpenShell is to use the popular
[Anaconda Python Distribution](https://www.anaconda.com/download).
The requirements are spread across a number of channels.
You can add these channels to your configuration, or specify them all on the command line:
$ conda install -c conda-forge -c oce -c dlr-sc -c ifcopenshell ifcopenshell
Usage examples
--------------
**Invoking IfcConvert from the command line**
$ wget -O duplex.zip https://portal.nibs.org/files/wl/\?id=4DsTgHFQAcOXzFetxbpRCECPbbfUqpgo
$ unzip duplex.zip
$ ./IfcConvert Duplex_A_20110907_optimized.ifc
$ less Duplex_A_20110907_optimized.obj
**Using the IfcOpenShell Python interface**
$ wget -O duplex.zip https://portal.nibs.org/files/wl/\?id=4DsTgHFQAcOXzFetxbpRCECPbbfUqpgo
$ unzip duplex.zip
$ python
>>> import ifcopenshell
>>> f = ifcopenshell.open("Duplex_A_20110907_optimized.ifc")
>>>
>>> # Accessing entity instances by type:
>>> f.by_type("ifcwall")[:2]
[#91=IfcWallStandardCase('2O2Fr$t4X7Zf8NOew3FL9r',#1,'Basic Wall:Interior - Partition (92mm Stud):144586',$,'Basic Wall:Interior - Partition (92mm Stud):128360',#5198,#18806,'144586'), #92=IfcWallStandardCase('2O2Fr$t4X7Zf8NOew3FLIE',#1,'Basic Wall:Interior - Partition (92mm Stud):143921',$,'Basic Wall:Interior - Partition (92mm Stud):128360',#5206,#18805,'143921')]
>>> wall = _[0]
>>> len(wall) # number of EXPRESS attributes
8
>>>
>>> # Accessing EXPRESS attributes by name:
>>> wall.GlobalId
'2O2Fr$t4X7Zf8NOew3FL9r'
>>> wall.Name = "My wall"
>>> wall.NonExistingAttr
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File ".\ifcopenshell.py", line 14, in __getattr__
except: raise AttributeError("entity instance of type '%s' has no attribute'%s'"%(self.wrapped_data.is_a(), name)) from None
AttributeError: entity instance of type 'IfcWallStandardCase' has no attribute 'NonExistingAttr'
>>> wall.GlobalId = 3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File ".\ifcopenshell.py", line 26, in __setattr__
self[self.wrapped_data.get_argument_index(key)] = value
File ".\ifcopenshell.py", line 30, in __setitem__
self.wrapped_data.set_argument(idx, entity_instance.map_value(value))
File ".\ifc_wrapper.py", line 118, in <lambda>
set_argument = lambda self,x,y: self._set_argument(x) if y is None else self
._set_argument(x,y)
File ".\ifc_wrapper.py", line 114, in _set_argument
def _set_argument(self, *args): return _ifc_wrapper.entity_instance__set_argument(self, *args)
RuntimeError: INT is not a valid type for 'GlobalId'
>>> # Creating new entity instances
>>> f.createIfcCartesianPoint(Coordinates=(1.0,1.5,2.0))
#27530=IfcCartesianPoint((1.,1.5,2.))
>>>
>>> # Working with GlobalId attributes:
>>> import uuid
>>> ifcopenshell.guid.compress(uuid.uuid1().hex)
'3x4C8Q_6qHuv$P$FYkANRX'
>>> new_guid = _
>>> owner_hist = f.by_type("IfcOwnerHistory")[0]
>>> new_wall = f.createIfcWallStandardCase(new_guid, owner_hist, None, None, Tag='my_tag')
>>> new_wall.ObjectType = ''
>>> new_wall.ObjectPlacement = new_wall.Representation = None
>>>
>>> # Accessing entity instances by instance id or GlobalId:
>>> f[92]
#92=IfcWallStandardCase('2O2Fr$t4X7Zf8NOew3FLIE',#1,'Basic Wall:Interior - Partition (92mm Stud):143921',$,'Basic Wall:Interior - Partition (92mm Stud):128360',#5206,#18805,'143921')
>>> f['2O2Fr$t4X7Zf8NOew3FLIE']
#92=IfcWallStandardCase('2O2Fr$t4X7Zf8NOew3FLIE',#1,'Basic Wall:Interior - Partition (92mm Stud):143921',$,'Basic Wall:Interior - Partition (92mm Stud):128360',#5206,#18805,'143921')
>>>
>>> # Writing IFC-SPF files to disk:
>>> f.write("out.ifc")
Extra tools
-----------
Also available are a series of utilities that are based on or related to IfcOpenShell.
Those marked with an asterisk are part of IfcOpenShell.
| Name | License |
| ------------------------- | ------------------- |
| bcf | LGPL-3.0-or-later |
| blenderbim | GPL-3.0-or-later |
| bsdd | LGPL-3.0-or-later |
| ifc2ca | LGPL-3.0-or-later |
| ifc4d | LGPL-3.0-or-later |
| ifc5d | LGPL-3.0-or-later |
| ifcbimtester | LGPL-3.0-or-later |
| ifcblender | LGPL-3.0-or-later\* |
| ifccityjson | LGPL-3.0-or-later |
| ifcclash | LGPL-3.0-or-later |
| ifccobie | LGPL-3.0-or-later |
| ifcconvert | LGPL-3.0-or-later\* |
| ifccsv | LGPL-3.0-or-later |
| ifcdiff | LGPL-3.0-or-later |
| ifcfm | LGPL-3.0-or-later |
| ifcgeom | LGPL-3.0-or-later\* |
| ifcgeom\_schema\_agnostic | LGPL-3.0-or-later\* |
| ifcgeomserver | LGPL-3.0-or-later\* |
| ifcjni | LGPL-3.0-or-later\* |
| ifcmax | LGPL-3.0-or-later\* |
| ifcopenshell-python | LGPL-3.0-or-later\* |
| ifcparse | LGPL-3.0-or-later\* |
| ifcpatch | LGPL-3.0-or-later |
| ifcsverchok | GPL-3.0-or-later |
| ifcwrap | LGPL-3.0-or-later\* |
| qtviewer | LGPL-3.0-or-later\* |
| serializers | LGPL-3.0-or-later\* |
[LGPL]: https://github.com/IfcOpenShell/IfcOpenShell/tree/master/COPYING.LESSER "LGPL-3.0-or-later"
[IFC]: https://technical.buildingsmart.org/standards/ifc/ "IFC"
[IFC2x3 TC1]: https://standards.buildingsmart.org/IFC/RELEASE/IFC2x3/TC1/HTML/ "IFC2x3 TC1"
[IFC4 Add2 TC1]: https://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2_TC1/HTML/ "IFC4 Add2 TC1"
[Visual Studio]: https://www.visualstudio.com/ "Visual Studio"
[Visual C++ Build Tools]: http://landinghub.visualstudio.com/visual-cpp-build-tools "Visual C++ Build Tools"
[MSYS2]: https://msys2.github.io/ "MSYS2"
[win/readme.md]: https://github.com/IfcOpenShell/IfcOpenShell/tree/master/win/readme.md "win/readme.md"
[nix/build-all.py]: https://github.com/IfcOpenShell/IfcOpenShell/tree/master/nix/build-all.py "nix/build-all.py"
+34
View File
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Do not remove this test for UTF-8: if “Ω” doesnt appear as greek uppercase omega letter enclosed in quotation marks, you should use an editor that supports UTF-8, not this one. -->
<package xmlns="http://schemas.microsoft.com/packaging/2015/06/nuspec.xsd">
<metadata>
<id>blenderbim-nightly</id>
<version>blenderbim_build_version-alpha</version>
<packageSourceUrl>https://github.com/IfcOpenShell/IfcOpenShell</packageSourceUrl>
<owners>fbpyr</owners>
<!-- == SOFTWARE SPECIFIC SECTION == -->
<title>BlenderBIM install nightly</title>
<authors>Dion Moult and many more, see: https://github.com/IfcOpenShell/IfcOpenShell/graphs/contributors</authors>
<projectUrl>https://github.com/IfcOpenShell/IfcOpenShell</projectUrl>
<iconUrl>https://rawcdn.githack.com/IfcOpenShell/IfcOpenShell/c6ee1d1679d1298de0d7447ff108c22709c68e54/choco/blenderbim/blenderbim.png</iconUrl>
<!-- <copyright>Year Software Vendor</copyright> -->
<licenseUrl>https://github.com/IfcOpenShell/IfcOpenShell/blob/v0.7.0/COPYING</licenseUrl>
<requireLicenseAcceptance>true</requireLicenseAcceptance>
<projectSourceUrl>https://github.com/IfcOpenShell/IfcOpenShell</projectSourceUrl>
<docsUrl>https://blenderbim.org/docs/</docsUrl>
<!--<mailingListUrl></mailingListUrl>-->
<bugTrackerUrl>https://github.com/IfcOpenShell/IfcOpenShell/issues</bugTrackerUrl>
<tags>blender bim blenderbim ifc python opensource foss</tags>
<summary>opensource bim</summary>
<description>opensource bim addon for blender - source code at: https://github.com/IfcOpenShell/IfcOpenShell</description>
<!-- <releaseNotes>__REPLACE_OR_REMOVE__MarkDown_Okay</releaseNotes> -->
<dependencies>
<dependency id="blender" version="latest_blender_version_maj_min_pat" />
<dependency id="7zip" version="22.1"/>
</dependencies>
</metadata>
<files>
<file src="tools\**" target="tools" />
</files>
</package>
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

+80
View File
@@ -0,0 +1,80 @@
import datetime
import re
import sys
from urllib import request
def request_repo_info(url: str):
req = request.Request(url)
resp = request.urlopen(req)
if not resp.status == 200:
print(f"[ERROR] could not contact server: {url}")
quit(1)
return resp
if sys.argv[1] == "--do_choco_release?":
now = datetime.datetime.now()
blenderbim_date = (now - datetime.timedelta(days=1)).strftime("%y%m%d")
url = "https://github.com/IfcOpenShell/IfcOpenShell/releases"
resp = request_repo_info(url)
text = str(resp.read())
if blenderbim_date in text:
print("do_choco_release", end="")
elif sys.argv[1] == "--latest_blender_release_maj_min_pat?":
re_blender_version_min_maj_pat = r"Latest Version.+<span>Blender (\d+\.\d+\.\d+)</span>"
url = "https://community.chocolatey.org/packages/blender"
resp = request_repo_info(url)
html_txt = str(resp.read())
found = re.findall(re_blender_version_min_maj_pat, html_txt)
if found:
print(found[0], end="")
elif sys.argv[1] == "--latest_blender_release_maj_min?":
re_blender_version_min_maj = r"Latest Version.+<span>Blender (\d+\.\d+)\..+</span>"
url = "https://community.chocolatey.org/packages/blender"
resp = request_repo_info(url)
html_txt = str(resp.read())
found = re.findall(re_blender_version_min_maj, html_txt)
if found:
print(found[0], end="")
elif sys.argv[1] == "--latest_blender_python_version_maj_min?":
# get latest blender version first
re_blender_version_min_maj_pat = r"Latest Version.+<span>Blender (\d+\.\d+\.\d+)</span>"
url = "https://community.chocolatey.org/packages/blender"
resp = request_repo_info(url)
html_txt = str(resp.read())
found = re.findall(re_blender_version_min_maj_pat, html_txt)
if found:
latest_blender_version_tag = f"v{found[0]}"
re_blender_python_version_maj_min = r"SET\(PYTHON_VERSION (\d+.\d+) "
url = f"https://raw.githubusercontent.com/blender/blender/{latest_blender_version_tag}/build_files/cmake/Modules/FindPythonLibsUnix.cmake"
resp = request_repo_info(url)
html_txt = str(resp.read())
found = re.findall(re_blender_python_version_maj_min, html_txt)
if found:
print(found[0], end="")
elif sys.argv[1] == "--pyver?":
# get latest blender version first
re_blender_version_min_maj_pat = r"Latest Version.+<span>Blender (\d+\.\d+\.\d+)</span>"
url = "https://community.chocolatey.org/packages/blender"
resp = request_repo_info(url)
html_txt = str(resp.read())
found = re.findall(re_blender_version_min_maj_pat, html_txt)
if found:
latest_blender_version_tag = f"v{found[0]}"
re_blender_python_version_maj_min = r"SET\(PYTHON_VERSION (\d+.\d+) "
url = f"https://raw.githubusercontent.com/blender/blender/{latest_blender_version_tag}/build_files/cmake/Modules/FindPythonLibsUnix.cmake"
resp = request_repo_info(url)
html_txt = str(resp.read())
found = re.findall(re_blender_python_version_maj_min, html_txt)
if found:
print(f"py{found[0].replace('.', '')}", end="")
@@ -0,0 +1,49 @@
import os
from pathlib import Path
print("[INFO] inserting dynamic chocolatey package parameters")
HERE_DIR = Path(__file__).parent.absolute()
# print(f"[INFO] HERE_DIR: {HERE_DIR}")
topics = {
"spec": {
"path": HERE_DIR / "blenderbim.nuspec",
"env_vars": {
"latest_blender_version_maj_min_pat",
"blenderbim_build_version",
},
},
"install": {
"path": HERE_DIR / "tools" / "chocolateyinstall.ps1",
"env_vars": {
"url_blenderbim_py310_win_zip",
"sha256sum_blenderbim_py310_win_zip",
"latest_blender_version_maj_min",
},
},
"uninstall": {
"path": HERE_DIR / "tools" / "chocolateyuninstall.ps1",
"env_vars": {
"latest_blender_version_maj_min",
},
},
}
for topic, info in topics.items():
print(f"[INFO] {topic}:")
for env_var_name in info["env_vars"]:
print(f"[INFO] {env_var_name} exists?: {os.environ[env_var_name]}")
with open(info["path"], encoding="utf-8") as txt:
content = txt.read()
for env_var_name in info["env_vars"]:
# print(f"[INFO] replace: {env_var_name}")
content = content.replace(env_var_name, os.environ[env_var_name])
with open(info["path"], "w", encoding="utf-8") as txt:
txt.write(content)
print(f"[INFO] written: {info['path']}")
print("[INFO] inserting dynamic chocolatey package parameters successful")
@@ -0,0 +1,11 @@
$processName = "blender"
$blenderIsRunning = Get-Process -Name $processName -ErrorAction SilentlyContinue
if($blenderIsRunning -eq $null) {
echo "Blender is not running ready for next action."
}
else {
Write-Warning "$processName is still running - installer cannot safely proceed to next action."
Write-Warning "Please retry after closing all running blender applications."
exit 1
}
@@ -0,0 +1,29 @@
$ErrorActionPreference = 'Stop'
$url64 = 'url_blenderbim_py310_win_zip'
$checksum64 = 'sha256sum_blenderbim_py310_win_zip'
$checksumType64 = 'sha256'
$appDataUserDir = [System.Environment]::GetEnvironmentVariable('appdata')
$unzipTargetDir = "$appDataUserDir\Blender Foundation\Blender\latest_blender_version_maj_min\scripts\addons"
$chocoBaseDir = [System.Environment]::GetEnvironmentVariable('ChocolateyInstall')
$addonEnable = "$chocoBaseDir\lib\blenderbim-nightly\tools\enable_blenderbim_addon.py"
$programFilesDir = [System.Environment]::GetEnvironmentVariable('ProgramFiles')
$blenderExePath = "$env:ProgramFiles\Blender Foundation\Blender latest_blender_version_maj_min\blender.exe"
$processName = "blender"
$blenderIsRunning = Get-Process -Name $processName -ErrorAction SilentlyContinue
if($blenderIsRunning -eq $null) {
echo "attempting to install blenderbim."
Install-ChocolateyZipPackage -PackageName $env:ChocolateyPackageName -Url64 $url64 -Checksum64 $checksum64 -checksumType $checksumType64 -UnzipLocation $unzipTargetDir
Start-Process -FilePath $blenderExePath -ArgumentList "-b", "-y", "--python", "$addonEnable"
}
else {
Write-Warning "$processName is still running - blenderbim cannot be safely installed."
Write-Warning "Please retry after closing all running blender applications."
exit 1
}
@@ -0,0 +1,22 @@
$appDataUserDir = [System.Environment]::GetEnvironmentVariable('appdata')
$unzippedDir = "$appDataUserDir\Blender Foundation\Blender\latest_blender_version_maj_min\scripts\addons\blenderbim"
$chocoBaseDir = [System.Environment]::GetEnvironmentVariable('ChocolateyInstall')
$addonDisable = "$chocoBaseDir\lib\blenderbim-nightly\tools\disable_blenderbim_addon.py"
$programFilesDir = [System.Environment]::GetEnvironmentVariable('ProgramFiles')
$blenderExePath = "$env:ProgramFiles\Blender Foundation\Blender latest_blender_version_maj_min\blender.exe"
$processName = "blender"
$blenderIsRunning = Get-Process -Name $processName -ErrorAction SilentlyContinue
if($blenderIsRunning -eq $null) {
echo "attempting to uninstall blenderbim."
Start-Process -FilePath $blenderExePath -ArgumentList "-b", "-y", "--python", "$addonDisable"
Remove-Item -LiteralPath $unzippedDir -Force -Recurse
}
else {
Write-Warning "$processName is still running - blenderbim cannot be safely uninstalled."
Write-Warning "Please retry after closing all running blender applications."
exit 1
}
@@ -0,0 +1,8 @@
import bpy
bpy.ops.preferences.addon_disable(module='blenderbim')
bpy.ops.wm.save_userpref()
print("disabled blenderbim addon successfully.")
@@ -0,0 +1,8 @@
import bpy
bpy.ops.preferences.addon_enable(module='blenderbim')
bpy.ops.wm.save_userpref()
print("enabled blenderbim addon successfully.")
+955 -211
View File
File diff suppressed because it is too large Load Diff
+8
View File
@@ -0,0 +1,8 @@
compile:
conda activate conda-build && conda-build -c conda-forge . --keep-old-work --python 3.10.5
debug:
conda activate conda-build && conda-debug -c conda-forge . --python 3.10.4
env:
conda env update --f environment.yml --prune
+44
View File
@@ -0,0 +1,44 @@
mkdir build && cd build
set MY_PY_VER=%PY_VER:.=%
set LIBXML2="%LIBRARY_PREFIX%/lib/libxml2.lib"
cmake -G "Ninja" ^
-D CMAKE_BUILD_TYPE:STRING=Release ^
-D CMAKE_INSTALL_PREFIX:FILEPATH="%LIBRARY_PREFIX%" ^
-D CMAKE_PREFIX_PATH:FILEPATH="%LIBRARY_PREFIX%" ^
-D CMAKE_SYSTEM_PREFIX_PATH:FILEPATH="%LIBRARY_PREFIX%" ^
-D OCC_INCLUDE_DIR:FILEPATH="%LIBRARY_PREFIX%\include\opencascade" ^
-D OCC_LIBRARY_DIR:FILEPATH="%LIBRARY_PREFIX%\lib" ^
-D CGAL_INCLUDE_DIR:FILEPATH="%LIBRARY_PREFIX%\include" ^
-D GMP_INCLUDE_DIR:FILEPATH="%LIBRARY_PREFIX%\include" ^
-D GMP_LIBRARY_DIR:FILEPATH="%LIBRARY_PREFIX%\lib" ^
-D MPFR_LIBRARY_DIR:FILEPATH="%LIBRARY_PREFIX%\lib" ^
-D COLLADA_SUPPORT=OFF ^
-D HDF5_SUPPORT=ON ^
-D HDF5_INCLUDE_DIR="%LIBRARY_PREFIX%\include" ^
-D HDF5_LIBRARY_DIR="%LIBRARY_PREFIX%\lib" ^
-D JSON_INCLUDE_DIR="%LIBRARY_PREFIX%\include" ^
-D PYTHON_INCLUDE_DIR=%PREFIX%\include ^
-D PYTHON_EXECUTABLE:FILEPATH=%PREFIX%\python.exe ^
-D PYTHON_LIBRARY:FILEPATH="%PREFIX%"\libs/python%MY_PY_VER%.lib ^
-D BUILD_IFCPYTHON=ON ^
-D BUILD_IFCGEOM=ON ^
-D COLLADA_SUPPORT:BOOL=OFF ^
-D BUILD_EXAMPLES:BOOL=OFF ^
-D BUILD_GEOMSERVER:BOOL=OFF ^
-D GLTF_SUPPORT:BOOL=ON ^
-D BUILD_CONVERT:BOOL=ON ^
-D BUILD_IFCMAX:BOOL=OFF ^
-D IFCXML_SUPPORT:BOOL=ON ^
-D Boost_LIBRARYDIR:FILEPATH="%LIBRARY_PREFIX%\lib" ^
-D Boost_INCLUDEDIR:FILEPATH="%LIBRARY_PREFIX%\include" ^
-D Boost_USE_STATIC_LIBS:BOOL=OFF ^
%SRC_DIR%/cmake
if errorlevel 1 exit 1
:: Build and install
cmake --build . -- install
if errorlevel 1 exit 1
+44
View File
@@ -0,0 +1,44 @@
#!/bin/bash
declare -a CMAKE_PLATFORM_FLAGS
if [[ ${HOST} =~ .*linux.* ]]; then
CMAKE_PLATFORM_FLAGS+=(-DCMAKE_TOOLCHAIN_FILE=$RECIPE_DIR/cross-linux.cmake)
fi
if [ `uname` == Darwin ]; then
export CFLAGS="$CFLAGS -Wl,-flat_namespace,-undefined,suppress"
export CXXFLAGS="$CXXFLAGS -Wl,-flat_namespace,-undefined,suppress"
export LDFLAGS="$LDFLAGS -Wl,-flat_namespace,-undefined,suppress"
fi
cmake -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
${CMAKE_PLATFORM_FLAGS[@]} \
-DCMAKE_PREFIX_PATH=$PREFIX \
-DCMAKE_SYSTEM_PREFIX_PATH=$PREFIX \
-DPYTHON_EXECUTABLE:FILEPATH=$PYTHON \
-DGMP_LIBRARY_DIR=$PREFIX/lib \
-DMPFR_LIBRARY_DIR=$PREFIX/lib \
-DOCC_INCLUDE_DIR=$PREFIX/include/opencascade \
-DOCC_LIBRARY_DIR=$PREFIX/lib \
-DHDF5_SUPPORT:BOOL=ON \
-DHDF5_INCLUDE_DIR=$PREFIX/include \
-DHDF5_LIBRARY_DIR=$PREFIX/lib \
-DJSON_INCLUDE_DIR=$PREFIX/include \
-DCGAL_INCLUDE_DIR=$PREFIX/include \
-DCOLLADA_SUPPORT=0 \
-DBUILD_EXAMPLES:BOOL=OFF \
-DIFCXML_SUPPORT:BOOL=ON \
-DGLTF_SUPPORT:BOOL=ON \
-DBUILD_CONVERT:BOOL=ON \
-DBUILD_IFCPYTHON:BOOL=ON \
-DBUILD_IFCGEOM:BOOL=ON \
-DBUILD_GEOMSERVER:BOOL=OFF \
-DBOOST_USE_STATIC_LIBS:BOOL=OFF \
./cmake
ninja
ninja install
+2
View File
@@ -0,0 +1,2 @@
CONDA_BUILD_SYSROOT:
- /opt/MacOSX10.13.sdk # [osx]
+16
View File
@@ -0,0 +1,16 @@
# this one is important
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_PLATFORM Linux)
# specify the cross compiler
set(CMAKE_C_COMPILER $ENV{CC})
set(CMAKE_CXX_COMPILER $ENV{CXX})
# where is the target environment
set(CMAKE_FIND_ROOT_PATH $ENV{PREFIX} $ENV{BUILD_PREFIX}/$ENV{HOST}/sysroot)
# search for programs in the build host directories
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# for libraries and headers in the target directories
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+14
View File
@@ -0,0 +1,14 @@
name: conda-build
channels:
- conda-forge
dependencies:
- conda-build
- conda-verify
- anaconda-client
- ninja
- doxygen
- ripgrep
- pip
- pip:
- --extra-index-url https://lief.s3-website.fr-par.scw.cloud/latest
- lief==0.13.0.dev0
+62
View File
@@ -0,0 +1,62 @@
{% set name = "ifcopenshell" %}
{% set version = "0.7.0" %}
{% set occt_version = "7.6.2" %}
{% set cgal_cpp_version = "5.3" %}
{% set hdf5_version = "1.12.1" %}
package:
name: {{ name }}
version: {{ version }}
source:
path: ..
build:
binary_relocation: false [osx]
requirements:
build:
- {{ compiler('c') }}
- {{ compiler('cxx') }}
- ninja >=1.10.2
- cmake
- swig >=4.0.2
host:
- python
- boost-cpp <=1.74.0
- occt
- libxml2
- cgal-cpp
- hdf5
- mpfr
- gmp # [unix]
- mpir # [win]
- nlohmann_json
run:
- python
- boost-cpp <=1.74.0
- occt
- libxml2
- cgal-cpp
- hdf5
- mpfr
- gmp # [unix]
- mpir # [win]
- nlohmann_json
test:
imports:
- ifcopenshell
about:
home: http://ifcopenshell.org
license: LGPL-3.0-or-later
license_file: COPYING
summary: 'IfcOpenShell is a library to support the IFC file format'
description: |
IfcOpenShell is an open source (LGPL) software library for
working with the Industry Foundation Classes (IFC) file format.
doc_url: http://ifcopenshell.org/
dev_url: https://github.com/IfcOpenShell/IfcOpenShell
+40
View File
@@ -0,0 +1,40 @@
#Look for an executable called sphinx-build
find_program(SPHINX_EXECUTABLE
NAMES sphinx-build
DOC "Path to sphinx-build executable")
include(FindPackageHandleStandardArgs)
#Handle standard arguments to find_package like REQUIRED and QUIET
find_package_handle_standard_args(Sphinx
"Failed to find sphinx-build executable"
SPHINX_EXECUTABLE)
find_package(Doxygen REQUIRED)
#find_package(Sphinx REQUIRED)
set(SPHINX_SOURCE ${CMAKE_CURRENT_SOURCE_DIR})
set(SPHINX_BUILD ${CMAKE_CURRENT_BINARY_DIR}/docs/sphinx)
MESSAGE(STATUS "SPHINX BUILD ${CMAKE_CURRENT_BINARY_DIR}")
file(MAKE_DIRECTORY ./output/doxygen)
if (DOXYGEN_FOUND)
add_custom_target(Sphinx ALL
COMMAND
${SPHINX_EXECUTABLE} -v -T -b html
${SPHINX_SOURCE} ${CMAKE_CURRENT_SOURCE_DIR}/output
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/output
COMMENT "Generating documentation with Sphinx")
# add_custom_target(ifcopenshell_python_docs ALL
# COMMAND make html
# WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../src/ifcblenderexport/docs
# OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/../src/ifcblenderexport/docs
# COMMENT "Generating documentation with Sphinx")
else (DOXYGEN_FOUND)
message("Doxygen need to be installed to generate the doxygen documentation")
endif (DOXYGEN_FOUND)
+2531
View File
File diff suppressed because it is too large Load Diff
+11
View File
@@ -0,0 +1,11 @@
#Look for an executable called sphinx-build
find_program(SPHINX_EXECUTABLE
NAMES sphinx-build
DOC "Path to sphinx-build executable")
include(FindPackageHandleStandardArgs)
#Handle standard arguments to find_package like REQUIRED and QUIET
find_package_handle_standard_args(Sphinx
"Failed to find sphinx-build executable"
SPHINX_EXECUTABLE)
+11
View File
@@ -0,0 +1,11 @@
#Look for an executable called sphinx-build
find_program(SPHINX_EXECUTABLE
NAMES sphinx-build
DOC "Path to sphinx-build executable")
include(FindPackageHandleStandardArgs)
#Handle standard arguments to find_package like REQUIRED and QUIET
find_package_handle_standard_args(Sphinx
"Failed to find sphinx-build executable"
SPHINX_EXECUTABLE)
+37
View File
@@ -0,0 +1,37 @@
import textwrap
# The `extensions` list should already be in here from `sphinx-quickstart`
extensions = [
# there may be others here already, e.g. 'sphinx.ext.mathjax'
'breathe',
'exhale',
'sphinx.ext.intersphinx'
]
project = 'IfcOpenShell'
copyright = '2020, IfcOpenShell'
author = ''
# Setup the breathe extension
breathe_projects = {
"My Project": "./output/doxygen/xml"
}
breathe_default_project = "My Project"
# Setup the exhale extension
exhale_args = {
# These arguments are required
"containmentFolder": "./rst_files",
"rootFileName": "library_root.rst",
"rootFileTitle": "IfcOpenShell C++",
"doxygenStripFromPath": "..",
# Suggested optional arguments
"createTreeView": True,
# TIP: if using the sphinx-bootstrap-theme, you need
# "treeViewIsBootstrap": True,
"exhaleExecutesDoxygen": True,
# "exhaleDoxygenStdin": "INPUT = ../src/serializers/ ../src/ifcgeom",
"exhaleUseDoxyfile": True
}
cpp_id_attributes = ['IFC_PARSE_API', 'IFC_GEOM_API']
+10
View File
@@ -0,0 +1,10 @@
IfcOpenShell
============
.. toctree::
:maxdepth: 3
rst_files/library_root
* `ifcopenshell-python documentation <python/html/index.html>`_
+39
View File
@@ -0,0 +1,39 @@
# This program requires doxygen, sphinx, breathe and exhale.
import os
import sys
import shutil
import subprocess
import multiprocessing
# some extra check to see if we can find sphinx in pypy bin dir
sphinx_build = os.path.join(os.path.dirname(sys.executable), 'sphinx-build')
if not os.path.exists(sphinx_build):
sphinx_build = "sphinx-build"
# else:
# os.environ['PATH'] = os.pathsep + os.path.dirname(sys.executable)
# not used, -j caused issues in my sphinx install
j = str(multiprocessing.cpu_count())
if not os.path.isdir("./output/doxygen/xml"):
os.makedirs("output/doxygen/xml")
subprocess.check_call([sphinx_build, "-b", "html", ".", "output"])
if sys.platform == "linux" or sys.platform == "linux2":
if os.path.isdir("output/python"):
shutil.rmtree("output/python")
if not os.path.exists(os.path.join("../src/ifcblenderexport/docs", "contents.rst")):
subprocess.check_call(["ln", "index.rst", "contents.rst"], cwd="../src/ifcblenderexport/docs")
subprocess.check_call(["sed", "-i", "s/html_theme/# html_theme/g", "conf.py"], cwd="../src/ifcblenderexport/docs")
subprocess.check_call(["make", "html"], cwd="../src/ifcblenderexport/docs")
subprocess.check_call(["git", "checkout", "conf.py"], cwd="../src/ifcblenderexport/docs")
shutil.move("../src/ifcblenderexport/docs/_build", "./output")
os.rename("./output/_build", "./output/python")
elif sys.platform == "win32" or sys.platform == "win64":
subprocess.check_call(["make.bat", "html"])
Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

+240
View File
@@ -0,0 +1,240 @@
APPLY_DEFAULT_MATERIALS
-----------------------
Given the command invocation:
Duplex_A_20110907_optimized.ifc d.dae -yv --include attribute GlobalId 3bXiCStxP6Fgxdej$yc50U
You will find log messages along the lines of
[Warning] {3bXiCStxP6Fgxdej$yc50U} No material and surface styles for:
#333=IfcCovering('3bXiCStxP6Fgxdej$yc50U',#1,'Compound Ceiling:Gypsum Board:187483',$,'Compound Ceiling:Gypsum Board',#17840,#17052,'187483',.CEILING.)
This means that there is no IfcStyledItem associated to the representation items and that the element does not have an IfcMaterial association with IfcMaterialRepresentation from which we can derive a style (colour) for the element.
The interactive session below shows how with this setting enabled you will get a default generated material from the IFC element entity type and material indices of 0 pointing to that. With this setting disabled the material index would be -1 to indicate a missing style. Note that there is one material index for every triangle in the list of `shp.geometry.faces`.
>>> import ifcopenshell, ifcopenshell.geom
>>> f = ifcopenshell.open("Duplex_A_20110907_optimized.ifc")
>>> s = ifcopenshell.geom.settings()
>>> c = f["3bXiCStxP6Fgxdej$yc50U"]
>>>
>>> shp = ifcopenshell.geom.create_shape(s, c)
>>> shp.geometry.material_ids
(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)
>>> [(m.name, m.diffuse) for m in shp.geometry.materials]
[]
>>>
>>> s.set(s.APPLY_DEFAULT_MATERIALS, True)
>>> shp = ifcopenshell.geom.create_shape(s, c)
>>> shp.geometry.material_ids
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
>>> [(m.name, m.diffuse) for m in shp.geometry.materials]
[('IfcCovering', (0.7, 0.7, 0.7))]
This is enabled by default for the IfcConvert serializers as they will not gracefully handle -1 material indices and allows users to quickly assign colours based on entity types in their modelling applications.
APPLY_LAYERSETS
---------------
This setting is available in IfcConvert as `--enable-layerset-slicing`.
For IfcWall and IfcSlab elements, takes the associated IfcMaterialLayerSet and builds a set of surfaces to segment the building element geometry.
Note that enabling this settings is computationally intensive as it involves 3D Boolean operations.
Duplex_A_20110907_optimized.ifc d1.dae -yv --include attribute GlobalId 2O2Fr$t4X7Zf8NOew3FNr2
![Image of d1.dae](images/settings-1.png)
Duplex_A_20110907_optimized.ifc d2.dae --enable-layerset-slicing -yv --include attribute GlobalId 2O2Fr$t4X7Zf8NOew3FNr2
![Image of d2.dae](images/settings-2.png)
BUILDING_LOCAL_PLACEMENT
------------------------
This setting is available in IfcConvert using `--building-local-placement`.
In the typical IfcSite > IfcBuilding > IfcBuildingStorey > ... hierarchy of elements, don't incorporate the ObjectPlacement of the IfcBuilding and above in the placement of elements in the output. This is useful when there is a large offset in this placement that reduces precision in further processing.
CONVERT_BACK_UNITS
------------------
This setting is available in IfcConvert using `--convert-back-units`.
Internally IfcOpenShell uses meters as the global length unit to do calculations. This setting restores the coordinate positions after conversion by multiplying the factor of the IfcUnit with UnitType=LENGTHUNIT into the output geometry coordinate values.
DISABLE_OPENING_SUBTRACTIONS
----------------------------
This setting is available in IfcConvert using `--disable-opening-subtraction`.
As in most viewer applications, IfcOpeningElement geometry is subtracted from their host elements. This setting disables this behavior.
Duplex_A_20110907_optimized.ifc d1.dae -yv --include attribute GlobalId 2O2Fr$t4X7Zf8NOew3FNr2
![Image of d1.dae](images/settings-1.png)
Duplex_A_20110907_optimized.ifc d3.dae --disable-opening-subtraction -yv --include attribute GlobalId 2O2Fr$t4X7Zf8NOew3FNr2
![Image of d3.dae](images/settings-3.png)
Note that disabling this settings will reduce processing time and improve robustness as it involves 3D Boolean operations.
DISABLE_TRIANGULATION
---------------------
To be used in conjunction with `USE_BREP_DATA`. Do not apply the triangulation and - when `USE_BREP_DATA` is set - return a OpenCASCADE serialized TopoDS_Shape from `create_shape()` and `iterator`.
>>> import ifcopenshell, ifcopenshell.geom
>>> s = ifcopenshell.geom.settings()
>>> s.set(s.DISABLE_TRIANGULATION, True)
>>> s.set(s.USE_BREP_DATA, True)
>>> f = ifcopenshell.open("Duplex_A_20110907_optimized.ifc")
>>> c = f["3bXiCStxP6Fgxdej$yc50U"]
>>> shp = ifcopenshell.geom.create_shape(s, c)
>>> print(shp.geometry.brep_data)
CASCADE Topology V1, (c) Matra-Datavision
Locations 0
Curve2ds 0
Curves 12
1 4.6750000000000034 -8.0749999999999904 2.657 -2.0455514041918775e-15 -1 0
1 4.6750000000000034 -8.0749999999999904 2.657 1 -3.435893306383461e-15 0
1 6.2260000000000044 -8.0749999999999957 2.657 -2.0455514041918724e-15 -1 0
1 6.226 -10.246000000000031 2.657 -1 6.8717866127669219e-15 0
...
EDGE_ARROWS
-----------
When `INCLUDE_CURVES` is true and geometric elements include curves (such as the wall axis), add arrow heads to the edges to indicate direction of the curve.
Duplex_A_20110907_optimized.ifc d4.dae --model --plan --edge-arrows -yv --include attribute GlobalId 2O2Fr$t4X7Zf8NOew3FNr2
![Image of d4.dae](images/settings-4.png)
EXCLUDE_SOLIDS_AND_SURFACES
---------------------------
Exclude faces, shells and solids from geometrical output. Implied when using `--plan` without `--model` in IfcConvert.
FASTER_BOOLEANS
---------------
NOTE: Only applicable when using OCCT 6.9 and earlier.
This setting is available in IfcConvert using `--merge-boolean-operands`.
Fuse the collection of all boolean operands into a single union before applying the boolean subtraction, as opposed to doing individual subtractions. This likely improves performance. From OCCT 7.0 onwards the boolean operations with multiple arguments is used.
GENERATE_UVS
------------
This setting is available in IfcConvert using `--generate-uvs`.
Applies a box projection on the generated geometry for the element to obtain UV coordinates. This is purely generated, it does not involve texture coordinates stored in the IFC model.
Duplex_A_20110907_optimized.ifc d5.dae --generate-uvs -yv --include attribute GlobalId 2O2Fr$t4X7Zf8NOew3FNr2
![Image of d5.dae with a UV grid applied in Blender](images/settings-5.png)
INCLUDE_CURVES
--------------
This setting is available in IfcConvert using `--plan`.
Include edge and wire geometries in the geometric output.
LAYERSET_FIRST
--------------
This setting is available in IfcConvert using `--layerset-first`.
When not using APPLY_LAYERSETS, take the first material layer from the set to use as the material for the overall element.
NO_NORMALS
----------
This setting is available in IfcConvert using `--no-normals`.
Do not emit normals on geometric output
SEARCH_FLOOR
------------
Note: Only applicable to Collada .DAE output when used from IfcConvert.
This setting is available in IfcConvert using `--use-element-hierarchy`.
Include the spatial hierarchy in the elements.
SEW_SHELLS
----------
This setting is available in IfcConvert using `--orient-shells`.
Re-orient or sew connected face sets to have a consistent outwards orientation.
SITE_LOCAL_PLACEMENT
--------------------
This setting is available in IfcConvert using `--site-local-placement`.
See `BUILDING_LOCAL_PLACEMENT`, but exclude also the ObjectPlacement of the IfcSite.
USE_BREP_DATA
-------------
See `DISABLE_TRIANGULATION`.
USE_PYTHON_OPENCASCADE
----------------------
Note: Only available when an import of `OCC.Core.BRepTools` or `OCC.BRepTools` succeeds.
This implies `USE_WORLD_COORDS` `USE_BREP_DATA` and `DISABLE_TRIANGULATION`. The serialized TopoDS_Shape of `USE_BREP_DATA` is deserialized by Python OpenCASCADE.
USE_WORLD_COORDS
----------------
Apply the ObjectPlacement of the building elements to the geometric output. This is implied when using the Wavefront .OBJ output in IfcConvert. Note that this also eliminates the possibility for geometric elements to point to the same interpreted geometry result.
VALIDATE_QUANTITIES
-------------------
This setting is available in IfcConvert using `--validate`.
Running IfcConvert with `--validate` will set a non-zero exit code when ever a log message with severity equal or greater than ERROR has been emitted.
Currently for internal use only. For every building element geometry converted, looks for an associated quantity set where the OwnerHistory's organization name is IfcOpenShell. And looks for the quantities "Total Surface Area", "Volume", "Shape Validation Properties.Surface Genus" and validates these according to the interpreted geometry definition. Emit Logger::Error when calculated values are outside of the tolerance range for the value stored in the model.
WELD_VERTICES
-------------
Note: In Python, this setting is *on* by default.
Note: This setting only affects triangulated output.
This setting is available in IfcConvert using `--weld-vertices`.
Discards normals and joins vertices solely based on position. This is useful when output is to be modified in a modeling application.
>>> import ifcopenshell, ifcopenshell.geom
>>> s = ifcopenshell.geom.settings()
>>> s.set(s.WELD_VERTICES, False)
>>> f = ifcopenshell.open("Duplex_A_20110907_optimized.ifc")
>>> c = f["3bXiCStxP6Fgxdej$yc50U"]
>>> shp = ifcopenshell.geom.create_shape(s, c)
>>> shp.geometry.verts
(4.675000000000003, -8.07499999999999, 2.657, 4.674999999999999, -10.24600000000002, 2.657, 6.226000000000004, -8.074999999999996, 2.657, 6.226, -10.24600000000003, 2.657, 4.675000000000003, -8.07499999999999, 2.6, 4.674999999999999, -10.24600000000002, 2.6, 6.226000000000004, -8.074999999999996, 2.6, 6.226, -10.24600000000003, 2.6, 4.674999999999999, -10.24600000000002, 2.657, 4.674999999999999, -10.24600000000002, 2.6, 4.675000000000003, -8.07499999999999, 2.657, 4.675000000000003, -8.07499999999999, 2.6, 6.226, -10.24600000000003, 2.657, 4.674999999999999, -10.24600000000002, 2.657, 6.226, -10.24600000000003, 2.6, 4.674999999999999, -10.24600000000002, 2.6, 6.226000000000004, -8.074999999999996, 2.657, 6.226, -10.24600000000003, 2.657, 6.226000000000004, -8.074999999999996, 2.6, 6.226, -10.24600000000003, 2.6, 4.675000000000003, -8.07499999999999, 2.657, 4.675000000000003, -8.07499999999999, 2.6, 6.226000000000004, -8.074999999999996, 2.657, 6.226000000000004, -8.074999999999996, 2.6)
>>> shp.geometry.normals
(3.059754518198021e-17, 0.0, -1.0, 3.059754518198021e-17, 0.0, -1.0, 3.059754518198021e-17, 0.0, -1.0, 3.059754518198021e-17, 0.0, -1.0, 2.110175529791737e-16, 0.0, -1.0, 2.110175529791737e-16, 0.0, -1.0, 2.110175529791737e-16, 0.0, -1.0, 2.110175529791737e-16, 0.0, -1.0, -1.0, 1.79434333701042e-15, 0.0, -1.0, 1.79434333701042e-15, 0.0, -1.0, 1.79434333701042e-15, 0.0, -1.0, 1.79434333701042e-15, 0.0, 6.8717866127669046e-15, 1.0, 0.0, 6.8717866127669046e-15, 1.0, 0.0, 6.8717866127669046e-15, 1.0, 0.0, 6.8717866127669046e-15, 1.0, 0.0, -1.0, 1.79434333701042e-15, 0.0, -1.0, 1.79434333701042e-15, 0.0, -1.0, 1.79434333701042e-15, 0.0, -1.0, 1.79434333701042e-15, 0.0, 3.4358933063834523e-15, 1.0, 0.0, 3.4358933063834523e-15, 1.0, 0.0, 3.4358933063834523e-15, 1.0, 0.0, 3.4358933063834523e-15, 1.0, 0.0)
>>>
>>> s.set(s.WELD_VERTICES, True)
>>> shp = ifcopenshell.geom.create_shape(s, c)
>>> shp.geometry.verts
(4.675000000000003, -8.07499999999999, 2.657, 4.674999999999999, -10.24600000000002, 2.657, 6.226000000000004, -8.074999999999996, 2.657, 6.226, -10.24600000000003, 2.657, 4.675000000000003, -8.07499999999999, 2.6, 4.674999999999999, -10.24600000000002, 2.6, 6.226000000000004, -8.074999999999996, 2.6, 6.226, -10.24600000000003, 2.6)
>>> shp.geometry.normals
()
+10
View File
@@ -0,0 +1,10 @@
IfcOpenShell
============
.. toctree::
:maxdepth: 3
rst_files/library_root
* `ifcopenshell-python documentation <python/html/index.html>`_
+823
View File
@@ -0,0 +1,823 @@
#!/usr/bin/python
###############################################################################
# #
# This file is part of IfcOpenShell. #
# #
# IfcOpenShell is free software: you can redistribute it and/or modify #
# it under the terms of the Lesser GNU General Public License as published by #
# the Free Software Foundation, either version 3.0 of the License, or #
# (at your option) any later version. #
# #
# IfcOpenShell is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# Lesser GNU General Public License for more details. #
# #
# You should have received a copy of the Lesser GNU General Public License #
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
# #
###############################################################################
###############################################################################
# #
# This script builds IfcOpenShell and its dependencies #
# #
# Prerequisites for this script to function correctly: #
# * cmake * git * bzip2 * tar * c(++) compilers * autoconf #
# #
# if building with USE_OCCT additionally: #
# * freetype * glx.h #
# #
# if building with OCCT 7.4.0 additionally: #
# * libfontconfig1-dev #
# #
# if building with -shared #
# * libgl1-mesa-dev libxext-dev libxmu-dev libxmu-headers libxi-dev #
# #
# for python37 to install correctly additionally: #
# * libffi(-dev[el]) #
# #
# on debian 7.8 these can be obtained with: #
# $ apt-get install git gcc g++ autoconf bison bzip2 cmake #
# libfreetype6-dev mesa-common-dev libffi-dev libfontconfig1-dev #
# #
# on ubuntu 14.04: #
# $ apt-get install git gcc g++ autoconf bison make cmake #
# libfreetype6-dev mesa-common-dev libffi-dev libfontconfig1-dev #
# #
# on OS X El Capitan with homebrew: #
# $ brew install git bison autoconf automake freetype libffi cmake #
# #
###############################################################################
import logging
import os
import sys
import subprocess as sp
import shutil
import tarfile
import multiprocessing
import platform
import sysconfig
from urllib.request import urlretrieve
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
logger.addHandler(ch)
PROJECT_NAME = "IfcOpenShell"
USE_CURRENT_PYTHON_VERSION = os.getenv("USE_CURRENT_PYTHON_VERSION")
ADD_COMMIT_SHA = os.getenv("ADD_COMMIT_SHA")
PYTHON_VERSIONS = ["3.6.14", "3.7.13", "3.8.13", "3.9.11", "3.10.3"]
JSON_VERSION = "v3.6.1"
OCE_VERSION = "0.18.3"
OCCT_VERSION = "7.5.3"
BOOST_VERSION = "1.71.0"
PCRE_VERSION = "8.41"
LIBXML2_VERSION = "2.9.11"
SWIG_VERSION = "4.0.2"
OPENCOLLADA_VERSION = "v1.6.68"
HDF5_VERSION = "1.12.1"
GMP_VERSION = "6.2.1"
MPFR_VERSION = "3.1.6" # latest is 4.1.0
CGAL_VERSION = "5.3"
# binaries
cp = "cp"
bash = "bash"
git = "git"
bunzip2 = "bunzip2"
tar = "tar"
cc = "cc"
cplusplus = "c++"
autoconf = "autoconf"
automake = "automake"
make = "make"
date = "date"
curl = "curl"
wget = "wget"
strip = "strip"
# Helper function for coloured printing
NO_COLOR = "\033[0m" # <ref>http://stackoverflow.com/questions/5947742/how-to-change-the-output-color-of-echo-in-linux</ref>
BLACK_ON_WHITE = "\033[0;30;107m"
RED = "\033[31m"
GREEN = "\033[32m"
YELLOW = "\033[33m"
MAGENTA = "\033[35m"
def cecho(message, color=NO_COLOR):
"""Logs message `message` in color `color`."""
logger.info(f"{color}{message}\033[0m")
def which(cmd):
for path in os.getenv("PATH").split(":"):
if os.path.exists(path) and cmd in os.listdir(path):
return cmd
return None
# Set defaults for missing empty environment variables
USE_OCCT = os.environ.get("USE_OCCT", "true").lower() == "true"
TOOLSET = None
if platform.system() == "Darwin":
# C++11 features used in OCCT 7+ need a more recent stdlib
TOOLSET = "10.9" if USE_OCCT else "10.6"
IFCOS_NUM_BUILD_PROCS = os.getenv("IFCOS_NUM_BUILD_PROCS", multiprocessing.cpu_count() + 1)
CMAKE_DIR = os.path.realpath(os.path.join("..", "cmake"))
path = ["..", "build", platform.system(), platform.machine()]
if TOOLSET:
path.append(TOOLSET)
DEFAULT_DEPS_DIR = os.path.realpath(os.path.join(*path))
DEPS_DIR = os.getenv("DEPS_DIR", DEFAULT_DEPS_DIR)
if not os.path.exists(DEPS_DIR):
os.makedirs(DEPS_DIR)
BUILD_CFG = os.getenv("BUILD_CFG", "RelWithDebInfo")
# Print build configuration information
cecho (f"""This script fetches and builds {PROJECT_NAME} and its dependencies
""", BLACK_ON_WHITE)
cecho("""Script configuration:
""", GREEN)
cecho(f"""* USE_OCCT = {USE_OCCT}""", MAGENTA)
if USE_OCCT:
cecho(" - Compiling against official Open Cascade")
else:
cecho(" - Compiling against Open Cascade Community Edition")
cecho(f"* Dependency Directory = {DEPS_DIR}", MAGENTA)
cecho(f" - The directory where {PROJECT_NAME} dependencies are installed.")
cecho(f"* Build Config Type = {BUILD_CFG}", MAGENTA)
cecho(""" - The used build configuration type for the dependencies.
Defaults to RelWithDebInfo if not specified.""")
if BUILD_CFG == "MinSizeRel":
cecho(" WARNING: MinSizeRel build can suffer from a significant performance loss.", RED)
cecho(f"* IFCOS_NUM_BUILD_PROCS = {IFCOS_NUM_BUILD_PROCS}", MAGENTA)
cecho(""" - How many compiler processes may be run in parallel.
""")
dependency_tree = {
'IfcParse': ('boost', 'libxml2', 'hdf5'),
'IfcGeom': ('IfcParse', 'occ', 'json', 'cgal'),
'IfcConvert': ('IfcGeom',),
'OpenCOLLADA': ('libxml2', 'pcre'),
'IfcGeomServer': ('IfcGeom',),
'IfcOpenShell-Python': ('python', 'swig', 'IfcGeom'),
'swig': ('pcre',),
'boost': (),
'libxml2': (),
'python': (),
'occ': (),
'pcre': (),
'json': (),
'hdf5': (),
'cgal': ()
}
def v(dep):
yield dep
for d in dependency_tree[dep]:
for x in v(d):
yield x
tgts = [s for s in sys.argv[1:] if not s.startswith("-")]
flags = set(s for s in sys.argv[1:] if s.startswith("-"))
BUILD_STATIC = not "-shared" in flags
ENABLE_FLAG = "--enable-static" if BUILD_STATIC else "--enable-shared"
DISABLE_FLAG = "--disable-shared" if BUILD_STATIC else "--disable-static"
LINK_TYPE = "static" if BUILD_STATIC else "shared"
LINK_TYPE_UCFIRST = LINK_TYPE[0].upper() + LINK_TYPE[1:]
LIBRARY_EXT = "a" if BUILD_STATIC else "so"
PIC = "-fPIC" if BUILD_STATIC else ""
if len(tgts):
targets = set(sum((list(v(target)) for target in tgts), []))
else:
targets = set(dependency_tree.keys())
print("Building:", *sorted(targets, key=lambda t: len(list(v(t)))))
# Check that required tools are in PATH
for cmd in [git, bunzip2, tar, cc, cplusplus, autoconf, automake, make, "patch", "cmake"]:
if which(cmd) is None:
raise ValueError(f"Required tool '{cmd}' not installed or not added to PATH")
# identifiers for the download tool (could be less memory consuming as ints, but are more verbose as strings)
download_tool_default = download_tool_py = "py"
download_tool_git = "git"
# Create log directory and file
log_dir = os.path.join(DEPS_DIR, "logs")
if not os.path.exists(log_dir):
os.makedirs(log_dir)
LOG_FILE = os.path.join(log_dir, sp.check_output([date, "+%Y%m%d"], encoding="utf-8").strip()) + ".log"
if not os.path.exists(LOG_FILE):
open(LOG_FILE, "w").close()
logger.info(f"using command log file '{LOG_FILE}'")
def run(cmds, cwd=None):
"""
Wraps `subprocess.Popen.communicate()` and logs the command being executed,
sets up logging `stderr` to `LOG_FILE` (in append mode) and returns stdout
with leading and trailing whitespace removed.
"""
logger.debug(f"running command {' '.join(cmds)} in directory {cwd}")
log_file_handle = open(LOG_FILE, "a")
proc = sp.Popen(cmds, cwd=cwd, stdout=sp.PIPE, stderr=sp.PIPE, encoding="utf-8")
stdout, stderr = proc.communicate()
log_file_handle.write(stdout)
log_file_handle.write(stderr)
log_file_handle.close()
logger.debug(f"command returned {proc.returncode}")
if proc.returncode != 0:
print("-" * 70)
print(stderr)
print("-" * 70)
raise RuntimeError(f"Command `{' '.join(cmds)}` returned exit code {proc.returncode}")
return stdout.strip()
if platform.system() == "Darwin":
if run(["sw_vers", "-productVersion"]) >= "11.":
# Apparently not supported
PYTHON_VERSIONS = [pv for pv in PYTHON_VERSIONS if tuple(map(int, pv.split("."))) >= (3, 7)]
BOOST_VERSION_UNDERSCORE = BOOST_VERSION.replace(".", "_")
OCE_LOCATION = f"https://github.com/tpaviot/oce/archive/OCE-{OCE_VERSION}.tar.gz"
BOOST_LOCATION = f"https://boostorg.jfrog.io/artifactory/main/release/{BOOST_VERSION}/source/"
# Helper functions
def run_autoconf(arg1, configure_args, cwd):
configure_path = os.path.realpath(os.path.join(cwd, "..", "configure"))
if not os.path.exists(configure_path):
run([bash, "./autogen.sh"], cwd=os.path.realpath(os.path.join(cwd, ".."))) # only run autogen.sh in the directory it is located and use cwd to achieve that in order to not mess up things
# Using `sh` over `bash` fixes issues with building swig
prefix = os.path.realpath(f"{DEPS_DIR}/install/{arg1}")
run(["/bin/sh", "../configure"] + configure_args + [f"--prefix={prefix}"], cwd=cwd)
def run_cmake(arg1, cmake_args, cmake_dir=None, cwd=None):
if cmake_dir is None:
P = ".."
else:
P = cmake_dir
run(["cmake", P] + cmake_args + [f"-DCMAKE_BUILD_TYPE={BUILD_CFG}"], cwd=cwd)
def git_clone_or_pull_repository(clone_url, target_dir, revision=None):
"""Lazily clones the `git` repository denoted by `clone_url` into
the `target_dir` or pulls latest changes if the `target_dir` exists (naively assumes
that a working clone exists there) and optionally checks out a revision
`revision` after cloning or in the existing clone if `revision` is not
`None`."""
if not os.path.exists(target_dir):
logger.info(f"cloning '{clone_url}' into '{target_dir}'")
run([git, "clone", "--recursive", clone_url, target_dir])
else:
logger.info(f"directory '{target_dir}' already cloned. Pulling latest changes.")
# detect whether we are on a branch and pull
if run([git, "rev-parse", "--abbrev-ref", "HEAD"], cwd=target_dir) != "HEAD":
run([git, "pull", clone_url], cwd=target_dir)
if revision != None:
run([git, "checkout", revision], cwd=target_dir)
def build_dependency(name, mode, build_tool_args, download_url, download_name, download_tool=download_tool_default, revision=None, patch=None, additional_files={}, no_append_name=False, **kwargs):
"""Handles building of dependencies with different tools (which are
distinguished with the `mode` argument. `build_tool_args` is expected to be
a list which is necessary in order to not mess up quoting of compiler and
linker flags."""
check_dir = os.path.join(DEPS_DIR, "install", name)
if os.path.exists(check_dir):
logger.info(f"Found existing {name}, skipping")
return
build_dir = os.path.join(DEPS_DIR, "build")
if not os.path.exists(build_dir):
os.makedirs(build_dir)
logger.info(f"\rFetching {name}... ")
if download_tool == download_tool_py:
if no_append_name:
url = download_url
else:
url = os.path.join(download_url, download_name)
download_path = os.path.join(build_dir, download_name)
if not os.path.exists(download_path):
urlretrieve(url, os.path.join(build_dir, download_path))
else:
logger.info(f"Download '{download_path}' already exists, assuming it's an undamaged download and that it has been extracted if possible, skipping")
elif download_tool == download_tool_git:
logger.info(f"\rChecking {name}... ")
git_clone_or_pull_repository(download_url, target_dir=os.path.join(build_dir, download_name), revision=revision)
else:
raise ValueError(f"download tool '{download_tool}' is not supported")
download_dir = os.path.join(build_dir, download_name)
if os.path.isdir(download_dir):
extract_dir_name = download_name
extract_dir = os.path.join(build_dir, extract_dir_name)
else:
download_tarfile_path = os.path.join(build_dir, download_name)
if download_name.endswith(".tar.gz") or download_name.endswith(".tgz"):
compr = "gz"
elif download_name.endswith(".tar.bz2"):
compr = "bz2"
else:
raise RuntimeError("fix source for new download type")
download_tarfile = tarfile.open(name=download_tarfile_path, mode=f"r:{compr}")
# tarfile seriously doesn't have a function to retrieve the root directory more easily
extract_dir_name = os.path.commonprefix([x for x in download_tarfile.getnames() if x != "."])
#run([tar, "--exclude=\"*/*\"", "-tf", download_name], cwd=build_dir).strip() no longer works
if extract_dir_name is None:
extract_dir_name = run([bash, "-c", f"tar -tf {download_name} 2> /dev/null | head -n 1 | cut -f1 -d /"], cwd=build_dir)
extract_dir = os.path.join(build_dir, extract_dir_name)
if not os.path.exists(extract_dir):
run([tar, "-xf", download_name], cwd=build_dir)
for path, url in additional_files.items():
if not os.path.exists(path):
urlretrieve(url, os.path.join(extract_dir, path))
if patch is not None:
patch_abs = os.path.abspath(os.path.join(os.path.dirname(__file__), patch))
if os.path.exists(patch_abs):
try: run(["patch", "-p1", "--batch", "--forward", "-i", patch_abs], cwd=extract_dir)
except Exception as e:
# Assert that the patch has already been applied
run(["patch", "-p1", "--batch", "--reverse", "--dry-run", "-i", patch_abs], cwd=extract_dir)
if mode == "ctest":
run(["ctest", "-S", "HDF5config.cmake,BUILD_GENERATOR=Unix", "-C", BUILD_CFG, "-V", "-O", "hdf5.log"], cwd=extract_dir)
run([tar, "-xf", kwargs["ctest_result"] + ".tar.gz"], cwd=os.path.join(extract_dir, 'build'))
shutil.copytree(
os.path.join(extract_dir, "build", kwargs["ctest_result"], kwargs["ctest_result_path"]),
os.path.join(DEPS_DIR, "install", name)
)
elif mode != "bjam":
extract_build_dir = os.path.join(extract_dir, "build")
if os.path.exists(extract_build_dir):
shutil.rmtree(extract_build_dir)
os.makedirs(extract_build_dir)
logger.info(f"\rConfiguring {name}...")
if mode == "autoconf":
run_autoconf(name, build_tool_args, cwd=extract_build_dir)
elif mode == "cmake":
run_cmake(name, build_tool_args, cwd=extract_build_dir)
else:
raise ValueError()
logger.info(f"\rBuilding {name}... ")
run([make, f"-j{IFCOS_NUM_BUILD_PROCS}", "VERBOSE=1"], cwd=extract_build_dir)
logger.info(f"\rInstalling {name}... ")
run([make, "install"], cwd=extract_build_dir)
logger.info(f"\rInstalled {name} \n")
else:
logger.info(f"\rConfiguring {name}...")
run([bash, "./bootstrap.sh"], cwd=extract_dir)
logger.info(f"\rBuilding {name}... ")
run(["./b2", f"-j{IFCOS_NUM_BUILD_PROCS}"] + build_tool_args, cwd=extract_dir)
logger.info(f"\rInstalling {name}... ")
shutil.copytree(os.path.join(extract_dir, "boost"), os.path.join(DEPS_DIR, "install", f"boost-{BOOST_VERSION}", "boost"))
logger.info(f"\rInstalled {name} \n")
cecho("Collecting dependencies:", GREEN)
# Set compiler flags for 32bit builds on 64bit system
# TODO: This is untested
ADDITIONAL_ARGS = []
BOOST_ADDRESS_MODEL = []
if platform.system() == "Darwin":
ADDITIONAL_ARGS = [f"-mmacosx-version-min={TOOLSET}"] + ADDITIONAL_ARGS
# If the linker supports GC sections, set it up to reduce binary file size
# -fPIC is required for the shared libraries to work
CXXFLAGS = os.environ.get("CXXFLAGS", "")
CFLAGS = os.environ.get("CFLAGS", "")
LDFLAGS = os.environ.get("LDFLAGS", "")
ADDITIONAL_ARGS_STR = " ".join(ADDITIONAL_ARGS)
if sp.call([bash, "-c", "ld --gc-sections 2>&1 | grep -- --gc-sections &> /dev/null"]) != 0:
CXXFLAGS_MINIMAL = f"{CXXFLAGS} {PIC} {ADDITIONAL_ARGS_STR}"
CFLAGS_MINIMAL = f"{CFLAGS} {PIC} {ADDITIONAL_ARGS_STR}"
if BUILD_STATIC:
CXXFLAGS = f"{CXXFLAGS} {PIC} -fdata-sections -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden {ADDITIONAL_ARGS_STR}"
CFLAGS = f"{CFLAGS} {PIC} -fdata-sections -ffunction-sections -fvisibility=hidden {ADDITIONAL_ARGS_STR}"
else:
CXXFLAGS = CXXFLAGS_MINIMAL
CFLAGS = CFLAGS_MINIMAL
LDFLAGS = f"{LDFLAGS} -Wl,--gc-sections {ADDITIONAL_ARGS_STR}"
else:
CXXFLAGS_MINIMAL = f"{CXXFLAGS} {PIC} {ADDITIONAL_ARGS_STR}"
CFLAGS_MINIMAL = f"{CFLAGS} {PIC} {ADDITIONAL_ARGS_STR}"
if BUILD_STATIC:
CXXFLAGS = f"{CXXFLAGS} {PIC} -fvisibility=hidden -fvisibility-inlines-hidden {ADDITIONAL_ARGS_STR}"
CFLAGS = f"{CFLAGS} {PIC} -fvisibility=hidden -fvisibility-inlines-hidden {ADDITIONAL_ARGS_STR}"
else:
CXXFLAGS=CXXFLAGS_MINIMAL
CFLAGS=CFLAGS_MINIMAL
LDFLAGS = f"{LDFLAGS} {ADDITIONAL_ARGS_STR}"
os.environ["CXXFLAGS"] = CXXFLAGS
os.environ["CFLAGS"] = CFLAGS
os.environ["LDFLAGS"] = LDFLAGS
# Some dependencies need a more recent CMake version than most distros provide
# @tfk: this is no longer needed
# build_dependency(name="cmake-%s" % (CMAKE_VERSION,), mode="autoconf", build_tool_args=[], download_url="https://cmake.org/files/v%s" % (CMAKE_VERSION_2,), download_name="cmake-%s.tar.gz" % (CMAKE_VERSION,))
if 'hdf5' in targets:
HDF5_MAJOR = ".".join(HDF5_VERSION.split(".")[:-1])
build_dependency(
name=f"hdf5-{HDF5_VERSION}",
mode="ctest",
build_tool_args=[],
download_url=f"https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-{HDF5_MAJOR}/hdf5-{HDF5_VERSION}/src/",
download_name=f"CMake-hdf5-{HDF5_VERSION}.tar.gz",
ctest_result=f"HDF5-{HDF5_VERSION}-{platform.system()}",
ctest_result_path=f"HDF_Group/HDF5/{HDF5_VERSION}"
)
if "json" in targets:
json_url = f"https://github.com/nlohmann/json/releases/download/{JSON_VERSION}/json.hpp"
json_install_path = f"{DEPS_DIR}/install/json/nlohmann/json.hpp"
if not os.path.exists(os.path.dirname(json_install_path)):
os.makedirs(os.path.dirname(json_install_path))
if not os.path.exists(json_install_path):
urlretrieve(json_url, json_install_path)
if "pcre" in targets:
build_dependency(
name=f"pcre-{PCRE_VERSION}",
mode="autoconf",
build_tool_args=[DISABLE_FLAG],
download_url=f"https://downloads.sourceforge.net/project/pcre/pcre/{PCRE_VERSION}/",
download_name=f"pcre-{PCRE_VERSION}.tar.bz2"
)
# An issue exists with swig-1.3 and python >= 3.2
# Therefore, build a recent copy from source
if "swig" in targets:
build_dependency(
name="swig",
mode="autoconf",
build_tool_args=["--disable-ccache", f"--with-pcre-prefix={DEPS_DIR}/install/pcre-{PCRE_VERSION}"],
download_url="https://github.com/swig/swig.git",
download_name="swig",
download_tool=download_tool_git,
revision=f"rel-{SWIG_VERSION}"
)
if USE_OCCT and "occ" in targets:
build_dependency(
name=f"occt-{OCCT_VERSION}",
mode="cmake",
build_tool_args=[
f"-DINSTALL_DIR={DEPS_DIR}/install/occt-{OCCT_VERSION}",
f"-DBUILD_LIBRARY_TYPE={LINK_TYPE_UCFIRST}",
"-DBUILD_MODULE_Draw=0",
"-DBUILD_RELEASE_DISABLE_EXCEPTIONS=Off"
],
download_url = "https://github.com/Open-Cascade-SAS/OCCT",
download_name = "occt",
download_tool=download_tool_git,
patch=None if OCCT_VERSION >= "7.4" else "./patches/occt/enable-exception-handling.patch",
revision="V" + OCCT_VERSION.replace('.', '_')
)
elif "occ" in targets:
build_dependency(
name=f"oce-{OCE_VERSION}",
mode="cmake",
build_tool_args=[
"-DOCE_DISABLE_TKSERVICE_FONT=ON",
"-DOCE_TESTING=OFF",
"-DOCE_BUILD_SHARED_LIB=OFF",
"-DOCE_DISABLE_X11=ON",
"-DOCE_VISUALISATION=OFF",
"-DOCE_OCAF=OFF",
f"-DOCE_INSTALL_PREFIX={DEPS_DIR}/install/oce-{OCE_VERSION}"
],
download_url="https://github.com/tpaviot/oce/archive/",
download_name=f"OCE-{OCE_VERSION}.tar.gz"
)
if "libxml2" in targets:
build_dependency(
f"libxml2-{LIBXML2_VERSION}",
"autoconf",
build_tool_args=[
"--without-python",
ENABLE_FLAG,
DISABLE_FLAG,
"--without-zlib",
"--without-iconv",
"--without-lzma"
],
download_url="ftp://xmlsoft.org/libxml2/",
download_name=f"libxml2-{LIBXML2_VERSION}.tar.gz"
)
if "OpenCOLLADA" in targets:
build_dependency(
"OpenCOLLADA",
"cmake",
build_tool_args=[
f"-DLIBXML2_INCLUDE_DIR={DEPS_DIR}/install/libxml2-{LIBXML2_VERSION}/include/libxml2",
f"-DLIBXML2_LIBRARIES={DEPS_DIR}/install/libxml2-{LIBXML2_VERSION}/lib/libxml2.{LIBRARY_EXT}",
f"-DPCRE_INCLUDE_DIR={DEPS_DIR}/install/pcre-{PCRE_VERSION}/include",
f"-DPCRE_PCREPOSIX_LIBRARY={DEPS_DIR}/install/pcre-{PCRE_VERSION}/lib/libpcreposix.{LIBRARY_EXT}",
f"-DPCRE_PCRE_LIBRARY={DEPS_DIR}/install/pcre-{PCRE_VERSION}/lib/libpcre.{LIBRARY_EXT}",
f"-DCMAKE_INSTALL_PREFIX={DEPS_DIR}/install/OpenCOLLADA/"
],
download_url="https://github.com/KhronosGroup/OpenCOLLADA.git",
download_name="OpenCOLLADA",
download_tool=download_tool_git,
patch="./patches/opencollada/pr622_and_disable_subdirs.patch",
revision=OPENCOLLADA_VERSION
)
if "python" in targets and not USE_CURRENT_PYTHON_VERSION:
# Python should not be built with -fvisibility=hidden, from experience that introduces segfaults
OLD_CXX_FLAGS = os.environ["CXXFLAGS"]
OLD_C_FLAGS = os.environ["CFLAGS"]
os.environ["CXXFLAGS"] = CXXFLAGS_MINIMAL
os.environ["CFLAGS"] = CFLAGS_MINIMAL
# On OSX a dynamic python library is built or it would not be compatible
# with the system python because of some threading initialization
PYTHON_CONFIGURE_ARGS = []
if platform.system() == "Darwin":
PYTHON_CONFIGURE_ARGS = ["--enable-shared"]
for PYTHON_VERSION in PYTHON_VERSIONS:
try:
build_dependency(
f"python-{PYTHON_VERSION}",
"autoconf",
PYTHON_CONFIGURE_ARGS,
f"http://www.python.org/ftp/python/{PYTHON_VERSION}/",
f"Python-{PYTHON_VERSION}.tgz"
)
except RuntimeError as e:
# Sometimes setting up modules such as pip/lzma can cause
# the python installer script to return a non zero exit
# code where actually the headers and dynamic libraries
# are installed correctly. This is all we need so we catch
# the exception and only reraise if a partially successful
# install is not detected.
if not os.path.exists(
os.path.join(DEPS_DIR, "install", f"python-{PYTHON_VERSION}")
):
raise e
os.environ["CXXFLAGS"] = OLD_CXX_FLAGS
os.environ["CFLAGS"] = OLD_C_FLAGS
if "boost" in targets:
str_concat = lambda prefix: lambda postfix: "" if postfix.strip() == "" else "=".join((prefix, postfix.strip()))
build_dependency(
f"boost-{BOOST_VERSION}",
mode="bjam",
build_tool_args=[
f"--stagedir={DEPS_DIR}/install/boost-{BOOST_VERSION}",
"--with-system",
"--with-program_options",
"--with-regex",
"--with-thread",
"--with-date_time",
"--with-iostreams",
f"link={LINK_TYPE}"
] + \
BOOST_ADDRESS_MODEL + \
list(map(str_concat("cxxflags"), CXXFLAGS.strip().split(' '))) + \
list(map(str_concat("linkflags"), LDFLAGS.strip().split(' '))) + \
["stage", "-s", "NO_BZIP2=1"],
download_url=BOOST_LOCATION,
download_name=f"boost_{BOOST_VERSION_UNDERSCORE}.tar.bz2"
)
if "cgal" in targets:
build_dependency(
name=f"gmp-{GMP_VERSION}",
mode="autoconf",
build_tool_args=[ENABLE_FLAG, DISABLE_FLAG, "--with-pic"],
download_url="https://ftp.gnu.org/gnu/gmp/",
download_name=f"gmp-{GMP_VERSION}.tar.bz2"
)
build_dependency(
name=f"mpfr-{MPFR_VERSION}",
mode="autoconf",
build_tool_args=[ENABLE_FLAG, DISABLE_FLAG, f"--with-gmp={DEPS_DIR}/install/gmp-{GMP_VERSION}"],
download_url=f"http://www.mpfr.org/mpfr-{MPFR_VERSION}/",
download_name=f"mpfr-{MPFR_VERSION}.tar.bz2"
)
build_dependency(
name=f"cgal-{CGAL_VERSION}",
mode="cmake",
build_tool_args=[
f"-DGMP_LIBRARIES={DEPS_DIR}/install/gmp-{GMP_VERSION}/lib/libgmp.{LIBRARY_EXT}",
f"-DGMP_INCLUDE_DIR={DEPS_DIR}/install/gmp-{GMP_VERSION}/include",
f"-DMPFR_LIBRARIES={DEPS_DIR}/install/mpfr-{MPFR_VERSION}/lib/libmpfr.{LIBRARY_EXT}" ,
f"-DMPFR_INCLUDE_DIR={DEPS_DIR}/install/mpfr-{MPFR_VERSION}/include",
f"-DBoost_INCLUDE_DIR={DEPS_DIR}/install/boost-{BOOST_VERSION}",
f"-DCMAKE_INSTALL_PREFIX={DEPS_DIR}/install/cgal-{CGAL_VERSION}/",
"-DCGAL_HEADER_ONLY=On",
"-DBUILD_SHARED_LIBS=Off"
],
download_url="https://github.com/CGAL/cgal.git",
download_name="cgal",
download_tool=download_tool_git,
revision=f"v{CGAL_VERSION}"
)
cecho("Building IfcOpenShell:", GREEN)
IFCOS_DIR = os.path.join(DEPS_DIR, "build", "ifcopenshell")
if os.environ.get("NO_CLEAN", "").lower() not in {"1", "on", "true"}:
if os.path.exists(IFCOS_DIR):
shutil.rmtree(IFCOS_DIR)
os.makedirs(IFCOS_DIR, exist_ok=True)
executables_dir = os.path.join(IFCOS_DIR, "executables")
os.makedirs(executables_dir, exist_ok=True)
logger.info("\rConfiguring executables...")
OFF_ON = ["OFF", "ON"]
exec_args = [
"-DBUILD_IFCGEOM=" +OFF_ON["IfcGeom" in targets],
"-DBUILD_GEOMSERVER=" +OFF_ON["IfcGeomServer" in targets],
"-DBUILD_CONVERT=" +OFF_ON["IfcConvert" in targets],
"-DBUILD_IFCPYTHON=" "OFF",
"-DCMAKE_INSTALL_PREFIX=" f"{DEPS_DIR}/install/ifcopenshell",
]
cmake_args = [
"-DUSE_MMAP=" "OFF",
"-DBUILD_EXAMPLES=" "OFF",
"-DBUILD_SHARED_LIBS=" +OFF_ON[not BUILD_STATIC],
"-DBOOST_ROOT=" f"{DEPS_DIR}/install/boost-{BOOST_VERSION}",
"-DGLTF_SUPPORT=" "ON",
"-DJSON_INCLUDE_DIR=" f"{DEPS_DIR}/install/json",
"-DBoost_NO_BOOST_CMAKE=" "On",
"-DADD_COMMIT_SHA=" +("On" if ADD_COMMIT_SHA else "Off")
]
if "cgal" in targets:
cmake_args.extend([
"-DCGAL_INCLUDE_DIR=" f"{DEPS_DIR}/install/cgal-{CGAL_VERSION}/include",
"-DGMP_INCLUDE_DIR=" f"{DEPS_DIR}/install/gmp-{GMP_VERSION}/include",
"-DGMP_LIBRARY_DIR=" f"{DEPS_DIR}/install/gmp-{GMP_VERSION}/lib",
"-DMPFR_INCLUDE_DIR=" f"{DEPS_DIR}/install/mpfr-{MPFR_VERSION}/include",
"-DMPFR_LIBRARY_DIR=" f"{DEPS_DIR}/install/mpfr-{MPFR_VERSION}/lib",
])
if "occ" in targets and USE_OCCT:
occ_include_dir = f"{DEPS_DIR}/install/occt-{OCCT_VERSION}/include/opencascade"
occ_library_dir = f"{DEPS_DIR}/install/occt-{OCCT_VERSION}/lib"
cmake_args.extend([
"-DOCC_INCLUDE_DIR=" +occ_include_dir,
"-DOCC_LIBRARY_DIR=" +occ_library_dir
])
elif "occ" in targets:
occ_include_dir = f"{DEPS_DIR}/install/oce-{OCE_VERSION}/include/oce"
occ_library_dir = f"{DEPS_DIR}/install/oce-{OCE_VERSION}/lib"
cmake_args.extend([
"-DOCC_INCLUDE_DIR=" +occ_include_dir,
"-DOCC_LIBRARY_DIR=" +occ_library_dir
])
if "OpenCOLLADA" in targets:
cmake_args.extend([
"-DOPENCOLLADA_INCLUDE_DIR=" f"{DEPS_DIR}/install/OpenCOLLADA/include/opencollada",
"-DOPENCOLLADA_LIBRARY_DIR=" f"{DEPS_DIR}/install/OpenCOLLADA/lib/opencollada"
])
else:
cmake_args.extend([
"-DCOLLADA_SUPPORT=" "Off",
])
if "pcre" in targets:
cmake_args.append(
"-DPCRE_LIBRARY_DIR=" f"{DEPS_DIR}/install/pcre-{PCRE_VERSION}/lib"
)
if "libxml2" in targets:
cmake_args.extend([
"-DLIBXML2_INCLUDE_DIR=" f"{DEPS_DIR}/install/libxml2-{LIBXML2_VERSION}/include/libxml2",
"-DLIBXML2_LIBRARIES=" f"{DEPS_DIR}/install/libxml2-{LIBXML2_VERSION}/lib/libxml2.{LIBRARY_EXT}"
])
if "hdf5" in targets:
cmake_args.extend([
"-DHDF5_INCLUDE_DIR=" f"{DEPS_DIR}/install/hdf5-{HDF5_VERSION}/include",
"-DHDF5_LIBRARY_DIR=" f"{DEPS_DIR}/install/hdf5-{HDF5_VERSION}/lib"
])
run_cmake("", exec_args + cmake_args, cmake_dir=CMAKE_DIR, cwd=executables_dir)
logger.info("\rBuilding executables... ")
run([make, f"-j{IFCOS_NUM_BUILD_PROCS}"], cwd=executables_dir)
run([make, "install/strip" if BUILD_CFG == "Release" else "install"], cwd=executables_dir)
if "IfcOpenShell-Python" in targets:
# On OSX the actual Python library is not linked against.
ADDITIONAL_ARGS = ""
if platform.system() == "Darwin":
ADDITIONAL_ARGS = "-Wl,-flat_namespace,-undefined,suppress"
os.environ["CXXFLAGS"] = f"{CXXFLAGS_MINIMAL} {ADDITIONAL_ARGS}"
os.environ["CFLAGS"] = f"{CFLAGS_MINIMAL} {ADDITIONAL_ARGS}"
os.environ["LDFLAGS"] = f"{LDFLAGS} {ADDITIONAL_ARGS}"
python_dir = os.path.join(IFCOS_DIR, "pythonwrapper")
os.makedirs(python_dir, exist_ok=True)
def compile_python_wrapper(python_version, python_library, python_include, python_executable):
logger.info(f"\rConfiguring python {python_version} wrapper...")
cache_path = os.path.join(python_dir, "CMakeCache.txt")
if os.path.exists(cache_path):
os.remove(cache_path)
os.environ["PYTHON_LIBRARY_BASENAME"] = os.path.basename(python_library)
run_cmake("",
cmake_args + [
"-DPYTHON_LIBRARY=" +python_library,
"-DPYTHON_EXECUTABLE=" +python_executable,
"-DPYTHON_INCLUDE_DIR=" +python_include,
"-DSWIG_EXECUTABLE=" f"{DEPS_DIR}/install/swig/bin/swig",
"-DCMAKE_INSTALL_PREFIX=" f"{DEPS_DIR}/install/ifcopenshell/tmp",
"-DUSERSPACE_PYTHON_PREFIX=" +["Off", "On"][os.environ.get("PYTHON_USER_SITE", "").lower() in {"1", "on", "true"}]
], cmake_dir=CMAKE_DIR, cwd=python_dir)
logger.info(f"\rBuilding python {python_version} wrapper... ")
run([make, f"-j{IFCOS_NUM_BUILD_PROCS}", "_ifcopenshell_wrapper"], cwd=python_dir)
run([make, "install/local"], cwd=os.path.join(python_dir, "ifcwrap"))
module_dir = os.path.dirname(run([python_executable, "-c", "import inspect, ifcopenshell; print(inspect.getfile(ifcopenshell))"]))
if platform.system() != "Darwin":
# TODO: This symbol name depends on the Python version?
run([strip, "-s", "-K", "PyInit__ifcopenshell_wrapper", "_ifcopenshell_wrapper.so"], cwd=module_dir)
return module_dir
if USE_CURRENT_PYTHON_VERSION:
python_info = sysconfig.get_paths()
python_lib = os.path.join(
sysconfig.get_config_var('LIBDIR'),
sysconfig.get_config_var('multiarchsubdir').replace("/", ""),
sysconfig.get_config_var("INSTSONAME")
)
compile_python_wrapper(platform.python_version(), python_lib, python_info["include"], sys.executable)
else:
for python_version in PYTHON_VERSIONS:
python_library = run([bash, "-c", f"ls {DEPS_DIR}/install/python-{python_version}/lib/libpython*.*"])
python_include = run([bash, "-c", f"ls -d {DEPS_DIR}/install/python-{python_version}/include/python*"])
python_executable = os.path.join(DEPS_DIR, "install", f"python-{python_version}", "bin", f"python{python_version[0]}")
module_dir = compile_python_wrapper(python_version, python_library, python_include, python_executable)
run([cp, "-R", module_dir, os.path.join(DEPS_DIR, "install", "ifcopenshell", f"python-{python_version}")])
logger.info("\rBuilt IfcOpenShell...\n\n")
+32
View File
@@ -0,0 +1,32 @@
http://git.dev.opencascade.org/gitweb/?p=occt.git;a=commitdiff;h=0ab4e621833f4eae945a3762c9a29ee12e2eec53#patch1
diff --git a/src/HLRBRep/HLRBRep_InternalAlgo.cxx b/src/HLRBRep/HLRBRep_InternalAlgo.cxx
index ca885ca..c13cb06 100644 (file)
--- a/src/HLRBRep/HLRBRep_InternalAlgo.cxx
+++ b/src/HLRBRep/HLRBRep_InternalAlgo.cxx
@@ -165,7 +165,7 @@ void HLRBRep_InternalAlgo::Update ()
SB.Bounds(v1,v2,e1,e2,f1,f2);
for (Standard_Integer e = e1; e <= e2; e++) {
- HLRBRep_EdgeData ed = aEDataArray.ChangeValue(e);
+ HLRBRep_EdgeData& ed = aEDataArray.ChangeValue(e);
HLRAlgo::DecodeMinMax(ed.MinMax(), TheMin, TheMax);
if (FirstTime) {
FirstTime = Standard_False;
@@ -307,7 +307,7 @@ void HLRBRep_InternalAlgo::InitEdgeStatus ()
Standard_Integer nf = myDS->NbFaces();
for (Standard_Integer e = 1; e <= ne; e++) {
- HLRBRep_EdgeData ed = aEDataArray.ChangeValue(e);
+ HLRBRep_EdgeData& ed = aEDataArray.ChangeValue(e);
if (ed.Selected()) ed.Status().ShowAll();
}
// for (Standard_Integer f = 1; f <= nf; f++) {
@@ -368,7 +368,7 @@ void HLRBRep_InternalAlgo::Select ()
Standard_Integer nf = myDS->NbFaces();
for (Standard_Integer e = 1; e <= ne; e++) {
- HLRBRep_EdgeData ed = aEDataArray.ChangeValue(e);
+ HLRBRep_EdgeData& ed = aEDataArray.ChangeValue(e);
ed.Selected(Standard_True);
}
@@ -0,0 +1,17 @@
Description: Enable exception handling
Upstream defaults to no exception handling for performance reasons,
but in OCCT's role as a shared library it's better for Debian to
enable it.
Author: Kurt Kremitzki <kkremitzki@gmail.com>
Last-Update: 2018-06-10
--- a/adm/cmake/occt_defs_flags.cmake
+++ b/adm/cmake/occt_defs_flags.cmake
@@ -138,5 +138,5 @@
set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -s")
endif()
-set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNo_Exception")
-set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DNo_Exception")
+#set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNo_Exception")
+#set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DNo_Exception")
@@ -0,0 +1,29 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 95abbe21..293c951c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -284,10 +284,10 @@ add_subdirectory(COLLADASaxFrameworkLoader)
add_subdirectory(COLLADAStreamWriter)
# building COLLADAValidator app
-add_subdirectory(COLLADAValidator)
+# add_subdirectory(COLLADAValidator)
# DAE validator app
-add_subdirectory(DAEValidator)
+# add_subdirectory(DAEValidator)
# Library export
install(EXPORT LibraryExport DESTINATION ${OPENCOLLADA_INST_CMAKECONFIG} FILE OpenCOLLADATargets.cmake)
diff --git a/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp b/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp
index 1f9a3eef..dd6f5c59 100644
--- a/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp
+++ b/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp
@@ -10,6 +10,7 @@
#include "GeneratedSaxParserUtils.h"
#include <math.h>
+#include <cmath>
#include <memory>
#include <string.h>
#include <limits>
+22
View File
@@ -0,0 +1,22 @@
From a0deb4ce8b43cf3c8b8c0a4225c6be5296446dbd Mon Sep 17 00:00:00 2001
From: Adam Eri <adam.eri@blackmirror.media>
Date: Tue, 3 Sep 2019 23:30:20 +0200
Subject: [PATCH] Resolves compile error on macOS
Resolves "no member named 'isnan' in namespace 'std'" on macOS
---
GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp b/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp
index 1f9a3eef..dd6f5c59 100644
--- a/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp
+++ b/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp
@@ -10,6 +10,7 @@
#include "GeneratedSaxParserUtils.h"
#include <math.h>
+#include <cmath>
#include <memory>
#include <string.h>
#include <limits>
+2
View File
@@ -0,0 +1,2 @@
[tool.black]
line-length = 120
+64
View File
@@ -0,0 +1,64 @@
# ****************************************************************************
# line endings
# to suppress line ending changes in github, add ?w=1 at link end of a diff
# for more information see
# FreeCAD source code src/Mod/.gitattributes
# FreeCAD forum topic https://forum.freecadweb.org/viewtopic.php?f=17&t=41117
# FreeCAD pull request https://github.com/FreeCAD/FreeCAD/pull/2752
# get all used file types
# in a directory in a bash use
# find . -type f -name '*.*' | sed 's|.*\.||' | sort -u
# search for a specific file ending
# find . -type f -name '*.ico'
# normalize the line endings of the following files
*.cpp text
*.css text
*.csv text
*.feature text
*.gitattributes text
*.gitignore text
*.gitkeep
*.h text
*.html text
*.ifc text
*.json text
*.md text
*.po text
*.pot text
*.py text
*.txt text
# files not normalized ATM
# bat
# bnf
# blend
# i
# ico
# mo
# mpass
# png
# pth
# pyc
# rst
# svg
# ttf
# xsd
# line endings of all directories will be normalized
# to exclude a directory from being normalized add it here
# example: to exclude dirctory ifcbimtester use the following line without #
# ifcbimtester/** -text
# use git to manually correct the file endings
# git add --renormalize .
+621
View File
@@ -0,0 +1,621 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
+165
View File
@@ -0,0 +1,165 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.
+2
View File
@@ -0,0 +1,2 @@
include src/bcf/v2/xsd/*.xsd
include src/bcf/v3/xsd/*.xsd
+101
View File
@@ -0,0 +1,101 @@
# bcf
A simple Python implementation of BCF. The data model is described in `data.py`.
Manipulation of BCF-XML is available via `bcfxml.py` and manipulation of BCF-API
is available via `bcfapi.py`.
- BCF-XML version 2.1: Fully supported
- BCF-API version 2.1: Not supported, will probably tackle this after BCF-API v3.0
- BCF-XML version 3.0: Almost fully supported, except for the documents module
- BCF-API version 3.0: Almost fully supported, except for two requests.
## bcfxml
The `bcfxml` module lets you interact with the BCF-XML standard.
```python
from bcf import bcfxml
# Load a project
bcfxml = bcfxml.load("/path/to/file.bcf")
# The project is also stored in the module
# project == bcfxml.project
project=bcfxml.get_project()
print(project.name)
# To edit a project, just modify the object directly
bcfxml.project.name = "New name"
bcfxml.edit_project()
# The BCF file is extracted to this temporary directory
print(bcfxml.filepath)
# Get a dictionary of topics
topics = bcfxml.get_topics()
# Note: topics == bcfxml.topics
for guid, topic in bcfxml.topics.items():
print("Topic guid is", guid)
print("Topic guid is", topic.guid)
print("Topic title is", topic.title)
# Fetch extra data about a topic
header = bcfxml.get_header(guid)
comments = bcfxml.get_comments(guid)
viewpoints = bcfxml.get_viewpoints(guid)
# Note: comments == topic.comments, and so on
for comment_guid, comment in comments.items():
print(comment_guid)
print(comment.comment)
print(comment.author)
# Get a particular topic
topic = bcfxml.get_topic(guid)
# Modify a topic
topic.title = "New title"
bcfxml.edit_topic(topic)
```
## bcfapi
The `bcfapi` module lets you interact with the BCF-API standard.
```python
from bcf.v3.bcfapi import FoundationClient, BcfClient
foundation_client = FoundationClient("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET", "OPENCDE_BASEURL")
auth_methods = foundation_client.get_auth_methods()
# Our library currently only implements the authorization_code flow
if "authorization_code" in auth_methods:
foundation_client.login()
bcf_client = BcfClient(foundation_client)
versions = foundation_client.get_versions()
for version in versions:
if "3.0" in versions:
if version["api_id"] == "bcf" and version["version_id"] == "3.0":
bcf_client.set_version(version)
data = bcf_client.get_projects()
print(data)
project_id = data[0]["project_id"]
print(project_id)
data = bcf_client.get_project(project_id)
print(data)
data = bcf_client.get_extensions(project_id)
print(data)
```
## Todo List
The remaining work that needs to be completed in `bcfxml.py` and `bcfapi.py`.
- For `bcfxml.py` two xsds support is remaining namely 'documents.xsd`and`extensions.xsd`.
- For `bcfapi.py` two requests that are `get_topics` and `get_comments` are remaining.
+12
View File
@@ -0,0 +1,12 @@
[build-system]
requires = [
"setuptools>=42",
"wheel"
]
build-backend = "setuptools.build_meta"
[tool.black]
line-length = 120
[tool.isort]
profile = "black"
+1
View File
@@ -0,0 +1 @@
xmlschema
+37
View File
@@ -0,0 +1,37 @@
[metadata]
name=bcf-client
version=0.0.1
author = Ifcopenshell
description = A simple Python implementation of BCF
url = https://github.com/IfcOpenShell/IfcOpenShell
project_urls =
Code=https://github.com/IfcOpenShell/IfcOpenShell
Issues=https://github.com/IfcOpenShell/IfcOpenShell/issues
long_description = file: README.md
long_description_content_type = text/markdown
classifiers =
License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Operating System :: OS Independent
Programming Language :: Python :: 3
Topic :: Scientific/Engineering
Topic :: Utilities
keywords =
Python
file formats
engineering
[options]
package_dir =
= src
packages = find:
python_requires = >=3
install_requires=
xmlschema
include_package_data = True
[options.packages.find]
where = src
[flake8]
max-line-length = 120
ignore = E24, E121, E123, E126, E203, E226, E704, E741, W503, W504
+17
View File
@@ -0,0 +1,17 @@
# BCF - BCF Python library
# Copyright (C) 2021 Prabhat Singh <singh01prabhat@gmail.com>
#
# This file is part of BCF.
#
# BCF is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# BCF is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with BCF. If not, see <http://www.gnu.org/licenses/>.
+61
View File
@@ -0,0 +1,61 @@
# BCF - BCF Python library
# Copyright (C) 2021 Prabhat Singh <singh01prabhat@gmail.com>
#
# This file is part of BCF.
#
# BCF is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# BCF is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with BCF. If not, see <http://www.gnu.org/licenses/>.
import os.path
import zipfile
import tempfile
from xml.dom import minidom
def load(filepath):
filepath = extract_project(filepath)
if os.path.isfile(os.path.join(filepath, "bcf.version")):
version_path = os.path.join(filepath, "bcf.version")
version_id = get_version(version_path)
# TODO: we actually coded it for 2.1, let's check the difference between 2.0 and 2.1
if version_id == "2.1" or version_id == "2.0":
from bcf.v2.bcfxml import BcfXml
bcfxml = BcfXml()
bcfxml.filepath = filepath
return bcfxml
elif version_id == "3.0":
from bcf.v3.bcfxml import BcfXml
bcfxml = BcfXml()
bcfxml.filepath = filepath
return bcfxml
else:
raise Exception(f"Version {version_id} not supported.")
def get_version(version_path):
xmlparse = minidom.parse(version_path)
version_el = xmlparse.getElementsByTagName("Version")[0]
version = version_el.getAttribute("VersionId")
return version
def extract_project(filepath):
if not filepath:
return
zip_file = zipfile.ZipFile(filepath)
filepath = tempfile.mkdtemp()
zip_file.extractall(filepath)
return filepath
+19
View File
@@ -0,0 +1,19 @@
# BCF - BCF Python library
# Copyright (C) 2020, 2021 Dion Moult <dion@thinkmoult.com>
#
# This file is part of BCF.
#
# BCF is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# BCF is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with BCF. If not, see <http://www.gnu.org/licenses/>.
+790
View File
@@ -0,0 +1,790 @@
# BCF - BCF Python library
# Copyright (C) 2020, 2021 Dion Moult <dion@thinkmoult.com>
#
# This file is part of BCF.
#
# BCF is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# BCF is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with BCF. If not, see <http://www.gnu.org/licenses/>.
import os
import uuid
import shutil
import zipfile
import logging
import tempfile
import bcf.v2.data
from datetime import datetime
from xml.dom import minidom
from xmlschema import XMLSchema
from contextlib import contextmanager
from shutil import copyfile
cwd = os.path.dirname(os.path.realpath(__file__))
@contextmanager
def cd(newdir):
prevdir = os.getcwd()
os.chdir(os.path.expanduser(newdir))
try:
yield
finally:
os.chdir(prevdir)
class BcfXml:
def __init__(self):
self.filepath = None
self.logger = logging.getLogger("bcfxml")
self.author = "john@doe.com"
self.project = bcf.v2.data.Project()
self.version = "2.1"
self.topics = {}
def new_project(self):
self.project.project_id = str(uuid.uuid4())
self.project.name = "New Project"
self.topics = {}
if self.filepath:
self.close_project()
self.filepath = tempfile.mkdtemp()
self.edit_project()
self.edit_version()
def get_project(self, filepath=None):
if not filepath:
return self.project
if os.path.isfile(os.path.join(self.filepath, "project.bcfp")):
data = self._read_xml("project.bcfp", "project.xsd")
self.project.extension_schema = data["ExtensionSchema"]
if "Project" in data:
self.project.project_id = data["Project"]["@ProjectId"]
self.project.name = data["Project"].get("Name")
return self.project
def edit_project(self):
self.document = minidom.Document()
root = self._create_element(self.document, "ProjectExtension")
project = self._create_element(root, "Project", {"ProjectId": self.project.project_id})
self._create_element(project, "Name", text=self.project.name)
self._create_element(root, "ExtensionSchema", text="extensions.xsd")
with open(os.path.join(self.filepath, "project.bcfp"), "wb") as f:
f.write(self.document.toprettyxml(encoding="utf-8"))
def save_project(self, filepath):
with cd(self.filepath):
zip_file = zipfile.ZipFile(filepath, "w", zipfile.ZIP_DEFLATED)
for root, dirs, files in os.walk("./"):
for file in files:
zip_file.write(os.path.join(root, file))
zip_file.close()
def get_version(self):
data = self._read_xml("bcf.version", "version.xsd")
self.version = data["@VersionId"]
return self.version
def edit_version(self):
self.document = minidom.Document()
root = self._create_element(self.document, "Version", {"VersionId": self.version})
version = self._create_element(root, "DetailedVersion", text=self.version)
with open(os.path.join(self.filepath, "bcf.version"), "wb") as f:
f.write(self.document.toprettyxml(encoding="utf-8"))
def get_topics(self):
self.topics = {}
topics = []
subdirs = []
for (dirpath, dirnames, filenames) in os.walk(self.filepath):
subdirs = dirnames
break
for subdir in subdirs:
try:
uuid.UUID(subdir)
except ValueError:
continue
if not os.path.exists(os.path.join(self.filepath, subdir, "markup.bcf")):
continue
self.topics[subdir] = self.get_topic(subdir)
return self.topics
def get_header(self, guid):
data = self._read_xml(os.path.join(guid, "markup.bcf"), "markup.xsd")
if "Header" not in data:
return
header = bcf.v2.data.Header()
for item in data["Header"]["File"]:
header_file = bcf.v2.data.HeaderFile()
optional_keys = {
"filename": "Filename",
"date": "Date",
"reference": "Reference",
"ifc_project": "@IfcProject",
"ifc_spatial_structure_element": "@IfcSpatialStructureElement",
"is_external": "@isExternal",
}
for key, value in optional_keys.items():
if value in item:
setattr(header_file, key, item[value])
header.files.append(header_file)
self.topics[guid].header = header
return header
def get_topic(self, guid):
if guid in self.topics:
return self.topics[guid]
data = self._read_xml(os.path.join(guid, "markup.bcf"), "markup.xsd")
topic = bcf.v2.data.Topic()
self.topics[guid] = topic
mandatory_keys = {
"guid": "@Guid",
"title": "Title",
"creation_date": "CreationDate",
"creation_author": "CreationAuthor",
}
for key, value in mandatory_keys.items():
setattr(topic, key, data["Topic"][value])
optional_keys = {
"priority": "Priority",
"index": "Index",
"labels": "Labels",
"reference_links": "ReferenceLink",
"modified_date": "ModifiedDate",
"modified_author": "ModifiedAuthor",
"due_date": "DueDate",
"assigned_to": "AssignedTo",
"stage": "Stage",
"description": "Description",
"topic_status": "@TopicStatus",
"topic_type": "@TopicType",
}
for key, value in optional_keys.items():
if value in data["Topic"]:
setattr(topic, key, data["Topic"][value])
if "BimSnippet" in data["Topic"]:
bim_snippet = bcf.v2.data.BimSnippet()
keys = {
"snippet_type": "@SnippetType",
"is_external": "@IsExternal",
"reference": "Reference",
"reference_schema": "ReferenceSchema",
}
for key, value in keys.items():
if value in data["Topic"]["BimSnippet"]:
setattr(bim_snippet, key, data["Topic"]["BimSnippet"][value])
topic.bim_snippet = bim_snippet
if "DocumentReference" in data["Topic"]:
for item in data["Topic"]["DocumentReference"]:
document_reference = bcf.v2.data.DocumentReference()
keys = {
"referenced_document": "ReferencedDocument",
"is_external": "@IsExternal",
"guid": "@Guid",
"description": "Description",
}
for key, value in keys.items():
if value in item:
setattr(document_reference, key, item[value])
topic.document_references.append(document_reference)
if "RelatedTopic" in data["Topic"]:
for item in data["Topic"]["RelatedTopic"]:
related_topic = bcf.v2.data.RelatedTopic()
related_topic.guid = item["@Guid"]
topic.related_topics.append(related_topic)
return topic
def add_topic(self, topic=None):
if topic is None:
topic = bcf.v2.data.Topic()
if not topic.guid:
topic.guid = str(uuid.uuid4())
if not topic.title:
topic.title = "New Topic"
os.mkdir(os.path.join(self.filepath, topic.guid))
self.edit_topic(topic)
return topic
def edit_topic(self, topic):
if not topic.creation_date:
topic.creation_date = datetime.utcnow().isoformat()
topic.creation_author = self.author
else:
topic.modified_date = datetime.utcnow().isoformat()
topic.modified_author = self.author
self.document = minidom.Document()
root = self._create_element(self.document, "Markup")
self.write_header(topic.header, root)
topic_el = self._create_element(
root,
"Topic",
{
"Guid": topic.guid,
"TopicType": topic.topic_type,
"TopicStatus": topic.topic_status,
},
)
for reference_link in topic.reference_links:
self._create_element(topic_el, "ReferenceLink", text=reference_link)
text_map = {
"Title": topic.title,
"Priority": topic.priority,
"Index": topic.index,
}
for key, value in text_map.items():
if value:
self._create_element(topic_el, key, text=value)
for label in topic.labels:
self._create_element(topic_el, "Labels", text=label)
text_map = {
"CreationDate": topic.creation_date,
"CreationAuthor": topic.creation_author,
"ModifiedDate": topic.modified_date,
"ModifiedAuthor": topic.modified_author,
"DueDate": topic.due_date,
"AssignedTo": topic.assigned_to,
"Stage": topic.stage,
"Description": topic.description,
}
for key, value in text_map.items():
if value:
self._create_element(topic_el, key, text=value)
if topic.bim_snippet:
bim_snippet = self._create_element(
topic_el,
"BimSnippet",
{"SnippetType": topic.bim_snippet.snippet_type, "isExternal": topic.bim_snippet.is_external},
)
self._create_element(bim_snippet, "Reference", text=topic.bim_snippet.reference)
self._create_element(bim_snippet, "ReferenceSchema", text=topic.bim_snippet.reference_schema)
for reference in topic.document_references:
reference_el = self._create_element(
topic_el, "DocumentReference", {"Guid": reference.guid, "isExternal": reference.is_external}
)
self._create_element(reference_el, "ReferencedDocument", text=reference.referenced_document)
self._create_element(reference_el, "Description", text=reference.description)
for related_topic in topic.related_topics:
self._create_element(topic_el, "RelatedTopic", {"Guid": related_topic.guid})
self.write_comments(topic.comments, root)
self.write_viewpoints(topic.viewpoints, root, topic)
with open(os.path.join(self.filepath, topic.guid, "markup.bcf"), "wb") as f:
f.write(self.document.toprettyxml(encoding="utf-8"))
def write_header(self, header, root):
if not header or not header.files:
return
header_el = self._create_element(root, "Header")
for f in header.files:
file_el = self._create_element(
header_el,
"File",
{
"IfcProject": f.ifc_project,
"IfcSpatialStructureElement": f.ifc_spatial_structure_element,
"isExternal": f.is_external,
},
)
if f.filename:
self._create_element(file_el, "Filename", text=f.filename)
if f.date:
self._create_element(file_el, "Date", text=f.date)
if f.reference:
self._create_element(file_el, "Reference", text=f.reference)
def write_comments(self, comments, root):
for comment in comments.values():
comment_el = self._create_element(root, "Comment", {"Guid": comment.guid})
text_map = {
"Date": comment.date,
"Author": comment.author,
"Comment": comment.comment,
"ModifiedDate": comment.modified_date,
"ModifiedAuthor": comment.modified_author,
}
for key, value in text_map.items():
if value:
self._create_element(comment_el, key, text=value)
if comment.viewpoint:
self._create_element(comment_el, "Viewpoint", {"Guid": comment.viewpoint.guid})
def add_comment(self, topic, comment=None):
if comment is None:
comment = bcf.v2.data.Comment()
if not comment.guid:
comment.guid = str(uuid.uuid4())
if not comment.comment:
comment.comment = "'Free software' is a matter of liberty, not price. To understand the concept, you should think of 'free' as in 'free speech,' not as in 'free beer'."
topic.comments[comment.guid] = comment
self.edit_comment(comment, topic)
def edit_comment(self, comment, topic):
if not comment.date:
comment.date = datetime.utcnow().isoformat()
comment.author = self.author
else:
comment.modified_date = datetime.utcnow().isoformat()
comment.modified_author = self.author
self.edit_topic(topic)
def delete_comment(self, guid, topic):
if guid in topic.comments:
del topic.comments[guid]
self.edit_topic(topic)
def delete_topic(self, guid):
if guid in self.topics:
del self.topics[guid]
shutil.rmtree(os.path.join(self.filepath, guid))
def write_viewpoints(self, viewpoints, root, topic):
for viewpoint in viewpoints.values():
viewpoint_el = self._create_element(root, "Viewpoints", {"Guid": viewpoint.guid})
text_map = {"Viewpoint": viewpoint.viewpoint, "Snapshot": viewpoint.snapshot, "Index": viewpoint.index}
for key, value in text_map.items():
if value:
self._create_element(viewpoint_el, key, text=value)
self.write_viewpoint(viewpoint, topic)
def write_viewpoint(self, viewpoint, topic):
document = minidom.Document()
root = self._create_element(document, "VisualizationInfo", {"Guid": viewpoint.guid})
self.write_viewpoint_components(viewpoint, root)
self.write_viewpoint_orthogonal_camera(viewpoint, root)
self.write_viewpoint_perspective_camera(viewpoint, root)
self.write_viewpoint_lines(viewpoint, root)
self.write_viewpoint_clipping_planes(viewpoint, root)
self.write_viewpoint_bitmaps(viewpoint, root)
with open(os.path.join(self.filepath, topic.guid, viewpoint.viewpoint), "wb") as f:
f.write(document.toprettyxml(encoding="utf-8"))
def write_viewpoint_components(self, viewpoint, parent):
if not viewpoint.components:
return
components_el = self._create_element(parent, "Components")
if viewpoint.components.view_setup_hints:
view_setup_hints = self._create_element(
components_el,
"ViewSetupHints",
{
"SpacesVisible": viewpoint.components.view_setup_hints.spaces_visible,
"SpaceBoundariesVisible": viewpoint.components.view_setup_hints.space_boundaries_visible,
"OpeningsVisible": viewpoint.components.view_setup_hints.openings_visible,
},
)
if viewpoint.components.selection:
selection_el = self._create_element(components_el, "Selection")
for selection in viewpoint.components.selection:
self.write_component(selection, selection_el)
visibility = self._create_element(
components_el, "Visibility", {"DefaultVisibility": viewpoint.components.visibility.default_visibility}
)
if viewpoint.components.visibility.exceptions:
exceptions_el = self._create_element(visibility, "Exceptions")
for exception in viewpoint.components.visibility.exceptions:
self.write_component(exception, exceptions_el)
if viewpoint.components.coloring:
coloring_el = self._create_element(components_el, "Coloring")
for color in viewpoint.components.coloring:
color_el = self._create_element(coloring_el, "Color", {"Color": color.color})
for component in color.components:
self.write_component(component, color_el)
def write_viewpoint_orthogonal_camera(self, viewpoint, parent):
if not viewpoint.orthogonal_camera:
return
camera = viewpoint.orthogonal_camera
camera_el = self._create_element(parent, "OrthogonalCamera")
camera_view_point = self._create_element(camera_el, "CameraViewPoint")
self.write_vector(camera_view_point, camera.camera_view_point)
camera_direction = self._create_element(camera_el, "CameraDirection")
self.write_vector(camera_direction, camera.camera_direction)
camera_up_vector = self._create_element(camera_el, "CameraUpVector")
self.write_vector(camera_up_vector, camera.camera_up_vector)
self._create_element(camera_el, "ViewToWorldScale", text=camera.view_to_world_scale)
def write_viewpoint_perspective_camera(self, viewpoint, parent):
if not viewpoint.perspective_camera:
return
camera = viewpoint.perspective_camera
camera_el = self._create_element(parent, "PerspectiveCamera")
camera_view_point = self._create_element(camera_el, "CameraViewPoint")
self.write_vector(camera_view_point, camera.camera_view_point)
camera_direction = self._create_element(camera_el, "CameraDirection")
self.write_vector(camera_direction, camera.camera_direction)
camera_up_vector = self._create_element(camera_el, "CameraUpVector")
self.write_vector(camera_up_vector, camera.camera_up_vector)
self._create_element(camera_el, "FieldOfView", text=camera.field_of_view)
def write_viewpoint_lines(self, viewpoint, parent):
if not viewpoint.lines:
return
lines_el = self._create_element(parent, "Lines")
for line in viewpoint.lines:
line_el = self._create_element(lines_el, "Line")
start_point_el = self._create_element(line_el, "StartPoint")
self.write_vector(start_point_el, line.start_point)
end_point_el = self._create_element(line_el, "EndPoint")
self.write_vector(end_point_el, line.end_point)
def write_viewpoint_clipping_planes(self, viewpoint, parent):
if not viewpoint.clipping_planes:
return
planes_el = self._create_element(parent, "ClippingPlanes")
for plane in viewpoint.clipping_planes:
plane_el = self._create_element(planes_el, "ClippingPlane")
location_el = self._create_element(plane_el, "Location")
self.write_vector(location_el, plane.location)
direction_el = self._create_element(plane_el, "Direction")
self.write_vector(direction_el, plane.direction)
def write_viewpoint_bitmaps(self, viewpoint, parent):
if not viewpoint.bitmaps:
return
for bitmap in viewpoint.bitmaps:
bitmap_el = self._create_element(parent, "Bitmap")
text_map = {"Bitmap": bitmap.bitmap_format, "Reference": bitmap.reference}
for key, value in text_map.items():
self._create_element(bitmap_el, key, text=value)
location_el = self._create_element(bitmap_el, "Location")
self.write_vector(location_el, bitmap.location)
normal_el = self._create_element(bitmap_el, "Normal")
self.write_vector(normal_el, bitmap.normal)
up_el = self._create_element(bitmap_el, "Up")
self.write_vector(up_el, bitmap.up)
self._create_element(bitmap_el, "Height", text=bitmap.height)
def write_vector(self, parent, from_obj):
self._create_element(parent, "X", text=from_obj.x)
self._create_element(parent, "Y", text=from_obj.y)
self._create_element(parent, "Z", text=from_obj.z)
def write_component(self, data, parent):
component_el = self._create_element(parent, "Component", {"IfcGuid": data.ifc_guid})
text_map = {"OriginatingSystem": data.originating_system, "AuthoringToolId": data.authoring_tool_id}
for key, value in text_map.items():
if value:
self._create_element(component_el, key, text=value)
def add_viewpoint(self, topic, viewpoint=None):
if not viewpoint:
viewpoint = bcf.v2.data.Viewpoint()
if not viewpoint.guid:
viewpoint.guid = str(uuid.uuid4())
if not viewpoint.viewpoint:
viewpoint.viewpoint = f"{viewpoint.guid}.bcfv"
if viewpoint.snapshot:
topic_filepath = os.path.join(self.filepath, topic.guid)
filepath = os.path.join(topic_filepath, viewpoint.snapshot)
if not os.path.exists(filepath):
filename = viewpoint.guid + os.path.splitext(viewpoint.snapshot)[-1]
copyfile(viewpoint.snapshot, os.path.join(topic_filepath, filename))
viewpoint.snapshot = filename
topic.viewpoints[viewpoint.guid] = viewpoint
self.edit_topic(topic)
def delete_viewpoint(self, guid, topic):
if guid not in topic.viewpoints:
return
viewpoint = topic.viewpoints[guid]
if viewpoint.snapshot:
filepath = os.path.join(self.filepath, topic.guid, viewpoint.snapshot)
if os.path.exists(filepath):
os.remove(filepath)
if viewpoint.viewpoint:
filepath = os.path.join(self.filepath, topic.guid, viewpoint.viewpoint)
if os.path.exists(filepath):
os.remove(filepath)
for bitmap in viewpoint.bitmaps:
if not bitmap.reference:
continue
filepath = os.path.join(self.filepath, topic.guid, bitmap.reference)
if os.path.exists(filepath):
os.remove(filepath)
del topic.viewpoints[guid]
self.edit_topic(topic)
def delete_file(self, topic, index):
if not topic.header:
return
f = topic.header.files.pop(index)
filepath = os.path.join(self.filepath, topic.guid, f.reference)
if not f.is_external and os.path.exists(filepath):
os.remove(filepath)
self.edit_topic(topic)
def delete_bim_snippet(self, topic):
if not topic.bim_snippet:
return
if topic.bim_snippet.reference and not topic.bim_snippet.is_external:
filepath = os.path.join(self.filepath, topic.guid, topic.bim_snippet.reference)
if os.path.exists(filepath):
os.remove(filepath)
topic.bim_snippet = None
self.edit_topic(topic)
def delete_document_reference(self, topic, index):
document_reference = topic.document_references[index]
if document_reference.referenced_document and not document_reference.is_external:
filepath = os.path.join(self.filepath, topic.guid, document_reference.referenced_document)
if os.path.exists(filepath):
os.remove(filepath)
del topic.document_references[index]
self.edit_topic(topic)
def add_document_reference(self, topic, document_reference):
if os.path.exists(document_reference.referenced_document):
topic_filepath = os.path.join(self.filepath, topic.guid)
filename = os.path.basename(document_reference.referenced_document)
copyfile(document_reference.referenced_document, os.path.join(topic_filepath, filename))
document_reference.referenced_document = filename
document_reference.is_external = False
else:
document_reference.is_external = True
if not document_reference.guid:
document_reference.guid = str(uuid.uuid4())
topic.document_references.append(document_reference)
self.edit_topic(topic)
def add_bim_snippet(self, topic, bim_snippet):
if topic.bim_snippet:
self.delete_bim_snippet(topic)
if os.path.exists(bim_snippet.reference):
topic_filepath = os.path.join(self.filepath, topic.guid)
filename = os.path.basename(bim_snippet.reference)
copyfile(bim_snippet.reference, os.path.join(topic_filepath, filename))
bim_snippet.reference = filename
bim_snippet.is_external = False
else:
bim_snippet.is_external = True
topic.bim_snippet = bim_snippet
self.edit_topic(topic)
def add_file(self, topic, header_file):
if os.path.exists(header_file.reference):
topic_filepath = os.path.join(self.filepath, topic.guid)
header_file.filename = os.path.basename(header_file.reference)
copyfile(header_file.reference, os.path.join(topic_filepath, header_file.filename))
header_file.reference = header_file.filename
header_file.is_external = False
header_file.date = datetime.utcnow().isoformat()
if not topic.header:
topic.header = bcf.v2.data.Header()
topic.header.files.append(header_file)
self.edit_topic(topic)
def get_comments(self, guid):
comments = {}
data = self._read_xml(os.path.join(guid, "markup.bcf"), "markup.xsd")
if "Comment" not in data:
return comments
for item in data["Comment"]:
comment = bcf.v2.data.Comment()
mandatory_keys = {"guid": "@Guid", "date": "Date", "author": "Author", "comment": "Comment"}
for key, value in mandatory_keys.items():
setattr(comment, key, item[value])
optional_keys = {"modified_date": "ModifiedDate", "modified_author": "ModifiedAuthor"}
for key, value in optional_keys.items():
if value in item:
setattr(comment, key, item[value])
if "Viewpoint" in item:
viewpoint = bcf.v2.data.Viewpoint()
viewpoint.guid = item["Viewpoint"]["@Guid"]
comment.viewpoint = viewpoint
comments[comment.guid] = comment
self.topics[guid].comments = comments
return comments
def get_viewpoints(self, guid):
viewpoints = {}
data = self._read_xml(os.path.join(guid, "markup.bcf"), "markup.xsd")
if "Viewpoints" not in data:
return viewpoints
for item in data["Viewpoints"]:
viewpoint = self.get_viewpoint(item, guid)
viewpoints[viewpoint.guid] = viewpoint
self.topics[guid].viewpoints = viewpoints
return viewpoints
def get_viewpoint(self, data, topic_guid):
viewpoint = bcf.v2.data.Viewpoint()
viewpoint.guid = data["@Guid"]
optional_keys = {"viewpoint": "Viewpoint", "snapshot": "Snapshot", "index": "Index"}
for key, value in optional_keys.items():
if value in data:
setattr(viewpoint, key, data[value])
visinfo = self._read_xml(os.path.join(topic_guid, viewpoint.viewpoint), "visinfo.xsd")
viewpoint.components = self.get_viewpoint_components(visinfo)
viewpoint.orthogonal_camera = self.get_viewpoint_orthogonal_camera(visinfo)
viewpoint.perspective_camera = self.get_viewpoint_perspective_camera(visinfo)
viewpoint.lines = self.get_viewpoint_lines(visinfo)
viewpoint.clipping_planes = self.get_viewpoint_clipping_planes(visinfo)
viewpoint.bitmaps = self.get_viewpoint_bitmaps(visinfo)
return viewpoint
def get_viewpoint_components(self, visinfo):
if "Components" not in visinfo:
return None
components = bcf.v2.data.Components()
data = visinfo["Components"]
if "ViewSetupHints" in data:
view_setup_hints = bcf.v2.data.ViewSetupHints()
optional_keys = {
"spaces_visible": "@SpacesVisible",
"space_boundaries_visible": "@SpaceBoundariesVisible",
"openings_visible": "@OpeningsVisible",
}
for key, value in optional_keys.items():
if value in data["ViewSetupHints"]:
setattr(view_setup_hints, key, data["ViewSetupHints"][value])
components.view_setup_hints = view_setup_hints
if "Selection" in data and "Component" in data["Selection"]:
for item in data["Selection"]["Component"]:
components.selection.append(self.get_component(item))
if "Visibility" in data:
component_visibility = bcf.v2.data.ComponentVisibility()
if "@DefaultVisibility" in data["Visibility"]:
component_visibility.default_visibility = data["Visibility"]["@DefaultVisibility"]
if "Exceptions" in data["Visibility"] and "Component" in data["Visibility"]["Exceptions"]:
for item in data["Visibility"]["Exceptions"]["Component"]:
component_visibility.exceptions.append(self.get_component(item))
components.visibility = component_visibility
if "Coloring" in data and "Color" in data["Coloring"]:
for item in data["Coloring"]["Color"]:
color = bcf.v2.data.Color()
color.color = item["@Color"]
for item2 in item["Component"]:
color.components.append(self.get_component(item2))
components.coloring.append(color)
return components
def get_viewpoint_orthogonal_camera(self, visinfo):
if "OrthogonalCamera" not in visinfo:
return None
camera = bcf.v2.data.OrthogonalCamera()
data = visinfo["OrthogonalCamera"]
self.set_vector(camera.camera_view_point, data["CameraViewPoint"])
self.set_vector(camera.camera_direction, data["CameraDirection"])
self.set_vector(camera.camera_up_vector, data["CameraUpVector"])
camera.view_to_world_scale = data["ViewToWorldScale"]
return camera
def get_viewpoint_perspective_camera(self, visinfo):
if "PerspectiveCamera" not in visinfo:
return None
camera = bcf.v2.data.PerspectiveCamera()
data = visinfo["PerspectiveCamera"]
self.set_vector(camera.camera_view_point, data["CameraViewPoint"])
self.set_vector(camera.camera_direction, data["CameraDirection"])
self.set_vector(camera.camera_up_vector, data["CameraUpVector"])
camera.field_of_view = data["FieldOfView"]
return camera
def get_viewpoint_lines(self, visinfo):
if "Lines" not in visinfo:
return []
lines = []
for item in visinfo["Lines"]["Line"]:
line = bcf.v2.data.Line()
self.set_vector(line.start_point, item["StartPoint"])
self.set_vector(line.end_point, item["EndPoint"])
lines.append(line)
return lines
def get_viewpoint_clipping_planes(self, visinfo):
if "ClippingPlanes" not in visinfo:
return []
planes = []
for item in visinfo["ClippingPlanes"]["ClippingPlane"]:
plane = bcf.v2.data.ClippingPlane()
self.set_vector(plane.location, item["Location"])
self.set_vector(plane.direction, item["Direction"])
planes.append(plane)
return planes
def get_viewpoint_bitmaps(self, visinfo):
if "Bitmap" not in visinfo:
return []
bitmaps = []
for item in visinfo["Bitmap"]:
bitmap = bcf.v2.data.Bitmap()
bitmap.reference = item["Reference"]
bitmap.bitmap_format = item["Bitmap"].upper()
self.set_vector(bitmap.location, item["Location"])
self.set_vector(bitmap.normal, item["Normal"])
self.set_vector(bitmap.up, item["Up"])
bitmap.height = item["Height"]
bitmaps.append(bitmap)
return bitmaps
def set_vector(self, to_obj, from_xml):
to_obj.x = from_xml["X"]
to_obj.y = from_xml["Y"]
to_obj.z = from_xml["Z"]
def get_component(self, data):
component = bcf.v2.data.Component()
optional_keys = {
"originating_system": "OriginatingSystem",
"authoring_tool_id": "AuthoringToolId",
"ifc_guid": "@IfcGuid",
}
for key, value in optional_keys.items():
if value in data:
setattr(component, key, data[value])
return component
def close_project(self):
shutil.rmtree(self.filepath)
def _read_xml(self, filename, xsd):
schema = XMLSchema(os.path.join(cwd, "xsd", xsd))
filepath = os.path.join(self.filepath, filename)
(data, errors) = schema.to_dict(filepath, validation="lax")
for error in errors:
self.logger.error(error)
return data
def _create_element(self, parent, name, attributes={}, text=None):
element = self.document.createElement(name)
for key, value in attributes.items():
if isinstance(value, bool):
element.setAttribute(key, str(value).lower())
elif value:
element.setAttribute(key, value)
if text is not None:
text = self.document.createTextNode(str(text))
element.appendChild(text)
parent.appendChild(element)
return element
def __del__(self):
self.close_project()
+198
View File
@@ -0,0 +1,198 @@
# BCF - BCF Python library
# Copyright (C) 2020, 2021 Dion Moult <dion@thinkmoult.com>
#
# This file is part of BCF.
#
# BCF is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# BCF is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with BCF. If not, see <http://www.gnu.org/licenses/>.
class Project:
def __init__(self):
self.project_id = ""
self.name = ""
self.extension_schema = ""
class BimSnippet:
def __init__(self):
self.snippet_type = None
self.is_external = False
self.reference = None
self.reference_schema = None
class DocumentReference:
def __init__(self):
self.referenced_document = None
self.description = None
self.guid = None
self.is_external = False
class RelatedTopic:
def __init__(self):
self.guid = None
class HeaderFile:
def __init__(self):
self.filename = None
self.date = None
self.reference = None
self.ifc_project = None
self.ifc_spatial_structure_element = None
self.is_external = True
class Header:
def __init__(self):
self.files = []
class Topic:
def __init__(self):
self.reference_links = []
self.title = ""
self.priority = None
self.index = None # Deprecated, stored, but ignored
self.labels = []
self.creation_date = None
self.creation_author = None
self.modified_date = None
self.modified_author = None
self.due_date = None
self.assigned_to = None
self.stage = None
self.description = None
self.bim_snippet = None
self.document_references = []
self.related_topics = []
self.topic_status = None
self.topic_type = None
self.guid = None
self.header = None
self.comments = {}
self.viewpoints = {}
class Comment:
def __init__(self):
self.guid = None
self.date = None
self.author = None
self.comment = None
self.viewpoint = None
self.modified_date = None
self.modified_author = None
self.topic_guid = None # Part of BCF-API
class ViewSetupHints:
def __init__(self):
self.spaces_visible = False
self.space_boundaries_visible = False
self.openings_visible = False
class Component:
def __init__(self):
self.originating_system = None
self.authoring_tool_id = None
self.ifc_guid = None
class ComponentVisibility:
def __init__(self):
self.exceptions = []
self.default_visibility = False
class Color:
def __init__(self):
self.color = None
self.components = []
class Components:
def __init__(self):
self.view_setup_hints = None
self.selection = []
self.visibility = None
self.coloring = []
class Point:
def __init__(self):
self.x = 0
self.y = 0
self.z = 0
class Direction(Point):
pass
class OrthogonalCamera:
def __init__(self):
self.camera_view_point = Point()
self.camera_direction = Direction()
self.camera_up_vector = Direction()
self.view_to_world_scale = 1.0
class PerspectiveCamera:
def __init__(self):
self.camera_view_point = Point()
self.camera_direction = Direction()
self.camera_up_vector = Direction()
self.field_of_view = 60.0
class Line:
def __init__(self):
self.start_point = Point()
self.end_point = Point()
class ClippingPlane:
def __init__(self):
self.location = Point()
self.direction = Direction()
class Bitmap:
def __init__(self):
self.reference = "" # Only in BCF-XML
self.bitmap_data = None # Only in BCF-API
self.bitmap_format = "PNG" # Enum of png or jpg
self.location = Point()
self.normal = Direction()
self.up = Direction()
self.height = 1.0
class Viewpoint:
def __init__(self):
self.guid = None
self.viewpoint = None
self.snapshot = None
self.index = None
self.components = None # It's not a list, despite the plural name
self.orthogonal_camera = None
self.perspective_camera = None
self.lines = []
self.clipping_planes = []
self.bitmaps = []
+154
View File
@@ -0,0 +1,154 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Mit XMLSpy v2011 rel. 2 sp1 (http://www.altova.com) von Klaus Linhard (IABI e.V.) bearbeitet -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Markup">
<xs:complexType>
<xs:sequence>
<xs:element name="Header" type="Header" minOccurs="0"/>
<xs:element name="Topic" type="Topic"/>
<xs:element name="Comment" type="Comment" minOccurs="0" maxOccurs="unbounded"/>
<!-- ISG Jira issue BCF-9. Add support for several viewpoints and snapshots per issue -->
<xs:element name="Viewpoints" type="ViewPoint" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="Header">
<xs:sequence>
<xs:element name="File" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Filename" type="xs:string" minOccurs="0"/>
<xs:element name="Date" type="xs:dateTime" minOccurs="0"/>
<!-- Reference (URL) of the file -->
<xs:element name="Reference" type="xs:string" minOccurs="0"/>
</xs:sequence>
<xs:attributeGroup ref="FileAttributes"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<!-- ISG Jira issue BCF-9. Add support for several viewpoints and snapshots per issue -->
<xs:complexType name="ViewPoint">
<xs:sequence>
<!-- viewpoint file (xml) -->
<xs:element name="Viewpoint" type="xs:string" minOccurs="0"/>
<!-- the snapshot png -->
<xs:element name="Snapshot" type="xs:string" minOccurs="0"/>
<!-- the viewpoint index (sort order) -->
<xs:element name="Index" type="xs:int" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Guid" type="Guid" use="required"/>
<!-- Guid of the viewpoint -->
</xs:complexType>
<!-- BimSnippet -->
<xs:complexType name="BimSnippet">
<xs:sequence>
<!--
Name of the file in the topic folder containing the snippet or a URL.
E.G.- Expresscode containing p.e Issue, Request
// Maybe some header infos ?? // IfcEntites // Geometry
-->
<!-- Reference (name) to the snippet file -->
<xs:element name="Reference" type="xs:string"/>
<xs:element name="ReferenceSchema" type="xs:string"/>
</xs:sequence>
<xs:attribute name="SnippetType" type="xs:string" use="required"/>
<xs:attribute name="isExternal" type="xs:boolean" default="false"/>
<!-- This flag is true when the reference is a URL pointing outside of the BCF file-->
</xs:complexType>
<xs:complexType name="Topic">
<xs:sequence>
<xs:element name="ReferenceLink" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Title" type="xs:string"/>
<xs:element name="Priority" type="Priority" minOccurs="0"/>
<!-- ISG Jira issue BCF-8 Add a way save order the topics -->
<xs:element name="Index" type="xs:int" minOccurs="0"/>
<xs:element name="Labels" type="TopicLabel" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="CreationDate" type="xs:dateTime" minOccurs="1"/>
<xs:element name="CreationAuthor" type="UserIdType" minOccurs="1"/>
<xs:element name="ModifiedDate" type="xs:dateTime" minOccurs="0"/>
<xs:element name="ModifiedAuthor" type="UserIdType" minOccurs="0"/>
<xs:element name="DueDate" type="xs:dateTime" minOccurs="0"/>
<xs:element name="AssignedTo" type="UserIdType" minOccurs="0"/>
<xs:element name="Stage" type="Stage" minOccurs="0"/>
<xs:element name="Description" type="xs:string" minOccurs="0"/>
<xs:element name="BimSnippet" type="BimSnippet" minOccurs="0"/>
<!-- Name of the file in the topic folder or url -->
<xs:element name="DocumentReference" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<!-- Name of the file in the topic folder or url -->
<xs:element name="ReferencedDocument" type="xs:string" minOccurs="0"/>
<!-- Human readable name of the document -->
<xs:element name="Description" type="xs:string" minOccurs="0"/>
</xs:sequence>
<xs:attributeGroup ref="DocumentReference"/>
</xs:complexType>
</xs:element>
<xs:element name="RelatedTopic" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="Guid" type="Guid" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Guid" type="Guid" use="required"/>
<xs:attribute name="TopicType" type="TopicType"/>
<xs:attribute name="TopicStatus" type="TopicStatus"/>
</xs:complexType>
<!-- Reference to a document inside of the topic folder or a url pointing to the web -->
<xs:attributeGroup name="DocumentReference">
<!-- Guid of the DocumentReference -->
<xs:attribute name="Guid" type="Guid"/>
<!-- A flag that is true when the ReferencedDocument points outside of the BCF file (a URL) -->
<xs:attribute name="isExternal" type="xs:boolean" default="false"/>
</xs:attributeGroup>
<xs:complexType name="Comment">
<xs:sequence>
<xs:element name="Date" type="xs:dateTime"/>
<xs:element name="Author" type="UserIdType"/>
<xs:element name="Comment" type="xs:string"/>
<xs:element name="Viewpoint" minOccurs="0">
<xs:complexType>
<xs:attribute name="Guid" type="Guid" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="ModifiedDate" type="xs:dateTime" minOccurs="0"/>
<xs:element name="ModifiedAuthor" type="UserIdType" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Guid" type="Guid" use="required"/>
</xs:complexType>
<xs:simpleType name="TopicStatus">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="TopicType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="TopicLabel">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="Priority">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="UserIdType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="Stage">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="Guid">
<xs:restriction base="xs:string">
<xs:pattern value="[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcGuid">
<xs:restriction base="xs:string">
<xs:length value="22"/>
<xs:pattern value="[0-9,A-Z,a-z,_$]*"/>
</xs:restriction>
</xs:simpleType>
<xs:attributeGroup name="FileAttributes">
<xs:attribute name="IfcProject" type="IfcGuid"/>
<xs:attribute name="IfcSpatialStructureElement" type="IfcGuid"/>
<xs:attribute name="isExternal" type="xs:boolean" default="true"/>
</xs:attributeGroup>
</xs:schema>
+18
View File
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Mit XMLSpy v2011 rel. 2 sp1 (http://www.altova.com) von Klaus Linhard (IABI e.V.) bearbeitet -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="ProjectExtension">
<xs:complexType>
<xs:sequence>
<xs:element name="Project" type="Project" minOccurs="0"/>
<xs:element name="ExtensionSchema" type="xs:anyURI"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="Project">
<xs:sequence>
<xs:element name="Name" type="xs:string" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="ProjectId" type="xs:string" use="required"/>
</xs:complexType>
</xs:schema>
+12
View File
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Mit XMLSpy v2011 rel. 3 (http://www.altova.com) von Klaus Linhard (IABI e.V.) bearbeitet -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Version">
<xs:complexType>
<xs:sequence>
<xs:element name="DetailedVersion" type="xs:string" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="VersionId" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:schema>
+191
View File
@@ -0,0 +1,191 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Mit XMLSpy v2011 rel. 2 sp1 (http://www.altova.com) von Klaus Linhard (IABI e.V.) bearbeitet -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="VisualizationInfo">
<xs:annotation>
<xs:documentation>VisualizationInfo documentation</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Components" type="Components" minOccurs="0"/>
<xs:element name="OrthogonalCamera" type="OrthogonalCamera" minOccurs="0"/>
<xs:element name="PerspectiveCamera" type="PerspectiveCamera" minOccurs="0"/>
<xs:element name="Lines" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Line" type="Line" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ClippingPlanes" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="ClippingPlane" type="ClippingPlane" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- ISG Jira issue BCF-17: Add support for text in the viewpoints -->
<xs:element name="Bitmap" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Bitmap" type="BitmapFormat"/>
<!-- Name of the bitmap file in the topic folder -->
<xs:element name="Reference" type="xs:string"/>
<!-- Location of the center of the bitmap -->
<xs:element name="Location" type="Point"/>
<!-- Normal of the bitmap -->
<xs:element name="Normal" type="Direction"/>
<!-- Upvector of the bitmap -->
<xs:element name="Up" type="Direction"/>
<!-- Height of the bitmap -->
<xs:element name="Height" type="xs:double"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<!-- Guid of the viewpoint -->
<xs:attribute name="Guid" type="Guid" use="required"/>
</xs:complexType>
</xs:element>
<xs:complexType name="OrthogonalCamera">
<xs:sequence>
<xs:element name="CameraViewPoint" type="Point"/>
<xs:element name="CameraDirection" type="Direction"/>
<xs:element name="CameraUpVector" type="Direction"/>
<xs:element name="ViewToWorldScale" type="xs:double">
<xs:annotation>
<xs:documentation>view's visible size in meters</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="PerspectiveCamera">
<xs:sequence>
<xs:element name="CameraViewPoint" type="Point"/>
<xs:element name="CameraDirection" type="Direction"/>
<xs:element name="CameraUpVector" type="Direction"/>
<xs:element name="FieldOfView" type="FieldOfView">
<xs:annotation>
<xs:documentation>
It is currently limited to a value between 45 and 60 degrees.
This limitation will be dropped in the next release and viewers
should be expect values outside this range in current implementations.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Point">
<xs:sequence>
<xs:element name="X" type="xs:double"/>
<xs:element name="Y" type="xs:double"/>
<xs:element name="Z" type="xs:double"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Direction">
<xs:sequence>
<xs:element name="X" type="xs:double"/>
<xs:element name="Y" type="xs:double"/>
<xs:element name="Z" type="xs:double"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="FieldOfView">
<xs:restriction base="xs:double">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="170"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Components">
<xs:sequence>
<xs:element name="ViewSetupHints" type="ViewSetupHints" minOccurs="0" />
<!-- Components with relevance to the viewpoint. They should be displayed highlighted or selected in a viewer -->
<xs:element name="Selection" type="ComponentSelection" minOccurs="0" />
<xs:element name="Visibility" type="ComponentVisibility" minOccurs="1" />
<xs:element name="Coloring" type="ComponentColoring" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ViewSetupHints">
<xs:attribute name="SpacesVisible" type="xs:boolean"/>
<xs:attribute name="SpaceBoundariesVisible" type="xs:boolean"/>
<xs:attribute name="OpeningsVisible" type="xs:boolean"/>
</xs:complexType>
<xs:complexType name="ComponentSelection">
<xs:sequence>
<xs:element name="Component" type="Component" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ComponentVisibility">
<xs:sequence>
<xs:element name="Exceptions" minOccurs="0">
<!-- List Components that are different than the DefaultVisibility. E.g. if DefaultVisibility = false then list
Components that should be visible -->
<xs:complexType>
<xs:sequence>
<xs:element name="Component" type="Component" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="DefaultVisibility" type="xs:boolean"/>
</xs:complexType>
<xs:complexType name="ComponentColoring">
<xs:sequence>
<xs:element name="Color" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Component" type="Component" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="Color"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Component">
<xs:sequence>
<xs:element name="OriginatingSystem" type="xs:string" minOccurs="0"/>
<xs:element name="AuthoringToolId" type="xs:string" minOccurs="0"/>
</xs:sequence>
<xs:attribute ref="IfcGuid"/>
<!-- ISG Jira Issue BCF-14 -->
</xs:complexType>
<xs:attribute name="Color">
<xs:simpleType>
<xs:restriction base="xs:normalizedString">
<!-- Should either match 3 or 4 hex bytes , e.g. "FF00FF" or "FF00FF99" -->
<xs:pattern value="[0-9,a-f,A-F]{6}([0-9,a-f,A-F]{2})?"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="IfcGuid">
<xs:simpleType>
<xs:restriction base="xs:normalizedString">
<xs:length value="22"/>
<xs:pattern value="[0-9,A-Z,a-z,_$]*"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:complexType name="Line">
<xs:sequence>
<xs:element name="StartPoint" type="Point"/>
<xs:element name="EndPoint" type="Point"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ClippingPlane">
<xs:sequence>
<xs:element name="Location" type="Point"/>
<xs:element name="Direction" type="Direction"/>
</xs:sequence>
</xs:complexType>
<!-- ISG Jira issue BCF-17: Add support for text in the viewpoints -->
<xs:simpleType name="BitmapFormat">
<xs:restriction base="xs:string">
<xs:enumeration value="PNG"/>
<xs:enumeration value="JPG"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Guid">
<xs:restriction base="xs:string">
<xs:pattern value="[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
+19
View File
@@ -0,0 +1,19 @@
# BCF - BCF Python library
# Copyright (C) 2021 Prabhat Singh <singh01prabhat@gmail.com>
#
# This file is part of BCF.
#
# BCF is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# BCF is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with BCF. If not, see <http://www.gnu.org/licenses/>.
+603
View File
@@ -0,0 +1,603 @@
# BCF - BCF Python library
# Copyright (C) 2021 Prabhat Singh <singh01prabhat@gmail.com>
#
# This file is part of BCF.
#
# BCF is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# BCF is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with BCF. If not, see <http://www.gnu.org/licenses/>.
import uuid
import time
import json
import urllib
import requests
import webbrowser
import http.server
import base64
import tempfile
import os
client_id, client_secret = "", ""
class OAuthReceiver(http.server.BaseHTTPRequestHandler):
def do_GET(self):
query = urllib.parse.parse_qs(urllib.parse.urlparse(self.path).query)
self.server.auth_code = query.get("code", [""])[0]
self.server.auth_state = query.get("state", [""])[0]
self.send_response(200)
self.send_header("Content-type", "text/plain")
self.end_headers()
self.wfile.write("You have now authenticated :) You may now close this browser window.".encode("utf-8"))
class FoundationClient:
def __init__(self, client_id, client_secret, base_url=None, redirect_subdir=None):
self.baseurl = base_url
self.access_token = ""
self.refresh_token = ""
self.access_token_expires_on = time.time()
self.refresh_token_expires_on = float("inf")
self.auth_endpoint = None
self.token_endpoint = None
self.client_id = client_id
self.client_secret = client_secret
self.auth_method = None
self.redirect_subdir = redirect_subdir
def get_access_token(self):
if self.access_token and self.access_token_expires_on > time.time():
return self.access_token
elif self.refresh_token and self.refresh_token_expires_on > time.time():
self.get_refresh_token()
else:
self.login()
return self.access_token
def get_auth_methods(self):
resp = requests.get(f"{self.baseurl}foundation/1.0/auth")
return resp.json()["supported_oauth2_flows"]
def get_versions(self):
resp = requests.get(f"{self.baseurl}foundation/versions")
return resp.json()["versions"]
def login(self):
resp = requests.get(f"{self.baseurl}foundation/1.0/auth")
values = resp.json()
self.auth_endpoint = values["oauth2_auth_url"]
self.token_endpoint = values["oauth2_token_url"]
with http.server.HTTPServer(("", 8080), OAuthReceiver) as server:
state = str(uuid.uuid4())
query = urllib.parse.urlencode(
{
"client_id": self.client_id,
"response_type": "code",
"state": state,
"redirect_uri": f"http://localhost:{server.server_address[1]}/{self.redirect_subdir}",
}
)
if "?" in self.auth_endpoint:
webbrowser.open(f"{self.auth_endpoint}&{query}")
else:
webbrowser.open(f"{self.auth_endpoint}?{query}")
server.timeout = 100
server.state = state
server.handle_request()
if server.auth_code and server.auth_state == state:
data = {
"grant_type": "authorization_code",
"code": server.auth_code,
"redirect_uri": f"http://localhost:{server.server_address[1]}/{self.redirect_subdir}",
}
auth_string = f"{self.client_id}:{self.client_secret}"
header_string = base64.b64encode(auth_string.encode("utf-8")).decode("utf-8")
headers = {"Authorization": f"Basic {header_string}"}
self.set_tokens_from_response(requests.post(self.token_endpoint, data=data, headers=headers))
def get_refresh_token(self):
self.set_tokens_from_response(
requests.post(
self.token_endpoint,
params={
"grant_type": "refresh_token",
"refresh_token": self.refresh_token,
},
).json()
)
def get_new_access_token(self):
auth_string = f"{self.client_id}:{self.client_secret}"
header_string = base64.b64encode(auth_string.encode("utf-8")).decode("utf-8")
headers = {"Authorization": f"Basic {header_string}"}
self.set_tokens_from_response(
requests.post(
self.token_endpoint,
data={
"grant_type": "refresh_token",
"refresh_token": self.refresh_token,
},
headers=headers,
).json()
)
def set_auth_method(self, method="authorization_code_grant"):
if method != "authorization_code_grant":
raise NotImplementedError(f"{method} not supported")
else:
self.auth_method = method
def set_tokens_from_response(self, response):
response = response.json()
self.access_token = response["access_token"]
self.refresh_token = response["refresh_token"]
self.access_token_expires_on = time.time() + response["expires_in"]
if "refresh_token_expires_in" in response:
self.refresh_token_expires_on = time.time() + response["refresh_token_expires_in"]
class BcfClient:
def __init__(self, foundation_client):
self.foundation_client = foundation_client
self.version_id = None
self.baseurl = None
self.filepath = tempfile.mkdtemp()
def set_version(self, version):
self.version_id = version["version_id"]
self.baseurl = version["api_base_url"]
def get(self, endpoint, params=None, is_auth_required=False):
# TODO: handle error http status codes and raise exception. Follow error.json standard.
headers = {"Authorization": "Bearer " + self.foundation_client.get_access_token()}
response = requests.get(f"{self.baseurl}{endpoint}", headers=headers, params=params or None)
try:
response = requests.get(f"{self.baseurl}{endpoint}", headers=headers, params=params or None)
if response.status_code == 200:
return response.json()
response.raise_for_status()
except requests.exceptions.HTTPError as e:
print(f"message: {response.reason}' '{response.status_code}' '{ e }")
def post(self, endpoint, data=None, params=None):
headers = {
"Authorization": "Bearer " + self.foundation_client.get_access_token(),
"Content-type": "application/json",
}
try:
response = requests.post(
f"{self.baseurl}{endpoint}",
headers=headers,
params=params or None,
data=data or None,
)
if response.status_code == 201:
return response.status_code, response.text
response.raise_for_status()
except requests.exceptions.HTTPError as errh:
print(f"message: {response.reason}' '{response.status_code}, {errh}")
def put(self, endpoint, data=None, params=None):
headers = {
"Authorization": "Bearer " + self.foundation_client.get_access_token(),
"Content-type": "application/json",
}
try:
response = requests.put(
f"{self.baseurl}{endpoint}",
headers=headers,
params=params or None,
data=data or None,
)
if response.status_code == 200:
return response.status_code, response.text
response.raise_for_status()
except requests.exceptions.HTTPError as errh:
print(f"message: {response.reason}' '{response.status_code}, {errh}")
def delete(self, endpoint, params=None):
headers = {
"Authorization": "Bearer " + self.foundation_client.get_access_token(),
"Content-type": "application/json",
}
try:
response = requests.delete(
f"{self.baseurl}{endpoint}",
headers=headers,
params=params or None,
)
if response.status_code == 200:
return response.status_code, response.text
response.raise_for_status()
except requests.exceptions.HTTPError as errh:
print(f"message: {response.reason}' '{response.status_code}, {errh}")
def get_projects(self) -> list:
return self.get(
f"/projects",
)
def get_project(
self,
project_id="",
) -> dict:
return self.get(
f"/projects/{project_id}",
{
"project_id": project_id,
},
)
def update_project(self, project_id="", data=None) -> dict:
url = f"{self.baseurl}/projects/{project_id}"
headers = {"Authorization": "Bearer " + self.foundation_client.get_access_token()}
resp = requests.put(url, headers=headers, data=data)
return resp.status_code, resp.text
def get_extensions(
self,
project_id="",
) -> dict:
return self.get(
f"/projects/{project_id}/extensions",
{
"project_id": project_id,
},
)
def get_topics(
self,
project_id="",
topics="",
query_string=None,
) -> list:
# return self.get(
# f"/projects/{project_id}/topics",
# {
# "project_id": project_id,
# "topics": topics,
# "query_string": query_string,
# },
# )
pass
def get_topic(self, project_id="", topic_id="") -> dict:
return self.get(
f"/projects/{project_id}/topics/{topic_id}",
{
"project_id": project_id,
"topic_id": topic_id,
},
)
def create_topic(self, project_id="", data=None):
return self.post(f"/projects/{project_id}/topics", data=data)
def update_topic(self, project_id="", topic_id="", data=None) -> dict:
return self.put(f"/projects/{project_id}/topics/{topic_id}", data=data)
def delete_topic(self, project_id="", topic_id=""):
return self.delete(f"/projects/{project_id}/topics/{topic_id}")
def get_snippet(self, project_id="", topic_id="") -> str:
headers = {
"Authorization": "Bearer " + self.foundation_client.get_access_token(),
"Content-type": "application/octet-stream",
}
response = requests.get(
f"{self.baseurl}/projects/{project_id}/topics/{topic_id}/snippet",
headers=headers,
)
# TODO: write to tmpdir
with open(os.path.join(self.filepath, f"{project_id}_{topic_id}_snippet.txt"), "wb") as f:
f.write(response.content.decode("utf-8"))
return response.status_code, response.content
def update_snippet(self, project_id="", topic_id="", files=None, data=None):
headers = {
"Authorization": "Bearer " + self.foundation_client.get_access_token(),
"Content-type": "application/octet-stream",
}
response = requests.put(
f"{self.baseurl}/projects/{project_id}/topics/{topic_id}/snippet",
headers=headers,
files=files,
)
return response.status_code
def get_files_information(self, project_id="") -> list:
return self.get(
f"/projects/{project_id}/files_information",
{
"project_id": project_id,
},
)
def get_files(self, project_id="", topic_id="") -> list:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/files",
{
"project_id": project_id,
"topic_id": topic_id,
},
)
def update_files(
self,
project_id="",
topic_id="",
data=None,
params=None,
):
return self.put(
f"/projects/{project_id}/topics/{topic_id}/files",
data=data,
)
def get_comments(self, project_id="", topic_id="") -> list:
pass
def create_comments(
self,
project_id="",
topic_id="",
data=None,
params=None,
):
return self.post(
f"/projects/{project_id}/topics/{topic_id}/comments",
data=data,
)
def get_comment(self, project_id="", topic_id="", comment_id="") -> dict:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/comments/{comment_id}",
{
"project_id": project_id,
"topic_id": topic_id,
"comment_id": comment_id,
},
)
def delete_comment(self, project_id="", topic_id="", comment_id=""):
return self.delete(f"/projects/{project_id}/topics/{topic_id}/comments/{comment_id}")
def update_comment(
self,
project_id="",
topic_id="",
comment_id="",
data=None,
):
return self.put(
f"/projects/{project_id}/topics/{topic_id}/comments/{comment_id}",
data=data,
)
def get_viewpoints(self, project_id="", topic_id="") -> list:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/viewpoints",
{
"project_id": project_id,
"topic_id": topic_id,
},
)
def create_viewpoints(self, project_id="", topic_id="", data=None):
return self.post(
f"/projects/{project_id}/topics/{topic_id}/viewpoints",
data=data,
)
def get_viewpoint(self, project_id="", topic_id="", viewpoint_id="") -> dict:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/viewpoints/{viewpoint_id}",
{
"project_id": project_id,
"topic_id": topic_id,
"viewpoint_id": viewpoint_id,
},
)
def delete_viewpoint(
self,
project_id="",
topic_id="",
viewpoint_id="",
):
return self.delete(
f"/projects/{project_id}/topics/{topic_id}/viewpoints/{viewpoint_id}",
)
def get_snapshot(self, project_id="", topic_id="", viewpoint_id="") -> str:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/viewpoints/{viewpoint_id}/snapshot",
{
"project_id": project_id,
"topic_id": topic_id,
"viewpoint_id": viewpoint_id,
},
)
def get_bitmap(self, project_id="", topic_id="", viewpoint_id="", bitmap_id="") -> str:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/viewpoints/{viewpoint_id}/bitmaps/{bitmap_id}",
{
"project_id": project_id,
"topic_id": topic_id,
"viewpoint_id": viewpoint_id,
"bitmap_id": bitmap_id,
},
)
def get_selection(self, project_id="", topic_id="", viewpoint_id="") -> dict:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/viewpoints/{viewpoint_id}/selection",
{
"project_id": project_id,
"topic_id": topic_id,
"viewpoint_id": viewpoint_id,
},
)
def get_coloring(self, project_id="", topic_id="", viewpoint_id="") -> dict:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/viewpoints/{viewpoint_id}/coloring",
{
"project_id": project_id,
"topic_id": topic_id,
"viewpoint_id": viewpoint_id,
},
)
def get_visibility(self, project_id="", topic_id="", viewpoint_id="") -> dict:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/viewpoints/{viewpoint_id}/visibility",
{
"project_id": project_id,
"topic_id": topic_id,
"viewpoint_id": viewpoint_id,
},
)
def get_related_topics(self, project_id="", topic_id="") -> list:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/related_topics",
{
"project_id": project_id,
"topic_id": topic_id,
},
)
def update_related_topics(
self,
project_id="",
topic_id="",
data=None,
):
return self.put(
f"/projects/{project_id}/topics/{topic_id}/related_topics",
data=data,
)
def get_document_references(self, project_id="", topic_id="") -> list:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/document_references",
{
"project_id": project_id,
"topic_id": topic_id,
},
)
def create_document_reference(
self,
project_id="",
topic_id="",
data=None,
):
return self.post(
f"/projects/{project_id}/topics/{topic_id}/document_references",
data=data,
)
def update_document_references(
self,
project_id="",
topic_id="",
document_reference_id="",
data=None,
):
return self.put(
f"/projects/{project_id}/topics/{topic_id}/document_references/{document_reference_id}",
data=data,
)
def get_documents(self, project_id="", topic_id="") -> list:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/documents",
{
"project_id": project_id,
"topic_id": topic_id,
},
)
def create_document(
self,
project_id="",
topic_id="",
guid=None,
files=None,
data=None,
):
headers = {
"Authorization": "Bearer " + self.foundation_client.get_access_token(),
"Content-type": "application/octet-stream",
}
response = requests.post(
f"/projects/{project_id}/topics/{topic_id}/documents",
data=data,
params={guid},
files=files,
headers=headers,
)
return response.status_code
def get_document(self, project_id="", topic_id="", document_id="") -> str:
headers = {
"Authorization": "Bearer " + self.foundation_client.get_access_token(),
"Content-type": "application/octet-stream",
}
response = requests.get(
f"{self.baseurl}/projects/{project_id}/topics/documents/{document_id}",
headers=headers,
)
with open(os.path.join(self.filepath, f"{project_id}_{topic_id}_{document_id}_document.txt"), "wb") as f:
f.write(response.content.decode("utf-8"))
return response.status_code, response.content
def get_topics_events(self, project_id="") -> list:
return self.get(
f"/projects/{project_id}/topics/events",
{
"project_id": project_id,
},
)
def get_topic_events(self, project_id="", topic_id="") -> list:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/events",
{
"project_id": project_id,
"topic_id": topic_id,
},
)
def get_comments_events(self, project_id="") -> list:
return self.get(
f"/projects/{project_id}/topics/comments/events",
{
"project_id": project_id,
},
)
def get_comment_events(self, project_id="", topic_id="", comment_id="") -> list:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/comments/{comment_id}/events",
{
"project_id": project_id,
"topic_id": topic_id,
"comment_id": comment_id,
},
)
+847
View File
@@ -0,0 +1,847 @@
# BCF - BCF Python library
# Copyright (C) 2021 Prabhat Singh <singh01prabhat@gmail.com>
#
# This file is part of BCF.
#
# BCF is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# BCF is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with BCF. If not, see <http://www.gnu.org/licenses/>.
import os
import uuid
import shutil
import zipfile
import logging
import tempfile
import bcf.v3.data
from datetime import datetime
from xml.dom import minidom
from xmlschema import XMLSchema
from contextlib import contextmanager
from shutil import copyfile
cwd = os.path.dirname(os.path.realpath(__file__))
@contextmanager
def cd(newdir):
prevdir = os.getcwd()
os.chdir(os.path.expanduser(newdir))
try:
yield
finally:
os.chdir(prevdir)
class BcfXml:
def __init__(self):
self.filepath = None
self.logger = logging.getLogger("bcfxml")
self.author = "john@doe.com"
self.project = bcf.v3.data.Project()
self.version = "3.0"
self.topics = {}
def new_project(self):
self.project.project_id = str(uuid.uuid4())
self.project.name = "New Project"
self.topics = {}
if self.filepath:
self.close_project()
self.filepath = tempfile.mkdtemp()
self.edit_project()
self.edit_version()
def get_project(self, filepath=None):
if os.path.isfile(os.path.join(self.filepath, "project.bcfp")):
data = self._read_xml("project.bcfp", "project.xsd")
self.project.project_id = data["Project"]["@ProjectId"]
self.project.name = data["Project"].get("Name")
return self.project
def edit_project(self):
self.document = minidom.Document()
root = self._create_element(self.document, "ProjectInfo")
project = self._create_element(root, "Project", {"ProjectId": self.project.project_id})
if self.project.name:
self._create_element(project, "Name", text=self.project.name)
with open(os.path.join(self.filepath, "project.bcfp"), "wb") as f:
f.write(self.document.toprettyxml(encoding="utf-8"))
def save_project(self, filepath):
with cd(self.filepath):
zip_file = zipfile.ZipFile(filepath, "w", zipfile.ZIP_DEFLATED)
for root, dirs, files in os.walk("./"):
for file in files:
zip_file.write(os.path.join(root, file))
zip_file.close()
def get_version(self):
data = self._read_xml("bcf.version", "version.xsd")
self.version = data["@VersionId"]
return self.version
def edit_version(self):
self.document = minidom.Document()
root = self._create_element(self.document, "Version", {"VersionId": self.version})
with open(os.path.join(self.filepath, "bcf.version"), "wb") as f:
f.write(self.document.toprettyxml(encoding="utf-8"))
def get_topics(self):
self.topics = {}
topics = []
subdirs = []
for (dirpath, dirnames, filenames) in os.walk(self.filepath):
subdirs = dirnames
break
for subdir in subdirs:
try:
uuid.UUID(subdir)
except ValueError:
continue
if not os.path.exists(os.path.join(self.filepath, subdir, "markup.bcf")):
continue
self.topics[subdir] = self.get_topic(subdir)
return self.topics
def get_header(self, guid):
data = self._read_xml(os.path.join(guid, "markup.bcf"), "markup.xsd")
if "Header" not in data:
return
header = bcf.v3.data.Header()
if data["Header"].get("Files"):
for item in data["Header"]["Files"].get("File", []):
header_file = bcf.v3.data.HeaderFile()
optional_keys = {
"filename": "Filename",
"date": "Date",
"reference": "Reference",
"ifc_project": "@IfcProject",
"ifc_spatial_structure_element": "@IfcSpatialStructureElement",
"is_external": "@IsExternal",
}
for key, value in optional_keys.items():
if value in item:
setattr(header_file, key, item[value])
header.files.append(header_file)
self.topics[guid].header = header
return header
def get_topic(self, guid):
if guid in self.topics:
return self.topics[guid]
data = self._read_xml(os.path.join(guid, "markup.bcf"), "markup.xsd")
topic = bcf.v3.data.Topic()
self.topics[guid] = topic
mandatory_keys = {
"guid": "@Guid",
"title": "Title",
"creation_date": "CreationDate",
"creation_author": "CreationAuthor",
"topic_status": "@TopicStatus",
"topic_type": "@TopicType",
}
for key, value in mandatory_keys.items():
setattr(topic, key, data["Topic"][value])
optional_keys = {
"priority": "Priority",
"index": "Index",
"modified_date": "ModifiedDate",
"modified_author": "ModifiedAuthor",
"due_date": "DueDate",
"assigned_to": "AssignedTo",
"stage": "Stage",
"description": "Description",
"server_assigned_id": "@ServerAssignedId",
}
for key, value in optional_keys.items():
if value in data["Topic"]:
setattr(topic, key, data["Topic"][value])
if data["Topic"].get("ReferenceLinks"):
topic.reference_links.extend(data["Topic"]["ReferenceLinks"].get("ReferenceLink", []))
if data["Topic"].get("Labels"):
topic.labels.extend(data["Topic"]["Labels"].get("Label", []))
if "BimSnippet" in data["Topic"]:
bim_snippet = bcf.v3.data.BimSnippet()
keys = {
"snippet_type": "@SnippetType",
"is_external": "@IsExternal",
"reference": "Reference",
"reference_schema": "ReferenceSchema",
}
for key, value in keys.items():
if value in data["Topic"]["BimSnippet"]:
setattr(bim_snippet, key, data["Topic"]["BimSnippet"][value])
topic.bim_snippet = bim_snippet
if data["Topic"].get("DocumentReferences"):
for item in data["Topic"]["DocumentReferences"].get("DocumentReference", []):
document_reference = bcf.v3.data.DocumentReference()
keys = {
"document_guid": "DocumentGuid",
"url": "Url",
"guid": "@Guid",
"description": "Description",
}
for key, value in keys.items():
if value in item:
setattr(document_reference, key, item[value])
topic.document_references.append(document_reference)
if data["Topic"].get("RelatedTopics"):
for item in data["Topic"]["RelatedTopics"].get("RelatedTopic", []):
related_topic = bcf.v3.data.RelatedTopic()
related_topic.guid = item["@Guid"]
topic.related_topics.append(related_topic)
return topic
def add_topic(self, topic=None):
if topic is None:
topic = bcf.v3.data.Topic()
if not topic.guid:
topic.guid = str(uuid.uuid4())
if not topic.title:
topic.title = "New Topic"
os.mkdir(os.path.join(self.filepath, topic.guid))
self.edit_topic(topic)
return topic
def edit_topic(self, topic):
if not topic.creation_date:
topic.creation_date = datetime.utcnow().isoformat()
topic.creation_author = self.author
else:
topic.modified_date = datetime.utcnow().isoformat()
topic.modified_author = self.author
self.document = minidom.Document()
root = self._create_element(self.document, "Markup")
if topic.header:
self.write_header(topic.header, root)
topic_el = self._create_element(
root,
"Topic",
{
"Guid": topic.guid,
"ServerAssignedId": topic.server_assigned_id,
"TopicType": topic.topic_type,
"TopicStatus": topic.topic_status,
},
)
if topic.reference_links:
reference_Links_el = self._create_element(topic_el, "ReferenceLinks")
for reference_link in topic.reference_links:
self._create_element(reference_Links_el, "ReferenceLink", text=reference_link)
text_map = {
"Title": topic.title,
"Priority": topic.priority,
"Index": topic.index,
}
for key, value in text_map.items():
if value:
self._create_element(topic_el, key, text=value)
if topic.labels:
label_el = self._create_element(topic_el, "Labels")
for label in topic.labels:
self._create_element(label_el, "Label", text=label)
text_map = {
"CreationDate": topic.creation_date,
"CreationAuthor": topic.creation_author,
"ModifiedDate": topic.modified_date,
"ModifiedAuthor": topic.modified_author,
"DueDate": topic.due_date,
"AssignedTo": topic.assigned_to,
"Stage": topic.stage,
"Description": topic.description,
}
for key, value in text_map.items():
if value:
self._create_element(topic_el, key, text=value)
if topic.bim_snippet:
bim_snippet = self._create_element(
topic_el,
"BimSnippet",
{
"SnippetType": topic.bim_snippet.snippet_type,
"IsExternal": topic.bim_snippet.is_external,
},
)
self._create_element(bim_snippet, "Reference", text=topic.bim_snippet.reference)
self._create_element(
bim_snippet,
"ReferenceSchema",
text=topic.bim_snippet.reference_schema,
)
if topic.document_references:
reference_el = self._create_element(topic_el, "DocumentReferences")
self.write_document_references(topic.document_references, reference_el)
if topic.related_topics:
related_topic_el = self._create_element(topic_el, "RelatedTopics")
for related_topic in topic.related_topics:
self._create_element(related_topic_el, "RelatedTopic", {"Guid": related_topic.guid})
if topic.comments:
comment_el = self._create_element(topic_el, "Comments")
self.write_comments(topic.comments, comment_el)
if topic.viewpoints:
viewpoint_el = self._create_element(topic_el, "Viewpoints")
self.write_viewpoints(topic.viewpoints, viewpoint_el, topic)
with open(os.path.join(self.filepath, topic.guid, "markup.bcf"), "wb") as f:
f.write(self.document.toprettyxml(encoding="utf-8"))
def write_document_references(self, references, root):
for reference in references:
document_reference_el = self._create_element(root, "DocumentReference", {"Guid": reference.guid})
if reference.document_guid:
self._create_element(document_reference_el, "DocumentGuid", text=reference.document_guid)
elif reference.url:
self._create_element(document_reference_el, "Url", text=reference.url)
if reference.description:
self._create_element(document_reference_el, "Description", text=reference.description)
def write_header(self, header, root):
if not header or not header.files:
return
header_el = self._create_element(root, "Header")
files_el = self._create_element(header_el, "Files")
for f in header.files:
file_el = self._create_element(
files_el,
"File",
{
"IfcProject": f.ifc_project,
"IfcSpatialStructureElement": f.ifc_spatial_structure_element,
"IsExternal": f.is_external,
},
)
if f.filename:
self._create_element(file_el, "Filename", text=f.filename)
if f.date:
self._create_element(file_el, "Date", text=f.date)
if f.reference:
self._create_element(file_el, "Reference", text=f.reference)
def write_comments(self, comments, root):
for comment in comments.values():
comment_el = self._create_element(root, "Comment", {"Guid": comment.guid})
text_map = {
"Date": comment.date,
"Author": comment.author,
"Comment": comment.comment,
"ModifiedDate": comment.modified_date,
"ModifiedAuthor": comment.modified_author,
}
for key, value in text_map.items():
if value:
self._create_element(comment_el, key, text=value)
if comment.viewpoint:
self._create_element(comment_el, "Viewpoint", {"Guid": comment.viewpoint.guid})
def add_comment(self, topic, comment=None):
if comment is None:
comment = bcf.v3.data.Comment()
if not comment.guid:
comment.guid = str(uuid.uuid4())
if not comment.comment:
comment.comment = "'Free software' is a matter of liberty, not price. To understand the concept, you should think of 'free' as in 'free speech,' not as in 'free beer'."
topic.comments[comment.guid] = comment
self.edit_comment(comment, topic)
def edit_comment(self, comment, topic):
if not comment.date:
comment.date = datetime.utcnow().isoformat()
comment.author = self.author
else:
comment.modified_date = datetime.utcnow().isoformat()
comment.modified_author = self.author
self.edit_topic(topic)
def delete_comment(self, guid, topic):
if guid in topic.comments:
del topic.comments[guid]
self.edit_topic(topic)
def delete_topic(self, guid):
if guid in self.topics:
del self.topics[guid]
shutil.rmtree(os.path.join(self.filepath, guid))
def write_viewpoints(self, viewpoints, root, topic):
for viewpoint in viewpoints.values():
viewpoint_el = self._create_element(root, "ViewPoint", {"Guid": viewpoint.guid})
text_map = {
"Viewpoint": viewpoint.viewpoint,
"Snapshot": viewpoint.snapshot,
"Index": viewpoint.index,
}
for key, value in text_map.items():
if value:
self._create_element(viewpoint_el, key, text=value)
self.write_viewpoint(viewpoint, topic)
def write_viewpoint(self, viewpoint, topic):
document = minidom.Document()
root = self._create_element(document, "VisualizationInfo", {"Guid": viewpoint.guid})
self.write_viewpoint_components(viewpoint, root)
self.write_viewpoint_orthogonal_camera(viewpoint, root)
self.write_viewpoint_perspective_camera(viewpoint, root)
self.write_viewpoint_lines(viewpoint, root)
self.write_viewpoint_clipping_planes(viewpoint, root)
self.write_viewpoint_bitmaps(viewpoint, root)
with open(os.path.join(self.filepath, topic.guid, viewpoint.viewpoint), "wb") as f:
f.write(document.toprettyxml(encoding="utf-8"))
def write_viewpoint_components(self, viewpoint, parent):
if not viewpoint.components:
return
components_el = self._create_element(parent, "Components")
if viewpoint.components.selection:
selection_el = self._create_element(components_el, "Selection")
for selection in viewpoint.components.selection:
self.write_component(selection, selection_el)
if viewpoint.components.visibility:
visibility = self._create_element(
components_el,
"Visibility",
{"DefaultVisibility": viewpoint.components.visibility.default_visibility},
)
if viewpoint.components.visibility.view_setup_hints:
view_setup_hints = self._create_element(
visibility,
"ViewSetupHints",
{
"SpacesVisible": viewpoint.components.visibility.view_setup_hints.spaces_visible,
"SpaceBoundariesVisible": viewpoint.components.visibility.view_setup_hints.space_boundaries_visible,
"OpeningsVisible": viewpoint.components.visibility.view_setup_hints.openings_visible,
},
)
if viewpoint.components.visibility.exceptions:
exceptions_el = self._create_element(visibility, "Exceptions")
for exception in viewpoint.components.visibility.exceptions:
self.write_component(exception, exceptions_el)
if viewpoint.components.coloring:
coloring_el = self._create_element(components_el, "Coloring")
for color in viewpoint.components.coloring:
color_el = self._create_element(coloring_el, "Color", {"Color": color.color})
component_el = self._create_element(color_el, "Components")
for component in color.components:
self.write_component(component, component_el)
def write_viewpoint_orthogonal_camera(self, viewpoint, parent):
if not viewpoint.orthogonal_camera:
return
camera = viewpoint.orthogonal_camera
camera_el = self._create_element(parent, "OrthogonalCamera")
camera_view_point = self._create_element(camera_el, "CameraViewPoint")
self.write_vector(camera_view_point, camera.camera_view_point)
camera_direction = self._create_element(camera_el, "CameraDirection")
self.write_vector(camera_direction, camera.camera_direction)
camera_up_vector = self._create_element(camera_el, "CameraUpVector")
self.write_vector(camera_up_vector, camera.camera_up_vector)
self._create_element(camera_el, "ViewToWorldScale", text=camera.view_to_world_scale)
self._create_element(camera_el, "AspectRatio", text=camera.aspect_ratio)
def write_viewpoint_perspective_camera(self, viewpoint, parent):
if not viewpoint.perspective_camera:
return
camera = viewpoint.perspective_camera
camera_el = self._create_element(parent, "PerspectiveCamera")
camera_view_point = self._create_element(camera_el, "CameraViewPoint")
self.write_vector(camera_view_point, camera.camera_view_point)
camera_direction = self._create_element(camera_el, "CameraDirection")
self.write_vector(camera_direction, camera.camera_direction)
camera_up_vector = self._create_element(camera_el, "CameraUpVector")
self.write_vector(camera_up_vector, camera.camera_up_vector)
self._create_element(camera_el, "FieldOfView", text=camera.field_of_view)
self._create_element(camera_el, "AspectRatio", text=camera.aspect_ratio)
def write_viewpoint_lines(self, viewpoint, parent):
if not viewpoint.lines:
return
lines_el = self._create_element(parent, "Lines")
for line in viewpoint.lines:
line_el = self._create_element(lines_el, "Line")
start_point_el = self._create_element(line_el, "StartPoint")
self.write_vector(start_point_el, line.start_point)
end_point_el = self._create_element(line_el, "EndPoint")
self.write_vector(end_point_el, line.end_point)
def write_viewpoint_clipping_planes(self, viewpoint, parent):
if not viewpoint.clipping_planes:
return
planes_el = self._create_element(parent, "ClippingPlanes")
for plane in viewpoint.clipping_planes:
plane_el = self._create_element(planes_el, "ClippingPlane")
location_el = self._create_element(plane_el, "Location")
self.write_vector(location_el, plane.location)
direction_el = self._create_element(plane_el, "Direction")
self.write_vector(direction_el, plane.direction)
def write_viewpoint_bitmaps(self, viewpoint, parent):
if not viewpoint.bitmaps:
return
bitmaps_el = self._create_element(parent, "Bitmaps")
for bitmap in viewpoint.bitmaps:
bitmap_el = self._create_element(bitmaps_el, "Bitmap")
text_map = {"Format": bitmap.bitmap_format, "Reference": bitmap.reference}
for key, value in text_map.items():
self._create_element(bitmap_el, key, text=value)
location_el = self._create_element(bitmap_el, "Location")
self.write_vector(location_el, bitmap.location)
normal_el = self._create_element(bitmap_el, "Normal")
self.write_vector(normal_el, bitmap.normal)
up_el = self._create_element(bitmap_el, "Up")
self.write_vector(up_el, bitmap.up)
self._create_element(bitmap_el, "Height", text=bitmap.height)
def write_vector(self, parent, from_obj):
self._create_element(parent, "X", text=from_obj.x)
self._create_element(parent, "Y", text=from_obj.y)
self._create_element(parent, "Z", text=from_obj.z)
def write_component(self, data, parent):
component_el = self._create_element(parent, "Component", {"IfcGuid": data.ifc_guid})
text_map = {
"OriginatingSystem": data.originating_system,
"AuthoringToolId": data.authoring_tool_id,
}
for key, value in text_map.items():
if value:
self._create_element(component_el, key, text=value)
def add_viewpoint(self, topic, viewpoint=None):
if not viewpoint:
viewpoint = bcf.v3.data.Viewpoint()
if not viewpoint.guid:
viewpoint.guid = str(uuid.uuid4())
if not viewpoint.viewpoint:
viewpoint.viewpoint = f"{viewpoint.guid}.bcfv"
if viewpoint.snapshot:
topic_filepath = os.path.join(self.filepath, topic.guid)
filepath = os.path.join(topic_filepath, viewpoint.snapshot)
if not os.path.exists(filepath):
filename = viewpoint.guid + os.path.splitext(viewpoint.snapshot)[-1]
copyfile(viewpoint.snapshot, os.path.join(topic_filepath, filename))
viewpoint.snapshot = filename
topic.viewpoints[viewpoint.guid] = viewpoint
self.edit_topic(topic)
def delete_viewpoint(self, guid, topic):
if guid not in topic.viewpoints:
return
viewpoint = topic.viewpoints[guid]
if viewpoint.snapshot:
filepath = os.path.join(self.filepath, topic.guid, viewpoint.snapshot)
if os.path.exists(filepath):
os.remove(filepath)
if viewpoint.viewpoint:
filepath = os.path.join(self.filepath, topic.guid, viewpoint.viewpoint)
if os.path.exists(filepath):
os.remove(filepath)
for bitmap in viewpoint.bitmaps:
if not bitmap.reference:
continue
filepath = os.path.join(self.filepath, topic.guid, bitmap.reference)
if os.path.exists(filepath):
os.remove(filepath)
del topic.viewpoints[guid]
self.edit_topic(topic)
def delete_file(self, topic, index):
if not topic.header:
return
f = topic.header.files.pop(index)
filepath = os.path.join(self.filepath, topic.guid, f.reference)
if not f.is_external and os.path.exists(filepath):
os.remove(filepath)
self.edit_topic(topic)
def delete_bim_snippet(self, topic):
if not topic.bim_snippet:
return
if topic.bim_snippet.reference and not topic.bim_snippet.is_external:
filepath = os.path.join(self.filepath, topic.guid, topic.bim_snippet.reference)
if os.path.exists(filepath):
os.remove(filepath)
topic.bim_snippet = None
self.edit_topic(topic)
def delete_document_reference(self, topic, index):
document_reference = topic.document_references[index]
if document_reference.referenced_document and not document_reference.is_external:
filepath = os.path.join(self.filepath, topic.guid, document_reference.referenced_document)
if os.path.exists(filepath):
os.remove(filepath)
del topic.document_references[index]
self.edit_topic(topic)
def add_document_reference(self, topic, document_reference):
if os.path.exists(document_reference.referenced_document):
topic_filepath = os.path.join(self.filepath, topic.guid)
filename = os.path.basename(document_reference.referenced_document)
copyfile(
document_reference.referenced_document,
os.path.join(topic_filepath, filename),
)
document_reference.referenced_document = filename
document_reference.is_external = False
else:
document_reference.is_external = True
if not document_reference.guid:
document_reference.guid = str(uuid.uuid4())
topic.document_references.append(document_reference)
self.edit_topic(topic)
def add_bim_snippet(self, topic, bim_snippet):
if topic.bim_snippet:
self.delete_bim_snippet(topic)
if os.path.exists(bim_snippet.reference):
topic_filepath = os.path.join(self.filepath, topic.guid)
filename = os.path.basename(bim_snippet.reference)
copyfile(bim_snippet.reference, os.path.join(topic_filepath, filename))
bim_snippet.reference = filename
bim_snippet.is_external = False
else:
bim_snippet.is_external = True
topic.bim_snippet = bim_snippet
self.edit_topic(topic)
def add_file(self, topic, header_file):
if os.path.exists(header_file.reference):
topic_filepath = os.path.join(self.filepath, topic.guid)
header_file.filename = os.path.basename(header_file.reference)
copyfile(
header_file.reference,
os.path.join(topic_filepath, header_file.filename),
)
header_file.reference = header_file.filename
header_file.is_external = False
header_file.date = datetime.utcnow().isoformat()
if not topic.header:
topic.header = bcf.v3.data.Header()
topic.header.files.append(header_file)
self.edit_topic(topic)
def get_comments(self, guid):
comments = {}
data = self._read_xml(os.path.join(guid, "markup.bcf"), "markup.xsd")
if "Comments" not in data["Topic"]:
return comments
for item in data["Topic"]["Comments"].get("Comment", []):
comment = bcf.v3.data.Comment()
mandatory_keys = {
"guid": "@Guid",
"date": "Date",
"author": "Author",
}
for key, value in mandatory_keys.items():
setattr(comment, key, item[value])
optional_keys = {
"comment": "Comment",
"modified_date": "ModifiedDate",
"modified_author": "ModifiedAuthor",
}
for key, value in optional_keys.items():
if value in item:
setattr(comment, key, item[value])
if "Viewpoint" in item:
viewpoint = bcf.v3.data.Viewpoint()
viewpoint.guid = item["Viewpoint"]["@Guid"]
comment.viewpoint = viewpoint
comments[comment.guid] = comment
self.topics[guid].comments = comments
return comments
def get_viewpoints(self, guid):
viewpoints = {}
data = self._read_xml(os.path.join(guid, "markup.bcf"), "markup.xsd")
if "Viewpoints" not in data["Topic"]:
return viewpoints
for item in data["Topic"]["Viewpoints"]:
viewpoint = self.get_viewpoint(item, guid)
viewpoints[viewpoint.guid] = viewpoint
self.topics[guid].viewpoints = viewpoints
return viewpoints
def get_viewpoint(self, data, topic_guid):
viewpoint = bcf.v3.data.Viewpoint()
viewpoint.guid = data["@Guid"]
optional_keys = {
"viewpoint": "Viewpoint",
"snapshot": "Snapshot",
"index": "Index",
}
for key, value in optional_keys.items():
if value in data:
setattr(viewpoint, key, data[value])
visinfo = self._read_xml(os.path.join(topic_guid, viewpoint.viewpoint), "visinfo.xsd")
viewpoint.components = self.get_viewpoint_components(visinfo)
viewpoint.orthogonal_camera = self.get_viewpoint_orthogonal_camera(visinfo)
viewpoint.perspective_camera = self.get_viewpoint_perspective_camera(visinfo)
viewpoint.lines = self.get_viewpoint_lines(visinfo)
viewpoint.clipping_planes = self.get_viewpoint_clipping_planes(visinfo)
viewpoint.bitmaps = self.get_viewpoint_bitmaps(visinfo)
return viewpoint
def get_viewpoint_components(self, visinfo):
if "Components" not in visinfo:
return None
components = bcf.v3.data.Components()
data = visinfo["Components"]
if "Selection" in data and "Component" in data["Selection"]:
for item in data["Selection"].get("Component", []):
components.selection.append(self.get_component(item))
if "Visibility" in data:
component_visibility = bcf.v3.data.ComponentVisibility()
if "@DefaultVisibility" in data["Visibility"]:
component_visibility.default_visibility = data["Visibility"]["@DefaultVisibility"]
if "Exceptions" in data["Visibility"] and "Component" in data["Visibility"]["Exceptions"]:
for item in data["Visibility"]["Exceptions"]["Component"]:
component_visibility.exceptions.append(self.get_component(item))
if "ViewSetupHints" in data["Visibility"]:
view_setup_hints = bcf.v3.data.ViewSetupHints()
optional_keys = {
"spaces_visible": "@SpacesVisible",
"space_boundaries_visible": "@SpaceBoundariesVisible",
"openings_visible": "@OpeningsVisible",
}
for key, value in optional_keys.items():
if value in data["Visibility"]["ViewSetupHints"]:
setattr(view_setup_hints, key, data["Visibility"]["ViewSetupHints"][value])
component_visibility.view_setup_hints = view_setup_hints
components.visibility = component_visibility
if "Coloring" in data and "Color" in data["Coloring"]:
for item in data["Coloring"]["Color"]:
color = bcf.v3.data.Color()
color.color = item["@Color"]
for item2 in item["Components"]["Component"]:
color.components.append(self.get_component(item2))
components.coloring.append(color)
return components
def get_viewpoint_orthogonal_camera(self, visinfo):
if "OrthogonalCamera" not in visinfo:
return None
camera = bcf.v3.data.OrthogonalCamera()
data = visinfo["OrthogonalCamera"]
self.set_vector(camera.camera_view_point, data["CameraViewPoint"])
self.set_vector(camera.camera_direction, data["CameraDirection"])
self.set_vector(camera.camera_up_vector, data["CameraUpVector"])
camera.view_to_world_scale = data["ViewToWorldScale"]
camera.aspect_ratio = data["AspectRatio"]
return camera
def get_viewpoint_perspective_camera(self, visinfo):
if "PerspectiveCamera" not in visinfo:
return None
camera = bcf.v3.data.PerspectiveCamera()
data = visinfo["PerspectiveCamera"]
self.set_vector(camera.camera_view_point, data["CameraViewPoint"])
self.set_vector(camera.camera_direction, data["CameraDirection"])
self.set_vector(camera.camera_up_vector, data["CameraUpVector"])
camera.field_of_view = data["FieldOfView"]
camera.aspect_ratio = data["AspectRatio"]
return camera
def get_viewpoint_lines(self, visinfo):
if "Lines" not in visinfo:
return []
lines = []
for item in visinfo["Lines"].get("Line", []):
line = bcf.v3.data.Line()
self.set_vector(line.start_point, item["StartPoint"])
self.set_vector(line.end_point, item["EndPoint"])
lines.append(line)
return lines
def get_viewpoint_clipping_planes(self, visinfo):
if "ClippingPlanes" not in visinfo:
return []
planes = []
for item in visinfo["ClippingPlanes"]["ClippingPlane"]:
plane = bcf.v3.data.ClippingPlane()
self.set_vector(plane.location, item["Location"])
self.set_vector(plane.direction, item["Direction"])
planes.append(plane)
return planes
def get_viewpoint_bitmaps(self, visinfo):
if "Bitmaps" not in visinfo:
return []
bitmaps = []
for item in visinfo["Bitmaps"].get("Bitmap"):
bitmap = bcf.v3.data.Bitmap()
bitmap.reference = item["Reference"]
bitmap.bitmap_format = item["Format"].upper()
self.set_vector(bitmap.location, item["Location"])
self.set_vector(bitmap.normal, item["Normal"])
self.set_vector(bitmap.up, item["Up"])
bitmap.height = item["Height"]
bitmaps.append(bitmap)
return bitmaps
def set_vector(self, to_obj, from_xml):
to_obj.x = from_xml["X"]
to_obj.y = from_xml["Y"]
to_obj.z = from_xml["Z"]
def get_component(self, data):
component = bcf.v3.data.Component()
optional_keys = {
"originating_system": "OriginatingSystem",
"authoring_tool_id": "AuthoringToolId",
"ifc_guid": "@IfcGuid",
}
for key, value in optional_keys.items():
if value in data:
setattr(component, key, data[value])
return component
def close_project(self):
shutil.rmtree(self.filepath)
def _read_xml(self, filename, xsd):
schema = XMLSchema(os.path.join(cwd, "xsd", xsd))
filepath = os.path.join(self.filepath, filename)
(data, errors) = schema.to_dict(filepath, validation="lax")
for error in errors:
self.logger.error(error)
return data
def _create_element(self, parent, name, attributes={}, text=None):
element = self.document.createElement(name)
for key, value in attributes.items():
if isinstance(value, bool):
element.setAttribute(key, str(value).lower())
elif value:
element.setAttribute(key, value)
if text is not None:
text = self.document.createTextNode(str(text))
element.appendChild(text)
parent.appendChild(element)
return element
def __del__(self):
self.close_project()
+200
View File
@@ -0,0 +1,200 @@
# BCF - BCF Python library
# Copyright (C) 2021 Prabhat Singh <singh01prabhat@gmail.com>
#
# This file is part of BCF.
#
# BCF is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# BCF is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with BCF. If not, see <http://www.gnu.org/licenses/>.
class Project:
def __init__(self):
self.project_id = ""
self.name = ""
class BimSnippet:
def __init__(self):
self.snippet_type = None
self.is_external = False
self.reference = None
self.reference_schema = None
class DocumentReference:
def __init__(self):
self.description = None
self.document_guid = None
self.url = None
self.guid = None
class RelatedTopic:
def __init__(self):
self.guid = None
class HeaderFile:
def __init__(self):
self.filename = ""
self.date = None
self.reference = ""
self.ifc_project = None
self.ifc_spatial_structure_element = None
self.is_external = True
class Header:
def __init__(self):
self.files = []
class Topic:
def __init__(self):
self.reference_links = []
self.title = ""
self.priority = None
self.index = None # Deprecated, stored, but ignored
self.labels = []
self.creation_date = None
self.creation_author = None
self.modified_date = None
self.modified_author = None
self.due_date = None
self.assigned_to = None
self.stage = None
self.description = None
self.bim_snippet = None
self.document_references = []
self.related_topics = []
self.topic_status = None
self.topic_type = None
self.guid = None
self.header = None
self.comments = {}
self.viewpoints = {}
self.server_assigned_id = ""
class Comment:
def __init__(self):
self.guid = None
self.date = None
self.author = ""
self.comment = ""
self.viewpoint = None
self.modified_date = None
self.modified_author = ""
class ViewSetupHints:
def __init__(self):
self.spaces_visible = False
self.space_boundaries_visible = False
self.openings_visible = False
class Component:
def __init__(self):
self.originating_system = None
self.authoring_tool_id = None
self.ifc_guid = None
class ComponentVisibility:
def __init__(self):
self.exceptions = []
self.default_visibility = False
self.view_setup_hints = None
class Color:
def __init__(self):
self.color = None
self.components = []
class Components:
def __init__(self):
self.selection = []
self.visibility = None
self.coloring = []
class Point:
def __init__(self):
self.x = 0
self.y = 0
self.z = 0
class Direction(Point):
pass
class OrthogonalCamera:
def __init__(self):
self.camera_view_point = Point()
self.camera_direction = Direction()
self.camera_up_vector = Direction()
self.view_to_world_scale = 1.0
self.aspect_ratio = 1.0
class PerspectiveCamera:
def __init__(self):
self.camera_view_point = Point()
self.camera_direction = Direction()
self.camera_up_vector = Direction()
self.field_of_view = 60.0
self.aspect_ratio = 1.0
class Line:
def __init__(self):
self.start_point = Point()
self.end_point = Point()
class ClippingPlane:
def __init__(self):
self.location = Point()
self.direction = Direction()
class Bitmap:
def __init__(self):
self.reference = "" # Only in BCF-XML
self.bitmap_data = None # Only in BCF-API
self.bitmap_format = "PNG" # Enum of png or jpg
self.location = Point()
self.normal = Direction()
self.up = Direction()
self.height = 1.0
class Viewpoint:
def __init__(self):
self.guid = None
self.viewpoint = None
self.snapshot = None
self.index = None
self.components = None # It's not a list, despite the plural name
self.orthogonal_camera = None
self.perspective_camera = None
self.lines = []
self.clipping_planes = []
self.bitmaps = []
+31
View File
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="shared-types.xsd"/>
<xs:element name="DocumentInfo">
<xs:complexType>
<xs:sequence>
<xs:element name="Documents" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Document" type="Document" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="Document">
<xs:sequence>
<!-- Filename of the document with the file extension. Not used to store the file in the BCF -->
<xs:element name="Filename" type="NonEmptyOrBlankString"/>
<!-- Human readable description of the document -->
<xs:element name="Description" type="NonEmptyOrBlankString" minOccurs="0"/>
</xs:sequence>
<xs:attributeGroup ref="DocumentAttributes"/>
</xs:complexType>
<xs:attributeGroup name="DocumentAttributes">
<!-- Guid of the document. Must match the filename in the BCF -->
<xs:attribute name="Guid" type="Guid" use="required"/>
</xs:attributeGroup>
</xs:schema>
+60
View File
@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="shared-types.xsd"/>
<xs:element name="Extensions">
<xs:complexType>
<xs:sequence>
<xs:element name="TopicTypes" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="TopicType" type="NonEmptyOrBlankString" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="TopicStatuses" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="TopicStatus" type="NonEmptyOrBlankString" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Priorities" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Priority" type="NonEmptyOrBlankString" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="TopicLabels" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="TopicLabel" type="NonEmptyOrBlankString" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Users" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="User" type="NonEmptyOrBlankString" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SnippetTypes" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="SnippetType" type="NonEmptyOrBlankString" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Stages" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Stage" type="NonEmptyOrBlankString" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
+174
View File
@@ -0,0 +1,174 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="shared-types.xsd"/>
<xs:element name="Markup">
<xs:complexType>
<xs:sequence>
<xs:element name="Header" type="Header" minOccurs="0"/>
<xs:element name="Topic" type="Topic"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="Header">
<xs:sequence>
<xs:element name="Files" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="File" type="File" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<!-- ISG Jira issue BCF-9. Add support for several viewpoints and snapshots per issue -->
<xs:complexType name="ViewPoint">
<xs:sequence>
<!-- viewpoint file (xml) -->
<xs:element name="Viewpoint" type="NonEmptyOrBlankString" minOccurs="0"/>
<!-- the snapshot png -->
<xs:element name="Snapshot" type="NonEmptyOrBlankString" minOccurs="0"/>
<!-- the viewpoint index (sort order) -->
<xs:element name="Index" type="xs:int" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Guid" type="Guid" use="required"/>
<!-- Guid of the viewpoint -->
</xs:complexType>
<!-- BimSnippet -->
<xs:complexType name="BimSnippet">
<xs:sequence>
<!--
Name of the file in the topic folder containing the snippet or a URL.
E.G.- Expresscode containing p.e Issue, Request
// Maybe some header infos ?? // IfcEntites // Geometry
-->
<!-- Reference (name) to the snippet file -->
<xs:element name="Reference" type="NonEmptyOrBlankString"/>
<xs:element name="ReferenceSchema" type="NonEmptyOrBlankString"/>
</xs:sequence>
<xs:attribute name="SnippetType" type="NonEmptyOrBlankString" use="required"/>
<xs:attribute name="IsExternal" type="xs:boolean" default="false"/>
<!-- This flag is true when the reference is a URL pointing outside of the BCF file-->
</xs:complexType>
<xs:complexType name="Topic">
<xs:sequence>
<xs:element name="ReferenceLinks" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="ReferenceLink" type="NonEmptyOrBlankString" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Title" type="NonEmptyOrBlankString"/>
<xs:element name="Priority" type="NonEmptyOrBlankString" minOccurs="0"/>
<!-- ISG Jira issue BCF-8 Add a way save order the topics -->
<!-- This property is deprecated and will be removed in a future release -->
<xs:element name="Index" type="xs:int" minOccurs="0"/>
<xs:element name="Labels" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Label" type="NonEmptyOrBlankString" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CreationDate" type="xs:dateTime"/>
<xs:element name="CreationAuthor" type="NonEmptyOrBlankString"/>
<xs:element name="ModifiedDate" type="xs:dateTime" minOccurs="0"/>
<xs:element name="ModifiedAuthor" type="NonEmptyOrBlankString" minOccurs="0"/>
<xs:element name="DueDate" type="xs:dateTime" minOccurs="0"/>
<xs:element name="AssignedTo" type="NonEmptyOrBlankString" minOccurs="0"/>
<xs:element name="Stage" type="NonEmptyOrBlankString" minOccurs="0"/>
<xs:element name="Description" type="NonEmptyOrBlankString" minOccurs="0"/>
<xs:element name="BimSnippet" type="BimSnippet" minOccurs="0"/>
<xs:element name="DocumentReferences" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="DocumentReference" type="DocumentReference" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="RelatedTopics" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="RelatedTopic" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="Guid" type="Guid" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Comments" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Comment" type="Comment" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- ISG Jira issue BCF-9. Add support for several viewpoints and snapshots per issue -->
<xs:element name="Viewpoints" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="ViewPoint" type="ViewPoint" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Guid" type="Guid" use="required"/>
<xs:attribute name="ServerAssignedId" type="NonEmptyOrBlankString" use="optional"/>
<xs:attribute name="TopicType" type="NonEmptyOrBlankString" use="required"/>
<xs:attribute name="TopicStatus" type="NonEmptyOrBlankString" use="required"/>
</xs:complexType>
<xs:complexType name="File">
<xs:sequence>
<xs:element name="Filename" type="NonEmptyOrBlankString" minOccurs="0"/>
<xs:element name="Date" type="xs:dateTime" minOccurs="0"/>
<!-- Reference (URL) of the file -->
<xs:element name="Reference" type="NonEmptyOrBlankString" minOccurs="0"/>
</xs:sequence>
<xs:attributeGroup ref="FileAttributes"/>
</xs:complexType>
<xs:attributeGroup name="FileAttributes">
<xs:attribute name="IfcProject" type="IfcGuid" use="optional"/>
<xs:attribute name="IfcSpatialStructureElement" type="IfcGuid" use="optional"/>
<xs:attribute name="IsExternal" type="xs:boolean" default="true"/>
</xs:attributeGroup>
<!-- Reference to a document inside of the topic folder or a url pointing to the web -->
<xs:complexType name="DocumentReference">
<xs:sequence>
<xs:choice>
<!-- Guid of the document: If pointing to an internal document -->
<xs:element name="DocumentGuid" type="Guid" minOccurs="0"/>
<!-- Url of the reference. If pointing to an external document -->
<xs:element name="Url" type="NonEmptyOrBlankString" minOccurs="0"/>
</xs:choice>
<!-- Human readable description of the document reference -->
<xs:element name="Description" type="NonEmptyOrBlankString" minOccurs="0"/>
</xs:sequence>
<xs:attributeGroup ref="DocumentReferenceAttributes"/>
</xs:complexType>
<xs:attributeGroup name="DocumentReferenceAttributes">
<!-- Guid of the document reference -->
<xs:attribute name="Guid" type="Guid" use="required"/>
</xs:attributeGroup>
<xs:complexType name="Comment">
<xs:sequence>
<xs:element name="Date" type="xs:dateTime"/>
<xs:element name="Author" type="NonEmptyOrBlankString"/>
<xs:element name="Comment" minOccurs="0" type="NonEmptyOrBlankString"/>
<xs:element name="Viewpoint" minOccurs="0">
<xs:complexType>
<xs:attribute name="Guid" type="Guid" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="ModifiedDate" type="xs:dateTime" minOccurs="0"/>
<xs:element name="ModifiedAuthor" type="NonEmptyOrBlankString" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Guid" type="Guid" use="required"/>
</xs:complexType>
<xs:simpleType name="IfcGuid">
<xs:restriction base="xs:string">
<xs:length value="22"/>
<xs:pattern value="[0-9A-Za-z_$]*"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
+17
View File
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="shared-types.xsd"/>
<xs:element name="ProjectInfo">
<xs:complexType>
<xs:sequence>
<xs:element name="Project" type="Project"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="Project">
<xs:sequence>
<xs:element name="Name" type="NonEmptyOrBlankString" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="ProjectId" type="NonEmptyOrBlankString" use="required"/>
</xs:complexType>
</xs:schema>
+14
View File
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="Guid">
<xs:restriction base="xs:string">
<xs:pattern value="[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NonEmptyOrBlankString">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Version">
<xs:complexType>
<xs:attribute name="VersionId" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
+220
View File
@@ -0,0 +1,220 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:include schemaLocation="shared-types.xsd"/>
<xs:element name="VisualizationInfo">
<xs:annotation>
<xs:documentation>VisualizationInfo documentation</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<!--
Although plural, 'Components' is not a collection
-->
<xs:element name="Components" type="Components" minOccurs="0"/>
<xs:choice>
<xs:element name="OrthogonalCamera" type="OrthogonalCamera"/>
<xs:element name="PerspectiveCamera" type="PerspectiveCamera"/>
</xs:choice>
<xs:element name="Lines" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Line" type="Line" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ClippingPlanes" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="ClippingPlane" type="ClippingPlane" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Bitmaps" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Bitmap" type="Bitmap" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<!-- Guid of the viewpoint -->
<xs:attribute name="Guid" type="Guid" use="required"/>
</xs:complexType>
</xs:element>
<xs:complexType name="OrthogonalCamera">
<xs:sequence>
<xs:element name="CameraViewPoint" type="Point"/>
<xs:element name="CameraDirection" type="Direction"/>
<xs:element name="CameraUpVector" type="Direction"/>
<xs:element name="ViewToWorldScale" type="xs:double">
<xs:annotation>
<xs:documentation>view's visible vertical size in meters</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="AspectRatio" type="PositiveDouble">
<xs:annotation>
<xs:documentation>
Proportional relationship between the width and the height of the view (w/h).
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="PerspectiveCamera">
<xs:sequence>
<xs:element name="CameraViewPoint" type="Point"/>
<xs:element name="CameraDirection" type="Direction"/>
<xs:element name="CameraUpVector" type="Direction"/>
<xs:element name="FieldOfView" type="FieldOfView">
<xs:annotation>
<xs:documentation>
Vertical field of view, in degrees.
It is currently limited to a value between 45 and 60 degrees.
This limitation will be dropped in the next release and viewers
should be expect values outside this range in current implementations.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="AspectRatio" type="PositiveDouble">
<xs:annotation>
<xs:documentation>
Proportional relationship between the width and the height of the view (w/h).
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Point">
<xs:sequence>
<xs:element name="X" type="xs:double"/>
<xs:element name="Y" type="xs:double"/>
<xs:element name="Z" type="xs:double"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Direction">
<xs:sequence>
<xs:element name="X" type="xs:double"/>
<xs:element name="Y" type="xs:double"/>
<xs:element name="Z" type="xs:double"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="PositiveDouble">
<xs:restriction base="xs:double">
<xs:minExclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="FieldOfView">
<xs:restriction base="xs:double">
<xs:minExclusive value="0"/>
<xs:maxExclusive value="180"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Components">
<xs:sequence>
<!-- Components with relevance to the viewpoint. They should be displayed highlighted or selected in a viewer -->
<xs:element name="Selection" type="ComponentSelection" minOccurs="0"/>
<xs:element name="Visibility" type="ComponentVisibility" minOccurs="0"/>
<xs:element name="Coloring" type="ComponentColoring" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ComponentSelection">
<xs:sequence>
<xs:element name="Component" type="Component" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ComponentVisibility">
<xs:sequence>
<xs:element name="ViewSetupHints" type="ViewSetupHints" minOccurs="0"/>
<xs:element name="Exceptions" minOccurs="0">
<!-- List Components that are different than the DefaultVisibility. E.g. if DefaultVisibility = false then list
Components that should be visible -->
<xs:complexType>
<xs:sequence>
<xs:element name="Component" type="Component" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="DefaultVisibility" type="xs:boolean" default="false"/>
</xs:complexType>
<xs:complexType name="ViewSetupHints">
<xs:attribute name="SpacesVisible" type="xs:boolean" default="false"/>
<xs:attribute name="SpaceBoundariesVisible" type="xs:boolean" default="false"/>
<xs:attribute name="OpeningsVisible" type="xs:boolean" default="false"/>
</xs:complexType>
<xs:complexType name="ComponentColoring">
<xs:sequence>
<xs:element name="Color" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<!-- At least one component is required for a Color. -->
<xs:element name="Components">
<xs:complexType>
<xs:sequence>
<xs:element name="Component" type="Component" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute ref="Color" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Component">
<xs:sequence>
<xs:element name="OriginatingSystem" type="NonEmptyOrBlankString" minOccurs="0"/>
<xs:element name="AuthoringToolId" type="NonEmptyOrBlankString" minOccurs="0"/>
</xs:sequence>
<xs:attribute ref="IfcGuid"/>
</xs:complexType>
<xs:attribute name="Color">
<xs:simpleType>
<xs:restriction base="xs:normalizedString">
<!-- Should either match 3 or 4 hex bytes , e.g. "FF00FF" or "FF00FF99" -->
<xs:pattern value="[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="IfcGuid">
<xs:simpleType>
<xs:restriction base="xs:normalizedString">
<xs:length value="22"/>
<xs:pattern value="[0-9A-Za-z_$]*"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:complexType name="Line">
<xs:sequence>
<xs:element name="StartPoint" type="Point"/>
<xs:element name="EndPoint" type="Point"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ClippingPlane">
<xs:sequence>
<xs:element name="Location" type="Point"/>
<xs:element name="Direction" type="Direction"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Bitmap">
<xs:sequence>
<xs:element name="Format" type="BitmapFormat"/>
<!-- Name of the bitmap file in the topic folder -->
<xs:element name="Reference" type="NonEmptyOrBlankString"/>
<!-- Location of the center of the bitmap -->
<xs:element name="Location" type="Point"/>
<!-- Normal of the bitmap -->
<xs:element name="Normal" type="Direction"/>
<!-- Upvector of the bitmap -->
<xs:element name="Up" type="Direction"/>
<!-- Height of the bitmap -->
<xs:element name="Height" type="xs:double"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="BitmapFormat">
<xs:restriction base="xs:string">
<xs:enumeration value="png"/>
<xs:enumeration value="jpg"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
+621
View File
@@ -0,0 +1,621 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
+679
View File
@@ -0,0 +1,679 @@
# BlenderBIM Add-on - OpenBIM Blender Add-on
# Copyright (C) 2020, 2021 Dion Moult <dion@thinkmoult.com>
#
# This file is part of BlenderBIM Add-on.
#
# BlenderBIM Add-on is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# BlenderBIM Add-on is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with BlenderBIM Add-on. If not, see <http://www.gnu.org/licenses/>.
PYTHON:=python
PATCH:=patch
SED:=sed -i
ifeq ($(OS),Windows_NT)
HOSTOS:=win
else
UNAME_S:=$(shell uname -s)
ifeq ($(UNAME_S),Linux)
HOSTOS:=linux
endif
ifeq ($(UNAME_S),Darwin)
HOSTOS:=macos
PYTHON:=python3
PATCH:=patch -d
SED:=sed -i '' -e
endif
endif
VERSION:=`date '+%y%m%d'`
PYVERSION:=py37
ifeq ($(PYVERSION), py37)
PYLIBDIR:=python3.7
PYNUMBER:=37
endif
ifeq ($(PYVERSION), py39)
PYLIBDIR:=python3.9
PYNUMBER:=39
endif
ifeq ($(PYVERSION), py310)
PYLIBDIR:=python3.10
PYNUMBER:=31
endif
ifeq ($(PLATFORM), linux)
ifeq ($(PYVERSION), py37)
HPPFCL_URL:=https://anaconda.org/conda-forge/hpp-fcl/1.7.5/download/linux-64/hpp-fcl-1.7.5-py37h5f1835d_0.tar.bz2
EIGENPY_URL:=https://anaconda.org/conda-forge/eigenpy/2.6.5/download/linux-64/eigenpy-2.6.5-py37h95e2c48_0.tar.bz2
BOOST_URL:=https://anaconda.org/conda-forge/boost/1.74.0/download/linux-64/boost-1.74.0-py37h0379df6_3.tar.bz2
LXML_URL:=https://files.pythonhosted.org/packages/30/c0/d0526314971fc661b083ab135747dc68446a3022686da8c16d25fcf6ef07/lxml-4.6.3-cp37-cp37m-manylinux2014_x86_64.whl
SHAPELY_URL:=https://files.pythonhosted.org/packages/a2/73/07f507b539527579c026ed5f411c35e287685ce794c4dfb7edf6675cdc24/Shapely-1.8.4-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
PILLOW_URL:=https://files.pythonhosted.org/packages/ed/d5/c2e84e1e36ab8ebea033921d5886a056c77e18bab5ab1051fcc22de2e8a2/Pillow-9.2.0-cp37-cp37m-manylinux_2_28_x86_64.whl
endif
ifeq ($(PYVERSION), py39)
HPPFCL_URL:=https://anaconda.org/conda-forge/hpp-fcl/1.7.5/download/linux-64/hpp-fcl-1.7.5-py39hbcdfc36_0.tar.bz2
EIGENPY_URL:=https://anaconda.org/conda-forge/eigenpy/2.6.5/download/linux-64/eigenpy-2.6.5-py39h5aed9d1_0.tar.bz2
BOOST_URL:=https://anaconda.org/conda-forge/boost/1.74.0/download/linux-64/boost-1.74.0-py39h5472131_3.tar.bz2
LXML_URL:=https://files.pythonhosted.org/packages/19/d9/a69c6aff5673554df48120565a14a50eaa41d29ae03b02faa0b023666318/lxml-4.6.3-cp39-cp39-manylinux2014_x86_64.whl
SHAPELY_URL:=https://files.pythonhosted.org/packages/08/12/5af915b2bc0470f4a652ef9978557a0fa8b705b122ccaec6626029e1674c/Shapely-1.8.4-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
PILLOW_URL:=https://files.pythonhosted.org/packages/01/61/3ff85fb4bb596ce3d223c8fcf93c8df5c12bc8899dfb4fb3cb1c5b20dd5f/Pillow-9.2.0-cp39-cp39-manylinux_2_28_x86_64.whl
endif
ifeq ($(PYVERSION), py310)
HPPFCL_URL:=https://anaconda.org/conda-forge/hpp-fcl/1.8.0/download/linux-64/hpp-fcl-1.8.0-py310hdaf7e41_1.tar.bz2
EIGENPY_URL:=https://anaconda.org/conda-forge/eigenpy/2.6.11/download/linux-64/eigenpy-2.6.11-py310hf3e5c9c_0.tar.bz2
BOOST_URL:=https://anaconda.org/conda-forge/boost/1.74.0/download/linux-64/boost-1.74.0-py310h7c3ba0c_5.tar.bz2
LXML_URL:=https://files.pythonhosted.org/packages/25/1e/19b46d8e8881fe0df2e20945d51919eeb1817836d62a90efa8506530e45c/lxml-4.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
SHAPELY_URL:=https://files.pythonhosted.org/packages/60/20/c6321e3da92a4ad9495727c9aa8c423e47295572ccd35ece82d1ac013e28/Shapely-1.8.4-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
PILLOW_URL:=https://files.pythonhosted.org/packages/f6/51/320986ebd6d46a0e95c2240468ced73153b691ce07617078bcdf30c609ec/Pillow-9.2.0-cp310-cp310-manylinux_2_28_x86_64.whl
endif
ASSIMP_URL:=https://anaconda.org/conda-forge/assimp/5.0.1/download/linux-64/assimp-5.0.1-hedfc422_6.tar.bz2
OCTOMAP_URL:=https://anaconda.org/conda-forge/octomap/1.9.7/download/linux-64/octomap-1.9.7-h4bd325d_0.tar.bz2
ZLIB_URL:=https://anaconda.org/conda-forge/zlib/1.2.11/download/linux-64/zlib-1.2.11-h516909a_1010.tar.bz2
endif
ifeq ($(PLATFORM), macos)
ifeq ($(PYVERSION), py37)
HPPFCL_URL:=https://anaconda.org/conda-forge/hpp-fcl/1.7.5/download/osx-64/hpp-fcl-1.7.5-py37h2d7f23a_0.tar.bz2
EIGENPY_URL:=https://anaconda.org/conda-forge/eigenpy/2.6.5/download/osx-64/eigenpy-2.6.5-py37h0695097_0.tar.bz2
BOOST_URL:=https://anaconda.org/conda-forge/boost/1.74.0/download/osx-64/boost-1.74.0-py37hd79e0ac_3.tar.bz2
LXML_URL:=https://files.pythonhosted.org/packages/1e/3e/f0abc15d5dac50939bccc589aae336d5ead4c72e7ad1039a2e0f3630ea92/lxml-4.6.3-cp37-cp37m-macosx_10_9_x86_64.whl
SHAPELY_URL:=https://files.pythonhosted.org/packages/47/a9/7c644e71638bff2bbaa87f05ee62fdf6b4552a55e74bbf731d6210b6d436/Shapely-1.8.4-cp37-cp37m-macosx_10_9_x86_64.whl
PILLOW_URL:=https://files.pythonhosted.org/packages/88/49/c26fc3b5b0e82bdc9d8751d6b939da29327b0d98f7c3b95a575cbfed2743/Pillow-9.2.0-cp37-cp37m-macosx_10_10_x86_64.whl
endif
ifeq ($(PYVERSION), py39)
HPPFCL_URL:=https://anaconda.org/conda-forge/hpp-fcl/1.7.5/download/osx-64/hpp-fcl-1.7.5-py39h1e32b98_0.tar.bz2
EIGENPY_URL:=https://anaconda.org/conda-forge/eigenpy/2.6.5/download/osx-64/eigenpy-2.6.5-py39h5405915_0.tar.bz2
BOOST_URL:=https://anaconda.org/conda-forge/boost/1.74.0/download/osx-64/boost-1.74.0-py39ha641261_3.tar.bz2
LXML_URL:=https://files.pythonhosted.org/packages/b8/74/a71f7ad72e8db54ce899efab84507b801660750cbbfa6a39e6717557d36a/lxml-4.6.3-cp39-cp39-macosx_10_9_x86_64.whl
SHAPELY_URL:=https://files.pythonhosted.org/packages/f5/f9/bf6cc34b02b3c7d3777c5e47fa57d2f69387613bbd8decdf3577a9d83a83/Shapely-1.8.4-cp39-cp39-macosx_10_9_x86_64.whl
PILLOW_URL:=https://files.pythonhosted.org/packages/88/7a/ddfe28b485b623361457d4783007c1f9ba83a87f93e7fec32f64793efb6c/Pillow-9.2.0-cp39-cp39-macosx_10_10_x86_64.whl
endif
ifeq ($(PYVERSION), py310)
HPPFCL_URL:=https://anaconda.org/conda-forge/hpp-fcl/1.8.0/download/osx-64/hpp-fcl-1.8.0-py310h651ac30_1.tar.bz2
EIGENPY_URL:=https://anaconda.org/conda-forge/eigenpy/2.6.11/download/osx-64/eigenpy-2.6.11-py310hc03097c_0.tar.bz2
BOOST_URL:=https://anaconda.org/conda-forge/boost/1.74.0/download/osx-64/boost-1.74.0-py310h509978a_5.tar.bz2
LXML_URL:=https://files.pythonhosted.org/packages/a1/44/17b7dac7a18807d30e2fe10c3328c152808f5464565e230bfd0e77f178c6/lxml-4.8.0-cp310-cp310-macosx_10_15_x86_64.whl
SHAPELY_URL:=https://files.pythonhosted.org/packages/f5/a8/02347c450b5507b9a7a2c15ad6a029613149468fc55ac2100ab215666159/Shapely-1.8.4-cp310-cp310-macosx_10_9_x86_64.whl
PILLOW_URL:=https://files.pythonhosted.org/packages/d8/60/b13c00d403f34110e96c1b5c0afa73ce461efe3fe960c3a7e3e7fe190d82/Pillow-9.2.0-cp310-cp310-macosx_10_10_x86_64.whl
endif
ASSIMP_URL:=https://anaconda.org/conda-forge/assimp/5.0.1/download/osx-64/assimp-5.0.1-h1224e73_6.tar.bz2
OCTOMAP_URL:=https://anaconda.org/conda-forge/octomap/1.9.7/download/osx-64/octomap-1.9.7-h940c156_0.tar.bz2
ZLIB_URL:=https://anaconda.org/conda-forge/zlib/1.2.11/download/osx-64/zlib-1.2.11-h7795811_1010.tar.bz2
endif
ifeq ($(PLATFORM), macosm1)
ifeq ($(PYVERSION), py37)
# Warning: py37 not supported on Apple M1
HPPFCL_URL:=https://anaconda.org/conda-forge/hpp-fcl/1.7.5/download/osx-64/hpp-fcl-1.7.5-py37h2d7f23a_0.tar.bz2
EIGENPY_URL:=https://anaconda.org/conda-forge/eigenpy/2.6.5/download/osx-64/eigenpy-2.6.5-py37h0695097_0.tar.bz2
BOOST_URL:=https://anaconda.org/conda-forge/boost/1.74.0/download/osx-64/boost-1.74.0-py37hd79e0ac_3.tar.bz2
LXML_URL:=https://anaconda.org/conda-forge/lxml/4.9.1/download/osx-64/lxml-4.9.1-py37h994c40b_0.tar.bz2
SHAPELY_URL:=https://files.pythonhosted.org/packages/47/a9/7c644e71638bff2bbaa87f05ee62fdf6b4552a55e74bbf731d6210b6d436/Shapely-1.8.4-cp37-cp37m-macosx_10_9_x86_64.whl
PILLOW_URL:=https://files.pythonhosted.org/packages/aa/bc/21097cd891dd2fa02f2b3d767e02e883e026482e59d29975d1bc30024aa3/Pillow-9.2.0-cp39-cp39-macosx_11_0_arm64.whl
endif
ifeq ($(PYVERSION), py39)
HPPFCL_URL:=https://anaconda.org/conda-forge/hpp-fcl/1.7.5/download/osx-arm64/hpp-fcl-1.7.5-py39ha69f3c1_2.tar.bz2
EIGENPY_URL:=https://anaconda.org/conda-forge/eigenpy/2.6.7/download/osx-arm64/eigenpy-2.6.7-py39ha69f3c1_0.tar.bz2
BOOST_URL:=https://anaconda.org/conda-forge/boost/1.78.0/download/osx-arm64/boost-1.78.0-py39h2550fe3_0.tar.bz2
LXML_URL:=https://anaconda.org/conda-forge/lxml/4.9.1/download/osx-arm64/lxml-4.9.1-py39h9eb174b_0.tar.bz2
SHAPELY_URL:=https://files.pythonhosted.org/packages/8e/60/8186995a96c5a27c9b79c015bbdd89c6d9a6df9988f86f3f1027ecd4a56a/Shapely-1.8.4-cp39-cp39-macosx_11_0_arm64.whl
PILLOW_URL:=https://files.pythonhosted.org/packages/aa/bc/21097cd891dd2fa02f2b3d767e02e883e026482e59d29975d1bc30024aa3/Pillow-9.2.0-cp39-cp39-macosx_11_0_arm64.whl
endif
ifeq ($(PYVERSION), py310)
HPPFCL_URL:=https://anaconda.org/conda-forge/hpp-fcl/1.8.0/download/osx-arm64/hpp-fcl-1.8.0-py310h5699539_2.tar.bz2
EIGENPY_URL:=https://anaconda.org/conda-forge/eigenpy/2.6.9/download/osx-arm64/eigenpy-2.6.9-py310habfc766_1.tar.bz2
BOOST_URL:=https://anaconda.org/conda-forge/boost/1.78.0/download/osx-arm64/boost-1.78.0-py310h4566fd1_0.tar.bz2
LXML_URL:=https://anaconda.org/conda-forge/lxml/4.9.1/download/osx-arm64/lxml-4.9.1-py310h02f21da_0.tar.bz2
SHAPELY_URL:=https://files.pythonhosted.org/packages/ba/d0/75cd36c81a1aa26dd6d37cf7ae1c79b0bc2d379e0f32c359bcb00b14e5c3/Shapely-1.8.4-cp310-cp310-macosx_11_0_arm64.whl
PILLOW_URL:=https://files.pythonhosted.org/packages/0c/5f/117b653cad585f3aedfe0de996c292e67d4b020ed77f652e5a6c8c24f908/Pillow-9.2.0-cp310-cp310-macosx_11_0_arm64.whl
endif
ASSIMP_URL:=https://anaconda.org/conda-forge/assimp/5.0.1/download/osx-arm64/assimp-5.0.1-h0f81e16_7.tar.bz2
OCTOMAP_URL:=https://anaconda.org/conda-forge/octomap/1.9.7/download/osx-arm64/octomap-1.9.7-hc021e02_0.tar.bz2
ZLIB_URL:=https://anaconda.org/conda-forge/zlib/1.2.11/download/osx-arm64/zlib-1.2.11-h90dfc92_1014.tar.bz2
endif
ifeq ($(PLATFORM), win)
ifeq ($(PYVERSION), py37)
HPPFCL_URL:=https://anaconda.org/conda-forge/hpp-fcl/1.7.5/download/win-64/hpp-fcl-1.7.5-py37h839d6b1_0.tar.bz2
EIGENPY_URL:=https://anaconda.org/conda-forge/eigenpy/2.6.5/download/win-64/eigenpy-2.6.5-py37h2c32e34_0.tar.bz2
BOOST_URL:=https://anaconda.org/conda-forge/boost/1.74.0/download/win-64/boost-1.74.0-py37h3b38789_3.tar.bz2
LXML_URL:=https://files.pythonhosted.org/packages/9e/5e/171ee9d40a600f565fe691ec5bf7596247ec62cfb2edc00c91afe8ea837b/lxml-4.6.3-cp37-cp37m-win_amd64.whl
SHAPELY_URL:=https://files.pythonhosted.org/packages/ca/4d/85b912d7947261e6b3218b01946bcd7c2efb2bbafaf517c6fe1dc3bb8399/Shapely-1.8.4-cp37-cp37m-win_amd64.whl
PILLOW_URL:=https://files.pythonhosted.org/packages/69/f5/9e802159d78b2eaf26bf1f8b94648605993f5ca7247ac8870f065063fc40/Pillow-9.2.0-cp37-cp37m-win_amd64.whl
endif
ifeq ($(PYVERSION), py39)
HPPFCL_URL:=https://anaconda.org/conda-forge/hpp-fcl/1.7.5/download/win-64/hpp-fcl-1.7.5-py39h2e7c763_0.tar.bz2
EIGENPY_URL:=https://anaconda.org/conda-forge/eigenpy/2.6.5/download/win-64/eigenpy-2.6.5-py39h3ce40e6_0.tar.bz2
BOOST_URL:=https://anaconda.org/conda-forge/boost/1.74.0/download/win-64/boost-1.74.0-py39hefe7e4c_3.tar.bz2
LXML_URL:=https://files.pythonhosted.org/packages/72/d4/426ecb8849c47c3e370c87aa0ac05d85768df917ffea27fcd6686a5e6495/lxml-4.6.3-cp39-cp39-win_amd64.whl
SHAPELY_URL:=https://files.pythonhosted.org/packages/72/c3/0d52812db25ca71203f6203891277e6ee4f0244b21a36c062123ece15f36/Shapely-1.8.4-cp39-cp39-win_amd64.whl
PILLOW_URL:=https://files.pythonhosted.org/packages/19/3f/b4d4bcf05dbcbe07f2e9613a8f4180c297395e73a91d8ad22c32c6624f8c/Pillow-9.2.0-cp39-cp39-win_amd64.whl
endif
ifeq ($(PYVERSION), py310)
HPPFCL_URL:=https://anaconda.org/conda-forge/hpp-fcl/1.8.0/download/win-64/hpp-fcl-1.8.0-py310hc5a3c62_1.tar.bz2
EIGENPY_URL:=https://anaconda.org/conda-forge/eigenpy/2.6.11/download/win-64/eigenpy-2.6.11-py310hbd43d28_0.tar.bz2
BOOST_URL:=https://anaconda.org/conda-forge/boost/1.74.0/download/win-64/boost-1.74.0-py310hc781a3c_5.tar.bz2
LXML_URL:=https://files.pythonhosted.org/packages/f6/71/65c80a4caa1617a4c6e8fe1500cebb179db96232e2f623bfe6a1f4294e39/lxml-4.8.0-cp310-cp310-win_amd64.whl
SHAPELY_URL:=https://files.pythonhosted.org/packages/24/b5/46d13799804b5fe9ede2eca8b19023410e29b78baca0bff727671a1df8c1/Shapely-1.8.4-cp310-cp310-win_amd64.whl
PILLOW_URL:=https://files.pythonhosted.org/packages/02/55/67a3c17b9e7d972ed8c246f104da99ca4f3ea42fba566697e479011b84b6/Pillow-9.2.0-cp310-cp310-win_amd64.whl
endif
ASSIMP_URL:=https://anaconda.org/conda-forge/assimp/5.0.1/download/win-64/assimp-5.0.1-hc2aa0de_6.tar.bz2
OCTOMAP_URL:=https://anaconda.org/conda-forge/octomap/1.9.7/download/win-64/octomap-1.9.7-h5362a0b_0.tar.bz2
ZLIB_URL:=https://anaconda.org/conda-forge/zlib/1.2.11/download/win-64/zlib-1.2.11-h62dcd97_1010.tar.bz2
endif
.PHONY: dist
dist:
ifndef PLATFORM
$(error PLATFORM is not set)
endif
rm -rf dist
mkdir -p dist/working
mkdir -p dist/blenderbim
cp -r blenderbim/* dist/blenderbim/
# Provides IfcOpenShell Python functionality
cd dist/working && wget https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-$(PYNUMBER)-v0.7.0-fa6bbf2-$(PLATFORM)64.zip
cd dist/working && unzip ifcopenshell-python*
cp -r dist/working/ifcopenshell dist/blenderbim/libs/site/packages/
# See bug #812
cd dist/working && wget https://raw.githubusercontent.com/IfcOpenShell/IfcOpenShell/v0.7.0/src/blenderbim/occ_utils.py
cd dist/working && mv occ_utils.py ../blenderbim/libs/site/packages/ifcopenshell/geom/occ_utils.py
rm -rf dist/working
# Provides dependencies that are part of IfcOpenShell
mkdir dist/working
cd dist/working && wget https://github.com/IfcOpenShell/IfcOpenShell/archive/v0.7.0.zip
cd dist/working && unzip v0.7.0.zip
# IfcOpenBot sometimes lags behind, so we hotfix the Python utilities
cp -r dist/working/IfcOpenShell-0.7.0/src/ifcopenshell-python/ifcopenshell/util/* dist/blenderbim/libs/site/packages/ifcopenshell/util/
cp -r dist/working/IfcOpenShell-0.7.0/src/ifcopenshell-python/ifcopenshell/api/* dist/blenderbim/libs/site/packages/ifcopenshell/api/
cp dist/working/IfcOpenShell-0.7.0/src/ifcopenshell-python/ifcopenshell/entity_instance.py dist/blenderbim/libs/site/packages/ifcopenshell/
cp dist/working/IfcOpenShell-0.7.0/src/ifcopenshell-python/ifcopenshell/file.py dist/blenderbim/libs/site/packages/ifcopenshell/
# Provides bcf functionality
cp -r dist/working/IfcOpenShell-0.7.0/src/bcf/src/bcf dist/blenderbim/libs/site/packages/
# Provides IFCClash functionality
cp -r dist/working/IfcOpenShell-0.7.0/src/ifcclash/ifcclash dist/blenderbim/libs/site/packages/
# Provides BIMTester functionality
cd dist/working && $(PYTHON) -m venv env
cd dist/working && . env/bin/activate && pip install pybabel
cd dist/working && . env/bin/activate && pip install babel
cd dist/working && . env/bin/activate && ./env/bin/pybabel compile -d ./IfcOpenShell-0.7.0/src/ifcbimtester/bimtester/locale/
cp -r dist/working/IfcOpenShell-0.7.0/src/ifcbimtester/bimtester dist/blenderbim/libs/site/packages/
# Provides IFCTester functionality
cp -r dist/working/IfcOpenShell-0.7.0/src/ifctester/ifctester dist/blenderbim/libs/site/packages/
# Provides IFCCOBie functionality
cp -r dist/working/IfcOpenShell-0.7.0/src/ifccobie/* dist/blenderbim/libs/site/packages/
# Provides IFCDiff functionality
cp -r dist/working/IfcOpenShell-0.7.0/src/ifcdiff/* dist/blenderbim/libs/site/packages/
# Provides IFCCSV functionality
cp -r dist/working/IfcOpenShell-0.7.0/src/ifccsv/* dist/blenderbim/libs/site/packages/
# Provides IFCPatch functionality
cp -r dist/working/IfcOpenShell-0.7.0/src/ifcpatch/ifcpatch dist/blenderbim/libs/site/packages/
# Provides IFC4D functionality
cp -r dist/working/IfcOpenShell-0.7.0/src/ifc4d/ifc4d dist/blenderbim/libs/site/packages/
# Provides IFC5D functionality
cp -r dist/working/IfcOpenShell-0.7.0/src/ifc5d/ifc5d dist/blenderbim/libs/site/packages/
# Provides IFCCityJSON functionality
cp -r dist/working/IfcOpenShell-0.7.0/src/ifccityjson dist/blenderbim/libs/site/packages/
rm -rf dist/working
# Provides Mustache templating in construction documentation
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/3f/e7/8750ba6c6101d6aa5ceeb20c013adf2c6f3554a12c71d75654b468404bfa/pystache-0.6.0.tar.gz
cd dist/working && tar -xzvf pystache*
cd dist/working/pystache-0.6.0/ && $(PYTHON) setup.py build && cp -r build/lib/pystache ../../blenderbim/libs/site/packages/
rm -rf dist/working
# Provides SVG export in construction documentation
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/79/e8/7eb2ba188eda14a4b47e33b51f3b4978985f4116655c699bcd18c79279b5/svgwrite-1.3.1.zip
cd dist/working && unzip svgwrite*
cp -r dist/working/svgwrite-1.3.1/svgwrite dist/blenderbim/libs/site/packages/
rm -rf dist/working
# Provides fuzzy date parsing for construction sequencing
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/be/ed/5bbc91f03fa4c839c4c7360375da77f9659af5f7086b7a7bdda65771c8e0/python-dateutil-2.8.1.tar.gz
cd dist/working && tar -xzvf python-dateutil*
cp -r dist/working/python-dateutil-2.8.1/dateutil dist/blenderbim/libs/site/packages/
rm -rf dist/working
# Provides duration parsing for construction sequencing
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/b1/80/fb8c13a4cd38eb5021dc3741a9e588e4d1de88d895c1910c6fc8a08b7a70/isodate-0.6.0.tar.gz
cd dist/working && tar -xzvf isodate*
cp -r dist/working/isodate-0.6.0/src/isodate dist/blenderbim/libs/site/packages/
rm -rf dist/working
# Provides networkx graph analysis for project dependency calculations
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/b0/21/adfbf6168631e28577e4af9eb9f26d75fe72b2bb1d33762a5f2c425e6c2a/networkx-2.5.1.tar.gz
cd dist/working && tar -xzvf networkx*
cp -r dist/working/networkx-2.5.1/networkx dist/blenderbim/libs/site/packages/
rm -rf dist/working
# Required by networkx
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/4f/51/15a4f6b8154d292e130e5e566c730d8ec6c9802563d58760666f1818ba58/decorator-5.0.9.tar.gz
cd dist/working && tar -xzvf decorator*
cp -r dist/working/decorator-5.0.9/src/decorator.py dist/blenderbim/libs/site/packages/
rm -rf dist/working
# Provides jsgantt-improved supports for web-based construction sequencing gantt charts
mkdir dist/working
cd dist/working && wget https://raw.githubusercontent.com/jsGanttImproved/jsgantt-improved/master/dist/jsgantt.js
cd dist/working && wget https://raw.githubusercontent.com/jsGanttImproved/jsgantt-improved/master/dist/jsgantt.css
cp dist/working/jsgantt* dist/blenderbim/bim/data/gantt/
rm -rf dist/working
# Required by IFCDiff
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/0f/ca/caead2949fbb824c7142e3774fa841aa853bb4d4331b440da8c8514dfc6f/deepdiff-5.8.1.tar.gz
cd dist/working && tar -xzvf deepdiff*
cp -r dist/working/deepdiff-5.8.1/deepdiff dist/blenderbim/libs/site/packages/
rm -rf dist/working
# Required by deepdiff
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/00/55/ce2cbc6d64034b30cad81a29ba61bdba456f190f5e83c09831304bf68d6b/jsonpickle-1.2.tar.gz
cd dist/working && tar -xzvf jsonpickle*
cp -r dist/working/jsonpickle-1.2/jsonpickle dist/blenderbim/libs/site/packages/
rm -rf dist/working
# Required by deepdiff
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/a3/b7/d4d69641cbe707a45c23b190f2d717466ba5accc4c70b5f7a8a450387895/ordered-set-3.1.1.tar.gz
cd dist/working && tar -xzvf ordered-set*
cp -r dist/working/ordered-set-3.1.1/ordered_set.py dist/blenderbim/libs/site/packages/
rm -rf dist/working
# Required by lark
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/00/32/8076fa13e832bb4dcff379f18f228e5a53412be0631808b9ca2610c0f566/pyparsing-2.4.5.tar.gz
cd dist/working && tar -xzvf pyparsing*
cp -r dist/working/pyparsing-2.4.5/pyparsing.py dist/blenderbim/libs/site/packages/
rm -rf dist/working
# Required by bcf
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/5b/ef/f97c3e1a7efa00e989a793fe15297214fc95ad7d9e3810586bd08ce9f0f3/xmlschema-2.0.2.tar.gz
cd dist/working && tar -xzvf xmlschema*
cp -r dist/working/xmlschema-2.0.2/xmlschema dist/blenderbim/libs/site/packages/
rm -rf dist/working
# Required by bcf
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/11/bc/5afb61dd5d863e5cf77cd952445c50c17e65953405986f19e97e4389692a/elementpath-3.0.2.tar.gz
cd dist/working && tar -xzvf elementpath*
cp -r dist/working/elementpath-3.0.2/elementpath dist/blenderbim/libs/site/packages/
rm -rf dist/working
# Required by bcf
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/21/9f/b251f7f8a76dec1d6651be194dfba8fb8d7781d10ab3987190de8391d08e/six-1.14.0.tar.gz
cd dist/working && tar -xzvf six*
cp -r dist/working/six-1.14.0/six.py dist/blenderbim/libs/site/packages/
rm -rf dist/working
# Required by IFCCSV and ifcopenshell.util.selector
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/18/4d/8d522136c37d9e1ea74062b41b8d5e1318ebf45063ae46ce72ed60af223b/lark-parser-0.8.5.tar.gz
cd dist/working && tar -xzvf lark-parser*
cp -r dist/working/lark-parser-0.8.5/lark dist/blenderbim/libs/site/packages/
rm -rf dist/working
# Required by IFC4D
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/b0/bb/9c4dddd3ca173cb56241cfb2eddfae24690dc676d357ac4cab17d0a36d9d/PyP6Xer-1.13.0.tar.gz
cd dist/working && tar -xzvf PyP6Xer*
cp -r dist/working/PyP6Xer-1.13.0/xerparser dist/blenderbim/libs/site/packages/
rm -rf dist/working
# Required by QTOCalculator
mkdir dist/working
cd dist/working && wget $(SHAPELY_URL)
cd dist/working && cp *.whl shapely.zip && unzip shapely.zip
cp -r dist/working/shapely dist/blenderbim/libs/site/packages/
ifeq ($(PLATFORM), win)
cp -r dist/working/Shapely.libs dist/blenderbim/libs/site/packages/
endif
ifeq ($(PLATFORM), linux)
cp -r dist/working/Shapely.libs dist/blenderbim/libs/site/packages/
endif
rm -rf dist/working
# Required by the BIM tool thumbnail generator
mkdir dist/working
cd dist/working && wget $(PILLOW_URL)
cd dist/working && cp *.whl pillow.zip && unzip pillow.zip
cp -r dist/working/PIL dist/blenderbim/libs/site/packages/
ifeq ($(PLATFORM), linux)
cp -r dist/working/Pillow.libs dist/blenderbim/libs/site/packages/
endif
rm -rf dist/working
# Required by xerparser and IFC4D
# TODO: remove this dependency. It's only used to show a progress bar.
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/9f/7b/76c4e5ef1a1b528fcaada4133f972e77d33c252831676cf414119ca6093d/tqdm-4.50.0.tar.gz
cd dist/working && tar -xzvf tqdm*
cp -r dist/working/tqdm-4.50.0/tqdm dist/blenderbim/libs/site/packages/
rm -rf dist/working
# Required by IFCCityJSON
mkdir dist/working
cd dist/working && $(PYTHON) -m venv env
cd dist/working && mkdir site-packages
cd dist/working && . env/bin/activate && pip install cjio --target=./site-packages
cd dist/working/site-packages/ && rm -r *dist-info*
cp -r dist/working/site-packages/* dist/blenderbim/libs/site/packages/
rm -rf dist/working
# Required by IFCClash
mkdir dist/working
cd dist/working && wget $(HPPFCL_URL)
cd dist/working && tar -xf hpp-fcl*
ifeq ($(PLATFORM), linux)
cp -r dist/working/lib/$(PYLIBDIR)/site-packages/hppfcl dist/blenderbim/libs/site/packages/
cp -r dist/working/lib/*.so* dist/blenderbim/libs/
endif
ifeq ($(PLATFORM), macos)
cp -r dist/working/lib/$(PYLIBDIR)/site-packages/hppfcl dist/blenderbim/libs/site/packages/
cp -r dist/working/lib/*.dylib dist/blenderbim/libs/
endif
ifeq ($(PLATFORM), win)
cp -r dist/working/Lib/site-packages/hppfcl dist/blenderbim/libs/site/packages/
cp -r dist/working/Library/bin/*.dll dist/blenderbim/libs/site/packages/hppfcl/
endif
rm -rf dist/working
# Required by hpp-fcl
mkdir dist/working
cd dist/working && wget $(ASSIMP_URL)
cd dist/working && tar -xf assimp*
ifeq ($(PLATFORM), linux)
cp -r dist/working/lib/*.so* dist/blenderbim/libs/
endif
ifeq ($(PLATFORM), macos)
cp -r dist/working/lib/*.dylib dist/blenderbim/libs/
endif
ifeq ($(PLATFORM), win)
cp -r dist/working/Library/bin/*.dll dist/blenderbim/libs/site/packages/hppfcl/
endif
rm -rf dist/working
# Required by hpp-fcl
mkdir dist/working
cd dist/working && wget $(EIGENPY_URL)
cd dist/working && tar -xf eigenpy*
ifeq ($(PLATFORM), linux)
cp -r dist/working/lib/*.so* dist/blenderbim/libs/
endif
ifeq ($(PLATFORM), macos)
cp -r dist/working/lib/*.dylib dist/blenderbim/libs/
endif
ifeq ($(PLATFORM), win)
cp -r dist/working/Library/bin/*.dll dist/blenderbim/libs/site/packages/hppfcl/
endif
rm -rf dist/working
# Required by hpp-fcl
mkdir dist/working
cd dist/working && wget $(OCTOMAP_URL)
cd dist/working && tar -xf octomap*
ifeq ($(PLATFORM), linux)
cp -r dist/working/lib/*.so* dist/blenderbim/libs/
endif
ifeq ($(PLATFORM), macos)
cp -r dist/working/lib/*.dylib dist/blenderbim/libs/
endif
ifeq ($(PLATFORM), win)
# Uh, do nothing, apparently? No DLLs are shipped.
endif
rm -rf dist/working
# Required by hpp-fcl
mkdir dist/working
cd dist/working && wget $(BOOST_URL)
cd dist/working && tar -xf boost*
ifeq ($(PLATFORM), linux)
cp -r dist/working/lib/*.so* dist/blenderbim/libs/
endif
ifeq ($(PLATFORM), macos)
cp -r dist/working/lib/*.dylib dist/blenderbim/libs/
endif
ifeq ($(PLATFORM), win)
cp -r dist/working/Library/bin/*.dll dist/blenderbim/libs/site/packages/hppfcl/
endif
rm -rf dist/working
# Required by hpp-fcl
mkdir dist/working
cd dist/working && wget $(ZLIB_URL)
cd dist/working && tar -xf zlib*
ifeq ($(PLATFORM), linux)
cp -r dist/working/lib/*.so* dist/blenderbim/libs/
endif
ifeq ($(PLATFORM), macos)
cp -r dist/working/lib/*.dylib dist/blenderbim/libs/
endif
ifeq ($(PLATFORM), win)
cp -r dist/working/Library/bin/*.dll dist/blenderbim/libs/site/packages/hppfcl/
endif
rm -rf dist/working
# Required by BIMTester
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/c8/4b/d0a8c23b6c8985e5544ea96d27105a273ea22051317f850c2cdbf2029fe4/behave-1.2.6.tar.gz
cd dist/working && tar -xzvf behave*
cd dist/working/behave-1.2.6/ && cp -r behave ../../blenderbim/libs/site/packages/
# See bug #1294
cd dist/working/ && wget https://raw.githubusercontent.com/IfcOpenShell/IfcOpenShell/v0.7.0/src/ifcbimtester/patch/model_core.patch
cd dist/working/ && wget https://raw.githubusercontent.com/IfcOpenShell/IfcOpenShell/v0.7.0/src/ifcbimtester/patch/runner_util.patch
cd dist/working/ && $(PATCH) ../blenderbim/libs/site/packages/behave/model_core.py < model_core.patch
cd dist/working/ && $(PATCH) ../blenderbim/libs/site/packages/behave/runner_util.py < runner_util.patch
# See bug #2159
cd dist/working/ && wget https://raw.githubusercontent.com/IfcOpenShell/IfcOpenShell/v0.7.0/src/ifcbimtester/patch/junit.patch
cd dist/working/ && $(PATCH) ../blenderbim/libs/site/packages/behave/reporter/junit.py < junit.patch
rm -rf dist/working
# Required by ids - uh, not any more, but I'm trying it out in the drawing module
ifeq ($(PLATFORM), macosm1)
# No wheels available for MacOS M1, but turns out this Anaconda build works
mkdir dist/working
cd dist/working && wget $(LXML_URL)
cd dist/working && tar -xf lxml*
cp -r dist/working/lib/$(PYLIBDIR)/site-packages/lxml dist/blenderbim/libs/site/packages/
rm -rf dist/working
else
# Wheels are preferred for other OSes. A first attempt at using Anaconda
# builds for everything shows it breaks on windows. See #2422.
mkdir dist/working
cd dist/working && wget $(LXML_URL)
cd dist/working && cp *.whl lxml.zip && unzip lxml.zip
cp -r dist/working/lxml dist/blenderbim/libs/site/packages/
rm -rf dist/working
endif
# Required by behave
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/f4/65/220bb4075fddb09d5b3ea2c1c1fa66c1c72be9361ec187aab50fa161e576/parse-1.15.0.tar.gz
cd dist/working && tar -xzvf parse*
cd dist/working/parse-1.15.0/ && cp parse.py ../../blenderbim/libs/site/packages/
rm -rf dist/working
# Required by behave
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/2e/79/81bebd1b0446d46733db99d74543b4bb80646ef4c988584bae0862e706bc/parse_type-0.5.2.tar.gz
cd dist/working && tar -xzvf parse_type*
cd dist/working/parse_type-0.5.2/ && cp -r parse_type ../../blenderbim/libs/site/packages/
rm -rf dist/working
# Required by IFCCOBie for XLSX support
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/0c/bc/82d6783f83f65f56d8b77d052773c4a2f952fa86385f0cd54e1e006658d7/XlsxWriter-1.2.9.tar.gz
cd dist/working && tar -xzvf XlsxWriter*
cd dist/working/XlsxWriter-1.2.9/ && cp -r xlsxwriter ../../blenderbim/libs/site/packages/
rm -rf dist/working
# Required by IFCCOBie for ODS support
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/97/73/8ade73f6749177003f7ce3304f524774adda96e6aaab30ea79fd8fda7934/odfpy-1.4.1.tar.gz
cd dist/working && tar -xzvf odfpy*
cd dist/working/odfpy-1.4.1/ && cp -r odf ../../blenderbim/libs/site/packages/
rm -rf dist/working
# Required by odfpy
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/a4/5f/f8aa58ca0cf01cbcee728abc9d88bfeb74e95e6cb4334cfd5bed5673ea77/defusedxml-0.6.0.tar.gz
cd dist/working && tar -xzvf defusedxml*
cd dist/working/defusedxml-0.6.0/ && cp -r defusedxml ../../blenderbim/libs/site/packages/
rm -rf dist/working
# Required by augin
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/76/b4/b7baffbda025efd5dc8fcd8d2e953e3aa939c236a484084fa8f4c3588ee9/boto3-1.17.17.tar.gz
cd dist/working && tar -xzvf boto3*
cd dist/working/boto3-1.17.17/ && cp -r boto3 ../../blenderbim/libs/site/packages/
rm -rf dist/working
# Required by boto3
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/7f/2e/e02fdfd0f0377c4e44e61de27b05d5cfe93575770661ef9ded80ed90fa88/botocore-1.20.17.tar.gz
cd dist/working && tar -xzvf botocore*
cd dist/working/botocore-1.20.17/ && cp -r botocore ../../blenderbim/libs/site/packages/
rm -rf dist/working
# Required by boto3
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/3c/56/3f325b1eef9791759784aa5046a8f6a1aff8f7c898a2e34506771d3b99d8/jmespath-0.10.0.tar.gz
cd dist/working && tar -xzvf jmespath*
cd dist/working/jmespath-0.10.0/ && cp -r jmespath ../../blenderbim/libs/site/packages/
rm -rf dist/working
# Required by boto3
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/08/e1/3ee2096ebaeeb8c186d20ed16c8faf4a503913e5c9a0e14cd6b8ffc405a3/s3transfer-0.3.4.tar.gz
cd dist/working && tar -xzvf s3transfer*
cd dist/working/s3transfer-0.3.4/ && cp -r s3transfer ../../blenderbim/libs/site/packages/
rm -rf dist/working
# Provides IFCJSON functionality
mkdir dist/working
cd dist/working && wget https://github.com/IFCJSON-Team/IFC2JSON_python/archive/master.zip
cd dist/working && unzip master.zip
cp -r dist/working/IFC2JSON_python-master/file_converters/ifcjson dist/blenderbim/libs/site/packages/
rm -rf dist/working
# Provides OpenLCA functionality
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/85/33/f91b96e9e8608ff65a003b692e8a9cdd60f2178f60617e5b1d21334c009c/olca-ipc-0.0.10.tar.gz
cd dist/working && tar -xzvf olca-ipc*
cd dist/working/olca-ipc-0.0.10/ && cp -r olca ../../blenderbim/libs/site/packages/
rm -rf dist/working
# Provides Brickschema functionality
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/ca/37/8309da9a72407d2f5eb5489c197ac3cfe96ee3ccba1902d2a0ecc7843f92/brickschema-0.5.1.tar.gz
cd dist/working && tar -xzvf brickschema*
# This is an evil hack because we don't want to bundle flask
echo "" > dist/working/brickschema-0.5.1/brickschema/web.py
cd dist/working/brickschema-0.5.1/ && cp -r brickschema ../../blenderbim/libs/site/packages/
# For now lets bundle the latest nightly schema
cd dist/working && wget https://github.com/BrickSchema/Brick/releases/download/nightly/Brick.ttl
cd dist/working && cp Brick.ttl ../../blenderbim/bim/schema/Brick.ttl
rm -rf dist/working
# Required by brickschema
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/c7/22/37bb938be8e5c20d443b0c9ba0a243573b671b01739efb0a19f81bc5b470/pyshacl-0.17.2.tar.gz
cd dist/working && tar -xzvf pyshacl*
cd dist/working/pyshacl-0.17.2/ && cp -r pyshacl ../../blenderbim/libs/site/packages/
rm -rf dist/working
# Required by brickschema
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/d2/a7/be8244688bfcee37c23733ab4fe8e6afa6d4403bd2674a3ae7bd2cecc77b/rdflib-6.0.2.tar.gz
cd dist/working && tar -xzvf rdflib*
cd dist/working/rdflib-6.0.2/ && cp -r rdflib ../../blenderbim/libs/site/packages/
rm -rf dist/working
# Required by brickschema
mkdir dist/working
cd dist/working && wget https://files.pythonhosted.org/packages/7d/c7/208aece36279e4f1236e437119358786e39530ecc1719d4e1afeddba5288/owlrl-6.0.2.tar.gz
cd dist/working && tar -xzvf owlrl*
cd dist/working/owlrl-6.0.2/ && cp -r owlrl ../../blenderbim/libs/site/packages/
rm -rf dist/working
# Required by brickschema
# This is a bit of a dodgy one, it should be provided by setuptools which Blender doesn't ship.
mkdir dist/working
cd dist/working && wget https://blenderbim.org/builds/pkg_resources.tar.gz
cd dist/working && tar -xzvf pkg_resources*
cd dist/working/ && cp -r pkg_resources ../blenderbim/libs/site/packages/
rm -rf dist/working
cd dist/blenderbim && $(SED) "s/999999/$(VERSION)/" __init__.py
cd dist && zip -r blenderbim-$(VERSION)-$(PYVERSION)-$(PLATFORM).zip ./*
rm -rf dist/blenderbim
.PHONY: test
test:
make test-core
make test-tool
make test-bim
.PHONY: test-core
test-core:
pytest -p no:pytest-blender test/core
.PHONY: test-bim
test-bim:
ifndef MODULE
pytest test/bim
else
pytest test/bim -m "$(MODULE)" ./ --maxfail=1
endif
.PHONY: test-tool
test-tool:
ifndef MODULE
pytest test/tool
else
pytest test/tool/test_$(MODULE).py
endif
.PHONY: qa
qa:
black .
pylint ./* --output-format=colorized --disable all --enable E --disable import-error
.PHONY: coverage
coverage:
coverage run --source blenderbim.core -m pytest -p no:pytest-blender test/core
coverage html
xdg-open htmlcov/index.html
.PHONY: license
license:
copyright-header --license GPL3 --copyright-holder "Dion Moult <dion@thinkmoult.com>" --copyright-year "2022" --copyright-software "BlenderBIM Add-on" --copyright-software-description "OpenBIM Blender Add-on" -a ./ -o ./
.PHONY: clean
clean:
rm -rf dist
rm -rf htmlcov
.PHONY: dev
dev:
blender -p setup_pytest.py
+5
View File
@@ -0,0 +1,5 @@
# BlenderBIM Add-on
An add-on to Blender to allow BIM functionality.
More information on the [BlenderBIM Add-on website](https://blenderbim.org).
+45
View File
@@ -0,0 +1,45 @@
# BlenderBIM Add-on - OpenBIM Blender Add-on
# Copyright (C) 2020, 2021 Dion Moult <dion@thinkmoult.com>
#
# This file is part of BlenderBIM Add-on.
#
# BlenderBIM Add-on is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# BlenderBIM Add-on is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with BlenderBIM Add-on. If not, see <http://www.gnu.org/licenses/>.
import os
import sys
import site
bl_info = {
"name": "BlenderBIM",
"description": "Author, import, and export data using the Industry Foundation Classes schema",
"author": "IfcOpenShell Contributors",
"blender": (2, 80, 0),
"version": (0, 0, 999999),
"location": "File > Export, File > Import, Scene / Object / Material / Mesh Properties",
"tracker_url": "https://github.com/IfcOpenShell/IfcOpenShell/issues",
"category": "Import-Export",
}
if sys.modules.get("bpy", None):
# Process *.pth in /libs/site/packages to setup globally importable modules
# This is 3 levels deep as required by the static RPATH of ../../ from dependencies taken from Anaconda
site.addsitedir(os.path.join(os.path.dirname(os.path.realpath(__file__)), "libs", "site", "packages"))
import blenderbim.bim
def register():
blenderbim.bim.register()
def unregister():
blenderbim.bim.unregister()
+2
View File
@@ -0,0 +1,2 @@
# addon writes tmp stuff directly to its dir
/data/
+183
View File
@@ -0,0 +1,183 @@
# BlenderBIM Add-on - OpenBIM Blender Add-on
# Copyright (C) 2020, 2021 Dion Moult <dion@thinkmoult.com>
#
# This file is part of BlenderBIM Add-on.
#
# BlenderBIM Add-on is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# BlenderBIM Add-on is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with BlenderBIM Add-on. If not, see <http://www.gnu.org/licenses/>.
import bpy
import importlib
from . import handler, ui, prop, operator, helper
modules = {
"project": None,
"search": None,
"bcf": None,
"root": None,
"unit": None,
"model": None,
"cad": None,
"georeference": None,
"context": None,
"drawing": None,
"misc": None,
"attribute": None,
"type": None,
"spatial": None,
"void": None,
"aggregate": None,
"geometry": None,
"cobie": None,
"resource": None,
"cost": None,
"sequence": None,
"group": None,
"system": None,
"brick": None,
"structural": None,
"boundary": None,
"profile": None,
"material": None,
"style": None,
"layer": None,
"owner": None,
"pset": None,
"qto": None,
"classification": None,
"library": None,
"constraint": None,
"document": None,
"pset_template": None,
"clash": None,
"lca": None,
"csv": None,
"tester": None,
"bimtester": None,
"diff": None,
"patch": None,
"gis": None,
"covetool": None,
"augin": None,
"debug": None,
# Uncomment this line to enable loading of the demo module. Happy hacking!
# The name "demo" must correlate to a folder name in `bim/module/`.
# "demo": None,
}
for name in modules.keys():
modules[name] = importlib.import_module(f"blenderbim.bim.module.{name}")
classes = [
operator.AddIfcFile,
operator.BIM_OT_add_section_plane,
operator.BIM_OT_remove_section_plane,
operator.ConfigureVisibility,
operator.OpenUpstream,
operator.OpenUri,
operator.ReloadIfcFile,
operator.RemoveIfcFile,
operator.SelectDataDir,
operator.SelectIfcFile,
operator.SelectSchemaDir,
operator.SelectURIAttribute,
operator.EditBlenderCollection,
prop.StrProperty,
operator.BIM_OT_enum_property_search, # /!\ Register AFTER prop.StrProperty
prop.ObjProperty,
prop.Attribute,
prop.ModuleVisibility,
prop.BIMProperties,
prop.IfcParameter,
prop.PsetQto,
prop.GlobalId,
prop.BIMObjectProperties,
prop.BIMMaterialProperties,
prop.BIMMeshProperties,
ui.BIM_PT_section_plane,
ui.BIM_UL_generic,
ui.BIM_UL_topics,
ui.BIM_ADDON_preferences,
# Scene panel groups
ui.BIM_PT_project_info,
ui.BIM_PT_project_setup,
ui.BIM_PT_collaboration,
ui.BIM_PT_geometry,
ui.BIM_PT_services,
ui.BIM_PT_structural,
ui.BIM_PT_4D5D,
ui.BIM_PT_quality_control,
ui.BIM_PT_integrations,
# Object panel groups
ui.BIM_PT_object_metadata,
ui.BIM_PT_geometry_object,
ui.BIM_PT_services_object,
ui.BIM_PT_utilities_object,
ui.BIM_PT_misc_object,
]
for mod in modules.values():
classes.extend(mod.classes)
def on_register(scene):
handler.setDefaultProperties(scene)
if not bpy.app.background:
bpy.app.handlers.depsgraph_update_post.remove(on_register)
def register():
for cls in classes:
bpy.utils.register_class(cls)
bpy.app.handlers.depsgraph_update_post.append(on_register)
bpy.app.handlers.undo_pre.append(handler.undo_pre)
bpy.app.handlers.undo_post.append(handler.undo_post)
bpy.app.handlers.redo_pre.append(handler.redo_pre)
bpy.app.handlers.redo_post.append(handler.redo_post)
bpy.app.handlers.load_post.append(handler.setDefaultProperties)
bpy.app.handlers.load_post.append(handler.loadIfcStore)
bpy.app.handlers.save_pre.append(handler.ensureIfcExported)
bpy.types.Scene.BIMProperties = bpy.props.PointerProperty(type=prop.BIMProperties)
bpy.types.Object.BIMObjectProperties = bpy.props.PointerProperty(type=prop.BIMObjectProperties)
bpy.types.Material.BIMObjectProperties = bpy.props.PointerProperty(type=prop.BIMObjectProperties)
bpy.types.Material.BIMMaterialProperties = bpy.props.PointerProperty(type=prop.BIMMaterialProperties)
bpy.types.Mesh.BIMMeshProperties = bpy.props.PointerProperty(type=prop.BIMMeshProperties)
bpy.types.Curve.BIMMeshProperties = bpy.props.PointerProperty(type=prop.BIMMeshProperties)
bpy.types.Camera.BIMMeshProperties = bpy.props.PointerProperty(type=prop.BIMMeshProperties)
bpy.types.PointLight.BIMMeshProperties = bpy.props.PointerProperty(type=prop.BIMMeshProperties)
bpy.types.SCENE_PT_unit.append(ui.ifc_units)
for mod in modules.values():
mod.register()
def unregister():
for cls in reversed(classes):
bpy.utils.unregister_class(cls)
bpy.app.handlers.load_post.remove(handler.setDefaultProperties)
bpy.app.handlers.load_post.remove(handler.loadIfcStore)
bpy.app.handlers.save_pre.remove(handler.ensureIfcExported)
del bpy.types.Scene.BIMProperties
del bpy.types.Object.BIMObjectProperties
del bpy.types.Material.BIMObjectProperties
del bpy.types.Material.BIMMaterialProperties
del bpy.types.Mesh.BIMMeshProperties
del bpy.types.Curve.BIMMeshProperties
del bpy.types.Camera.BIMMeshProperties
del bpy.types.PointLight.BIMMeshProperties
bpy.types.SCENE_PT_unit.remove(ui.ifc_units)
for mod in reversed(list(modules.values())):
mod.unregister()
@@ -0,0 +1,2 @@
*
!.gitignore
Binary file not shown.
@@ -0,0 +1,67 @@
<link href="jsgantt.css" rel="stylesheet" type="text/css"/>
<script src="jsgantt.js" type="text/javascript"></script>
<style>
.gtaskcellwkend,
.gtaskcellcurrent,
.gminorheadingwkend {
background-color: #e1e1e1;
}
.gitemhighlight td {
background-color: #ffdaaa;
}
.gtaskblue {
background: #4281A4;
}
.gtaskred {
background: #C1666B;
}
.gtaskgreen {
background: #48A9A6;
}
.gtaskyellow {
background: #D4B483;
}
.gmainleft {
overflow: visible;
flex: 0 1 auto;
}
</style>
<a href="#print" id="print">Print Mode</a>
<div style="position:relative" class="gantt" id="GanttChartDIV"></div>
<script type="text/javascript">
var g = new JSGantt.GanttChart(document.getElementById('GanttChartDIV'), 'day');
g.setOptions({
vCaptionType: 'Caption', // Set to Show Caption : None,Caption,Resource,Duration,Complete,
vQuarterColWidth: 36,
vDateTaskDisplayFormat: 'day dd month yyyy', // Shown in tool tip box
vDayMajorDateDisplayFormat: 'mon yyyy - Week ww',// Set format to dates in the "Major" header of the "Day" view
vWeekMinorDateDisplayFormat: 'dd mon', // Set format to display dates in the "Minor" header of the "Week" view
vLang: 'en',
vShowTaskInfoLink: 1, // Show link in tool tip (0/1)
vShowEndWeekDate: 0, // Show/Hide the date for the last day of the week in header for daily
vUseSingleCell: 10000, // Set the threshold cell per table row (Helps performance for large data.
vFormatArr: ['Day', 'Week', 'Month', 'Quarter'], // Even with setUseSingleCell using Hour format on such a large chart can cause issues in some browsers,
vShowRes: false, // Disable the resource column.
vShowComp: false, // Disable the completion column.
vShowDur: false, // Disable the duration column, because jsgantt doesn't calculate durations the way we want.
vAdditionalHeaders: {ifcduration: {title: 'Duration'}},
vUseToolTip: false, // Disable tooltips.
vTotalHeight: 900,
});
document.getElementById('print').addEventListener('click', function() {
g.setTotalHeight("");
g.Draw();
});
var json_data = `
{{{json_data}}}
`;
JSGantt.parseJSONString(json_data, g);
g.Draw();
</script>
File diff suppressed because one or more lines are too long
@@ -0,0 +1,8 @@
{
"eevee": {
"uri": "mpass/shader.blend"
},
"cycles": {
"uri": "mpass/shader.blend"
}
}
@@ -0,0 +1,13 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION((),'2;1');
FILE_NAME('EPset_Annotation.ifc','2020-01-01T00:00:00',(),(),'EPset_Annotation','EPset_Annotation',$);
FILE_SCHEMA(('IFC4'));
ENDSEC;
DATA;
#1=IFCPROPERTYSETTEMPLATE('3VuPUwdCD2Qx3XDDRs0R1N',$,'EPset_Annotation','',.PSET_OCCURRENCEDRIVEN.,'IfcAnnotation',(#2,#3));
#2=IFCSIMPLEPROPERTYTEMPLATE('2P7JN79n96Q9pElZ83LKe4',$,'ZIndex','',.P_SINGLEVALUE.,'IfcInteger',$,$,$,$,$,.READWRITE.);
#3=IFCSIMPLEPROPERTYTEMPLATE('1Wpx_r2xj1_9w5JpI0QRJy',$,'Symbol','',.P_ENUMERATEDVALUE.,'IfcLabel',$,#4,$,$,$,.READWRITE.);
#4=IFCPROPERTYENUMERATION('Symbol',(IFCLABEL('rectangle-tag'), IFCLABEL('door-tag')),$);
ENDSEC;
END-ISO-10303-21;
@@ -0,0 +1,24 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION((),'2;1');
FILE_NAME('EPset_Drawing.ifc','2020-01-01T00:00:00',(),(),'EPset_Drawing','EPset_Drawing',$);
FILE_SCHEMA(('IFC4'));
ENDSEC;
DATA;
#1=IFCPROPERTYSETTEMPLATE('2JhNIvqZrFnAgxfhK0XVQX',$,'EPset_Drawing','',.PSET_OCCURRENCEDRIVEN.,'IfcAnnotation',(#2,#3,#4,#5,#6,#7,#8,#9,#10,#11,#12,#13,#14,#15));
#2=IFCSIMPLEPROPERTYTEMPLATE('23JavTMk98ZxXhrUEnjAcf',$,'TargetView','',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
#3=IFCSIMPLEPROPERTYTEMPLATE('1yVWUt5H9DAOuu0OaMMLpe',$,'Scale','',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
#4=IFCSIMPLEPROPERTYTEMPLATE('3gsuPBtU93b8f0gg1pjkq6',$,'HumanScale','',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
#5=IFCSIMPLEPROPERTYTEMPLATE('0AK5C2UpL4$eaac2LszAx$',$,'HasUnderlay','',.P_SINGLEVALUE.,'IfcBoolean',$,$,$,$,$,.READWRITE.);
#6=IFCSIMPLEPROPERTYTEMPLATE('2j2ZEZR8X5tONm7kli5hM6',$,'HasLinework','',.P_SINGLEVALUE.,'IfcBoolean',$,$,$,$,$,.READWRITE.);
#7=IFCSIMPLEPROPERTYTEMPLATE('1ttChRysH9UuEX2FeMj5Hu',$,'HasAnnotation','',.P_SINGLEVALUE.,'IfcBoolean',$,$,$,$,$,.READWRITE.);
#8=IFCSIMPLEPROPERTYTEMPLATE('2NPPxuABv1huDTVh32TFgw',$,'GlobalReferencing','',.P_SINGLEVALUE.,'IfcBoolean',$,$,$,$,$,.READWRITE.);
#9=IFCSIMPLEPROPERTYTEMPLATE('10hT_1zrzEbRRKMXYAWvtD',$,'Metadata','',.P_SINGLEVALUE.,'IfcText',$,$,$,$,$,.READWRITE.);
#10=IFCSIMPLEPROPERTYTEMPLATE('3Z0BXPSG5CWgtI33ioV7aj',$,'Include','',.P_SINGLEVALUE.,'IfcText',$,$,$,$,$,.READWRITE.);
#11=IFCSIMPLEPROPERTYTEMPLATE('1RVts_g3PAw98PJA2yL3bO',$,'Exclude','',.P_SINGLEVALUE.,'IfcText',$,$,$,$,$,.READWRITE.);
#12=IFCSIMPLEPROPERTYTEMPLATE('0c1$8NpYDEaBiJrj16jHIo',$,'Stylesheet','',.P_SINGLEVALUE.,'IfcURIReference',$,$,$,$,$,.READWRITE.);
#13=IFCSIMPLEPROPERTYTEMPLATE('3mRF52q81FQB$h4oTh7M45',$,'Markers','',.P_SINGLEVALUE.,'IfcURIReference',$,$,$,$,$,.READWRITE.);
#14=IFCSIMPLEPROPERTYTEMPLATE('1rhr_0N3LDtuORcEJP0KXM',$,'Symbols','',.P_SINGLEVALUE.,'IfcURIReference',$,$,$,$,$,.READWRITE.);
#15=IFCSIMPLEPROPERTYTEMPLATE('2sHDBuW7P4TROy$hL2w7ct',$,'Patterns','',.P_SINGLEVALUE.,'IfcURIReference',$,$,$,$,$,.READWRITE.);
ENDSEC;
END-ISO-10303-21;

Some files were not shown because too many files have changed in this diff Show More