Compare commits

...

3297 Commits

Author SHA1 Message Date
Thomas Krijnen 0edfb0e791 Settings rework for plan/model/context and interfacing with python 2024-04-18 21:04:02 +02:00
Thomas Krijnen b62b328f1d Address minor unaddressed consequences of merge 2024-04-18 12:11:25 +02:00
Thomas Krijnen 745f7674ff Update clash code to conform to v0.8 2024-04-18 12:02:22 +02:00
Thomas Krijnen 4828db0f6c Merge branch 'v0.8.0' of https://github.com/IfcOpenShell/IfcOpenShell into v08attempt1 2024-04-18 11:45:07 +02:00
Thomas Krijnen 1e5f7c93fa Some changes left-over after conflict resolution 2024-04-18 10:48:25 +02:00
Dion Moult ad01945561 Fix #4549. Drawing decorators are now refreshed like the rest of the UI after operations. 2024-04-18 10:48:25 +02:00
Dion Moult 9090b0866b Fix #4486. Sync camera properties from IFC on both drawing load as well as drawing activation.
Also there are now defaults in case pset values don't exist.
2024-04-18 10:48:25 +02:00
Dion Moult f11538ee37 Fix #3402. 2024-04-18 10:48:25 +02:00
Dion Moult 608904325a Fix #4525. Fix #4546. Specify dependencies for ifcopenshell and ifcpatch.
No longer optional for a better first experience. They aren't huge deps.
2024-04-18 10:48:25 +02:00
Dion Moult c2bb57d7de See #4546. Fix docs link to filtering elements query syntax. 2024-04-18 10:48:25 +02:00
Dion Moult 1e1451de03 See #4541. Clarify how to use include args for IfcConvert 2024-04-18 10:48:25 +02:00
Dion Moult f82a8f34c0 Fix #4550. Update doc urls. 2024-04-18 10:48:25 +02:00
Andrej730 ef6dfc3fec Update BBIM version in docs 2024-04-18 10:48:25 +02:00
Andrej730 657ff30883 material.unassign_material - support batching #4474 2024-04-18 10:48:25 +02:00
Andrej730 cd25a50e96 material.assign_material - support batching #4474 2024-04-18 10:48:25 +02:00
Andrej730 5562f35ed1 material.assign_material - update owner history 2024-04-18 10:48:25 +02:00
Andrej730 9e310318d4 ifcpatch - add ifc2x3 tests and test for MergeDuplicateTypes 2024-04-18 10:48:25 +02:00
Andrej730 67a6e4d258 typing 2024-04-18 10:48:25 +02:00
Dion Moult 09578b2fd6 Fix #4526. Bug when exporting IfcTester results to BCF due to new "failures" attribute. 2024-04-18 10:48:25 +02:00
Dion Moult a752abf0a5 See #4541. Add documentation examples on how to use include filters in IfcConvert. 2024-04-18 10:48:25 +02:00
Andrej730 3478db67b9 system.unassign_system - support batching #4474 2024-04-18 10:48:25 +02:00
Andrej730 9ee5cb7180 system.assign_system - support batching #4474 2024-04-18 10:48:25 +02:00
Andrej730 b4658184de system.add_system - fix failing default agrument in ifc2x3 2024-04-18 10:48:25 +02:00
Andrej730 6e1688905f new util method ifcopenshell.util.element.get_groups 2024-04-18 10:48:25 +02:00
Andrej730 2460729e43 type.unassign_type - support batching #4474 2024-04-18 10:48:25 +02:00
Andrej730 d6fb508517 assign_type not to remap if it's type was assigned previously 2024-04-18 10:48:25 +02:00
Andrej730 949ff535eb typing 2024-04-18 10:48:25 +02:00
Andrej730 fed23533a4 remove unused lines from tests 2024-04-18 10:48:25 +02:00
Andrej730 a27461e4ba fix bug generating profiles on assign_type after df4943205 2024-04-18 10:48:25 +02:00
Vukas Pajic 5c0bbcf525 fix: address test fails 2024-04-18 10:48:24 +02:00
Vukas Pajic e73ff252bb fix: cascade_schedule correctly handles timelag with IfcRatioMeasure 2024-04-18 10:48:24 +02:00
Andrej730 74224676cd type.assign_type - support batching #4474 2024-04-18 10:48:24 +02:00
Andrej730 571892dd60 fix bug in nest.assign_object 2024-04-18 10:48:24 +02:00
Andrej730 fa2009418c unify tests for ifc4 and ifc2x3 2024-04-18 10:48:24 +02:00
Andrej730 7af1632c1a fix test files names 2024-04-18 10:48:24 +02:00
Andrej730 48e5d14817 nest.assign_object to support ifc2x3 2024-04-18 10:48:24 +02:00
Andrej730 ee7cf918ea get_pset() fix bug getting inherited psets with psets_only/qtos_only = True 2024-04-18 10:48:24 +02:00
Andrej730 b77df1892c further ifcopenshell.util.element optimization
and readibility for props addressed by the index
2024-04-18 10:48:24 +02:00
Andrej730 4f2c5e4571 maintain verbosity getting complex property subproperties 2024-04-18 10:48:24 +02:00
Andrej730 bea8b2cddc typing 2024-04-18 10:48:24 +02:00
Andrej730 773a79abc7 black format 2024-04-18 10:48:24 +02:00
Alper Kantarci 62b9fe2e13 Use "gltf" instead of "gtlf" (#4538)
- Fix "gtlf" typo
2024-04-18 10:48:24 +02:00
Dion Moult df4478a90a Fix #4290. You can now format custom thousands separators and decimal separators in IfcCSV. 2024-04-18 10:48:24 +02:00
Dion Moult 47d5e17159 Document how MacOS users using Blender from Steam should still use Mac Intel 2024-04-18 10:48:24 +02:00
Dion Moult 97eb34ca0d Fix #4490. Fix fundamental bug where get_pset would return none for inherited props with a boolean False value. 2024-04-18 10:48:24 +02:00
Dion Moult 0a4ff00bce Fix issue where the underlay cache option was not yet implemented and ignored. 2024-04-18 10:48:24 +02:00
Dion Moult 782573f986 Fix issue where reloading the drawing list would cause drawing names to be synced
It would run useless sync / API calls to edit psets on potentially hundreds of drawings.
2024-04-18 10:48:24 +02:00
Dion Moult f0fce05342 See #4481. Defer setting render visibility to drawing generation to speed up switching between drawings.
Doing obj.hide_render = True/False in a loop is slow and there is no bulk set command.
2024-04-18 10:48:24 +02:00
Andrej730 9fe5e75c27 ifcopenshell.util.element optimization
Tried to reduce amount of IFC attributes retrieved by reusing already retrieved values.

E.g. previously get_nest() was retrieving same attribute 3 times on each call, now it does it only once and it's 2 times faster (2.4 ms -> 1.2 ms).
2024-04-18 10:48:24 +02:00
Andrej730 ede278db8f ifcopenshell.util.element.get_nest test 2024-04-18 10:48:24 +02:00
Andrej730 3db33a1071 nest.unassign_object - support batching #4474 2024-04-18 10:48:24 +02:00
Andrej730 d270a4fef8 nest.assign_object - support batching #4474 2024-04-18 10:48:24 +02:00
Andrej730 064fc0e405 typing 2024-04-18 10:48:24 +02:00
Andrej730 846ff3b9fd black format 2024-04-18 10:48:24 +02:00
Andrej730 8df04091ff ifcopenshell.api.run optimization
cache usecase classes instead of importing their modules and getting them each time, makes empty api call twice as fast
2024-04-18 10:48:24 +02:00
Andrej730 da838a2c7c deprecate spatial.remove_container in favor of spatial.assign_container
added temporary support for old version with warnings:

WARNING. `spatial.remove_container` api method is deprecated and should be replaced with spatial.unassign_container
WARNING. `product` argument is deprecated for API method "spatial.remove_container" and should be replaced with `products`.
2024-04-18 10:48:24 +02:00
Dion Moult d9d38e00bf See #4481. Faster implementation of object hiding and toggline viewport visibility. 2024-04-18 10:48:24 +02:00
Dion Moult 8d9a65caa4 Fix #4497. Drawing text annotations are now based on actual line breaks. 2024-04-18 10:48:24 +02:00
Dion Moult 4541a15a19 See #4497. Show invisible newlines and allow newline editing in attributes. 2024-04-18 10:48:23 +02:00
Dion Moult ba8257c9b0 Fix #4533. Add convenience link to launch type manager when no types exist. 2024-04-18 10:48:23 +02:00
Benoit DAMAY 446e9093a3 Inline help feature (#4409)
* Help operator in grouping and filtering Panel

Opens up a webbrowser on click

* Help button on the right of filtering panel header

* replacing os.rename() by shutil.move in ifcpatch

* removing debug print from previous commit

* Removing extra operator
Using bim.open_uri to open help page

* Update docs url

* Clean up whitespace

---------

Co-authored-by: Dion Moult <dion@thinkmoult.com>
2024-04-18 10:48:23 +02:00
ppaawweeuu d6eb8c131b Add CCI Classification schema
I'd like to add CCI classification to BBIM. It is very similar to CSS, developed by CCI-C and licensed under CC BY 4.0
More details here: https://cci-collaboration.org/the-standard/

This is my first commit, I used CCS(EN).ifc file as reference. Any feedback welcomed.
2024-04-18 10:48:23 +02:00
Gorgious 69d51283c7 New UI List in Sandbox panel to access, flip, remove, add, edit clipping planes
and some tweaks :
- Disable possibility to edit clipping plane quad geometry
- Add select and delete operators
- Remove polls from CreateClippingPlane that prevented from using it in the Properties editor. The clipping plane is added near the origin when using the Add button in the panel
2024-04-18 10:48:23 +02:00
Andrej730 163f5f2611 aggregate.unassign_object - support batching #4474 2024-04-18 10:48:23 +02:00
Andrej730 833f67cf45 aggregate.assign_object - support batching #4474 2024-04-18 10:48:23 +02:00
Andrej730 b106d6a4d1 temporary support for deprecated api arguments #4531 2024-04-18 10:48:23 +02:00
Andrej730 bc8b4e1a69 typing 2024-04-18 10:48:23 +02:00
Andrej730 9ef63e9b04 black format 2024-04-18 10:48:23 +02:00
Andrej730 65d419d5c7 fix test after 7dd0d7601 2024-04-18 10:48:23 +02:00
Andrej730 d35f2dd0e9 layer.unassign_layer - support batching #4474 2024-04-18 10:48:23 +02:00
Andrej730 a003bc0018 layer.assign_layer - support batching #4474 2024-04-18 10:48:23 +02:00
Andrej730 7d0111115b validate - add examples 2024-04-18 10:48:23 +02:00
Andrej730 e21eaac3a2 fix possible infinite recursion in bim.debug_active_drawing #4500
also fixed the issue with mixed up results at the end of the operator execution
2024-04-18 10:48:23 +02:00
Dion Moult 3357f89311 Fix #4509. Don't show scary error message if you haven't specified a filter query. 2024-04-18 10:48:23 +02:00
Dion Moult 562bc14f5b Fix #3759. IFC4X3 files should use ADD2 identifier. 2024-04-18 10:48:23 +02:00
Dion Moult aba8683d5e Fix #4303. Declare dependencies for ifctester. 2024-04-18 10:48:23 +02:00
Dion Moult ef1a92a9ee Publish IfcClash to PyPI 2024-04-18 10:48:23 +02:00
Dion Moult bfe2d9f256 Publish IfcCSV to PyPI 2024-04-18 10:48:23 +02:00
Dion Moult 1ab76897a8 Whoops again 2024-04-18 10:48:23 +02:00
Dion Moult 0168c0ee26 See #4529. Publish IfcPatch to PyPI. 2024-04-18 10:48:23 +02:00
Dion Moult 42db0b18b0 Add bSDD makefile 2024-04-18 10:48:23 +02:00
Dion Moult 1248c8972a Whoops 2024-04-18 10:48:23 +02:00
Dion Moult 89b1616d2b Publish bSDD to PyPI 2024-04-18 10:48:23 +02:00
Dion Moult b158d6a5f8 Materials with no style colours now default to Blender's default colour when linking models 2024-04-18 10:48:23 +02:00
Dion Moult 9a19fb89c9 Fix #4521. 2024-04-18 10:48:23 +02:00
Dion Moult 52be9684fc Minor fix in doc utility for entities which have no predefined types 2024-04-18 10:48:23 +02:00
Dion Moult 46adb2b4db Fix bug where drawing psets were needlessly updated and random objects would get drawing psets added on them
The prop update callbacks on has_underlay, has_linework, and has_annotation would edit the active object, which is not necessarily the camera. Yikes! Also, this means that when activating the drawing, it would sync references and every time it synced a reference it would attempt to sync these properties too which was slow and wasteful.
2024-04-18 10:48:23 +02:00
Dion Moult 0e410b4ac2 Fix #4524. Update README.md 2024-04-18 10:48:23 +02:00
Dion Moult acba7c2410 Fix #4492. Refix bug where there was an extra equal sign when loading saved queries. 2024-04-18 10:48:23 +02:00
sebphi 0f33c000fb Fix import of ifcopenshell.util.unit in Python <3.10 #4520 2024-04-18 10:48:23 +02:00
Andrej730 eebcc48238 group.unassign_group - support batching #4474 2024-04-18 10:48:23 +02:00
Andrej730 df9a306730 spatial.unassign_container - support batching #4474 2024-04-18 10:48:22 +02:00
Andrej730 52995d1cdd spatial.assign_container - support batching #4474 2024-04-18 10:48:22 +02:00
Andrej730 ee6c7a9fad black format 2024-04-18 10:48:22 +02:00
Andrej730 443cd5187c typing 2024-04-18 10:48:22 +02:00
Andrej730 1d916f41e2 Collector.sync skip_unlinking option #4500
To speed up the drawing process in large projects and reduce time on syncing stage I've found that if object is already assigned to it's parent collection (both as part of blender collection and in IFC) we can skip assigning stage significantly reducing time on syncing in general (from 20-25 secs -> 9 secs).

The only thing we'll be missing in that case that object won't be unlinked from other unrelated blender collections which shouldn't break anything in the case of drawing generation.
2024-04-18 10:48:22 +02:00
Andrej730 bbdfe11cc0 documentation and small refactor 2024-04-18 10:48:22 +02:00
Andrej730 26e296c4b5 small optimizations
1) stop on first parent collection
2) ensure object's own collection's parent has BIMCollectionProperties.obj during the loop
3) collector._get_collections - returns project's own collection for consistency
4) couple tweaks skipping unnecessary iterations in loops
2024-04-18 10:48:22 +02:00
Dion Moult 9ee35b1054 See #4518. Fix pypi python version requirements. 2024-04-18 10:48:22 +02:00
Dion Moult 35f425c69d Add missing build dep 2024-04-18 10:48:22 +02:00
Thomas Krijnen 11364061d4 #4278 Update cd.yml bump ubuntu version 2024-04-18 10:48:22 +02:00
Dion Moult 336d056be7 Fix evil hacks in ifcopenshell pip dist packaging and support py312 on PyPI 2024-04-18 10:48:22 +02:00
Dion Moult 861aa3f9c7 Ship py39 to py312 for PyPI 2024-04-18 10:48:22 +02:00
Dion Moult b8ee171f65 Allow manual workflow dispatch of ci-ifcopenshell-pypi.yml 2024-04-18 10:48:22 +02:00
Dion Moult a12c732d0f Fix #4504. Extract CAD layers when linking in models. 2024-04-18 10:48:22 +02:00
Dion Moult f72604052b See #4504. Extract material data for linked models. 2024-04-18 10:48:22 +02:00
Dion Moult 760e8014e6 See #4508. Update example code to serialise to obj. 2024-04-18 10:48:22 +02:00
jaymeandretta fa65de051d Updates links to BlenderBIM and IfcOpenShell documentation in README 2024-04-18 10:48:22 +02:00
Andrej730 6bc4e003b4 bim.debug_active_drawing debug operator #4500
Operator can help narrow down failing elements when drawing is failing with "RuntimeError: An unknown error occurred".

it's located in debug section - https://i.imgur.com/b03jmkZ.png

The output is noisy but the results are highlighted:
https://i.imgur.com/0ZA0u60.png
https://i.imgur.com/oXzqIXU.png
https://i.imgur.com/Y0nMRMz.png
2024-04-18 10:48:22 +02:00
Andrej730 d0e1a04fba bim.create_drawing to sync only once if printing multiple drawings
Turned out syncing process takes too much time on large projects, so we can speed up the printing process by syncing just once. Also exposed option not to sync to operator's properties to allow debugging failing elements.

A bit related to #4500
2024-04-18 10:48:22 +02:00
Andrej730 479c244de7 black format, cleanup, notes
bim.generate_global_id - forgot to remove it previously, this operator isn't intended for debug section
2024-04-18 10:48:22 +02:00
Andrej730 1f3d46640f typing 2024-04-18 10:48:22 +02:00
Dion Moult 95bfb5c6a1 Autodetect CSG representation types in shape builder 2024-04-18 10:48:22 +02:00
Dion Moult 9c11626893 Detect binary data types in util.attribute 2024-04-18 10:48:22 +02:00
Massimo Fabbro 6ea9c9444a Qto_Calculator more consistent calculation about the PredefinedType 2024-04-18 10:48:22 +02:00
Massimo Fabbro 7519b66d4e improve the flooring height object quantity calculation 2024-04-18 10:48:22 +02:00
Massimo Fabbro 1132029e1b improve the ceiling height object quantity calculation 2024-04-18 10:48:22 +02:00
Massimo Fabbro 4ec902abf5 fix add ceiling from walls elevation bug 2024-04-18 10:48:22 +02:00
Andrej730 14efd59ff8 log external styles names when they fail to load 2024-04-18 10:48:22 +02:00
Andrej730 af3e2e0cf3 typing 2024-04-18 10:48:22 +02:00
Andrej730 19dcbf5ffb use default shading_styles.json in case if project's file is missing
to make it consistent with how we use in similar cases default styles, symbols, etc
2024-04-18 10:48:22 +02:00
Andrej730 4d1ea7eba5 move override panel methods to tool.Blender
to keep them close, so it will be easier to keep them in sync
2024-04-18 10:48:22 +02:00
Andrej730 100629e104 change .poll for overridden panels instead of creating new classes
Needed to avoid errors disabling addons that have overridden panels
2024-04-18 10:48:22 +02:00
Andrej730 c4d437cce4 move scene panels from different addons to "Blender Properties"
now we also automatically get list of default blender scene panels instead of hardcoding them
2024-04-18 10:48:21 +02:00
Andrej730 e8b2ccdd3c override blender ui panels when should_setup_workspace = False
Previously with should_setup_workspace = False it wouldn't override Blender UI scene panels and they would get mixed up with BBIM panels. After fix Blender panels are always moved to "Blender Properties" tab

before - https://i.imgur.com/bPvcAEe.png
now - https://i.imgur.com/lRUox29.png
2024-04-18 10:48:21 +02:00
Dion Moult fea78a8d52 Fix bug when linking in models with no chunks 2024-04-18 10:48:21 +02:00
Andrej730 e5cfe5cf3c ifcopenshell.validate to check unique guids (IfcRoot.UR1) 2024-04-18 10:48:21 +02:00
Andrej730 72011c2fbd typing 2024-04-18 10:48:21 +02:00
Andrej730 5c90b215ca validate.py - black format 2024-04-18 10:48:21 +02:00
Gorgious56 6f520ae457 The button to remove an inherited pset is no longer enabled on instances
Previously it would fail silently if clicked
2024-04-18 10:48:21 +02:00
Andrej730 65838f2033 Return of the missing button for regenerating global id
Was about to implement to find that we already have "bim.generate_global_id" and it just was lost at some point. Returned it to the attributes UI. It also allows Updating guids for all selected elements on Shift+Click.

This also can be useful to solve MergeProject and other guids conflicts, see example issue in https://community.osarch.org/discussion/2062/bbim-mergeproject-patch-not-separating-elements-in-different-buildings

Example - https://imgur.com/a/mvRtyER
2024-04-18 10:48:21 +02:00
Andrej730 345b94fbee RegenerateGlobalIds - tests 2024-04-18 10:48:21 +02:00
Andrej730 d6a72bd2b6 Fix test after cf9a94a79 2024-04-18 10:48:21 +02:00
Andrej730 246441e216 prevent reloading reference annotations on loading .ifc #4478
1) if reference annotation was changed, it would reload discarding the changes
2) even if reference annotation wasn't changed it would still reload them producing noise in .ifc changes
2024-04-18 10:48:21 +02:00
Andrej730 2f19a1bbea typing 2024-04-18 10:48:21 +02:00
Andrej730 73d7728c5f fix typo 2024-04-18 10:48:21 +02:00
Andrej730 bddf423e6c experimental svg to dxf conversion for drawings
Example - https://imgur.com/a/AkvLlbZ
2024-04-18 10:48:21 +02:00
Andrej730 74fa0a106e fix issue with prohibited facets in 0065c5f, add a test 2024-04-18 10:48:21 +02:00
Andrej730 5c398428c3 ifctester.Specification.set_usage convenience method
sets minOccurs and maxOccurs according to the agreement mentioned in the latest ids.xsd
https://github.com/buildingSMART/IDS/blob/6d71cdf3547a0383c6cfbbead81a7cef7521ac3a/Development/ids.xsd#L67-L72
2024-04-18 10:48:21 +02:00
Andrej730 7be396474c typing 2024-04-18 10:48:21 +02:00
Dion Moult 36527d0e9d Whoops. 2024-04-18 10:48:21 +02:00
Dion Moult 4403f75959 Fix #4321. The PurgeData recipe now also works on IFC2X3. 2024-04-18 10:48:21 +02:00
Dion Moult 619f461829 Fix #4060. The colour by property panel now shows the number of results in the legend. 2024-04-18 10:48:21 +02:00
Dion Moult 3793a5dfea Fix #4069. IfcClash Blender interface now uses the new filter UI. 2024-04-18 10:48:21 +02:00
Dion Moult 77465dfd41 Bump IOS. 2024-04-18 10:48:21 +02:00
Dion Moult 7742e4da45 IfcDiff now uses the new selector syntax with the new UI 2024-04-18 10:48:21 +02:00
Dion Moult e2102cd2c7 Fix #4306. Remove superseded selector UI. 2024-04-18 10:48:21 +02:00
Ryan Schultz d7317d27ab added search for styles - in BIM_PT_representation_items 2024-04-18 10:48:21 +02:00
Dion Moult 2905eb637d Fix #4328. Fix incorrect documentation about how to use the imperial_length formatting function. 2024-04-18 10:48:06 +02:00
Dion Moult 33f5db2e26 Use indices instead of WorkTimeDatesInterface
Checking start/end dates are done very, very often in date calculations (often looping through every day in a date range). So I'd prefer more opaque code but less overhead.
2024-04-18 10:48:06 +02:00
Thomas Krijnen c16d49d683 #4450 don't fail on empty bbox in prefiltering 2024-04-18 10:48:06 +02:00
Dion Moult fcf5073726 See #4484. Editing predefined type attributes now enforces valid combinations of userdefined and object/element type 2024-04-18 10:48:06 +02:00
Dion Moult 81fdaea5f2 Fix #4323. Bug where running a filter could fail if you tried to compare values which had incompatible types. 2024-04-18 10:48:06 +02:00
Dion Moult a56ad31571 More minor doc changes and polish 2024-04-18 10:48:06 +02:00
Dion Moult 589a725747 Fix #4265. Bug where when loading a saved filter it showed an unnecessary = comparison (which is by default). 2024-04-18 10:48:06 +02:00
Dion Moult 7f70b79f2a Minor doc fixes 2024-04-18 10:48:06 +02:00
Dion Moult 5fbdc9e7fb Fix #4461. Write documentation on how to build and edit documentation. 2024-04-18 10:48:06 +02:00
Dion Moult 65dfa048cf Fix #4483. 2024-04-18 10:48:06 +02:00
Dion Moult a6ae609a6a Fix #4318. Theme docs to match website branding and add edit button, footer links, and icons. 2024-04-18 10:48:06 +02:00
Dion Moult 4c3a7b14ff Fix #4286. IfcCSV summaries are now formatted the same as the rows. 2024-04-18 10:48:06 +02:00
Dion Moult 2037a5a46b Fix bug where loading drawings didn't correctly link shared meshes (e.g. from a type of an annotation) 2024-04-18 10:48:06 +02:00
Dion Moult 13b845df92 Fix incorrect handling of prohibited specifications 2024-04-18 10:48:06 +02:00
Andrej730 ad045f5ad7 import referenced drawings activating the current drawing #4478 2024-04-18 10:48:06 +02:00
Andrej730 258d38393f typing 2024-04-18 10:48:06 +02:00
Dion Moult 7e689f2456 Fix #4305. Bug where importing spreadsheets into IFC didn't intelligently cast attribute data types 2024-04-18 10:47:36 +02:00
Andrej730 7cd400dc8e Fix #4477 2024-04-18 10:47:36 +02:00
Dion Moult 948799698e Fix #4368. Update to latest Brickschema alpha to cut dep size 2024-04-18 10:47:36 +02:00
Dion Moult 93d44041bf See #4473. Cull entourage library.
We haven't confirmed the legality of the other assets.
2024-04-18 10:47:36 +02:00
Dion Moult 4f66fdd339 Fix #4411. Fallback to absolute paths if relative paths fail. 2024-04-18 10:47:36 +02:00
Dion Moult 4abb4d7f63 Run black on IfcTester 2024-04-18 10:47:36 +02:00
Dion Moult bd92c043e0 Fix #4427. Failures are now stored in single dictionary.
There was a missing clear() call to failed_reasons which could lead to incorrect reporting. It also makes no sense to store them separately.
2024-04-18 10:47:36 +02:00
Dion Moult ed8eb7543b Fix #4465. Update IfcTester to IDS 0.9.7 2024-04-18 10:47:36 +02:00
Andrej730 12a1f8b5f0 Fix invalid profiles after subdividing edges near arcs #4471 2024-04-18 10:47:36 +02:00
Andrej730 e9b8edb5b2 use blender units subtype for cad props 2024-04-18 10:47:36 +02:00
Andrej730 0460c5c640 typing, format 2024-04-18 10:47:36 +02:00
Thomas Krijnen f6a0d1f073 Fix #4273 ignore degenerate triangles in mesher output 2024-04-18 10:47:23 +02:00
Vukas Pajic 61af868c7a sync with latest 2024-04-18 10:45:31 +02:00
Vukas Pajic f7a97622c5 Additional metadata as property set #4425
https://github.com/IfcOpenShell/IfcOpenShell/issues/4425
2024-04-18 10:45:31 +02:00
Dion Moult 4584430a5f Minor doc fixes to refer to Mac intel and silicon 2024-04-18 10:45:31 +02:00
Dion Moult d5c2085366 Clash results now are sorted and show text overlays of clash type and distance 2024-04-18 10:45:31 +02:00
Dion Moult 36ca54f3a2 Don't consider borderline points to be inside a shape for more robust protrusion results 2024-04-18 10:45:31 +02:00
Dion Moult 4f20ebce80 Change precision check of "is point on line" to be 0.01mm
Precision::Confusion() is 1e-7 which is too small apparently when doing this math. There are plenty of results which are things like 5e-7.
2024-04-18 10:45:31 +02:00
Dion Moult a2ff97e5e7 Fix bug where hidden elements weren't selected sometimes 2024-04-18 10:45:31 +02:00
Dion Moult 0729b5782b Fix #4269. Include dateutil for ifcopenshell on pypi 2024-04-18 10:45:31 +02:00
Dion Moult 44adf92392 Bump IfcOpenShell and remove py37 py38 from installation docs 2024-04-18 10:45:31 +02:00
Andrej730 385388a331 ExtractElemenets - add some tests 2024-04-18 10:45:31 +02:00
Andrej730 c2de964dce ExtractElements - fix bug where IfcElementAssembly elements wasn't added to the spatial tree
Example issue - https://community.osarch.org/discussion/2054/bbim-extractelements-patch-and-missing-elements-in-ifcelementassembly
2024-04-18 10:45:31 +02:00
Andrej730 a37c87cf4c Fix tests involving changes in Blender 4.1 (will fail on Blender <4.1)
Basically in Blender 4.1 they've changed a way renaming IDs works if name already existed before and those tests will stop working on Blender <4.1, see https://projects.blender.org/blender/blender/issues/119955
2024-04-18 10:45:31 +02:00
Andrej730 e2b22369f1 tests - reduce precision to our usual Cad tool precision to fix some tests 2024-04-18 10:45:31 +02:00
Andrej730 bdfdac24e1 Fix test in 1c1035e
tag @brunoperdigao for information
2024-04-18 10:45:31 +02:00
Andrej730 a7ed8e4328 black format 2024-04-18 10:45:30 +02:00
Dion Moult 321fcf0848 New entourage library including people and cars 2024-04-18 10:45:30 +02:00
Thomas Krijnen 90c7a9435c Fix #4070 don't increment aggregate length on invalid members 2024-04-18 10:45:22 +02:00
Dion Moult 6875a98646 Optimise property / quantity checks for IDS and other purposes 2024-04-18 10:43:02 +02:00
Dion Moult 2c169fdc24 Forgot to commit clash tool 2024-04-18 10:43:02 +02:00
Dion Moult 94bad4c4cb Switch over clash to latest add_element signature 2024-04-18 10:43:02 +02:00
Dion Moult 3f456c14b6 Minor note about which OCCT version is currently supported 2024-04-18 10:43:02 +02:00
Dion Moult 24677683ba Write docs about new geometry tree clash functions 2024-04-18 10:43:02 +02:00
Dion Moult 8f19f6ce07 Reinclude missing max_protrusions_ 2024-04-18 10:42:35 +02:00
Thomas Krijnen ea17cd9b42 Fix is_manifold(), sorry :( 2024-04-18 10:42:35 +02:00
Thomas Krijnen 75732d1d5d Integrate @Moult's add_element(TriangulationElement*) 2024-04-18 10:42:33 +02:00
Dion Moult 23f91c73af Clash detection features 2024-04-18 10:40:32 +02:00
Thomas Krijnen 4e4b8e0de1 Resolve merge conflict 2024-04-18 10:14:42 +02:00
Thomas Krijnen 7aa7f26708 Fix #4307 2024-04-18 10:14:15 +02:00
Andrej730 4f92b3587c fix styles tests 2024-04-17 15:00:40 +02:00
Andrej730 6acdadba75 Fix tests, clean up file creating empty project
To fix tests changed bim.unlink_object not to unlink original blender materials as they might be used elsewhere.
2024-04-17 15:00:40 +02:00
Andrej730 6d6c9e19b9 restore accidentally unregistered operator in 9be7d95 (caused issue in tests) 2024-04-17 15:00:40 +02:00
Andrej730 edd8d5470e small optimization
not to calculate each quantity twice
2024-04-17 15:00:40 +02:00
Andrej730 d5384e76eb fix tests 2024-04-17 15:00:39 +02:00
Andrej730 7cfeaa6047 typing 2024-04-17 15:00:39 +02:00
Andrej730 91765d3156 fix test after 7634e71 2024-04-17 15:00:39 +02:00
Thomas Krijnen a764387b90 Don't accept non-finite floats #4329 2024-04-17 15:00:07 +02:00
Ian b40c3fc173 Update build-deps.cmd 2024-04-17 14:58:14 +02:00
Gorgious56 ac72534ae0 You can now select only the aggregate or the aggregate and all its part using the interface 2024-04-17 14:58:13 +02:00
Dion Moult 9f43e9422a Blender IfcClash interface now supports new IfcClash modes
The dumb clash manager has been merged in with the main clash sets window. Loading and saving clashes now also bring in clash results, so the dumb clash manager's load/save is being deprecated. New decorator highlights clash result visually.
2024-04-17 14:58:13 +02:00
Dion Moult 18c38b312d Upgrade IfcClash to use new clash capabilities (currently unmerged from feature-clash2) 2024-04-17 14:58:13 +02:00
Andrej730 71013a48d4 Fix hiding annotation objects without repr on drawing activation 2024-04-17 14:58:13 +02:00
Andrej730 98e0070be7 typing 2024-04-17 14:58:13 +02:00
Andrej730 9ae39f1edc fix duplicated function names in test_feature 2024-04-17 14:58:13 +02:00
Andrej730 1a449905f4 fix linked ifc selectability toggle 2024-04-17 14:58:13 +02:00
Andrej730 2fadfc8eff fix load/unload linked ifc tests 2024-04-17 14:58:13 +02:00
Andrej730 4a513e1e41 fix linked ifc visibility toggle tests 2024-04-17 14:58:13 +02:00
Andrej730 812c2652d3 fix linked ifc wireframe mode toggle 2024-04-17 14:58:13 +02:00
tim ca50044dba Remove object text from subheadings (#4445)
https://github.com/IfcOpenShell/IfcOpenShell/issues/4312
2024-04-17 14:58:13 +02:00
Thomas Krijnen 75b9e6cec9 setOnlyValid() option that skips and logs invalid topology #4130 2024-04-17 14:57:44 +02:00
Bruno Postle 6944c247ca Drawings panel: fix select_all_drawings operator
Previously it always deselected all drawings, now works as advertised
2024-04-17 14:54:42 +02:00
Andrej730 aee264b587 black format 2024-04-17 14:54:42 +02:00
Andrej730 4490efc017 Fix ifc linking tests 2024-04-17 14:54:42 +02:00
Andrej730 37e06338c4 Fix issue removing material set
1) core.remove_material_set were removing material set and calling material_tool.get_active_material_type()
2) material_tool.get_active_material_type() called MaterialsData which failed with the traceback below since props.materias[current_index] had ifc id that were just removed

Traceback (most recent call last):
  File "\prop.py", line 96, in get_material_types
    MaterialsData.load()
  File "\data.py", line 43, in load
    "active_styles": cls.active_styles(),
                     ^^^^^^^^^^^^^^^^^^^
  File "\data.py", line 119, in active_styles
    material = tool.Ifc.get().by_id(material)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File \blenderbim\libs\site\packages\ifcopenshell\file.py", line 411, in by_id
    return self[id]
           ~~~~^^^^
  File \blenderbim\libs\site\packages\ifcopenshell\file.py", line 396, in __getitem__
    return entity_instance(self.wrapped_data.by_id(key), self)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File \blenderbim\libs\site\packages\ifcopenshell\ifcopenshell_wrapper.py", line 4619, in by_id
    return _ifcopenshell_wrapper.file_by_id(self, id)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: Instance # 66 not found
File "\prop.py", line 94, in get_material_types
WARN (bpy.rna): C:\Users\blender\git\blender-v410\blender.git\source\blender\python\intern\bpy_rna.cc:1366 pyrna_enum_to_py: current value '2' matches no enum in 'BIMMaterialProperties', '', 'material_type'
2024-04-17 14:54:42 +02:00
Andrej730 2b27f4423f fix ui error getting active styles for non IfcMaterial materials
Error was:

```
Traceback (most recent call last):
  File "\blenderbim\bim\module\material\ui.py", line 43, in draw
    MaterialsData.load()
  File "\blenderbim\bim\module\material\data.py", line 43, in load
    "active_styles": cls.active_styles(),
                     ^^^^^^^^^^^^^^^^^^^
  File "\blenderbim\bim\module\material\data.py", line 117, in active_styles
    return results

  File "\blenderbim\libs\site\packages\ifcopenshell\entity_instance.py", line 194, in __getattr__
    raise AttributeError(
AttributeError: entity instance of type 'IFC4.IfcMaterialLayerSet' has no attribute 'HasRepresentation'
```
2024-04-17 14:54:42 +02:00
Andrej730 ecc8832c46 typing and small refactor 2024-04-17 14:54:42 +02:00
Andrej730 dbff0e51aa Blender 4.1 - fix errors due to renamed type manager icon 2024-04-17 14:54:42 +02:00
FabioPiccinini 8464fb5aad Update sample.css (#4459)
Changed unescaped ; with , because it may cause problems if the style is included in svg
2024-04-17 14:54:42 +02:00
FabioPiccinini e3f66981e7 Unescaped ; was causing problems in Inkscape (#4456)
* Update default.css

An unescaped ; was causing problems when opening svgs that included this style with Inkscape

* Update default.css
2024-04-17 14:54:42 +02:00
Thomas Krijnen 7fa3cd45ca #4452 release gil in ifcopenshell.open() and read() 2024-04-17 14:54:42 +02:00
Andrej730 2f5190ac75 add macos py3.11-3.12 to docs 2024-04-17 14:54:42 +02:00
Andrej730 a29fbb6239 bump ifc version #4174 2024-04-17 14:54:42 +02:00
Andrej730 eaf6256048 TesselateElements - avoid processing queries that affect no elements
Previously it was failing with

 File "\ifcopenshell\geom\main.py", line 119, in __init__
    self.this = initializer(
  File "\ifcopenshell\ifcopenshell_wrapper.py", line 2467, in construct_iterator_with_include_exclude
    return _ifcopenshell_wrapper.construct_iterator_with_include_exclude(settings, file, elems, include, num_threads)
TypeError: Attribute of type AGGREGATE OF STRING needs a python sequence of strs
2024-04-17 14:54:42 +02:00
Andrej730 cbc7271885 add_mesh_representation - option to force faceted breps 2024-04-17 14:54:42 +02:00
Andrej730 ac191ac71d typing 2024-04-17 14:54:42 +02:00
Andrej730 afbf001694 grammar 😬 2024-04-17 14:54:42 +02:00
Andrej730 11bf227730 Clarifying info message saving guids to the text inside .blend #4446
Example - https://i.imgur.com/YtuQ9YA.png
2024-04-17 14:54:42 +02:00
Andrej730 860eb054d1 black format 2024-04-17 14:54:42 +02:00
Andrej730 489e92da4e typing 2024-04-17 14:54:42 +02:00
Andrej730 bae58e517a bim.select_similar_type optimization
1) avoid selecting elements of the same type multiple times
2) iterate over occurrences of the type rather than visible objects, as it's usually smaller amount of objects
2024-04-17 14:54:42 +02:00
Thomas Krijnen 8a8173f238 #4447 build-all.py 2024-04-17 14:54:42 +02:00
Andrej730 ef3d61e6c1 make spatial elements unselectable from viewport by default
It seems most of the time they only get in the way trying to select some objects at scene origin.

fyi @theoryshaw
2024-04-17 14:54:42 +02:00
Andrej730 acafc910f7 typing 2024-04-17 14:54:42 +02:00
Andrej730 a511be18a8 unload decorations on unlinking ifc file 2024-04-17 14:54:42 +02:00
Andrej730 a656d32e56 fix issue with removing collections and scenes unlinking .ifc
it couldn't find linked collections and scenes since it was comparing `filepath` from `props.links` (.ifc file) and collection.library.filepath (which is .blend file)
2024-04-17 14:54:42 +02:00
Andrej730 a1f5c84ec2 hide "no object selected" label when there are no linked ifc files 2024-04-17 14:54:42 +02:00
Andrej730 ed53f58ae7 Remove appending occurrences from library in favor of fcaac6b 2024-04-17 14:54:42 +02:00
aothms 684c0877f5 #4174 debug osx install of py311 and 312 2024-04-17 14:54:42 +02:00
Andrej730 89114f4f65 Append IfcElements from linked IFC files
Example - https://imgur.com/a/phPcKSo

Appending ifc elements from library files will be deprecated as it's much more limited than appending it from linked files (in library you can only see object's name).
2024-04-17 14:54:42 +02:00
Andrej730 088e1d07bf util.selector.set_element_value to work w/o preassigned placement #4439 2024-04-17 14:54:42 +02:00
Andrej730 7bdd382d06 util.selector.set_element_value ignore values within tolerance #4439 2024-04-17 14:54:42 +02:00
Andrej730 0bd52e2431 collector.sync note 2024-04-17 14:54:42 +02:00
Andrej730 bf770ce8d4 typing 2024-04-17 14:54:41 +02:00
Andrej730 8c028827fa Fix for loading IFC files with non-IfcElement based IfcRelNests
Example is below, it was using IfcAlignment to aggregate IfcAnnotations and IfcReferents.

I've added support loading collections for IfcPositioningElements besides IfcGrid (grids already handled separately).

https://community.osarch.org/discussion/2034/ifc-not-visible-after-loaded-in-blender-bim
2024-04-17 14:54:41 +02:00
Andrej730 588a946fde typing 2024-04-17 14:54:41 +02:00
Andrej730 67b657f2cb small fix 2024-04-17 14:54:41 +02:00
Andrej730 5ee0c4c967 ifccsv - support for assigning x/y/z coordinates from csv 2024-04-17 14:54:41 +02:00
Andrej730 9cb76a092f typing 2024-04-17 14:54:41 +02:00
M!l!nd 596e63e7e7 fixed qsets to display separately (#4423)
* fixed qsets to display separately

Signed-off-by: milinddethe15 <milinddethe15@gmail.com>

* updated data.py and run black formattor

---------

Signed-off-by: milinddethe15 <milinddethe15@gmail.com>
2024-04-17 14:54:41 +02:00
Ryan Schultz 5bacf70727 small fix to cdd332d1ee, for clarity 2024-04-17 14:54:41 +02:00
Ryan Schultz 24e1c70d5a fixes #4434 2024-04-17 14:54:41 +02:00
Thomas Krijnen 946a21146a Add missing includes after merge resolution 2024-04-17 14:54:39 +02:00
Thomas Krijnen 8aa3b12911 Wait for threads in iterator destructor 2024-04-17 14:54:15 +02:00
Andrej730 16fa8573d3 fix error loading representation without styles
If current representation didn't had any styles, only a material and it was failing during `assign_material_slots_to_faces` since it was looking for blender material only in self.styles and not in self.materials.

Note: `assign_material_slots_to_faces` is not skipped since `parse_representations` returns `True` because other representation has a style and it's added to the materials.
2024-04-17 14:48:57 +02:00
Andrej730 5197e27b13 typing 2024-04-17 14:48:55 +02:00
Andrej730 f7f828f70c python code style docs 2024-04-17 14:46:07 +02:00
Benoit DAMAY 3f4a7e6097 removing debug print from previous commit 2024-04-17 14:46:07 +02:00
Benoit DAMAY df478f6ed7 replacing os.rename() by shutil.move in ifcpatch 2024-04-17 14:46:07 +02:00
Jordan McManus aec751b762 changed type comparison to GlobalId 2024-04-17 14:46:07 +02:00
Jordan McManus 3066404b40 changed comparison for type relationships 2024-04-17 14:46:07 +02:00
jgunstone 487c96e84f add get_properties test validating that offset and limit are correctly applied 2024-04-17 14:46:07 +02:00
jgunstone db811152b8 add limit and offset to client functions 2024-04-17 14:46:07 +02:00
Andrej730 144ef8821a fix bug after 8291a0ca6 2024-04-17 14:46:07 +02:00
Andrej730 6bb507dfc0 viewport decorations for IfcAnnotation/MULTI_SYMBOL 2024-04-17 14:46:07 +02:00
Andrej730 7ff2f56f46 common method for getting annotation symbol 2024-04-17 14:46:06 +02:00
Andrej730 6ff721f5af Indicate rotated/scaled symbols in viewport 2024-04-17 14:46:06 +02:00
Andrej730 4b634b91ac Support for rotated and scaled symbols with IfcAnnotation/SYMBOL
See: https://community.osarch.org/discussion/2027/bbim-rotation-of-ifcsymbol
2024-04-17 14:46:06 +02:00
Andrej730 fad51eb388 black format 2024-04-17 14:46:06 +02:00
Andrej730 886467dfd6 typing 2024-04-17 14:46:06 +02:00
Andrej730 914dd031bd indicate IfcText symbol rotation in viewport 2024-04-17 14:46:06 +02:00
Andrej730 dd1978d61d BBIM IfcTester - option to generate ODS report
https://i.imgur.com/0JyXVK6.png
2024-04-17 14:46:06 +02:00
Andrej730 6873c21d27 Fix #4421
1) Excluded annotations from other drawings that user might accidentally include in IfcAnnotation
2) Excluded from EPset_Drawing.Include to avoid getting there other element types besides spaces
2024-04-17 14:46:06 +02:00
Andrej730 edce320756 utils.filter_elements docs and tests 2024-04-17 14:46:06 +02:00
Andrej730 96cc24c820 typing 2024-04-17 14:46:06 +02:00
Andrej730 6eeac88e1c small fixes 2024-04-17 14:46:06 +02:00
Sigma Dimensions (Yass) bc833e43ae fix construction schedule import without IfcProject #4412 2024-04-17 14:46:06 +02:00
Andrej730 0cf8574e1f spatial.workspace - add hotkeys using add_layout_hotkey 2024-04-17 14:46:06 +02:00
Andrej730 78fb986f0b bim.decorate_boundaries to decorate all boundaries in the scene
It's added as alt+v hotkey in Spatial Tool
Now it's possible to combine it with bim.load_project_space_boundaries to show decorations for all the boundaries or to keep the boundaries after Alt+B and just disable the decorations.

example - https://imgur.com/a/ecbPz13
2024-04-17 14:46:06 +02:00
Andrej730 a265a41ebe Fix issue with drawing same boundaries multiple times
If you'd hit alt+b in space tool multiple times it would redraw them again and again instead of switching between hiding and showing.
2024-04-17 14:46:06 +02:00
Andrej730 998b4a0565 model.space.py - small fixes 2024-04-17 14:46:06 +02:00
Andrej730 8d1559b486 small fixes after d209cc9ff, added a test 2024-04-17 14:46:06 +02:00
Andrej730 9852e4fa54 BBIM - option to append occurrences from the other ifc files
Example - https://imgur.com/a/yASjbs8
2024-04-17 14:46:06 +02:00
Andrej730 38bbaa0a8f util.unit.py - black format 2024-04-17 14:46:06 +02:00
Andrej730 a4a965e7ab more typing 2024-04-17 14:46:06 +02:00
Geert Hesselink 15dd93b9fb Redundant closing symbol ' (#4413)
* scale placeangleunit

* add radian si_conversions

* return conversion value of planeangleunit

* Update unit.py

* redundant closing

* redundant closing
2024-04-17 14:46:06 +02:00
Geert Hesselink 6db45c0965 Scale placeangelunit unit type (#4406)
* scale placeangleunit

* add radian si_conversions

* return conversion value of planeangleunit

* Update unit.py
2024-04-17 14:46:06 +02:00
Andrej730 17f09655e1 fix error reloading representation for objects without representation 2024-04-17 14:46:06 +02:00
Andrej730 036a88de54 commented out apil.run settings serialization as it's not used currently 2024-04-17 14:46:06 +02:00
Andrej730 6cbc0e0564 small fixes 2024-04-17 14:46:06 +02:00
Ryan Schultz 2d0e4f52a6 Add parameter for angle tolerance, and change 'deg' to '°' 2024-04-17 14:46:06 +02:00
Andrej730 e5d1c8cfb9 add test for util.unit.calculate_unit_scale 2024-04-17 14:46:06 +02:00
Andrej730 0abea81e6b fix error in typing 2024-04-17 14:46:06 +02:00
fescale bedb7733a7 Replace the specific "libpython3.8" debian package dependency for the generic "libpython3-dev". 2024-04-17 14:46:04 +02:00
Ryan Schultz 8356911bba added python version for Blender 4.1 2024-04-17 14:45:15 +02:00
Andrej730 59bda23ff6 Fix bug joining multiple extruded profiles in non-meters projects
Demo if someone missed that feature - https://imgur.com/a/JywJHyc
2024-04-17 14:45:15 +02:00
Andrej730 ad87d31e6a shape_builder.create_axis2_placement_3d utility method and docs 2024-04-17 14:45:15 +02:00
Andrej730 26e7742472 Fix bug resetting rotations after editing profile axis
Before - https://imgur.com/a/czjAoSb
After - https://imgur.com/a/ajiNcdK
2024-04-17 14:45:15 +02:00
Adrian Insaurralde Avalos 9b76ce8d97 occt 7.8 compatibility 2024-04-17 14:45:13 +02:00
Dion Moult 10797c03a2 Aggressively remove pandas test files 2024-04-17 14:42:55 +02:00
Andrej730 5980a3984d fix demo library references after 7a7c89e 2024-04-17 14:42:55 +02:00
Dion Moult 7b3b32c7f5 See #4368. Don't ship with mostly unused and bloaty boto3 dep. Augin users can install boto3 with new debug tool. 2024-04-17 14:42:55 +02:00
Dion Moult 6d142374b1 Little debug tool for people to easily install pip packages graphically
BBIM is being used in companies as ways to automate various BIM processes, and it ends up being such that Blender Python becomes their dev environment.
2024-04-17 14:42:55 +02:00
Dion Moult b1398988d3 Purge hppfcl in preparation for new clash features 2024-04-17 14:42:55 +02:00
Andrej730 f5fa371492 load clipping planes decorator reopening .blend file 2024-04-17 14:42:55 +02:00
Andrej730 5246e8588a fix poll errors for clipping plane gizmo #4392 2024-04-17 14:42:55 +02:00
Andrej730 ac4669f841 fix duplicated ifcstyleditems using append_asset
since we don't use `file.add` to add inverse items and we use `file.create_entity` it was duplicating new elements, added optional parameter that makes it possible to track already added relationships between `append_asset`s.
2024-04-17 14:42:55 +02:00
Benoit DAMAY 51ca119406 Removing unnecessary comment lines 2024-04-17 14:42:55 +02:00
Andrej730 5d370e8e2f fix typing loading issues 2024-04-17 14:42:55 +02:00
Andrej730 1d7c882231 append_asset - keep preexisting contexts valid #4280
issue occurred with ifcpatch ExtractElements - it was adding project from other ifc file (with the contexts) and then adding some elements from it using `append_asset`. During `append_asset` it was considering existing context with the duplicated one and was partially purging it.
2024-04-17 14:42:55 +02:00
Andrej730 cbf95b2080 typing 2024-04-17 14:42:55 +02:00
Andrej730 a7b731e6df Optimise patch - lazy import toposort
to fix empty Optimise patch description in BlenderBIM
2024-04-17 14:42:55 +02:00
Dion Moult bceac22ca0 See #4389. Accommodate null pset values when serializing to SVG. 2024-04-17 14:42:55 +02:00
Dion Moult d7def8291e Add tree species to tree library 2024-04-17 14:42:55 +02:00
Dion Moult 167c456223 See #4389. Accommodate null metadata. 2024-04-17 14:42:55 +02:00
Benoit DAMAY 62a3b37397 Replaced panel row with operator descriptor 2024-04-17 14:42:55 +02:00
Benoit DAMAY a6f6d0d676 Fix proposition to 3515 - extra empty lines removed from previous commit 2024-04-17 14:42:55 +02:00
Benoit DAMAY 6fa7cbce86 Fix proposition to 3515 2024-04-17 14:42:55 +02:00
M!l!nd 79df9d84fa Update Makefile 2024-04-17 14:42:55 +02:00
Dion Moult a7e0cb0bc3 Minor fix to shape aspects because not everything has a mesh (e.g. text annotations) 2024-04-17 14:42:55 +02:00
Dion Moult 6f0dd25517 Fix #4377. Add support for adding filled elements in AXIS3 layered elements. 2024-04-17 14:42:55 +02:00
Dion Moult 12bde3c56c Fix #4383. Demo library should use Model/Annotation/MODEL_VIEW for text annotations so that they can be used anywhere, not just on plans. 2024-04-17 14:42:55 +02:00
Dion Moult 73149a29c9 Fix #4384. Accommodate null values when getting data from pset. 2024-04-17 14:42:55 +02:00
Dion Moult 01150873f5 Fix #4336. Close #4337. Remove rounding for more accurate fills. 2024-04-17 14:42:55 +02:00
Dion Moult 25b73fc35a Minor fixes to IfcCSV documentation 2024-04-17 14:42:54 +02:00
Dion Moult 5e4afbc748 Separate project templates and libraries and provide dropdown to built-in libraries to aid discoverability. 2024-04-17 14:42:54 +02:00
Dion Moult 658fbd3f6a Fix #4385. Probably a mistake in the bool argument for removing datablocks. 2024-04-17 14:42:54 +02:00
Dion Moult 25ad410470 Tweak generated tree parameters and add manual trees to landscape library thanks to SavyGust27 2024-04-17 14:42:54 +02:00
jgunstone d718afc754 🔧update pip install command assuming that this branch will be merged back 2024-04-17 14:42:54 +02:00
jgunstone b3441fd5ae update license and version 2024-04-17 14:42:54 +02:00
jgunstone 94b5647e56 📝add docs about so to install and develop this package standalone 2024-04-17 14:42:54 +02:00
jgunstone cb3ff4b05a add simple tests to ensure the package is working as expected 2024-04-17 14:42:54 +02:00
jgunstone 2a21ccf0aa 🐛 add limit and offset kwargs to get_classes. TODO- I think this needs doing throughout... 2024-04-17 14:42:54 +02:00
jgunstone 8a409507c8 add version 2024-04-17 14:42:54 +02:00
jgunstone 30cedd16ee 🔧 add pyproject.toml and __init__.py 2024-04-17 14:42:54 +02:00
Dion Moult d5aff85b35 Fix #889. Write docs for how to do translations. 2024-04-17 14:42:54 +02:00
Andrej730 708c61e33a Clipping planes with cappings
Added new experimental section that allows you to cut objects based on current clipping planes in the scene. The difference from other clipping plane methods - it actually (temporarily) edits meshes geometry and adds cappings at the cut. So, the clipped meshes can be seen both on render and cutted parts won't get in the way as they do with temporary section cutaways (shader based method)

Example - https://imgur.com/a/SOqovOM
2024-04-17 14:42:54 +02:00
Andrej730 a75f5ef66f remove_data_block - option to skip some checks to speed it up 2024-04-17 14:42:54 +02:00
Dion Moult b70b285c03 See #4380. Remove support for EOL Python 3.6 2024-04-17 14:42:54 +02:00
Dion Moult 9de06fbd6e Fix #4300. You can now select spatial elements by their location too. 2024-04-17 14:42:54 +02:00
Dion Moult 0c5a173de7 Fix #4340. Indicate user needs to setup IFC2X3 user/app when using API directly. 2024-04-17 14:42:54 +02:00
Dion Moult 14e49ac633 Fix #4333. Ensure order of info is correct for valid IDSes. 2024-04-17 14:42:54 +02:00
Dion Moult 1d7de2063a See #4380. Standardise filepaths when linking in IFCs. 2024-04-17 14:42:54 +02:00
Dion Moult e7cd66bb44 You can now specify a false origin when linking in a model 2024-04-17 14:42:54 +02:00
Dion Moult 525279d4b7 Add Python3.12 to installation docs 2024-04-17 14:42:54 +02:00
Dion Moult dcc81eb6e9 See #4380. Bump IOS. 2024-04-17 14:42:54 +02:00
Dion Moult d51e75d8f0 New cable carrier and cable tool grouped into MEP tool submenu 2024-04-17 14:42:54 +02:00
Dion Moult f6e0781c78 Add icon and convenience functions for walk and set orbit center in explore tool 2024-04-17 14:42:54 +02:00
Andrej730 2d937890f0 bump svgfill 2024-04-17 14:42:54 +02:00
ChristophMellueh 84edec0af9 add missing Props request 2024-04-17 14:42:54 +02:00
Dion Moult 02e9cb06b4 You can now flip clipping planes 2024-04-17 14:42:54 +02:00
Dion Moult 3ef4927e55 New clipping planes feature. 2024-04-17 14:42:54 +02:00
Dion Moult d333df8b73 You can now query data about a linked object from a SQLite cache. 2024-04-17 14:42:54 +02:00
Dion Moult 00b356d48d Fix #4279. You can now link in IFCs directly with efficient chunking instead of having to first create blend files 2024-04-17 14:42:54 +02:00
Dion Moult b5c509e893 See #4279. Viewport object culling feature to increase FPS when navigating large models. 2024-04-17 14:42:54 +02:00
Dion Moult c48e167758 New IfcPatch recipe to extract flattened properties and relationships to SQLite for simple queries 2024-04-17 14:42:54 +02:00
Dion Moult 1b48995d95 Fix #4335. Fix compilation error. 2024-04-17 14:42:51 +02:00
patrick.joerg dfa3988674 Small doc change to direct readers to advanced mode 2024-04-17 14:41:52 +02:00
Andrej730 1819b6812e Fix issues with accessing invalid entities in bim.reassign_class #4371
bim.reassign_class wasn't considering that root.reassign_class will also reassign class for occurrences of the same type and was reaccessing invalid elements
2024-04-17 14:41:52 +02:00
Andrej730 69767a7045 type.py - some typing 2024-04-17 14:41:52 +02:00
Andrej730 a99fbbfdd8 reassign_class - cover with tests 2024-04-17 14:41:52 +02:00
Andrej730 1f532491ec fix pass-valid-selected-enumeration.ifc after 5270045
.ifc was failing during test_validate.py
1) Changed schema to rc2 as rc3-4 doesn't have IfcBridgePart
2) PredefinedType and UsageType were mixed up
3) With just `.DECK.` it was failing with error below
```
With attribute:
    <attribute PredefinedType: <select IfcFacilityPartTypeSelect: (<enumeration IfcBridgePartTypeEnum: (ABUTMENT, DECK, DECK_SEGMENT, FOUNDATION, NOTDEFINED, PIER, PIER_SEGMENT, PYLON, SUBSTRUCTURE, SUPERSTRUCTURE, SURFACESTRUCTURE, USERDEFINED)> | <enumeration IfcFacilityPartCommonTypeEnum: (ABOVEGROUND, BELOWGROUND, JUNCTION, LEVELCROSSING, NOTDEFINED, SEGMENT, SUBSTRUCTURE, SUPERSTRUCTURE, TERMINAL, USERDEFINED)> | <enumeration IfcMarinePartTypeEnum: (ABOVEWATERLINE, ANCHORAGE, APPROACHCHANNEL, BELOWWATERLINE, BERTHINGSTRUCTURE, CHAMBER, CILL_LEVEL, COPELEVEL, CORE, CREST, GATEHEAD, GUDINGSTRUCTURE, HIGHWATERLINE, LANDFIELD, LEEWARDSIDE, LOWWATERLINE, MANUFACTURING, NAVIGATIONALAREA, NOTDEFINED, PROTECTION, SHIPTRANSFER, STORAGE, USERDEFINED, VEHICLESERVICING, WATERFIELD, WEATHERSIDE)> | <enumeration IfcRailwayPartTypeEnum: (DILATATIONSUPERSTRUCTURE, LINESIDESTRUCTURE, LINESIDESTRUCTUREPART, NOTDEFINED, PLAINTRACKSUPESTRUCTURE, SUPERSTRUCTURE, TRACKSTRUCTURE, TRACKSTRUCTUREPART, TURNOUTSUPERSTRUCTURE, USERDEFINED)> | <enumeration IfcRoadPartTypeEnum: (BICYCLECROSSING, BUS_STOP, CARRIAGEWAY, CENTRALISLAND, CENTRALRESERVE, HARDSHOULDER, INTERSECTION, LAYBY, NOTDEFINED, PARKINGBAY, PASSINGBAY, PEDESTRIAN_CROSSING, RAILWAYCROSSING, REFUGEISLAND, ROADSEGMENT, ROADSIDE, ROADSIDEPART, ROADWAYPLATEAU, ROUNDABOUT, SHOULDER, SIDEWALK, SOFTSHOULDER, TOLLPLAZA, TRAFFICISLAND, TRAFFICLANE, USERDEFINED)>)>>
Value:
    DECK
Not valid
```
2024-04-17 14:41:52 +02:00
Andrej730 a03f62c97e fix error removing pset from material or profile 2024-04-17 14:41:52 +02:00
Andrej730 f381dce64d fix tests after a971860 2024-04-17 14:41:52 +02:00
Andrej730 b1811b7604 fix errors in tests
they were failing because import_reference_attributes were failing to get docs for unset schema version since ifc file wasn't attached to Blender
2024-04-17 14:41:52 +02:00
Thomas Krijnen ce5b1530e3 Add buffer (bytestring) accessors to material colors - plus small fixes 2024-04-17 14:41:49 +02:00
Thomas Krijnen 5e7156021b Add buffer (bytestring) accessors to geometry data 2024-04-17 13:58:05 +02:00
Andrej730 a86ac68e0c Fix #4365
Allowing to add new properties with None values if should_purge is not set to True (and it's False by default)
2024-04-17 13:41:18 +02:00
Thomas Krijnen 7f37ba2fad convert closed wires to faces prior to processing in svg serializer #4283 2024-04-17 13:41:05 +02:00
Thomas Krijnen a2cc9b1b4d Disable building 3.6.x - due to from __future__ import annotations 2024-04-16 13:28:46 +02:00
Andrej730 7843d20fc8 black format 2024-04-16 13:28:46 +02:00
Andrej730 7e9aead518 show occurrence name function in prefs only for custom name style 2024-04-16 13:28:46 +02:00
Andrej730 0c3a038a44 Fix #4363 2024-04-16 13:28:46 +02:00
Dion Moult 444b284602 Update Makefile 2024-04-16 13:28:46 +02:00
Dion Moult f33b1296e3 Create blender_manifest.toml 2024-04-16 13:28:46 +02:00
Bruno Perdigão a4eeae2872 UI for linked aggregate (#4271)
* initial ui

* changed the group name

* groups counter in ui

* added operators for selection and breaking link in the ui

* small removal

* changed IFC operators to _execute
2024-04-16 13:28:46 +02:00
Bruno Perdigão ed7b337a40 Linked aggregate preserve names (#4135)
* added simples linked aggregate test

* small fix in remove_old_connections function

* added test for refresh linked aggregate

* refresh linked aggregates now preserves the objects original name

* small fix in recreate_connections function

* tests for Refresh Linked Aggregate

* test for Refresh Linked Aggregate after copying an object

* small deletion

* added custom incremental naming

* small fix in tests

* small fix on the number for renaming
2024-04-16 13:28:46 +02:00
Ryan Schultz 0b4a64225b Selects all the instances from selected instances that have different types 2024-04-16 13:28:46 +02:00
Massimo Fabbro bba935940b New button hide all spaces in spatial tool 2024-04-16 13:28:46 +02:00
Massimo Fabbro f85b476bc8 Now generate space and generate spaces from walls are always visible in the UI so users understand better that are different procedures 2024-04-16 13:28:46 +02:00
Andrej730 4ac771a214 Fix #4342 2024-04-16 13:28:46 +02:00
Andrej730 284df2e484 update representation item style on editing/removing shape aspect
Example - https://imgur.com/a/2SxgSRH
2024-04-16 13:28:46 +02:00
Andrej730 dd27107be8 style.assign_representation_styles to replace previously assigned styles
as probably in the most cases user would want 1 style per 1 representation item

After this it's finally possible in BBIM to assign styles to representation items through the materials: https://imgur.com/a/cgiJ1KV
2024-04-16 13:28:46 +02:00
Andrej730 0d251260d8 MaterialCreator - minor refactor for code readibility 2024-04-16 13:28:46 +02:00
Andrej730 8a3934b32b fix error in data.py occurring if object has no material 2024-04-16 13:28:46 +02:00
Andrej730 05aed7036e show error message removing material that is used in material sets
previously it wasn't showing anything when you would try to remove a material
2024-04-16 13:28:46 +02:00
Andrej730 7966ffa2a4 BBIM - update related representations on assigning style to material 2024-04-16 13:28:46 +02:00
Andrej730 17da72232d unassign_material_style to handle constituents 2024-04-16 13:28:46 +02:00
Andrej730 c7ca87f9c4 api.unassign_representation_styles 2024-04-16 13:28:46 +02:00
Andrej730 f22369b960 assigning material styles to reuse existing styled item + tests 2024-04-16 13:28:46 +02:00
Andrej730 46eae7a7d2 assign_representation_styles to reuse existing styled item + tests 2024-04-16 13:28:46 +02:00
Andrej730 cb51b8da49 style.assign_material_style small optimization 2024-04-16 13:28:46 +02:00
Andrej730 31e556c0b2 set previous active style and context values editing material's style 2024-04-16 13:28:45 +02:00
Andrej730 ad33794945 descriptive error for missing user or application in ifc2x3 #4340 2024-04-16 13:28:45 +02:00
Andrej730 ec107d2f7f fixed bug migrating attributes to older ifc version (after 8728fa3) 2024-04-16 13:28:45 +02:00
Andrej730 356c81e80f black format 2024-04-16 13:28:45 +02:00
Andrej730 0077036716 Fix issues editing work time in ifc4x3 #4295 2024-04-16 13:28:45 +02:00
Andrej730 89da2b3b7d IFC4.3 test bootstrap 2024-04-16 13:28:45 +02:00
Andrej730 3dc7951a3e Default Blender filepath hotkeys for .ifc filepath
Example - https://i.imgur.com/Mk6mkuP.png

E.g. alt-click now opens .ifc directory and shift-click opens .ifc with default software associated with .ifc files.

Should be cross-platform but tested only on Windows

Added this code to tool.Blender so it can be reused for other operators invoking file browsing window.
2024-04-16 13:28:45 +02:00
Andrej730 45a23d9371 style.assign_material_style to assign style to related shape aspects 2024-04-16 13:28:45 +02:00
Andrej730 c76a5a7ee7 promote get_shape_aspects to util.element method 2024-04-16 13:28:45 +02:00
Andrej730 c918497df2 get material constituents from cache and filter active element material 2024-04-16 13:28:45 +02:00
Andrej730 eebe7d596d disable editing rep item style if it comes from material constituent through shape aspect 2024-04-16 13:28:45 +02:00
Thomas Krijnen 5c60c2e35b CMakeLists.txt pre 2.37 compat 2024-04-16 13:28:42 +02:00
Ryan Schultz 09f54709e6 deleted extraneous variables 2024-04-16 13:27:40 +02:00
Ryan Schultz 9bfe417cfb Select in any order, when assigning relating_product 2024-04-16 13:27:40 +02:00
Thomas Krijnen e3867a118c IfcConvert --keep-bounding-boxes option, default is now exluded. #4012 #2138 #2044 #4032 2024-04-16 13:27:16 +02:00
Andrej730 3a9c023d33 Fix issue editing object placement that shares it's axis placement with other placements
If multiple object placements were reusing the same IfcAxis2Placement then editing one of them would remove IfcAxis2Placement ignoring it's inverse references making all other object placements invalid.
2024-04-16 11:38:49 +02:00
Andrej730 16eba637f1 fix errors getting layer assignments in ifc2x3 #4330 2024-04-16 11:38:49 +02:00
Andrej730 8b360742a7 sort representation items in ui based on shape aspect
- display shape aspect along with the repsentation type
- sort representation items based on shape aspects name, items without shape aspects come last
2024-04-16 11:38:49 +02:00
Andrej730 ae47de8851 Fix #4319
StringProperty search keyword was introduced only in Blender 3.3
2024-04-16 11:38:49 +02:00
Gorgious56 27349290b7 Fix section cut planes not working anymore on Blender < 4.0.0 2024-04-16 11:38:49 +02:00
krande 288455416b add missing typename 2024-04-16 11:38:46 +02:00
Gorgious56 73ae2b7055 #4308 : Fix section cutaway shader links incorrectly linking when removing a section 2024-04-16 11:38:20 +02:00
Gorgious56 fc2009d000 Fix #4308 : Section cutaway shader : Update API for 4.0 breaking changes + draw line decorator for more than one section cutaway 2024-04-16 11:38:20 +02:00
Andrej730 f522e2beb7 some typing 2024-04-16 11:38:20 +02:00
Andrej730 075b9e4775 Fix bug in ExtractElements recipe adding a lot unrelated products
if you'd add a type product and it had material that were used in bunch of ther products
example - https://community.osarch.org/discussion/1965/error-extracting-ifcslab-or-ifccolumn
2024-04-16 11:38:20 +02:00
Massimo Fabbro 2f75b7edf8 Minor fix 2024-04-16 11:38:20 +02:00
Andrej730 80dcbb2e46 fix bugs in c5c7363a9 2024-04-16 11:38:20 +02:00
Andrej730 1e4693346a fix project name for IfcAdvancedHouse 2024-04-16 11:38:20 +02:00
Andrej730 c706ae0292 UI info message when patch execution was finished 2024-04-16 11:38:20 +02:00
Andrej730 f61738112e ifctester Attribute.filter not to check subtypes attributes
if attribute is already found in the super type
2024-04-16 11:38:20 +02:00
Andrej730 e5b63853ef Fix #4314
It was looking for IFC entities with the attribute from Attribute.name but wasn't considering ifc subclasses that inherit from that entity.
2024-04-16 11:38:20 +02:00
Andrej730 41996daaa7 ifctester - some typing 2024-04-16 11:38:20 +02:00
Andrej730 e5810dbc7c CMake - disable optimization for RelWithDebInfo with ENABLE_BUILD_OPTIMIZATIONS=Off 2024-04-16 11:38:16 +02:00
Andrej730 dea29a3ec7 Fixed #4310 2024-04-16 11:35:32 +02:00
Andrej730 317dbc0ab8 Fix bug removing relating object of IfcRelNests
it was unlinking current collection of the related object and related objects were missing after
2024-04-16 11:35:31 +02:00
Andrej730 e289f23c40 root.remove_product - fix some cases producing invalid ifc #4313
always remove IfcRelNests
1) if product is RelatingObject
2) if product is the only RelatedObject
2024-04-16 11:35:31 +02:00
Ryan Schultz 53cc393697 proposed fix for #4311 2024-04-16 11:35:31 +02:00
Massimo Fabbro 6c9383d968 See #4007. Now clone opening works also when a opening hosts a window or a door 2024-04-16 11:35:31 +02:00
Massimo Fabbro 2a52f0fadd Clone opening now deletes also old opening placement 2024-04-16 11:35:31 +02:00
Massimo Fabbro 65a5c2c1f5 Small refactor clone opening operator in order to better understand and reuse it rebase 2024-04-16 11:35:31 +02:00
Gorgious56 1f10b2415e Assigning an ifc class to an object now displays a message if the object is not in OBJECT mode 2024-04-16 11:35:31 +02:00
Andrej730 e2ef636209 add fallback to the previous schema versions for docs and mappings
before it was breaking part of BlenderBIM UI if we would open IFC4X1 file
2024-04-16 11:35:31 +02:00
Andrej730 7c81633113 bump py version in run-cmake.bat after c0d84713b 2024-04-16 11:35:31 +02:00
Andrej730 8c707f3b48 Fix issue building IfcOpenHouse for IFC4 2024-04-16 11:35:31 +02:00
Andrej730 9560e0b3b2 Fix bug in IfcHierarchyHelper.addRelatedObject
Noticed that `file.addRelatedObject<IfcSchema::IfcRelDefinesByType>(door_style, door);` was resulting in list with `door` assigned as RelatingObject and `door_style` assigned as RelatedObjects.
2024-04-16 11:35:26 +02:00
Andrej730 4418c1327d MergeDuplicateTypes - fix error occuring if ifcopenshell.api is not imported
error was:
File "\site-packages\ifcpatch\__init__.py", line 78, in execute
    patcher.patch()
  File "\site-packages\ifcpatch\recipes\MergeDuplicateTypes.py", line 73, in patch
    self.assign_type(element, original_type)
  File "\site-packages\ifcpatch\recipes\MergeDuplicateTypes.py", line 114, in assign_type
    ifcopenshell.api.run("owner.update_owner_history", self.file, **{"element": types[0]})
    ^^^^^^^^^^^^^^^^
AttributeError: module 'ifcopenshell' has no attribute 'api'
2024-04-16 11:33:55 +02:00
Andrej730 3dd94889fa ifcopenshell installation notion about compiling only specific schemas 2024-04-16 11:33:53 +02:00
Andrej730 070f869932 fix cmake warning with CMP0144 policy
The warning was:
```
CMake Warning (dev) at CMakeLists.txt:299 (find_package):
  Policy CMP0144 is not set: find_package uses upper-case <PACKAGENAME>_ROOT
  variables.  Run "cmake --help-policy CMP0144" for policy details.  Use the
  cmake_policy command to set the policy and suppress this warning.

  CMake variable BOOST_ROOT is set to:

    \IfcOpenShell\_deps\boost_1_74_0

  For compatibility, find_package is ignoring the variable, but code in a
  .cmake module might still use it.
```
2024-04-16 11:32:42 +02:00
Andrej730 c4bf4d7d92 bump required cmake version to remove deprecation warning
deprecation warning:
CMake Deprecation Warning at CMakeLists.txt:20 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.
2024-04-16 11:32:04 +02:00
Andrej730 d82fbcd66c bump python version in windows build dependencies
they seem to switch to .exe from .msi starting from 3.5+, changed amd prefix. Also fixed version parsing line for two digits minor versions
2024-04-16 11:30:23 +02:00
Andrej730 b503463a02 ifcpatch.execute - make input attribute optional
e.g. MergeDuplicateTypes  doesn't use it in the code either way
2024-04-16 11:29:01 +02:00
dependabot[bot] 39eed06e90 Bump fastapi from 0.101.0 to 0.109.1 in /src/opencdeserver/api/app
Bumps [fastapi](https://github.com/tiangolo/fastapi) from 0.101.0 to 0.109.1.
- [Release notes](https://github.com/tiangolo/fastapi/releases)
- [Commits](https://github.com/tiangolo/fastapi/compare/0.101.0...0.109.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-16 11:29:01 +02:00
marwiss b11ca61462 Correct protocol to encrypted HTTPS 2024-04-16 11:29:00 +02:00
marwiss 7ee66de043 Replace existing code in src/opencdeserver with code from the "Kontroll OpenCDE API:s server" POC project on https://github.com/marwiss/Kontroll 2024-04-16 11:29:00 +02:00
Andrej730 10ef4293f3 fixed bug removing representation item
if you'd click on "remove item" button for some item it wouldn't remove the corresponding item but would go for removing active item instead
2024-04-16 11:29:00 +02:00
Andrej730 ad76c3ae82 some refactor for bbim drawings svg serialization
Made some changes to svg serialization code by moving chunks of code so `.generate_linework()` will be easier to read
- moved gathering linework contexts to a separate method
- moved common code for elements serialization to a function
- replaced self.yield_from_iterator(it) with it.__iter__

Functionally code is exactly the same.
2024-04-16 11:28:59 +02:00
Andrej730 7fc8119956 add a note on get_info_2() #4270 2024-04-16 11:28:59 +02:00
Andrej730 182e428452 Fixed #4259
Result of DeepDiff contain ordered sets. Also added fallback for usual sets to lists just in case, should be safe.
2024-04-16 11:28:59 +02:00
Andrej730 7d31791034 Fixed error adding a boolean
It occured if active object was IFC object and second selected object was just Blender object.
2024-04-16 11:28:59 +02:00
Andrej730 6d07a157a9 black format 2024-04-16 11:28:59 +02:00
Andrej730 cdf866dc81 Fix test Model.get_manual_booleans after we added pset to store them 2024-04-16 11:28:59 +02:00
Andrej730 5d020f36d3 Fix #4267 and add tests
Crash was caused by unmark_manual_booleans accessing boolean element after they were deleted from IFC
2024-04-16 11:28:59 +02:00
Andrej730 af593b6663 Update ui.py 2024-04-16 11:28:59 +02:00
Andrej730 1e96df4311 display active representation presentation layer in UI
example - https://i.imgur.com/mpnoqPH.png
2024-04-16 11:28:59 +02:00
Andrej730 e8055ec396 remove_representation to consider representation item's layers too
and purge layers if they are out of items as they become invalid
2024-04-16 11:28:59 +02:00
Andrej730 a4d6b2cab3 Small presentation layers UI fixes 2024-04-16 11:28:59 +02:00
Andrej730 8091b25fcd access layer assignments from inverse attribute instead of going through representation inverses 2024-04-16 11:28:59 +02:00
Andrej730 fd48196bcb test for removing representation items 2024-04-16 11:28:59 +02:00
Andrej730 de63a8086b UI to remove representation items
example - https://i.imgur.com/jJDpIQP.png
2024-04-16 11:28:59 +02:00
Andrej730 5de1dc115c tests for creating shape aspects and adding items 2024-04-16 11:28:59 +02:00
Andrej730 caa1181c02 create new shape aspects from UI
example - https://i.imgur.com/BJJZWrC.png
2024-04-16 11:28:59 +02:00
Andrej730 fcbbeffc01 edit shape aspect attributes from UI
example - https://i.imgur.com/SzUEn6r.png
2024-04-16 11:28:59 +02:00
Andrej730 fb9f830cf0 Fix #4262 after 0da3270c7 2024-04-16 11:28:59 +02:00
Andrej730 ab704aeb01 UI for changing representation item's shape aspect
Example - https://imgur.com/a/tN7hCYz
2024-04-16 11:28:59 +02:00
Andrej730 90a77d3453 geometry.remove_representation documentation 2024-04-16 11:28:59 +02:00
Andrej730 70472787bf operator to remove representation item from shape aspect 2024-04-16 11:28:59 +02:00
Andrej730 bd5c650774 Simple UI to display repr item shape aspect
Example - https://i.imgur.com/YEAE9zU.png
2024-04-16 11:28:59 +02:00
Andrej730 7cb08a93a8 BBIM to print console errors in case IFC file is failed to load 2024-04-16 11:28:59 +02:00
Andrej730 947ae02ab9 black format 2024-04-16 11:28:59 +02:00
Bruno Postle 1136ef374c IfcGit avoid leaving stray .git/config.lock files 2024-04-16 11:28:59 +02:00
Andrej730 5b0528cdbc shape builder docs 2024-04-16 11:28:59 +02:00
Andrej730 6d8de6425f shape builder polyline example and tests 2024-04-16 11:28:59 +02:00
Andrej730 8bbb4cb43b UI for changing styles for representation items
Example - https://imgur.com/a/SQh6rR2
2024-04-16 11:28:59 +02:00
Andrej730 c3ddfbdae2 fix couple building docs errors / warnings 2024-04-16 11:28:59 +02:00
Andrej730 d344923a3c shape builder docs fixes 2024-04-16 11:28:59 +02:00
Andrej730 a28e24d2f5 IFC4 Landscape Library
Created IFC library with simple trees, shrubs and hedges - with both 2d and 3d representations. Example - https://i.imgur.com/pOjh1si.png
Now it's available along with the furniture library when creating new project - https://i.imgur.com/Ho0B5Gn.png
2024-04-16 11:28:59 +02:00
Dion Moult 017b020545 See #4247. Loading models now skips excessively voided objects for performance. 2024-04-16 11:28:59 +02:00
Ryan Schultz 3a14b51fd3 Give user additional feedback when trying to duplicate an IFCproject and Drawing. Also deselects the object to prevent inadvertently moving it. 2024-04-16 11:28:59 +02:00
Dion Moult a47a9ce0ce Fix bug where merging by type when loading broke if a type didn't have a name 2024-04-16 11:28:59 +02:00
Dion Moult 187160347a Fix bug where loading filtered IFC2X3 models didn't work. 2024-04-16 11:28:58 +02:00
Dion Moult 937fd00dba Fix #2719. Indicator whether or not IFC is dirty to help users know when to save. 2024-04-16 11:28:58 +02:00
Dion Moult 1ee2913dd1 See #4241. Only use shapely to repolygonise if IfcOpenShell returns unclosed paths. Hollow cuts typically are closed paths. 2024-04-16 11:28:58 +02:00
Dion Moult 5030023b1b Fix #4239. Stop users from duplicating IfcProject. 2024-04-16 11:28:58 +02:00
Dion Moult b5261e029e Fix regression where you couldn't unlink an object that already had a broken element link, and bug where you couldn't unlink a spatial element or similar with its own collection. 2024-04-16 11:28:58 +02:00
Dion Moult 29b84078ac See #4239. Ensure that all copy pasted objects are unlinked. Use duplicate if you want to copy. 2024-04-16 11:28:58 +02:00
Dion Moult 2308538735 See 0028fd3. Fix regression when duplicating objects without connections. 2024-04-16 11:28:58 +02:00
Andrej730 8ba68d0f0b static ifcopenshell.geom.serializers and some typing for IDE code hints
code itself should work exactly the same way
2024-04-16 11:28:58 +02:00
Thomas Krijnen ce927cfe30 #4216 todo note 2024-04-16 11:28:58 +02:00
Dion Moult 7b7dece5e7 See #4240. Guard against possible user creating invalid userdefined attribute values. 2024-04-16 11:28:58 +02:00
Dion Moult 0d3901336b See #4240. Fix validation issue with perspective drawing pyramid booleans. Boolean clipping results can only be used on swept solids. 2024-04-16 11:28:58 +02:00
Dion Moult 34c6be0f02 See #4240. Fix bug where 2D arbitrary profiles were invalid IFC (used 3D point lists not 2D) 2024-04-16 11:28:58 +02:00
Dirk Olbrich 7806dc1d6a docs: include doxygen-awesome as git submodule 2024-04-16 11:28:55 +02:00
Dirk Olbrich 9f0a781d05 docs: add README with instructions 2024-04-16 11:27:33 +02:00
Dirk Olbrich 15d58e32d1 docs: modify doxygen config to new folder 2024-04-16 11:27:33 +02:00
Dirk Olbrich 03e5d767bd git: clean up gitignore 2024-04-16 11:27:33 +02:00
Dirk Olbrich 05b3a55e08 docs: move C++ API docs to subfolder 2024-04-16 11:27:33 +02:00
Dirk Olbrich b298f24275 docs: include doxygen-awesome theme 2024-04-16 11:27:31 +02:00
Dirk Olbrich 97a261ba54 docs: remove duplicate cmake for Sphinx setup 2024-04-16 11:26:47 +02:00
Dirk Olbrich fcfaa5238e docs: remove geom setting docs and images
- these are duplicated in /src/ifcopenshell-python/docs/ifcopenshell/
2024-04-16 11:26:47 +02:00
Dirk Olbrich d7d1198a1a docs: update doxygen file to 1.9.8 2024-04-16 11:26:47 +02:00
Dirk Olbrich 576bd6742e docs: set LOOKUP_CACHE_SIZE 2024-04-16 11:26:47 +02:00
Dirk Olbrich 3db3e93d87 docs: update Doxyfile to v1.9.4
- specify ./output/doxygen as main path for output
- use relative paths for subfolder output
2024-04-16 11:26:47 +02:00
Dion Moult 02c9aee70b Fix #3947. Do slight 2mm offset to account for Z-fighting on 2D plan views and RCPs. 2024-04-16 11:26:47 +02:00
Dion Moult d1f90db707 Fix #4213. Allow having separate windows to trigger drawing operators. 2024-04-16 11:26:47 +02:00
Dion Moult 3d19d4d319 See #4216. Document using OpenCASCADE geometry serialisation to create geometry. 2024-04-16 11:26:47 +02:00
Dion Moult 1574d8cfba Fix #4221. Only load leaf rows with cost values. Createing a monetary measure with None results in a segfault on Windows. 2024-04-16 11:26:47 +02:00
Dion Moult b67f753596 Fix #4236. Consolidate revert, reload IFC, and reload selected IFC operations.
Reload IFC incrementally (via diff) is moved to the debug panel since it is a dangerous advanced user command.
2024-04-16 11:26:47 +02:00
Dion Moult 4ee0930e05 Fix #4109. Write docs about geometry serialiser. 2024-04-16 11:26:47 +02:00
Dion Moult 6f1cb16107 Fix #4231. Bug where you couldn't add a door to an element assembly. 2024-04-16 11:26:47 +02:00
Andrej730 2268e60036 bbim_translations.py - remove operator context from operator tooltips
noticed editing translations from ui that operator tooltip doesn't appear in ui if tooltips has `msgctxt "Operator"`
2024-04-16 11:26:47 +02:00
Dion Moult 8c692dfbb6 Fix #4127. Bug where IfcTester couldn't save ODS report. 2024-04-16 11:26:47 +02:00
Andrej730 487d07badd fix build error 2024-04-16 11:26:47 +02:00
Andrej730 a936d56bf8 drop bpy related translations.py<->.po stuff as we won't be using it 2024-04-16 11:26:47 +02:00
Andrej730 d1e2009d78 run bbim_translations.py without bpy 2024-04-16 11:26:47 +02:00
Andrej730 b824ab4c4f save just a final dictionary to translations.py instead of tuples
We can do that since In our workflow we won't be converting translations.py to .po files, that way it will be much shorter as it's containing only translated strings and doesn't have strings sources.
2024-04-16 11:26:47 +02:00
Andrej730 3545a5ad4a generate translations.py without bpy 2024-04-16 11:26:46 +02:00
Andrej730 37b8a9bc89 gettext bug fix 2024-04-16 11:26:46 +02:00
Andrej730 6bea964db0 update blenderbim build to include translation data 2024-04-16 11:26:46 +02:00
Andrej730 2f04cb7b6f expose current blender locale in bbim translations ui 2024-04-16 11:26:46 +02:00
Andrej730 acc3a56adb bbim messages parser to also parse gettext 2024-04-16 11:26:46 +02:00
Andrej730 d5249cf45d keep order of strings in .pot as they were parsed and store source filepaths 2024-04-16 11:26:46 +02:00
Andrej730 56f383992a switch to our own string parser instead of blender's 2024-04-16 11:26:46 +02:00
Andrej730 228b7395c8 rename BlenderBIM translation script/addon 2024-04-16 11:26:46 +02:00
Andrej730 30d5141408 allow missing translations.py as not everyone will need translations for BBIM 2024-04-16 11:26:46 +02:00
Andrej730 1b69de2fd4 auto enable "Manage UI Translations" addon if it's not enabled 2024-04-16 11:26:46 +02:00
Andrej730 a3d029f9d9 add without-blender-way to generate translations module from po files
though it does require `bpy` module which is available only for python 3.10.
Actually, `bpy` module by itself is not necessary - we just need `bl_i18n_utils` that becomes available after `import `bpy`. So alternatively we can just download that module from Blender https://projects.blender.org/blender/blender/src/branch/main/scripts/modules/bl_i18n_utils
2024-04-16 11:26:46 +02:00
Andrej730 e1147c1cb8 black format 2024-04-16 11:26:46 +02:00
Andrej730 364c6efc68 check if translation ui is loaded by current Blender session instead of current Blender file
as it's more reliable and thing could change after Blender restart
2024-04-16 11:26:46 +02:00
Andrej730 793eebbdbb expose i18n path in translator UI
removed bim.open_po_directory operator as it's now available just from alt-clicking on the path browsing button
2024-04-16 11:26:46 +02:00
Andrej730 37d6b24e84 Update bbim_setup_translations.py 2024-04-16 11:26:46 +02:00
Andrej730 e76ef4bb73 fix issues with empty paths accepted as valid paths 2024-04-16 11:26:46 +02:00
Andrej730 1435207ab6 separate developer/translator ui 2024-04-16 11:26:46 +02:00
Andrej730 41b9000401 generate pot file too converting translations.py 2024-04-16 11:26:46 +02:00
Andrej730 94b1a1ba4e change test addon name from localization_test 2024-04-16 11:26:46 +02:00
Andrej730 b34882e6d1 semi-automatic setup for necessary directories 2024-04-16 11:26:46 +02:00
Andrej730 4a0625e730 register translations dict only if addon is already loaded 2024-04-16 11:26:46 +02:00
Andrej730 3973a6ab4d open .po directory operator 2024-04-16 11:26:46 +02:00
Andrej730 b9ecc394cf Operator to disable BBIM and restart Blender
as it's needed to reload the translations

Update bbim_setup_translations.py

Update bbim_setup_translations.py
2024-04-16 11:26:46 +02:00
Andrej730 b3990e7267 convert setup_translations to blender addon for UI 2024-04-16 11:26:46 +02:00
Andrej730 f8ca92279d monkey patch blender's dump_addon_messages
The way blender gather messages to translate is:
1) disable the addon
2) parse all available strings
3) enable the addon
4) parse all strings available strings again and subtract the ones gathered at step 2.

But due Blender bug (https://projects.blender.org/blender/blender/issues/116579) not all addon parts unregistered at step 1, so some addon's strings left out and gathered at step 2 and then subtracted at step 4. At the end, we loose them and they will be missing from resulting translations files.

I've monkey patched dump_addon_messages so it now works a bit more safe:
0) It expects addon to be disabled and Blender restarted after
1) Gather all Blender strings
2) Enable addon
3) Gather all Blender strings again and subtract strings from step 1.
2024-04-16 11:26:46 +02:00
Andrej730 e9078453eb setup_translations - original dump_addon_messages
same as with dump_py_messages - this commit is needed to track monkey patch changes later on
2024-04-16 11:26:46 +02:00
Andrej730 df41f541de fix error converting translations to .po if .po files already exist 2024-04-16 11:26:46 +02:00
Andrej730 a2ea7bf1d8 monkey patch dump_py_messages to ignore blenderbim dependencies 2024-04-16 11:26:46 +02:00
Andrej730 a4be606a37 setup_translations - original dump_py_messages
as we're going to monkey patch it and this commit is needed to keep the history of changes
2024-04-16 11:26:46 +02:00
Andrej730 4342a03246 update translations in current blender session 2024-04-16 11:26:46 +02:00
Andrej730 b0c0839d3e setup_translations.py - use just 1 directory to store .po files
and use temp directory to store .po files for ui_translate.export/import
2024-04-16 11:26:46 +02:00
Andrej730 fd01d71d2c fixed typo 2024-04-16 11:26:46 +02:00
Andrej730 3046f2f207 BBIM - register translation strings #889 2024-04-16 11:26:46 +02:00
Andrej730 0371c2c74e BBIM script to reload/export/import translation strings #889 2024-04-16 11:26:46 +02:00
Ioannis P. Christovasilis bb05e51a92 ifc2ca major update - todo: update readme file 2024-04-16 11:26:46 +02:00
Vukas Pajic 9a117ce502 Fix #4226 2024-04-16 11:26:46 +02:00
Eduardo Schilling 144f028c84 Roof slope as percentage property 2024-04-16 11:26:46 +02:00
Dion Moult 881f38e163 Fix #4227. Add shapely as an optional dependency for IOS-Python 2024-04-16 11:26:45 +02:00
Thomas Krijnen 658095ea29 #4222 template kw 2024-04-16 11:26:45 +02:00
Thomas Krijnen 1764741027 #4220 weakref to file 2024-04-16 11:26:37 +02:00
Thomas Krijnen eb35b88a1e #4220 Update file.py 2024-04-16 11:26:37 +02:00
Dion Moult f2fab06438 Fix #4089. Document support for Linux AArch64 on Conda. 2024-04-16 11:26:37 +02:00
Dion Moult 1fbc770775 Fix #4211. Minor documentation fix that clarifies upstream bug about whether qto can be assigned to types. 2024-04-16 11:26:37 +02:00
Dion Moult d6074fa6d6 Fix #4223. Basic lint error. 2024-04-16 11:26:36 +02:00
Dion Moult aafda4e787 Fix #4224. Fix sequencing lint bugs. 2024-04-16 11:26:36 +02:00
Dion Moult 36f2448234 Fix #4219. Update documentation for creating a new model. 2024-04-16 11:26:36 +02:00
Bruno Postle 616d23d804 IfcGit fixes suggested by ruff 2024-04-16 11:26:36 +02:00
Andrej730 44c9aee727 BBIM - upgrade to IFC4X3 on loading projects
Added "Upgrate to IFC4X3" button on loading new projects to migrate them to IFC4x3 as Ifc4x3 got approved now will be used more widely.

https://i.imgur.com/mHSIV7T.png
2024-04-16 11:26:36 +02:00
Andrej730 e841d6ee3a Migrator - basic support for migrating attributes ifc4 -> ifc4x3
And added one of the IfcProperty renamed attribute as an example
2024-04-16 11:26:36 +02:00
Dion Moult 8be42ced69 Fix #4139. Bulk purge orphaned classes and move advanced operators to debug panel. 2024-04-16 11:26:36 +02:00
Andrej730 f8d38b11e6 Migrator - display some error message for unhandled schemas
Noticed it was resulting in error below migrating to IFC4X3 in some cases as we don't have a mapping for IFC4X3 yet.
```
    if value is None and not attribute.optional():
UnboundLocalError: local variable 'value' referenced before assignment
```
2024-04-16 11:26:36 +02:00
Andrej730 30b51b93af black format 2024-04-16 11:26:36 +02:00
Thomas Krijnen 2aa048d0c9 #4220 Update entity_instance.py 2024-04-16 11:26:36 +02:00
Andrej730 dab051dd85 minor fix for bim.create_all_shapes printed messages 2024-04-16 11:26:36 +02:00
Dion Moult 07241649e4 Fix #4173. Don't recreate boundaries of building elements that already exist.
Inline opening processing. Minor improvement to detecting attributes for int/ext and physical/virtual.
2024-04-16 11:26:36 +02:00
Dirk Olbrich 54df646398 readme: fix listed ifc version, add link to IFC4x3 docs 2024-04-16 11:26:36 +02:00
Dion Moult a3c87f1b0e Fix #4195. Forgot to add UI for contains selector. 2024-04-16 11:26:36 +02:00
Dion Moult b0a4e8c8e4 See #4173. Prototype new approach to generating 1st level space boundaries. 2024-04-16 11:26:36 +02:00
mohamadalbaaj 6f7be74e7c Fixing Dimension Mismatch in Matrix Multiplication 2024-04-16 11:26:36 +02:00
Dion Moult 65c00f75dd Minor test fix 2024-04-16 11:26:36 +02:00
Dion Moult c8456532ad Fix bug where UI didn't show applicable psets to specific predefined types 2024-04-16 11:26:36 +02:00
Dion Moult 608147c245 Fix #4195. Fix regressions from f840da3 and add support for "contains string" comparisons. 2024-04-16 11:26:36 +02:00
Dion Moult a9857f867c Fix #4196. Settings are now saved when you save Spreadsheet export JSON files. Also a new setting to generate an SVG alongside the spreadsheet (intended to be used as a schedule placed on a sheet). 2024-04-16 11:26:36 +02:00
Dion Moult c60ad6b8a0 Minor fix 2024-04-16 11:26:36 +02:00
Dion Moult 54bf41816b Fix #4197. URLs in SVG schedules are now clickable. 2024-04-16 11:26:36 +02:00
Dion Moult 6846021768 Fix #4199. Bug where external references on sheets weren't properly referenced leading to no names. 2024-04-16 11:26:36 +02:00
Dion Moult 33051c0139 Fix #4203. Fix bug where removing nested cost items left orphaned relationships. 2024-04-16 11:26:36 +02:00
Dion Moult d530d34441 Fix #4204. Add support for XLSX schedules on sheets. 2024-04-16 11:26:36 +02:00
Christoph Mellueh 062822502f sort code alphabetically 2024-04-16 11:26:36 +02:00
Christoph Mellueh 04afbce3a8 improve core file for better zen 2024-04-16 11:26:36 +02:00
Christoph Mellueh 0005f15364 update BsDD to match new API
+ move Functions from operator to core/tool
2024-04-16 11:26:36 +02:00
Dion Moult a91c76b25c Fix #4198. Minor regression in updating text literals. 2024-04-16 11:26:36 +02:00
c4rlosdias 43259c0124 Added more comparisons in search 2024-04-16 11:26:36 +02:00
sennhvi fd657f2b6f Update geometry_processing.rst
Add an usage example of the parameter include  for the Geometry Iterator
2024-04-16 11:26:36 +02:00
Christoph Mellueh 2dfd1cae6d add pset view to groups 2024-04-16 11:26:35 +02:00
Sigma Dimensions (Yass) e81bd9723f fix counting elements when importing cost schedules ( and run black) 2024-04-16 11:26:35 +02:00
Dion Moult 7e262c5c9a Fix #4186. Support different RL insertion modes when adding occurrences of a type. 2024-04-16 11:26:35 +02:00
Dion Moult f55b7d439f Fix bug where updating type text literals didn't propagate and formatting rounding null values wasn't handled. 2024-04-16 11:26:35 +02:00
Dion Moult 35eda76ffd Fix #4189. Hidden or non-isolated objects now don't show annotations. 2024-04-16 11:26:35 +02:00
Christoph Mellueh 9ea086bdc3 add typing to BsDD 2024-04-16 11:26:35 +02:00
Christoph Mellueh 4c382760d4 add deprecation warnings 2024-04-16 11:26:35 +02:00
Christoph Mellueh 7f1a997797 update new api to BsDD 2024-04-16 11:26:35 +02:00
Dion Moult 8ce2b4d2d7 Fix #4162. Reduce minimum area requirement for auto space generation down to 0.1sqm. 2024-04-16 11:25:27 +02:00
Dion Moult 20e599ca05 See #4162. Fix bug with generating space from cursor due to numerical inaccuracies and colinear lines for shapely. 2024-04-16 11:25:27 +02:00
Dion Moult 009d1a0aba Add support for groups in selection queries 2024-04-16 11:25:27 +02:00
Dion Moult 1c573aee32 Fix #4175. Add new UI for managing IFC object and edit modes. 2024-04-16 11:25:27 +02:00
Andrej730 0a09c2d8ea Fix breaking spatial containers UI when spatial container is deleted
E.g. if you had some container selected in `active_container_id` and then it got deleted UI would break and won't allow to reload the spatial manger until you reload .ifc completely
2024-04-16 11:25:27 +02:00
Christoph Mellueh 9a194939cd turn list into tuple 2024-04-16 11:25:27 +02:00
Dion Moult c508c94719 Fix #4161. Deprecate unmaintained barebones LCA module. 2024-04-16 11:25:27 +02:00
Eduardo Schilling bcce268900 Add degrees format display 2024-04-16 11:25:27 +02:00
Eduardo Schilling 997803c4b2 Add stair calculated parameter Pitch 2024-04-16 11:25:27 +02:00
Dion Moult 583f3e30d7 Fix #4167. Bug where pset template module didn't allow creating qto template types. 2024-04-16 11:25:27 +02:00
Dion Moult 1591ad28bc Minor fix to loading nested ports 2024-04-16 11:25:27 +02:00
Dion Moult f7aafb6cac Fix #4176. Bug where tabbed interface didn't work on new or temporary screens. 2024-04-16 11:25:27 +02:00
Dion Moult 19f03639ee Fix #4178. Bug when removing the wrong classification reference. 2024-04-16 11:25:27 +02:00
Sigma Dimensions (Yass) 63e3786354 add conversion based unit symbols 2024-04-16 11:25:27 +02:00
Thomas Krijnen a5f3f8c465 IfcParseExamples requires C++17 now 2024-04-16 11:25:27 +02:00
Thomas Krijnen aca4b4f957 Generalize shortened file.schema attribute 2024-04-16 11:25:27 +02:00
CyrilWaechter 97072972f8 IfcRelSpaceBoundary: Add error handling and better error message for user 2024-04-16 11:25:27 +02:00
Sigma Dimensions (Yass) a2eef4995c fix resource cost calculation 2024-04-16 11:25:27 +02:00
Sigma Dimensions (Yass) e58495161b Record formula and resource name for cost values when calculating resource cost 2024-04-16 11:25:27 +02:00
Sigma Dimensions (Yass) bf2027ff96 fix cost value calculation when using parent cost 2024-04-16 11:25:27 +02:00
Sigma Dimensions (Yass) 80b7267e5e Display cost value names, and add import operator for cost schedule panel 2024-04-16 11:25:27 +02:00
CyrilWaechter 54fdfe2905 IfcRelSpaceBoundary: Create almost all boundaries for a selected space
* Refactor boundary creation to allow usage in a loop.
* Loop through all building element in building storey instead of stopping to the first one
* Enforce checking to prevent creation of invalid boundary geometries
2024-04-16 11:25:27 +02:00
CyrilWaechter 1c282e6828 Fix some url and add missing ones 2024-04-16 11:25:27 +02:00
CyrilWaechter b53b7f2f0c Bump IOS and use more update friendly url 2024-04-16 11:25:27 +02:00
CyrilWaechter 331d7e87bb Add python 3.11 to blenderbim build matrix 2024-04-16 11:25:27 +02:00
CyrilWaechter ee79bae426 black boundary operator.py 2024-04-16 11:25:27 +02:00
CyrilWaechter 6dd7c8103a IfcRelSpaceBoundary: make sure parent boundary is whole 2024-04-16 11:25:26 +02:00
CyrilWaechter e2a01fcb52 IfcRelSpaceBoundary: Improve inner boundary generation workflow and boundary names
# Inner boundaries
Some software or workflow generates many opening for the same element (eg. window) so it is not relevant to create inner boundaries for opening with no filling.

# Boundary name
Apply convention for 1st and 2nd Level boundaries
2024-04-16 11:25:26 +02:00
Kristoffer Andersen d169991e13 Update meta.yaml
pin swig version for conda
2024-04-16 11:25:26 +02:00
Thomas Krijnen 2948d08c1d C++ get_psets() with extensive preprocessor trickery 2024-04-16 11:25:24 +02:00
Thomas Krijnen ebd995d98d Update src/ifcopenshell-python/docs/ifcopenshell-python/geometry_processing.rst 2024-04-16 11:17:58 +02:00
wangsenhui c6f7417ce8 add geometry processing with multiple representations example 2024-04-16 11:17:58 +02:00
wangsenhui 6084354932 add geometry processing with multiple representations example 2024-04-16 11:17:58 +02:00
wangsenhui 73f81b18fd add geometry processing with multiple representations example 2024-04-16 11:17:58 +02:00
Thomas Krijnen 2db6e0193f p21 binary should be uppercase 2024-04-16 11:17:56 +02:00
Andrej730 6baf3da67a ifctester - added some typing for IDE type hints 2024-04-16 11:17:07 +02:00
Andrej730 3008599eec Clean up IfcIndexedColourMap removing representation #4138
Because we wasn't removing colour map, remove_representation was producing orphaned IfcPolygonalFaceSet that were referred by colour map.
2024-04-16 11:17:07 +02:00
Ryan Schultz 7df5ef6cd6 Applying multiple opening objects in bulk
Merry Christmas.
2024-04-16 11:17:07 +02:00
Andrej730 0980075c88 ifcpixeltexture tests to reflect actual order of data 2024-04-16 11:17:07 +02:00
Andrej730 5cae82cded Fixed issue with flipped ifcblobtexture loaded to blender 2024-04-16 11:17:07 +02:00
Andrej730 f409883536 save ifcblobtexture and ifcpixeltexture to .blend file 2024-04-16 11:17:07 +02:00
Andrej730 796dddaa7a Fixed issue changing type of object creating opening in an aggregate
More: https://community.osarch.org/discussion/1888/error-after-trying-to-change-a-window-type-whose-opening-is-applied-to-an-aggregate#latest

A bit related to #3973 in case if it will be resolved
2024-04-16 11:17:07 +02:00
Andrej730 7f4c3d629b Note on not allowing aggregates with representation #3973 2024-04-16 11:17:07 +02:00
Andrej730 a1e5aeb00a expose assign/unassign aggregation hotkey to bim tool ui 2024-04-16 11:17:07 +02:00
Andrej730 8a1149f0de Fix a few uses of assigning/unassigning agregation after 165262933 2024-04-16 11:17:07 +02:00
dushyant basson 21f741667e Using transformation-matrix data; Turned off world-coords; Re-using geometry of repeating IDs 2024-04-16 11:17:07 +02:00
dushyant basson 904c0c6b06 initial camera-orientation; multiple materials in a single element; default material used from IfcGeom; improved triangle node data generation for OSG 2024-04-16 11:17:07 +02:00
dushyant basson d91fa87dd8 update 2024-04-16 11:17:07 +02:00
dushyant basson e513e63d9a IFC file successfully parsed and loaded in Qt OpenGL widget 2024-04-16 11:17:07 +02:00
dushyant basson 3bb8bd5000 added header-guard 2024-04-16 11:17:07 +02:00
dushyant basson 6e7a43409e debug messages 2024-04-16 11:17:07 +02:00
dushyant basson ccb8135bb4 update 2024-04-16 11:17:06 +02:00
dushyant basson c7effd2498 Implemented: Application icons; OpenSceneGraph to handle OpenGL with Qt; devicePixelRatio() for handing render on highDPI displays; Sample 3D with handler; MouseHandler not yet working as expected (WIP) 2024-04-16 11:17:06 +02:00
Dushyant Basson 341e68907f updated .ico file 2024-04-16 11:17:06 +02:00
dushyant basson 22b953aba8 add application file icon for macos 2024-04-16 11:17:06 +02:00
Dushyant Basson 7bd08468d6 application file-icon and window-icon set on ms-windows 2024-04-16 11:17:06 +02:00
dushyant basson d4ad055e9b Removed .clangd file from tracking and added it to .gitignore 2024-04-16 11:17:06 +02:00
dushyant basson 4dda73b7bb Removed .clangd file from tracking and added it to .gitignore 2024-04-16 11:17:06 +02:00
dushyant basson 86157f1e15 adding qt resources 2024-04-16 11:17:06 +02:00
Sigma Dimensions (Yass) 6660ee3788 New Clash management panel to load IFCClash collision results 2024-04-16 11:17:06 +02:00
Sigma Dimensions (Yass) e87e53f840 fix smart clash group selection 2024-04-16 11:17:06 +02:00
Andrej730 6b7936c0ce Fix typo in 92cf0d9 2024-04-16 11:17:06 +02:00
Andrej730 994358c50d Support loading styles with IfcPixelTexture 2024-04-16 11:17:06 +02:00
Andrej730 6130f23a1a Allow copying node graphs for external shaders on Blender 4.1+ #3876 2024-04-16 11:17:06 +02:00
Andrej730 0fb2a7e5ec remove_representation not to leave brokens refs with batch_remove #4138 2024-04-16 11:17:06 +02:00
Andrej730 baf00b5b48 Purge IfcWindow/DoorStyle/IfcTypeProduct #4137 2024-04-16 11:17:06 +02:00
Sigma Dimensions (Yass) 38502734e8 consider unit basis for calculating resource costs #4122 2024-04-16 11:17:06 +02:00
Andrej730 d03e3a33b5 Fix issue renaming objects first time project was loaded after 962b8fa
E.g. if you load a project and try to rename some element to "test" it will renamed to "test" instead of "IfcWindow/test" e.g.

Since we relid on `obj.name` handler to set `.is_renaming` back to `False`, it didn't set it back to False when project was just loaded and renamed object was not yet linked to ifc element and name handler is not yet setup.

Another option was to check whether object is linked before changing `is_renaming` but just setting it to False should be more more explicit.
2024-04-16 11:17:06 +02:00
Andrej730 50e568b706 prefix bim.assign/unassign_object to avoid operator override #4099
Co-Authored-By: Bruno Perdigão <57102715+brunoperdigao@users.noreply.github.com>
2024-04-16 11:16:59 +02:00
Andrej730 9e3b3aca42 Fix for 308457300
Co-Authored-By: Bruno Postle <bruno@postle.net>
2024-04-16 11:16:59 +02:00
ay-ex c2b67ac665 fix cmake regex for used blender python version 2024-04-16 11:16:59 +02:00
Andrej730 652c402d37 Temp disable setting paint_active_slot from external materials #4129 2024-04-16 11:16:59 +02:00
Andrej730 e907951952 Less console errors if failed to find external styles library
Now:
```
Error: Error loading external style - cannot find file: 'D:\Dropbox\GitHub\OD_Textures\Closed (Encrypted)\Materials.blend'
```

Before:
```
File "\blenderbim\bim\module\style\prop.py", line 250, in update_shading_style
Error: Error loading external style - cannot find file: 'D:\Dropbox\GitHub\OD_Textures\Closed (Encrypted)\Materials.blend'
Traceback (most recent call last):
  File "\blenderbim\bim\module\style\prop.py", line 255, in update_shading_style
    bpy.ops.bim.activate_external_style(material_name=blender_material.name)
  File "L:\Games\SteamLibrary\steamapps\common\Blender\4.0\scripts\modules\bpy\ops.py", line 109, in __call__
    ret = _op_call(self.idname_py(), kw)
RuntimeError: Error: Error loading external style - cannot find file: 'D:\Dropbox\GitHub\OD_Textures\Closed (Encrypted)\Materials.blend'
```
2024-04-16 11:16:59 +02:00
krande 747c32b9b2 remove ci-py-only.yml as ci.yml already does this 2024-04-16 11:16:57 +02:00
krande f73a438d38 add test and update ci 2024-04-16 11:16:40 +02:00
krande c031ffc4b4 update ci 2024-04-16 11:16:40 +02:00
krande 2f3bfb340b add fix for ci tests 2024-04-16 11:16:38 +02:00
krande 680f075b1b remove ifc2x3 conditional in conversion utility 2024-04-16 11:16:08 +02:00
krande 5a61173052 update name of function to make its purpose more clear 2024-04-16 11:16:08 +02:00
krande 187da13de8 update unit_assignment 2024-04-16 11:16:08 +02:00
krande 5c75cc6a39 initial proposal for updating units conversion 2024-04-16 11:16:08 +02:00
Andrej730 c9200fb73c Fix #4124 2024-04-16 11:16:08 +02:00
Sigma Dimensions (Yass) 37b282d330 Fix CSV workschedule import - handle date-related attributes more gracefully 2024-04-16 11:16:08 +02:00
Sigma Dimensions (Yass) 7f4ab61b8a fix displaying derived task durations 2024-04-16 11:16:08 +02:00
Thomas Krijnen 6309122516 nix build-all: don't strip non-release wrapper builds 2024-04-16 11:16:08 +02:00
Bruno Postle c55092f234 BlenderBIM IFC Git set push.autoSetupRemote
When pushing to a remote repository set tracking for the current branch
so that a locally created repository behaves the same (on the
command-line) as a cloned repository
2024-04-16 11:16:08 +02:00
Andrej730 8b69bf00f6 test for loading ifc with blob textures 2024-04-16 11:16:08 +02:00
Andrej730 f526819ef3 test for loading ifc style to blender material 2024-04-16 11:16:08 +02:00
Andrej730 e676c836c9 BBIM to support loading IfcBlobTexture 2024-04-16 11:16:08 +02:00
Andrej730 c02e0a5b01 support to add all surface style types creating new IfcSurfaceStyle
Previously it was working only for shading styles, for other styles it worked but then produced errors as IfcSurfaceStyle.Styles end up being None.
2024-04-16 11:16:08 +02:00
Dion Moult 25552163b5 Patch recipes can now be performed in-place and are sorted in the UI. 2024-04-16 11:16:08 +02:00
Dion Moult 7baffef9de Add support for manual classifications and references 2024-04-16 11:16:08 +02:00
Andrej730 37a7c8a41f disable rel paths for adding ref images and textures with unsaved .ifc 2024-04-16 11:16:08 +02:00
Andrej730 35fbd3363d Fixed issues using relative paths for external styles
- removed redundant notion about saving .blend file
- relative paths were saved incorrectly
- fix issue using "bim.browse_external_style" if IfcSurfaceStyle already has external style and it's either .blend file or material in it is missing (it was failing opening file browser)
2024-04-16 11:16:08 +02:00
Andrej730 863ed5f002 small error message fix
as it appears as one of the messages during .ifc load, that way it will be more clear that it's related to external styles
2024-04-16 11:16:08 +02:00
Andrej730 c60fed8b58 Fix issue BrowseExternalStyle not selecting current external style in file manager 2024-04-16 11:16:08 +02:00
Andrej730 1251a7838a Pull all shading related material attributes from external styles #4053 2024-04-16 11:16:08 +02:00
Dion Moult 77bc031800 New SetWorldCoordinateSystem patch. Autodesk software is starting to pay attention to this attribute which I find really confusing. 2024-04-16 11:16:08 +02:00
Dion Moult 83a12ea7f9 Nesting collections only generate for element nesting, not port nesting 2024-04-16 11:16:07 +02:00
Andrej730 ab47291760 Support editing IfcSurfaceStyleLighting in UI 2024-04-16 11:16:07 +02:00
Andrej730 eb30b30186 style.edit_surface_style to support editing IfcSurfaceStyleLighting
It was failing because api method wasn't supporting IfcColourRgb attributes edit in general but only for IfcSurfaceStyleShading.SurfaceColour
2024-04-16 11:16:07 +02:00
Andrej730 3034d88a89 Support editing IfcSurfaceStyleRefraction in UI 2024-04-16 11:16:07 +02:00
Andrej730 fcd7d4186d Hide IfcStyledItem from bim.print_unused_elements_stats
as IfcStyledItem can be not referred by any other element and it doesn't mean it's not used in the project
2024-04-16 11:16:07 +02:00
Andrej730 b6b0e958b5 style.add_surface_texture to work without blender material provided 2024-04-16 11:16:07 +02:00
Bruno Postle 343589f1c0 Fix Clipping divide error (reported in #4057) 2024-04-16 11:16:07 +02:00
Andrej730 6bbb509c09 data.py rename for consistency 2024-04-16 11:16:07 +02:00
Andrej730 128afc53f0 Remove old external styles UI from material in favor of general styles UI
Adding external styles from other styles now also moved to general styles UI - https://i.imgur.com/uEyjKVY.png
2024-04-16 11:16:07 +02:00
Andrej730 67ec30582f Fix after 2520a9305 2024-04-16 11:16:07 +02:00
Andrej730 33c771bc3d Fixed #4105 2024-04-16 11:16:07 +02:00
Carlos Dias bf3c1d4044 Update __init__.py
Fix bug
2024-04-16 11:16:07 +02:00
Thomas Krijnen e2543b4374 Update build-all.py - py vers 2024-04-16 11:16:05 +02:00
Andrej730 43920f3c81 Override some more blender scene panels #3842 2024-04-16 11:12:08 +02:00
Andrej730 0b594f69b0 Fix issues unregistering overridden panels
Previously overridden scene panels were removed but original panels were not restored.
Also added condition check for Blender version to generate list of panels to override, so we won't miss any errors using `try - except`.
2024-04-16 11:12:08 +02:00
Andrej730 8c4bcc22a1 Procedural override for default blender panels, hide keying panels #3842
also fixed the issue with default scene panels that were parented to other panels - because we didn't change `bl_parent_id` the panel structure for them was broken.
2024-04-16 11:12:08 +02:00
Bruno Postle 26d42bf14e BlenderBIM user docs update after 6452872 2024-04-16 11:12:08 +02:00
Andrej730 6dfeadf193 Fixed issues with linked elements from linked blend files #4081
In #4081 reported the case when during redo (changing param in operator's popup) `Ifc.rebuild_element_maps` was relinking elements without discarding possible linked blender libraries. It end up accidentally linking some library's objects to the current Ifc file leading to errors.

Also fixed possible similar issue in couple other places.
2024-04-16 11:12:08 +02:00
Andrej730 e926547c92 test for tool.Blender.copy_node_graph #3876 2024-04-16 11:12:08 +02:00
Dion Moult 6dcc8c2a5a Fix #4085. Classification reference URIs now have a button you can jump to that link. 2024-04-16 11:12:08 +02:00
Dion Moult e40336be2a Fix #4086. Add support for non predefined bSDD pset and qto values. 2024-04-16 11:12:08 +02:00
Dion Moult e469886cdd Fix #4092. Minor bug with bad detection of text literals when switching geometry. 2024-04-16 11:12:08 +02:00
Dion Moult 4d20c20cb6 Fix #4090. Bug where profile set generator didn't accommodate optional axes. 2024-04-16 11:12:08 +02:00
Andrej730 83c9d70991 Fix reference images import after styles ui change 2024-04-16 11:12:08 +02:00
Andrej730 b92ab2c85c Representation Items UI - replace icon for active style
Now it's more consistent because we use the same icon is Styles UI
2024-04-16 11:12:08 +02:00
Andrej730 32c1f20eb3 style.edit_surface_style - fix crash setting attribute to None
Occured on setting IfcColourOrFactor attribute to None (e.g. DiffuseColour).
2024-04-16 11:12:08 +02:00
Andrej730 fa31e10a77 Styles UI - moved UI from shader graph N-panel to Styles UI #3912
Moved all shading style and textures parameters from shader-graph N-panel to general Styles UI. Shader graph now also update in real time on any prop changes in Styles UI.

Now there is practically no need to switch to shader graph to edit styles shaders - all parameters are available from the Styles UI. That also allows you to edit styles and see the results in viewport even if the edited style is not the one that's currently active.

small demo - https://imgur.com/a/i2suoZw
2024-04-16 11:12:08 +02:00
Martin15135215 d0c68d3f5b add cff for ifcsverchok 2024-04-16 11:12:08 +02:00
Martin15135215 2b49c6e752 add cff for serializers 2024-04-16 11:12:08 +02:00
Martin15135215 9ecc264e19 add cff for qtviewer 2024-04-16 11:12:08 +02:00
Martin15135215 5744c3a821 add cff for ifcwrap 2024-04-16 11:12:08 +02:00
Martin15135215 9ab54425b4 add cff for ifctester 2024-04-16 11:12:08 +02:00
Martin15135215 46f7241da5 add cff for ifcpatch 2024-04-16 11:12:08 +02:00
Martin15135215 5bec6c8e99 add cff for ifcparse 2024-04-16 11:12:08 +02:00
Martin15135215 55227daf17 add cff for ifcopenshell-python 2024-04-16 11:12:08 +02:00
Martin15135215 f9ea887de3 add cff for ifcmax 2024-04-16 11:12:08 +02:00
Martin15135215 c8b9a1bd37 add cff for ifcjni 2024-04-16 11:12:08 +02:00
Martin15135215 47e4c6c22b add cff for ifcgeom_schema_agnostic 2024-04-16 11:12:02 +02:00
Martin15135215 b844260e13 add cff for ifcgeom 2024-04-16 11:10:59 +02:00
Martin15135215 05a7392c1a add cff for ifcfm 2024-04-16 11:10:59 +02:00
Martin15135215 bb0feeab01 add cff for ifcdiff 2024-04-16 11:10:59 +02:00
Martin15135215 ae38d5053a add cff for ifccsv 2024-04-16 11:10:59 +02:00
Martin15135215 9b2b808ff3 add cff for ifcconvert 2024-04-16 11:10:59 +02:00
Martin15135215 76ec22d85c add cff for ifcclash 2024-04-16 11:10:59 +02:00
Martin15135215 a557a80228 Add cff for ifccityjson 2024-04-16 11:10:59 +02:00
Martin15135215 ea4b23d6a3 add cff for ifcblender 2024-04-16 11:10:59 +02:00
Bruno Perdigão 44bffc8672 add_aggregate now add the empty using the 3d cursor location 2024-04-16 11:10:59 +02:00
Ryan Schultz b847656e69 Added classification to selector 2024-04-16 11:10:59 +02:00
c4rlosdias c71ff5fb10 Update Load bSDD domains 2024-04-16 11:10:58 +02:00
Dirk Olbrich caab8f8036 bbim-docs: add interface property editor section
- add stubs for each sub-tab
2024-04-16 11:10:58 +02:00
Dirk Olbrich 8a218249dd bbim-docs: use figure with caption instead of plain image 2024-04-16 11:10:58 +02:00
Dirk Olbrich 76f25c755b bbim-docs: update workspace doc for sidebar panels 2024-04-16 11:10:58 +02:00
Dion Moult 401db55c55 Implement support for managing nest hosts and components. 2024-04-16 11:10:58 +02:00
Bruno Perdigão 302dc8eb9f added report messages 2024-04-16 11:10:58 +02:00
Bruno Perdigão 2fb8fafbb4 added the option to refresh different groups of linked aggregate 2024-04-16 11:10:58 +02:00
Bruno Perdigão f859c06858 bugfix in recreate_aggregate 2024-04-16 11:10:58 +02:00
Bruno Perdigão b2cb907599 Refresh Linked Aggregate now handles multiple selection 2024-04-16 11:10:58 +02:00
Bruno Perdigão 172ea49e30 merged the branch 'improvements-on-override-duplicat' 2024-04-16 11:10:58 +02:00
Bruno Perdigão 1d51244205 moved 'recreate_assembly' to tool/root.py 2024-04-16 11:10:58 +02:00
Bruno Perdigão e25948bd03 added more tests 2024-04-16 11:10:58 +02:00
Bruno Perdigão b21b0751fa added test scenario for duplicating an aggregate 2024-04-16 11:10:58 +02:00
Bruno Perdigão 3569780f06 recreates assembly for array children objects 2024-04-16 11:10:58 +02:00
Bruno Perdigão 4d2b2ae5d2 Duplication now recreates connections path #3770 2024-04-16 11:10:58 +02:00
Bruno Perdigão e5a6e0f761 small deletions 2024-04-16 11:10:58 +02:00
Bruno Perdigão 1366c3bed9 ifc_duplicate_operator now remove the connections with old objects. Similar solutions presented in PR #3789 2024-04-16 11:10:58 +02:00
Bruno Perdigão 55962692bb Fix #2187. ifc_duplicate_operator now recreates the IfcElementAssembly structure into a new Assembly 2024-04-16 11:10:58 +02:00
Bruno Perdigão d1eddb751b Groups are only added to the parent. Parts now have a pset with index 2024-04-16 11:10:58 +02:00
Bruno Perdigão 5381bf7e48 removed the pset and added group to all elements 2024-04-16 11:10:58 +02:00
Bruno Perdigão 60046ee93d improvements on dealing with sub-aggregates 2024-04-16 11:10:58 +02:00
Bruno Perdigão f244f46980 wip: RefreshLinkedAggregate is working with IfcGroup 2024-04-16 11:10:58 +02:00
Bruno Perdigão 25a4f26ffe wip: refactor of RefreshLinkedAggregate. The operator triggers all the other linked aggregates deletion. 2024-04-16 11:10:58 +02:00
Bruno Perdigão 8d02d1d5fc IfcElementAssembly share a group instead of a pset 2024-04-16 11:10:58 +02:00
Bruno Perdigão 70bad12d82 Changed operator name 2024-04-16 11:10:58 +02:00
Bruno Perdigão 8bb5ac3542 wip: DuplicateMoveAggregate now calls DuplicateMove function and removes code duplication 2024-04-16 11:10:58 +02:00
Dion Moult ecc0e85c50 Fix #4076. Fix bug where drawing activation priorities didn't match drawing generation priorities, and switching to a text literal representation failed. 2024-04-16 11:10:58 +02:00
Dion Moult a70d1ac1ca Fix #4078. Bug in IfcTester that didn't allow certain facets to be used as applicabilities. Also canonicalise facet ordering for convenience. 2024-04-16 11:10:58 +02:00
Dion Moult 298363c175 Fix bug in TessellateElements patch recipe where sometimes the patch would run forever. 2024-04-16 11:10:58 +02:00
Dion Moult 325e8751c5 Run black on cityjson2ifc 2024-04-16 11:10:58 +02:00
Dion Moult 5e4a0f2577 Fix two minor bugs in cityjson2ifc 2024-04-16 11:10:58 +02:00
Andrej730 670cf33ec9 fixed couple styles ui bugs
1) it was failing adding a new IfcSurfaceStyle if surface_style_class != Shading/Render as surface_style was not defined

2) It was never creating render material as IfcSurfaceStyleRendering class is a child of IfcSurfaceStyleShading and if statement never got to the is_a("IfcSurfaceStyleRendering") check
2024-04-16 11:10:58 +02:00
Andrej730 fe9ad74fd5 Use paths relative to .ifc instead of .blend choosing texture paths
Texture path file dialog is also filtering image files now.

Removed subtype from `FILE_PATH` from all related props since `layout.prop()` for those props starts file dialog that cannot return path relative to .ifc. It can return path relative to .blend - though it can be processed in props update to convert to relative to .ifc, this doesn't allow setting relative paths if .blend is not saved. Therefore, I've created a separate operator.

add
2024-04-16 11:10:58 +02:00
Andrej730 67ef292b85 Store reference images by relative paths #3447 2024-04-16 11:10:58 +02:00
Andrej730 44c05ce71d Fix normals for generic parametric stairs #4020
Also made concrete stair normals defined more explicitly.
2024-04-16 11:10:57 +02:00
Massimo Fabbro 5dc6c736ec fix #3834. Now clone opening produces valid IFC files 2024-04-16 11:10:57 +02:00
Dion Moult b9f33e06bd Fix #4072. IDS reports now include filename. 2024-04-16 11:10:57 +02:00
Dion Moult 31e912cf12 Fix #4073. Objects with no applicable context for the drawing view are now hidden. 2024-04-16 11:10:57 +02:00
Bruno Postle 0735dbd92b BlenderBIM IFC Git allow branch creation from HEAD
Previously you could only create branches by checking out an older
revision, making changes and committing it. This was an annoyance as
typically you are making changes to the HEAD of a branch, then you
realise this should have been a branch - now you can create the branch
on commit (#3096)
2024-04-16 11:10:57 +02:00
Ryan Schultz 24dfa57831 allow SI with CAD tools. 2024-04-16 11:10:57 +02:00
Bruno Postle 1f4c2e0989 BlenderBIM IFC Git fix typo in function name 2024-04-16 11:10:57 +02:00
Thomas Krijnen 4f64b658b0 don't fail on null guid for rooted element deletion #2796 2024-04-16 11:10:44 +02:00
Andrej730 c3d24c76f2 Reference images attached to the drawings #3447
You can also save them as annotation types.
Example - https://imgur.com/a/6trT7SZ
2024-04-16 11:09:32 +02:00
Andrej730 a0ae28c05b bim.update_representation to save non-body representations styles #3447 2024-04-16 11:09:32 +02:00
Andrej730 505b95d8cd Fixed issue importing drawing's IfcAnnotations with styles #3447 2024-04-16 11:09:32 +02:00
Andrej730 64c3550378 fix poll errors 2024-04-16 11:09:32 +02:00
Andrej730 35cfea5bd7 Revert "Minor fix - remove redundant code"
This reverts commit 7828508179.

Turned out when I was assuming `bim.add_style` is assigning the style but it wasn't, it was `bim.update_representation` on the file save. So basically during the session style wasn't assigned, therefore I added back explicit style assignment. 😬
2024-04-16 11:09:32 +02:00
Andrej730 661d6bcfe7 fixed typo 2024-04-16 11:09:32 +02:00
Thomas Krijnen f50509d2d4 occ_utils.py - #1037 2024-04-16 11:09:32 +02:00
MicheleBenedetti aa33148fe5 mistype-fix 2024-04-16 11:09:32 +02:00
Andrej730 e51d2daf64 Fixed issues applying arrays
because pset wasn't removed BBIM was recognizing those elements as parts of an array resulting in issues during deletion and duplication. This issue is a regression after ec4f0e5, the root problem was that `keep_objs` wasn't working with `sync_children`.

Since `keep_objs` was used only for applying array layers I've replaced it with `array_layers_to_apply` that works for both `sync_children` = True and False.

https://community.osarch.org/discussion/1831/duplicating-failed-for-array-items-after-apply-array
2024-04-16 11:09:32 +02:00
Andrej730 4fa634cf5c Minor fix - remove redundant code
style assignment was already done by `bim.add_style`
2024-04-16 11:09:32 +02:00
Dion Moult f7e3d54618 FixRevitTINs patch now also flips normals for surface TINs instead of solid TINs.
Minor fixes to use view_layer.object.active etc instead of context.active_object when running via Blender UI (it seems when you run the patch recipe from the Blender UI at least in later versions, context does not have an "active_object" property.
2024-04-16 11:09:32 +02:00
Andrej730 dd7ddf21a6 bim.add_reference_image #3447
Added operator to load image references as planes that will be stored in IFC.

Button location - https://i.imgur.com/L87BPyX.png
Example - https://imgur.com/a/JJXyU6C
2024-04-16 11:09:32 +02:00
Andrej730 66d0d00393 move all operators added to "add mesh" menu to common method in ui.py 2024-04-16 11:09:32 +02:00
Dion Moult 9e8e095b32 Fix #4049. New basic "regenerate occurrence name" operator. 2024-04-16 11:09:32 +02:00
Dion Moult 31bfdcb8da Fix #4054. You can now select objects based on diff results. 2024-04-16 11:09:32 +02:00
Dion Moult c5164395b8 See #4054. Diffing now allows partial loading of changed elements to make it easier to visualise without loading and linking two models. 2024-04-16 11:09:32 +02:00
Dion Moult f071c5746b Fix #4057. Data objects for the API are now in util.data instead of mixed into the shape builder utility and only depends on numpy. 2024-04-16 11:09:32 +02:00
Bruno Postle a2a7d56691 minor documentation typo fix 2024-04-16 11:09:32 +02:00
Bruno Postle 31bbcf2086 Fix python 3.12 SyntaxWarning (#4045)
Regular expressions now need to be double-escaped:
https://docs.python.org/3/whatsnew/3.12.html#other-language-changes
2024-04-16 11:09:32 +02:00
Dion Moult b4bfc6e979 Fix #4057. Move clipping info dataclass to util.shape_builder 2024-04-16 11:09:32 +02:00
Andrej730 80eaf3ba3f created uv map to have constistent name with Blender uvs
Previously it was named "Float2"
2024-04-16 11:09:29 +02:00
Andrej730 f99029d8ad moved load_texture_map to tool.Loader, added a test 2024-04-16 11:09:29 +02:00
Andrej730 bff9d7b192 bim.save_uv_to_style - experimental operator to save current uv to ifc
it's very limited and covering very little cases now. It works only for IfcPolygonalFaceSets representations that consists of triangles.

Short example - https://imgur.com/a/1AxunSN
2024-04-16 11:09:29 +02:00
Andrej730 3eaea9802f fixed issue importing uv failing for some IfcPolygonalFaceSets
It was failing with IfcIndexedTriangleTextureMap + IfcPolygonalFaceSet
2024-04-16 11:09:29 +02:00
Andrej730 d77794594c fixed issue importing uv on non meters projects 2024-04-16 11:09:29 +02:00
Andrej730 b7ed178d0a fixed issue settings style blender props if there are not texture style 2024-04-16 11:09:28 +02:00
Andrej730 ac15452dd3 fixed issue with importing ifc objects with uv after 03a6ee912 2024-04-16 11:09:28 +02:00
Dion Moult 304acdccef Fix #3059. Implement IfcTester prohibited string templates (taking into account double negatives) 2024-04-16 11:09:28 +02:00
c4rlosdias a464551644 Update IfcTester and Tester module of Blenderbim 2024-04-16 11:09:28 +02:00
Dion Moult d6142d90a9 Fix #3996. Reassigning occurrences or types now also reassigns the correlating occurrence or type. 2024-04-16 11:09:28 +02:00
Dion Moult 4f8a6c47a1 Fix #4052. Bug where invalid plane was generated due to missing X axis. 2024-04-16 11:09:28 +02:00
Dion Moult ac42318a64 Fix #3974. Bug where orphaned histories would be left in API remove operations. 2024-04-16 11:09:28 +02:00
Kristoffer Andersen 4f655870b3 Update installation.rst
add more information about conda package installation
2024-04-16 11:09:28 +02:00
Dion Moult d0cab0821d See #3974. WIP review to ensure history removal in API. 2024-04-16 11:09:28 +02:00
Andrej730 53da438b23 Small styles UI tweaks
- fixed a typo in bim.select_by_style
- added note to clarify what Shade/Render/Texture/Lighting/etc buttons do and moved style selection block at the beggining (maybe it's just me but when edit buttons are above selection ui it seemed like they affect all the styles somehow, not just the currently active one), so it will be more intuitive

Before:
https://i.imgur.com/jRSTLGI.png

After:
https://i.imgur.com/8ih4qSX.png
2024-04-16 11:09:28 +02:00
Andrej730 4d3f8f14b4 bim.validate_ifc_file to detect if there where no validation errors 2024-04-16 11:09:28 +02:00
Dion Moult 4b44427e90 Fix #4044. Bug where object in camera view algorithm was wrong. Simplied to simple AABB test. 2024-04-16 11:09:28 +02:00
Andrej730 c5c7109415 Fixed issue duplicating IfcRelSpaceBoundary #4043 2024-04-16 11:09:28 +02:00
Andrej730 1019b0c075 Fixed console errors with BIM Tool when boundary object is selected 2024-04-16 11:09:28 +02:00
Andrej730 4e71671412 test creating surface style without IFC entities 2024-04-16 11:09:28 +02:00
Andrej730 e98d7ed89c BBIM Shader Graph Settings - setting uv mode for the textures
Now you can set UV mode that will be used to sample textures (previously it was always using UV data on geometry or breaking if it was otherwise). Basically now you can use autogenerated UV for the objects without UV.

https://i.imgur.com/WtYdpmU.png

Removed BIMMaterialProperties.ifc_coordinate_id as it was only used during the ifc_import and maintained by the `Loader.create_surface_style_with_textures` which is also used to update live shader graph that not always have specific IFC id for the UV.
2024-04-16 11:09:28 +02:00
Andrej730 3aa3b329c7 Fixed issue updating texture style for non-faceset representations 2024-04-16 11:09:28 +02:00
Dion Moult bc04a65109 Fix #4027. Fix regression where S-D or A-D hotkeys didn't follow vanilla Blender behaviour from 81a1bd9 2024-04-16 11:09:24 +02:00
Dion Moult 5f1943a756 Fix #4037. IfcTester reports now also include an element type column. 2024-04-16 11:09:24 +02:00
Dion Moult 267505bd99 Fix #4034. Bug where abstract pset template applicabilities didn't apply to occurrences as well as types. 2024-04-16 11:09:24 +02:00
Bruno Postle c846edd896 Revert 1d972a6 as no datetime.UTC on CI server 2024-04-16 11:09:24 +02:00
Bruno Postle 98cba98f7d fix python 3.12 utcnow() deprecation warning
Warning is:

/usr/lib64/python3.12/site-packages/ifcopenshell/api/project/create_file.py:61:
DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version.
Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
2024-04-16 11:09:24 +02:00
Bruno Postle 4b074fc79e python api documentation fix 2024-04-16 11:09:24 +02:00
krande 5f3e9f7576 add a workflow dispatch trigger (lets you click a button in the github actions workflow panel to start a new build) 2024-04-16 11:08:05 +02:00
krande 8c0ec6d398 test one more time on my fork before merging 2024-04-16 11:08:05 +02:00
Kristoffer Andersen a744aa8570 Update ci-ifcopenshell-conda-daily.yml
change from deprecated mamba provisioner and move to python 3.11 and 3.12
2024-04-16 11:06:20 +02:00
Gorgious56 50561d72b8 You can now select the same ifc classes and match predefined types with SHIFT + Clicking the "Select Ifc Class" button 2024-04-16 11:05:27 +02:00
Andrej730 518f054cbd edit_object_placement optimization for objects with subchildren #4035
1) We were iterating over same subchildren 2 or more times.
2) There is no need to change subchildren position at all since their parent position is already adjusted.

Explained here in detail - https://github.com/IfcOpenShell/IfcOpenShell/issues/4035#issuecomment-1822824352
2024-04-16 11:05:27 +02:00
Dion Moult 847f0890e0 Fix #3691. Add toggle for power users to disable the BIM toolbar if an IFC isn't loaded. 2024-04-16 11:05:27 +02:00
Dion Moult f1b59ee583 New style manager supports basic editing of externally defined surface styles 2024-04-16 11:05:27 +02:00
Dion Moult e3742cefb0 Minor IfcPatch doc fix where examples had a missing argument 2024-04-16 11:05:27 +02:00
Dion Moult f2e56f8128 Minor fix to "select multiple IFC class" implementation 2024-04-16 11:05:27 +02:00
Dion Moult a18cd0eeab IfcFM panel now autodetects available engines with names and descriptions 2024-04-16 11:05:27 +02:00
Ryan Schultz d49fb90320 Select all objects from multiple selected classes 2024-04-16 11:05:27 +02:00
Andrej730 86f0af030a fill userdefined type field during reassigning IFC class #4034
to avoid confusion
2024-04-16 11:05:27 +02:00
Andrej730 d5253a8cbf store path to bcf in Blender file to reaccess it on Blender restart
Previously it was throwing errors if load .bcf and then restart Blender, since it was just trying to reaccess file in BcfStore.bcfxml which is gone after Blender restart. Now we store filepath to bcf in Blender properties to reload it after Blender restart.

Removed BCFProperties.is_loaded as it won't be possible to rely on it after Blender restart - after restart it will still indicate that file is loaded and it won't be possible to change it from .poll and .draw if file is gone.
2024-04-16 11:05:27 +02:00
Dion Moult b84cb72e1d New graphical element filtering UI for drawing filters that lets you also use saved searches. 2024-04-16 11:05:27 +02:00
Dion Moult 10a4fcfa10 If there is a Blender offset, show the non-offset placement in the placement panel 2024-04-16 11:05:27 +02:00
Dion Moult eaf939070b Fix bug when loading IFC with unsupported reflectance method (even though we don't fully support them yet) 2024-04-16 11:05:27 +02:00
Dion Moult 3e36e87311 Move georeferencing calculator panel until scene georeferencing panel.
Slowly all the N sidebar panels should be moved away.
2024-04-16 11:05:27 +02:00
Andrej730 b369c5e06e BCF Viewpoint - clear selection before hiding IfcSpaces #4031 2024-04-16 11:05:27 +02:00
Andrej730 6fd629f707 Fixed issue reassigning class to type class with userdefined type #4018
When PredefinedType is not found in the related enum reassign_class is considering it USERDEFINED and trying to set .ObjectType. The problem was it was doing for type classes also, when it should have set .ElementType instead.

Why it crashed BlenderBIM - in IfcClassData.data["has_entity"] we store currently active IFC entity which is recreated during `ifcopenshell.util.schema.reassign_class` making old entity invalid. Since `root.reassign_class` was failing in the process, related BBIM operator was failing too, IfcClassData wasn't updated and removed entity was accessed from UI leading to crash.
2024-04-16 11:05:27 +02:00
Dion Moult 1dd401d77e Fix critical georeferencing autodetection regression due to refactor of new context filters. 2024-04-16 11:05:27 +02:00
Dion Moult b20f0dd199 Improve geometry guessing to also check placements of random sample of elements (not just site and building), not just geometry 2024-04-16 11:05:27 +02:00
Dion Moult be584d9155 New IfcPatch recipe to tessellate elements to account for bugs in other vendors. 2024-04-16 11:05:27 +02:00
Dion Moult 15f06dee29 Fix missing LGPL license blocks in IfcPatch 2024-04-16 11:05:27 +02:00
Andrej730 4fba7461c2 Fixed more overlooked context overrides... #3876 2024-04-16 11:05:26 +02:00
Andrej730 ffce41be95 Fixed #4026 related to #3876 2024-04-16 11:05:26 +02:00
Andrej730 581014a1d5 Move code using ui index from data to ui #4028
As UI indices changes doesn't trigger data.py updates and information on screen is not synced with the active item anymore.
2024-04-16 11:05:26 +02:00
Dion Moult 990611c160 Add support for loading nested elements and consider nesting for indirect spatial containment. 2024-04-16 11:05:26 +02:00
Dion Moult 6e97ef66a1 Don't unnecessarily merge materials which can be very computationally consuming on file loads (e.g. from software like Solidworks) which will be made redundant now that a new materials/style management system is WIP. 2024-04-16 11:05:26 +02:00
Dion Moult fd53adfa49 New ConvertNestToAggregate patch recipe 2024-04-16 11:05:26 +02:00
Bruno Postle 9483835356 IfcGit.load_project() can be used to refresh scene
If no file path is given, clear blender objects and regenerate
the scene from the current ifc project in IfcStore
2024-04-16 11:05:26 +02:00
Massimo Fabbro 44b625bf24 fix #4011. More precise IfcRoof qto calculator 2024-04-16 11:05:26 +02:00
Massimo Fabbro 63636e1cc7 Minor fix 2024-04-16 11:05:26 +02:00
Massimo Fabbro 4b3a49dc3b Covering Tool: fixed bug if the project is defined in units different from SI units 2024-04-16 11:05:26 +02:00
Andrej730 e17a6c326f minor fix to support union typing before python 3.10 #3774 2024-04-16 11:05:26 +02:00
Andrej730 8dc9376844 ClippingInfo util class to pass and apply plane clippings #3774
Co-Authored-By: Carlos Villagrasa <carvillasil@gmail.com>
2024-04-16 11:05:26 +02:00
Andrej730 1c002c6845 minor fixes
- error in settings poll message for bim.assign_selected_as_product
- test that drawing.assign_product won't create new assignments for the same product
2024-04-16 11:05:26 +02:00
Andrej730 d56ec42905 minor fix - clean up after debug 2024-04-16 11:05:26 +02:00
Andrej730 bf943951c1 Tests for connecting mep elements and regenerating them
Also:
- fixed bug with bim.mep_connect_elements not considering actual blender blender object's position
- moved syncing ifc position with blender object position to tools (sync_object_ifc_position)
- fixed a bug in adding a bend that occured if either any of the start/end points of the start/end segments matched - in that case one of the segments end up not connected to the bend
2024-04-16 11:05:26 +02:00
Andrej730 891e4d93a7 Fixed error importing .ifc that has element aggregated by ifcproject
In case if some element (not another aggregate) was aggregated by IfcProject directly, importing IFC was resulting in error below since the project's collection was never added to `self.collections`.

Traceback:
```
  File "\scripts\addons\blenderbim\bim\module\project\operator.py", line 732, in execute
    ifc_importer.execute()
  File "\scripts\addons\blenderbim\bim\import_ifc.py", line 292, in execute
    self.place_objects_in_collections()
  File "\scripts\addons\blenderbim\bim\import_ifc.py", line 1668, in place_objects_in_collections
    self.place_object_in_collection(self.file.by_id(ifc_definition_id), obj)
  File "\scripts\addons\blenderbim\bim\import_ifc.py", line 1672, in place_object_in_collection
    self.place_object_in_decomposition_collection(element, obj)
  File "\scripts\addons\blenderbim\bim\import_ifc.py", line 1689, in place_object_in_decomposition_collection
    return self.collections[aggregate.GlobalId].objects.link(obj)
KeyError: '2bKVb8E7L6e89EQYJUk8BM'
```
2024-04-16 11:05:26 +02:00
Andrej730 485f654f93 Assigning product from selected objects #4015 2024-04-16 11:05:26 +02:00
Dion Moult 2644d080d9 Revert "You can now override custom category element functions in IfcFM"
This reverts commit 8a63275db0.
2024-04-16 11:05:26 +02:00
Dion Moult 4fb01f2fe6 Minor alignment of Basic FM preset to IFC property naming 2024-04-16 11:05:26 +02:00
Dion Moult b3a2c7c4b7 You can now override custom category element functions in IfcFM 2024-04-16 11:05:26 +02:00
Dion Moult 257b3ce1d9 Minor bug fix to COBie 2.4 space descriptions 2024-04-16 11:05:26 +02:00
Dion Moult 9985ffb413 Purge data recipe now also purges shape aspect names and layers. 2024-04-16 11:05:26 +02:00
Andrej730 0cc337fa88 fixed issue adding bend between segments located at the same point
also added some tests
2024-04-16 11:05:26 +02:00
Andrej730 036a670910 Fixed issue with UI for types withotu PredefinedType after 1621449
Noticed the issue adding IfcFurnitureType in IFC2x3

```
Traceback (most recent call last):
  File "\Blender\4.0\scripts\addons\blenderbim\bim\module\model\workspace.py", line 71, in draw_settings
    BimToolUI.draw(context, layout, ifc_element_type="all")
  File "\Blender\4.0\scripts\addons\blenderbim\bim\module\model\workspace.py", line 230, in draw
    AuthoringData.load(ifc_element_type)
  File "\Blender\4.0\scripts\addons\blenderbim\bim\module\model\data.py", line 56, in load
    cls.data["predefined_type"] = cls.predefined_type()
  File "\Blender\4.0\scripts\addons\blenderbim\bim\module\model\data.py", line 258, in predefined_type
    predefined_type = relating_type.PredefinedType
  File "\Blender\4.0\scripts\addons\blenderbim\libs\site\packages\ifcopenshell\entity_instance.py", line 191, in __getattr__
    raise AttributeError(
AttributeError: entity instance of type 'IFC2X3.IfcFurnitureType' has no attribute 'PredefinedType'
```
2024-04-16 11:05:26 +02:00
Andrej730 e1246e257a New context override method for setting viewport tools #3876 2024-04-16 11:05:26 +02:00
Andrej730 4f76df8cb1 DumpSlabPlaner.change_thickness to use si units #4004
It was providing project units to `geometry.add_slab_representation` resulting and then they were converted to project units once again during `geometry.add_slab_representation`.
2024-04-16 11:05:26 +02:00
Andrej730 3d5b9f5e90 black format 2024-04-16 11:05:26 +02:00
Andrej730 db7dc86cd1 Merge two Services sections in Services and Systems tab #4001
Two similar sections were needed in the old ui before we added tabs
2024-04-16 11:05:26 +02:00
Ryan Schultz 65859a8f83 closes #4006: automatically update the geometry of all the objects that have 'similar openings'. 2024-04-16 11:05:26 +02:00
Ryan Schultz 8eef2392da fixes #3908: Close the opening (bim.edit_openings) while having the opening selected 2024-04-16 11:05:26 +02:00
VDobranov 8dfd122430 Update reference_structure.py
A mistype in docs: should be IfcRelReferencedInSpatialStructure instead of IfcRelContainedInSpatialStructure
2024-04-16 11:05:26 +02:00
Massimo Fabbro 6e6402e07f Covering Tool now it is possible to add ceiling coverings from selected walls 2024-04-16 11:05:26 +02:00
Andrej730 6140e67702 show mep regenerate and connecte elements for non-profile based elements 2024-04-16 11:05:26 +02:00
Andrej730 944f8695c7 root.remove_product to remove IfcRelFlowControlElements 2024-04-16 11:05:25 +02:00
Andrej730 6cf1f8f49f fixed issues with ports ui on undo
data.py doesn't update on every undo, so passed blender objects got invalidated on undo resulting in errors. changed blender objects to blender object names
2024-04-16 11:05:25 +02:00
Andrej730 fd69d91776 UI for assigning controls to flow elements #3981
Example - https://imgur.com/a/CZQIoHp
2024-04-16 11:05:25 +02:00
Andrej730 72b3f1e967 api for assigning/unassigning flow controls #3981 2024-04-16 11:05:25 +02:00
Andrej730 1bb5a14b65 Fixed typo in control.assign_control, added tests 2024-04-16 11:05:25 +02:00
Andrej730 61e5533598 tool.System.add_ports tests 2024-04-16 11:05:25 +02:00
Andrej730 4264b19fd8 fixed issue placing ports on a bend if start segment is bending using Z- 2024-04-16 11:05:25 +02:00
Andrej730 c2c2c4815f fixed issue in add_ports mutating object's matrix
inherently modifying ports positions in some cases
2024-04-16 11:05:25 +02:00
Dirk Olbrich b069770643 bbim docs: add user interface subsection, general workspace 2024-04-16 11:05:25 +02:00
Dirk Olbrich 9d9140252e bbimdocs: reorder images folder in users section 2024-04-16 11:05:25 +02:00
Dirk Olbrich ee6e273b1d bbim docs: reorder images folder in dev section 2024-04-16 11:05:25 +02:00
Dirk Olbrich 6e00dcd05e bbim docs: use absolute path for icon images 2024-04-16 11:05:25 +02:00
Dirk Olbrich fb55077a86 bbim doc: fix list indentation 2024-04-16 11:05:25 +02:00
Dirk Olbrich e602c3b68b bbim docs: fix minor warning in ux-guidelines 2024-04-16 11:05:25 +02:00
Dirk Olbrich ce43bd7bfe bbim docs: update bbim version, copyright year 2024-04-16 11:05:25 +02:00
Andrej730 21c7751c14 remove BIMGroupProperties.is_adding attribute to avoid confusion
The problem with that attribute was that object's and project's group ui section were both using groups loaded to BIMGroupProperties.groups.

So you could run into situation when you try to load object's groups ui and it would show empty list because user never loaded the groups from the project's ui...

So it was either caching groups twice or just using same `is_editing` flag to check whether groups were previously loaded and I went with the single flag.
2024-04-16 11:05:25 +02:00
Andrej730 29e6601a4b define inherited ports attributes in bim.add_constr_type_instance 2024-04-16 11:05:25 +02:00
Andrej730 0355aa9eef fixed issue finding finding compatible fitting
it occured sometimes when segment's or fitting's PredefinedType/System were not defined
2024-04-16 11:05:25 +02:00
Andrej730 89a5519631 fixed bug with system decoration data if no system were selected 2024-04-16 11:05:25 +02:00
Andrej730 29dda335ea test stairs calculated params 2024-04-16 11:05:25 +02:00
Andrej730 168095b1c1 Nosing Lengths / Tread Gap for parametric stairs #3422
Example - https://imgur.com/d8PxLV4
2024-04-16 11:05:25 +02:00
Ryan Schultz 66f57f90df Select multiple arrays at one time, from various parts. Deselect non-compliant objects. 2024-04-16 11:05:25 +02:00
Igor.Sokolov 4404470d91 bf: IfcBSplineCurve is an isntance of abstract entity 2024-04-16 11:05:24 +02:00
Igor.Sokolov fe4dc87cd1 bf: pass-valid-selected-enumeration.ifc 2024-04-16 11:05:24 +02:00
Igor.Sokolov 0f774a675d bf: pass-group-1-rels-IFC2X3.ifc failed 2024-04-16 11:05:24 +02:00
Igor.Sokolov 27458cc079 bf: pass-attr-count-ok.ifc failed 2024-04-16 11:05:24 +02:00
Dion Moult 87a98afb64 Black 2024-04-16 11:05:24 +02:00
Dion Moult 26d6fdb1bc Docs now mention historic builds 2024-04-16 11:05:24 +02:00
Dion Moult 142968559d Minor fix 2024-04-16 11:05:24 +02:00
Andrej730 12a6bf88a9 Customize tread width for the first and last treads #3419
Available on all types of stairs, shouldn't break stairs previously created with BBIM.
Example - https://imgur.com/a/2wSueTM
2024-04-16 11:05:24 +02:00
Andrej730 3317dbd4a1 minor refactor 2024-04-16 11:05:24 +02:00
Andrej730 ba1a84e51b add force depsgraph update method 2024-04-16 11:05:24 +02:00
Andrej730 2697703bb1 skip black format on type manager template description for readibility 2024-04-16 11:05:24 +02:00
Andrej730 617c8b9fd5 stair profile generation code refactor
hopefully it's now a bit more readable
2024-04-16 11:05:24 +02:00
Andrej730 3ec513c56a Fixed stair calculated params not updating during edit (after 8b23c615c)
.data doesn't update on props change, so need to take data from props explicitly when BIMStairProperties.is_editing
2024-04-16 11:05:24 +02:00
Andrej730 7d25261395 move generate_stair_2d_profile to tool, add tests 2024-04-16 11:05:24 +02:00
ceegartner 4336b9c1ae Update unit.py - convert function, case issue
Hi,
I noticed an issue and suggest a fix:
Unit names from <si_conversions> are all lowercase, whereas project units extracted from the IFC files with <get_project_unit(...).Name> are uppercase. So the convert function didn't seem to work properly.
Hope this helps!
2024-04-16 11:05:24 +02:00
Dion Moult cc338d8acc Forgot rabbit branding. 2024-04-16 11:05:24 +02:00
Dion Moult 0f0d600f3f New data purging IfcPatch recipe 2024-04-16 11:05:24 +02:00
Dion Moult fefb3cc0f2 Fix #3963. Bind IFC separate to P hotkey and prevent separation on non-IFC meshes. 2024-04-16 11:05:24 +02:00
Dion Moult f40281e979 Fix #3948. Bug where IfcTester PartOf facet didn't correctly read entity XML. 2024-04-16 11:05:24 +02:00
Andrej730 611f7518d0 Fix issue with calculated params in stair ui
it was displaying incorrect data when stair was just loaded because it was relying on BIMStairProperties in ui.py
2024-04-16 11:05:24 +02:00
Dion Moult 9571146065 Fix #3951. mats selector now supports IfcMaterialList. 2024-04-16 11:05:24 +02:00
Dion Moult e2b132ba51 See #3951. IfcCSV now supports list concatenation. 2024-04-16 11:05:24 +02:00
Dion Moult c9dcd70cdb Improve data type error reporting 2024-04-16 11:05:24 +02:00
Dion Moult c94dc3b47e Fix #3961. Improve UI so setting null now clears the value. 2024-04-16 11:05:24 +02:00
Andrej730 01dfd6f79a bim.select_all_array_objects not to clear previous selection #3960 2024-04-16 11:05:24 +02:00
Dion Moult 6759914188 See #3953. Fix bug where IDSes with a single enumeration value didn't validate. 2024-04-16 11:05:24 +02:00
Dion Moult 7f1a500445 Fix #3957. Fix bug where shared properties were not edited independently. 2024-04-16 11:05:24 +02:00
Dion Moult 2bd7ce5996 Fix #3958. Bug where reassigning type class would incorrectly assign occurrence classes. 2024-04-16 11:05:24 +02:00
Dion Moult f4f227ffe7 Fix regressions in mapped native swept disk handling 2024-04-16 11:05:24 +02:00
Andrej730 edfe9fbcfa fix future warning for xml.etree
The warning was: FutureWarning: The behavior of this method will change in future versions. Use specific 'len(elem)' or 'elem is not None' test instead.
2024-04-16 11:05:24 +02:00
Andrej730 f6eb1b0e78 remove blf.size deprecated dpi argument #3876
turn out it wasn't working for awhile now and in Blender 4.0 was completely removed
2024-04-16 11:05:24 +02:00
Andrej730 f3aa456677 Move new Blender 4.0 Simulation section to Scene/Blender tab #3876 2024-04-16 11:05:24 +02:00
Andrej730 7d785d70a2 Warning message on copying node graph on Blender 4.0+ #3876
As we're still looking for a workaround
2024-04-16 11:05:24 +02:00
Andrej730 9d642a0f5d Remove 3D shaders prefix #3876
In Blender 4.0 3D_* shaders are called without "3D_" prefix, otherwise it throws an error. Tested on Blender 3.6 - they work without "3D_" prefix too.
2024-04-16 11:05:23 +02:00
Andrej730 9499f4e80d More context override fixes #3876 2024-04-16 11:05:23 +02:00
Andrej730 5695efa997 fixing test after 0d0b91e 2024-04-16 11:05:23 +02:00
Gorgious56 036c14b538 You can now eyedrop an object in the viewport to copy container when editing container 2024-04-16 11:05:23 +02:00
Ryan Schultz bb5fccf6fe More IFC class suggestions 2024-04-16 11:05:23 +02:00
Dion Moult cd5b54e240 Disable batching for removal as it doesn't seem to help mostly from experience. Still testing. 2024-04-16 11:05:23 +02:00
Dion Moult cbac393855 See #3955. PyPI release now specifies compatible Python versions. 2024-04-16 11:05:23 +02:00
Gorgious56 c9199caba5 You can now eyedrop an object in the viewport to copy class and predefined type when reassigning class 2024-04-16 11:05:23 +02:00
Gorgious56 e851d6b671 Clicking on an entry in the search field popup automatically validates and closes the popup
No need to click on "OK" anymore.
This is not a hacky workaround using the mouse position, it uses a signal sent to Blender to close the active popup
See https://blenderartists.org/t/programatically-close-pie-menu-2-79/1488807/2
re-committing since it seems I commited to the wrong branch last week
2024-04-16 11:05:23 +02:00
Andrej730 6a9ec1aa00 Replacing old context override method #3876 2024-04-16 11:05:23 +02:00
Andrej730 8b9790822e setup_pytest to find site-packages folder near sys.executable
Used to get errors running setup_pytest.py having python 3.10 installed on my pc (`sys_paths[-1]` was the system's python folder, not the blender's python).
2024-04-16 11:05:23 +02:00
Andrej730 9cd7d8428c Fixed #3949 2024-04-16 11:05:23 +02:00
Dion Moult 1a7b95bf1e Minor fix to Uniclass classification 2024-04-16 11:05:23 +02:00
Thomas Krijnen a7e925b942 Update test file for case insensitivity. Thanks Igor. 2024-04-16 11:05:23 +02:00
Dion Moult b07f7bcc58 get_footprint_area now unions 2D polygons to prevent double counting 2024-04-16 11:05:23 +02:00
Dion Moult cdc3f70ff4 Fix #3939. Bug where IfcLabel data type was incorrectly used for longer text data. 2024-04-16 11:05:23 +02:00
Ryan Schultz e641120166 Updated default JoinCriteria to accommodate new facet selector for statuses. 2024-04-16 11:05:23 +02:00
Andrej730 371c54036d test creating mep transition 2024-04-16 11:05:23 +02:00
Andrej730 1647acf0ca ifc2x3 pset library - fix bunch of unit related vlaidation errors #3929 2024-04-16 11:05:23 +02:00
Dion Moult 682990a30d Minor fixes 2024-04-16 11:05:23 +02:00
Dion Moult 11eefab4fc Add support for latest uniclass and add Uniclass July 2023 2024-04-16 11:05:23 +02:00
Sigma Dimensions (Yass) aa0d1cc230 fix displaying undefined or userdefined units in cost schedules 2024-04-16 11:05:23 +02:00
Sigma Dimensions (Yass) c18d756e74 fix displaying cost item totals 2024-04-16 11:05:23 +02:00
Massimo Fabbro b111d85830 New operator that creates a ceiling from cursor position in covering tool 2024-04-16 11:05:23 +02:00
Andrej730 056e0b050d fixed core tests after switch_representation changes 2024-04-16 11:05:23 +02:00
Andrej730 e09a57a9d3 "Edit Profile" in BIM Tool for mapped representations
basically now "edit profile" will be shown in BIM Tool UI and will work from shift+e hotkey if the active element's representation is mapped (for example, if it has openings)
2024-04-16 11:05:23 +02:00
Andrej730 746053eefb switch_representation to automatically switch to unresolved mapped representation
The cool thing about it now that it will automatically create a new mesh for "unresolved" representation if element has openings, otherwise it'll stick to the same mesh representation as the type object.

This fixed a few bugs:
- similar to b9a9abd but during extrusion profile edit
- applying void to the occurence used to remove the type and other occurences. Apparently it occured after 744c08e - previously we seems to rely on `ifcopenshell.geom.create_shape(settings, element)` to unresolve the representations. Though before 744c08e there still was an issue - it would apply the same opening to the all occurences and the type meshes but wasn't removing them.

Probably fixed a few other similar issues.
2024-04-16 11:05:23 +02:00
Andrej730 79b8125916 switch_representation not to break with temporary mesh representations
I've found a bug that if you have some object that consists of extrusion and can be edited in profile edit mode, when you finish editing, it would remove the type object (and I guess the other occurences objects).

It happened because during edit mode it's using temporary mesh data and `switch_representation` would replace this temp mesh data with new representation and remove the old mesh data that might still used by the other occurences and the type.

The issue also was leading to a crash during `box.template_icon(icon_value=AuthoringData.data["type_thumbnail"], scale=5)` if you had BIM Tool thumbnail preview opened in the process - removing type object would make thumbnail icon become invalid leading to the crash.

Crash mentioned here: https://community.osarch.org/discussion/1753/bbim-two-door-types-with-connected-properties
2024-04-16 11:05:22 +02:00
Dion Moult f30ceae7da Update beginners tutorial documentation with images from new UI. 2024-04-16 11:04:29 +02:00
Dion Moult f9236f8b42 You can now assign and unassign styles to materials 2024-04-16 11:04:29 +02:00
Dion Moult ca1925cc9f You can now specify a name when adding materials 2024-04-16 11:04:29 +02:00
Ryan Schultz acb29b5275 Additional clarification on save and save as 2024-04-16 11:04:29 +02:00
Dion Moult 13446cf6db Reorganise new stakeholders panel, move profiles into geometry tab. General UI polish. 2024-04-16 11:04:29 +02:00
Andrej730 fb650a8516 option to set active system
Now it's possible to set in UI active system (currently it's done "select" button next to the system).

Also changed the elements that are going to be decorated with system decorator. Previously it was decorating all the mep elements in the projects which was very performance heavy on large projects.
2024-04-16 11:04:29 +02:00
Andrej730 424042474b Merge systems UI into one
We had two very similar systems panels that were part of the old UI.
2024-04-16 11:04:29 +02:00
Dion Moult 5bb04010ae Fix #3095. Very basic implementation of a new zones panel. 2024-04-16 11:04:29 +02:00
Andrej730 91c7fe4628 Fixed tests after selector syntax update 2024-04-16 11:04:29 +02:00
Dion Moult c5e5f4ab6a Fix #3901. Add configurable list concatenation support in IfcFM. 2024-04-16 11:04:29 +02:00
Dion Moult eff68dda38 Fix #3903. Bug where stairs started off with an empty mesh and had a representation added, resulting in an invalid empty point cloud.
Now stairs have should_add_representation=False when creating the IfcStairFlight, and the representation is updated explicitly, similar to how parametric doors and windows etc have their representations updated.
2024-04-16 11:04:29 +02:00
Dion Moult afd3ac1881 Fix regression from 744c08e where type products cannot have an instance specified in create_shape 2024-04-16 11:04:29 +02:00
Dion Moult b5253556a9 Adding / editing shading / rendering styles in the style manager now updates Blender materials 2024-04-16 11:04:29 +02:00
Andrej730 bc9fc0b462 Forgot to fix test after 35d66f5 2024-04-16 11:04:29 +02:00
Andrej730 5d051b5bdd Fixed issue unlinking mesh objects
After d67eae5 delete_ifc_object is removing the meshes and it end up invalidating the unlinked object. Now mesh is copied before running delete_ifc_object
2024-04-16 11:04:29 +02:00
Andrej730 64f1ea9034 Fix tests after 808ff54 2024-04-16 11:04:29 +02:00
Andrej730 a5e667230d Minor fix after a47c57c 2024-04-16 11:04:29 +02:00
Andrej730 6297afa04c Fixed test after c34a9c5
Also fixed bug in the sheeter
2024-04-16 11:04:29 +02:00
Andrej730 219a5bbcf7 Fixed test after 418444a 2024-04-16 11:04:29 +02:00
Andrej730 ab39983d26 Fixed test after 90b40ff 2024-04-16 11:04:29 +02:00
Andrej730 52d67052bd Fixed test after 88d96f7 2024-04-16 11:04:29 +02:00
Andrej730 834bde2b63 Fixed test after 6e9639446 2024-04-16 11:04:29 +02:00
Andrej730 ec97b04bde Fixed #3907 after dd7a6a80e 2024-04-16 11:04:29 +02:00
Dion Moult 9c99085413 You can now edit rendering styles in the style manager 2024-04-16 11:04:28 +02:00
Andrej730 526dbd9e44 Added IfcZone to systems UI in IFC2X3 #3905
In IFC2X3 IfcZone is a subtype of IfcGroup but not subtype of IfcSystem (it become one after IFC4), therefore IfcZone wasn't presented anywhere in BBIM UI.
It's a bit confusing though to include IfcZone in systems when it's not actually a IfcSystem but having it in IfcGroups would be confusing too.
2024-04-16 11:04:28 +02:00
Andrej730 a43fd7f066 Fixed #3901
It was throwing an error because was failing to write a list to an excel cell, now it's explicitly converting the value to string.

Python: Traceback (most recent call last):
  File "\blenderbim\bim\module\fm\operator.py", line 102, in execute
    writer.write_xlsx(filepath)
  File "\blenderbim\libs\site\packages\ifcfm\__init__.py", line 259, in write_xlsx
    cell = worksheet.cell(row=r, column=c, value=col)
  File "\blenderbim\libs\site\packages\openpyxl\worksheet\worksheet.py", line 247, in cell
    cell.value = value
  File "\blenderbim\libs\site\packages\openpyxl\cell\cell.py", line 218, in value
    self._bind_value(value)
  File "\blenderbim\libs\site\packages\openpyxl\cell\cell.py", line 187, in _bind_value
    raise ValueError("Cannot convert {0!r} to Excel".format(value))
ValueError: Cannot convert ['USE TYPE CATALOG'] to Excel
2024-04-16 11:04:28 +02:00
Andrej730 c8e9acce8c ifcfm symlink to dev environment setup script 2024-04-16 11:04:28 +02:00
Andrej730 ea2120aa00 bim.switch_representation to switch to exact representation
previously it was switching to the first representation that matches the context, so it wasn't possible to switch to the second one if you had more than 1 representation in the same context

using always both element and representation in `geometry.import_representation` so it will import the exact representation and not the first one found by `ifcopenshell.geom.create_shape`
2024-04-16 11:04:28 +02:00
Andrej730 915a892479 activate_drawing to prioritize already active representation
If there are multiple representations in the same subcontext, when it was searching for the representation for some specific subcontext, it would previously always switch to the first representation from the list, now it's going to prioritize the one that's already active.
2024-04-16 11:04:28 +02:00
Andrej730 b83732a92e bim.create_all_shapes info message 2024-04-16 11:04:28 +02:00
Andrej730 0a309e191d Bump build version to fix #3889 2024-04-16 11:04:28 +02:00
Andrej730 1c142a34bc Some UI to mark booleans as manual #3709
Currently it allows only to either set all object's booleans to be marked as manual or all of them marked as automatic, can't change some specific boolean.

Short demo - https://imgur.com/a/bczv35N
2024-04-16 11:04:28 +02:00
Andrej730 6a7f8f65c7 move to tools methods for working with manual booleans #3709
Also fixed a bug adding boolean when pset is already added and representation type in add_boolean

```
  File "\addons\blenderbim\tool\ifc.py", line 201, in execute
    IfcStore.execute_ifc_operator(self, context)
  File "\addons\blenderbim\bim\ifc.py", line 336, in execute_ifc_operator
    result = getattr(operator, "_execute")(context)
  File "\addons\blenderbim\bim\module\model\opening.py", line 534, in _execute
    data = json.loads(pset["Data"])
  File "\addons\blenderbim\libs\site\packages\ifcopenshell\entity_instance.py", line 248, in __getitem__
    if key < 0 or key >= len(self):
TypeError: '<' not supported between instances of 'str' and 'int'
```
2024-04-16 11:04:28 +02:00
Andrej730 3c49dd15f7 localize mathutils dependency in tests #3895
replaced shapebuilder with general ifcopenshell code in `test_add_boolean` (the only place besides `test_shape_builder` where it was used), that way mathutils dependency in tests is localized only to `test_shape_builder.py`.

added test-safe option to makefile, so github workflow would ignore `test_shape_builder` tests for now and it wouldn't interrupt the entire workflow
2024-04-16 11:04:28 +02:00
Andrej730 df745345d5 refresh_aggregate to show time it took
since this can get very time consuming on large projects
2024-04-16 11:04:28 +02:00
Andrej730 cef9ba6001 Fix poll error after 3de9915
The error was
Traceback (most recent call last):
  File "\blenderbim\bim\module\model\covering.py", line 64, in poll
    return element.is_a("IfcCovering")
AttributeError: 'NoneType' object has no attribute 'is_a'
2024-04-16 11:04:28 +02:00
Dion Moult 2cd7df4cbc Minor fix 2024-04-16 11:04:28 +02:00
Thomas Krijnen f504053b27 Fixes after gltf ECEF merge 2024-04-16 11:04:21 +02:00
Andrej730 dcc600805c small fix f38952dc5 #3898 😬 2024-04-16 11:03:55 +02:00
Andrej730 3804b4912e small refactor 2024-04-16 11:03:55 +02:00
Andrej730 f8a2946355 Support other voiding IfcFeatureElementSubtraction elements #3889
Support other voiding IfcFeatureElementSubtraction besides IfcOpeningElement.
2024-04-16 11:03:55 +02:00
Andrej730 4cf6d65e1a Fixed issue after 19345ff
It wasn't considering that EnumerationReference could be None
2024-04-16 11:03:55 +02:00
Thomas Krijnen 64454a001f Apply handling of openings on IfcFeatureElementSubtraction generically #3889 2024-04-16 11:03:26 +02:00
Andrej730 ede7776a28 black formatting 2024-04-16 10:56:22 +02:00
Andrej730 e1b64fba00 Keep placement axes recalculating profiles #3879 2024-04-16 10:56:22 +02:00
Andrej730 e2077c27dd small fix add_profile_representation - use of undefined variables 2024-04-16 10:56:22 +02:00
Ryan Schultz 3ae42a074f Add a preference for particular app to open sheet layout 2024-04-16 10:56:22 +02:00
Bruno Postle 4375a39726 BlenderBIM minor fix after 7107a91 2024-04-16 10:56:22 +02:00
Dion Moult 12000c5aa5 Fix #3870. Bug where element filtering wasn't initialised properly when loading a camera for the first time.
Raster_x/y would only be set after the handler triggers. This is no longer necessary with the new explicit width / height properties.
2024-04-16 10:56:22 +02:00
Dion Moult 6f42c71e88 New verbose option in util get_pset(s) which lets you get ID and class for complex processing. 2024-04-16 10:56:22 +02:00
Bruno Postle 8d25bfca18 BlenderBIM keep camera position on git switch
New 'zoom extents' behaviour on IFC load is unwanted when switching
between git revisions
2024-04-16 10:56:22 +02:00
isma3lMB 34a56cc914 Adding support for non ascii characters when reporting 2024-04-16 10:56:22 +02:00
Thomas Krijnen 7e0765639a Update build-deps.cmd: proj compilation 2024-04-16 10:56:22 +02:00
Massimo Fabbro 21078a80dd Fix bug in covering/space tool with matrix global and local 2024-04-16 10:56:22 +02:00
Dion Moult e4adfb863b See #3884. Rewrite native geometry handling with a much more robust approach fixing a number of invalid coordinates and simplifying things. 2024-04-16 10:56:22 +02:00
Dion Moult 2c80342676 Fix bug where native meshes had normal smoothing enabled by default 2024-04-16 10:56:22 +02:00
Dion Moult 587c9858a7 Minor fixes to placement utilities for getting mapped item matrixes 2024-04-16 10:56:22 +02:00
Dion Moult a3acc0540a First draft of style manager panel 2024-04-16 10:55:58 +02:00
Dion Moult 30850e79b0 Material manager panel now moved to geometry tab 2024-04-16 10:55:58 +02:00
Dion Moult 648d6dfdb9 Representation items panel now shows styles and layers 2024-04-16 10:55:58 +02:00
Dion Moult 89339f807f Accommodate bug in Revit where mapped representations were missing... well, a representation map. 2024-04-16 10:55:58 +02:00
Dion Moult 1237d82d13 Minor bug fixes with error message when selecting objects in layers without objects 2024-04-16 10:55:58 +02:00
Dion Moult 30f425af17 Modernize zone and type table mappings for COBie 2.4 with Emma Hooper 2024-04-16 10:55:58 +02:00
Thomas Krijnen 3d13b6468d Use schema_identifier for schema and express rule validation. See #3126 2024-04-16 10:55:58 +02:00
Massimo Fabbro 7863585cce better UI for covering tool 2024-04-16 10:55:58 +02:00
Massimo Fabbro 15233c4a21 fix generate space and covering where objects weren't created in the right location 2024-04-16 10:55:58 +02:00
Dion Moult f14df7f523 Begin drafting out a new representation items panel for managing styles and layers properly 2024-04-16 10:55:58 +02:00
Vukas Pajic e962c67c80 add missing attributes in ids.parse 2024-04-16 10:55:58 +02:00
Massimo Fabbro dd9be46212 Add generate flooring from cursor and regen (#3874) 2024-04-16 10:55:58 +02:00
Dion Moult f8439ed728 Fix #3873. Regression due to new importing logic. 2024-04-16 10:55:58 +02:00
Dion Moult c4fc00ab50 See #1619. Fix issue where copying non-templated properties didn't work. 2024-04-16 10:55:58 +02:00
Ryan Schultz 48f57c6999 Further clarify the bim.link_ifc command 2024-04-16 10:55:57 +02:00
Dion Moult b75dc6a056 Minor fix 2024-04-16 10:55:57 +02:00
Dion Moult 00239234ff Manual booleans are now tracked via a Pset instead of arbitrary class conventions which should fix a bunch of issues. 2024-04-16 10:55:57 +02:00
Dion Moult 49e27788da Write documentation for placement utility 2024-04-16 10:55:57 +02:00
Dion Moult 7170d9f06f See #3817. WARNING: fundamental change. Standardise prioritisation of all context permutations when loading occurrences and types. 2024-04-16 10:55:57 +02:00
Dion Moult 83a43725f9 You can now federate FM spreadsheets using the Blender UI 2024-04-16 10:55:57 +02:00
Ryan Schultz a6ef2d6152 Adding "Manually Save Representation" and bim.get_representation_ifc_parameters back to Representation Utilities panel
from: https://github.com/IfcOpenShell/IfcOpenShell/commit/3a812a9ec156818061c01bd5b2ac2c2bee09faf1#r123820129
2024-04-16 10:55:57 +02:00
Andrej730 8de37b7df4 Minor fix #3862 2024-04-16 10:55:57 +02:00
Ryan Schultz 865c037474 fixed error when creating new walltype in IFC2x3 2024-04-16 10:55:57 +02:00
Massimo Fabbro 698ccceda2 Minor spatial refactor 2024-04-16 10:55:57 +02:00
Massimo Fabbro bbfd42cf19 Refactor create_space operator and better UI for covering tool 2024-04-16 10:55:57 +02:00
Massimo Fabbro fee390c7ed refactor create spaces from walls 2024-04-16 10:55:57 +02:00
Massimo Fabbro e10b5f6f44 Add predefined type to AuthoringData 2024-04-16 10:55:57 +02:00
Bruno Postle 1c12f2cbf8 BlenderBIM make fca90e9 optional
setup_viewport_camera() does a 'zoom extents' on IFC import.
Create a should_setup_viewport_camera option (default True)
2024-04-16 10:55:57 +02:00
Andrej730 531d3b56ed fixed issue with placing end port for a bend 2024-04-16 10:55:57 +02:00
Andrej730 a101d7e9a0 system decorations - indicate both directions flow 2024-04-16 10:55:57 +02:00
Dion Moult 6ab6567905 Fix #3843. Regression where IfcMaterialList UI didn't show list of materials. 2024-04-16 10:55:57 +02:00
Andrej730 9f1afdd905 Minor fix after b9a9abd30 2024-04-16 10:55:57 +02:00
Andrej730 f08cbec747 revert flow directions icons to arrows 2024-04-16 10:55:57 +02:00
Andrej730 5922d08322 Minor fix after 78c748df5
RuntimeError: Error: Registering panel class: parent 'BIM_PT_tab_placement' for 'BIM_PT_placement' not found
2024-04-16 10:55:57 +02:00
Hilko 995940880d Update build-deps.cmd 2024-04-16 10:55:57 +02:00
Andrej730 9a88c4235d Fixed adding opening to meshes of all occurences for non material based representations
Mentioned in #3817
2024-04-16 10:55:57 +02:00
Andrej730 ca4d4e026c Moving some code to tool.Geometry 2024-04-16 10:55:57 +02:00
Dion Moult be928347c5 You can now select coloured objects in a colourscheme. 2024-04-16 10:55:57 +02:00
Dion Moult f574a3f65b New placement panel to consolidate placement data in geometry tab 2024-04-16 10:55:57 +02:00
Dion Moult 9e573f6e62 New geometry tree documentation picture and minor documentation improvements including mention of COBie 2.4 legacy mode in IfcFM. 2024-04-16 10:55:57 +02:00
Dion Moult 83b5494c81 New documentation for shape utility 2024-04-16 10:55:57 +02:00
Dion Moult 9f23f49ecd Implement projected surface area calculation function in util.shape 2024-04-16 10:55:57 +02:00
Dion Moult 205c6a9263 New drawing width / height / depth / raster DPI controls 2024-04-16 10:55:57 +02:00
Dion Moult 22ba8ce496 You can now easily create orthographic and perspective model drawings from a preset 2024-04-16 10:55:57 +02:00
Dion Moult 3b53246f80 Active drawing panel moved from camera properties to drawing tab. 2024-04-16 10:55:56 +02:00
Thomas Krijnen a3cecff3d9 #3852 Update pyproject.toml 2024-04-16 10:55:56 +02:00
Andrej730 739b793cd7 test for model.get_manual_booleans() #3709
added test that model.get_manual_booleans will ignore IfcBooleanClippings until we find some other solution to distinguish automatic and manual clippings. And some refactor along the way.
2024-04-16 10:55:56 +02:00
Andrej730 edfe0ec580 DumbWallJoiner to work with IfcBooleanResult correctly #3831
It wasn't detecting extrusion as part of IfcBooleanResult and was using default wall data as fallback.

Occured after 0044ef5
Solves #3831
Related to #3709
2024-04-16 10:55:56 +02:00
Dion Moult 3ac6660da7 Revise COBie 2.4 mappings for facility, floor, and some of space worksheet in collaboration with Emma Hooper 2024-04-16 10:55:56 +02:00
Dion Moult 0e17cd7130 Fix #3845. Select similar for predefined type now takes into account inheritance. 2024-04-16 10:55:56 +02:00
Andrej730 39169c4dd8 Fixed issue applying array with Sync Children #3822 2024-04-16 10:55:56 +02:00
taylor c88b3a3ad8 Fixed model reference 2024-04-16 10:55:56 +02:00
Dion Moult 74ca102f6a Georeference module now supports IFC2X3 georeferencing / conversion utilities. 2024-04-16 10:55:56 +02:00
Dion Moult 8119b3199a Document geolocation util and add support for ePSet IFC2X3 fallbacks. 2024-04-16 10:55:56 +02:00
c4rlosdias 31bdc96130 Fix problem in getpsets(facet.py) and added descriptions to specifications (IfcTester) 2024-04-16 10:55:56 +02:00
Dion Moult f9d45222c8 Fix #3841. Bump IOS. 2024-04-16 10:55:56 +02:00
Andrej730 cc0ad74e50 bim.flip_object #3803
Added new operator bim.flip_object that flips the object by flipping two of its axes and keeps the original placement.

Currently it can be found either from F3 search or from Shift-F hotkey for IfcBeam and IfcColumn in BIM tools.
2024-04-16 10:55:56 +02:00
Andrej730 514af37e0e .reg file for #3778
Forgot to commit the .reg file...
2024-04-16 10:55:56 +02:00
Andrej730 90bade7bb8 Fixed typo 2024-04-16 10:55:56 +02:00
Thomas Krijnen 2eecfd6422 Option to write Earth-Centered Earth-Fixed glTF 2024-04-16 10:55:54 +02:00
Dion Moult d8c8ac6c15 Clean up IfcFM's Basic preset to be more true to IFC rather than follow naming schemes from stuff like COBie 2024-04-16 10:37:19 +02:00
Dion Moult e0ae010c46 You can now select and bulk process multiple models using IfcFM in Blender. 2024-04-16 10:37:19 +02:00
Dion Moult 3cb1791525 New IfcPatch recipe to fix Revit bug with occurrence based classifications 2024-04-16 10:37:19 +02:00
Dion Moult 8df28ca8a1 New IfcPatch recipe to fix Revit bug with hardcoded Uniformat classification 2024-04-16 10:37:19 +02:00
Andrej730 d27703bcf2 IfcSverchok docs update urls 2024-04-16 10:37:19 +02:00
Bruno Perdigão c5192774c3 fixed a bug where the refresh aggregate operator was not working after adding new objects to the parent aggregate 2024-04-16 10:37:19 +02:00
Ryan Schultz ce3469fd58 fix #3792 2024-04-16 10:37:19 +02:00
Andrej730 750b9201a9 Fixed error creating a door type / window types after 8f6be60c6 2024-04-16 10:37:19 +02:00
Andrej730 eef3cd80b6 Getting drawing group more precisely
Previously it was conflicting with other possible groups assigned to the object. It's now even more important since we're actively using groups to save search queries.

Example error caused by this issue - during drawing activation if you had 2 IfcGroups on the drawing element:
draiwng's IfcGroup RelatedObjects attribute was updated, then inverse attrtibute `drawing.HasAssignments` order was updated too (DRAWING IfcGroup now would be positioned second after IfcGroup for search query) and it was leading to errors during filtering current drawing annotations
2024-04-16 10:37:19 +02:00
Andrej730 2d07e4634b Small fix for 05d4dc566 2024-04-16 10:37:19 +02:00
Andrej730 20f3a6443f Rever IFC Project
https://i.imgur.com/ajQiK8D.png
2024-04-16 10:37:19 +02:00
Andrej730 e2a08b9947 Fixed #3829 occured after ae45e6b
similar_openings wasn't reset on each iteration causing moving unrelated openings
2024-04-16 10:37:19 +02:00
Andrej730 984dca6408 Fixed #3832 2024-04-16 10:37:19 +02:00
Sigma Dimensions (Yass) 916917e2bb fix f2097c0 2024-04-16 10:37:19 +02:00
Sigma Dimensions (Yass) 1fb9223434 importing csv cost schedules now allows using selector queries for effortless product assignments to cost items, and add new ods and csv format templates (in french) 2024-04-16 10:37:19 +02:00
Dion Moult ed4df72df6 IfcFM can now be used to federate multiple spreadsheets together 2024-04-16 10:37:19 +02:00
Dion Moult 34b0970c6b Revise COBie 2.4 contact table mapping in collaboration with Emma Hooper 2024-04-16 10:37:19 +02:00
Andrej730 89d3ee995d Workaround for #3778 2024-04-16 10:37:19 +02:00
Andrej730 1f815619b6 copy_deep to always pass exclude_callback to the recursion
It wasn't passing the exclude_callback if attribute of the copied element wasn't a tuple, resulting in duplicated named profiles in case if you'd copy a IfcBooleanClippingResult #3810

For example, how copy_deep of IfcProductDefinitionShape with boolean clipping previously would work:
V IfcShapeRepresentation - copied with exlude_callback (part of .Representations[])
V IfcBooleanClippingResult - copied with exlude_callback (part of .Items[])
X IfcExtrudedAreaSolid - copied without exlude_callback becuase it's part of .FirstOperand (not an array) and we have IfcIShapeProfileDef duplicated

Case without booleanclippings:
V IfcShapeRepresentation - copied with exlude_callback (part of .Representations[])
V IfcExtrudedAreaSolid - copied with exlude_callback, since it's part of .Items[], IfcIShapeProfileDef not duplicated
2024-04-16 10:37:19 +02:00
Andrej730 fc3b68ada4 bim.remove_opening not to force Model/Body/Model_view
Now it won't be forcing Model/Body/Model_view representation on the objects if some other context is active for the object.

Indirectly solves #3817
2024-04-16 10:37:19 +02:00
Dion Moult dfcafed648 Ship with fallback IFC2X3 georeferencing pset 2024-04-16 10:37:19 +02:00
Massimo Fabbro 06b5982b59 fix generate spaces from walls bug 2024-04-16 10:37:19 +02:00
Andrej730 4a507c0827 Print unused elements stats / purge unused elements
Added to Purge Data section in Quality Control some tools - https://i.imgur.com/Nz3YoiH.png

1) Print unused elements - useful to investigate how much unused data you have in IFC file.
https://i.imgur.com/9Fkn0JD.png

2) purge unused elements by ifc class, it's doing it in pretty naive way and can be dangerous, so maybe it should be moved to debug section.
2024-04-16 10:37:19 +02:00
Andrej730 dadb9aa8e8 info message for amount of purged elements 2024-04-16 10:37:19 +02:00
Dion Moult 9095e6dd8b Introductory docs written for IfcFM 2024-04-16 10:37:18 +02:00
Dion Moult cffc8b519c New introduction section in IOS docs 2024-04-16 10:37:18 +02:00
Andrej730 b0d3049ddd Minor fix after 22edbdd
Error was:

TypeError: EnumProperty(..., default='cobie'): not found in enum members
Exception in module register(): \3.6\scripts\addons\blenderbim\__init__.py
Traceback (most recent call last):
  File "\Blender\3.6\scripts\modules\addon_utils.py", line 369, in enable
    mod.register()
  File "\3.6\scripts\addons\blenderbim\__init__.py", line 42, in register
    blenderbim.bim.register()
  File "\3.6\scripts\addons\blenderbim\bim\__init__.py", line 190, in register
    bpy.utils.register_class(cls)
ValueError: bpy_struct "BIMFMProperties" registration error: 'engine' EnumProperty could not register (see previous error)
2024-04-16 10:37:18 +02:00
Dion Moult 4719bc0c62 IfcFM now supports writing to Pandas Dataframes 2024-04-16 10:37:18 +02:00
Dion Moult 30495f2688 You can now interact with IfcFM via CLI 2024-04-16 10:37:18 +02:00
Dion Moult 888f9c0864 You can now specify empty formatting for IfcCSV via CLI 2024-04-16 10:37:18 +02:00
Dion Moult fd80055ef7 Fix #3788. Fix crash when opening drawing SVGs using webbrowser module which is not recommended and the file is on a Dropbox synced external drive. Now replaced with generic os.startfile / xdg-open / open commands. 2024-04-16 10:37:18 +02:00
Sigma Dimensions (Yass) 88360a4d55 fix loading animation color scheme 2024-04-16 10:37:18 +02:00
Sigma Dimensions (Yass) 070439fa07 run black and forgotten calender utils 2024-04-16 10:37:18 +02:00
Sigma Dimensions (Yass) 09ed0a682c maintain tasks bar visual property state when tasks properties are reloaded 2024-04-16 10:37:18 +02:00
Sigma Dimensions (Yass) 1cb0294fd6 hide spaces when creating an animation 2024-04-16 10:37:18 +02:00
Sigma Dimensions (Yass) 7f3559437f fix warning statement when there are no saved animation color schemes 2024-04-16 10:37:18 +02:00
Sigma Dimensions (Yass) 6b25a64976 fix typo 2024-04-16 10:37:18 +02:00
Sigma Dimensions (Yass) 61831c7321 fix missing task types for animations color scheme 2024-04-16 10:37:18 +02:00
Sigma Dimensions (Yass) 22539db737 fix tasks not displaying derived calendar 2024-04-16 10:37:18 +02:00
Andrej730 ac18bba661 system decorations - live time update
Decoration data is now updating in live time, caching some parts in Data for performance. Real time update is needed because Data doesn't allow update on objects positions change and later will need real time update for viewport orientation data.
2024-04-16 10:37:18 +02:00
Andrej730 ae483f7aca Add ports to MEP bends/transitions types instead of occurences 2024-04-16 10:37:18 +02:00
Andrej730 ca2b804337 system decorations to show flow direction 2024-04-16 10:37:18 +02:00
Andrej730 7de1738d30 settings flow direction without jumping to ports
https://imgur.com/a/F00tG7g
2024-04-16 10:37:18 +02:00
Dion Moult 06c2b06f7c Possible optimisation by caching in IfcTester property checks 2024-04-16 10:37:18 +02:00
Claudio Benghi 4fda95a4a6 Fixed most issues with IDS auditing 2024-04-16 10:37:18 +02:00
Ryan Schultz bf8ee909ff proposed fix for #3792 2024-04-16 10:37:18 +02:00
Andrej730 a970b40513 Descriptions for add_representation conversion methods 2024-04-16 10:37:18 +02:00
Andrej730 2ebd00eea2 draw calculate_all_quantities hotkey in bim tool ui
hotkey was already there, it just wasn't added to UI

https://i.imgur.com/nar5WYI.png
2024-04-16 10:37:18 +02:00
Andrej730 e6019e8519 recalculate fills on applying changes to ifc windows / ifc doors
previously if you'd move the window and then change it's parametric data and try to apply it, opening's position wouldn't be updated
2024-04-16 10:37:18 +02:00
Andrej730 7404357995 Moved common duplication operators code to DuplicateMove
Now OverrideDuplicateMoveLinked allways will be in sync with OverrideDuplicateMove.

Also fixed the issue when DuplicateMoveLinked for non ifc elements worked the same was DuplicateMove (it was copying mesh data when it's not suppose to).
2024-04-16 10:37:18 +02:00
Andrej730 9c13ae1993 replace Drawing.remove_object_data with more general method 2024-04-16 10:37:18 +02:00
Dion Moult 0b4532b7aa Purge IfcCOBie deps from build 2024-04-16 10:37:18 +02:00
Dion Moult 407f363648 Fix #3793. Bug where flipping a wall with generic connection relationships would fail. 2024-04-16 10:37:18 +02:00
Sigma Dimensions (Yass) 5d6a823493 resources code cleanup 2024-04-16 10:37:18 +02:00
Sigma Dimensions (Yass) 2575348c9d change tests due to new class assignment workflow ref commit 808ff54 2024-04-16 10:37:18 +02:00
Bruno Perdigão d0177891e4 remove connections with old objects when duplicating aggregates 2024-04-16 10:37:17 +02:00
Dion Moult b752048baf We now support separating IFC meshes. 2024-04-16 10:37:17 +02:00
Dion Moult f6cd6d2591 Splitting by edge now resolved mapped representations, voided, and non-mesh geometries 2024-04-16 10:37:17 +02:00
Sigma Dimensions (Yass) 604373415f fix parametric duration/ resource update 2024-04-16 10:37:17 +02:00
Dion Moult 034d43502b Minor fix during loading arrays 2024-04-16 10:37:17 +02:00
Dion Moult 9ef5dc9f8e Fix #3791. Add isodate as an optional dependency to ifcopenshell-python. 2024-04-16 10:37:17 +02:00
Sigma Dimensions (Yass) c5879f2c57 improved template for resource csv imports 2024-04-16 10:37:17 +02:00
Sigma Dimensions (Yass) 8649a1a23d fix location search filter 2024-04-16 10:37:17 +02:00
Sigma Dimensions (Yass) 609b7840b0 bring back filter operators into new Filter subpanel and change filter by storey to filter by container 2024-04-16 10:37:17 +02:00
Sigma Dimensions (Yass) e9ed850b78 Proposal to use resource's parent cost, reducing manual insertions 2024-04-16 10:37:17 +02:00
Dion Moult 0fc478f2f3 New debug feature to override the display type. 2024-04-16 10:37:17 +02:00
Dion Moult 0e525dcbee Autodetect dense meshes to make it faster when loading so users don't need to go into advanced mode. 2024-04-16 10:37:17 +02:00
Andrej730 6bdc4cd607 Moving common code for duplication operators 2024-04-16 10:37:17 +02:00
Andrej730 b58c25fdc9 Duplicate the array if all it's elements are selected #3763
Demo - https://imgur.com/a/0wYZOPl
2024-04-16 10:37:17 +02:00
Andrej730 48a88835dd Setup arrays constraints on loading .ifc #3753 2024-04-16 10:37:17 +02:00
Andrej730 425a31ffa1 Clear constraint and transform lock on duplicating array child object
Previously it was locked even though it's not part of an array anymore.
2024-04-16 10:37:17 +02:00
A. R. S 2691e8a082 Try to get unit from EnumerationReference for IfcPropertyEnumeratedValue 2024-04-16 10:37:17 +02:00
Dion Moult c5ec9a66f3 Refactor IfcFM to make it easier to exclude things 2024-04-16 10:37:17 +02:00
Dion Moult b92c2b2dbc Finally purge IfcCOBie to be superseded by IfcFM 2024-04-16 10:37:17 +02:00
Andrej730 1f20330772 removing arrays if all array elements are selected #3781
I think there is still some space to improve but it should cover the main problem with need going to array section to remove it
Demo - https://imgur.com/a/9Z3t5Q8
2024-04-16 10:37:17 +02:00
Andrej730 c1553247c1 Fixed error editing pset with prop with empty prop.NominalValue
Traceback:
```
Error: Python: Traceback (most recent call last):
  File "\blenderbim\bim\module\pset\operator.py", line 103, in execute
    self.load_from_pset_data(pset)
  File "\blenderbim\bim\module\pset\operator.py", line 226, in load_from_pset_data
    value = prop.NominalValue.wrappedValue
AttributeError: 'NoneType' object has no attribute 'wrappedValue'
```
2024-04-16 10:37:17 +02:00
Massimo Fabbro d3a37bf0eb Add model test about manual booleans 2024-04-16 10:37:17 +02:00
Massimo Fabbro 1154d60921 Added calculating quantities function for Qto_DuctSegmentBaseQuantities and Qto_DuctFittingBaseQuantities 2024-04-16 10:37:17 +02:00
Ryan Schultz 54e8421d3d small fix for 9e67565 2024-04-16 10:37:17 +02:00
Vukas Pajic 37ed67da56 typo 2024-04-16 10:37:17 +02:00
Vukas Pajic aabeba54f9 Update ids validation
see https://github.com/IfcOpenShell/IfcOpenShell/issues/2933
2024-04-16 10:37:17 +02:00
Sigma Dimensions (Yass) 5ca6de023a small fix when calculating resource work 2024-04-16 10:37:17 +02:00
Dion Moult 672a2c4483 Autogenerate API docs for more modules. 2024-04-16 10:37:17 +02:00
Dion Moult 2587e29750 Forgot to commit BCF docs 2024-04-16 10:37:17 +02:00
Dion Moult 9736d08064 Migrate more documentation to the official Sphinx docs and mention IfcOpenShell-WASM as an installation option 2024-04-16 10:37:17 +02:00
Ryan Schultz 33b5672344 Refresh aggregate from selecting a part 2024-04-16 10:37:17 +02:00
Andrej730 590c3f0384 mep system decorators - basic implementation
All it does currently it draws all MEP elements connections in viewport. It also highlights with green color all elements connected to the active object

Demo - https://imgur.com/a/haAQeWt
2024-04-16 10:37:17 +02:00
Andrej730 1ae1e4c4f9 fixed error in api.system.disconnect_port
Error was:
TypeError: can only concatenate tuple (not "list") to tuple
2024-04-16 10:37:17 +02:00
Andrej730 9e7d04f337 get_viewport_context to also return space 2024-04-16 10:37:17 +02:00
Andrej730 9f1bfe2868 bim.draw_system_arrows updated for ifc4 2024-04-16 10:37:17 +02:00
Sigma Dimensions (Yass) 0c72ee9b0f improve pset editing workflow and use refactored core and tool functions 2024-04-16 10:37:16 +02:00
Sigma Dimensions (Yass) f79e6ada9b cascade schedule when adding a sequence relationship 2024-04-16 10:37:16 +02:00
Sigma Dimensions (Yass) a96e7d97ac fix count_working_days when the start and finish are the same same hours 2024-04-16 10:37:16 +02:00
Sigma Dimensions (Yass) 8549debdc9 fix calculating critical path to consider:
- parent tasks with sequence assignments #3772
- tasks that are constrained by a schedule start
2024-04-16 10:37:16 +02:00
Sigma Dimensions (Yass) 46c775c585 fix cascading schedule when parent tasks have sequence relationships #3772 2024-04-16 10:37:16 +02:00
Bruno Perdigão 79c0779449 fix rotation from refresh aggregate operator 2024-04-16 10:37:16 +02:00
Dion Moult 39ee129724 Datatype checks in IfcTester are now case insensitive 2024-04-16 10:37:16 +02:00
Andrej730 ebd02f20db Exposed some MEP operators in BIM Tool UI
https://i.imgur.com/U61QqlQ.png
2024-04-16 10:37:16 +02:00
Andrej730 0c57f8ea39 bim.mep_connect_elements to connect elements by the closest ports
Previously it was looking for exact match. Now operator also adjusts connected ports
2024-04-16 10:37:16 +02:00
Andrej730 f516c59784 override_outliner_delete poll error fix 2024-04-16 10:37:16 +02:00
Andrej730 39e622b559 info message for refresh_aggregate 2024-04-16 10:37:16 +02:00
Dion Moult dd0e997935 You can now add bSDD properties when assigning bSDD classifications 2024-04-16 10:37:16 +02:00
Vukas Pajic 3e760e9406 Fix case when ids_dict has key but value is None 2024-04-16 10:37:16 +02:00
Dion Moult 855ee4c48e Minor fix 2024-04-16 10:37:16 +02:00
Dion Moult af9ce9d8fd Fix crash where IFCTester read directly from IFC in the UI 2024-04-16 10:37:16 +02:00
Dion Moult a7f33d8172 Basic integration of bSDD with BlenderBIM Add-on: you can now assign classification references from the bSDD and set the active bSDD domain. 2024-04-16 10:37:16 +02:00
Dion Moult 28ddd2aefc Implement classification searching in bSDD library 2024-04-16 10:37:16 +02:00
Andrej730 10e19d16bd select array parent / all array objects to work without parent guid argument
now it's getting parent guid from the currently active object, not from provided guid argument - so now it's possible to add those operators to quick favorites
2024-04-16 10:37:16 +02:00
Ryan Schultz d4274e0e20 Have bim.select_aggregate make the aggregate empty the active object, as well. 2024-04-16 10:37:16 +02:00
Dion Moult 7e10d520f4 IfcTester now includes percentages per requirement 2024-04-16 10:37:16 +02:00
Sigma Dimensions (Yass) 145f601a2e purge cost schedules 2024-04-16 10:37:16 +02:00
Dion Moult a251816de0 Accommodate potential manual deletion of EPset drawing. 2024-04-16 10:37:16 +02:00
Dion Moult f1d2bd0eac Fix #3752. Accommodate situations where layouts don't match IFC. 2024-04-16 10:37:16 +02:00
Andrej730 cfebf2549b Associate IFC files with BlenderBIM on Windows
Buttons located in addon preferences - https://i.imgur.com/Unp4P9L.png

Just waiting for this to break somehow...

It's not completely automatic now and it doesn't create assign special icon for IFC files yet.
2024-04-16 10:37:16 +02:00
Andrej730 34a881da3a Remove orphaned IfcPropertyEnumeration
Noticed a couple hundreds of orphaned IfcPropertyEnumeration in my .ifc like below 😁

IFCPROPERTYENUMERATION('Status',(IFCLABEL('NEW'),IFCLABEL('EXISTING'),IFCLABEL('DEMOLISH'),IFCLABEL('TEMPORARY'),IFCLABEL('OTHER'),IFCLABEL('NOTKNOWN'),IFCLABEL('UNSET')),$);
2024-04-16 10:37:16 +02:00
Andrej730 ecf3da1d86 fixed bug creating transition shapes
it was accidentally assigning extrusion vector instead of an offset
2024-04-16 10:37:16 +02:00
Andrej730 624d1fdc3a Clean up orphaned meshes
- delete_ifc_project
- bim.add_constr_type_instance
- adding transitions and bends
- add profile / slab / wall
2024-04-16 10:37:16 +02:00
Andrej730 654f84ffb7 Save last active context editing doors/windows, solves #3735
previously - https://imgur.com/a/gri6zMk
now - https://imgur.com/a/GIwZP6c
2024-04-16 10:37:16 +02:00
Sigma Dimensions (Yass) 788f2d2044 MSP calendar exceptions are now also imported #3766 2024-04-16 10:37:16 +02:00
Sigma Dimensions (Yass) d7887de3e5 fix msp .xml import: exception days for a standard working week #3766 2024-04-16 10:37:16 +02:00
Massimo Fabbro da8cd9daba Add new covering tool. Mock up and initial functions 2024-04-16 10:37:16 +02:00
Massimo Fabbro 4ed901204e Partial spatial tool refactor 2024-04-16 10:37:16 +02:00
Andrej730 ed9e45bb7d For parametric doors and windows remove "Edit Profile" button from BIM Tool UI to avoid confusion 2024-04-16 10:37:16 +02:00
Andrej730 484758e564 Add starting/saving IFC project to Blender F4 file context menu
https://i.imgur.com/FDvZZwc.png
2024-04-16 10:37:15 +02:00
Andrej730 37f1f6d125 MEP bends - fixed bunch of bugs related to adjusting already existing bends types 2024-04-16 10:37:15 +02:00
Dion Moult 6b15b08835 Project advanced mode filtering now uses new filter syntax 2024-04-16 10:37:15 +02:00
Andrej730 54dcf75a7e Ooops, forgot to remove debug shape creation 2024-04-16 10:37:15 +02:00
Andrej730 9e667013a3 transitions - fixed bug finding compatible fitting
For example, there was a fitting from segment of type A to the segment of type B with start/end transition lengths equal a/b respectively.
And then if you'd try to create a transition from B to A and start/end transition lengths being equal to b/a, previously BBIM wouldn't be able to find that already existing fitting is still compatible.
2024-04-16 10:37:15 +02:00
Andrej730 72d5350b83 mep operators - clamp properties below zero 2024-04-16 10:37:15 +02:00
Andrej730 5f94e2b251 bends - support for zero radius bends 2024-04-16 10:37:15 +02:00
Dion Moult 7f968d6eab IfcDiff can now visualise across linked IFCs 2024-04-16 10:37:15 +02:00
Dion Moult 4131e595bd Make IfcDiff more forgiving when invalid geometry occurs. See #3755. 2024-04-16 10:37:15 +02:00
Andrej730 fe99b59209 Fixed bug using tab editing arbitrary profile
It was assuming we were editing extrusion profile and therefore was giving errors.
2024-04-16 10:37:15 +02:00
Dion Moult 34e4ecb8a4 Include buildingSMART psets in IfcFM Basic preset 2024-04-16 10:37:15 +02:00
Dion Moult c1bb3e482e Minor fix 2024-04-16 10:37:15 +02:00
Dion Moult e03a4bab23 More minor fixes to IfcFM basic preset 2024-04-16 10:37:15 +02:00
Dion Moult b0f1c4d684 Minor fixes to IfcFM 2024-04-16 10:37:15 +02:00
Andrej730 f1184e6182 Revert "Replace currently selected objects with occurences of type"
This reverts commit 58199ef7c9.
2024-04-16 10:37:15 +02:00
Andrej730 4b48b30c3b bends - consider profile dimensions searching for compatible fitting
So basically now it won't reuse a bend fitting created for the same profile but with different dimension.
2024-04-16 10:37:15 +02:00
Andrej730 37eb1751b4 bends - adjusting compatible fitting rotation to match the segments
Demo - https://imgur.com/a/cYdWy9X (note that no bend types created in the process - it's just adjusting the type created for the first two segments).
2024-04-16 10:37:15 +02:00
Andrej730 14aa32b04a Replace currently selected objects with occurences of type
Added operator to replace currently selected objects with occurences of the chosen type. I kept doing this from the code and thought it could be generally useful.

It's working pretty naive now and just replacing objects with occurences preserving the original transform (location/rotation/scale), nothing else is preserved.

Demo - https://imgur.com/a/qm8a6Ns

PS Hopefully I'm not reinventing the wheel and not missed some other similar operator
2024-04-16 10:37:15 +02:00
Andrej730 fc2aa41717 bends - considering parametric data searching for compatible fitting 2024-04-16 10:37:15 +02:00
Thomas Krijnen 42da8aba83 Correct xsi:schemaLocation 2024-04-16 10:37:15 +02:00
Thomas Krijnen 79c8594f8f Update IDS.xsd 2024-04-16 10:37:15 +02:00
Dion Moult e04b69717b New FM module in BlenderBIM Add-on for interacting with IfcFM. 2024-04-16 10:37:15 +02:00
Dion Moult 4eaf9c689d Implement COBie documents and attributes 2024-04-16 10:37:15 +02:00
Andrej730 5715a14b17 bends - use IfcArcIndex to define bends curves
instead of manually generating polylines of segments
2024-04-16 10:37:15 +02:00
Andrej730 e7b6fad348 bends - support for start and end segments 2024-04-16 10:37:15 +02:00
Andrej730 959f05d154 shapebuilder - replace y extrusion args with shortcut for readibility 2024-04-16 10:37:15 +02:00
Andrej730 7cef9ffe0e Bends - replace faceset with simple extrusion 2024-04-16 10:37:15 +02:00
Andrej730 5180f40245 MEP bends - support for circular profiles
Demo - https://imgur.com/a/XQBOvGz
2024-04-16 10:37:15 +02:00
Dion Moult b25fae8ca8 Don't strip selector query keys to allow for explicit "mistakes" in key names. 2024-04-16 10:37:15 +02:00
Dion Moult 728714dae3 Minor fix in IfcCSV where strings didn't get auto quoted. 2024-04-16 10:37:15 +02:00
Dion Moult d27e0bdf10 New util.system.get_port_element function. 2024-04-16 10:37:15 +02:00
Dion Moult cc1a2db3ff Allow optional second arguments to substr formatting. 2024-04-16 10:37:15 +02:00
Dion Moult cb264bac6e Implement COBie assemblies, connections, spares, resources, and jobs. 2024-04-16 10:37:15 +02:00
Dion Moult 8976cf5c52 Implement COBie systems 2024-04-16 10:34:30 +02:00
Andrej730 afeca7d598 Fixed top and center alignment in the schedule
Solves #3599

Before - https://i.imgur.com/9s7MxH5.png
After - https://i.imgur.com/ojDj09G.png
Inkscape - https://i.imgur.com/pWF4Ouy.png
2024-04-16 10:34:30 +02:00
Andrej730 315e8a436a MEP bends - more robust start/end points detection
also support for bends with angles > 90 degrees and some other bugs fixed
2024-04-16 10:34:30 +02:00
Dion Moult 3b070b755a Implement COBie type and component tables 2024-04-16 10:34:30 +02:00
Dion Moult 2474b238a8 Deprecate purge_module_data in favour of newer refresh_ui_data function. 2024-04-16 10:34:30 +02:00
Dion Moult 913ccd9289 Improve usability of pset template UI by removing save button and using new explicit applicable entity defaults to mitigate possible invalid pset templates. 2024-04-16 10:34:30 +02:00
Dion Moult d39df4a933 Minor UI bugfix where pset template files sometimes displayed with truncated filenames 2024-04-16 10:34:30 +02:00
Dion Moult 607e367448 Fix bug where you couldn't add psets that were inherited. 2024-04-16 10:34:30 +02:00
Dion Moult 61475d0846 Implement COBie zones 2024-04-16 10:34:30 +02:00
Andrej730 12c1d7991a Spatial Manager - try to preserve the selection on loading the manager
Also noticed in Sigma Dimensions video that every time user deletes a storey or applies new elevation the selection was jumping to the first storey. Now it's going to be more natural.

Before - https://imgur.com/a/gbn7ryQ
After - https://imgur.com/a/QX2RulF
2024-04-16 10:34:30 +02:00
Andrej730 6700270600 Units formatting for Spatial Manager
Noticed in Sigma Dimensions video that we have some floating point garbage displayed in the Spatial Manager UI and I've added some simple formatting.

Now - https://i.imgur.com/eM1rDDu.png
Before - https://i.imgur.com/ySln5uU.png
2024-04-16 10:34:29 +02:00
Dion Moult c9c449978d Reimplement IfcCOBie contacts, facilities, floors, and spaces in IfcFM. 2024-04-16 10:34:29 +02:00
Andrej730 602ec57cba Considering parametric data for fitting #3695
Search for compatible fitting wasn't taking into account that maybe fitting used for the same segments but fitting's parameters are not the same (such as start_length, end_length, angle and offset between profiles).

I also forgot to promote transition angle to operator's property😬
2024-04-16 10:34:29 +02:00
Andrej730 a1bca1bb4a Fixed issue creating slabs in IFC2X3 #3696
Error traceback is below - it was trying to set IfcExtrudedAreaSolid.Position to None when in IFC2x3 Position wasn't optional, so now in IFC2X3 it's going to have some default position

RuntimeError: Error: Python: Traceback (most recent call last):
  File "\bim\module\model\product.py", line 123, in execute
    return IfcStore.execute_ifc_operator(self, context)
  File "\bim\ifc.py", line 336, in execute_ifc_operator
    result = getattr(operator, "_execute")(context)
  File "\bim\module\model\product.py", line 148, in _execute
    if self.generate_layered_element(ifc_class, relating_type):
  File "\bim\module\model\product.py", line 274, in generate_layered_element
    obj = slab.DumbSlabGenerator(relating_type).generate()
  File "\bim\module\model\slab.py", line 143, in generate
    return self.derive_from_cursor()
  File "\bim\module\model\slab.py", line 147, in derive_from_cursor
    return self.create_slab()
  File "\bim\module\model\slab.py", line 179, in create_slab
    representation = ifcopenshell.api.run(
  File "\libs\site\packages\ifcopenshell\api\__init__.py", line 66, in run
    result = usecase_class(ifc_file, **settings).execute()
  File "\libs\site\packages\ifcopenshell\api\geometry\add_slab_representation.py", line 42, in execute
    [self.create_item()],
  File "\libs\site\packages\ifcopenshell\api\geometry\add_slab_representation.py", line 58, in create_item
    extrusion = self.file.createIfcExtrudedAreaSolid(
  File "\libs\site\packages\ifcopenshell\file.py", line 337, in create_entity
    e[idx] = arg
  File "\libs\site\packages\ifcopenshell\entity_instance.py", line 260, in __setitem__
    self.wrapped_data.setArgumentAsNull(idx)
  File "\libs\site\packages\ifcopenshell\ifcopenshell_wrapper.py", line 4929, in setArgumentAsNull
    return _ifcopenshell_wrapper.entity_instance_setArgumentAsNull(self, i)
RuntimeError: Attribute not set
2024-04-16 10:34:29 +02:00
Andrej730 08ace6616c automatically adjust viewport camera on loading ifc
It will make sure you'll be able to see the project's elements in viewport when it's loaded (same way as if you'd select all objects and hit "Numpad .").

Couldn't find any way to make it work without enablging / disabling selection - https://projects.blender.org/blender/blender/issues/112141
2024-04-16 10:34:29 +02:00
Andrej730 b5c80ebaab Fixed issue using mitre with small angles between walls (#3721)
Normalization is unrelated, just added to be safe.
2024-04-16 10:34:29 +02:00
Andrej730 ee4568b7d2 some DumbWallJoiner.join() refactor 2024-04-16 10:34:29 +02:00
Dion Moult 271161f00f Minor fix after 6887210 2024-04-16 10:34:29 +02:00
Dion Moult 01c1023af2 Fix bug when casting to tessellation for invalid IFCs which don't use material sets properly. 2024-04-16 10:34:29 +02:00
Dion Moult 1a59b4913e IfcFM now uses Openpyxl and supports xlsx. Reorder columns to be more logical and group similar data types together (at least for me). 2024-04-16 10:34:29 +02:00
Dion Moult 2762d9c47f Fix #3733. Fix round function precision error. 2024-04-16 10:34:29 +02:00
Dion Moult 5edc6c4d8a Enable Sphinx auto section labels. Minor doc link fix. 2024-04-16 10:34:29 +02:00
Dion Moult 073491a78a For convenience, rounding to an integer value now also casts to integer. 2024-04-16 10:34:29 +02:00
Ryan Schultz fa08d9d01e Update installation.rst 2024-04-16 10:34:29 +02:00
Dion Moult a405b36167 ResetAbsoluteCoordinates IfcPatch recipe can now choose whether to reset placements, geometry, or both points. 2024-04-16 10:34:29 +02:00
Dion Moult 678dce8fc0 Fix bug where unedited mesh objects were still tagged as edited which led to unnecessary processing prior to drawing generation or saving. 2024-04-16 10:34:29 +02:00
Dion Moult 292194c4f6 You can now customise the display of empty strings in IfcCSV. 2024-04-16 10:34:29 +02:00
Dion Moult c4eed78ca1 Update documentation with new selector keys. 2024-04-16 10:34:29 +02:00
Dion Moult 23da63b9a6 Big clean up to IfcFM. It's almost usable! 2024-04-16 10:34:29 +02:00
Dion Moult 62b2b9983f Fix #3682. You can now tag setout points with dynamic xyz / enh values. 2024-04-16 10:34:29 +02:00
Dion Moult e8b52d3d93 Drawing text annotation now use the new format functions instead of executing arbitrary code. 2024-04-16 10:34:29 +02:00
Dion Moult b792fff98c New substr formatting function. 2024-04-16 10:34:29 +02:00
Dion Moult e7a90b5597 You can now choose both input and output units for imperial formatting 2024-04-16 10:34:29 +02:00
Ryan Schultz 41c6830ee0 Update ifc_classes_suggestions.json 2024-04-16 10:34:29 +02:00
Dion Moult ee2f5fc646 Revert "Spreadsheet Import/Export: Fix feet and inch formatting"
This reverts commit 921d412fc7.
2024-04-16 10:34:29 +02:00
Dion Moult fbe52287fc Revert "Small fix for feet and inch formatting on Spreadsheet Import/Export"
This reverts commit 7935bd22c2.
2024-04-16 10:34:29 +02:00
Dion Moult 396fdc7806 Fix #3722. Fix ifcopenshell pypi distribution to use modern manylinux tag for glibc 2.31. 2024-04-16 10:34:29 +02:00
Ryan Schultz bf023370ef Small fix for feet and inch formatting on Spreadsheet Import/Export 2024-04-16 10:34:29 +02:00
Andrej730 d5e222d8de remove the orphaned data created on object duplicate
orphaned mesh still had ifc_definition_id of the original object and could have caused issues in theory
2024-04-16 10:34:29 +02:00
Andrej730 21aad4c4f5 Update status visibility automatically #3721 2024-04-16 10:34:29 +02:00
Dion Moult fbad0eeac2 Fix #3705. Fix ambiguity in using commas in unquoted strings in facet selector. 2024-04-16 10:34:28 +02:00
Dion Moult 66032dd8f3 Fix #3712. Fix bug where grid axes couldn't be duplicated. 2024-04-16 10:34:28 +02:00
Dion Moult de04c71335 Improve hello world documentation to be more beginner friendly 2024-04-16 10:34:28 +02:00
Andrej730 aa71025e7f hotfix for ca4efa6e5 2024-04-16 10:33:34 +02:00
Andrej730 eeb7c9b010 Remove operator's name from set_tab tooltip #3704 2024-04-16 10:33:34 +02:00
Andrej730 98503179d9 bim.mep_add_bend
Added operator to create bend fittings between objects, it's still work in progress and now it only supports rectangular profiles.

Small demo - https://imgur.com/a/vM7hnJa
2024-04-16 10:33:34 +02:00
Andrej730 3827e1d267 notify about unsupported transition case 2024-04-16 10:33:34 +02:00
Dion Moult ed9f50298c See #3700. Fix issue in drawing include filter where "addition" selections like GlobalIds and classes didn't have any impact. 2024-04-16 10:33:34 +02:00
Dion Moult e336c63005 You can now load 2D point clouds. 2024-04-16 10:30:32 +02:00
Dion Moult 59c8326c51 See #3682. You can now add symbols and multisymbols (i.e. one vertex per symbol) annotations. New default symbols for setout points in demo library. 2024-04-16 10:30:32 +02:00
Andrej730 1a3ac79dc2 Fixed bug with adding obstruction fittings 2024-04-16 10:30:22 +02:00
Andrej730 284feb5d67 couple descriptions for setting north 2024-04-16 10:30:22 +02:00
Dion Moult 2f6e702809 Fix #3470. Fix bug where hppfcl for IfcClash was incorrectly bundled for Windows. 2024-04-16 10:30:22 +02:00
Dion Moult 7b0a10dc13 Fix bug where models that might have invalid shapes or 2D far shapes might break georeferencing and model loading. 2024-04-16 10:28:25 +02:00
Dion Moult 2bc7b98806 Minor fix 2024-04-16 10:28:25 +02:00
Dion Moult 2743d18f50 IfcTester BCFs now include viewpoints for occurrences 2024-04-16 10:28:25 +02:00
Dion Moult 69d9388f61 Add filepath popup when saving IDS reports to BCF 2024-04-16 10:28:25 +02:00
Dion Moult 39ec1f9ea0 Bump IOS 2024-04-16 10:28:25 +02:00
Dion Moult 2ea3704d96 Update BBIM tester module UI to be compatible with new IfcTester upgrades 2024-04-16 10:28:25 +02:00
Dion Moult 283961fc72 IfcTester now supports much more granular statistic reports and more detailed / beautiful HTML reports. 2024-04-16 10:28:25 +02:00
Dion Moult 68025d8204 Fix #3649. Increase profile threshold. 2024-04-16 10:28:25 +02:00
Dion Moult aacf902ce0 Fix #3667. Allow removing drawings if the sheet hasn't yet been generated or manually removed. 2024-04-16 10:28:25 +02:00
Dion Moult 116ad507cf Fix #3647. Fix bug where Windows .exe suffix needed to be explicit in commands. No more eval, and commands must now be provided in json form, and variables should be given as simple strings. 2024-04-16 10:28:25 +02:00
Sigma Dimensions (Yass) f1f5b7627c fix failed context for hotkey Shitf+C #3676 2024-04-16 10:28:25 +02:00
dushyant basson 429f468e47 Update src/qtviewer/ParseIfcFile.cpp
Co-authored-by: Thomas Krijnen <t.krijnen@gmail.com>
2024-04-16 10:28:25 +02:00
dushyant basson 504307791c Update src/qtviewer/ParseIfcFile.cpp
Co-authored-by: Thomas Krijnen <t.krijnen@gmail.com>
2024-04-16 10:28:25 +02:00
dushyant basson ac8db0e21b Revert "Updated included header files"
This reverts commit 65f86d929e.
2024-04-16 10:28:25 +02:00
dushyant basson 74d790a28e Updated included header files 2024-04-16 10:28:25 +02:00
Dushyant Basson 14454d1b78 Added output panel (for debug info, etc.) 2024-04-16 10:28:25 +02:00
Dushyant Basson 98102b9df0 added IFCOS libraries; Qt include dir 2024-04-16 10:28:25 +02:00
dushyant basson 3783729900 Rename files - fixing case change 2024-04-16 10:26:59 +02:00
dushyant basson eefe821d0a Updated to use Qt6; Created initial structure of the viewer with OpenGL widget 2024-04-16 10:26:58 +02:00
Dion Moult 1878dedbd4 Fix #3531. See #3660. Exclude 2D elements from generating shapely surface polygons in drawings. 2024-04-16 10:26:58 +02:00
Thomas Krijnen 5af30b6f07 #3660 Oops... propagate setting 2024-04-16 10:26:58 +02:00
Dion Moult 2ec1a97a00 Fix #3002. You can now have metadata classes on projection lines. 2024-04-16 10:26:58 +02:00
Dion Moult 7bcddb8951 Bump IOS to take advantage of setSegmentProjection 2024-04-16 10:26:58 +02:00
Andrej730 0001a1f98b Fixed #3666 after 101972f 2024-04-16 10:26:51 +02:00
Thomas Krijnen 09f68ae556 Update validate.py - catch some runtime errors 2024-04-16 10:26:51 +02:00
Thomas Krijnen 100ef1d375 Update ci.yml 2024-04-16 10:26:51 +02:00
Thomas Krijnen ecfeadbbd5 Update ci-py-only.yml 2024-04-16 10:26:51 +02:00
Thomas Krijnen dc84f84e86 #3660 setSegmentProjection() / --svg-segment-projection options 2024-04-16 10:26:51 +02:00
Dirk Olbrich 941d25d398 docs: fix backslash in cmake command 2024-04-16 10:26:51 +02:00
Dion Moult b33131db44 Fix #3644. Annotation matrixes properly calculated now for RCPs. 2024-04-16 10:26:51 +02:00
Bruno Postle 0a69e3668e BlenderBIM keep view when switching git revision 2024-04-16 10:26:51 +02:00
Sigma Dimensions (Yass) cd890b2c2e fix issue where add materials operator would only show when a material is selected 2024-04-16 10:26:51 +02:00
Sigma Dimensions (Yass) 41986fb051 fix toggle link selectability and visibility when linked IFCs use a relative path 2024-04-16 10:26:51 +02:00
Sigma Dimensions (Yass) e2ab4f1ed8 fix loading and unloading linked IFCs with a relative path 2024-04-16 10:26:51 +02:00
Sigma Dimensions (Yass) 68dcbd8e5c fix various issues by preventing data from linked IFCs to be saved in current project 2024-04-16 10:26:51 +02:00
Sigma Dimensions (Yass) 218d51cbc9 Maintain active status filters override when activating 3D model during drawing worfklows 2024-04-16 10:26:51 +02:00
Andrej730 a6f96fe0ad IfcElementType now appears first in Object Metadata
Because it's seems more general workflow to create types than just assign classes.
Example - https://i.imgur.com/DD8twX3.png
2024-04-16 10:26:51 +02:00
Andrej730 2808715406 Rename IFC AU Library to IFC Furniture library
Just thought watching BIM Voice last video that some people may overlook it like something Australia specific with "IFC AU Library" name.
2024-04-16 10:26:51 +02:00
Sigma Dimensions (Yass) d22095f603 fix removing drawings from sheets when deleting drawings #3645 2024-04-16 10:26:51 +02:00
Ryan Schultz 676b16bc29 Spreadsheet Import/Export: Fix feet and inch formatting 2024-04-16 10:26:51 +02:00
Andrej730 f573871493 shape_builder docs test 2024-04-16 10:26:51 +02:00
Christoph Mellueh cac6ea6263 add build to Makefile and use it in bcf-pypi Workflow 2024-04-16 10:26:51 +02:00
Andrej730 f7b46f1265 fill-bg for text instead of the entire symbol by default #3594
Before - https://i.imgur.com/OsQycgW.png
After - https://i.imgur.com/rZvXIoT.png
2024-04-16 10:26:51 +02:00
Chetan 76708dd8ce Create constants ELEMENT_ARRAY_BUFFER and ARRAY_BUFFER to allow for more descriptive bufferview construction. Change the bufferViewId variable from a static variable to a member variable because python instances of IfcOpenShell can have multiple serializers open at any given time. This commit also includes some minor code reformatting and code comments explaining the changes done. Finally integer constants GLB_FILE_HEAER, GLB_JSON_HEADER, GLB_BINARY_CHUNK_HEADER were added to make the glb file header creation more descriptive 2024-04-16 10:26:48 +02:00
Chetan f4cce9878f Give each accessor its own buffer view to improve the memory and rendering efficiency of the glb file 2024-04-16 10:25:02 +02:00
Sigma Dimensions (Yass) f7609132b4 run black and fix silly code #3652 2024-04-16 10:25:02 +02:00
Sigma Dimensions (Yass) 2e5819ca0a you can now reload linked IFCs #3652 2024-04-16 10:25:02 +02:00
Sigma Dimensions (Yass) 2e8a282276 Move grids panel under Project Setup 2024-04-16 10:25:02 +02:00
Dion Moult 8114df0263 Write documentation describing facet selector and element query syntax. 2024-04-16 10:25:02 +02:00
Dion Moult 4463b44d63 Bump IOS and enable unify inputs. 2024-04-16 10:25:02 +02:00
Dion Moult 54a0e4ebff Minor fix to use new regex syntax in select similar dialog. 2024-04-16 10:25:02 +02:00
Dion Moult 628005333d Minor fixes, and IfcCSV now uses pandas to import ODS/XLSX for more robust importing. 2024-04-16 10:25:02 +02:00
Dion Moult 2298201e50 Selector element key queries now allow for regex matching, and single regex matches return that only item, not a list with one item in it. 2024-04-16 10:25:02 +02:00
Dion Moult a30b2dff31 Fix #3587. IfcCSV now supports custom formatting functions. 2024-04-16 10:25:02 +02:00
Gorgious56 8f19e04ccc Fix #3641 : Error when creating roof type 2024-04-16 10:25:02 +02:00
Thomas Krijnen 0b673f725e #3158 Fix unify inputs 2024-04-16 10:25:02 +02:00
Thomas Krijnen b4045aa960 Update draw.py --with-unify-inputs [True] 2024-04-16 10:25:02 +02:00
Andrej730 4dba048fa0 small info message on bim.get_representation_ifc_parameters
just to notify that it worked but haven't found any parameters
2024-04-16 10:25:02 +02:00
Dion Moult 6721468bcf Fix incorrect implementation of regex matching 2024-04-16 10:25:02 +02:00
Dion Moult 279ddc639b Fix #3635. Minor fix. 2024-04-16 10:25:02 +02:00
Dion Moult f4fda85dfa Accommodate invalid Revit models where they have invalid material relationships. 2024-04-16 10:25:02 +02:00
Dion Moult 1fc4b921e6 Fix failing tests and optimise brick tests. 2024-04-16 10:25:02 +02:00
Andrej730 f3e38e8884 fixed errors after 13309cb8c #3624
for example it was throwing errors when using WindowTool you selected a wall and it would try to assign current type to wall
2024-04-16 10:25:01 +02:00
rileywong311 42be4344a1 Update core/test_brick.py 2024-04-16 10:25:01 +02:00
rileywong311 97ee85aa87 Update tool/test_brick.py 2024-04-16 10:25:01 +02:00
rileywong311 99b99fbf2c Fix bug where split screen selection from previous page is out of range on the next 2024-04-16 10:25:01 +02:00
rileywong311 c27d9ad382 Undo indentation from commit <e08283350> (did not account for no name existing) 2024-04-16 10:25:01 +02:00
rileywong311 7220dd024e Fix Brick core
- Refresh viewer now reloads both screens by default
- Rename "add_namespace" to "add_brick_namespace"
- Fix error where "view_brick_class" was run instead of "brick.run_view_brick_class"
2024-04-16 10:25:01 +02:00
rileywong311 6aa6f91be4 Update core\tool.py for Brick 2024-04-16 10:25:01 +02:00
rileywong311 d44e5987d2 Fix Brick tool
- Data is now stored regularly and parsed in props
- "get_convertable_brick_spaces" returns a set
- "export_brick_attributes" always returns a tuple of strings
2024-04-16 10:25:01 +02:00
rileywong311 fe8e370b8c Fix brick.feature
For one particular, I removed "And I set 'scene.BIMRootProperties.new_brick_relation_type' to 'hasPart'". Although it should really be "https://brickschema.org/schema/Brick#hasPart" to begin with, it was still failing the test. So removing it as a work around.
2024-04-16 10:25:01 +02:00
rileywong311 1f48281177 Refactor UI get_brick_relations 2024-04-16 10:25:01 +02:00
rileywong311 fd948e9481 Fix condition for hiding "view_brick_item" 2024-04-16 10:25:01 +02:00
rileywong311 529dc4d984 Rename 'add_brick_failed" to "add_brick_relation_failed" 2024-04-16 10:25:01 +02:00
rileywong311 1e6d86b4d7 Fix indentation for assign Brick reference 2024-04-16 10:25:01 +02:00
Gorgious 2ff4aba6cc Fix #3636 : Check if representation class exists before testing if it's a circle extrusion representation 2024-04-16 10:25:01 +02:00
Sigma Dimensions (Yass) a29ae07b72 updating a duration will not auto update schedule usage 2024-04-16 10:25:01 +02:00
Andrej730 dd02925cc4 Fixed bug adding ports to the transitions between profiles with an offset
end port ended up located without the offset
2024-04-16 10:25:01 +02:00
Andrej730 f92709dadd Fixed bug in shape_builder.mep_transition_calculate
it wasn't taking account that `h` can also end up negative
2024-04-16 10:25:01 +02:00
Andrej730 dcfd790a07 Fixed bug with segments incorrectly adjusted after adding transition
If transition was really long comparing to segments length then DumbProfileJoiner.join_E would start change their their length in unexpected way - ATSTART when you'd still expect ATEND and vice versa.

Also fixed the bug when segments length was incorrectly calculated - it wasn't calculating it world space when it makes more sense here to calculate it by local segments Z axis.
2024-04-16 10:25:01 +02:00
Dion Moult feec0e2437 Fix more failing tests. 2024-04-16 10:25:01 +02:00
Sigma Dimensions (Yass) 7b52e359f2 fix bug where nested resources in task ICOM panel didn't show 2024-04-16 10:25:01 +02:00
Sigma Dimensions (Yass) b27262f81f Resource Features :
- Adding/removing and edit productivity data is now easier (+ cleaner UI)
- Pressing calculate schedule work on a parent resource will default to calculating its nested resources schedule work.
- Show derived Schedule Work for a parent resource
- Improve apperance of Resource Tree Structure
2024-04-16 10:25:01 +02:00
Gorgious56 66dbd7d8e7 Prevent user from editing the mesh of a circle based extrusion 2024-04-16 10:25:01 +02:00
Dion Moult 1c016c4212 See #3581. Fix failing IOS tests. 2024-04-16 10:25:01 +02:00
Christoph Mellueh 50d0d16351 rename File and unify with ci-ifctester-pypi 2024-04-16 10:25:01 +02:00
Andrej730 eb95bdd21e Fixed #3624 - tools props were updating only for BIM Tool
It wasn't taking into account WallTool, BeamTool and all other tools we have.
2024-04-16 10:25:01 +02:00
Andrej730 966a04e053 Update currently selected ifc class and type on selecting object
Had this idea for awhile now and heard it multiple times from other people. Please give feedback if this feature gets in the way instead of helping.

Example - https://imgur.com/a/K4hz2FB
2024-04-16 10:25:01 +02:00
Andrej730 8ff760261b A button to jump back from boolean to the original object
Example - https://imgur.com/a/A3dVbFM
2024-04-16 10:25:01 +02:00
Dion Moult 2333997bda Fix #3632. Make search and CSV UIs share the same Blender props for DRY. 2024-04-16 10:25:01 +02:00
Dion Moult 6b05f4a2aa You can now reorder columns in IfcCSV 2024-04-16 10:25:01 +02:00
Dion Moult c190ae5aea Loading IFCs now prioritise 2D bodies over 3D non-bodies. This helps prevent loading and seeing a bunch of Box / Clearance representations. 2024-04-16 10:25:01 +02:00
Dion Moult f8b3b3a54f Fix #3627. Bug where exclude didn't take into account entities are "OR" not "AND". Whoops. 2024-04-16 10:25:01 +02:00
Sigma Dimensions (Yass) ed58072d64 run black 2024-04-16 10:25:01 +02:00
Sigma Dimensions (Yass) 1996e98506 Feature to calculate required resources 2024-04-16 10:25:00 +02:00
Sigma Dimensions (Yass) 39d072d0ca Calculates the number of resources based on required person-hours. 2024-04-16 10:25:00 +02:00
Sigma Dimensions (Yass) 05a5b2abfd clean up Resource UI using column layout 2024-04-16 10:25:00 +02:00
Jesusbill 60aaf4fc2c Fix duplicate id in EP_set_Drawing template 2024-04-16 10:25:00 +02:00
Andrej730 624d5f2580 bump ifcsverchok release in readme 2024-04-16 10:25:00 +02:00
Andrej730 8a3f2cf0ef added UI to display connections for realizing elements
Example - https://imgur.com/a/1ZZlTwp
2024-04-16 10:25:00 +02:00
Andrej730 d715bd784a Added small UI to show realizing elements for the connections
Example - https://i.imgur.com/JLDcnbK.png
2024-04-16 10:25:00 +02:00
Andrej730 8856d513f4 test to make sure nothing happened to ifcsverchok 😅 2024-04-16 10:25:00 +02:00
Andrej730 f88cdae500 a bit faster renaming ifc elements when renaming blender objects
Previously when you renamed blender object it was requiring the "Ifc.../" prefix so it would also change the name for ifc element. So when you wanted to rename something you'd only select and change the name part without prefix.

Now you can just type the name right in after using F2 which seems a bit quicker by a few less clicks.

Before - https://imgur.com/a/Rn7a17W
After - https://imgur.com/a/a3lmxte
2024-04-16 10:25:00 +02:00
Andrej730 8bb1a129dd fixed bug in mep transitions
it wasn't taking into account that offset can be too big to sustain the angle
2024-04-16 10:25:00 +02:00
Andrej730 4e47827b86 added tests for shape builder transition length calculator 2024-04-16 10:25:00 +02:00
Sigma Dimensions (Yass) 9b5b5da91e you can now also update resource numbers (usage) from the task ICOM resource list 2024-04-16 10:25:00 +02:00
Sigma Dimensions (Yass) afce0ce76c refactor highligh_task code 2024-04-16 10:25:00 +02:00
Dion Moult 678fb313eb Fix #3620. Bug where manually inserted windows should preseve the existing Z value. 2024-04-16 10:25:00 +02:00
Sigma Dimensions (Yass) 8299ae6239 when editing sequence relationships, enabling selecting successor and predecessor task 2024-04-16 10:25:00 +02:00
Sigma Dimensions (Yass) 2fc3c03170 feature to select a resource in resource tree from task ICOM list 2024-04-16 10:25:00 +02:00
Dion Moult e444003803 Fix #3628. Minor issue where regex queries didn't load properly. 2024-04-16 10:25:00 +02:00
Dion Moult 7a7ac30faf The copy property tool now works on enumerated properties. Hooray for copying over statuses! 2024-04-16 10:25:00 +02:00
Andrej730 01dad745ba Small fix for 422f772c4 2024-04-16 10:25:00 +02:00
Dion Moult 2e8c218415 IfcPatch now uses the new facet selector syntax. 2024-04-16 10:25:00 +02:00
Dion Moult 51e6d51a0d Due to popular demand, custom EPset_Status to be used for "userdefined" status values as well as for things which don't have a status. 2024-04-16 10:25:00 +02:00
Dion Moult 4217318654 New Status panel for managing statuses in the costing / scheduling tab. 2024-04-16 10:25:00 +02:00
Andrej730 098420b858 Fixed bug with remembering materials assigned to faces
The problem was that bim.update_representation was assigning representation styles without taking into account that some styles may not be actually used in the mesh, so it was always assigning first style (blender material) to the first IFCPOLYGONALFACESET even though it might be using for example the 3rd style.

More - https://community.osarch.org/discussion/1636/materials-not-remembering-their-assigment
2024-04-16 10:25:00 +02:00
Sigma Dimensions (Yass) 53a43442fe implement calculating task duration based on resource usage change for fixed person-hours and prevent constrained attributes from updating 2024-04-16 10:25:00 +02:00
Dion Moult 82f868f90c Fix #3627. Error where using filters incorrectly applied includes / excludes. 2024-04-16 10:25:00 +02:00
Sigma Dimensions (Yass) f8651430e6 consolidate constraint utilities into ifcopenshell.util.constraint and refactor 2024-04-16 10:25:00 +02:00
rileywong311 7e5bcd4c49 Update Brick feature tests 2024-04-16 10:25:00 +02:00
rileywong311 a5eb5c869d Catch Assign_Brick_Reference with no selections 2024-04-16 10:25:00 +02:00
rileywong311 328c38b640 Refactor+polish Brick UI 2024-04-16 10:25:00 +02:00
rileywong311 3e95f8a4ab Use "split" in Brick relations list to better align layout 2024-04-16 10:25:00 +02:00
rileywong311 1e0769b254 Update Brick References Panel 2024-04-16 10:25:00 +02:00
rileywong311 a9c5464ea9 Export/assign Brick library reference uses "label" if there is one 2024-04-16 10:25:00 +02:00
rileywong311 233b31a057 Brick UI relations list uses "label" if there is one 2024-04-16 10:25:00 +02:00
rileywong311 265948f37f Restore Brick select ifcGlobalID functionality 2024-04-16 10:25:00 +02:00
rileywong311 4c37423ff4 Move Brick "set last saved" to BrickStore 2024-04-16 10:24:59 +02:00
rileywong311 efa9cdbacb Simplify buttons for add Brick relations manually 2024-04-16 10:24:59 +02:00
rileywong311 7a925e3078 Rework Brick UI into toggle panels 2024-04-16 10:24:59 +02:00
rileywong311 164c0adc0d Fix up convert_ifc_to_brick
Remove line separation between code, but add comments
Add full URI to Brick relations
Fix typo where "system_uris" was written as "space_uris"
Remove unnecessary get of "distribution_elements = brick.get_convertable_brick_elements()" again
2024-04-16 10:24:59 +02:00
rileywong311 8ee28ecb52 Remove Brick data debugging printouts 2024-04-16 10:24:59 +02:00
rileywong311 8e74880767 Check Brick library location exists 2024-04-16 10:24:59 +02:00
Sigma Dimensions (Yass) 95de43f5b6 forgotten bits and bobs + run black 2024-04-16 10:24:59 +02:00
Sigma Dimensions (Yass) a2078e8de7 Feature to constrain a resource work or number of used resources 2024-04-16 10:24:59 +02:00
Sigma Dimensions (Yass) 3582ccc1d4 Fix calculating resource work based from parent's productivity and improve UI to show this 2024-04-16 10:24:59 +02:00
Sigma Dimensions (Yass) 2e4e2c3173 improve purge of remove_metric usecase 2024-04-16 10:24:59 +02:00
Sigma Dimensions (Yass) 2be46970fe api usecase to add a reference path to a metric objective 2024-04-16 10:24:59 +02:00
Sigma Dimensions (Yass) 8b43767a6f fix updating an objective's metric 2024-04-16 10:24:59 +02:00
Andrej730 7b135180a8 Save blenderbim last commit hash to the ifc header
Now it's possible to identify blenderbim version from .ifc file which is useful for debugging

Example:
FILE_NAME('test.ifc','2023-08-22T18:07:07+05:00',(),(),'IfcOpenShell v0.7.0-fc50bdd3a','BlenderBIM 0.0.999999-64bc7af','Nobody');
2024-04-16 10:24:59 +02:00
Dion Moult 9f42a91045 New util function to format a length value in preparation for custom formatting rules in drawings and schedules. 2024-04-16 10:24:59 +02:00
Thomas Krijnen d233f3e488 #3616 Only consider distance orthogonal to projection vector for 2d boolean preprocessing 2024-04-16 10:24:59 +02:00
Andrej730 ca7984e12e mep transitions - correct angle when connected segments share the same dimensions
Basically there are 3 methods to define the transition angle (https://i.imgur.com/AtCIJty.png). Before we supported only the second method, now we support 1 and 3 too.
2024-04-16 10:24:59 +02:00
Dion Moult e6e364780b IfcCSV can now create summary rows (e.g. total, average) at the end of the table (may or may not be in addition to group totals). 2024-04-16 10:24:59 +02:00
Dion Moult 5e36255efe When you force an object to be a tessellation, automatically remove all parametric constraints for you. 2024-04-16 10:24:59 +02:00
Dion Moult 2c0b6ca464 Fix bug where split elements by plane didn't work on multiple elements due to forgetting to toggle normals of the cutting plane. 2024-04-16 10:24:59 +02:00
Dion Moult 94e3627c8c IfcCSV now supports grouping and group operations like concat, sum, min, max, etc. 2024-04-16 10:24:59 +02:00
Dion Moult 83566845df New support for sorting IfcCSV outputs 2024-04-16 10:24:59 +02:00
Dion Moult 4838b13d63 Drawing include/exclude filters now use the new facet selector syntax 2024-04-16 10:24:59 +02:00
Dion Moult a73fd2b55f Drawings now can include non-drawing specific annotations too. 2024-04-16 10:24:59 +02:00
Dion Moult 641b5e002a Now support custom queries for advanced users in the facet selector (similar to old selector). Also support types and count keys. (e.g. filter by objects with zero types, or zero materials, etc). 2024-04-16 10:24:59 +02:00
Dion Moult 2dd6b164a9 You can now get specific container types via util.element or util.selector. E.g. if you wanted to know what building an object is in or what storey an object is on. 2024-04-16 10:24:59 +02:00
Andrej730 b998e1c927 more work on transitions for MEP
- support transitions from and to circle profiles
- reworked transition length algorithm now it should be more accurate
- added support for creating transitions between profiles that are parallel but not collinear
2024-04-16 10:24:59 +02:00
Andrej730 e86ba7d2fb show error if transition length is more the segments length 2024-04-16 10:24:59 +02:00
Andrej730 c4030134f2 fix the errors occured trying to find compatible fitting type
1) It would stop if the first occurence would be connected to a segment without type
2) It would raise an error if one of the fitting's ports was not connected.
2024-04-16 10:24:59 +02:00
Sigma Dimensions (Yass) cb1ab7ec20 Update tests for editing sequence relationships 2024-04-16 10:24:59 +02:00
Sigma Dimensions (Yass) dddb4192af remove unused function 2024-04-16 10:24:59 +02:00
Sigma Dimensions (Yass) efa4db344e stop committing print statements 2024-04-16 10:24:59 +02:00
Sigma Dimensions (Yass) dde12b36f8 clean up updating selected task ICOM and UI re-ordering for work schedule subpanels 2024-04-16 10:24:59 +02:00
Sigma Dimensions (Yass) 954722f40b editing sequence relationships now requires less clicks 2024-04-16 10:24:59 +02:00
Sigma Dimensions (Yass) c16d8a39e9 ligten up add cost schedule UI 2024-04-16 10:24:58 +02:00
Dion Moult 7f34c54327 Close #3615. Follow (terrible, unofficial) convention that boolean result is intentional and boolean clipping result is automated. 2024-04-16 10:24:58 +02:00
Dion Moult f51f2a0e8c Fix #3614. Remove_pset API now supports removing predefined property sets (E.g. door lining properties). 2024-04-16 10:24:58 +02:00
Sigma Dimensions (Yass) df97bff203 update sequence tool functions 2024-04-16 10:24:58 +02:00
Sigma Dimensions (Yass) 3a6e9a4500 You can now save and load 4D animation color schemes 2024-04-16 10:24:58 +02:00
Dion Moult ae0a341c95 Fix #3551. Project specific pset templates now show up in the pset template editor. 2024-04-16 10:24:58 +02:00
Dion Moult 822bc4c08c Fix #3610. Glitch where editing existing float cells in IfcCSV ODS files created new cells or didn't update. 2024-04-16 10:24:58 +02:00
Dion Moult 3d933d2abe Minor fix 2024-04-16 10:24:58 +02:00
Dion Moult 6097d4415a Fix #3583. BaseQuantity QTOs in IFC4 can now be set on types. 2024-04-16 10:24:58 +02:00
Dion Moult 861659c212 Fix #3605. Bug where invalid representation type was created when booleans are added / removed. 2024-04-16 10:24:58 +02:00
Dion Moult eac84c6965 IfcCSV now supports importing from ODS, XLSX, and Pandas dataframes in addition to CSV 2024-04-16 10:24:58 +02:00
Dion Moult 00c81a3add Fix #3609. IfcCSV can now optionally attempt to "preserve" formatting for XLSX and ODS. 2024-04-16 10:24:58 +02:00
Dion Moult 9d4bb4ca27 Fix #2973. Bundle pandas, openpyxl, and odfpy in preprataion for upgrades in IfcCSV and IfcFM. 2024-04-16 10:24:58 +02:00
Dion Moult 312b2aecf0 Fix #3607. IfcCSV now supports omitting the GlobalId column. This is great for presentation schedules, but the tradeoff is that you can't use it for imports. 2024-04-16 10:24:58 +02:00
Dion Moult a9ea54a146 Bump IOS 2024-04-16 10:24:58 +02:00
Dion Moult 331b9cc440 See #3587. IfcCSV now supports custom header titles. 2024-04-16 10:24:58 +02:00
Ryan Schultz 90163c822a small fix on 'Live development environment' instructions 2024-04-16 10:24:58 +02:00
Sigma Dimensions (Yass) aad75f19bf fix saving and loading coulour schemes 2024-04-16 10:24:58 +02:00
Sigma Dimensions (Yass) b9cb297b4c fix enumartion of saved searches 2024-04-16 10:24:58 +02:00
Gorgious56 729e794091 You can now purge unused representations from the purge data panel 2024-04-16 10:24:58 +02:00
Gorgious56 035f7bcbae You can now purge types from the Purge data panel
And refactor a bit the purge profiles code to make use of the profile tool module
2024-04-16 10:24:58 +02:00
Dion Moult 4a37e29429 Advanced users can now directly edit search filter queries. 2024-04-16 10:24:58 +02:00
Dion Moult 539cd047a2 Minor fix to allow edit_work_time to work seamlessly for IFC4X3. 2024-04-16 10:24:58 +02:00
Andrej730 b021103a99 Refactored svg angle decorator code, solves #3602, more constistency between viewport and svg
Now it should be more consistent and more stable since svg and viewport are now using much more similar approach.
2024-04-16 10:24:58 +02:00
Dion Moult 130355f915 See #3603. Base64 encode gantt chart JSON data to prevent JSON parsing problems. 2024-04-16 10:24:57 +02:00
Andrej730 8464fc86a4 set_objects_selection to set selection only if active_object is not None
It was creating errors if you'd try to add angle annotation without having any objects active.
2024-04-16 10:24:57 +02:00
Sigma Dimensions (Yass) 5c22faebe6 Start improving UI for clash detection and management 2024-04-16 10:24:57 +02:00
Gorgious56 5e25e4670d Active profil users count is now dynamically fetched when the profile is clicked in the UI list 2024-04-16 10:24:57 +02:00
Andrej730 e1db448bad Fixed clearing scales (after 3345d7e)
It was producing a bug with text rotation in elevation view
Added fix to make matrix normalization work for the cases when matrix is rotated and I've just found that mathutils.Matrix.normalize(d) is very conveniently ignoring 4th column (translation) (same for mathutils.Vector)
2024-04-16 10:24:57 +02:00
Andrej730 42316f9591 Fill-bg for template tags #3594
Also simplified create_text_tag a bit - now it adds fill_bg by just by copying text tags and adding fill_bg filter to them instead of going through the entire logic again.
2024-04-16 10:24:57 +02:00
Dion Moult 53f0f7c390 Support arbitrary element selection for manual groups in search / IfcCSV, with support for huge element selections. 2024-04-16 10:24:57 +02:00
Dion Moult 1f84457ac9 IfcCSV can now use the graphical filter query builder too. 2024-04-16 10:24:57 +02:00
Dion Moult fa3c8b43f6 Add support for converting IFC spaces, systems, and feed / location / part relationships into Brick. Brick utilities can now get downstream equipment, and system util can now take into account port flow direction. 2024-04-16 10:24:57 +02:00
rileywong311 13b783feb5 Support displaying Brick Bnode relations
- Important for Ifc External References and other data.
- Set predicate_uri of predicates of the Bnode to None, which is used to remove the ability to delete the relationship in the UI.
- Also added try/excepts to difficult edge cases such as the object_uri not having a "#" character in it (such as "<http://qudt.org/vocab/unit/>") and the object_uri not being a brick class, which breaks "view_brick_item".
- Removing a Bnode type from the entity's relation removes all relations of the Bnode also
2024-04-16 10:24:57 +02:00
rileywong311 85c0ecba13 HIde Brick "Create Relation:" when not toggled 2024-04-16 10:24:57 +02:00
rileywong311 acb3d42245 Refresh Brick split screen on ConvertIfcToBrick 2024-04-16 10:24:57 +02:00
rileywong311 0dfdfb6463 Rework "view brick item" conditional access
Change from never show the operator if the relation is "type" to not showing it only if the "type" is the current class being viewed.

This may come in handy if other list views other than hierarchy are implemented.

It also implies why we don't want to show "view brick item" here: because we already viewing it.
2024-04-16 10:24:57 +02:00
rileywong311 4066cfc7ff Support Add Brick with IfcEntity selected (part 2 aka references)
Can now assign references again.
See https://github.com/BrickSchema/Brick/tree/master/examples/ifc for examples.
2024-04-16 10:24:57 +02:00
rileywong311 edb8d636d0 Support Add Brick with IfcEntity selected (part 1)
Next is to add the reference
2024-04-16 10:24:57 +02:00
Dion Moult ff9903b6a2 Fix #3589. Users can now configure how the null values are represented in IfcCSV. 2024-04-16 10:24:57 +02:00
Massimo Fabbro a8422717fd Clone opening initial draft 2024-04-16 10:24:57 +02:00
Gorgious 595f6a15a2 Move profile data and inverse check in data class 2024-04-16 10:24:57 +02:00
Gorgious56 a3aaa9eeba simplify ifc class suggestions json file and operator 2024-04-16 10:24:57 +02:00
Gorgious56 abc052b667 Scene properties : Highlight buttons to make them stand out more (#3598) 2024-04-16 10:24:57 +02:00
Gorgious56 4c221b41ad You can now purge unused profiles 2024-04-16 10:24:57 +02:00
Dion Moult f9ee96c47e Fix #3596. Fix bug where objects marked as edited were not unmarked after saving when toggling mode. Also fix bug where updating representation didn't check whether or not the meshlike representation has openings applied (which would bake the openings, instead of leaving them dynamic). 2024-04-16 10:24:57 +02:00
Gorgious56 b331623464 Active Profile's inverse relationships count is now displayed in the profiles editor 2024-04-16 10:24:57 +02:00
Dion Moult 54eda1a81c Fix #3591. Fix bug where IfcCSV import was not symmetric capability wise. Now you can set all sorts of complex values with the exact same keys you are using to query. 2024-04-16 10:24:57 +02:00
Thomas Krijnen d9e9013e38 #3429 Fix b operand non-planar face check 2024-04-16 10:24:57 +02:00
Andrej730 6f17846a87 Fix tests errors after 8689164
Error was AttributeError: module 'blenderbim.bim.handler' has no attribute 'setDefaultProperties'
2024-04-16 10:24:57 +02:00
Andrej730 c2013a172f geometry.edit_object_placement was producing orphaned placements
It was producing orphaned IfcLocalPlacement if placement was parent to some other one. During edit_object_placement we were replacing all parent references with the new placement but wasn't removing the old one.
2024-04-16 10:24:57 +02:00
Andrej730 69daaff3e1 misspelling 😅 2024-04-16 10:24:57 +02:00
Dion Moult b53c0d551c Fix #3590. Update dev instructions to symlink other utility libraries in BBIM. 2024-04-16 10:24:57 +02:00
Dion Moult 8260469c9b Fix #2626. New IFC overrides for setting object origins. 2024-04-16 10:24:57 +02:00
Massimo Fabbro 14bffda53c fix #3213 Problem related with sheet created on windows and opened on Linux 2024-04-16 10:24:56 +02:00
rileywong311 26b6bc2b3c Merge Brick classification
https://github.com/rileywong311/BrickIfcClassification
2024-04-16 10:24:56 +02:00
rileywong311 0e685f6fb2 Merge IfcClassification
https://github.com/Moult/IfcClassification/tree/master
2024-04-16 10:24:56 +02:00
Sigma Dimensions (Yass) 6d1b468166 enable an object to take part in an object type decomposition #3592 2024-04-16 10:24:56 +02:00
Dion Moult 93031f0fc0 Don't strictly require guids / class filters that exist in new facet selector. 2024-04-16 10:24:56 +02:00
Andrej730 b2868aa7f7 Calculate/guess quantity descriptions to avoid confusion 2024-04-16 10:24:56 +02:00
Dion Moult b4e46da97f See #3582. Fix bug where switching representations didn't handle curves in a body / model_view.
This means that if you created a curve body, you couldn't switch to it, or if you deleted everything, you ended up with an empty object. If you then tried to switch to that, it would "sync" the empty object and leave you with an empty cartesian point list. E.g:

 1. Create cube and assign IFC element.
 2. Remove all faces only (leaving edges and verts). Save changes.
 3. Switch to representation (bug!)
 4. Delete everything (no verts, edges, or faces). Attempt to save.
 5. "Revert" switch will fail, leading to empty mesh.
 6. Manually try to switch. Empty mesh will sync, creating an empty point list.
2024-04-16 10:24:55 +02:00
Andrej730 4fe03230c5 root.copy_class to remove connections from previously connected ports 2024-04-16 10:24:55 +02:00
Dion Moult 7038eb887f Fix #3584. Support matching enumerated properties in new facet selector. 2024-04-16 10:24:55 +02:00
Sigma Dimensions (Yass) 39d1bc36c6 experimental import plot coordinates 2024-04-16 10:24:55 +02:00
Andrej730 520e0cd0b4 Handle ods schedules without column styles #3573
Turned out there are ODS files (and turned out we're producing them ourselves from ifccsv) where column styles are not defined and therefore no width/style assigned to each column which was resulting in errors on building schedule.
2024-04-16 10:24:55 +02:00
Dion Moult 62678ac491 New simplified IfcFM parser for basic object data. 2024-04-16 10:24:55 +02:00
Andrej730 2cfb10df30 Small info message on using validate 2024-04-16 10:24:55 +02:00
Andrej730 ce91e04166 Remove empty IfcDocumentInformationRelationship #3581 2024-04-16 10:24:55 +02:00
Dion Moult faa5a78b39 Fix #3578. Support querying surface styles in tools like IfcCSV. 2024-04-16 10:24:55 +02:00
Dion Moult 48cd3b4a11 See #3561. Misc annotation decorator now only highlights non-internal edges. 2024-04-16 10:24:55 +02:00
Dion Moult 9d42df8315 Fix #3562. Non-manifold geometry is no longer considered in join criteria as there is no such thing as a closed polygon. 2024-04-16 10:24:55 +02:00
Sigma Dimensions (Yass) 89826deeb9 Improve Cost Schedule Layout 2024-04-16 10:24:55 +02:00
Sigma Dimensions (Yass) 02d09a3ab0 woopsies 2024-04-16 10:24:55 +02:00
Sigma Dimensions (Yass) 79a66c47f2 fix the bug fix #07b5c49 - where counting objects controlled by a cost item stopped working 2024-04-16 10:24:55 +02:00
Dion Moult 34c8e80cf0 Fix #3253. Bug where duplicating elements with fillings incorrectly recreated fillings at the cursor (i.e. the cursor was used as a target destination).
Now, instead of trying to be clever and regenerating filling locations and opening types, we simply copy the existing scenario. This also means it'll be more stable for weird fillings coming from proprietary apps.
2024-04-16 10:24:55 +02:00
Dion Moult 782e38b561 Fix #3472. You can now toggle selectability of linked IFCs. 2024-04-16 10:24:55 +02:00
Dion Moult 072344a9b5 See #3579. Support Google Colab as an installation option. 2024-04-16 10:24:55 +02:00
Bruno Postle 6234adf451 fix SyntaxError: '(' was never closed 2024-04-16 10:24:55 +02:00
Sigma Dimensions (Yass) 820d2f8a9d fix api logic where only quantities of the same type can be assignmed to a cost control 2024-04-16 10:24:55 +02:00
Sigma Dimensions (Yass) b92bbf1672 fix orphaned data when unassigning element quantities from cost item control 2024-04-16 10:24:55 +02:00
Dion Moult e659e033e2 Fix #3554. Support editing IfcIndexedPolyCurve profiles where IfcLineIndex has >2 indices. 2024-04-16 10:24:55 +02:00
Sigma Dimensions (Yass) f0032ec4cf Fix contracting/expanding cost schedule tree and add tests to avoid proof changes 2024-04-16 10:24:55 +02:00
Massimo Fabbro 8785dfbe65 Fix #3569 Variable name override caused the bug (#3575) 2024-04-16 10:24:55 +02:00
Dion Moult 8e444489d2 Fix #3564. Bug where IfcBuiltSystems didn't show up due to missing icon in IFC4X3. 2024-04-16 10:24:55 +02:00
Dion Moult 9462d906ef Fix #3576. Explicit drawing annotations are now immune to "include / exclude" filters. 2024-04-16 10:24:55 +02:00
Dion Moult da5fd9092c Fix #3556. Bug where quantities could not be imported using IfcCSV. Also make IfcCSV support any qset name, not just "Qto" prefixed names. 2024-04-16 10:24:55 +02:00
Dion Moult e24e15cb50 IfcCSV now uses the new filter query system. 2024-04-16 10:24:55 +02:00
Dion Moult afe87a6aec Fix #3577. Don't force uppercase in schedules. 2024-04-16 10:24:55 +02:00
rileywong311 ec0d3c1129 Make refresh Brick viewer refresh both screens 2024-04-16 10:24:55 +02:00
rileywong311 fae02aaff2 Second level query for Brick equipment+point roots 2024-04-16 10:24:55 +02:00
rileywong311 405e449380 Polish Brick UI and add "last saved" label 2024-04-16 10:24:55 +02:00
rileywong311 5b970dd7ea Filter Brick class if deprecated 2024-04-16 10:24:55 +02:00
rileywong311 1a24107497 Filter more (all) Brick ontology namespaces
I'm not sure if this method of filtering out the entire domain will cause problems. This could use investigation.
2024-04-16 10:24:55 +02:00
rileywong311 d23fe7b301 Clear Brick breadcrumbs on close project 2024-04-16 10:24:55 +02:00
rileywong311 15a8b4d120 Remove another needless BrickStore.graph.triples check
As before, this returns a generator type which always evaluates true, even if it is empty.
2024-04-16 10:24:55 +02:00
rileywong311 7dc3c62455 Add description to Brick operators 2024-04-16 10:24:54 +02:00
rileywong311 f2dc98e64e Move Brick "set root" button and change roots on update instead of operator 2024-04-16 10:24:54 +02:00
Sigma Dimensions (Yass) 10dfacd794 fix Cost schedule of rates UI bug where linked types dont't refresh correctly (and black formatting) 2024-04-16 10:24:54 +02:00
Dion Moult b5cbeb3fb1 See #3561. Fix bug where schedules couldn't be removed. 2024-04-16 10:24:54 +02:00
Dion Moult 600456641d Auto create relevant context when attempting to add an annotation to make it friendlier for new users. 2024-04-16 10:24:54 +02:00
Dion Moult 7fcc3f8e3b Fix #2894. Implement reflected ceiling plans. Note that this requires new bot build. 2024-04-16 10:24:54 +02:00
Dion Moult 5ae55cd89e See #3501. Minor matrix math fix that caused annotations to not appear in global coordinates. 2024-04-16 10:24:54 +02:00
Dion Moult a7cb0cdac7 Improve default search filter to include types and spatial elements. 2024-04-16 10:24:54 +02:00
Sigma Dimensions (Yass) f125032d46 Feature to add a camera to extents of the scene objects 2024-04-16 10:24:54 +02:00
Sigma Dimensions (Yass) a0768ff408 feature to clear previous 4D Animation (object keyframes & colors) 2024-04-16 10:24:54 +02:00
Kristoffer Andersen 144a61662c Update bld.bat
reduce number of schema variations on windows as well
2024-04-16 10:24:54 +02:00
Kristoffer Andersen 1eff547af2 Update meta.yaml
pin compatible boost, occt and cgal-cpp
2024-04-16 10:24:54 +02:00
Kristoffer Andersen cf8945ec2c Update build.sh
limit number of schema variants
2024-04-16 10:24:54 +02:00
Dion Moult 9cb3ce1f9a See #2894. Implement SVG mirroring options (typically used for RCPs or useful when converting to other things like DXF). 2024-04-16 10:24:54 +02:00
Sigma Dimensions (Yass) eaffd4a2a1 simplify setup_default_task_columns 2024-04-16 10:24:54 +02:00
Sigma Dimensions (Yass) 73f81a9bd3 animation settings now use human readable durations to make it less confusing 2024-04-16 10:24:54 +02:00
Sigma Dimensions (Yass) f728004077 simplify updateTaskDuration 2024-04-16 10:24:54 +02:00
Sigma Dimensions (Yass) 8dbdfa2301 WIP - Scheduling UI improvements 2024-04-16 10:24:54 +02:00
Sigma Dimensions (Yass) c864bb88f5 Hide Header for Costing and Schedule Tab 2024-04-16 10:24:54 +02:00
Sigma Dimensions (Yass) 044a2f8960 Revert "Rename and move sub panels of Costing and Schedule Tab"
This reverts commit 9d4715c0a9.
2024-04-16 10:24:54 +02:00
Andrej730 b6ed12589f plug add_transition to fit_flow_segments 2024-04-16 10:24:54 +02:00
Andrej730 ba9fa8a091 Adjusting connected elements on bim.regenerate_distribution_element
Basically commented out automatic adjustment after 45f81b478 - now it's hapenning only when you decide to regenerate it.

It's adjusting connected segments extrusion and location, for all other elements besides segments it's adjusting only location. The idea is it will try to change as less as possible.

Demo - https://imgur.com/oZ1I2Bl
2024-04-16 10:24:54 +02:00
Andrej730 4f8a53f048 quickly connect mep elements if they have matching ports
Demo - https://imgur.com/a/o9u8M1u
2024-04-16 10:24:54 +02:00
Andrej730 75e0d94588 fixed bug getting port relating element in ifc2x3 2024-04-16 10:24:54 +02:00
Andrej730 fe2b22b6cd More descriptive error message on attempt to delete drawings category 2024-04-16 10:24:54 +02:00
Andrej730 c2f515402b small refactor 2024-04-16 10:24:53 +02:00
Thomas Krijnen 76235f151e Update draw.py --include-curves 2024-04-16 10:24:53 +02:00
Kristoffer Andersen 57a36de71e Update build.sh
fix env var declaration
2024-04-16 10:24:53 +02:00
Kristoffer Andersen e7ace4c0bd Update build.sh
Reduce number of schema versions
2024-04-16 10:24:53 +02:00
Thomas Krijnen 9adb4ac82b #3510 Sample points along diagonal as well for quick and dirty occlusion detection 2024-04-16 10:24:53 +02:00
Andrej730 040cd398cf remove_product to also remove psets for types 2024-04-16 10:24:53 +02:00
Andrej730 dbc482dfee More Ports UI
Created more UI for ports.

Now you can see the list of ports from UI and what objects they are connected to, you can quickly select any ports/connected objects or disconnect objects.

From port UI you can see what object's it located on and what object it's connected to and quickly jump across them.

Demo - https://imgur.com/a/Gu4Vz7V
2024-04-16 10:24:53 +02:00
Andrej730 86b63242d8 bim.add_transition
Added simple operator to add transition between two mep segments (now only rectangular collinear segments are supported).
It also reuses the transition type that was previously used to connect segments of the same type.

Demonstration - https://imgur.com/a/c1AOxj1
2024-04-16 10:24:53 +02:00
Andrej730 2c98ab078a Fix default mep profile names
Previously it was generating names like 4000000x4000000 in mm projects.
2024-04-16 10:24:53 +02:00
Thomas Krijnen 1f4b12443a fix edge segments in world coords #3536 2024-04-16 10:24:43 +02:00
Dion Moult 00bd159ee7 IfcTester JSON reporter now also stores identification data separately for convenient reporting. 2024-04-16 10:22:47 +02:00
Dion Moult c9adefd947 Store applicability in IfcTester JSON results 2024-04-16 10:22:47 +02:00
Dion Moult 9b2455e0f0 Fix #2753. Disable mapping representations when appending assets via the ExtractElements recipe to be more forgiving (and faster) on invalid models. 2024-04-16 10:22:47 +02:00
Dion Moult 3cabe935cd Fix SurfaceColour typo that broke loading colours in some IFCs 2024-04-16 10:22:47 +02:00
Dion Moult 73b93e7020 Fix #3547. Bug where using existing clippings were not preserved when editing profile or wall representations. 2024-04-16 10:22:47 +02:00
arun bd1bfe548a Update create_2pt_wall.py (#3553)
* Update create_2pt_wall.py

included unit scale for use cases other than si unit

* Revised Update create_2pt_wall.py

included is_si kwarg to select between si units and other units and also changed the dtype of p1 and p2 array to float incase they are entered as integers
2024-04-16 10:22:46 +02:00
Carlos Dias a85fdf3f8e Add element guId in BCF report (#3549) 2024-04-16 10:22:46 +02:00
Thomas Krijnen ee09f2404b Filter duplicate edge indices #3546 2024-04-16 10:22:34 +02:00
Dion Moult c6438933ba Whoops 2024-04-16 10:10:51 +02:00
Dion Moult a6c8a2abd4 Dissolve specifically IOS triangulated edges for meshes instead of generic Blender limited dissolve. 2024-04-16 10:10:51 +02:00
Dion Moult 65b5a6f8f9 Skeleton operator to regenerate distribution elements recursively 2024-04-16 10:10:51 +02:00
Dion Moult dca25e8475 Initial implementation of scale dependent map conversion for IFC4X3 2024-04-16 10:10:51 +02:00
rileywong311 9910c53f38 Add brick create relation with split screen 2024-04-16 10:10:51 +02:00
rileywong311 866a6d429b Implement Brick split screen 2024-04-16 10:10:51 +02:00
rileywong311 6dd908c207 Add more subclasses to Brick root options 2024-04-16 10:10:51 +02:00
rileywong311 eea577d463 Move Brick list root setting 2024-04-16 10:10:51 +02:00
rileywong311 d5159be571 Reformat Brick props order and singularize "brick_entity_classes" 2024-04-16 10:10:51 +02:00
rileywong311 abd4fb18fd Refactor AddBrickRelation to combine object namespace+label in operator
This is an important change that should make adding relations through other methods easier to implement
2024-04-16 10:10:51 +02:00
rileywong311 242d2cb4ef Guard loading brick files from bad paths
Referred to "IFCFileSelector.is_existing_ifc_file" method for to make this
2024-04-16 10:10:51 +02:00
rileywong311 5c6ff36813 Add "rdfs:label" to Brick relation options
This is a tricky one because "rdfs:label" cannot really be queried from the Brick ontology, so it is a special case that probably needs to get added manually. Furthermore, an entity really shouldn't have multiple labels, so the option to give an entity an "rdfs:label"
 should only appear if it doesn't have one already. The way I did it meant I had to manually reset the Enum type in Blender because it was the active one selection and made the Enum blank since it got removed  now that the entity has a "rdfs:label." One possible alternative solution is to allow multiple labels, but in the query to import bricks in the UI list only select one label somehow.
2024-04-16 10:10:51 +02:00
rileywong311 a56ec73f3e Change BrickschemaData.relations to BrickschemaData.active_relations 2024-04-16 10:10:51 +02:00
rileywong311 49b5fb35a8 Load Brick relationships from schema 2024-04-16 10:10:51 +02:00
rileywong311 7f049f0067 Remove if Brickstore.graph.triples check
This returns a generator type which I believe is always truthy, so it didn't change anything.
2024-04-16 10:10:51 +02:00
rileywong311 17317c65cb Implement basic Brick create relation 2024-04-16 10:10:51 +02:00
rileywong311 07bd99d461 Add "remove brick relation" operator 2024-04-16 10:10:51 +02:00
rileywong311 b5d9c3f5ff Rename Brick "attributes" to "relations" 2024-04-16 10:10:51 +02:00
Dion Moult ed66572d66 Fix #3538. Update bl_info metadata to reflect that we are a native IFC authoring platform not an import-export add-on. 2024-04-16 10:10:51 +02:00
Andrej730 442918e3a3 option to provide step_id into bim.create_shape_from_step_id directly 2024-04-16 10:10:51 +02:00
Andrej730 1a88191173 remove_product to remove object placement too
previously it wasn't deleting object placement when you removed the objects (and related elements like IfcDirections etc) and working on project long enough you might had a bunch of orphaned data in it
2024-04-16 10:10:51 +02:00
Andrej730 1496cc04ff automatically assign ports predefined type 2024-04-16 10:10:51 +02:00
Andrej730 a998cd476d small change for readibility 2024-04-16 10:10:51 +02:00
Andrej730 7cfdf1f1d5 adjust obstruction position on changing segment length
Now when you change the segment's length connected obstructions will adjust. Same for changing obstruction's length. You can also move obstructions/segment around and then use "Regenerate" to make them fit.
Small demo - https://imgur.com/a/atm8Mdx
2024-04-16 10:10:51 +02:00
Andrej730 6f975529f4 add_obstruction to fit_flow_segments, derive it's position from cursor 2024-04-16 10:10:51 +02:00
Andrej730 cd9854707a Fixed #3533 (also fixed the same issue for windows) 2024-04-16 10:10:51 +02:00
Andrej730 f4f04db952 Fixed error on drawing tester UI
Error was:
Traceback (most recent call last):
  File "\3.6\scripts\addons\blenderbim\bim\module\tester\ui.py", line 39, in draw
    row.prop(self.props, "should_load_from_memory")
AttributeError: 'BIM_PT_tester' object has no attribute 'props'
2024-04-16 10:10:51 +02:00
Dion Moult b2db70a2ac Whoops 2024-04-16 10:10:51 +02:00
Dion Moult b6b2c718f6 Skeleton of "add fitting" operator which decides appropriate fitting type 2024-04-16 10:10:51 +02:00
Andrej730 fa3e3bc9b8 Fixed TestGetApplicableTypes after 0e69f484f 2024-04-16 10:10:51 +02:00
Andrej730 391cecdb21 keep the default flow direction for ports NOTDEFINED as it's not yet set 2024-04-16 10:10:51 +02:00
Andrej730 0df12194d6 operator to add mep obstruction
Currently it's not yet available from UI, only from F3 menu.
On changing segment's length obstruction is not yet adjusted.
Short demonstration - https://imgur.com/a/I5fybpO
2024-04-16 10:10:51 +02:00
Andrej730 25ec0ee36c root.remove_product to remove IfcRelConnectsPorts too
previously if you deleted some flow segment that was connected to another the connection would stay resulting in invalid ifc and other bugs
2024-04-16 10:10:51 +02:00
Andrej730 72c2ef1dd1 Poll check for show/hide ports
https://i.imgur.com/NFAM1UC.png
2024-04-16 10:10:51 +02:00
Andrej730 8c21c74ff5 Communicate that blend file is also saved on Ctrl-S
https://i.imgur.com/BnzTDhM.png
2024-04-16 10:10:51 +02:00
Andrej730 c2320bb320 small add_constr_type_instance refactor
ifc_class removed as it was never used - ifc_class was always figured either from BIMModelProperties.relating_type_id or operator.relating_type_id
2024-04-16 10:10:50 +02:00
Dion Moult a2b972707e Another minor documentation fix 2024-04-16 10:10:50 +02:00
Dion Moult 17de7a1808 Easily create a "default" duct / pipe even if you have no demo library. 2024-04-16 10:10:50 +02:00
Dion Moult ec4f4bd158 Minor documentation fix 2024-04-16 10:10:50 +02:00
Andrej730 9812e5a603 Fixed error opening type manager from window_tool, slab_tool etc
Th error was:

Error: Python: Traceback (most recent call last):
  File "\scripts\addons\blenderbim\bim\module\model\ui.py", line 54, in invoke
    props.type_class = props.ifc_class
TypeError: bpy_struct: item.attr = val: enum "" not found in ('IfcActuatorType', 'IfcAirTerminalBoxType', 'IfcAirTerminalType', 'IfcAirToAirHeatRecoveryType', 'IfcAlarmType', 'IfcAudioVisualApplianceType', 'IfcBeamType', 'IfcBoilerType', 'IfcBuildingElementPartType', 'IfcBuildingElementProxyType', 'IfcBurnerType', 'IfcCableCarrierFittingType', 'IfcCableCarrierSegmentType', 'IfcCableFittingType', 'IfcCableSegmentType', 'IfcChillerType', 'IfcChimneyType', 'IfcCivilElementType', 'IfcCoilType', 'IfcColumnType', 'IfcCommunicationsApplianceType', 'IfcCompressorType', 'IfcCondenserType', 'IfcControllerType', 'IfcCooledBeamType', 'IfcCoolingTowerType', 'IfcCoveringType', 'IfcCurtainWallType', 'IfcDamperType', 'IfcDiscreteAccessoryType', 'IfcDistributionChamberElementType', 'IfcDistributionElementType', 'IfcDoorStyle', 'IfcDoorType', 'IfcDuctFittingType', 'IfcDuctSegmentType', 'IfcDuctSilencerType', 'IfcElectricApplianceType', 'IfcElectricDistributionBoardType', 'IfcElectricFlowStorageDeviceType', 'IfcElectricGeneratorType', 'IfcElectricMotorType', 'IfcElectricTimeControlType', 'IfcElementAssemblyType', 'IfcEngineType', 'IfcEvaporativeCoolerType', 'IfcEvaporatorType', 'IfcFanType', 'IfcFastenerType', 'IfcFilterType', 'IfcFireSuppressionTerminalType', 'IfcFlowInstrumentType', 'IfcFlowMeterType', 'IfcFootingType', 'IfcFurnishingElementType', 'IfcFurnitureType', 'IfcGeographicElementType', 'IfcHeatExchangerType', 'IfcHumidifierType', 'IfcInterceptorType', 'IfcJunctionBoxType', 'IfcLampType', 'IfcLightFixtureType', 'IfcMechanicalFastenerType', 'IfcMedicalDeviceType', 'IfcMemberType', 'IfcMotorConnectionType', 'IfcOutletType', 'IfcPileType', 'IfcPipeFittingType', 'IfcPipeSegmentType', 'IfcPlateType', 'IfcProtectiveDeviceTrippingUnitType', 'IfcProtectiveDeviceType', 'IfcPumpType', 'IfcRailingType', 'IfcRampFlightType', 'IfcRampType', 'IfcReinforcingBarType', 'IfcReinforcingMeshType', 'IfcRoofType', 'IfcSanitaryTerminalType', 'IfcSensorType', 'IfcShadingDeviceType', 'IfcSlabType', 'IfcSolarDeviceType', 'IfcSpaceHeaterType', 'IfcSpaceType', 'IfcSpatialZoneType', 'IfcStackTerminalType', 'IfcStairFlightType', 'IfcStairType', 'IfcSwitchingDeviceType', 'IfcSystemFurnitureElementType', 'IfcTankType', 'IfcTendonAnchorType', 'IfcTendonType', 'IfcTransformerType', 'IfcTransportElementType', 'IfcTubeBundleType', 'IfcUnitaryControlElementType', 'IfcUnitaryEquipmentType', 'IfcValveType', 'IfcVibrationIsolatorType', 'IfcWallType', 'IfcWasteTerminalType', 'IfcWindowStyle', 'IfcWindowType')

WARN (bpy.rna): C:\Users\blender\git\blender-v360\blender.git\source\blender\python\intern\bpy_rna.c:1343 pyrna_enum_to_py: current value '8' matches no enum in 'BIMModelProperties', '', 'ifc_class'
2024-04-16 10:10:50 +02:00
Andrej730 bd6e4fbd64 tests for system.get_connected_to / get_connected_from 2024-04-16 10:10:50 +02:00
Andrej730 c5c8a3ba0b error message on setting flow direction for disconnected port
previously it just did nothing which was a bit confusing
2024-04-16 10:10:50 +02:00
Chetan 0ef14bad6f When creating a GLTF file, make the material double sided to fix a bug where some surfaces were transparent. This will allow surfaces created from a mesh to be be viewed from all angles regardless of the shape of the mesh or the directions of the normals. 2024-04-16 10:10:50 +02:00
Dion Moult b044ddfaa2 Flow segments are now created at a specific RL above the active storey in the BIM Tool 2024-04-16 10:10:50 +02:00
ay-ex f94aa6b313 fix_choco_cmake_url (#3528)
fixed problematic url for blender cmake
2024-04-16 10:10:50 +02:00
Andrej730 a3d1c60375 fixed bug in system.get_connected_to / get_connected_from
import was missing
2024-04-16 10:10:50 +02:00
Andrej730 d5e26b5efe Create empty at object placement from debug panel
Small feature for debugging - https://i.imgur.com/OSOCIqG.png
2024-04-16 10:10:50 +02:00
Andrej730 81dc68d11d Fixed #3262 2024-04-16 10:10:50 +02:00
Andrej730 60d62c2dd4 sort keys in the entity to type mapping 2024-04-16 10:10:50 +02:00
Andrej730 871902de12 More general solution for #3466 2024-04-16 10:10:50 +02:00
Dion Moult e49c373011 Fix #3465. Move representation utilities into new tab system. 2024-04-16 10:10:50 +02:00
Dion Moult d330b2f0c6 Fix #3483. You can now conveniently duplicate material layers. 2024-04-16 10:10:50 +02:00
Bruno Postle ed470b6380 Fix some broken restructured text formatting 2024-04-16 10:10:50 +02:00
Dion Moult 418a3feb6c Fix #3453. Hidden annotation type removed, and demo library now comes with linetypes for dashed, fine, thin, medium, thick, and strong. 2024-04-16 10:10:50 +02:00
Wei Yang 8203b2b6d9 Add UV texture support for IfcTessellatedFaceSet (#3523)
* Add texture support for IfcIndexedTextureMap

* fix description.

* Fix posible duplicate coordinate index issue

* Clean up code.

* revert default clean_mesh.

* Fix errors.

* change to EXTEND mode when not RepeatS/T

* remove tris merge to support mix quads and tris.
2024-04-16 10:10:50 +02:00
Massimo Fabbro 44517f3b1d Add new api function that allows to create arbitrary profiles with voids (#3522) 2024-04-16 10:10:50 +02:00
Dion Moult 7d03b0017b Fix #3466. Bug in upstream IFC where distribution elements and furnishing elements had no corresponding type and occurrence. 2024-04-16 10:10:50 +02:00
Dion Moult 84c91518b5 Fix #2906. Basic support added for perspective drawings. 2024-04-16 10:10:50 +02:00
Dion Moult dc18f7a68a Fix #3484. You can now have project-specific pset templates distributed with your project in a relative path. Defaults to pset/. 2024-04-16 10:10:50 +02:00
Dion Moult 43f9d8888f Purge obsolete search operators in favour of new search filters, colour legend system. 2024-04-16 10:10:50 +02:00
Dion Moult 0b306ccee3 Purge select similar prop operator in favour of dedicated select similar panel 2024-04-16 10:10:50 +02:00
Dion Moult 557fe5fd87 Purge obsolete & risky module unloading / loading feature in favour of tabs. 2024-04-16 10:10:50 +02:00
Dion Moult 1e1ab453bf Fix #3501. Annotation tool now creates annotations at the 3D cursor. 2024-04-16 10:10:50 +02:00
Dion Moult 7739779ed6 Fix #3511. You can now use a query to load in occurrences from another project (library). 2024-04-16 10:10:50 +02:00
Dion Moult c076cbc5db Fix #3502. New select similar feature. 2024-04-16 10:10:50 +02:00
Dion Moult 1d8738fea4 Fix #3273. Don't use simple string replacement when renaming drawings but instead identify elements by attributes which is preferred. 2024-04-16 10:10:50 +02:00
Thomas Krijnen 23d096be07 SVG serialization UnifyInputs option 2024-04-16 10:10:48 +02:00
Thomas Krijnen aa7b5bd1e3 Implement IfcGridPlacement 2024-04-16 10:08:33 +02:00
Thomas Krijnen 9214b00893 ci-ifctester-pypi.yml Add workflow_dispatch event 2024-04-16 10:05:52 +02:00
Thomas Krijnen 642e10a6a8 Include .xsd in ifctester package pypi distribution 2024-04-16 10:05:52 +02:00
Dion Moult e6528559d6 Fix #3521. Forgot to commit function. 2024-04-16 10:05:52 +02:00
Sigma Dimensions (Yass) 850b3d1c65 Rename and move sub panels of Costing and Schedule Tab 2024-04-16 10:05:52 +02:00
Dion Moult 4176bfa7d2 Fix #3471. Allow to select hidden types (except if the type is excluded). 2024-04-16 10:05:52 +02:00
Dion Moult 2843d86ad4 Fix #3518. Default to deeper opening extrusions to handle more wall thicknesses. 2024-04-16 10:05:52 +02:00
ay-ex 19dd89515f add ids html report template percentage bars per section (#3520)
adding html report template percentage bars to each section
2024-04-16 10:05:52 +02:00
Dion Moult fefda94153 Revert "Example of UI if we sentence-cased IFC classes. Good or bad? Please comment at https://community.osarch.org/discussion/comment/16493"
This reverts commit 53bd4bf5ea.
2024-04-16 10:05:52 +02:00
Dion Moult 1426481cf8 Fix #3509. Backport Qto_BodyGeometryValidation to IFC4 (via EQto) and fix bug where there was no way to have custom Qtos show up in the qto dropdown. 2024-04-16 10:05:52 +02:00
Dion Moult be2e2f7e91 Fix #3517. Fix bug where edit arbitrary profile button doesn't show if your profile has voids. 2024-04-16 10:05:51 +02:00
Dion Moult 4b5fcdf30f Potential fix for #3273 where renamed drawings might not get moved on Windows. 2024-04-16 10:05:51 +02:00
Dion Moult 472da333b9 Fix #3513. Minor issue where new hierarchical drawing list broke print all feature. 2024-04-16 10:05:51 +02:00
Dion Moult d927754d11 Fix #3512. Fix incorrect shapely fills due to unclosed polygons (tolerance issue) and incorrect raycast results. 2024-04-16 10:05:51 +02:00
Bruno Postle 66d4f04ba2 BlenderBIM filter Git messages, remove sort #3096 2024-04-16 10:05:51 +02:00
Ryan Schultz df699de97d added to ifc_classes_suggestions.json 2024-04-16 10:05:51 +02:00
Dion Moult f71bc79559 Fix #3006. Don't affect visibility of types when activating drawing. 2024-04-16 10:05:51 +02:00
Dion Moult 0de8275f84 Fix #3223. Fix #3474. When creating new representations, give the option to generate bounding box or "outline" curves (60 degree crease threshold hardcoded) instead of full 3D mesh. 2024-04-16 10:05:51 +02:00
ay-ex 5f295ab568 add collapsible detail results (#3508) 2024-04-16 10:05:51 +02:00
Dion Moult 0b42202490 Redo mechanism that allows filtered BIM Tool classes to be less "magic" and more explicit whether it filters all vs a specific element type. 2024-04-16 10:05:51 +02:00
Dion Moult ad1800b486 Fix #3479. Regression in 69fa124 when addressing #3421 that led to objects with multiple paths not taking part in the wall / slab joining procedure. 2024-04-16 10:05:51 +02:00
Dion Moult d275615829 Fix #3486. If Z index isn't specified, text is prioritised over other annotation types. 2024-04-16 10:05:51 +02:00
ay-ex 30cd295b13 fix choco url constants (#3504) 2024-04-16 10:05:51 +02:00
Dion Moult 1e8662f079 Fix #3497. Set closed vs unclosed polygonal face sets to allow loading in some IFC software. 2024-04-16 10:05:51 +02:00
Dion Moult 5b6f1323a5 Fix #3469. Fix bug where you couldn't load models if there was no style due to no polygons. 2024-04-16 10:05:51 +02:00
rileywong311 bc71ccd9f1 Refactor BrickStore.root_classes 2024-04-16 10:05:51 +02:00
Trashman247 546f8d6fe7 Ignore populate Brick attributes if active entity is a brick entity 2024-04-16 10:05:51 +02:00
Trashman247 d0673f185d Make Brick "root_classes" one source of truth 2024-04-16 10:05:51 +02:00
Trashman247 b68f064346 Change brick attributes query "name" and "value" to "predicate" and "object" 2024-04-16 10:05:51 +02:00
Trashman247 23c5c7cc24 Move brick entity classes to BrickStore and create drop-down for entity type creation 2024-04-16 10:05:51 +02:00
Trashman247 06331105fc Move Brick namespace from data to BrickStore 2024-04-16 10:05:51 +02:00
Trashman247 2c18823d93 Add Brick "Set View" operator to change list hierarchy
- "System" as a root may need different logic since children of a system are not "subClasses" but rather "parts". Currently, "part" would be listed as attribute rather than a direct object in the group.
2024-04-16 10:05:51 +02:00
Trashman247 0b09c9f719 Reformat BrickSchema UI 2024-04-16 10:05:51 +02:00
Dion Moult 0a52f51145 Fix #3498. 2024-04-16 10:05:51 +02:00
Dion Moult 4a5769c322 Fix #3391 #3491 #3493. New space generation that uses a cutting plane across all eligible objects instead of a simplified "straight wall" analysis.
This makes generating spaces significantly more robust, makes it easier to add / remove "space separating objects" (so we now have support for virtual elements), and only acts on visible objects.
2024-04-16 10:05:51 +02:00
Dion Moult f3df78784a New projects now load with a Views and Types collection with appropriate visibility settings. 2024-04-16 10:05:51 +02:00
Dion Moult e4063f8de5 Demo library now ships with example text annotation types (door tag, window tag, etc) 2024-04-16 10:05:51 +02:00
Dion Moult 4f55ffc13d More explanatory images in geometry creation docs 2024-04-16 10:05:51 +02:00
Dion Moult eb95ff5e5c Add documentation specifically about swept disk solid geometry for rebar 2024-04-16 10:05:51 +02:00
Gorgious 8b644d8415 You can now directly apply an ifc array modifier
Previously one would have to click on "remove" then "keep objects"
2024-04-16 10:05:51 +02:00
Dion Moult c56d9b01de Finish writing documentation on geometry creation 2024-04-16 10:05:51 +02:00
Gorgious ea1e7c567f Array children are now transform-unlocked & unconstrained when the array is applied 2024-04-16 10:05:51 +02:00
Gorgious a2042fc7f0 Array children are now transforme-locked after editing the array
I have yet to find how to set it on ifc load though
2024-04-16 10:05:51 +02:00
Gorgious 847117ae7e Array children now follow their parent with a "child-of" constraint #3492 2024-04-16 10:05:51 +02:00
Gorgious c1c6dfc47e Clicking on the "Select all array objects" button now sets the parent object as active #3492
Moved the array objects fetching code to tool.Blender
Also a bit of housekeeping and fixing minor typos here and there
2024-04-16 10:05:51 +02:00
Dion Moult f5d5f44458 Revert "Small tester UI fix #3487"
This reverts commit c7a1acf974.
2024-04-16 10:05:50 +02:00
Carlos Dias 8dea80aff7 [BlenderBIM] Update IfcTester (2023_07_21) (#3489) 2024-04-16 10:05:50 +02:00
Ryan Schultz 428412b3e5 Allow negative X_angle values 2024-04-16 10:05:50 +02:00
Dion Moult 441be1427f Fix #3488. Minor regression in IFC4X3 mapping. 2024-04-16 10:05:50 +02:00
Dion Moult aa325d521b You can now save, load, and create custom colour legends of properties 2024-04-16 10:05:50 +02:00
Dion Moult 50bc77a149 Search now renamed filtering and grouping. New "sandbox" section for more experimental panels. Old selector moved to sandbox along with augin/lca/covetool/temporary cutaways also moved there. 2024-04-16 10:05:50 +02:00
Dion Moult 4396f937b5 You can now load and save searches from the search panel 2024-04-16 10:05:50 +02:00
Dion Moult 7bbc89a3c3 More powerful search interface that uses the new facet selector syntax 2024-04-16 10:05:50 +02:00
Andrej730 1525b380bc Spatial manager elevation in projects units and some bug fixed
1) Elevation prop now is taking into account project units (previously it was hardcoded to meters)
2) Fixed a bug that occured when you started changing spatial element name/elevation right after you loaded spatial manager.

https://i.imgur.com/1keMGus.png
2024-04-16 10:05:50 +02:00
Andrej730 13a5317863 Fixed errors after b6ddc0d
`element.is_a() in ...` wasn't taking into account spatial classes that inherit from IfcSpatialElement/IfcSpatialStructureElement
2024-04-16 10:05:50 +02:00
Andrej730 0c97e56791 Small tester UI fix #3487 2024-04-16 10:05:50 +02:00
Andrej730 91a11ccb69 Fixed ifctester tests by the latest ids schema #3458
Commented out tests involving minOccurs and maxOccurs until https://github.com/buildingSMART/IDS/issues/144 gets resolved.
2024-04-16 10:05:50 +02:00
Dion Moult 3d3c6acd91 Fix #3477. Move text panels to object information tab. 2024-04-16 10:05:50 +02:00
Gorgious56 23132503b4 Minor fix in wall creation code 2024-04-16 10:05:50 +02:00
Dion Moult 4ca203cb1e New wall tool, slab tool, etc in toolshelf to improve usability. 2024-04-16 10:05:50 +02:00
Andrej730 4b03cace3e moving code to shape builder 2024-04-16 10:05:50 +02:00
Gorgious56 274f42993c #3478 : Ifc class name suggestions can now autofill predefined type
If they are correctly filled in the json file :)
2024-04-16 10:05:50 +02:00
Andrej730 99fd807805 fixed error after 190153347 2024-04-16 10:05:50 +02:00
Andrej730 7a6ae07f83 Distance subtype for rl1, rl2 and x/y/z (opening dimensions) in BIM Tool 2024-04-16 10:05:50 +02:00
Andrej730 9d80da9ed5 small matrix math refactor
more readable and allows avoiding jumping between 3d/4d vectors
2024-04-16 10:05:50 +02:00
Andrej730 048d77f983 A bit more descriptive port UI
Before - https://i.imgur.com/ZhVRoJM.png
After - https://i.imgur.com/tI1h2i7.png
2024-04-16 10:05:50 +02:00
Andrej730 fc5f4f7776 Added some MEP related type templates
3 more new types for distribution segments.
Distribution segments work the same way as beams - they come without representation but with IfcMaterialProfileSet defined with some profile. Occurences will also have ports at the start and the end of the segment (ports can be displayed in "Ports" section in "Services and Systems"). If you extend the segment or move it around - ports will move accordingly.

Small demo - https://imgur.com/a/Aq0utXa
2024-04-16 10:05:50 +02:00
Andrej730 80d08ba81f Small type manager refactor and more descriptions 2024-04-16 10:05:50 +02:00
Dion Moult 7fec467565 Implement guid facet in facet selector 2024-04-16 10:05:50 +02:00
Dion Moult 62c120e4bb New facet based selector syntax. Proposed to supersede existing selector syntax. 2024-04-16 10:05:50 +02:00
Dion Moult 46c5a5c820 You can now explicitly create new IfcTypeProducts. 2024-04-16 10:05:50 +02:00
Gorgious56 ac28bbdee1 Fix #3480 : Scene tabs now show their individual description on hover
Also correct minor typo
2024-04-16 10:05:50 +02:00
Andrej730 f6307520e9 Support looped railings #3415
Example - https://imgur.com/a/RaLORbk
2024-04-16 10:05:50 +02:00
Dion Moult 9c5096ea1d Write docs describing how to create profile representations 2024-04-16 10:05:49 +02:00
Dion Moult 5e3b45a591 Fix #3469. Minor regression in linking refactor. 2024-04-16 10:05:49 +02:00
ay-ex e7bd5ca8be fix error messages 2024-04-16 10:05:49 +02:00
ay-ex 2baf07a8ee fix choco_regex
fixes new regex needed for upstream blender cmake adjustment, 
pulls all regex and url into contant variables, 
improves error message, when a version cannot be retrieved
2024-04-16 10:05:49 +02:00
Carlos Dias 5ec1dec6ec Update __init__.py 2024-04-16 10:05:49 +02:00
Carlos Dias 8c7791828e Update handler.py 2024-04-16 10:05:49 +02:00
c4rlosdias e6402e5afc add export bcf to ifctester (2023_07_18) 2024-04-16 10:05:49 +02:00
c4rlosdias d6caf4a6b9 Add bug fixes 2024-04-16 10:05:49 +02:00
c4rlosdias e767db18df Add select entities (2023_07_17) 2024-04-16 10:05:49 +02:00
c4rlosdias 7981f26c57 Update 2023_07_16 2024-04-16 10:05:49 +02:00
c4rlosdias 13295d2abf update ifctester - 2023_07_14 2024-04-16 10:05:49 +02:00
Gorgious 654e884e8e Boolean subpanel is now located in the Geometric Relationships panel 2024-04-16 10:05:49 +02:00
Gorgious56 e440eca988 Show ifc modifiers only when applicable to current element 2024-04-16 10:05:49 +02:00
Gorgious56 660aacd6cc Disable some tab buttons when no ifc file is loaded 2024-04-16 10:05:49 +02:00
Andrej730 b918911e6e Small description for some type templates 2024-04-16 10:05:49 +02:00
Gorgious56 8e2afaae39 Housekeeping - Reorder suggestion dictionary keys alphabetically 2024-04-16 10:05:49 +02:00
Gorgious56 dda47ce24f Refactor edit mode toggle logic for profile based representations 2024-04-16 10:05:49 +02:00
Gorgious56 0b82d129b5 Add ifc modifier utilities to tool.Blender 2024-04-16 10:05:49 +02:00
Andrej730 726c8d833e Fixing railing/roof bug #3416
Issue occured when you imported .ifc and then would try to edit roof/railing path and then cancel/finish editing.

Added safe check to avoid using `change_object_data` in edit mode - https://projects.blender.org/blender/blender/issues/110232
2024-04-16 10:05:49 +02:00
Gorgious56 db64fabf43 Fix bug when using the search operator (F3) with no active object 2024-04-16 10:05:49 +02:00
Dion Moult e0fffbfdfe New geometry.create_2pt_wall API function to create a wall-like representation from two points. 2024-04-16 10:05:49 +02:00
Dion Moult f3c4858d2f Add documentation for basic geometry creation 2024-04-16 10:05:49 +02:00
Dion Moult 7a7c38db5b Rename sverchok representation to mesh representation 2024-04-16 10:05:49 +02:00
Dion Moult 84570a69f8 Utility function to create rotation matrixes in numpy. 2024-04-16 10:05:49 +02:00
Gorgious56 7aab0ccfd7 Fix Ifc modifier error after #3393064 because of legacy context.object
For some reason in the scene properties context.object returns None even if an object is active  in the viewport, so ifc modifiers would randomly throw errors. AFAIK functionally they are supposed to point to the same thing, but active_object seems to be the superior one and context.object deprecated and kept for legacy reasons. Couldn't find dev quote but I'm sure I saw it at some point
2024-04-16 10:05:49 +02:00
Gorgious56 79e67c3f12 Ensure positive extrusion depth
This prevents an error and mesh corruption when trying to input a negative extrusion depth
2024-04-16 10:05:49 +02:00
Dion Moult 139b124ccb Move all modifier panels into Representations and Materials tab. 2024-04-16 10:05:49 +02:00
ay-ex 6ead57abd2 fix choco_update action
fix according to upstream makefile change: 
https://github.com/blender/blender/blob/main/build_files/cmake/Modules/FindPythonLibsUnix.cmake
2024-04-16 10:05:49 +02:00
Andrej730 f01f659fa0 Revision Clouds - option to match revision cloud with the selected object
Works similarly to tagging, example - https://imgur.com/a/Atr0nYE

This feature also can be useful in the future if we integrate revision clouds with ifcgit
2024-04-16 10:05:49 +02:00
Dion Moult 26ee0ca7b7 More tab and panel shuffling. Top level panels now have a tab prefix. 2024-04-16 10:05:49 +02:00
Dion Moult 6929c1a614 Disable Shift-D duplication of drawings for now until drawings stabilise more. Use the dedicated duplicate drawings feature. 2024-04-16 10:05:48 +02:00
Andrej730 0dce32ff4f Fixing bugs on small revision clouds #3310
Bugs were:
1) svg print ZeroDivisionError if there was less than 1 pattern segment
2) svg drawing wasn't preserving edge direction if there was less than 1 pattern segment
2024-04-16 10:05:48 +02:00
Andrej730 06df22e793 Fixed #3441 2024-04-16 10:05:48 +02:00
Dion Moult 85a633cd9a Fix #3449. Fix bug where you couldn't edit the relating type of an annotation. 2024-04-16 10:05:48 +02:00
Dion Moult 91b23ae853 Fix bug where loaded point geometry had unlinked meshes or placements with wrong units. 2024-04-16 10:05:48 +02:00
Dion Moult 1248059f39 Fix #3275. You can now rename annotation types from the annotation manager. 2024-04-16 10:05:48 +02:00
Dion Moult ff3bff13d2 Add support for arbitrary point annotations and survey point, traverse points, control points, spot elevations, etc. 2024-04-16 10:05:48 +02:00
Dion Moult 633ab31544 Fix #3288. Implement undo / redo until specified named transaction. Fix fundamental undo bug where Blender doesn't track the undo UUID property if you toggle edit mode.
This also has the nice side effect of implementing "Jump to point in history" so you can now use the Edit > Undo History menu.
2024-04-16 10:05:48 +02:00
Dion Moult 4926c486c5 More panel shuffling, new Quality and Coordination tab. Geometry is now part of materials. 2024-04-16 10:05:48 +02:00
Dion Moult 88d201ed85 Bulk rename panels to remove redundant IFC prefix 2024-04-16 10:05:48 +02:00
Dion Moult 2c976a4b59 Example of UI if we sentence-cased IFC classes. Good or bad? Please comment at https://community.osarch.org/discussion/comment/16493 2024-04-16 10:05:48 +02:00
Andrej730 73a74c1d66 small fix 90fce1804 2024-04-16 10:05:48 +02:00
Dion Moult 9f091e0a3f New icon tabbed interface so you don't need to click twice to change tab. 2024-04-16 10:05:48 +02:00
Dion Moult 3c2f4cd2f8 DANGER! Potentially fix a bunch of undo bugs by completely rebuilding undo id_map tracking with a much simpler solution.
In the past, we used undo_pre and redo_pre and a bunch of complex commit_link and rollback_link tracking to figure out what IDs and GUIDs were added / removed during transactions and how to handle invalidated objects in the id/guid maps.

I really don't know why I made it that complex.

Now we simply treat all data as bad and rebuild the either map. This means slower undos / redos for large projects, but in theory the maps will never invalidate.

This either fixes a lot of things or breaks a lot of things :) Watch out!
2024-04-16 10:05:48 +02:00
Dion Moult e7d4e3e50d Fix undo bugs in the type module where some operators were not part of the undo system for some reason. 2024-04-16 10:05:48 +02:00
Dion Moult c3c018283b Fix #3275. You can now rename types from the type manager. 2024-04-16 10:05:48 +02:00
Andrej730 d42aa7d8cb root.remove_product fix 2024-04-16 10:05:48 +02:00
Andrej730 a5dedbedbb oops, forgot to clean up the test name 2024-04-16 10:05:48 +02:00
Andrej730 b5902e0e5d Fixed plan level annotation rotation #3440 2024-04-16 10:05:48 +02:00
Andrej730 0fe3e56c63 StairData refactor, solves #3416 2024-04-16 10:05:48 +02:00
Andrej730 38dd5a218c root.copy_class to support copying ports in ifc2x3 2024-04-16 10:05:48 +02:00
Andrej730 6c88d55cb8 Clean up type objects on ifc import 2024-04-16 10:05:48 +02:00
Andrej730 197ecdf51c avoid IfcSpatialElement errors in ifc2x3
IfcSpatialElement was added only in ifc4
2024-04-16 10:05:48 +02:00
Andrej730 8943b71d4e clean up after running test_wall_opening.py 2024-04-16 10:05:48 +02:00
Andrej730 661441b231 remove_product to remove IfcRelConnectsElements 2024-04-16 10:05:48 +02:00
Andrej730 37bcbd077d Fixing confusing UI #3357
It was showing "Edit Profile" when you have slab and wall selected when it will actually extend the wall to the slab.
2024-04-16 10:05:48 +02:00
Dion Moult 8a64675e2c See #3421. Fix drawing bug where IfcOpenShell might return unclosed paths even though the shape is closed and therefore break cut polygon fills. 2024-04-16 10:05:47 +02:00
Dion Moult efd3ef1a89 See #3421. Fix bug where some projection fills wouldn't polygonize correctly in shapely due to numerical tolerance. 2024-04-16 10:05:47 +02:00
Dion Moult a1faf4fe08 Fix #3442. Update sheet list if drawing name changes. 2024-04-16 10:05:47 +02:00
Dion Moult 551db039d0 Move object data out of object tab and into new object dropdown. 2024-04-16 10:05:47 +02:00
Dion Moult 8553c79dea You can now open projects from the Ctrl-N shortcut. 2024-04-16 10:05:47 +02:00
Gorgious56 8339d04326 Improve slightly the boolean interface in mesh properties editor 2024-04-16 10:05:47 +02:00
Dion Moult 60b06bbc44 Fix #3414. The project wizard now doesn't load a fresh session by default. Note that File > Open still enforces a fresh session. 2024-04-16 10:05:47 +02:00
Andrej730 36e476b744 Cleaning up connections on delete_ifc
Noticed an error if you connect wall and slab, then remove the slab and try to regenerate the wall - error occured because connection to that slab wasn't removed.

The error was:
Error: Python: Traceback (most recent call last):
  File "\3.6\scripts\addons\blenderbim\bim\module\model\workspace.py", line 381, in invoke
    return self.execute(context)
  File "\3.6\scripts\addons\blenderbim\tool\ifc.py", line 136, in execute
    IfcStore.execute_ifc_operator(self, context)
  File "\3.6\scripts\addons\blenderbim\bim\ifc.py", line 421, in execute_ifc_operator
    result = getattr(operator, "_execute")(context)
  File "\3.6\scripts\addons\blenderbim\bim\module\model\workspace.py", line 373, in _execute
    getattr(self, f"hotkey_{self.hotkey}")()
  File "\3.6\scripts\addons\blenderbim\bim\module\model\workspace.py", line 465, in hotkey_S_E
    bpy.ops.bim.join_wall(join_type="T")
  File "C:\software\Steam\steamapps\common\Blender\3.6\scripts\modules\bpy\ops.py", line 113, in __call__
    ret = _op_call(self.idname_py(), None, kw)
RuntimeError: Error: Python: Traceback (most recent call last):
  File "\3.6\scripts\addons\blenderbim\tool\ifc.py", line 136, in execute
    IfcStore.execute_ifc_operator(self, context)
  File "\3.6\scripts\addons\blenderbim\bim\ifc.py", line 421, in execute_ifc_operator
    result = getattr(operator, "_execute")(context)
  File "\3.6\scripts\addons\blenderbim\bim\module\model\wall.py", line 76, in _execute
    joiner.join_E(context.active_object, context.scene.cursor.location)
  File "\3.6\scripts\addons\blenderbim\bim\module\model\wall.py", line 1038, in join_E
    self.recreate_wall(element1, wall1, axis, body)
  File "\3.6\scripts\addons\blenderbim\bim\module\model\wall.py", line 1145, in recreate_wall
    height = self.clip(obj, tool.Ifc.get_object(rel.RelatingElement))
  File "\3.6\scripts\addons\blenderbim\tool\ifc.py", line 89, in get_object
    return IfcStore.get_element(element.id())
AttributeError: 'NoneType' object has no attribute 'id'
2024-04-16 10:05:47 +02:00
Dion Moult 57cb163c8f Fix #3393. Bug where duplicating a typed text didn't also copy its literal. 2024-04-16 10:05:47 +02:00
Andrej730 fa5e785849 Delete edit text from BIM Tool since it's already in Annotation Tool 2024-04-16 10:05:47 +02:00
Andrej730 1d56538152 handle null diffuse color loading ifc styles
The error was:
Traceback (most recent call last):
  File "\3.6\scripts\addons\blenderbim\bim\module\style\prop.py", line 99, in update_shading_style
    tool.Style.set_surface_style_props(blender_material)
  File "\3.6\scripts\addons\blenderbim\tool\style.py", line 174, in set_surface_style_props
    style_data["DiffuseColour"] = style_data["DiffuseColour"][1]
TypeError: 'NoneType' object is not subscriptable
2024-04-16 10:05:47 +02:00
Gorgious56 5e709d5e64 Enable drawing generation buttons only when an actual drawing is selected 2024-04-16 10:05:47 +02:00
Andrej730 3cc3bace3a Fixed error on canceling editing railing/roof
Since we do not update representation for railing / roofs and just mark them wtih `tool.Ifc.edit(obj)` their previous representation may still be incorrect. So we restore the previous representation just using bmesh update method.

For example if create a new roof, enter editing roof properties mode and then cancel editing, then it would result in "Failed to process a shape" because roof still had just empty Body/PointCloud representation.
2024-04-16 10:05:47 +02:00
Andrej730 056f76c7c0 Fixing errors on loading ifc after ef8f82501
The error was:
RuntimeError: Operator bpy.ops.object.editmode_toggle.poll() failed, context is incorrect
Location: C:\software\Steam\steamapps\common\Blender\3.6\scripts\modules\bpy\ops.py:113
Traceback (most recent call last):
  File "\3.6\scripts\addons\blenderbim\bim\module\project\operator.py", line 594, in execute
    bpy.ops.bim.load_project_elements()
  File "C:\software\Steam\steamapps\common\Blender\3.6\scripts\modules\bpy\ops.py", line 113, in __call__
    ret = _op_call(self.idname_py(), None, kw)
RuntimeError: Error: Python: Traceback (most recent call last):
  File "\3.6\scripts\addons\blenderbim\bim\module\project\operator.py", line 653, in execute
    ifc_importer.execute()
  File "\3.6\scripts\addons\blenderbim\bim\import_ifc.py", line 265, in execute
    self.clean_mesh()
  File "\3.6\scripts\addons\blenderbim\bim\import_ifc.py", line 1347, in clean_mesh
    bpy.ops.object.editmode_toggle(context_override)
  File "C:\software\Steam\steamapps\common\Blender\3.6\scripts\modules\bpy\ops.py", line 111, in __call__
    ret = _op_call(self.idname_py(), C_dict, kw, C_exec, C_undo)
RuntimeError: Operator bpy.ops.object.editmode_toggle.poll() failed, context is incorrect
Location: C:\software\Steam\steamapps\common\Blender\3.6\scripts\modules\bpy\ops.py:113
2024-04-16 10:05:47 +02:00
Andrej730 d9b124715a Fixed console errors on checking modeling data 2024-04-16 10:05:47 +02:00
Dion Moult a00e47f822 Fix #3300. Bug where it was impossible to delete normal Blender objects in the outliner when an IFC existed.
Also port over batch deletion to the outliner override.
2024-04-16 10:05:47 +02:00
Andrej730 17420ca779 model data parameters renamed to pset_data for consitency 2024-04-16 10:05:47 +02:00
Andrej730 ee308ed0b8 DoorData use refactor 2024-04-16 10:05:47 +02:00
Andrej730 577aacb746 WindowData use refactor 2024-04-16 10:05:47 +02:00
Andrej730 8217fcdf47 change .is_editing type for ifc modifiers to boolean 2024-04-16 10:05:47 +02:00
Andrej730 403c5caf0c RoofData use refactor 2024-04-16 10:05:47 +02:00
Dion Moult a386a14a6f Group drawings by target view in the drawing list 2024-04-16 10:05:47 +02:00
Bruno Perdigão 6b98626210 Select all objects in array modifier #3331 2024-04-16 10:05:47 +02:00
Dion Moult 0602711104 Fix #3411. Filtering sheets now doesn't break sheet hierarchy and also lets you search for sheet identification, name, and names of drawings / titleblocks / things on sheets. 2024-04-16 10:05:47 +02:00
Dion Moult bee4e77d63 Fix #3432. Bug where null applicable occurrence of a type product caused the annotation tool to fail. 2024-04-16 10:05:47 +02:00
Andrej730 e92217a362 makefile fix 2024-04-16 10:05:47 +02:00
Andrej730 0a546d847c minor change for RailingData 2024-04-16 10:05:47 +02:00
Andrej730 984b33cd77 bim.load_project to refresh session on execute not invoke
if you accidentally opened file dialog or just changed your mind it shouldn't remove all objects from the current blender session
2024-04-16 10:05:47 +02:00
Andrej730 6505758171 RailingData use refactor, solves #3416 2024-04-16 10:05:47 +02:00
smr02 f0263b0e6c ifcsverchok delete api_WIP 2024-04-16 10:05:47 +02:00
Andrej730 928ccf1b9f display current commit in status bar
it works for users who symlinked their blenderbim/bim folders to git repository or installed blenderbim from release created from makefile
https://i.imgur.com/mEBH9I7.png
2024-04-16 10:05:47 +02:00
Gorgious56 55821117d5 Fix error when trying to edit an object that doesn't support edit mode with the TAB keypress
Also run black on the rest of the file
2024-04-16 10:05:47 +02:00
Dion Moult 5a0192c5c4 Fix #3420. Fix missing sheet references on drawings and incorrect direction of section references. 2024-04-16 10:05:47 +02:00
Andrej730 3abd3b1b0d more consistency in values for plan-, section level and diameter 2024-04-16 10:05:47 +02:00
Andrej730 1ae6a0eb5a radius annotation - support for prefix/suffix/fill-bg
and more consistency between viewport and svg
2024-04-16 10:05:46 +02:00
Andrej730 97b3bf5511 PLAN/SECTION_LEVEL consistency between viewport and svg
before - https://i.imgur.com/bwYbozz.png
after - https://i.imgur.com/7BlmQIg.png

NOTE that if you're using markers.svg that was created before this update you won't see the changes for the section-/plan-level markers.
2024-04-16 10:05:46 +02:00
Andrej730 710dce845e fill-bg for diameter, plan- and section-level annotations 2024-04-16 10:05:46 +02:00
Dion Moult e75afc9ffb Fix #3417. Apply 50mm offset to camera to ensure text isn't "behind" the camera. This 50mm convention is used in quite a few places, we should standardise it. 2024-04-16 10:05:46 +02:00
Dion Moult dc9b11832b Fix #3425. Fix invalid IFC data where grid axes should be 2D not 3D. 2024-04-16 10:05:46 +02:00
Thomas Krijnen c2aa09b374 Update entity_instance.py 2024-04-16 10:05:46 +02:00
Thomas Krijnen ffa9015798 Lingering changes after conflict resolution 2024-04-16 10:05:40 +02:00
Andrej730 8e4b93fb03 Prevent resetting selected tab on blender restart
Not sure if there is any caveats to that
2024-04-16 10:05:08 +02:00
Dion Moult a5af1ad79b Fix #3407. Override Ctrl-S to the export IFC which checks for Blender projects.
1. No IFC --> Saves Blend file
 2. IFC, unsaved Blend --> Saves IFC
 3. IFC, saved Blend --> Saves IFC and Blend
2024-04-16 10:05:08 +02:00
Andrej730 a43863cad3 PLAN_LEVEL annotations support for prefix, suffix #3399
Viewport - https://i.imgur.com/XRa3oJO.png
SVG - https://i.imgur.com/C8PjoiO.png
2024-04-16 10:05:08 +02:00
Dion Moult 2d19b82a63 Fix #3414. Only clear default scene, not custom scene when loading / creating IFCs. 2024-04-16 10:05:08 +02:00
Andrej730 3d96187a91 SECTION_LEVEL annotations support for prefix, suffix #3399
also added support for "show only description" for section_level
2024-04-16 10:05:08 +02:00
Andrej730 e5c5c18d8d Fixed #3400 introduced in dda16c8 2024-04-16 10:05:08 +02:00
Dion Moult ef0ccfd48f Resolve merge conflict 2024-04-16 10:05:08 +02:00
Dion Moult cdf617e95b Fix registration bug that created hundreds of workspaces due to continuous triggering of the depsgraph_update.
Use an is_registering check to only run the on_register once.

Rename setDefaultProperties to load_post to better reflect what handler it is.

Unregister our custom scene panels upon addon activation.

Move aprops getting to tool.Blender because it is a bit complex. Also, aprops may not be setup until load_post is called, so the len() check protects against that.
2024-04-16 10:05:08 +02:00
Gorgious56 b3c4c05690 Keep active object when unlinking an IFC element
Unlinking an element recreates a new blender object so the active object would be lost, jumping the properties to the scene panel which was slightly annoying
2024-04-16 10:05:08 +02:00
Andrej730 03aa63bd61 fixed properties search after 949a2bb and fixed console errors on search
1) When you search not from the SCENE properties blender creates some kind of phantom area to check search results. As this area is not present in `context.screen.areas` it was resulting in the error below.

2) After 949a2bb search in scene properties was limited to currently selected tab. Given the amount of tools we have in properties and native blender approach for searching across all available sections in properties, it seems reasonable to make search work across all tabs.

Console error was:
The error was
Python: Traceback (most recent call last):
  File "\3.6\scripts\addons\blenderbim\bim\ui.py", line 281, in draw
    aprops = context.screen.BIMAreaProperties[context.screen.areas[:].index(context.area)]
ValueError: bpy.data.screens['Layout.001']...Area is not in list
2024-04-16 10:05:08 +02:00
Dion Moult 562c775da2 Integrate brickschema undo system into BlenderBIM Add-on undo system wrapper 2024-04-16 10:05:08 +02:00
Andrej730 88defa07ce Fixed #3412
After 949a2bb printing happens not fron N-panel (which is part of viewport) but from scene properties - so current context doesn't have region_3d anymore.

PS The same issue was there all along if you'd try to print the drawing from Camera Properties tab.
2024-04-16 10:05:08 +02:00
Andrej730 37f3ecc8c5 allow to call select/color by attribute by providing arguments
instead of always checking scene.BIMSearchProperties. This allows to add different setups of selections to quick favorites
2024-04-16 10:05:08 +02:00
Dion Moult e451844e13 Implement Ctrl-Tab in properties to conveniently toggle between two tabs. 2024-04-16 10:05:08 +02:00
Dion Moult e72396585f Move built-in scene panels to a dedicated "Blender Properties" tab instead of unregistering permanently. 2024-04-16 10:05:08 +02:00
Andrej730 01ebb649d9 Library for US AISC15 Steel Profiles #3203 2024-04-16 10:05:08 +02:00
Gorgious56 f2dd6a6fc1 Trying to edit a railing modifier path while modifying the parameters is now prevented and user is informed with a tooltip 2024-04-16 10:05:08 +02:00
Gorgious56 332db04aa5 Fix IfcRailing modifier support spacing <= 0 would throw an error, and deactivate support spacing field if manual support is selected 2024-04-16 10:05:08 +02:00
Thomas Krijnen 4940f95d7a 2dc4bbf8cd Apply same logic for derived attributes 2024-04-16 10:05:08 +02:00
Dion Moult d29f0f171c Override Ctrl-N new file menu to make it easier to start new projects and new IFC icon. 2024-04-16 10:05:08 +02:00
Andrej730 acc5ca339f Using EPset_Drawing data instead of camera props on drawing print #3396
Previously if you change `HasUnderlay` in pset it caused errors because camera properties `has_underlay` wasn't updated.
Still some work need to be done for updating keep camera properties in sync with pset - probably we can should call something like `tool.Drawing.import_drawing()` on EPset_Drawing edit
2024-04-16 10:05:08 +02:00
Dion Moult 4359769d54 See #3411. Sheets are now sorted alphabetically by default. 2024-04-16 10:05:08 +02:00
Dion Moult 4eba6bd6c0 See #3016. Scene shading styles are now stored as part of the drawing style. 2024-04-16 10:05:08 +02:00
Dion Moult a81a48dc75 Update splash image to be centered 2024-04-16 10:05:07 +02:00
Dion Moult ac0f432190 Fix #3410. Minor regression when moving UI to properties panel. 2024-04-16 10:05:07 +02:00
Dion Moult a99f1e15cb Add support for Point representations too, not just point cloud. 2024-04-16 10:05:07 +02:00
Dion Moult 4ed1eedbfc Fix bug where all grouped annotations were excluded when opening models, whereas we only want drawing annotations to be excluded. 2024-04-16 10:05:07 +02:00
Massimo Fabbro d68294d420 Fix bug where drawing decimal places couldn't be 0. Now it's possible to define 0 as value 2024-04-16 10:05:07 +02:00
Dion Moult 8f555db5a4 Forgot to commit updated IfcTester test suite 2024-04-16 10:05:07 +02:00
Dion Moult 52ef8a6042 Fix critical undo sync bug related to invoking instead of executing. See notes.
Currently, the undo system works by wrapping the execute operator. What was not considered was that execute() isn't the only entry point to operators. Operators can be invoked. If an invoked operator calls a bpy.ops.bim.something in its invoke() function, then bpy.ops.bim.something will start and finish its own transaction, and then when the invoke finishes and finally runs execute(), another transaction will be started and finished. This means that we get at least one extra transaction logged (one per any call to bpy.ops.bim.foo in invoke()).

This mismatch of number of transactions and undo stack means that when the user presses ctrl-z, the undo doesn't actually occur. This leads to a sync bug.

To be safe, all IFC invokes must be wrapped. This will take some time to review so expect another commit soon.
2024-04-16 10:05:07 +02:00
Dion Moult 05a3a33a9a Drawing panels now moved to the drawings and documents "tab" 2024-04-16 10:05:07 +02:00
Dion Moult ea44fa8b89 Update IfcTester to comply with latest modifications to IDS XSD. 2024-04-16 10:05:07 +02:00
Dion Moult 2dbb566072 Visual clean up of annotation tool to only activate when a drawing is active and have a type manager similar to the BIM tool. 2024-04-16 10:05:07 +02:00
Dion Moult 17d9ddd57d Update tool icons to all use the same underlying "cube" shape and add bracing for structural icon and background walls for spatial icon. 2024-04-16 10:05:07 +02:00
Bruno Perdigão 81504ebb29 recreate decompositions in Refresh operator 2024-04-16 10:05:07 +02:00
Bruno Perdigão 9b89263ad6 changed keymap 2024-04-16 10:05:07 +02:00
Bruno Perdigão e580269c75 clear BIMObjectPropertis.collection after duplication 2024-04-16 10:05:07 +02:00
Bruno Perdigão d25fcb8fbf initial commit 2024-04-16 10:05:07 +02:00
Dion Moult daf3c6dffc Fix #3390. Type products should not be set in the model interface. 2024-04-16 10:05:07 +02:00
Thomas Krijnen d6250aaf2a #3189 proposal (#3190) 2024-04-16 10:05:07 +02:00
Bruno Perdigão 8b71db92e2 removed total_items from the operator 2024-04-16 10:05:07 +02:00
Bruno Perdigão a4c90d8b53 implementation of #3332 2024-04-16 10:05:07 +02:00
Dion Moult 02bca5a622 Fix #3402. Activate drawing no longer affects the visibility of non-IFC objects. 2024-04-16 10:05:07 +02:00
Dion Moult 8977d37ccd Fix #3403. Templates must be specific to the version you are creating. 2024-04-16 10:05:07 +02:00
Dion Moult 8c1214e8c4 Start mocking up our own property "tabs" with the intention to use this new tab system instead of Blender property tabs
Blender property tabs are hardcoded and we cannot customise them. IFC data only "somewhat" maps to Blender property tabs, and some things fail to map causing user confusion. For example material and styles are very confusing. Also scene and object properties are crazy overpopulated (see how many times IFCArchitect bulk collapses things). And this also causes things to be spread out and lost (e.g. some random panels in viewport N menu). This should give us a lot more control to organise panels exactly how we want them.
2024-04-16 10:05:07 +02:00
Dion Moult 387bf6aa58 Workspace inspired by IFCArchitect's layout is now setup by default and irrelevant Blender scene panels are hidden. You can disable this behaviour for advanced users, or use your own workspace layout but at least now there is a better "BIM-optimised" layout.
The layout uses three columns with a focus on a larger outliner (important as BIM models have lots of objects and complex hierarchies!) and properties, and removes the mostly irrelevant timeline for beginners.
2024-04-16 10:05:07 +02:00
Dion Moult 44ff5b12cd You can now create, open, and save projects from the file menu, with simple project presets. Also the scene is cleared so no more manual cube / light / camera deletion. Also poll prior to saving. No more import / export menu to confuse users.
https://imgur.com/a/EIt2H5b
2024-04-16 10:05:07 +02:00
Dion Moult 8e053de4e5 Delete old annotation panel in favour of annotation tool 2024-04-16 10:05:07 +02:00
luzpaz 1819a45e4c Fix various typos in src/ifcgeom* subdirs 2024-04-16 10:05:04 +02:00
Richard Brice e946e34823 Apparent fix to cant placement matrix 2024-04-15 12:41:36 -07:00
Dion Moult 3e7afbed08 Minor doc improvements and SQL/stream code cleanup 2024-04-15 13:30:42 +02:00
Dion Moult bb7a73feac Fix #3394. Fix bug where railing and roof type names were hardcoded. Also improve UI of create type form so you can actually read the fields. 2024-04-15 13:30:42 +02:00
Dion Moult cb412c78b5 Fix #3213. Internally, we should always use Unix path separators. 2024-04-15 13:30:42 +02:00
Dion Moult 7d83eb114a The user can now toggle between rotate before / after translating in OffsetObjectPlacements 2024-04-15 13:30:42 +02:00
Dion Moult c45b28e78a Fix #3016. Drawing styles that set the shading style will change shading style upon activating the style. 2024-04-15 13:30:42 +02:00
Dion Moult 8896a74d1b Fix #3121. Merge equivalent contexts when merging projects in MergeProject Ifcpatch recipe. 2024-04-15 13:30:42 +02:00
Dion Moult fac527b0fe Fix failing tests since Github test runner only has IFC4X3_ADD1 not TC1 compiled in. 2024-04-15 13:30:42 +02:00
Trashman247 73d2146a6c Remove binding namespace new project (already in schema) 2024-04-15 13:30:41 +02:00
Trashman247 0c5a8bea4e remove import BrickStore in props 2024-04-15 13:30:41 +02:00
Trashman247 301800d8ed Add brick operator accepts label parameter & add toggle for namespace editing 2024-04-15 13:30:41 +02:00
Trashman247 a28b8c1cd4 Add filter to listed namespaces (need add more aliases) 2024-04-15 13:30:41 +02:00
Trashman247 79e9bef565 Double space core functions and clear brick browser on project close 2024-04-15 13:30:41 +02:00
Trashman247 8b2fae4369 Separate serialize into "save" and "save as" with file selection 2024-04-15 13:30:41 +02:00
Sigma Dimensions 676c96c6e2 Georeferencing utility to convert an angle in degrees to X Axis Abscissa and Ordinate 2024-04-15 13:30:41 +02:00
Dion Moult 13075dcae4 See #3126 and 5b4010c. Fix failing tests, and allow schema_by_name to follow the same schema_version distinction as file. 2024-04-15 13:30:41 +02:00
Andrej730 236581baa3 w-type US steel profiles #3203 2024-04-15 13:30:41 +02:00
Dion Moult e8d6f122f3 See #3126. Forgot to commit tests related to explicit schema versions. 2024-04-15 13:30:41 +02:00
Thomas Krijnen 22ffd3d2b7 Update win32 download links installation.rst 2024-04-15 13:30:41 +02:00
Thomas Krijnen 26d0f98cd9 #3359 return early in case of no-prefiltering 2024-04-15 13:30:41 +02:00
Andrej730 8f6f03cd27 fill-bg support for dimensions #3387
Example - https://i.imgur.com/lvJwtDI.png
works the same way as for text by adding "fill-bg" to EPset_Annotation.Classes
2024-04-15 13:30:41 +02:00
Dion Moult 54492e3769 Fix #3383. Disallow any extrusion angles >=90 which are invalid. 2024-04-15 13:30:41 +02:00
Dion Moult 1c739dfa55 Test all shapes in the debug panel now also attempts 2D checks to prevent false positives. 2024-04-15 13:30:41 +02:00
Dion Moult 6d37104280 Revert "More descriptive RuntimeError: Failed to process shape #3383"
This reverts commit 1542217117.
2024-04-15 13:30:41 +02:00
Andrej730 6f9c9d1032 More descriptive RuntimeError: Failed to process shape #3383
Example of the new error - https://i.imgur.com/0FMQw5V.png
2024-04-15 13:30:41 +02:00
Dion Moult e9d12d5e31 Fix #3126. Implement mapping from IFC4X3 to IFC4X3_ADD1 and explicit version identifiers in ifcopenshell.file 2024-04-15 13:30:41 +02:00
Dion Moult 814bec11e9 Fix #3386. 2024-04-15 13:30:41 +02:00
Dion Moult 69e650cc50 Fix #3349. Allow inserting a filling into an uncontained building element. 2024-04-15 13:30:41 +02:00
Bruno Perdigão 7d56f91aa0 fix #3063 2024-04-15 13:30:41 +02:00
Dion Moult 8ba976078b Fix #3382. Minor regression in wall join refactor from d64c135 2024-04-15 13:30:41 +02:00
Sigma Dimensions 3e2a509793 fix #3385 - renaming grids with "F2" 2024-04-15 13:30:41 +02:00
Bruno Perdigão 1486dc26e6 minor fix 2024-04-15 13:30:41 +02:00
Bruno Perdigão 72b2cf626f bugfix and alt+click functionality 2024-04-15 13:30:41 +02:00
Bruno Perdigão 4be1fa7632 implements #3268 2024-04-15 13:30:41 +02:00
Andrej730 e792471725 Moving editing roof and railing paths hotkey from Shift+E/Q to Tab 2024-04-15 13:30:41 +02:00
Andrej730 444166b37c Fix #3263 2024-04-15 13:30:41 +02:00
Andrej730 7a91b3d153 railing modifiers - fixing normals for frameless_panel #3277 2024-04-15 13:30:41 +02:00
Dion Moult 200aeb896d See #3359. Bump IfcOpenShell and enable HLR prefiltering optimisation for drawing generation 2024-04-15 13:30:41 +02:00
Andrej730 20d19bfcba type selection error #3318
if you switch ifc_class then relating_type_id can become invalid and we wasn't taking it into account

Also fixed bunch of warning like `pyrna_enum_to_py: current value '17' matches no enum in 'BIMModelProperties', '', 'relating_type_id'`` when some ifc_class has N related types and then you switch to other ifc_class that has less than N related types.
2024-04-15 13:30:40 +02:00
Andrej730 461eeba9ff Revert "enable activating object type when trying to select type from an object ( whilst the type is hidden from view layer)"
This reverts commit 4bc987924d since there was some unintentional changes.

Now when you use select_type in object properties - ifc class and related type gets selected in the BIM Tool  - https://i.imgur.com/drIHYDz.png

#3318
2024-04-15 13:30:40 +02:00
Andrej730 5b10923b45 ShapeBuilder.polyline - skip creating segments if they are not needed 2024-04-15 13:30:40 +02:00
Dion Moult 4efe780df7 Fix #3356. Include version info in status bar for debugging and new copy debug info button to help bugreporting. 2024-04-15 13:30:40 +02:00
Dion Moult a5579d1d69 Fix #3256. Support file profiles made out of multiple representation items. 2024-04-15 13:30:40 +02:00
Dion Moult f1e3fb38ad See #3334. Fix some get_pset implementation errors in 64516a1 2024-04-15 13:30:40 +02:00
OrionSehn 0f6e934ca8 Proposed fix to #3352 2024-04-15 13:30:40 +02:00
Andrej730 1109d4cc51 Sync ifc class in BIM Tool and Type Manager
It's seems it would be better for ux if they will be connected
2024-04-15 13:30:40 +02:00
Andrej730 bd70f7bf7f add_representation - detect non consequtive curves and handle them
Basically if current mesh curve is non consequtive we handle it in similar way to b03c4da7b - convert it to curves using Blender and then save them to ifc.

The advantage is that it creates less curves in ifc because mesh method wasn't able to detect separate curves correctly if vertex order was messed up (usually it is) and it would create separate curve for each curve segment.

I've also replaced figuring vertex duplicates with `bmesh.ops.remove_doubles` manually with `bmesh.ops.remove_doubles` and it's now much faster. In some cases because of the manual calculations it was taking too long - in #3233 Ryan mentiones that it freezes blender, it wasn't really freezing Blender but to finish calculations it would take 10 minutes.
2024-04-15 13:30:40 +02:00
Dion Moult d81e64f7a2 See #3376. Bump updated build of IfcSverchok. 2024-04-15 13:30:40 +02:00
Dion Moult 00ccb77f86 Merge AWS Lambda installation documentation into official docs 2024-04-15 13:30:40 +02:00
Dion Moult 5dd9a24647 Whoops 2024-04-15 13:30:40 +02:00
Dion Moult d435152904 Close #3377. Implement xyz coordinates for COBie object placement. 2024-04-15 13:30:40 +02:00
Dion Moult 5840b1770e Write IfcOpenShell documentation for geometry trees. 2024-04-15 13:30:40 +02:00
Andrej730 33d3afc35d experimental support for spline curves representation #3233
there is still no full support but as a workaround I've added blender converting curves to meshes and back to curves so we could preserve the actual shapes

before - https://i.imgur.com/9F542Iy.png
after - https://i.imgur.com/t58RlkF.png
2024-04-15 13:30:40 +02:00
Dion Moult ce8a9293bb See #3334. Optimise pset getting and add simple "broadphase" filtering for all facets for faster validation. 2024-04-15 13:30:40 +02:00
Dion Moult b8e2e693f1 Fix bug where IfcTester would pass derived attribute facets.
Now that IfcOpenShell supports derived attributes, we need to explicitly make sure the attribute facet only considers forward attributes.
2024-04-15 13:30:40 +02:00
Dion Moult 9af7ddaf56 See #3334. Fix bug where get_pset didn't handle property inheritance correctly. 2024-04-15 13:30:40 +02:00
c4rlosdias 31a6049eb6 Add extra formats to output file 2024-04-15 13:30:40 +02:00
Andrej730 5474d0f56a Prevent crash on attempt to link the current .blend file 2024-04-15 13:30:40 +02:00
Andrej730 d57e152c7d Storing external styles paths as posix for cross platform compatibility
Also it was wrongly referring to .blend file instead of .ifc to generate relative paths.
2024-04-15 13:30:40 +02:00
Andrej730 3fa5679bd7 disable default vebose mode for getting shader attribute to prevent spam 2024-04-15 13:30:40 +02:00
Andrej730 5ce7abbda0 adding default ifc objects added from shift-a menu to the current collection 2024-04-15 13:30:40 +02:00
Andrej730 1b39f243eb Editiing arbitrary profile without enabling editing profile
It was a bit confusing UX since when you finish editing arbitrary profile path the data is already saved in ifc but you were still in editing profile properties
2024-04-15 13:30:40 +02:00
Andrej730 9864f7d19e Update type manager thumbnails on editing profiles
Example - https://imgur.com/a/IcV8IIR
2024-04-15 13:30:40 +02:00
Andrej730 5a5e1e9892 disable chaching sound running the bim tests
to save someone's ears (probably mine 😁) from running 10 chaching sounds per second
2024-04-15 13:30:40 +02:00
Dion Moult 4845242769 Fix #3366. Fix crash in IfcDiff if you are comparing a model with no geometry. 2024-04-15 13:30:40 +02:00
Andrej730 847d30fdaa Fixed errors displaying IFC Connections for IfcRelConnectsElements
IfcRelConnectsElements type of connection wasn't handled properly resulting in errors.
Now you should be able to see connections for connected slabs, walls etc - https://i.imgur.com/LpFBKBC.png

Traceback:
Traceback (most recent call last):
  File "\blenderbim\bim\module\geometry\ui.py", line 102, in draw
    ConnectionsData.load()
  File "\blenderbim\bim\module\geometry\data.py", line 100, in load
    cls.data = {"connections": cls.connections()}
  File "\blenderbim\bim\module\geometry\data.py", line 134, in connections
    relating_element_connection_type = rel.RelatingConnectionType
  File "\blenderbim\libs\site\packages\ifcopenshell\entity_instance.py", line 171, in __getattr__
    raise AttributeError(
AttributeError: entity instance of type 'IFC4.IfcRelConnectsElements' has no attribute 'RelatingConnectionType'
2024-04-15 13:30:40 +02:00
Dion Moult 99e2598c00 Fix #3355. Reimplement graphical clash snapshots in BCF from IfcClash in the BlenderBIM Add-on. 2024-04-15 13:30:40 +02:00
Dion Moult 6758d878d8 You can now unload BCF projects to load another one. 2024-04-15 13:30:40 +02:00
Trashman247 6986b901d0 Move Brick.ttl ignore to main git-ignore file 2024-04-15 13:30:10 +02:00
Trashman247 9cedd37694 Silence known rdflib_sqlalchemy TypeError warning 2024-04-15 13:29:29 +02:00
Trashman247 2b52ab930c Implement fully undo/redo with checks
While these actions are short in the backend--taking about 0.01 seconds to run--the Blender UI lags a lot leading to 2-3 second pauses because of the "refresh_brick_viewer" function being slow. This should be investigated.
2024-04-15 13:29:29 +02:00
Trashman247 36d0e33958 Change namespace selector to only show alias 2024-04-15 13:29:29 +02:00
Trashman247 6a88905e23 Add changeset versioning to Brick add/remove 2024-04-15 13:29:29 +02:00
Trashman247 64d1fb4ee7 Reformat commenting, remove prints, and remove BrickStore.project 2024-04-15 13:29:29 +02:00
Trashman247 bcd7c79004 Implement fully serialize operator
- Turns out, you need the keyword "graph=" in graph_at() to actually select a graph of that name from the collection, otherwise it just returns the entire collection, so I changed that, which correctly isolates the project from the collection for serialization now.
- With this same change, I opted turn BrickStore.VersionedGraphCollection simply into BrickStore.graph and create a new BrickStore.get_project() to return the isolated graph. - This meant I should remove the reload_graph() function because I was actually just loading the entire collection into it still, and its functionality breaks when it isn't the entire collection
2024-04-15 13:29:29 +02:00
Trashman247 38788cc95b Implement early testing for serialize operator (not functional)
All the right code seems to be in place, but it seems the package won't go through with the serialize function because of read/write permissions (ERRNO 13)
2024-04-15 13:29:29 +02:00
Trashman247 4a04411262 Change graph naming to all caps 2024-04-15 13:29:29 +02:00
Trashman247 590049638e Add Brick.ttl to .gitignore 2024-04-15 13:29:29 +02:00
Trashman247 b13f6116d0 Update BrickStore.purge()
I wanted to just have a BrickStore.clear() which would so this:

        BrickStore.VersionedGraphCollection = None
        BrickStore.graph = None
        BrickStore.path = None

(aka not also set BrickStore.schema = None, since it should theoretically just load in the same path anyway) but for some reason Blender crashes when clearing a project and loading one again this way.
2024-04-15 13:29:29 +02:00
Trashman247 d2815415df Rework NewBrick and LoadBrick in test_brick.py to fit with new VGC format
- VGC means VersionedGraphCollection.
- BrickStore.schema is now a filepath, so make that the case in the testing also.
2024-04-15 13:29:29 +02:00
Trashman247 c85b97af5a Implement VersionedGraphCollection to Brick module
- Reworked `load_brick_file` and `new_brick_file` to fit under the VersionedGraphCollection implementation. (Other methods may have broken).
- Added `undo_brick` and `redo_brick`.
- Kept BrickStore.graph the same as to generally still work with the rest of the code. This was done by parsing the VersionedGraphCollection with the new `reload_brick_graph` method.
2024-04-15 13:29:29 +02:00
Carlos Dias 205128400e Update operator.py
missing output file format in arguments
2024-04-15 13:29:28 +02:00
Andrej730 6e01d5ce01 reworked detecting neighbour walls when placing new ones
hopefully it will be a bit more natural now - please give feeback

before - https://imgur.com/a/VYQt5ua
now - https://imgur.com/a/5LRAmrd
2024-04-15 13:29:28 +02:00
Andrej730 6a1d1cf039 More responsive UI for IFC search 2024-04-15 13:29:28 +02:00
Andrej730 62ecb1e261 a bit of bim.join_wall refactor 2024-04-15 13:29:28 +02:00
Andrej730 4e186f4a62 Error editing roof profile #3357
it was assuming it's a slab and was giving errors trying to start editing slab profile

File "C:\Users\user\AppData\Roaming\Blender Foundation\Blender\3.6\scripts\addons\blenderbim\bim\module\model\slab.py", line 618, in _execute
if extrusion.Position:
AttributeError: 'NoneType' object has no attribute 'Position'
2024-04-15 13:29:28 +02:00
Bruno Postle 84b08fa448 BlenderBIM Git documentation minor corrections 2024-04-15 13:29:28 +02:00
Bruno Postle e61c572743 BlenderBIM document Git merge asymmetry (#3096) 2024-04-15 13:29:28 +02:00
Dion Moult fcd68a1e64 Whoops 2024-04-15 13:29:28 +02:00
Dion Moult 623ac1fe93 Fix hppfcl segfault by bumping hppfcl and its dependencies. Remove support for py37. 2024-04-15 13:29:28 +02:00
Andrej730 2122ab7bdc Added warning for a86456392 2024-04-15 13:29:28 +02:00
Andrej730 49abaf6798 improved relative path handling for textures #3365
now we're going to store all texture paths in .ifc as posix to keep them working if .ifc moved from one platform to another

previously it was saving all paths as absolute
2024-04-15 13:29:28 +02:00
Andrej730 bfcc8decc0 Calculating angle based on world position instead of camera pos #3362 2024-04-15 13:29:28 +02:00
Andrej730 1357b83d99 Added support for OCCLUSION textures for 3aff29dec 2024-04-15 13:29:28 +02:00
Andrej730 0d74ffd52f Shape builder - detect AdvancedSweptSolid
To avoid validation errors on creating wall mounted railings

    #143=IfcShapeRepresentation(#15,'Body','SweptSolid',(#116,#126,#129,#139,#142))
Rule IfcShapeRepresentation.CorrectItemsForType:
    IfcShapeRepresentationTypes(self.RepresentationType, self.Items)
Violated by:
    False
     +  where False = IfcShapeRepresentationTypes('SweptSolid', (#116=IfcSweptDiskSolid(#115,10.,$,$,$), #126=IfcExtrudedAreaSolid(#120,#124,#125,20.), #129=IfcSweptDiskSolid(#128,10.,$,$,$), #139=IfcExtrudedAreaSolid(#133,#137,#138,20.), #142=IfcSweptDiskSolid(#141,25.000000372529,$,$,$)))
     +    where 'SweptSolid' = #143=IfcShapeRepresentation(#15,'Body','SweptSolid',(#116,#126,#129,#139,#142)).RepresentationType
     +    and   (#116=IfcSweptDiskSolid(#115,10.,$,$,$), #126=IfcExtrudedAreaSolid(#120,#124,#125,20.), #129=IfcSweptDiskSolid(#128,10.,$,$,$), #139=IfcExtrudedAreaSolid(#133,#137,#138,20.), #142=IfcSweptDiskSolid(#141,25.000000372529,$,$,$)) = #143=IfcShapeRepresentation(#15,'Body','SweptSolid',(#116,#126,#129,#139,#142)).Items
2024-04-15 13:29:28 +02:00
Andrej730 805d6652f1 set default position on creating window and door
to avoid validation errors like IfcProduct.PlacementForShapeRepresentation
2024-04-15 13:29:28 +02:00
Andrej730 2fc79e0bd3 Fixing ifc git poll errors if .ifc file is not yet saved
Errors:
Traceback (most recent call last):
  File "\Blender\3.6\scripts\addons\blenderbim\bim\module\ifcgit\operator.py", line 20, in poll
    if not os.path.isfile(path_ifc):
  File "\Blender\3.6\python\lib\genericpath.py", line 30, in isfile
    st = os.stat(path)
TypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType
Traceback (most recent call last):
  File "\Blender\3.6\scripts\addons\blenderbim\bim\module\ifcgit\operator.py", line 48, in poll
    if not os.path.isfile(path_ifc):
  File "\Blender\3.6\python\lib\genericpath.py", line 30, in isfile
    st = os.stat(path)
TypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType
2024-04-15 13:29:28 +02:00
Andrej730 d511b6fdc8 updated furniture library after f5031035c and a385938 2024-04-15 13:29:28 +02:00
Andrej730 5c1a96c24c Shape builder - avoid duplicated indices in polylines
For example
IfcLineIndex((1,2,3,4,1))
instead of
IfcLineIndex((1,2,2,3,3,4,4,1))
2024-04-15 13:29:28 +02:00
Thomas Krijnen cb804f2e84 Fix openbot build 2024-04-15 13:29:28 +02:00
Massimo Fabbro 62a0b64b2a Add regen button also under space tool 2024-04-15 13:29:20 +02:00
Dion Moult 3dd75e98a0 See #3283. Minor fix where IfcContext is abstract, so IfcProjectLibrary should be checked instead when loading filtered models. 2024-04-15 13:29:20 +02:00
Dion Moult 82519a56c2 Fix failing build 2024-04-15 13:29:20 +02:00
Dion Moult 5f73a2b36d Bundle qhull for hppfcl on Linux too 2024-04-15 13:29:20 +02:00
Thomas Krijnen 4e599cf132 Fix openbot build 2024-04-15 13:29:20 +02:00
Thomas Krijnen b76beabb43 Fix openbot build 2024-04-15 13:29:20 +02:00
Andrej730 57f43fe608 Support for door/window/stair modifiers in ifc2x3 2024-04-15 13:29:20 +02:00
Andrej730 ced6326bfd ShapeBuilder to use IfcPolyline of IfcIndexedPolyCurve to support ifc2x3
needed it to add suport for window/door modifiers in ifc2x3 in the next commit
2024-04-15 13:29:20 +02:00
Andrej730 2b3a7ba30c fixing errors running tests if no tool selected in blender startup file
Error was: AttributeError: 'NoneType' object has no attribute 'idname'
2024-04-15 13:29:20 +02:00
Dion Moult 34d44c9e7c Bundle qhull for ifcclash on macosm1 2024-04-15 13:29:20 +02:00
Thomas Krijnen fe7d550ef7 Help swig not to trip over old occt handle definitions 2024-04-15 13:29:18 +02:00
Thomas Krijnen 727d075e0e Add --prefilter flag to draw.py 2024-04-15 13:28:16 +02:00
Thomas Krijnen 09d7cd97c8 SVG prefiltering elements based on large faces 2024-04-15 13:28:13 +02:00
Andrej730 212b707464 simplified dev installation script for mac/linux 2024-04-15 13:25:51 +02:00
Andrej730 ac45b16e73 Fixed crash on Mac m1 on removing unused types (similar to 4d0be1972) 2024-04-15 13:25:51 +02:00
Andrej730 7a4baed6e6 Fix crash on Mac M1 on removing cost item
Crash happened because we were addressing `.id()` of already deleted `cost_item`.
Surprisingly for me on windows addressing `cost_item` was causing crash too but `cost_item.id()` worked fine.
2024-04-15 13:25:51 +02:00
Andrej730 704ec5e8f9 avoid errors unregistering tools from tests 2024-04-15 13:25:51 +02:00
Dion Moult 0e47b6ff34 Attempt to bundle hppfcl for macosm1 2024-04-15 13:25:51 +02:00
Andrej730 d522174247 Console warnings if drawing's assets not found #3325 2024-04-15 13:25:51 +02:00
Andrej730 5d01489251 unregistering spatial and structural tools on disabling addon 2024-04-15 13:25:51 +02:00
Andrej730 8d18a8a023 Fix for f88835b #3271
Now we do not rely on small offset to keep using inner curves to create linings, if some part of the lining is not present (which happens on mullions and transoms) we'll create U or L shape extrusion instead of rectangle with inner curve.

Long story short - this should keep ifc for windows valid.
2024-04-15 13:25:51 +02:00
Andrej730 e3b77613d3 Corrected L shapes in window lining after e89a9cd #3271
From this - https://i.imgur.com/hQuCcR3.png
To this - https://i.imgur.com/qZ2Lyfo.png

It's a bit hacky since we still use really small offsets to keep "The outer curve shall enclose all inner curves." rule for IfcArbitraryProfileDefWithVoids valid.
2024-04-15 13:25:51 +02:00
Andrej730 61be440545 Disable default stream mode for now to avoid errors #3354 2024-04-15 13:25:51 +02:00
Andrej730 1a7382ef40 Poll message for bim.file_unassociate/bim.file_associate 2024-04-15 13:25:51 +02:00
Andrej730 8a9dcbad2f Fixed error on saving styles without textures after 3aff29dec 2024-04-15 13:25:51 +02:00
Andrej730 4e1acc7955 Added IFC override operators to outliner/object context menus #3345
Outliner context menu - https://i.imgur.com/TkJKbLh.png
Object context menu - https://i.imgur.com/JXOEdYH.png
2024-04-15 13:25:50 +02:00
Dion Moult 9d462dab7d Docs now point to the popular Search IFC Class website. 2024-04-15 13:25:50 +02:00
Dion Moult bde5b52495 You can now exclude classes from streaming in ifcopenshell.stream 2024-04-15 13:25:50 +02:00
Andrej730 2fbb3c8ac6 adjust window offset on transoms/mullions for symmetry #3271
Before -  https://i.imgur.com/DbEzJ9H.png
After - https://i.imgur.com/0CERh86.png

Added it for modifier preview and ifc 2d and 3d repr but still need to work some things in 3d representation (L shape lining is not always detected correctly).
2024-04-15 13:25:50 +02:00
Dion Moult 531dc21d8e New option to enable streaming IFC data into BBIM.
To test, go into add-on preferences and enable "Should Stream". Then load an IFC-SPF in advanced mode, and disable "Load Geometry" before loading (the geometry iterator doesn't work with streaming).
2024-04-15 13:25:50 +02:00
Dion Moult 17582f00cf Naive implementation of file stream and Lark based IFC-SPF reader to handle huge IFCs. 2024-04-15 13:25:50 +02:00
Andrej730 bc20b4a899 Fixing tests after 2dc9dc200 2024-04-15 13:25:50 +02:00
Andrej730 6d152c4fc4 Support for import IfcSurfaceStyleWithTextures
Added UI for adding textures in BBIM shader graph generator

https://imgur.com/a/BI5pOZn
2024-04-15 13:25:50 +02:00
Dion Moult 9beae21615 See #3347. Hotfix latest IfcOpenShell SQLite features when making builds. 2024-04-15 13:25:50 +02:00
Dion Moult 115bd32846 The BlenderBIM Add-on now supports loading IFCSQLite files! 2024-04-15 13:25:50 +02:00
Dion Moult 304a5594bb You can now toggle loading geometry in advanced mode when loading a project 2024-04-15 13:25:50 +02:00
Dion Moult fee6ea52ba ifcopenshell.sqlite wrapper now handles JSON fields by default, which is significantly more performant
f attributes holding entity lists are expanded in SQL, this means that you end up with significantly more rows. Also, you cannot have the ifc_id marked as a UNIQUE field / benefit from unique primary key index. So leaving the fields as JSON is actually significantly more efficient (almost 10X faster to load a model into BBIM).
2024-04-15 13:25:50 +02:00
Dion Moult af796d5f9d Ifc2Sql patch now can store inverses for efficient queries. 2024-04-15 13:25:50 +02:00
Andrej730 0a22e8d7c2 Fixed typo in e3a7f7627 2024-04-15 13:25:50 +02:00
Andrej730 46bc71eac9 Fixing bug after 28cc168
Was causing some tests to fail
2024-04-15 13:25:50 +02:00
Andrej730 5cb1936412 Avoid ui errors after 2dc9dc200 2024-04-15 13:25:50 +02:00
Andrej730 91fa5b1ec6 Unhide in render for not excluded objects #3338
Objects were hidden in render but never unhidden if they were no more in drawing's .Exlcude
2024-04-15 13:25:50 +02:00
Andrej730 48d91dac21 Generating IFC compatible shader graphs
Added new panel. in shader graph N-panel that allows you to create fully GLTF and IFC compatible shader graphs by just tweaking parameters from the panel. Note that it's still saved to IFC only when you hit "Save Current Style", before that it's still just stored in blender.

https://imgur.com/a/vmkoLPH

The premise is that if you want to have non-external style you'd be able to create it entirely from this panel - so there will no need to guess or to remember which parameters from the graph are supported by IFC and which are not.

It's still work in progress, still need to polish it, add support for more reflectance methods and add suport for textures (need to be able to import/export it with .ifc and set them from this panel).
2024-04-15 13:25:50 +02:00
Andrej730 ebcc6b534d Fixed #3342 2024-04-15 13:25:50 +02:00
Andrej730 f79053433f Set shading flat by default to solve #3336
Before blender 3.6 it was setting flat shading by default, so we just keeping the same behaviour.
2024-04-15 13:25:50 +02:00
Thomas Krijnen 20f279dfa3 IFC4X3 codegen #2805 2024-04-15 13:24:59 +02:00
Thomas Krijnen 3266648896 IfcGeom dynamic casting updates #2805 2024-04-15 13:23:11 +02:00
Andrej730 77839efd6a option to keep the viewport position on activating drawing #3333
currently it works with alt clicking activate drawing button
https://i.imgur.com/lgvP4QA.png
2024-04-15 13:03:26 +02:00
Andrej730 7f6cf90759 Fixed #3335 caused by 36b746d 2024-04-15 13:03:26 +02:00
Bruno Postle 7e9cef2d8e BBIM fix Git panel polling repo on refresh (#3096)
Just scrolling Git panel shouldn't do any Git IO
2024-04-15 13:03:26 +02:00
Massimo Fabbro eb225070d3 Add toggle space visibiity button into spatial tool menu 2024-04-15 13:03:01 +02:00
Andrej730 2ac74fb535 refactor with SKIP_SAVE option on operator props
Co-Authored-By: Gorgious56 <25156105+Gorgious56@users.noreply.github.com>
2024-04-15 13:03:00 +02:00
Andrej730 89146ea046 More options to save .ifc as relative path in blender 2024-04-15 13:03:00 +02:00
Andrej730 7f10eaa14f Fixed tests after a4a6dce 2024-04-15 13:03:00 +02:00
Andrej730 4d3ed81971 Fixed test after b035129 2024-04-15 13:03:00 +02:00
Andrej730 5e019bbc42 Fixed test after c8c0c9a
Taking into account that now we have error messages if user will try to remove the last material layer which would make layer set invalid ifc.

FAILED test/bim/test_feature.py::test_remove_material_set_layer - AssertionError: Failed to run operator bpy.ops.bim.remove_layer(layer=IfcStore.get_file().by_id(93).MaterialLayers[...
2024-04-15 13:03:00 +02:00
Andrej730 765d52d4e1 Fixed missing ifc file in api call after 28cc168
Some bim test was failing because of it

FAILED test/bim/test_feature.py::test_assign_material__material_profile_set - AssertionError: No material Default found in profiled materials: []
2024-04-15 13:03:00 +02:00
Andrej730 07401c4b1c Fixed void tests after d3d2c36 2024-04-15 13:03:00 +02:00
Andrej730 0f206fe709 Fixing test after 1c12a98
FAILED test/bim/test_feature.py::test_export_ifc__with_basic_contents_and_saving_as_a_relative_path - AssertionError: Value is C:\IfcOpenShell\src\blenderbim\test\files\temp\export.ifc
2024-04-15 13:03:00 +02:00
Andrej730 3a0d09a6dc Small fix related to 5c2ae98c0 and a bit more descriptive operator error
FAILED test/bim/test_feature.py::test_create_project__ifc2x3 - AssertionError: Failed to run operator bpy.ops.bim.create_project
2024-04-15 13:03:00 +02:00
Andrej730 5397b95df5 Fixing collections tests related to 99d9c0f5b
FAILED test/bim/test_feature.py::test_remove_drawing - AssertionError: The collection "IfcGroup/PLAN_VIEW" does not exist
2024-04-15 13:03:00 +02:00
Bruno Postle 489436449c BlenderBIM push Git tags to remote
Shows error message if push fails
2024-04-15 13:03:00 +02:00
Andrej730 a7283ca538 Fixed duplicated objects collections issue after 586707dd2
Duplicated objects were not able to have their own collection after 586707dd2

Also fixed bim test
FAILED test/bim/test_feature.py::test_copy_a_storey - AssertionError: assert 'IfcBuildingStorey/My Storey.001' in ['IfcBuildingStorey/My Storey']
2024-04-15 13:03:00 +02:00
Andrej730 6b0200e1f0 Preserving original name on unlinking
Unlinking was using copied object name for the unlinked object instead of the original one.
So it worked like Cube -> IfcWall/Cube -> Cube.001 and bim test was failing:
FAILED test/bim/test_feature.py::test_unlink_object - AssertionError: The object "Cube" does not exist
2024-04-15 13:03:00 +02:00
Andrej730 f45e3b99ca Fixed couple bugs in test_feature
1) Explicitly set empty ifc project not to load demo library - was still loading because it was using my default scene which caused errors.
2) typo in dimension check assertion message
2024-04-15 13:03:00 +02:00
Andrej730 787f9cd7be Fixing collectors tests after 1f43ec8 2024-04-15 13:03:00 +02:00
Andrej730 ea9457a49f Fixing tool tests 2024-04-15 13:03:00 +02:00
Andrej730 664d0e0fa6 Fixing core tests 2024-04-15 13:03:00 +02:00
Andrej730 f4067abc42 Fixed import error with filtering out IfcGrid's spatial element #3283
Fixed error that was occuring if you try to import .ifc file where spatial element contains only grid and will use advanced mode, filter mode = "IFC Class" and check "Filter Spatial Elements".

Error occured because spatial element was filtered out but then when ifc grid was created and importer to find a spatial element based collection for the grid it couldn't find it.

Traceback:
Error: Python: Traceback (most recent call last):
  File "\blenderbim\bim\module\project\operator.py", line 595, in execute
    ifc_importer.execute()
  File "\blenderbim\bim\import_ifc.py", line 260, in execute
    self.place_objects_in_collections()
  File "\blenderbim\bim\import_ifc.py", line 1494, in place_objects_in_collections
    self.place_object_in_collection(self.file.by_id(ifc_definition_id), obj)
  File "\blenderbim\bim\import_ifc.py", line 1498, in place_object_in_collection
    self.place_object_in_decomposition_collection(element, obj)
  File "\blenderbim\bim\import_ifc.py", line 1517, in place_object_in_decomposition_collection
    return self.place_object_in_spatial_decomposition_collection(element, obj)
  File "\blenderbim\bim\import_ifc.py", line 1545, in place_object_in_spatial_decomposition_collection
    self.collections[container.GlobalId].children.link(grid_collection)
KeyError: '33AiKftFj2aAf2MqQr5Gs7'
2024-04-15 13:03:00 +02:00
Andrej730 ae44957464 Fixed getting filtered spatial elements at import for ifc2x3 #3283
In ifc2x3 IfcProject is not IfcContext because there is no IfcContext in ifc2x3 and it was causing the error below on .ifc import with filtered spatial elements.
Also added small refactor

Traceback:
Error: Python: Traceback (most recent call last):
  File "\blenderbim\bim\module\project\operator.py", line 595, in execute
    ifc_importer.execute()
  File "\blenderbim\bim\import_ifc.py", line 253, in execute
    self.create_spatial_elements()
  File "\blenderbim\bim\import_ifc.py", line 688, in create_spatial_elements
    self.create_generic_elements(self.spatial_elements)
  File "\blenderbim\bim\import_ifc.py", line 698, in create_generic_elements
    products = self.create_products(elements)
  File "\blenderbim\bim\import_ifc.py", line 717, in create_products
    iterator = ifcopenshell.geom.iterator(settings, self.file, multiprocessing.cpu_count(), include=products)
  File "\blenderbim\libs\site\packages\ifcopenshell\geom\main.py", line 99, in __init__
    raise ValueError("include and exclude need to be an aggregate of IfcProduct?")
ValueError: include and exclude need to be an aggregate of IfcProduct?
2024-04-15 13:03:00 +02:00
Thomas Krijnen 29fbbc2a02 Remove dependency on bootstrap 2024-04-15 13:03:00 +02:00
Thomas Krijnen 970b71663e #3120 item_id vector test case 2024-04-15 13:03:00 +02:00
Thomas Krijnen dc81be8a9a item_id vector #3120 2024-04-15 13:02:45 +02:00
Andrej730 17ee5e6f43 Getting shader graph nodes by type rather than name #3316
Because relying on names doesn't work for non english users
2024-04-15 12:04:44 +02:00
Andrej730 e52e9d4ac0 Fixed error on disabling editing window 2024-04-15 12:04:44 +02:00
Andrej730 3e0adb8dfd Added button to update current style #3293
Example - https://i.imgur.com/f4Yi3MR.png
Now changing style type should be a bit more intuitive - previously there were no button and it wasn't possible to change style type for all selected objects / changing style type for the entire scene were hidden in N-panel Miscellaneous section.

Now it also able to change style type for all blender materials, even the ones that don't have any objects using them (wasn't possible before 7c0c934b4)
2024-04-15 12:04:44 +02:00
Bruno Postle d15f7cf88e BlenderBIM Git merge asymmetry heuristic (#3096)
`ifcmerge` is asymmetrical. When both branches have new entities, either
local or remote step Ids need to be renumbered to resolve the merge
conflict.

If the remote branch is 'origin/main' or 'main' we preserve remote Ids,
otherwise we preserve local Ids.

This should support a workflow where a local 'main' branch is kept
pristine, but other local branches are treated as disposable; it should
also support a workflow where multiple authors access a shared 'origin'.
2024-04-15 12:04:44 +02:00
Thomas Krijnen 88823943f0 Further defer sql.py imports for ifcopenbot to succeed 2024-04-15 12:04:44 +02:00
Thomas Krijnen 4f387e723b Comment out import mysql.connector 2024-04-15 12:04:44 +02:00
Thomas Krijnen 5a601f16fd Correct if-clause 2024-04-15 12:04:44 +02:00
Thomas Krijnen a7b10a2880 Add test 2024-04-15 12:04:44 +02:00
Totally a booplicate aced364a08 smol fix 2024-04-15 12:04:44 +02:00
Totally a booplicate 0b2cfc7560 fix missing else clause 2024-04-15 12:04:44 +02:00
Totally a booplicate dc5a0d4568 raise TypeError on invalid pset 2024-04-15 12:04:44 +02:00
Totally a booplicate 79983e5097 rework unpack_unit_value
handle the `None` case, simplify logic
2024-04-15 12:04:44 +02:00
Totally a booplicate e31047e8c6 improve naming of the new method 2024-04-15 12:04:44 +02:00
Totally a booplicate 182aa3ed01 improve update_existing_properties
explicit class check
error out on a not supported type
better methods names
2024-04-15 12:04:44 +02:00
Totally a booplicate 0632c9bf1b implement _try_purge
per review comment about repeating code
2024-04-15 12:04:44 +02:00
Totally a booplicate cd5baefb55 restructure if/elif/else chain 2024-04-15 12:04:44 +02:00
Totally a booplicate 53dd817d97 support tuples 2024-04-15 12:04:43 +02:00
Totally a booplicate 0ce987f788 move prop check 2024-04-15 12:04:43 +02:00
Totally a booplicate f4c618701c per review
change exception message
remove TODO
pass `Unit`
raise `NotImplementedError` when no template was found
2024-04-15 12:04:43 +02:00
Totally a booplicate c186e7120c resolve TODO
This is being fixed, we should always have a class to use
2024-04-15 12:04:43 +02:00
Totally a booplicate 1f89fea569 attempt to improve pset support
1. Adds support to directly passed in property entities
2. Adds support for tuples
3. Adds support for P_LISTVALUE
2024-04-15 12:04:43 +02:00
Balázs Dukai 2b71b33c82 Don't use importlib for version 2024-04-15 12:04:43 +02:00
Balázs Dukai 435090e7f1 Get package version from pyproject.toml 2024-04-15 12:04:43 +02:00
Balázs Dukai 4a4186e3ce Include GenericCityObject extension 2024-04-15 12:04:43 +02:00
Balázs Dukai fb3c553249 Add parameters 2024-04-15 12:04:43 +02:00
Balázs Dukai bc3cc94500 Init package 2024-04-15 12:04:43 +02:00
Vasile-Corjan ffebfca277 Update README.md 2024-04-15 12:04:43 +02:00
Vasile-Corjan eb67a809ce Update README.md
I have added the parameters "minOccurs" and "maxOccurs"
2024-04-15 12:04:43 +02:00
Dion Moult e7bb823f15 Run black on existing entity_instance 2024-04-15 12:04:43 +02:00
Dion Moult aafb905199 Build testing prototype of an SQLite based file / entity_instance. 2024-04-15 12:04:43 +02:00
Dion Moult 35a346e412 Document two answers to frequently reported bugs: missing numpy and blend / ifc out of sync. 2024-04-15 12:04:43 +02:00
Dion Moult 297ac5af3a Minor geometry processing documentation fix 2024-04-15 12:04:43 +02:00
Dion Moult ef98bd5120 Convert Ifc2Sql script to IfcPatch recipe and add geometry support 2024-04-15 12:04:43 +02:00
Dion Moult 816efc8810 Fetch pset and qto names via pset data instead of real time to prevent UI lag on larger models. 2024-04-15 12:04:43 +02:00
Dion Moult 0e02c97fc6 Lazily check for BBIM_Railing psets to prevent unnecessarily fetching psets for every element when loading models. 2024-04-15 12:04:43 +02:00
Dion Moult a572bcfcb9 IfcPatch can now support patches that write to arbitrary files or have no output. 2024-04-15 12:04:43 +02:00
Dion Moult 534247daa1 Fix bug for getting psets of materials and profiles in IFC2X3 2024-04-15 12:04:43 +02:00
Thomas Krijnen 7c6620550a add assert #3308 2024-04-15 12:04:26 +02:00
Thomas Krijnen 7feeb441ff #2819 Handle periodic bspline curves in serialization 2024-04-15 11:58:51 +02:00
Sigma Dimensions e17b9fa111 enable activating object type when trying to select type from an object ( whilst the type is hidden from view layer) 2024-04-15 11:44:56 +02:00
Massimo Fabbro 240f9b0100 Now generate spaces from walls considers also columns in order to create the contours 2024-04-15 11:44:56 +02:00
Thomas Krijnen cd8bc823c2 #3305 Less pessimistic tolerance comparison in newells method 2024-04-15 11:44:56 +02:00
Thomas Krijnen 1efe5761c0 #3305 one more iteration on lower fuzziness level for boolean ops 2024-04-15 11:44:56 +02:00
Sigma Dimensions 8a108627e4 temporarily hide IFC Spatial Manager for IFC2X3 models 2024-04-15 11:44:56 +02:00
Sigma Dimensions 62b5f080ab Enable selecting group elements 2024-04-15 11:44:56 +02:00
Sigma Dimensions 2b4c21615b Enable selecting a container's children from the IFC Spatial Manager panel 2024-04-15 11:44:56 +02:00
Sigma Dimensions c280bfa7ae fix replacing material with material profile 2024-04-15 11:44:56 +02:00
Sigma Dimensions ab19c9ff46 experimental patch of non parametric mep segments 2024-04-15 11:44:56 +02:00
Sigma Dimensions da41469c43 fix missing import 2024-04-15 11:44:55 +02:00
Sigma Dimensions ee0dca4898 Move Spatial Manager UI to "IFC Project Set-up" 2024-04-15 11:44:55 +02:00
Sigma Dimensions 2cf50dc48f split material assign/unassign operators into tool and core 2024-04-15 11:44:55 +02:00
Sigma Dimensions 5ce156bfa9 fix delete material operator 2024-04-15 11:44:55 +02:00
Sigma Dimensions a38784cdc4 Fix displaying connections for selected distribution ports 2024-04-15 11:44:55 +02:00
Sigma Dimensions 0959a7f6a3 Refactor and re-use common spatial_tool.select_products 2024-04-15 11:44:55 +02:00
Andrej730 a7faa3ec3e Support external shaders from currently opened blend file
Previously it was crashing if you try use shader from current .blend file as external.
I guess we now kind of support external internal shaders 🙃
2024-04-15 11:44:55 +02:00
Andrej730 00a87819e4 switch to external styles for rendered shading in viewport
Unfortunately I couldn't find a way to make it work with areas that user created during current blender session. But new areas will have this feature too after blender restart
2024-04-15 11:44:55 +02:00
Andrej730 70eaa1a7df prioritize external styles on ifc import
also found a way to switch shade graph for two materials without juggling active materials and active objects - it was necessary to make it work on import without adding temporary active object
2024-04-15 11:44:55 +02:00
johanrd 9648a51e04 fix typo in README.md 2024-04-15 11:44:55 +02:00
Bruno Postle 4318cec65a BBIM show all fetched remote Git branches (#3096) 2024-04-15 11:44:55 +02:00
Gorgious eb35157f8f Fix #3142 : Use Tab hotkey to edit horizontally layered objects 2024-04-15 11:44:55 +02:00
Ahmad Saleem Z 3ebd31a486 added link to aws/lambda guide in installation guide 2024-04-15 11:44:55 +02:00
Ahmad Saleem Z a152474e6d fix ARG in Dockerfile 2024-04-15 11:44:55 +02:00
Ahmad Saleem Z d009188805 documentation 2024-04-15 11:44:55 +02:00
Ahmad Saleem Z 8d17838af1 example fixes 2024-04-15 11:44:55 +02:00
Ahmad Saleem Z 829870a416 added aws/lambda sample 2024-04-15 11:44:55 +02:00
Bruno Postle c07cb2141e BlenderBIM operator to add remote repo (#3096)
Procedure to merge a pull request would be: Add Remote, select the added
remote in the pull-down, Fetch from remote, select the added remote
branch in the pull-down, Merge, delete remote
2024-04-15 11:44:55 +02:00
Dion Moult ada978ed1f Toggle between full schema (i.e. all tables for every declaration) and partial schema dump into SQL 2024-04-15 11:44:55 +02:00
Bruno Postle 84cd96a48d BlenderBIM operator to delete a Git remote (#3096) 2024-04-15 11:44:55 +02:00
Bruno Postle 567ad3bf63 BlenderBIM fix warning writing .git/config (#3096) 2024-04-15 11:44:55 +02:00
Balázs Dukai 6f6ff416c9 Add copyright 2024-04-15 11:44:55 +02:00
Balázs Dukai a97cd7ad24 Update to ifcopenshell 0.7.0 and cjio 0.8
LoD is string in v1.1
2024-04-15 11:44:55 +02:00
Balázs Dukai 818f77da2b Update to v1.1 CityObject types 2024-04-15 11:44:55 +02:00
Andrej730 8ac1bc6900 IfcGitData update to ifcgit operators poll() methods
Added loading IfcGitData to ifcgit operator's poll() methods because it was getting a bit spammy in console if you don't use git.

Traceback (most recent call last):
  File "\scripts\addons\blenderbim\bim\module\ifcgit\operator.py", line 255, in poll
    if IfcGitData.data["ifcmerge_exe"]:
KeyError: 'ifcmerge_exe'
Traceback (most recent call last):
  File "\scripts\addons\blenderbim\bim\module\ifcgit\operator.py", line 147, in poll
    repo = IfcGitData.data["repo"]
KeyError: 'repo'
Traceback (most recent call last):
  File "\scripts\addons\blenderbim\bim\module\ifcgit\operator.py", line 18, in poll
    path_ifc = IfcGitData.data["path_ifc"]
KeyError: 'path_ifc'
Traceback (most recent call last):
  File "\scripts\addons\blenderbim\bim\module\ifcgit\operator.py", line 45, in poll
    path_ifc = IfcGitData.data["path_ifc"]
KeyError: 'path_ifc'
Traceback (most recent call last):
  File "\scripts\addons\blenderbim\bim\module\ifcgit\operator.py", line 190, in poll
    repo = IfcGitData.data["repo"]
KeyError: 'repo'
Traceback (most recent call last):
  File "\scripts\addons\blenderbim\bim\module\ifcgit\operator.py", line 111, in poll
    repo = IfcGitData.data["repo"]
KeyError: 'repo'
2024-04-15 11:44:55 +02:00
Andrej730 dfe7421dab External Styles
Added support for external blender styles that will be saved to ifc.
What it basically means that you can append material from external .blend file as a style that can be loaded in your blender material anytime.

1) External style can be added in Material Tab
https://i.imgur.com/BYfesi5.png

Note that you select material name at the right side of file selecting panel:
https://i.imgur.com/mvqaaod.png

2) After adding external style you can switch between external and other surface styles:
https://i.imgur.com/YtCz8an.png

3) There is also option to switch styles to External for all objects in the scene:
https://i.imgur.com/u3zTcX9.png

Some other changes:
- some ui adjustments
- moved functions that create blender shaders to tool.Loader (they also reset shader graph now so it's possible to use them on non-default blender materials)
- some new tools for copying node graph from one material to another, appending data blocks
- new operator for browsing external styles can be reused later to append other data blocks
2024-04-15 11:44:55 +02:00
Dion Moult a4224b104d Experimental support for storage of IFC in MySQL and SQLite 2024-04-15 11:44:55 +02:00
D4ve-R 26ea4fd583 Revert "build scripts"
This reverts commit 6c1218d352.
2024-04-15 11:44:52 +02:00
D4ve-R 809f3463f0 build scripts 2024-04-15 11:43:45 +02:00
D4ve-R fc29710c1d prepare for referencing 2024-04-15 11:39:21 +02:00
D4ve-R b915da223d metersPerUnit 2024-04-15 11:39:21 +02:00
D4ve-R 8723d14aee usd rotateXYZop 2024-04-15 11:39:21 +02:00
D4ve-R 9b9dce33a1 Update submodule 2024-04-15 11:39:21 +02:00
D4ve-R 7c40ce10e6 fix typo 2024-04-15 11:39:21 +02:00
D4ve-R 7d5024bdf4 refactor 2024-04-15 11:39:21 +02:00
D4ve-R 82438f279f stage up axis 2024-04-15 11:39:21 +02:00
D4ve-R 448f543e3d fix filename bug 2024-04-15 11:39:21 +02:00
D4ve-R b9f2dbb0b3 filename bug 2024-04-15 11:39:21 +02:00
D4ve-R fca79ddb6c material subsets 2024-04-15 11:38:40 +02:00
D4ve-R c8b0b65564 works fine 2024-04-15 11:38:39 +02:00
D4ve-R 38b4a225ad compile & link successful 2024-04-15 11:37:03 +02:00
D4ve-R 7e090f5709 materials 2024-04-15 11:29:06 +02:00
D4ve-R c8205b4a9e Add USDSerializer to IfcConvert 2024-04-15 11:29:01 +02:00
D4ve-R 93042ca1ef Add USDSerializer write-only 2024-04-15 11:17:03 +02:00
Thomas Krijnen 01ad84901c #2942 Escape SVG text labels 2024-04-15 11:17:03 +02:00
Nelson Henrique f31132b24e implements fileselect to export_cost_schedules 2024-04-15 11:17:03 +02:00
Andrej730 66bd1d0d5f Fixed small error on disabling editing extrusion axis 2024-04-15 11:17:02 +02:00
Chetan 86c93ac1e7 If an IFC file has an IFCRELASSOCIATESMATERIAL but did not supply an IFCMATERIAL, IfcConvert will crash. This commit prevents the crash, catches the exception and prints an error on the terminal 2024-04-15 11:16:59 +02:00
Dion Moult 2c4227384d Fix bug where you couldn't unassign inherited materials. 2024-04-15 11:07:37 +02:00
Dion Moult 408115b94b Fix sync bug where unused styles would be purged when reloading a blender file. 2024-04-15 11:07:37 +02:00
Martin15135215 c5e4914bdf CITATION.cff for BIMTester 2024-04-15 11:07:37 +02:00
Martin15135215 c50a171ae9 CITATION.cff for ifc5d 2024-04-15 11:07:37 +02:00
Martin15135215 2b72291e71 CITATION.cff for ifc4d 2024-04-15 11:07:37 +02:00
Martin15135215 3765c72684 CITATION.cff for ifc2ca 2024-04-15 11:07:37 +02:00
Martin15135215 f0a4244c77 CITATION.cff for bsdd 2024-04-15 11:07:37 +02:00
Martin15135215 bfcc624249 CITATION.cff for bcf 2024-04-15 11:07:37 +02:00
Bruno Postle 6c45936118 BlenderBIM fix Git error on simple merge (#3096)
Running git commit after a simple merge (that hasn't required conflict
resolution) is a noop, but generates an annoying message anyway.
2024-04-15 11:07:37 +02:00
Dion Moult 1eb1ba604e Fix #3272. See #3069. Fix incorrect refactoring when I was decoupling collections. 2024-04-15 11:07:37 +02:00
Gorgious56 e5003651ed Fix error when going out of edit mode with TAB when editing an arbitrary profile 2024-04-15 11:07:37 +02:00
Gorgious56 2008868e0e Fix profile based geometry not re-generating properly when exiting edit mode and the profile geometry wasn't modified 2024-04-15 11:07:37 +02:00
Martin15135215 d3ea921165 Update author in CITATION.cff 2024-04-15 11:07:37 +02:00
Martin15135215 e32de7350d CITATION.cff file for BlenderBIM 2024-04-15 11:07:37 +02:00
Thomas Krijnen 5714bd1ec4 take into account edge orientation correctly #3201 2024-04-15 11:07:23 +02:00
Andrej730 374f411b59 ids/classes namespaces for drawings in the sheet #3047
Now we add some prefix based on drawing id to each id in the drawing and also add this prefix as a class and add it to all css selectors.
Reason for that so each drawing on the sheet can have it's own set of styles that won't be affecting other drawings.
Example - https://i.imgur.com/kqRCwJW.png
2024-04-15 11:04:27 +02:00
Dion Moult a4f7da598f See #3266. Write documentation on how to use IfcCSV. 2024-04-15 11:04:27 +02:00
Dion Moult 2896c23143 Add support for Pandas DataFrames in IfcCSV and clean up function signatures 2024-04-15 11:04:26 +02:00
Dion Moult 02462c1209 Fix #3264. Describe IFC to JSON conversion (and other formats) in documentation. 2024-04-15 11:04:26 +02:00
Bruno Postle 482f97961d BlenderBIM fix Git merge log history (#3096)
The GitPython commit() method isn't suitable for completing a merge as
it only sets one parent, losing all history from the merged branch.
2024-04-15 11:04:26 +02:00
Thomas Krijnen 236c064849 unreferened param #3255 2024-04-15 11:04:09 +02:00
Gorgious56 9ec43b7d9e Revert unselect non-ifc object using TAB 2024-04-15 10:59:03 +02:00
Gorgious56 4def4c2445 Fix wall mounted handrail railing modifier not regenerating properly when going out of edit mode with the tab key if the path wasn't modified 2024-04-15 10:59:03 +02:00
Dion Moult 7437f0d20c Fix #3226. There is now a faster deletion mode that kicks in for large models and large geometry deletions. 2024-04-15 10:59:03 +02:00
Dion Moult 13b80af97e See #3226. New batched remove_deep2() which uses serialisation for faster removal performance on large graphs. 2024-04-15 10:59:03 +02:00
Andrej730 c94adb7980 Fixed #3259 2024-04-15 10:59:03 +02:00
Bruno Postle 641962f0e0 BlenderBIM use git shortlog to summarise merge log 2024-04-15 10:59:03 +02:00
Gorgious56 9180fdce5a Edit profile based representations with TAB (#3142)
* You can now edit profile based representations with TAB

* Minor fix

* Minor fix

* You can now edit parametric railing paths with TAB
Still not sure about the implementation though

* use shortcut instead of direct link to railing edition

* Add utility to check if a mesh is profile based or its representation is a swept solid

* Fix bug when trying to edit an empty object

* Prevent editing door, window and stair modifiers since they're fully parameterized by the modifier properties

* You can now edit roof modifier, railing modifier and various profile based objects

* You can now edit axis profile based objects
2024-04-15 10:59:03 +02:00
Andrej730 940d999bf4 Solved #3219 2024-04-15 10:59:03 +02:00
Andrej730 ad4f00648f Blender curves to IfcIndexedPolyCurve #3233
Now blender curves segments saved in IfcIndexedPolyCurves instead of creating individual polygons.
Also changed ShapeBuilder.polyline - now it will try to store points in IfcLineIndex where it's possible (previously it was storing just 2).
2024-04-15 10:59:03 +02:00
Andrej730 2db82371bd Display units for more pset/qset props #3235
Now current project units displayed for area and volume properties too.
https://i.imgur.com/7dgl1pC.png
Also added support for imperial units symbols.
2024-04-15 10:59:03 +02:00
Andrej730 0874320935 small note for unsupported pset prop types 2024-04-15 10:59:03 +02:00
Andrej730 6665dd7e92 Add to scene properties whether we use relative path to .ifc #3251
Previously it was stored as operator's prop which is (turned out) reseted on reopening .blend.
2024-04-15 10:59:03 +02:00
Andrej730 4d171c17a8 Small fix for 1f43ec870
Was getting this error at project start:

Traceback (most recent call last):
  File "\scripts\addons\blenderbim\bim\module\project\operator.py", line 332, in execute
    return IfcStore.execute_ifc_operator(self, context)
  File "\scripts\addons\blenderbim\bim\ifc.py", line 410, in execute_ifc_operator
    result = getattr(operator, "_execute")(context)
  File "\scripts\addons\blenderbim\bim\module\project\operator.py", line 345, in _execute
    self.import_type_from_ifc(element, context)
  File "\scripts\addons\blenderbim\bim\module\project\operator.py", line 374, in import_type_from_ifc
    collection_obj = collection.BIMCollectionProperties.obj
AttributeError: 'LayerCollection' object has no attribute 'BIMCollectionProperties'
2024-04-15 10:59:03 +02:00
Andrej730 47ed33cba0 small fix for syntax warning after 4865b62ea
SyntaxWarning: "is not" with a literal. Did you mean "!="?
2024-04-15 10:59:03 +02:00
Andrej730 8933478137 Spatial/Structural Tools icons 2024-04-15 10:59:03 +02:00
Andrej730 2ab4213e01 Moving operators to Spatial Tool
Changes:
- Moved Shift A "Add boundary" from BIM Tool to Spatial Tool
- Moved Alt B "Show boundaries" from BIM Tool to Spatial Tool
2024-04-15 10:59:03 +02:00
Massimo Fabbro e7509ccc3f Fix create spaces from walls z-value (#3248)
Co-authored-by: Dion Moult <dion@thinkmoult.com>
2024-04-15 10:59:03 +02:00
Massimo Fabbro 98ba75ef52 New toggle space visibility button 2024-04-15 10:59:03 +02:00
Dion Moult bc76c8497e You can now get decompositions non-recursively in element utilities 2024-04-15 10:59:03 +02:00
Dion Moult b5c4b87238 Fix #3069. (Again) review all occurrences of users_collection and collection.name 2024-04-15 10:59:03 +02:00
Trashman247 e4ec8c40f0 Keep dist-info in compiling brickschema and add persistence extras 2024-04-15 10:59:03 +02:00
Bruno Postle c995d70ae1 Include commit summary of merged branches (#3096)
Git merges usually transfer the commit history, but when we resolve a
conflict with a 'mergetool' (ie. ifcmerge), this history is lost,
everything is squashed into a single commit. Now a summary of the
merged changes is appended to the merge message.
2024-04-15 10:59:03 +02:00
Bruno Postle b2568fd343 Display multi-line commit and tag messages (#3096) 2024-04-15 10:59:03 +02:00
Sigma Dimensions cf6be5dd18 Add a banner to ifcopenshell README 2024-04-15 10:59:03 +02:00
Bruno Postle 2738aa571a Operator to delete a Git tag (#3096) 2024-04-15 10:59:03 +02:00
Bruno Postle 3bdf1a170a Operator to view selected object Git history #3096
A new BlenderBIM > Git History side-panel to show the raw Git log
for the step entity of the selected object
2024-04-15 10:59:03 +02:00
Sigma Dimensions f8f1ba0ae8 Prototype Building Storey Manager #3246 2024-04-15 10:59:02 +02:00
Sigma Dimensions 607172c51d fix draw_project_not_saved_ui for BIM documentation 2024-04-15 10:59:02 +02:00
Andrej730 58ea6d7de9 same generate_pset_templates.py for ifcopenshell and ifc dev repos
same script will be easier to maintain
2024-04-15 10:59:02 +02:00
Andrej730 98cc0336ec Fixed validation errors in pset templates library
- missing project and IfcRelDeclares guids
- missing RelatingContext in IfcRelDeclares
2024-04-15 10:59:02 +02:00
Andrej730 ce8379b8f7 Fixed missing PrimaryMeasureType for P_LISTVALUE in pset templates #3236
For some reason there is also was missing PrimaryUnit in IFC2X3. But it's unrelated to the changes from this commit (generating pset templates before this commit already has PrimaryUnit there).
2024-04-15 10:59:02 +02:00
Sigma Dimensions 157d7d3c02 You can now review and assign currencies from the Cost Schedule Panel 2024-04-15 10:59:02 +02:00
Sigma Dimensions 1d13edd747 Display currency on cost item values and total cost 2024-04-15 10:59:02 +02:00
Andrej730 f4344b9e75 Placeholders for spatial and structural tools 2024-04-15 10:59:02 +02:00
Andrej730 a57f9e984b Tests for external svg references 2024-04-15 10:59:02 +02:00
Trashman247 7a2c6c4b5f Update Makefile 2024-04-15 10:59:02 +02:00
Sigma Dimensions 9c707977a3 auto refresh tasks assigned to products when filtering by active schedule 2024-04-15 10:59:02 +02:00
Sigma Dimensions 362409cdcb fix removing cost item value 2024-04-15 10:59:02 +02:00
Sigma Dimensions 6e3acd8c4a BBIM 5D: Various Cost Schedule UI Improvemements 2024-04-15 10:59:02 +02:00
Thomas Krijnen 8d5911e8aa fix syntax error on gcc 2024-04-15 10:59:00 +02:00
Thomas Krijnen 5f7b07ab4c typename :( 2024-04-15 10:57:46 +02:00
Thomas Krijnen b33f5e19b7 eliminate_narrow_operands() #3141 2024-04-15 10:55:29 +02:00
Thomas Krijnen 5566be0b20 Fix IfcFile::getInverse<T>() 2024-04-15 10:38:02 +02:00
Andrej730 c930eb7603 References for adding external svgs to the sheets
It works exactly the same as schedules - you add some .svg file, path to it stored in ifc and you can attach it to the sheet.

UI - https://i.imgur.com/tGbCGBb.png

Still need to add some tests for references
2024-04-15 10:34:50 +02:00
Sigma Dimensions 87673b0784 Use util.element.get_predefined_type() #065bda6 2024-04-15 10:34:50 +02:00
Sigma Dimensions 2a791eef52 Run costing tests and rename changed methods 2024-04-15 10:34:41 +02:00
Dion Moult 5f4fef42ac See #3069. Continued refactoring to not rely on users_collection[0]. 2024-04-15 10:34:41 +02:00
Dion Moult 6e57cbcf81 See #3069. More cleanup moving away from collection names and assumed single collections. 2024-04-15 10:34:41 +02:00
Dion Moult 4f15ec1f67 Fix regressions after making aggregate based on selected objects. 2024-04-15 10:34:41 +02:00
Dion Moult 804dbee2c3 Fix #3069. WARNING: dangerous change. Objects that have their own collection now have a pointer to that collection. This fixes a variety of subtle sync bugs. 2024-04-15 10:34:41 +02:00
Andrej730 d2d6a9e7d4 Remove test to reproduce #3169 as irrelevant 2024-04-15 10:34:41 +02:00
Andrej730 0dfb34a730 Added test to cover 2629172ff 2024-04-15 10:34:41 +02:00
Andrej730 c94c580282 Fixed bug with saving data to Pset_StairFlightCommon not in project units 2024-04-15 10:34:41 +02:00
Massimo Fabbro 8e8c9d4170 Remove old patch file 2024-04-15 10:34:41 +02:00
Massimo Fabbro f7c83df793 Move the recipe into the blenderbim script folder and rewrite it as a script 2024-04-15 10:34:41 +02:00
Massimo Fabbro 512abbec7c IfcPatch ReplaceDrawingPath recipie improved: now it's possible to use it on Linux and on Windows 2024-04-15 10:34:41 +02:00
Massimo Fabbro 3204c130eb Now it's possible to fix drawing reference path problem saved in Windows and opened in Linux 2024-04-15 10:34:41 +02:00
Thomas Krijnen 3413a046f4 More informed invalid shape reporting 2024-04-15 10:34:41 +02:00
Thomas Krijnen 5d4b01e10f apply boolean results in batches as well #3201 2024-04-15 10:34:24 +02:00
Thomas Krijnen 16e6cf86b6 approximate circular sharp corners #3201 2024-04-15 10:28:35 +02:00
Sigma Dimensions 9a02fc02db Exporting cost schedules opens the folder directory 2024-04-15 09:59:58 +02:00
Andrej730 aa63055a46 Displaying project units for length values in psets and qsets
Examples:
- https://i.imgur.com/ww7MJ7w.png
- https://i.imgur.com/N1rOELc.png
2024-04-15 09:59:58 +02:00
Andrej730 01d639e2e2 Railing, Door Modifiers - project units props
Example - https://i.imgur.com/SJOQMMm.png
2024-04-15 09:59:58 +02:00
Andrej730 226e0f9b13 black format 2024-04-15 09:58:27 +02:00
Andrej730 9be09ef443 maintaining same roof thickness for different rafter edge angles
PS roof code is not getting simpler to work with 🥲
2024-04-15 09:58:26 +02:00
Dion Moult a597c171a7 Removing authoring mode which was an outdated concept. 2024-04-15 09:58:26 +02:00
Dion Moult 1f2f245671 Fix #3163. Use text in lieu of inability to use URIReferences in drawing pset. 2024-04-15 09:58:26 +02:00
Sigma Dimensions eba0525143 Cost schedule name label now shows the predefined type 2024-04-15 09:58:26 +02:00
Dion Moult cc12c388c4 Fix #3120. Don't remove doubles as it may break mesh manifoldness. 2024-04-15 09:58:26 +02:00
Dion Moult 30bff7e9c5 Fix #3113. Support regex in selector filter values. 2024-04-15 09:58:26 +02:00
Andrej730 958729c9a6 rafter edge angle and roof thickness #3092
Added option to adjust rafter edge angle and roof thickness
Short demonstration - https://imgur.com/a/TsYSs6i
2024-04-15 09:58:26 +02:00
Andrej730 8b805e507a Roof modifier - asymmetrical gable #3093
Example - https://i.imgur.com/EHaSt16.png
2024-04-15 09:58:26 +02:00
Dion Moult d611db0999 Close #3139. Bump IfcOpenShell. 2024-04-15 09:58:26 +02:00
Dion Moult 2e143f65d9 Fix #3211. Generated fills now are siblings to the element that they void. 2024-04-15 09:58:26 +02:00
Andrej730 a37585707e Schedule Builder - text/background color support #3154 2024-04-15 09:58:26 +02:00
Andrej730 f7b911faed separate ifc text literals in svg with newline #3207 2024-04-15 09:58:26 +02:00
Dion Moult 16582e2691 Fix #3212. Bug where viewport camera bisection didn't have enough tolerance and sometimes wasn't visible. 2024-04-15 09:58:26 +02:00
Dion Moult 228cce74ac Fix #3209. Handle loading of custom scales, fix incomplete NTS implementation, and use Lark for more reliable imperial scale parsing. 2024-04-15 09:58:26 +02:00
Andrej730 91567e93cc Fixed Stair annotation bug introduced in 762299124
in 762299124 I've changed number of segments and verts but never adjusted StairDecorator - so it wasn't drawing parts of the annotation
2024-04-15 09:58:26 +02:00
Andrej730 e96916dbc6 Optimized iteration over objects for viewport annotations #3198
This commit should increase viewport annotations performance significantly on large projects. Described in #3198
2024-04-15 09:58:26 +02:00
Dion Moult 0a3b9c4e2b Fix #3210. Revert "BBIM Drawings: Exclude ifc objects hidden from render view"
This reverts commit 6f39648077.
2024-04-15 09:58:26 +02:00
Dion Moult 4d01dfe379 Fix #3138. Remove manual copy class and be more intelligent about what classe can be reassigned. 2024-04-15 09:58:26 +02:00
Andrej730 6169b44fbd Same distance function for viewport and svg #1321 #3198 2024-04-15 09:58:26 +02:00
Dion Moult 2b424f3d7d Fix #3200. Bug where include / exclude filters could break the drawing. 2024-04-15 09:58:26 +02:00
Sigma Dimensions 1bf83ab0b9 BBIM Drawings: Exclude ifc objects hidden from render view 2024-04-15 09:58:26 +02:00
Sigma Dimensions 65f1bff957 Ctrl+P and Alt+P BIMTool Hotekys to assign/unassign aggregation 2024-04-15 09:58:26 +02:00
Bruno Postle 510e157775 Select new/changed objects in visual diff (#3096)
When visualising differences between current/selected revision,
new/changed objects are selected as well as colourised
2024-04-15 09:58:26 +02:00
Bruno Postle 8e605adbcc Fix checkout version equivalent to a remote HEAD 2024-04-15 09:58:26 +02:00
Dion Moult 5ff75569a0 See #3184. Preserve parametric layerset axis direction hints when changing types. 2024-04-15 09:58:26 +02:00
Dion Moult 7f7151288f Fix #2106. You can now assign an opening to another element. 2024-04-15 09:58:26 +02:00
Dion Moult 566ea1c283 Fix #3050. Unlinking now gives you an option to delete as well. 2024-04-15 09:58:26 +02:00
Dion Moult 6537d9dd71 Fix #3169. Don't allow the user to create invalid material sets without items. 2024-04-15 09:58:26 +02:00
Dion Moult 1aae597da5 See #3169. Fix bug where non walls and slabs didn't get semantic classes in drawings. 2024-04-15 09:58:26 +02:00
Andrej730 74d5d20d07 Revision Clouds - new annotation type
Short demonstration - https://github.com/IfcOpenShell/IfcOpenShell/assets/9417531/90c9b458-0bae-40a2-9eee-d748e57c24a3

Curently it doesn't have any special representation in viewport and it doesn't have any customisable parameters.

You might get come across error "Revision cloud edges must form just 1 polygon" - it means your edges either don't form any polygon or form 2 or more, both cases are not supported.
2024-04-15 09:58:26 +02:00
Dion Moult 1b261304eb Fix #3202. 2024-04-15 09:58:26 +02:00
Dion Moult 8bd77b3663 New get_shape_matrix utility. 2024-04-15 09:58:26 +02:00
Dion Moult 43bfd51ccb Fix #3181. 2024-04-15 09:58:26 +02:00
Bruno Postle e4ff87cb01 BBIM Ensure LF end-of-line in Git repo (#3096)
Git auto text detection seems to fail with IFC files, possibly due to
long lines. So we now force detection as text which ensures conversion
from CRLF to LF when adding to the repository. We also convert the local
IFC file to LF otherwise Git thinks that the local file is out-of-sync
with the repo version ¯\_(ツ)_/¯
2024-04-15 09:58:26 +02:00
Andrej730 b171dc6146 Small documentation note 2024-04-15 09:58:26 +02:00
Andrej730 218b67bc5c Procedurally generating list of props for shading styles to cover more props
If it will be too much we still have option to exclude some of them
2024-04-15 09:58:26 +02:00
Gorgious56 bf9df2897c Remove the cryptic (and slightly annoying) console warning logs when trying to display the type manager when there is no element type in the file 2024-04-15 09:58:26 +02:00
Gorgious56 66161518df Fix annoying tooltip when using the eyedropper to copy a type 2024-04-15 09:58:26 +02:00
Andrej730 0d3c0b7a03 Fixed problem with ifccsv set_element_key #3192
Currently "type" attribute in selector returns something like "#71=IfcWallType('20jY5HfLH4LBwMrDEoTdML',$,'WAL100',$,$,$,$,$,$,.NOTDEFINED.)" when the code was expecting the class name like "IfcSlab" or "IfcWall". Changed it to "class" atribute that returns just class name.
2024-04-15 09:58:25 +02:00
Andrej730 52302841d9 Window Modifier - support typing units in props
Example - https://i.imgur.com/C99RRs9.png
2024-04-15 09:58:25 +02:00
Andrej730 50e393675a More descriptive exception for reassign_class #3192
Added it because there was no error handling here anyway and later there was another UnboundLocalError:

    for attribute in declaration.all_attributes():
UnboundLocalError: local variable 'declaration' referenced before assignment
2024-04-15 09:58:25 +02:00
Andrej730 865d755730 Stair Modifier - support typing units in props
Example - https://i.imgur.com/XQsVge1.png
2024-04-15 09:58:25 +02:00
Andrej730 880dcb7fcf Array Modifier - support typing units in props
Example - https://i.imgur.com/a0r0vUs.png
Also accidentally fixed input_cursor_array not working properly for projects with non-meters units.
2024-04-15 09:58:25 +02:00
Andrej730 dc698f7116 Small error message on aggregating objects 2024-04-15 09:58:25 +02:00
Dion Moult 983f78c3a5 Fix #3193. Revert "partially addresses #3103."
This reverts commit 1b2ab4e3f0.
2024-04-15 09:58:25 +02:00
Dion Moult 122e17d5b5 Fix #3086. 2024-04-15 09:58:25 +02:00
Gorgious e6a90d6786 Using the eyedropper on a type automatically sets the type and validates assign_type. However it does display an annoying message saying the value was not set, I don't know how to get rid of it. 2024-04-15 09:58:25 +02:00
Gorgious bb2ee957e9 You can now eyedrop an object in the 3D viewport to fill in its class in the type selector 2024-04-15 09:58:25 +02:00
Gorgious c7381c8092 Fix Relating type enum not correctly initializing 2024-04-15 09:58:25 +02:00
Gorgious db283eb137 The type manager now switches to the type when clicking on the "select type" button. Duplicating a type also changes the active type in the type manager 2024-04-15 09:58:25 +02:00
Gorgious 62f2144245 Selecting types and instances now show a helpful tooltip when the object is not selectable (due to being hidden or in a hidden collection) 2024-04-15 09:58:25 +02:00
Gorgious 9d9d1660ff You can now duplicate a type from the properties panel
+ change the "paste" icon for the  "duplicate" icon
2024-04-15 09:58:25 +02:00
Gorgious 4843068458 "Select instances" button is now grayed out when the type doesn't have any instance 2024-04-15 09:58:25 +02:00
Bruno Postle 3884260bcf BlenderBIM set gitattributes and autocrlf
Force Git to always treat IFC files as text.
Store IFC in Git with LF line-endings, but checked-out files are
CRLF on Windows.
2024-04-15 09:58:25 +02:00
Andrej730 27655dcf35 Roof modifier - more descriptive errors on invalid footprints #3171 2024-04-15 09:58:25 +02:00
Andrej730 b66fac5041 Default material layer thickness for adding new layers
Same as when you create IfcMaterialLayerSet
2024-04-15 09:58:25 +02:00
Andrej730 9b221452d5 UI problem with creating empty material layer set causing issues #3169
Now it's also possible to select some material that will be used for they first layer of material layer set.
2024-04-15 09:58:25 +02:00
Ryan Schultz e94350db93 bulk assignment of objects to an aggregate. 2024-04-15 09:58:25 +02:00
Andrej730 e7510231d5 Added a descriptive error on attempt of deleting last material layer 2024-04-15 09:58:25 +02:00
Andrej730 63b394109b Fixed error loading .ifc and activating view for drawing with underlay 2024-04-15 09:58:25 +02:00
Ryan Schultz 1fafc42d36 partially addresses #3103. 2024-04-15 09:58:25 +02:00
Sigma Dimensions 6e41a25953 fix contracting/expanding schedule of rates 2024-04-15 09:58:25 +02:00
Sigma Dimensions 5e5d4f57f4 Fix selecting unassigned work/cost schedule products 2024-04-15 09:58:25 +02:00
Sigma Dimensions 9e0f1db6dc small fix for work schedule derived start/end dates 2024-04-15 09:58:25 +02:00
Sigma Dimensions 4950f249b6 BBIMD: enable deleting sequence relationships from list of predecessors/successors 2024-04-15 09:58:25 +02:00
Sigma Dimensions f81b8eae87 remove annoying print statement 2024-04-15 09:58:25 +02:00
Sigma Dimensions 53aa7a8abb ios api task fix: remove orphan IfcRelNests when deleting tasks 2024-04-15 09:58:25 +02:00
Sigma Dimensions 24af5b8904 BBIM D: Copy cost items, export Cost Schedules individually, start improving Cost Schedule UI 2024-04-15 09:58:25 +02:00
Sigma Dimensions b1e5e1914e Easier grouping of materials by allowing material attributes editing from the IfcMaterial subpanel in the scene properties tab 2024-04-15 09:58:25 +02:00
Bruno Postle 2c69e3c44c Allow missing/broken GitPython
`import git` can fail badly with a broken xcode installation, so
we let blenderbim run anyway
2024-04-15 09:58:25 +02:00
Bruno Postle a8d20717cb Fix merging of remote branches (#3096)
You can now 'clone' a remote repository and 'push' to it. There is no 'pull'
functionality because this can fail badly, so there is a 'fetch' which
retrieves all remote branches without merging (and never fails). The
user can then select the remote branch in the branch pull-down and merge
it.
2024-04-15 09:58:25 +02:00
Andrej730 f7b2a68ed3 Detect BBIM railings at import to import as meshes not curves #3144
Sometimes railing could consist just of one IFCSWEPTDISKSOLID then it will be considered native swept disk solid and imported as a curve.

But when user create BBIM railing they edit it as a mesh and curve might look a bit different. Therefore we detect it now at import to make sure it's going to be reprsented the same way as it was saved.
2024-04-15 09:58:25 +02:00
Andrej730 3601a1d43b Reset active drawing id if we removed the active drawing
Previously there was an error if you remove all drawings:
```
Traceback (most recent call last):
  File "\addons\blenderbim\bim\module\drawing\ui.py", line 182, in draw
    DrawingsData.load()
  File "\addons\blenderbim\bim\module\drawing\data.py", line 106, in load
    "active_drawing_pset_data": cls.active_drawing_pset_data(),
  File "\addons\blenderbim\bim\module\drawing\data.py", line 134, in active_drawing_pset_data
    drawing = ifc_file.by_id(bpy.context.scene.DocProperties.active_drawing_id)
  File "\addons\blenderbim\libs\site\packages\ifcopenshell\file.py", line 326, in by_id
    return self[id]
  File "\addons\blenderbim\libs\site\packages\ifcopenshell\file.py", line 314, in __getitem__
    return entity_instance(self.wrapped_data.by_id(key), self)
  File "\addons\blenderbim\libs\site\packages\ifcopenshell\ifcopenshell_wrapper.py", line 4517, in by_id
    return _ifcopenshell_wrapper.file_by_id(self, id)
RuntimeError: Instance #1 077 not found
```
2024-04-15 09:58:25 +02:00
Andrej730 af2e0b07c3 fixed neg values in format_distance & section/plan level #3175 2024-04-15 09:58:25 +02:00
Andrej730 9403b8cbf0 Added default Model/Annotation/PLAN_VIEW to support e68fdb2db 2024-04-15 09:58:25 +02:00
Andrej730 afda99d2f4 Test that drawing styles are loaded 2024-04-15 09:58:25 +02:00
Andrej730 4f8851f007 Fixed error on rebuilding sheet with underlays
Also added description and more clear name for `bim.open_sheet`

Error was:
```
Error: Python: Traceback (most recent call last):
  File "\addons\blenderbim\bim\module\drawing\operator.py", line 82, in execute
    IfcStore.execute_ifc_operator(self, context)
  File "\addons\blenderbim\bim\ifc.py", line 410, in execute_ifc_operator
    result = getattr(operator, "_execute")(context)
  File "\addons\blenderbim\bim\module\drawing\operator.py", line 1177, in _execute
    del raster_references[reference.Location]
TypeError: list indices must be integers or slices, not str
```
2024-04-15 09:58:25 +02:00
Andrej730 c37b71a3d3 Update drawing styles on changing Underlay checkbox #3172 2024-04-15 09:58:25 +02:00
Bruno Postle fabfa6ad7a Git remote fetch and push operations (#3096) 2024-04-15 09:58:24 +02:00
Ryan Schultz bda25b7932 allow elevations to show negative values
removed RL - not standard throughout the world
2024-04-15 09:58:24 +02:00
Andrej730 a07d782683 Added test scenario to reproduce #3169
Can be easily called with `pytest .\test\bim\test_feature.py -k "issue"`

Commented some lines out to make sure it doesn't interrupt someone's test process.

Need to uncomment `When I press "bim.create_drawing"` if you want to see if it freezes for you.

You can also uncomment `And I save sample test files and open in blender` to see the freeze manually in Blender client.
2024-04-15 09:58:24 +02:00
Andrej730 ce9769b1e1 Test to cover drawing maintaining sheet position #3155
Updated to gitignore to include some new folders that are created during tests
2024-04-15 09:58:24 +02:00
Andrej730 2d67950503 3d annotations for FALL, SECTION_LEVEL, PLAN_LEVEL #3145
Before that commit if you created those types of annotations and then reopened .ifc file (without .blend) then you would lose their z coordinate and therefore would lose their value (because they were created previously as 2d annotations).

Now those annotations created as 3d to avoid that problem. I've also added temporary fallback that will turn your existing annotations to 3d next time you edit them.
2024-04-15 09:58:24 +02:00
Andrej730 9c9b8b265c Maintaining drawing's sheet position on raster x/y changes #3155
Example - https://i.imgur.com/uiNWhIq.png
2024-04-15 09:58:24 +02:00
Andrej730 00a1699eab More consistent PlanLevel and SectionLevel in viewport and svg
Now it's using first vert instead of last to calculate height (same way svgwriter does it)
2024-04-15 09:58:24 +02:00
Andrej730 e06fa6267e Showing decorations on activating view #3146 2024-04-15 09:58:24 +02:00
Andrej730 539d218b25 AngleDecorator - changed edges / arc colors
Now angle annotation edges (not the arc itself) are greyed out when you're not editing them - that way they won't draw unnecessary attention. When you're in edit mode they'll appear white and the angle arc will appear blue.

Demo - https://imgur.com/a/lsgp9G4
2024-04-15 09:58:24 +02:00
Andrej730 1ec50fb125 Positioning AngleDecorator text at the center of the arc
Before - https://i.imgur.com/0VxFkg9.png
After - https://i.imgur.com/ibDnlbE.png
2024-04-15 09:58:24 +02:00
Andrej730 5ac6b1cd87 More smoothed lines for annotations with angles and circles 2024-04-15 09:58:24 +02:00
Andrej730 ec39cdfc6d Added some tests for changing ifc text 2024-04-15 09:58:24 +02:00
Andrej730 0c0906d06a Fixed bug with annotations update #3159
toggleDecorations was interrupted because it was trying to update text for non text element
2024-04-15 09:58:24 +02:00
Andrej730 ae0ae76ee6 Fixing bug with changing text size #3159
Bug appeared after 046940f but it was there before - it was just kind of compensated by the other bug.
Because of that bug blender text size value was reupdated before saving it to pset therefore pset never received a new value.

Also added some refactor, planned to write some test to get this error covered.
2024-04-15 09:58:24 +02:00
Andrej730 87dba7c066 Fixed ifc text annotation preview not showing during edit #3159
Error was:

```
Traceback (most recent call last):
  File "\scripts\addons\blenderbim\bim\module\drawing\decoration.py", line 1899, in __call__
    decorator.decorate(context, obj)
  File "\scripts\addons\blenderbim\bim\module\drawing\decoration.py", line 1451, in decorate
    self.draw_text(context, obj)
  File "\scripts\addons\blenderbim\bim\module\drawing\decoration.py", line 540, in draw_text
    symbol = text_data["Symbol"]
KeyError: 'Symbol'
```
2024-04-15 09:58:24 +02:00
Andrej730 6aa372d2b6 Schedule Builder - some naive support for font size in text #3154 2024-04-15 09:58:24 +02:00
Andrej730 e8fc86a041 Schedule Builder - support for bold and italic text in cells #3154 2024-04-15 09:58:24 +02:00
Andrej730 c51c3e5e3c Schedule builder - fixing cell alignment #3154
Noticed that it's actually not merging cell style with col style as I did before but just prioritizing cell style if it's defined
2024-04-15 09:58:24 +02:00
Andrej730 26a3fe8a5d Schedule cells limit without print range to prevent system freeze
What I've found that sometimes you might get into situation (especially if .ods was created / processed in Excel) you might get a lot unnecessary columns and rows (in fact excel always seems to save 1048576x16384 table) and trying to print this kind of table results in investing a lot of RAM into it and possible system freeze.

Now there is a check if table has more than 10000 cells (number is completely made up 😁) then it would require user to define print range in the table to prevent the issue.
2024-04-15 09:58:24 +02:00
Andrej730 e5add946fe Scheduler builder enhancements #3154
Now it supports
1) print ranges - in svg you'll get only the part that's included in print-range.
2) children styles - sometimes cells inherit center alignment from column styles and before that commit text wouldn't be centered in svg in that case
3) repeating rows support
2024-04-15 09:58:24 +02:00
Andrej730 91387b3aa8 Saving drawing shading styles to ifc #2991
Now shading styles are stored in ifc. It's actually stored in json file (by default it's in projects "assets/shading_styles.json") and the path to it saved in `EPset_Drawing.ShadingStyles`.
Current shading styles is stored in `EPset_Drawing.CurrentShadingStyle`.

This change could potentially cause problems but I've added some temporary fallback to make sure `EPset_Drawing.ShadingStyles` will be set to some default path and default shading styles will be copied to the project's folder.
2024-04-15 09:58:24 +02:00
Bruno Postle 046a356915 BlenderBIM Git clone repository operator (#3096) 2024-04-15 09:58:24 +02:00
Gorgious 5e6ffd9ab6 use tool module instead of local function to activate object 2024-04-15 09:58:24 +02:00
Bruno Postle 8b85875b45 BlenderBIM Git tagging documentation 2024-04-15 09:58:24 +02:00
Bruno Postle a4e9f304d9 BlenderBIM list and create git tags #3096 2024-04-15 09:58:24 +02:00
Andrej730 41ef46cb88 Multiline in dimension description / suffix / prefix #3005
Also added some offset for dimension text in viewport to make it more similar to svg
2024-04-15 09:58:24 +02:00
Andrej730 dff88c7560 Option to add prefix and suffix to dimension annotation #3005
Example - https://imgur.com/a/0NkStWm
2024-04-15 09:56:51 +02:00
Andrej730 6e290d585e Ifc CSV Export template now also saves the expression #3034
Previously saved templates wouldn't work now, they need to be either recreated or modified to make them work.

Example of old template format:
`["Name", "class", "type.Name"]`

Example of new template format:
`{"expression": ".IfcDoor", "attributes": ["Name", "class", "type.Name"]}`

Note that this would work too:
`{"attributes": ["Name", "class", "type.Name"]}`
2024-04-15 09:56:51 +02:00
Andrej730 03e373aaff Not all curve annotation types were detected at the import #3090 2024-04-15 09:56:51 +02:00
Gorgious 4f47366976 Fix #3128 : RefLatitude and RefLongitude attributes now show their description on right click + add a snippet to tell the user how to format the values 2024-04-15 09:56:51 +02:00
Bruno Postle 957bcaa21b Report ifcmerge conflicts in pop-up #3096 2024-04-15 09:56:51 +02:00
Kristoffer Andersen 1a86752ed0 Update meta.yaml
pin daily conda builds to occt 7.7.0
2024-04-15 09:56:51 +02:00
Gorgious56 078e50423f Fix typo in get_pset docstring 2024-04-15 09:56:51 +02:00
Andrej730 436f81d137 Migrating shaders to builtins to support M1 #2897
Migrated all shaders from geometry shaders to builtins (all geometry data now calculated in python before passing to shader) to make them more reliable and support Metal backend on Mac M1 (tested that it works - both annotations and gizmo).

The current downside is that there is no more custom frag shaders too - meaning we do not support dashed lines in the annotations (currently Hidden and Grid just use a bit less bright annotation color).
2024-04-15 09:56:51 +02:00
Bruno Perdigão edd5686c13 changed custom scale input 2024-04-15 09:56:51 +02:00
Bruno Postle 838b0b04fb Selecting a git revision updates info box 2024-04-15 09:56:51 +02:00
Sigma Dimensions da5b9e2b22 Fix task json issue due to "Bad control character in string literal in JSON at position XXXX" 2024-04-15 09:56:51 +02:00
Sigma Dimensions f6a6201c30 Convenient Pie Menu shortcut to aggregate selected objects to active object 2024-04-15 09:56:51 +02:00
Sigma Dimensions da13f4cb46 fix toggle_cost_item_parent 2024-04-15 09:56:51 +02:00
Sigma Dimensions 607cb253d2 Fix baseline gantt chart bug when new tasks are added to the planned schedule 2024-04-15 09:56:51 +02:00
Dion Moult dff827db59 Minor improvements to shape utility. 2024-04-15 09:56:51 +02:00
Dion Moult c5154ec594 See #2673. Bundle IfcTester for PyPI. 2024-04-15 09:56:51 +02:00
arun 3ea7e28b12 corrected get_extrusions function 2024-04-15 09:56:51 +02:00
Dion Moult 3b66822fe2 Add shape utility to easily get profiles and extrusions 2024-04-15 09:56:38 +02:00
Bruno Postle d7a74dd6a4 BlenderBIM ifc file association (linux only) #2399 2024-04-15 09:56:38 +02:00
Bruno Postle b987d5ca7c Rename blenderbim.sh, better initialisation #2399 2024-04-15 09:56:38 +02:00
Dion Moult b8431a8c33 Fix failing tests in preparation for release. 2024-04-15 09:56:38 +02:00
Dion Moult 89310d19cb Fix #3084. Issue where drawings with no elements couldn't be generated. 2024-04-15 09:56:38 +02:00
Sigma Dimensions 769dd6c09a fix test-related sequence bug
Fix baseline gantt chart bug
2024-04-15 09:56:38 +02:00
Sigma Dimensions eb29543d24 Fix baseline gantt chart bug when new tasks are added to the planned schedule 2024-04-15 09:56:38 +02:00
Sigma Dimensions 0b9e7af325 BBIM4D: Enable filtering by active work schedule when retrieve tasks related to objects 2024-04-15 09:56:38 +02:00
Sigma Dimensions e25c43879f Auto-refresh task sorting 2024-04-15 09:56:38 +02:00
Bruno Postle 8add979bf3 Basic user documentation for BlenderBIM Git functionality (#3096) 2024-04-15 09:56:38 +02:00
Dion Moult 8b173e5b4d Fix fundamental bug where area and volume units were ignored on new projects. 2024-04-15 09:56:38 +02:00
Andrej730 5bc181a2cf Small addition to 8c302ed85 2024-04-15 09:56:38 +02:00
Andrej730 06a6d7cacd Changed x_angle subtype to degrees
Now BIMModelProperties.x_angle stores data in radians internally but for user it still appears as degrees
2024-04-15 09:56:38 +02:00
Dion Moult 0a637ea4fa See #1676. Fix space boundary generation for IFC4 RV where openings are already subtracted from the body. 2024-04-15 09:56:38 +02:00
Dion Moult b7e61ad10b Accommodate invalid named units when loading IFCs. 2024-04-15 09:56:38 +02:00
Dion Moult 3e9f1f7d5c See #3085. Don't bundle numpy as Blender already has it and it causes conflicts. 2024-04-15 09:56:38 +02:00
Andrej730 059b717bf3 Updating BIM Tools props on active object change #3102
Updating extrusion_depth, length and x_angle on active object change. Shouldn't be too expensive and that way it'll be more consistent with Blender UI.
2024-04-15 09:56:38 +02:00
Andrej730 10e442188b Fallback to abs path adding schedule rel path is not available #3106 2024-04-15 09:56:37 +02:00
Andrej730 6d14fcdac6 Updating drawing's size on sheet to match it's scale #2965 2024-04-15 09:56:37 +02:00
Massimo Fabbro 39d8a9871b Now it's possible to regenerate a space that it was created automatically from walls 2024-04-15 09:56:37 +02:00
Sigma Dimensions 2bd8ac25c1 remove annoying print statement, run black on cost 2024-04-15 09:56:37 +02:00
Sigma Dimensions 4dfaea3675 remove annoying print statement, run black on cost 2024-04-15 09:56:37 +02:00
Sigma Dimensions 09a300b57b fix copying relationships when duplicating tasks 2024-04-15 09:56:37 +02:00
Sigma Dimensions 7188d6ea74 BBIM 4D: implement human readable duration to read/edit durations.
new IOS Fuzzy Duration Parsing utility
2024-04-15 09:56:37 +02:00
Sigma Dimensions 7d61c292fe fix editing null task duration values #3091 2024-04-15 09:56:37 +02:00
Dion Moult 6bad697ec4 Minor documentation update to describe how add-ons with conflicting deps / hotkeys are incompatible. 2024-04-15 09:56:37 +02:00
Dion Moult f6ccfb52b3 See #1676. Space boundary generation now accounts for voids and fills. 2024-04-15 09:56:37 +02:00
Dion Moult 60985752d3 See #1676. Space boundaries default to physical internal boundaries. 2024-04-15 09:56:37 +02:00
Dion Moult 767c435c00 See #1676. You can now set the type of boundary class prior to generating boundaries. 2024-04-15 09:56:37 +02:00
Andrej730 7b5ece2f4a A bit more intuitive adding drawing/schedule to the sheet
Now it will detect currently active sheet even if you have sheet's drawing/titleblock/schedule selected.
2024-04-15 09:56:37 +02:00
Dion Moult c615f7469a See #1676. You can now duplicate space boundaries. 2024-04-15 09:56:37 +02:00
Andrej730 41e88636ff Annotation Tool - always show "Add type" button
It wasn't showing if you had some objects selected which seems a bit counterintuitive - the need to deselect everything to create a new type.
2024-04-15 09:56:37 +02:00
Andrej730 3f3c9e937d Fixed error during building schedule from ods
We were discarding some styles that didn't have any style properties and then we always needed to keep it in mind later on, now we just create empty dict for those.
2024-04-15 09:56:37 +02:00
Andrej730 9cc87e10a1 Apply scale and rotation to ifc text symbols #3094
Before symbols attached to ifc text were not rotated / scaled if they didn't have "text-template" fields in them.
2024-04-15 09:56:37 +02:00
Andrej730 e82fdc8a52 Support multiline text in the schedule #3010
Before - https://i.imgur.com/gff5jo3.png
After - https://i.imgur.com/meyXBYb.png
2024-04-15 09:56:37 +02:00
Andrej730 595e73ca19 Added some (naive) text wrapping in the schedule #3010
Before - https://i.imgur.com/dJPQ788.png
After - https://i.imgur.com/T1FtI8H.png

For it to work make sure you have word wrapping in ods.

It's still very naive since it's taking constant font width which could vary depending on font type, font size, font lettering. The proper way would be is to either find some svg way to do it (couldn't find any stable one) or to render text to identify it's width (could be done with PIL but seems overkill, atleast for now).
2024-04-15 09:56:37 +02:00
Sigma Dimensions 8d2ea88b9b BBIM 4D: Enable displaying task tooltip in the gantt chart & add resource columns 2024-04-15 09:56:37 +02:00
Sigma Dimensions cbb6878f51 BBIM 4D: You can now visualize & print work schedule baselines with Gantt Charts 2024-04-15 09:56:37 +02:00
Sigma Dimensions c761c7d5d9 minor fix 2024-04-15 09:56:37 +02:00
Sigma Dimensions dee0b5cdb9 BBIM 4D Gantt: Support multiple languages, human readable durations, add convenient Print Function with different Sheet Formats,
start improving overall page style; refactor code to split js and css code away from mustache file
2024-04-15 09:56:37 +02:00
Andrej730 47711f723f Small fix for text alignment in scheduler 2024-04-15 09:56:37 +02:00
Dion Moult b7c3bcbe3f Fix #3085. Prioritise shipped BlenderBIM Add-on packages instead of system packages to avoid dependency clashes. 2024-04-15 09:56:37 +02:00
Dion Moult 1e8a137fd7 Minor UI cleanup. Remove align buttons from architectural tool panel. 2024-04-15 09:56:37 +02:00
Dion Moult 28686b2fa8 See #1676. You can now add basic space boundaries with the BIM Tool with Shift-B, either by selecting both a space and an element (e.g. wall) or selecting a space and placing the 3D cursor on a face. 2024-04-15 09:56:37 +02:00
Dion Moult a863c6d68e See #1676. Deleting space boundaries now also removes connection geometry. 2024-04-15 09:56:37 +02:00
Andrej730 9f19b33764 Support cells text alignment building schedule from ods #2885
Before - https://i.imgur.com/9QZ2YW2.png
After - https://i.imgur.com/M7ZHSJq.png
2024-04-15 09:56:37 +02:00
Andrej730 f858dd14d9 Support merged columns building schedule from ods #2885
Before - https://i.imgur.com/p1l6ugn.png
After - https://i.imgur.com/9QZ2YW2.png
2024-04-15 09:56:37 +02:00
Andrej730 dfe143290e Keep rows height building svg schedule from ods #2885
Before - https://i.imgur.com/erMH4Ku.png
After - https://i.imgur.com/p1l6ugn.png
2024-04-15 09:56:37 +02:00
Andrej730 c9d2a9810e More safe adding roof modifier #3080 2024-04-15 09:56:37 +02:00
Dion Moult 628cdf8ca0 Fix #3088. Prioritise body curves to be loaded before trying to load 2D annotations. 2024-04-15 09:56:37 +02:00
Sigma Dimensions 9d6de8c019 BBIM 4D: Auto Update Resource Usage from resource tree 2024-04-15 09:56:37 +02:00
Sigma Dimensions 775f570897 BBIM feature to create & view work schedule baselines 2024-04-15 09:56:37 +02:00
Sigma Dimensions 242745fa25 IOS.API consider removing baseline tasks when deleting tasks 2024-04-15 09:56:37 +02:00
Sigma Dimensions 31131c1106 IOS.API usecase to create a work schedule baseline 2024-04-15 09:56:37 +02:00
Sigma Dimensions 51402cdc59 run black 2024-04-15 09:56:36 +02:00
Dion Moult 9f07605de0 Accommodate space boundaries with no connection geometry, fetch spatial structure for IFC2X3, and fix scale bug when editing boundary profiles. 2024-04-15 09:56:36 +02:00
dependabot[bot] 568f1657ad Bump flask from 2.0.1 to 2.3.2 in /src/opencdeserver
Bumps [flask](https://github.com/pallets/flask) from 2.0.1 to 2.3.2.
- [Release notes](https://github.com/pallets/flask/releases)
- [Changelog](https://github.com/pallets/flask/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/flask/compare/2.0.1...2.3.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-15 09:56:36 +02:00
Thomas Krijnen da348e36be #2676 2024-04-15 09:56:36 +02:00
Andrej730 40e67dc54f Option to scale symbol from ifc tag by scaling ifc text object #2946
Also added some text scaling in viewport if there is some symbol associated with text annotation to roughly visually indicate how big this thing is going to be in the svg.

Example - https://user-images.githubusercontent.com/9417531/235445393-447f3aba-8425-4da6-81d0-6bf9004fcf2b.mp4
2024-04-15 09:56:36 +02:00
Andrej730 23ef51495b Keep text rotation for text annotation with symbols #2946 2024-04-15 09:56:36 +02:00
Dion Moult 29243b787a See #1676. You can now toggle boundaries on or off in the BIM tool via Alt-B, with a special boundary decorator. 2024-04-15 09:56:36 +02:00
Andrej730 499edf960d Test command to load blend file during test scenario for debugging 2024-04-15 09:56:36 +02:00
Andrej730 98fdebb81e Moving decorators colors from scene to addon props #3033 2024-04-15 09:56:36 +02:00
Dion Moult 8cc42ab84b See #1676. Tab now toggles space boundary surface profile editing. 2024-04-15 09:56:36 +02:00
Andrej730 aaa24ee521 Fixed error on adding Roof modifier to non-footprint objects #3080 2024-04-15 09:56:36 +02:00
Andrej730 17cb72896f Fixed bug with double conversion of height/extrusion length #3073
Also fixed some tests
2024-04-15 09:56:36 +02:00
Sigma Dimensions 55250aba6d BBIM 4D features & fixes:
- feature to re-order tasks
- fixes for task sorting
- further workSchedule UI/UX improvements
- forgotten bits and bobs
2024-04-15 09:52:38 +02:00
Sigma Dimensions 2aa5e9d808 - refactor IOS.API resource calculation to re-use shared utilities
- run black
2024-04-15 09:52:38 +02:00
Sigma Dimensions 83344e4f43 - BBIM 4D: features to review and edit Resource productivity data on the fly
- IOS: new resource utilitiy functions
2024-04-15 09:52:38 +02:00
Dion Moult 380eca4382 Add profile-style (like slab editing) enable editing, edit, and disable editing operators for energy boundary surface geometry. 2024-04-15 09:52:38 +02:00
Dion Moult aa6c4cea24 Fix #3030. Don't bother layerset slicing walls with a single layer. 2024-04-15 09:52:38 +02:00
Dion Moult f4c4b60842 Cut merging now only applies to particular elements for the majority of cases. Drawing generation can be twice as fast due to this. 2024-04-15 09:52:38 +02:00
Massimo Fabbro 98d96fdd7c Generate space from walls refactor and cleaning around 2024-04-15 09:52:38 +02:00
Massimo Fabbro 08a6fe5748 Add generate space button in UI in N-Panel -> BlenderBim -> Architectural 2024-04-15 09:52:38 +02:00
Massimo Fabbro 2ff5ffcb24 Now it's possible to create spaces automatically from selected walls 2024-04-15 09:52:38 +02:00
Sigma Dimensions 0d2ab2317a Fix duplicate task logic in IOS.API 2024-04-15 09:52:38 +02:00
Dion Moult 62657e7b9b Filter elements visible in the camera view. Drawing generation is now significantly faster on larger projects (e.g. 24s down to 10s for a portion of the Revit sample project) 2024-04-15 09:52:38 +02:00
Dion Moult 83f8260029 Fallback to unmerged polygons if merging fails. More investigation needed. 2024-04-15 09:52:38 +02:00
Dion Moult afb3759fc2 Viewport layerset slicing now uses a cache for speed. 2024-04-15 09:52:38 +02:00
Andrej730 14abf0fd23 Fixed double conversion in bim tool props after b4b6404
No more 1000000 and 3000000 mm values
2024-04-15 09:52:38 +02:00
Andrej730 3d9994726b Added support for different railing cap types
Very similar to this - https://i.imgur.com/SNyvfgh.png
2024-04-15 09:52:38 +02:00
Dion Moult 54c6fa2067 Fix bug where numerical tolerance caused certain objects to be unnecessarily updated. 2024-04-15 09:52:38 +02:00
Dion Moult 2b3b53b147 Fix bug in cut decorator layersets where walls could be joined to odd non-layered things. 2024-04-15 09:52:38 +02:00
Dion Moult 35d224be31 Fix #3053. Bug where very thin meshes (<1mm) couldn't be reverse engineered into extrusions. 2024-04-15 09:52:38 +02:00
Andrej730 b5d24334fd Fixed bug with wrong position of support in wall mounted railing
The problem was that that support's disk was not rotated according to the railing path.
2024-04-15 09:52:38 +02:00
Sigma Dimensions 1ef3a54fe1 BBIM 4D: Auto-refresh task re-ordering 2024-04-15 09:52:38 +02:00
Dion Moult df9a33a2c8 Fix #3066. Regression crash when deleting openings. 2024-04-15 09:52:38 +02:00
Sigma Dimensions d5c837b517 forgotten core functions & run black 2024-04-15 09:52:38 +02:00
Sigma Dimensions e4d3e32519 Sequence Tools clean-up 2024-04-15 09:52:38 +02:00
Sigma Dimensions 720600e0fb BBIM 4D: Features to select a Work Schedule's assigned / unassigned products 2024-04-15 09:52:38 +02:00
Sigma Dimensions 7c7058be5d Work Schedule Panel UX improvement 2024-04-15 09:52:38 +02:00
Sigma Dimensions 0b981ac9ce Fix schedule task sorting 2024-04-15 09:52:38 +02:00
Dion Moult 0400b72f3e Fix #3052. Deep deletion of large geometries is now thousands of times faster. 2024-04-15 09:52:37 +02:00
Bruno Postle c806f924ec Fix crash when switching between git revisions 2024-04-15 09:52:37 +02:00
Bruno Postle 9131578807 Fix check for invalid Git branch name 2024-04-15 09:52:37 +02:00
Andrej730 1dcf74eb60 WALL_MOUNTED_HANDRAIL type for Railing modifier
Added WALL_MOUNTED_HANDRAIL type for railing modifier. It's still a bit work in progress - still need to add support for different railing termination types.

Here's the short demonstration - https://user-images.githubusercontent.com/9417531/234582621-6c6f948b-9cdc-4be6-b380-17ddbf5803bf.mp4
2024-04-15 09:52:37 +02:00
Dion Moult af1d14a0c1 See #1227. Minor fix. 2024-04-15 09:52:37 +02:00
Dion Moult 273c970c11 See #1227. Experimental viewport layerset visualisation. 2024-04-15 09:52:37 +02:00
Bruno Postle 1e6bc5a14e Fix some refresh glitches in IFC Git panel 2024-04-15 09:52:37 +02:00
Bruno Postle f86713584c Format ifcgit code with black 2024-04-15 09:49:53 +02:00
Dion Moult 4f8510ad60 Fix #3046. Renaming drawings now updates all drawing references on sheets. 2024-04-15 09:49:53 +02:00
Andrej730 74afcb1b3e Fixing error on using bim.override_mode_set_edit with no active object
Error was:
  File "\addons\blenderbim\bim\module\geometry\operator.py", line 775, in _execute
    obj.select_set(True)
AttributeError: 'NoneType' object has no attribute 'select_set'
2024-04-15 09:49:53 +02:00
Andrej730 7f4f9393b3 Fixed blurred text with background after bfbced3
before commit - https://user-images.githubusercontent.com/9417531/233907917-f86ad10b-0227-4180-9488-a8b71a00f099.png
after commit https://user-images.githubusercontent.com/9417531/233907920-d100c73a-e206-42fd-bb41-f7257ea6f98c.png

Tested it on firefox too
2024-04-15 09:49:53 +02:00
Dion Moult b1b57a9ec9 Fix #3055. Get paths using forward slashes for platform compatibility. 2024-04-15 09:49:53 +02:00
Dion Moult f89e8697d8 Fix #3051. Text background filter now applied on <text> element to make it work on Firefox. 2024-04-15 09:49:53 +02:00
Dion Moult 6a39d0fed6 Fix #3040. View title template variables now have access to sheet attributes prefixed with "Sheet". 2024-04-15 09:49:53 +02:00
Dion Moult 86d60f4cd9 Fix #3001. User can now specify join criteria in drawings. Only elements where all the criteria have the same values are merged. 2024-04-15 09:49:53 +02:00
Dion Moult a19b5c0473 Fix #3054. Edit sheet is now implemented for drawings, schedules, and titleblocks. 2024-04-15 09:49:53 +02:00
Bruno Postle 5a46d79387 Include git, gitdb and smmp libs in blenderbim zip 2024-04-15 09:49:53 +02:00
Bruno Postle 102a4f181d Install GitPython *before* removing the working folder 2024-04-15 09:49:53 +02:00
Bruno Postle e956e36957 Add GitPython dependency 2024-04-15 09:49:53 +02:00
Dion Moult 5a95dfa31a New default patterns for stack and stretcher bond tiles and floorboards. 2024-04-15 09:49:53 +02:00
Bruno Perdigão b3404a68d7 applyed the patch by Bruno Postle 2024-04-15 09:49:53 +02:00
Bruno Perdigão a39f268a53 changed imports to integrate with blenderbim 2024-04-15 09:49:53 +02:00
Bruno Perdigão dff4c178e7 initial commit 2024-04-15 09:49:53 +02:00
Dion Moult af140c1861 See #3002. Spaces are now managed separately so that they don't conflict with projection polygon merging and raycasting. 2024-04-15 09:49:53 +02:00
Dion Moult f9526b038c See #3002. Experimental SVGFill approach to polygon merging. 2024-04-15 09:49:53 +02:00
Thomas Krijnen 84287bf3ae Update draw.py 2024-04-15 09:49:53 +02:00
Andrej730 83f5241694 Fixed couple bugs in furniture library
1) last polyline point was failing on Consecutive rule causing validation errors
2) Fixed wrong ifc class for dishwasher (was used occurence class instead of type)
2024-04-15 09:49:53 +02:00
Dion Moult 5bd16d8600 See #3002. Experimental shapely approach to polygon merging for semantic projection elements. 2024-04-15 09:49:52 +02:00
Andrej730 61dda1d09d Roof modifier - remove redundant context fill causing visual artifacts 2024-04-15 09:49:52 +02:00
Andrej730 d3d076adbe Roof modifier - removing bottom chord if angle = 90 degrees
This - https://i.imgur.com/75AmYGI.png
instead of https://community.osarch.org/uploads/editor/yp/zcaqxx9b33wu.png
2024-04-15 09:49:52 +02:00
Andrej730 26ab901a9e Roof Modifier - separating vertices on defining gable roof angle
Added option (which is activated by default) - when you set gable roof angle for some edge it will duplicate the top vertex instead of just moving which allows you to do shape like this - https://imgur.com/a/OEFZ4pw

Previously you would get something like this in that case - https://community.osarch.org/uploads/editor/ap/hlt70rbw5r1l.png
2024-04-15 09:49:52 +02:00
Andrej730 16b6861765 OverrideDelete - remove objects with X if they are not related to ifc
It was a bit frustraiting when you added a cube and can't just get rid of it with X hotkey 😅
2024-04-15 09:49:52 +02:00
Andrej730 c03666c395 Fixed error in disabling text exiting after deleting text literal 2024-04-15 09:49:52 +02:00
Dion Moult 2bc6d3b43b Fix validation error where IfcURIReference cannot be used as a property data type :( 2024-04-15 09:49:52 +02:00
Dion Moult 4722208fa4 Fix #3038. Fix #3039. Selector should default to none instead for throwing errors if the query doesn't have a result. 2024-04-15 09:49:52 +02:00
Dion Moult 6a25d05e5d Fix #3021. IfcSpatialElements are included in drawings by default. 2024-04-15 09:49:52 +02:00
Andrej730 999186f684 Converting to project units inside QtoCalculator.guess_quantity
Also added some error message if `calculate_quantity` failed to calculate a quantity
2024-04-15 09:49:52 +02:00
Andrej730 c73e34eb8c tool.Qto.convert_to_project_units 2024-04-15 09:49:52 +02:00
Andrej730 c4c848867c bim.calculate_quantity - remove convertion part
now the convertion already happens in QtoCalculator.calculate_quantity
2024-04-15 09:49:52 +02:00
Andrej730 6ee8369114 test_qto.py black format 2024-04-15 09:49:52 +02:00
Andrej730 ccba3a3b8b Tests for calculating quantities for prefix and imperial project units 2024-04-15 09:49:52 +02:00
Andrej730 e44f0e2050 qto_calculator.py black format 2024-04-15 09:49:52 +02:00
Andrej730 ac46276748 Update QtoCalculator to convert to project units at the end
Before this commit it was calculating all values in meters not taking into account actual project units.
2024-04-15 09:49:52 +02:00
Kristoffer Andersen bb73390afe Fix conda env 2024-04-15 09:47:27 +02:00
Andrej730 b00cd887cd Added DISTANCE subtype to BIM Tool Extrusion Depth and Length
In BIM Tool it looks like this right now - https://i.imgur.com/JWVPssg.png (note the units)
Previously it was displaying value like this - https://i.imgur.com/244aYTN.png

The benefit is that you can specify other units in that kind of property and it will automatically convert to current project's unit. 

For example if you have millimeters as project's unit you can still type "10m" instead of "5000" and it will automatically convert it to 5000mm. 
Or type in inches like 5" 11'.
2024-04-15 09:37:50 +02:00
Andrej730 2dd7057fec Update viewport on bim.activate_model
To see the changed context right away in the viewport
2024-04-15 09:37:50 +02:00
Andrej730 56c587da10 Fixed bug with wrong text value in viewport on canceling text editing
Actual text was replacing with "TEXT" default value if you cancel text editing instead of applying changes
2024-04-15 09:37:50 +02:00
Andrej730 9722063c93 Fixed bug in get_object_bounding_box #3023 2024-04-15 09:37:50 +02:00
arun 8517f808a8 Nesting added to util.get_decomposition function 2024-04-15 09:37:50 +02:00
Sigma Dimensions dae8d6bdc1 fix "cost_item quantity updates" bug when editing a QTO 2024-04-15 09:37:50 +02:00
htlcnn 181966b08e fix EditBcfTopic and EditBcfTopicName 2024-04-15 09:37:50 +02:00
Andrej730 b40c77a3e0 CutDecorator color connected to preferences too #2987 2024-04-15 09:37:50 +02:00
Dion Moult bfe76b83dc New default triangle, hexagon, capsule, circle, and space tag symbols 2024-04-15 09:37:50 +02:00
Andrej730 15c5c9da20 Added some decorator colors to addon preferences #2987
For ProfileDecorator (editing profiles, roof preview) and DecorationsHandler (openings).
Still need to add CutDecorator colors to preferences
2024-04-15 09:37:50 +02:00
Andrej730 3c4e25edc7 Some descriptions for EPset_Drawing 2024-04-15 09:37:50 +02:00
Andrej730 5d650d29e0 Fixed text annotation rotation in viewport #3017
Fixed text annotation rotation in viewport for the views rotated by multipel axis.
Changed text direction calculation to be the same in both viewport and svg.
2024-04-15 09:37:50 +02:00
Thomas Krijnen 77445f9b22 get_mappeditem_transformation() 2024-04-15 09:37:50 +02:00
Thomas Krijnen 0325c49c3d Add util.placement.get_cartesiantransformationoperator3d() 2024-04-15 09:37:50 +02:00
Thomas Krijnen 5f334192db Normalize vectors in a2p() 2024-04-15 09:37:50 +02:00
Vukas Pajic 63bfa290db Update failure reason #3018 2024-04-15 09:37:50 +02:00
Andrej730 94f4f499ef unsuppress zero inches in formatting distance #3011
Added option to suppress zero inches in the dimension annotation text through SuppressZeroInches property of BBIM_Dimension property set.
Previously by default suppressing zero inches was enabled. Now by default it is disabled.

SupressZeroInches On  - https://i.imgur.com/nrhELnA.png
SupprezZeroInches Off - https://i.imgur.com/gIuO2GW.png
2024-04-15 09:37:50 +02:00
Dion Moult 2fc74fd440 Fix bug where you could save geometry with no data (no vertices / splines) which is invalid. 2024-04-15 09:37:50 +02:00
Dion Moult eea93265f7 Fix #2913. Bug where properties with multiple inverses were not correctly purged. 2024-04-15 09:37:49 +02:00
Dion Moult e6f13a4ef9 Fix #2916. Bug where joining swept solids didn't merge styles correctly. 2024-04-15 09:37:49 +02:00
Vukas Pajic 7ca6fec75f cleanup 2024-04-15 09:37:49 +02:00
Vukas Pajic bc2a12a498 added new tests for case where spec has no requirements 2024-04-15 09:37:49 +02:00
Andrej730 1cf524b95d Fixed bug in bim.select_assigned_product
It was trying to call method `Drawingcls.get_active_object()` that didn't exist
2024-04-15 09:37:49 +02:00
Andrej730 00370e94d0 TEXT_LEADERS BoxAlignment, FontSize, multiline in viewport preview #3008
Moved code for drawing text in viewport to a separate reusable method `draw_text` in BaseDecorator.
2024-04-15 09:37:49 +02:00
Dion Moult 98309da543 Add support for loading IfcProxy 2024-04-15 09:37:49 +02:00
Dion Moult fe8220f9a7 Add support for editing ref latitude/longitude 2024-04-15 09:37:49 +02:00
Massimo Fabbro cc9b178535 Small fix 2024-04-15 09:37:49 +02:00
Massimo Fabbro 8daa5bf5f7 Now it's possible to specify the digits number in a drawing. Fix #2993 2024-04-15 09:37:49 +02:00
Ryan Schultz 5c301da21e Library - changed to correct class 2024-04-15 09:37:49 +02:00
Dion Moult 507f03640a Fix #3003. 2024-04-15 09:37:49 +02:00
Dion Moult d2fbdfeada Fix #2975. Fix bug where imperial projects still created drawings with metric scales by default. 2024-04-15 09:37:49 +02:00
Dion Moult 2b81da2c50 See #2975. Fix bug where custom scales were not loaded correctly. 2024-04-15 09:37:49 +02:00
Dion Moult 00a40024a9 Fix bug where changing object visibility didn't first check for view layer existence. 2024-04-15 09:37:49 +02:00
Ryan Schultz 187b4d9dc0 Fix #2989 2024-04-15 09:37:49 +02:00
Dion Moult 66c9fa6934 Fix #2980. Minor cleanup to polish array panel UI. 2024-04-15 09:37:49 +02:00
Dion Moult 6dfe7dc31b Fix #2988. Imperial dimensions in viewport are now split between feet and inches. 2024-04-15 09:37:49 +02:00
Ryan Schultz 61b255b08f Fix #2990 2024-04-15 09:37:49 +02:00
Andrej730 d2124e1c8b Fixed bugs with furniture library toilets and basins #2976
Bug was introduced in cf6acd5 when `shape_builder.get_rectangle_coords` started returning coords in counter-clockwise order instead of clockwise.
2024-04-15 09:37:49 +02:00
Andrej730 f6a95e8c17 Dimension description in viewport/option to hide the measurements #2918
same thing for diameter annotations since they are just reusing dimension annotations

+ some refactor along the way
2024-04-15 09:37:49 +02:00
Dion Moult d9726efee0 Fix #2986. Reimplement Metadata property of EPset_Drawing to include arbitrary metadata as CSS classes. 2024-04-15 09:37:49 +02:00
Dion Moult 4f7454070c Fix #2985. Purge obsolete vector style feature. 2024-04-15 09:37:49 +02:00
Dion Moult d753852042 Fix #2979. Batch drawling unselected and selected cut lines. 2024-04-15 09:37:49 +02:00
Andrej730 fcdfa5dd23 Annotation Tool
Added Annotation Tool that allows you create annotation types and their occurences. It will also allow us to get rid of "Annotation" panel in N-panel.

I've recorded bunch of short videos to demonstrate the features:

- bulk tagging - currently works only for "Text" and "Stair arrow" type of annotations, adds annotations to all selected objects, automatically assigns products to the annotations
https://user-images.githubusercontent.com/9417531/231968358-28cbb762-3349-470a-beef-d1ab21882769.mp4

- creating annotation type with representation - all occurences will share the same representation which makes bulk tagging really powerful if you use variables like {{PredefinedType}}, {{GlobalId}}, {{Name}}, {{Description}}, {{ObjectType}}, {{Tag}}

https://user-images.githubusercontent.com/9417531/231970500-333514c6-6406-4ef5-a9e7-fddfcc9a2436.mp4

- creating annotation type without representation - it allows occurences to have unique text or line geometry but still share the same classes from inherited property set

Examples:
  creating text type without representation to create title case annotations
  https://user-images.githubusercontent.com/9417531/231969361-bda5f924-a8c8-4f5a-ba61-461aa7101f73.mp4

  creating type for oblique dimension annotations
  https://user-images.githubusercontent.com/9417531/231969902-38e8c3f4-45a6-4c98-bba4-2956288ce10a.mp4

- readjusting - if you created some annotations using bulk tagging but the products were changed / moved afterwards now you can select those annotations and "readjust" them according to new product's position / measurements
https://user-images.githubusercontent.com/9417531/231968975-ee8d6589-60ee-4575-9be2-b0ce68d43ffa.mp4

PS In this commit I've also moved all icons to 1 .blend file and added instructions how to regenerate them.
2024-04-15 09:37:49 +02:00
Dion Moult 01a4d64419 Fix #2980. Array deletion now uses delete tool. Delete moved into tool so it can be used by other functions. 2024-04-15 09:37:49 +02:00
Dion Moult c852678437 See #2978. Fix crash upon drawing deletion. 2024-04-15 09:37:49 +02:00
Dion Moult 019c9d89e4 Fix #2955. Drawings can now set a precision. 2024-04-15 09:37:49 +02:00
Dion Moult 718082e4df Fix #2971. Only update placement if object actually moved. 2024-04-15 09:37:49 +02:00
Dion Moult e5c9f0e38f Purge old code from timer-based type browser system 2024-04-15 09:37:49 +02:00
Thomas Krijnen f2c25f430a Fixes to validation of selected simple type / enum 2024-04-15 09:37:49 +02:00
Dion Moult 09a72b32e9 Minor fix 2024-04-15 09:37:49 +02:00
Dion Moult cf640a971d Fix #2968. Deletions are no longer postponed. Should fix or reveal a lot of sync errors. 2024-04-15 09:37:48 +02:00
Dion Moult c4c3fc1bfa Fix bug where switching representations didn't update the material checksum, leading to unnecessary material syncs at export time. 2024-04-15 09:37:48 +02:00
Dion Moult 4c6565d4a4 Styles are applied per mesh data now (potentially dangerous). Fix crash when switching to representation which has styles from an unstyled mesh. 2024-04-15 09:37:48 +02:00
Dion Moult e3979cadc7 Fix #2974. Type property sets are now properly copied. 2024-04-15 09:37:48 +02:00
Dion Moult 7ba65857bd New activate model operator to switch back to a MODEL_VIEW target view subcontext 2024-04-15 09:37:48 +02:00
Dion Moult 92a8bf27c8 Activating a drawing now automatically switches to the preferred target view representation of all elements 2024-04-15 09:37:48 +02:00
Dion Moult 9d006f4eb3 New "cut decorator" that draws cut lines in drawings. 2024-04-15 09:37:48 +02:00
Dion Moult 5f44435acb Only activate drawing styles if underlay enabled, and default to default Blender styles to prevent confusion 2024-04-15 09:37:48 +02:00
Dion Moult 697d10620a Regenerating fills now maintains the active representation 2024-04-15 09:37:48 +02:00
Dion Moult 5e91b77df0 Only allow drawing / sheet / schedule creation once the IFC is saved to enforce correct relative paths. 2024-04-15 09:37:48 +02:00
Andrej730 e78ab0db93 Focus on text field on edit Ifc Text with BIM Tool hotkey (once again)
This option was here before but it was accidentally discarded after f7181aa
2024-04-15 09:37:48 +02:00
CyrilWaechter 8aa5830741 Fix #2964 2024-04-15 09:37:48 +02:00
Andrej730 ed1f35c09c restoring selection on bim.override_mode_set_edit if nothing worked
it was a bit confusing when you're trying to edit some object, you get error message but you also lose object selection
2024-04-15 09:37:48 +02:00
Andrej730 1ebb018187 Fixed bug with roof created in projects with milimeters units
the problem was that operators were converting angle using SI and angle was set to 10000
2024-04-15 09:37:48 +02:00
Andrej730 e3a64788ef Fixed error in PLAN_LEVEL elevation value in printed svgs #2961
Also added more precision to inPerFoot in helper.format_distance to avoid this a bit annoying precision problem where format function keeps adding 1/256"

Without precision - https://i.imgur.com/D9WYjvJ.png
With precision - https://i.imgur.com/3XgOFSH.png
2024-04-15 09:37:48 +02:00
Andrej730 c20f9eaffd Changed roof preview colors and it's now transparent
Changed roof preview colors to the same as openings
2024-04-15 09:37:48 +02:00
Andrej730 5707d8245f fixed mistake in tool.Blender.apply_bmesh
was resulting in error when you apply roof path
2024-04-15 09:37:48 +02:00
Andrej730 37949a0d80 Added checkboxes to drawing list to mark multiple selected drawings
Checkboxes affect the drawings that will be used when you shift click "Create drawing", "Open Drawing", "Remove Drawing". Previously those opeartors were always applying the action to all drawings.

Also added option to remove selected drawings with shift+click to "Remove Drawing" and added new operator "Select all drawings" to select drawings in one click (you can shift click it to delsect all drawings).

Example - https://i.imgur.com/GAGghu5.png
2024-04-15 09:37:48 +02:00
Dion Moult 759a5a6b86 Fix bug where invalidly mapped representations shouldn't be edited. 2024-04-15 09:37:48 +02:00
Thomas Krijnen 7a82dbeaf4 Some small fixes for rule compliance in template.py 2024-04-15 09:34:22 +02:00
Dion Moult a9817d83c3 Fix #2947. Embarrassing bug where slabs didn't consider the total thickness. 2024-04-15 09:25:51 +02:00
Dion Moult d021871904 Fix #2948. Bug where IFC array tool didn't track undo properly causing crashes. 2024-04-15 09:25:51 +02:00
Dion Moult e898e91ad6 See #2516. Titleblocks dropdown now also shows project titleblocks. 2024-04-15 09:25:51 +02:00
Dion Moult ba8e6288bc Fix #2955. You can now store default paths in a project pset. 2024-04-15 09:25:51 +02:00
Dion Moult 401021ac23 See #2516. Fix issue where getting sheet layout URIs were not explicit. 2024-04-15 09:25:51 +02:00
Trashman247 d3b6802589 Reformat parametrized "Save" in IFC project (again) 2024-04-15 09:25:51 +02:00
Trashman247 ab02ac3dda Reformat parametrized "Save" in IFC project 2024-04-15 09:25:51 +02:00
Trashman247 69b74cb4c5 Add dynamic tool tip for parametrized "Save" in IFC project 2024-04-15 09:25:51 +02:00
Thomas Krijnen fdf0596e42 Property transfer ownership of schema from py to c++ upon register_schema() 2024-04-15 09:25:51 +02:00
Thomas Krijnen b7ded0eb79 Attempt load schema from cwd (IS THIS DANGEROUS?) 2024-04-15 09:25:50 +02:00
Thomas Krijnen 7981eb473b Don't fail on unmapped attribute types (IFC4.4) 2024-04-15 09:25:50 +02:00
Andrej730 ffdaa8c417 Fixed error on disabling BlenderBIM addon
Error was occuring because macros doesn't have `is_registered` attribute.

Error: Traceback (most recent call last):
  File "C:\Software\Steam\steamapps\common\Blender\3.5\scripts\modules\addon_utils.py", line 421, in disable
    mod.unregister()
  File "\scripts\addons\blenderbim\__init__.py", line 45, in unregister
    blenderbim.bim.unregister()
  File "\scripts\addons\blenderbim\bim\__init__.py", line 192, in unregister
    if cls.is_registered is not False:
AttributeError: type object 'OverrideDuplicateMoveMacro' has no attribute 'is_registered'

Still getting some other error on disabling the addon, seems to happen due ongoing drawing system restructure.
Error: Traceback (most recent call last):
  File "C:\Software\Steam\steamapps\common\Blender\3.5\scripts\modules\addon_utils.py", line 421, in disable
    mod.unregister()
  File "\addons\blenderbim\__init__.py", line 45, in unregister
    blenderbim.bim.unregister()
  File "\addons\blenderbim\bim\__init__.py", line 177, in unregister
    if bpy.data.scenes['Scene'].BIMProperties.module_visibility['drawing'].is_visible:
KeyError: 'bpy_prop_collection[key]: key "drawing" not found'
2024-04-15 09:25:50 +02:00
Dion Moult 4e94d0dc10 Fix #2516. Add/build/remove/view/rename/copy sheet/drawing/schedule now all references and updates user configurable relative paths. 2024-04-15 09:25:50 +02:00
Dion Moult fd989733c7 Fix bug where unassigning a document was too aggressive and deleted relationships where it shouldn't. 2024-04-15 09:25:50 +02:00
CyrilWaechter f8923709f6 Add ifczip and ifcxml to x-ifc mime-type 2024-04-15 09:25:50 +02:00
Nathan Hild ec1af01545 Correct tooltip messages for enabling and disabling edit buttons 2024-04-15 09:25:50 +02:00
Andrej730 6f5e39849a Including/Excluding IfcAnnotations from drawing #2903
Including or excluding elements from the drawing using EPset_Drawing.Include/Exclude now also works for IfcAnnotation elements. Both in viewport (on "activate view") and on svg print.

Related change - annotation decorations are now hidden in viewport if their object is hidden.
2024-04-15 09:25:50 +02:00
Andrej730 deacc91470 Fixed errors from 9bca705 2024-04-15 09:25:50 +02:00
Andrej730 113a7ab7dd Make BIM Tool alignment buttons clickable and some hotkeys code cleanup 2024-04-15 09:25:50 +02:00
Dion Moult c881ed655c Fix #2960. 2024-04-15 09:25:50 +02:00
Massimo Fabbro ff97aa00ed Better fix about cls without is_registered method 2024-04-15 09:25:50 +02:00
Massimo Fabbro 17fc46a732 Fix bug related to operators without is_registered method 2024-04-15 09:25:50 +02:00
Dion Moult d1e8b4a4a0 Document list now shows description and locations instead of names as names are inherited. 2024-04-15 09:25:50 +02:00
Dion Moult 47709662b9 See #2516. References to titleblocks, layouts, and published sheets are now explicitly stored. Titleblock paths are now configurable. Generated filenames are sanitised. 2024-04-15 09:25:50 +02:00
Andrej730 1bcda4c05a Prevent flickering for SectionLevel and Grid decorators 2024-04-15 09:25:50 +02:00
Dion Moult f1c8e7d984 Fix #2959. Oversight when disabling mesh edit mode. Edit grid axes should be allowed. 2024-04-15 09:25:50 +02:00
Dion Moult 2e466ead37 See #2516. WARNING: breaking changes! Restructure drawing system to use relative paths based on IfcDocumentReference Locations. 2024-04-15 09:25:50 +02:00
Andrej730 5864873945 Solved producing orphan objects data on drawing deletion 2024-04-15 09:25:50 +02:00
Andrej730 cc34e16c6b Updating sheet name from UI #2950 2024-04-15 09:25:50 +02:00
Thomas Krijnen 788f1154da #2685 Fix AttributeError 2024-04-15 09:25:50 +02:00
Andrej730 638eb34680 annotation and gizmo shaders rework for smoothed lines without bgl #2897
Reworked annotation and gizmo shaders to work without `bgl` and support smooth lines.

Moved LIB_GLSL and DEF_GLSL to shaders module since it's basically the same code and this way it'll be easier to keep track of it.
2024-04-15 09:25:50 +02:00
Dion Moult 5e9e666484 Minor improvement to add error message when mirror elements called without a mirror axis. 2024-04-15 09:25:50 +02:00
Bruno Perdigão 7b1c2ef3d4 minor fix, sets a minimum to 'count' 2024-04-15 09:25:50 +02:00
Bruno Perdigão b1538cbb25 Fix #2937. IFC Array now have the option to sync children 2024-04-15 09:25:50 +02:00
Sigma Dimensions 827b0fe6ac BBIM 4D Features to:
- Display nested task resources/task inputs of the active task
- Show list of tasks related to the current object selection
- Highlight, in the WorkSchedule panel, tasks  related to the current object selection
2024-04-15 09:25:50 +02:00
Kristoffer Andersen 365de4054f conda daily pin occt version 2024-04-15 09:25:50 +02:00
Dion Moult a1eff64aec Fix #2935. Duplicating objects clear any parametric array relationships. 2024-04-15 09:25:50 +02:00
Massimo Fabbro 6873de45a8 Fix bug #2825 2024-04-15 09:25:50 +02:00
Dion Moult 9707a2b2f6 Fix #2945. Selector should expand enumerated list properties so that you can match any of them. 2024-04-15 09:25:50 +02:00
Andrej730 6e8a9c8f13 Warning when user loading sheets and some svgs are missing
Added this warning because missing svgs can lead to errors later on.
2024-04-15 09:25:50 +02:00
Andrej730 963d464e73 ChangeSheetTitleBlock operator
Added operator to change title block of currently selected sheet, it's located right after "Add sheet" button.
The way it works - you select the sheet, select the desired titleblock from dropdown menu and it overrides current titleblock from the sheet with the new one.
2024-04-15 09:25:50 +02:00
Bruno Perdigão b201bb5c3b ifc array modifier: get cursor position in relation to the object local axes 2024-04-15 09:25:50 +02:00
Bruno Perdigão 5074a0bf8d ifc array modifier: adds the option to get the dimensions from the 3d cursor 2024-04-15 09:25:50 +02:00
Bruno Perdigão 792f1fcefd ifc array modifier: bugfix, prevent divider from being zero. 2024-04-15 09:25:50 +02:00
Bruno Perdigão 0627d90486 ifc array modifier: adds the option to choose between "total" and "increment" as dimension input 2024-04-15 09:25:49 +02:00
Gorgious56 91d7229353 You can now change the section line decorator width in the UI 2024-04-15 09:25:49 +02:00
Gorgious56 d717fe040d Add new shader to display the section as a thick line on the mesh 2024-04-15 09:25:49 +02:00
Gorgious56 6b67532228 Add new decorator utility to the Compare node group 2024-04-15 09:25:49 +02:00
Andrej730 87f5e7f852 Title case naming for operators 2024-04-15 09:25:49 +02:00
Andrej730 8731cf7fcf Open all drawings at once with shift+click (similar to print all)
Also added filepath check to make sure all drawings were printed first.
2024-04-15 09:25:49 +02:00
Andrej730 397617550e Title case naming for operators 2024-04-15 09:25:49 +02:00
Dion Moult 32f21c8ea0 Fix #2936. Unassigning a type now also unmaps representations. 2024-04-15 09:25:49 +02:00
Andrej730 d86a1cedc1 Sync viewport visibility based on EPset_Drawing/Include Exclude #2613
It's not real time, it's triggered on using "Activate view" button in "Drawings" section.
2024-04-15 09:25:49 +02:00
Gorgious56 d76775c616 Fix temporary section cutaway socket inputs/outputs not initializing properly
Related to #2547
2024-04-15 09:25:49 +02:00
Dion Moult 9e33d9bfad Fix #2938. Unlinked objects should no longer synchronise edits after they've changed. 2024-04-15 09:25:49 +02:00
Dion Moult 9b3625717f See #2938. Fix issue where unlinking didn't consider other users of the object's data or material. 2024-04-15 09:25:49 +02:00
Andrej730 57c9efba97 Support for SECTION_LEVEL annotations description in viewport
Example - https://i.imgur.com/ATF9Fp6.png
(similar to svg)
2024-04-15 09:25:49 +02:00
Andrej730 4540dcc006 Small fix 2024-04-15 09:25:49 +02:00
Andrej730 232e415c87 Background for Ifc Text annotations in SVG
Added option to fill background of Ifc Text annotation with white color.

To make it work need to add "fill-bg" class to EPset_Annotation - https://i.imgur.com/ig2EhkQ.png.

Result - https://i.imgur.com/mq4hzAM.png
2024-04-15 09:25:49 +02:00
Andrej730 d9562c66a4 Small editing assigned product UI fix
Previously checkmark didn't worked at all if the existing and new product were the same.
2024-04-15 09:25:49 +02:00
Andrej730 6043d35821 Sliding doors - more consistent 2d repr between door types #2919 2024-04-15 09:25:49 +02:00
Andrej730 5d4ecb7177 Sliding doors - moved annotation arrow to Annotation/PLAN_VIEW #2919 2024-04-15 09:25:49 +02:00
Dion Moult b44cd7e153 Fix #2114. Duplicate overrides are now defined as macros which means that repeating last function now works. 2024-04-15 09:25:49 +02:00
Andrej730 7f058ab8bf removed redundant parts from generate_steel_profiles_library.py
removed never used methods and contexts
2024-04-15 09:25:49 +02:00
Dion Moult 12f60084f4 Fix #2898. Explicitly check for changed active material in material UI panels. 2024-04-15 09:25:49 +02:00
Andrej730 7233840434 Fixed ifc validation errors for generated openings #2925
Now ELEVATION_VIEW 3d curves converted to 2d to be extruded later on to create opening representation.
2024-04-15 09:25:49 +02:00
Dion Moult 6ad091b0be Deprecate mode subscriptiosn of profiles and walls 2024-04-15 09:25:49 +02:00
Dion Moult dff33632ae See #2881. Allow indices in the selector instead of relying on external evaluations. 2024-04-15 09:25:49 +02:00
Dion Moult e76487ca90 See #2916. Minor fix. 2024-04-15 09:25:49 +02:00
Andrej730 a2df9dcadd Revert "Fixed ifc validation errors for generated openings #2925"
This reverts commit 66a53b486a.
2024-04-15 09:25:49 +02:00
Gorgious56 1503a13f6c Interface now displays a hint when trying to edit a non-mesh-like object
& Fix case where the active object would go into edit mode even if not mesh-like when multiple objects were selected
2024-04-15 09:25:49 +02:00
Andrej730 7842877ba0 Fixed ifc validation errors for generated openings #2925 2024-04-15 09:25:49 +02:00
Andrej730 be75ef2596 Fixed ifc validation errors for furniture library #2925
Fixed bunch of validation errors with furniture library:

- IfcSpaceType PredefinedType wasn't optional
`<attribute PredefinedType: <enumeration IfcSpaceTypeEnum: (EXTERNAL, GFA, INTERNAL, NOTDEFINED, PARKING, SPACE, USERDEFINED)>> Not optional`

- some object had 0.0 depth extrusion
```
Rule IfcPositiveLengthMeasure_WR1:
    (self > 0.)
Violated by:
    (0.0 > 0.0)
```

- some orphan representations violating:
```
Rule IfcShapeModel_WR11:
    ((sizeof(self.OfProductRepresentation) == 1) ^ (sizeof(self.RepresentationMap) == 1) ^ (sizeof(ofshapeaspect) == 1))
Violated by:
    ((0 == 1 ^ 0 == 1) ^ 0 == 1)
     +  where 0 = sizeof(())
     +    where () = #9091=IfcShapeRepresentation(#15,'Body','SweptSolid',(#9090)).OfProductRepresentation
     +  and   0 = sizeof(())
     +    where () = #9091=IfcShapeRepresentation(#15,'Body','SweptSolid',(#9090)).RepresentationMap
     +  and   0 = sizeof(())
```
2024-04-15 09:25:48 +02:00
Andrej730 ec882a1a7d Fixed validation error for ELEVATION_VIEW curves #2925
Error occured because ShapeBuilder was assigning "Curve2D" representation type for elevation view curves when the correct type is "Curve3D".

It use to occur for both doors and windows created with ifc modifier.

```
Validation error text:
2023-04-03:18:21:28,879 ERROR   [rule_executor.py:154] On instance:
    #135=IfcShapeRepresentation(#21,'Profile','Curve2D',(#134))
Rule IfcShapeRepresentation_CorrectItemsForType:
    (IfcShapeRepresentationTypes(self.RepresentationType,self.Items))
Violated by:
    False
     +  where False = IfcShapeRepresentationTypes('Curve2D', (#134=IfcIndexedPolyCurve(#133,(IfcLineIndex((1,2)),IfcLineIndex((2,3)),IfcLineIndex((3,4)),IfcLineIndex((4,1))),$),))
     +    where 'Curve2D' = #135=IfcShapeRepresentation(#21,'Profile','Curve2D',(#134)).RepresentationType
     +    and   (#134=IfcIndexedPolyCurve(#133,(IfcLineIndex((1,2)),IfcLineIndex((2,3)),IfcLineIndex((3,4)),IfcLineIndex((4,1))),$),) = #135=IfcShapeRepresentation(#21,'Profile','Curve2D',(#134)).Items
```
2024-04-15 09:25:48 +02:00
Andrej730 75d3da9908 Fixed all unit.add_si_unit uses after fd87747
Now they were causing `TypeError: Usecase.__init__() got an unexpected keyword argument 'name'`
2024-04-15 09:25:48 +02:00
Andrej730 3095521e36 Fixed some validation errors for doors and windows #2925
Fixed the ones caused by using 3d curves as inner/outer curves in profiles.
2024-04-15 09:25:48 +02:00
Andrej730 4dcb9116e0 Fixed issue with tool.Blender.apply_bmesh 2024-04-15 09:25:48 +02:00
Dion Moult b18503d1e6 FixRevitTINs patch recipe now also purges non up-facing polygons as Revit doesn't handle them very well. 2024-04-15 09:25:48 +02:00
Dion Moult dd5e069729 Fix #2930. Do not require entity applicability in IfcTester. 2024-04-15 09:25:48 +02:00
Dion Moult 79479901f6 Fix #2910. Bug where style colours were not synced prior to duplication. 2024-04-15 09:25:48 +02:00
Chun 4bdf5475a9 a simplifier workflow and a more consistent coding style 2024-04-15 09:25:48 +02:00
Chun ab17b85854 Unify variable 2024-04-15 09:25:48 +02:00
Chun f859f11add Update functions of get_connected_to and get_connected_from compatible with IFC4 and IFC2X3 2024-04-15 09:25:48 +02:00
Chun 765b4a73d3 Add IFC4 support for functions get_connected_to and get_connected_from in util.system 2024-04-15 09:25:48 +02:00
Chun 9d70b9303b Add IFC4 support to get_connected_to and get_connected_from functions 2024-04-15 09:25:48 +02:00
Dion Moult a92c0d59d0 Fix #2928. 2024-04-15 09:25:48 +02:00
Dion Moult 4bd9515bf5 Fix #2924. IfcElements default to a null predefined type so they can inherit where possible. 2024-04-15 09:25:48 +02:00
Dion Moult 109df898e6 Fix #2926. Connections removed when rotating 90 deg to prevent unintuitive behaviour. Layer2 are also now recalculated. 2024-04-15 09:25:48 +02:00
Dion Moult e6468f280e Link to IfcArchitect tutorial series for quickstart video tutorials 2024-04-15 09:25:48 +02:00
Dion Moult ea5069a991 See #2881. Add support for evaluated commands in smart text literals 2024-04-15 09:25:48 +02:00
Dion Moult 40fb960101 Fix #2927. Continuing to make mesh editing stricter. 2024-04-15 09:25:48 +02:00
Dion Moult 65d2e51742 Shortlist which IFC geometries may be treated as a meshlike object. 2024-04-15 09:25:48 +02:00
Dion Moult 4b8152776d Minor fix 2024-04-15 09:25:48 +02:00
Massimo Fabbro 3f2adc1e13 fix qto ui bug where objects with no assigned base qto doesn't allow to show the qto panel 2024-04-15 09:25:48 +02:00
Dion Moult 86ed354a05 Fix #2922. You can now edit extrusion profiles of swept solids. 2024-04-15 09:25:48 +02:00
Dion Moult 2f3c5a7c75 Disable edit mode on non mesh-like representations as well to prevent risk of invalid geometry. 2024-04-15 09:25:48 +02:00
Dion Moult 6b4955344d Fix bug where generated openings invalidly used 3 dimensions instead of 2 2024-04-15 09:25:48 +02:00
Andrej730 e0f1ec3317 Fixed bug in tool.Blender.get_bmesh_for_mesh
It caused errors because it was expecting mesh object to be selected - when it's not necessary that active_object is the one that mesh belongs to and sometimes no objects can be selected at all.
2024-04-15 09:25:48 +02:00
Andrej730 31e5090a5d Fixed error with switching from EDIT mode for annotation meshes
Error occured when you were editing annotation mesh and tried to switched from EDIT mode

Error: Python: Traceback (most recent call last):
  File "\blenderbim\bim\module\geometry\operator.py", line 838, in invoke
    elif element.HasOpenings:
  File "\blenderbim\libs\site\packages\ifcopenshell\entity_instance.py", line 153, in __getattr__
    raise AttributeError(
AttributeError: entity instance of type 'IFC4.IfcAnnotation' has no attribute 'HasOpenings'
2024-04-15 09:25:48 +02:00
Andrej730 45536111b7 Revert part of 3a3d96be0 #2897
Reverted part of the bgl to gpu transition (to not scare away people with annotations without antialiasing🙂) until I work out the complete solution.
2024-04-15 09:25:48 +02:00
Andrej730 95848561c1 Fixed another typo related to #2889... 2024-04-15 09:25:48 +02:00
Andrej730 6ec4fc7914 Fixed crash in Blender 3.5 on creating fill area annotation
Crash was caused by some change in Blender Python API in 3.5.
The code below resulted in `ValueError: bpy_struct: item.attr = val: MeshPolygon.vertices: array length cannot be changed to 4 (expected 0)`

```
obj.data.polygons.add(1)
p1 = obj.data.polygons[-1]
p1.vertices = (v1.index, v2.index, v3.index, v4.index)
```
2024-04-15 09:25:48 +02:00
Andrej730 65055a9dd0 bgl to gpu: profiles and openings decorations #2897
Still need to fix shaders.py and decoration.py
2024-04-15 09:25:48 +02:00
Andrej730 db55cfc4ee Added description to some annotation operators 2024-04-15 09:25:48 +02:00
Andrej730 d4a8de95c5 Automatically adjusted STAIR_ARROWs now stop at the top thread
Previously they were ending at the end of the stair object and problem was that the end of the object could be at the slab underneath the stair.

Example - https://i.imgur.com/Y43v0GM.png
Before - https://i.imgur.com/Ze9DoK2.png
2024-04-15 09:25:48 +02:00
Andrej730 c807ea26e6 STAIR_ARROW annotations attached to IfcStairFlight object now readjusted after changes in IFC Stair modifier
Later probably will also need some other way to readjust annotations - so they can be readjusted for custom stairs, not created with modifier.
2024-04-15 09:25:48 +02:00
Andrej730 1ff6f691ac Clever STAIR_ARROW annotation
Now adding STAIR_ARROW annotation is a bit more clever - if you have IfcStairFlight selected when adding this type of annotation it will automatically:
1) define stair as it's parent;
2) add the stair as it's product;
3) place itself along the stair (it's assumed that stair direction is X+)

Example - https://i.imgur.com/Ze9DoK2.png
2024-04-15 09:25:47 +02:00
Andrej730 01a62bacd2 Fixed bug causing errors in IFC4X3 projects
It was causing an error below on opening BIM Tool and probably in some other places.

```
Traceback (most recent call last):
  File "C:\software\Steam\steamapps\common\Blender\3.5\scripts\startup\bl_ui\space_view3d.py", line 35, in draw
    self.draw_tool_settings(context)
  File "C:\software\Steam\steamapps\common\Blender\3.5\scripts\startup\bl_ui\space_view3d.py", line 48, in draw_tool_settings
    tool = ToolSelectPanelHelper.draw_active_tool_header(
  File "C:\software\Steam\steamapps\common\Blender\3.5\scripts\startup\bl_ui\space_toolsystem_common.py", line 809, in draw_active_tool_header
    draw_settings(context, layout, tool)
  File "\Blender\3.5\scripts\addons\blenderbim\bim\module\model\workspace.py", line 67, in draw_settings
    BimToolUI.draw(context, layout)
  File "\Blender\3.5\scripts\addons\blenderbim\bim\module\model\workspace.py", line 89, in draw
    AuthoringData.load()
  File "\Blender\3.5\scripts\addons\blenderbim\bim\module\model\data.py", line 52, in load
    cls.load_ifc_classes()
  File "\Blender\3.5\scripts\addons\blenderbim\bim\module\model\data.py", line 109, in load_ifc_classes
    cls.data["ifc_classes"] = cls.ifc_classes()
  File "\Blender\3.5\scripts\addons\blenderbim\bim\module\model\data.py", line 196, in ifc_classes
    + tool.Ifc.get().by_type("IfcDoorStyle")
  File "\Blender\3.5\scripts\addons\blenderbim\libs\site\packages\ifcopenshell\file.py", line 364, in by_type
    return [entity_instance(e, self) for e in self.wrapped_data.by_type(type)]
  File "\Blender\3.5\scripts\addons\blenderbim\libs\site\packages\ifcopenshell\ifcopenshell_wrapper.py", line 4499, in by_type
    return _ifcopenshell_wrapper.file_by_type(self, *args)
RuntimeError: Entity with name 'IfcDoorStyle' not found in schema 'IFC4X3'
Traceback (most recent call last):
  File "C:\software\Steam\steamapps\common\Blender\3.5\scripts\startup\bl_ui\space_view3d.py", line 35, in draw
    self.draw_tool_settings(context)
  File "C:\software\Steam\steamapps\common\Blender\3.5\scripts\startup\bl_ui\space_view3d.py", line 48, in draw_tool_settings
    tool = ToolSelectPanelHelper.draw_active_tool_header(
  File "C:\software\Steam\steamapps\common\Blender\3.5\scripts\startup\bl_ui\space_toolsystem_common.py", line 809, in draw_active_tool_header
    draw_settings(context, layout, tool)
  File "\Blender\3.5\scripts\addons\blenderbim\bim\module\model\workspace.py", line 67, in draw_settings
    BimToolUI.draw(context, layout)
  File "\Blender\3.5\scripts\addons\blenderbim\bim\module\model\workspace.py", line 92, in draw
    cls.draw_header_interface()
  File "\Blender\3.5\scripts\addons\blenderbim\bim\module\model\workspace.py", line 351, in draw_header_interface
    cls.draw_type_selection_interface()
  File "\Blender\3.5\scripts\addons\blenderbim\bim\module\model\workspace.py", line 367, in draw_type_selection_interface
    if AuthoringData.data["ifc_classes"]:
KeyError: 'ifc_classes'
```
2024-04-15 09:25:47 +02:00
Andrej730 e5427583ad Fixed typo in ifcopenshell.util.type 2024-04-15 09:25:47 +02:00
Andrej730 3429972067 Added arrow to 2d repr of sliding doors (#2919)
Example - https://i.imgur.com/eJnhDXU.png
2024-04-15 09:25:47 +02:00
Dion Moult 4e1dca6934 Load all type products by default (in preparation for IfcAnnotationType support) 2024-04-15 09:25:47 +02:00
Andrej730 7f1bb71c66 IFC Door Modifier - sliding doors
Added support for sliding doors in IFC Door Modifier.

The main differences are 2d representation (https://i.imgur.com/VyEH569.png) and the door panel being placed before the lining, not after
2024-04-15 09:25:22 +02:00
Thomas Krijnen 969b7382b6 Replace unpacking with boost::tie() for compatibility with msvc17 build machine 2024-04-15 08:55:37 +02:00
Thomas Krijnen 44deaedccc Incorporate profile in FixedRefSolid, some attempt at DirectrixDerived 2024-04-12 10:24:24 +02:00
Thomas Krijnen 7b296629d6 Doing a transpose was most likely misguided 2024-04-12 10:23:27 +02:00
Richard Brice 420eed1828 Adds new simplified alignment example that makes us of the alignment helper functions 2024-04-11 11:26:42 -07:00
Richard Brice e30fd6096a Adds framework for alignment helper functions.
Function include building a simple highway alignment and mapping of sementic segment definitions to geometric definitions (this part is still a work in progress)
2024-04-11 11:26:42 -07:00
Thomas Krijnen 85887b6db0 Clone profile for immutability in IfcDerivedProfileDef 2024-04-11 20:15:55 +02:00
Thomas Krijnen 9e2645d4cf Respect face matrix in IfcSectionedSolidHorizontal 2024-04-11 20:15:55 +02:00
Thomas Krijnen c535c000a6 Wrong axis typo causing singular matrices 2024-04-11 20:15:55 +02:00
Richard Brice a1d8aaf999 Fixes problems with Helmert curves 2024-04-11 11:13:02 -07:00
Richard Brice 4807e5b432 Fixes curve segment placement issues 2024-04-10 15:15:11 -07:00
Richard Brice a34da81ac5 Fixes tilt slope for cant 2024-04-10 14:09:46 -07:00
Thomas Krijnen 7589e0bd40 Implement product matric access in Python wrapper 2024-04-10 21:22:13 +02:00
Richard Brice 6d5a9f8716 Fixes anon namespace that was causing problems with linking 2024-04-10 11:48:26 -07:00
Richard Brice fda4c674d9 Fixes more problems with mapping IfcCurveSegment 2024-04-09 16:46:43 -07:00
Richard Brice a94d1e53b7 Fixes some problems with mapping IfcCurveSegment 2024-04-06 19:02:18 -07:00
Richard Brice 98ec4220eb Adds method to piecewise_function to evaluate over a range. 2024-04-06 10:40:22 -07:00
Thomas Krijnen f0dbef88c1 Respect ReorientShells setting in shell.cpp 2024-04-05 15:37:10 +02:00
Thomas Krijnen 59fbf2bbde #4501 warning message 2024-04-03 11:43:06 +02:00
Thomas Krijnen 209d6c1e70 SectionedSolidHorizontal: sort sections, bounds check 2024-03-29 15:53:34 +01:00
Richard Brice 83a127b570 Implements IfcSegmentReferenceCurve and cant 2024-03-28 15:04:17 -07:00
Richard Brice 960a59da84 Fixes IfcAxis2PlacementLinear per https://github.com/buildingSMART/IFC4.3.x-development/issues/732#issuecomment-1812127613 2024-03-27 16:24:58 -07:00
Thomas Krijnen 4b32381192 Don't fail on product without placement 2024-03-21 09:44:40 +01:00
Thomas Krijnen 0d3c73de82 Fix compilation for 4x2 2024-03-15 20:13:16 +01:00
Thomas Krijnen 3babe852de Don't use BRepFill, but rather triangulate. Implement IfcSectionedSolidHorizontal 2024-03-15 17:32:05 +01:00
Thomas Krijnen bf1d2befd8 Address compiler warnings 2024-03-14 11:10:19 +01:00
Thomas Krijnen ca0488892c Add eigen constructur to point3 and direction3 2024-03-14 11:04:44 +01:00
Thomas Krijnen eed0b55f01 Move version definition below header include 2024-03-14 10:26:51 +01:00
Thomas Krijnen b1f5f7d628 Update ci-py-only.yml 2024-03-13 14:09:29 +01:00
Thomas Krijnen 978a8f474d Update ci.yml 2024-03-13 14:09:07 +01:00
Thomas Krijnen c8a9d5b743 Address comment by @RickBrice 2024-03-13 13:18:12 +01:00
Thomas Krijnen 3b08f644ed Uncomment type assertion and comment out writing to stdout 2024-03-13 13:18:12 +01:00
Thomas Krijnen d06280f0e7 First rough draft of alignment-based IfcFixedReferenceSweptAreaSolid 2024-03-13 13:18:12 +01:00
Richard Brice ebe6015561 Fixes vertical clothoid, vertical circle, and horizontal cubic cases for alignment 2024-03-06 12:00:35 -08:00
Dirk Olbrich 28c7da2336 examples: fix missing includes 2024-03-06 09:25:02 +01:00
Dirk Olbrich eb50be5c52 ifcparse: fix missing include and const 2024-03-06 09:25:02 +01:00
Dirk Olbrich 47a2971c65 ifcparse: fix clang-tidy warning readability-identifier-length 2024-03-06 09:25:02 +01:00
Dirk Olbrich eea9a14722 ifcparse: unify private member variables name to use trailing underscore 2024-03-06 09:25:02 +01:00
Dirk Olbrich 8b145248c6 ifcparse: fix clang-tidy warning readability-qualified-auto 2024-03-06 09:25:02 +01:00
Dirk Olbrich c29e7b32ad ifcparse: fix clang-tidy warning readability-implicit-bool-conversion 2024-03-06 09:25:02 +01:00
Dirk Olbrich 95b5926353 ifcgeom, serializer: fix missing includes 2024-03-06 09:25:02 +01:00
Dirk Olbrich 9f40674d91 ifcparse: fix clang-tidy warning readability-else-after-return 2024-03-06 09:25:02 +01:00
Dirk Olbrich b264408d85 ifcparse: fix clang-tidy warnung unused-includes 2024-03-06 09:25:02 +01:00
Richard Brice fcfeac95bf WIP getting alignment geometry to match unit test from bSI Rail Room 2024-03-01 10:55:20 -08:00
Richard Brice 77b56b6826 Fixes typo in IfcPointByDistanceExpression 2024-02-28 18:38:41 -08:00
Richard Brice 0baf3dac52 Adds support for IfcCosineSpiral, IfcSineSpiral, and updates implementation to match results from bSI Railway Room test cases. 2024-02-26 16:34:41 -08:00
Thomas Krijnen a60e272eee build_halfspace_tree_is_decomposed() for polies already tagged as convex 2024-02-18 12:06:02 +01:00
Thomas Krijnen 8af6903505 Convex tag on cgal shape 2024-02-18 12:06:02 +01:00
Thomas Krijnen d04357933b Release GIL in some cases 2024-02-18 12:06:02 +01:00
Thomas Krijnen c72f97225f Clear current product after finalization 2024-02-18 12:06:02 +01:00
Thomas Krijnen b76dad682a item_id() 2024-02-18 12:06:02 +01:00
Thomas Krijnen 0d9a40f88c Submodule 2024-02-18 12:06:02 +01:00
Thomas Krijnen 4418397d2c fixes to cityjson invocation 2024-02-18 12:06:02 +01:00
Thomas Krijnen 49e8f8bdca settings, data model changes (no longer graph on both orientations of plane eq, group equations per product), multiple files, convex ifc definition test, reuse convex decomps for instanced geom, fix remove narrow, option to store eq mapping, multi-threading, command line options 2024-02-18 12:06:02 +01:00
Thomas Krijnen ec5bfd6a68 cgal threads, city json executable 2024-02-18 12:06:02 +01:00
Richard Brice bb88ba5bdf Updates implementation of IfcXXXPolynomialSpiral curves as parent curve 2024-02-16 13:54:26 -08:00
Thomas Krijnen bb8769aff8 Add WITH_RELATIONSHIP_VALIDATION defaulting to OFF 2024-01-30 09:15:35 +01:00
Thomas Krijnen d7d89a6084 Merge branch 'v0.8.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.8.0 2024-01-30 09:04:13 +01:00
Thomas Krijnen c9f320f062 Debug options, eliminate narrow slices prior to snapping, consider triangle areas in box substitution 2024-01-20 13:26:54 +01:00
Richard Brice abddb74bd9 Adds placeholder implementations for IfcXXXOrderPolynomialSpiral - there are some bugs, but the basic implementation framework is good. 2024-01-17 12:59:48 -08:00
Richard Brice f2f0000616 Minor tweaks to IfcAlignment example 2024-01-16 15:33:25 -08:00
Richard Brice f12c3aae09 Adds caching of loop upgraded to pwf to loop class 2024-01-15 15:52:26 -08:00
Richard Brice a8b88b8ae1 Adds loop_to_piecewise_function_upgrade
This provides for a more uniform treatment of curves when mapping IfcOffsetCurveByDistances and IfcPointByDistanceExpression
2024-01-11 15:37:44 -08:00
Richard Brice 5815417198 Fixes documentation in comment 2024-01-11 15:36:17 -08:00
Thomas Krijnen 142b15e332 CgalShape: Triangulate before calculating area/volume 2023-12-28 19:08:08 +00:00
Thomas Krijnen 706b92d4e0 Exterior shell extractor implemented in Python 2023-12-21 21:19:43 +01:00
Richard Brice f493343558 Adds geometric representations for CT 4.1.7.1.1.4 Alignment Geometry - Segments to the IfcAlignment example 2023-12-20 14:53:20 -08:00
krande d5da636b00 suggested change of ifcwrap pythoninterpreter function to no longer rely on distutil (which is deprecated in python 3.12). 2023-12-20 12:05:47 -08:00
Thomas Krijnen 4dcc1b5718 4x3_add2 py wrapper 2023-12-19 12:40:38 +01:00
Thomas Krijnen 9fddb564b1 OpaqueCoordinate rule of 3 2023-12-19 12:40:16 +01:00
Thomas Krijnen 89fd887d9a Remove virtual kind() call out of compile-time loop 2023-12-19 12:38:51 +01:00
Thomas Krijnen ca4781f559 Return value 2023-12-18 19:22:29 +00:00
Thomas Krijnen ef929f9d30 Const ptr references and address some warnings 2023-12-18 13:51:12 +00:00
Thomas Krijnen aa5b8ce30a Update build-all.py 2023-12-17 13:24:17 +01:00
Thomas Krijnen c4326e557c Remove const 2023-12-15 14:31:40 +01:00
Thomas Krijnen 0cf5d1c968 #4084 debug iterator failure 2023-12-15 14:03:08 +01:00
Thomas Krijnen 796c1d6210 Comment out obsolete code 2023-12-15 13:41:51 +01:00
Thomas Krijnen c2492c8655 --circle-segments conversion setting instead of hardcoded number in cgal kernel 2023-12-15 13:41:37 +01:00
Richard Brice 2a3416b01a Merge pull request #4117 from RickBrice/v0.8.0
Addresses alignment geometry issues
2023-12-14 08:27:45 -08:00
Richard Brice 662a4bb6e9 Fixes generated geometry based on evolving understanding of IFC 2023-12-13 16:17:10 -08:00
Richard Brice 3ff8c5c292 Fixes IfcAlignment example 2023-12-13 16:17:10 -08:00
Richard Brice c33f68fb99 Adds check for placement relative to self 2023-12-13 16:17:10 -08:00
Richard Brice 7fef3efbeb Fixes horizontal alignment issues 2023-12-13 16:17:10 -08:00
Thomas Krijnen 6ed91d3ea4 to_string() option, no shared_ptr in OpaqueCoord, add ConvResShape::vertices(), newell instead of simple cross product, create_epeck(double/str) 2023-12-13 16:43:33 +01:00
Thomas Krijnen 14e924cd8c typename 2023-12-11 21:33:08 +01:00
Thomas Krijnen 1e83e5b018 Python wrapper improvements 2023-12-11 21:06:25 +01:00
Thomas Krijnen 9c82b752b6 Fix OBJ writer from Nef 2023-12-11 21:05:58 +01:00
Thomas Krijnen e74f160a48 Use predefined templates 2023-12-11 21:05:39 +01:00
Thomas Krijnen 17bf6691c6 Use custom poly converter 2023-12-11 21:04:54 +01:00
Thomas Krijnen 137a6b5706 map(vector<opaque_4>) prototype 2023-12-11 21:03:55 +01:00
Thomas Krijnen df0e64a68a Commit debugging trick comment analogous to occt kernel 2023-12-11 21:00:54 +01:00
Thomas Krijnen c7a2abdf2d CgalKernel halfspace handling: orientation is on face not plane 2023-12-11 21:00:32 +01:00
Thomas Krijnen a62aefa7ff Disable automatic density substitution in cgal kernel 2023-12-11 21:00:04 +01:00
Thomas Krijnen e946b6c540 Test for self-intersection before converting to nef 2023-12-11 20:59:04 +01:00
Thomas Krijnen cac2b77659 Implement num_faces 2023-12-11 20:57:58 +01:00
Thomas Krijnen 5c4cc81f6f So much for using a typesafe language 2023-12-11 13:29:20 +01:00
Richard Brice 3f1c01e363 Merge pull request #4097 from RickBrice/v0.8.0
Small tweaks to the IfcAlignment example
2023-12-08 13:16:09 -08:00
Richard Brice 13985eb49d Small tweaks to the IfcAlignment example 2023-12-08 13:15:29 -08:00
Richard Brice 5207c3d7c5 Merge pull request #4091 from RickBrice/v0.8.0
Updates representation context in IfcAlignment example so it passes bSI validation service tests
2023-12-07 15:38:49 -08:00
Richard Brice 7893b217ad Updates representation context in IfcAlignment example so it passes the bSI validation service checks 2023-12-07 15:31:33 -08:00
Richard Brice e0b445de0b Merge pull request #4088 from RickBrice/v0.8.0
Updates representations in IfcAlignment example
2023-12-07 09:48:22 -08:00
Richard Brice 92f80646cd Merge branch 'IfcOpenShell:v0.8.0' into v0.8.0 2023-12-07 09:47:29 -08:00
Richard Brice 84a8c370c1 Updates representations in IfcAlignment example 2023-12-07 09:46:23 -08:00
Richard Brice 4b933812a7 Generalized calculation of spiral curve tangent vector 2023-12-07 08:01:31 -08:00
Richard Brice 71cca03e1d Merge pull request #4083 from RickBrice/v0.8.0
PR fixes bug computing IfcAxis2PlacementLinear.Axis for IfcSegmentReferenceCurve as basis curve
2023-12-06 15:43:45 -08:00
Richard Brice c562a52011 Merge branch 'v0.8.0' of https://github.com/RickBrice/IfcOpenShell into v0.8.0 2023-12-06 15:32:13 -08:00
Richard Brice 9e32c0ea93 Fixes problem computing Axis vector for cant 2023-12-06 15:31:01 -08:00
Thomas Krijnen f687e610b9 Workaround to create epeck number from python 2023-12-05 21:15:06 +01:00
Thomas Krijnen c1cb16f5f6 Implement a bunch of shape analysis routines 2023-12-05 21:14:43 +01:00
Thomas Krijnen 059c9fb7d5 remove_degenerate_faces() in order to prevent division by zero 2023-12-05 21:13:43 +01:00
Thomas Krijnen 0b4718b3b5 Report tasks on actual mapped products 2023-12-05 21:12:09 +01:00
Thomas Krijnen 4cd327f711 Don't mutate conversion result placement. Breaks combination of world coords + optimized model. 2023-12-05 21:11:36 +01:00
Thomas Krijnen c595adfb7b Use world coords on OBJ/STP/IGS serializers as before 2023-12-05 21:10:42 +01:00
Richard Brice 07d0a21393 Merge pull request #4023 from RickBrice/v0.8.0
v0.8.0 Alignment Geometry - Bug fixes and more work in progress
2023-12-01 09:12:13 -08:00
Richard Brice 6c808c097e Merge branch 'IfcOpenShell:v0.8.0' into v0.8.0 2023-12-01 07:22:29 -08:00
Thomas Krijnen 4166384ab3 Enable setting ITERATOR_OUTPUT from python 2023-11-28 12:59:32 +01:00
Richard Brice 2126381a15 Adds conversion settings to control the granularity of points computed for a piecewise_function 2023-11-22 15:49:24 -08:00
Richard Brice 39c3cac05d Fixes bugs in segment reference curve geometry 2023-11-22 08:32:59 -08:00
Richard Brice 5f7e89a5f8 Implements IfcOffsetCurveByDistance mapping 2023-11-21 08:54:06 -08:00
Richard Brice 49d9245e29 Fixes problem computing tangent and normal vectors for Circle 2023-11-21 08:49:16 -08:00
Thomas Krijnen 87f39b3826 Temporarily log evaluated points 2023-11-21 14:42:59 +01:00
Thomas Krijnen b52c5ab082 Don't emit empty results for representation and allow implicit items to
pass when using --plan
2023-11-21 14:41:31 +01:00
Richard Brice 49b3805859 Updates treatment of IfcLine to account for the fact that IfcLine.Orientation.DirectionRatios are generally normalized. 2023-11-20 11:15:35 -08:00
Rick Brice 265f45a814 Adds example program for alignments 2023-11-17 11:27:49 -08:00
Richard Brice afb8375e70 Fixes problem with vertical curve slopes 2023-11-17 08:03:03 -08:00
Richard Brice 162db2e588 Merge branch 'IfcOpenShell:v0.8.0' into v0.8.0 2023-11-16 17:20:42 -07:00
Richard Brice f4ba3fe487 Still trying to figure out cant 2023-11-16 16:17:41 -08:00
Thomas Krijnen dc6eb8611a More robust conversion to nef in CgalShape 2023-11-16 09:15:19 +01:00
Richard Brice f204135aa6 Fixing bugs 2023-11-15 07:21:19 -08:00
Thomas Krijnen 5af975f99e Backwards compatibility for py setting strings 2023-11-15 13:42:55 +01:00
Thomas Krijnen d5fbc72537 if constexpr instead of disallowed member specialization 2023-11-15 12:33:26 +01:00
Thomas Krijnen c2b527b832 Copy pasta error 2023-11-15 11:49:44 +01:00
Thomas Krijnen 9e73e96d31 More missing typenames 2023-11-15 11:33:00 +01:00
Thomas Krijnen f2b800c30c Add missing typename 2023-11-15 11:30:06 +01:00
Thomas Krijnen 3ef4e8152f Commit suggestions in #3992 Thanks @RickBrice 2023-11-15 11:05:06 +01:00
Thomas Krijnen 2545f334a3 Submodule 2023-11-15 11:04:05 +01:00
Thomas Krijnen 65e874c67f Drastic settings refactoring 2023-11-15 10:32:33 +01:00
Thomas Krijnen d2a2e0d7a0 ENABLE_EXTENDED_ALIGNED_STORAGE for msvc 2023-11-15 10:32:33 +01:00
Richard Brice 73abb25fc3 Merge pull request #3988 from RickBrice/v0.8.0
Fixes a build issue with IfcCurveSegmet
2023-11-09 10:49:59 -07:00
Richard Brice a80a126fd8 Merge branch 'IfcOpenShell:v0.8.0' into v0.8.0 2023-11-09 10:48:45 -07:00
Richard Brice 8303a04b4f A couple tweaks for IfcCurveSegment 2023-11-09 09:48:05 -08:00
Richard Brice e07281d72c Merge pull request #3987 from RickBrice/v0.8.0
Fixes build issue with mapping
2023-11-09 10:44:45 -07:00
Richard Brice 12e69ff07a Fixes build issue with mapping 2023-11-09 09:43:36 -08:00
Richard Brice 43a9c050eb Merge pull request #3982 from RickBrice/v0.8.0
Implements IfcSegmentedReferenceCurve and first cut at cant geometry
2023-11-09 03:28:18 -07:00
Richard Brice 8409859e8d Implements safer way to use IfcCurveSegment.UsingCurves
Co-authored-by: Thomas Krijnen <t.krijnen@gmail.com>
2023-11-09 03:23:13 -07:00
Richard Brice 7ed85358f9 Implements IfcSegmentedReferenceCurve and first cut at cant geometry 2023-11-08 19:43:21 -08:00
Thomas Krijnen 809668c015 Major update to halfspace algorithm, conversion result shape analysis 2023-11-02 09:04:34 +01:00
Thomas Krijnen 559de7d4cd Merge pull request #3945 from RickBrice/v0.8.0
Implements framework for adjusting geometry based on start location next segment
2023-11-01 22:22:55 +01:00
Richard Brice b50f4a2240 Adds a virtual init_adjustments function to precompute common values for segment geometry adjustments 2023-11-01 08:35:29 -07:00
Richard Brice bef86e261c Renamed interpolate to compute_adjustment and made it a template function. 2023-11-01 08:34:58 -07:00
Richard Brice ba870e54c3 Merge branch 'v0.8.0' into v0.8.0 2023-10-27 10:46:53 -07:00
Richard Brice 969181acf3 Implements framework for adjusting geometry based on location of start point of next segment. 2023-10-27 08:10:18 -07:00
Richard Brice 0aa69a6ebf Moves implementation of piecewise_function::evaluate(u) from h to cpp to prevent massive rebuilds everytime the function is changed. 2023-10-27 08:10:18 -07:00
Richard Brice dd915736f5 Adds warning that the BaseCurve of IfcGradientCurve is expected to be IfcCompositeCurve 2023-10-27 08:10:18 -07:00
Richard Brice 85ece64272 Minor code format revisions 2023-10-27 08:10:18 -07:00
Richard Brice 6e8d635040 Adds test of fallback placement for IfcLinearPlacement and reduces number of tests for placement type.
Changed to if-else if so inst isn't tested to be every placement type, every time.
2023-10-27 08:10:18 -07:00
Richard Brice cefbf8b4f2 Fixes runtime check for polynomial curve 2023-10-27 08:10:17 -07:00
Thomas Krijnen a0aaa39c4b Test for intersection result in cgal code 2023-10-27 08:10:17 -07:00
Thomas Krijnen 71166f3685 Some variations of shell mapping in occt 2023-10-27 08:10:17 -07:00
Thomas Krijnen 90f9123f35 Notify on product conversion start as in 0.7 2023-10-27 08:10:17 -07:00
Thomas Krijnen a6f97b0b92 Implement ObjectPlacement using native recursion 2023-10-27 08:10:17 -07:00
Richard Brice f0dbb535d3 Removed assert, added Logger::Warning and Logger::Error. Made treatment of unexpected data more permissive 2023-10-27 08:09:50 -07:00
Richard Brice dde85265c6 Adds support for IfcLinearPlacement 2023-10-27 08:09:05 -07:00
Richard Brice 1920a6427d Removed assert, added Logger::Warning and Logger::Error. Made treatment of unexpected data more permissive 2023-10-27 08:04:19 -07:00
Thomas Krijnen 3913849635 Use --start/end-group on linux to fix ld geomserver 2023-10-27 08:04:18 -07:00
Richard Brice 140dded1d1 Implements Eigen shortcut
Co-authored-by: Thomas Krijnen <t.krijnen@gmail.com>
2023-10-27 08:04:18 -07:00
Richard Brice 40d4c5bd01 Implements Eigen shortcut
Co-authored-by: Thomas Krijnen <t.krijnen@gmail.com>
2023-10-27 08:04:18 -07:00
Richard Brice 97879e47e2 Implements Eigen shortcut
Co-authored-by: Thomas Krijnen <t.krijnen@gmail.com>
2023-10-27 08:04:18 -07:00
Richard Brice 8b05da1da1 Implements Eigen shortcut
Co-authored-by: Thomas Krijnen <t.krijnen@gmail.com>
2023-10-27 08:04:18 -07:00
Richard Brice 6a828d7035 Instantiates IfcHierarchyHelper template for ADD2 2023-10-27 08:04:18 -07:00
Richard Brice 528cf06a46 Adds support for IfcLinearPlacement 2023-10-27 08:04:17 -07:00
Thomas Krijnen b4ef4cbbec Add noexcept to hash functor 2023-10-27 08:04:17 -07:00
Thomas Krijnen 23ab8c7ef9 In-code changes for ADD2 2023-10-27 08:04:17 -07:00
Thomas Krijnen b52752ae11 Rerun C++ codegen 2023-10-27 08:04:17 -07:00
Thomas Krijnen b865309b92 Merge v0.7.0 -- src\ifcopenshell-python\ifcopenshell\express 2023-10-27 08:04:13 -07:00
Richard Brice 512b8b9e08 Mapping of vertical profiles with IfcGradientCurve 2023-10-27 08:04:12 -07:00
Richard Brice 8497e655f5 Fixes mapping of horizontal curve with IfcCircle 2023-10-27 08:04:12 -07:00
Richard Brice c1cab4b186 Fixes problems with horizontal curves and clothoid spirals 2023-10-27 08:04:12 -07:00
Thomas Krijnen 53096017f5 Update nef_to_halfspace_tree.h 2023-10-27 08:04:12 -07:00
Thomas Krijnen c1a6d8f347 Small changes to curve segment handling for purpose of wrapper 2023-10-27 08:04:12 -07:00
Richard Brice ba4ff68597 Fixes runtime check for expected IfcPolynomialCurve coefficients and adds fallback check to IfcObjectPlacement (#3936)
* Adds support for IfcLinearPlacement

* Instantiates IfcHierarchyHelper template for ADD2

* Implements Eigen shortcut

Co-authored-by: Thomas Krijnen <t.krijnen@gmail.com>

* Implements Eigen shortcut

Co-authored-by: Thomas Krijnen <t.krijnen@gmail.com>

* Implements Eigen shortcut

Co-authored-by: Thomas Krijnen <t.krijnen@gmail.com>

* Implements Eigen shortcut

Co-authored-by: Thomas Krijnen <t.krijnen@gmail.com>

* Removed assert, added Logger::Warning and Logger::Error. Made treatment of unexpected data more permissive

* Fixes runtime check for polynomial curve

* Adds test of fallback placement for IfcLinearPlacement and reduces number of tests for placement type.

Changed to if-else if so inst isn't tested to be every placement type, every time.

---------

Co-authored-by: Thomas Krijnen <t.krijnen@gmail.com>
2023-10-25 09:42:39 +02:00
Thomas Krijnen e9c70f8d83 Test for intersection result in cgal code 2023-10-24 20:57:02 +02:00
Thomas Krijnen f911bbd931 Some variations of shell mapping in occt 2023-10-24 20:56:39 +02:00
Thomas Krijnen 85b3509ce3 Notify on product conversion start as in 0.7 2023-10-24 20:56:06 +02:00
Thomas Krijnen ad61353fb5 Implement ObjectPlacement using native recursion 2023-10-24 20:54:25 +02:00
Richard Brice 2a53911c52 Removed assert, added Logger::Warning and Logger::Error. Made treatment of unexpected data more permissive 2023-10-24 17:05:51 +02:00
Richard Brice 94b567a25b Implements Eigen shortcut
Co-authored-by: Thomas Krijnen <t.krijnen@gmail.com>
2023-10-24 17:05:51 +02:00
Richard Brice 3237190d83 Implements Eigen shortcut
Co-authored-by: Thomas Krijnen <t.krijnen@gmail.com>
2023-10-24 17:05:51 +02:00
Richard Brice 5482ca145e Implements Eigen shortcut
Co-authored-by: Thomas Krijnen <t.krijnen@gmail.com>
2023-10-24 17:05:51 +02:00
Richard Brice 6f5f7016fe Implements Eigen shortcut
Co-authored-by: Thomas Krijnen <t.krijnen@gmail.com>
2023-10-24 17:05:51 +02:00
Richard Brice 5c64a1bd8d Instantiates IfcHierarchyHelper template for ADD2 2023-10-24 17:05:51 +02:00
Richard Brice fc22d2fa51 Adds support for IfcLinearPlacement 2023-10-24 17:05:51 +02:00
Thomas Krijnen 4f3dacd6d5 Use --start/end-group on linux to fix ld geomserver 2023-10-21 22:29:41 +02:00
Thomas Krijnen 164125fe70 Add noexcept to hash functor 2023-10-18 09:47:30 +02:00
Thomas Krijnen fd3ef6508b In-code changes for ADD2 2023-10-18 09:47:29 +02:00
Thomas Krijnen 1eb8ef08d2 Rerun C++ codegen 2023-10-18 09:47:28 +02:00
Thomas Krijnen 6302be6bfd Merge v0.7.0 -- src\ifcopenshell-python\ifcopenshell\express 2023-10-18 09:47:27 +02:00
Richard Brice d52f12973a Mapping of vertical profiles with IfcGradientCurve 2023-10-17 09:20:50 +02:00
Richard Brice 3eb85cc36a Fixes mapping of horizontal curve with IfcCircle 2023-10-17 09:20:50 +02:00
Richard Brice e794911926 Fixes problems with horizontal curves and clothoid spirals 2023-10-17 09:20:50 +02:00
Thomas Krijnen 51f72b4edc Update nef_to_halfspace_tree.h 2023-10-16 21:28:38 +02:00
Thomas Krijnen 661c8bc50f Small changes to curve segment handling for purpose of wrapper 2023-10-14 16:37:50 +02:00
Thomas Krijnen 909978c941 Merge pull request #3826 from RickBrice/v0.8.0
Some minor tweaks and implements suggestions
2023-10-12 20:59:31 +02:00
Dirk Olbrich 616a96972a clang-format: align license blocks
- split up some very long lines
2023-10-12 12:39:16 +02:00
Dirk Olbrich d971e0e62e clang-format: remove duplicates from base style 2023-10-12 12:39:16 +02:00
Dirk Olbrich 63177a7c35 clang-format: format test 2023-10-12 12:39:16 +02:00
Dirk Olbrich 17838f2426 clang-format: no column length, no short blocks 2023-10-12 12:39:16 +02:00
Dirk Olbrich 1969828340 clang-format: add style file 2023-10-12 12:39:16 +02:00
Thomas Krijnen fa73de97b0 Option to specify algorithm for --exterior-only 2023-10-06 13:27:47 +02:00
Richard Brice b9c234457d Fixes minor issues with mapping code 2023-10-04 13:25:58 -07:00
Richard Brice a5c07d5e24 Adds IfcPolynoialCurve for vertical curves 2023-10-04 13:25:31 -07:00
Richard Brice 7b0e2c52ac Manually merged in aothms revisions for gradient curves and implicit_item taxonomy 2023-10-02 16:30:39 -07:00
Richard Brice ae09a1acac Merge branch 'v0.8.0' of https://github.com/RickBrice/IfcOpenShell into v0.8.0 2023-09-29 13:27:54 -07:00
Richard Brice c3aeae8661 Implements recommendation to use map_impl(IfcPolyline*) 2023-09-29 13:27:23 -07:00
Richard Brice 9c5758b77c Merge branch 'v0.8.0' into v0.8.0 2023-09-29 12:37:14 -07:00
Richard Brice 00d8ffeba0 Reverts to Taylor Series approximation of Clothoid curve.
If you compare the results generated by the numeric integration and the approximation, they are very different. The approximation compares will with other software so there is likely a problem with the equation of the clothoid
2023-09-29 12:14:38 -07:00
Richard Brice f9d259a3d8 Removes redundant function evaluation in numeric integration 2023-09-29 12:14:38 -07:00
Richard Brice d9b534b66d Implemented position handling with transformation matrix 2023-09-29 12:14:38 -07:00
Richard Brice 47c319aa2d Adds a continuity check for IfcCurveSegment 2023-09-29 12:14:30 -07:00
Richard Brice d50dcadf5c Implemented placement handling with transformation matrix. 2023-09-29 08:45:02 +02:00
Richard Brice fdc0c0cbd1 Minor revision to numerical integration code 2023-09-29 08:45:02 +02:00
Richard Brice 2d14ad1667 Revises implementation of operator(IfcSchema::IfcClothoid*) to use trapezoid rule numeric integration.
This is a more general approach than the Taylor Series approximation and is applicable to all the other spiral types. I stubbed out a functor for IfcSecondOrderPolynomialSpiral, but haven't tested it. The purpose is to show the concept.
2023-09-29 08:45:02 +02:00
Richard Brice 9ac99b6f97 Implements mapping of IfcCurveSegment to taxonomy::geometry 2023-09-29 08:45:02 +02:00
Richard Brice 4d3a21de77 Fixes cast to IfcCurveSegment for access to ParentCurve 2023-09-29 08:45:02 +02:00
Richard Brice 60723cff2b Fixed problem with call to boost::mpl::for_each 2023-09-29 08:45:02 +02:00
Richard Brice 6510291f21 Updated build scripts to use boost_1.79.0 2023-09-29 08:45:02 +02:00
Richard Brice d4f543d2ad Implemented placement handling with transformation matrix. 2023-09-28 14:58:21 -07:00
Richard Brice 1564b53ef5 Minor revision to numerical integration code 2023-09-28 14:28:17 -07:00
Richard Brice 4f2b083ffc Revises implementation of operator(IfcSchema::IfcClothoid*) to use trapezoid rule numeric integration.
This is a more general approach than the Taylor Series approximation and is applicable to all the other spiral types. I stubbed out a functor for IfcSecondOrderPolynomialSpiral, but haven't tested it. The purpose is to show the concept.
2023-09-28 11:51:26 -07:00
Richard Brice 6ae0cce186 Implements mapping of IfcCurveSegment to taxonomy::geometry 2023-09-27 11:16:55 -07:00
Richard Brice 3e272efce4 Fixes cast to IfcCurveSegment for access to ParentCurve 2023-09-22 13:49:18 -07:00
Richard Brice 04b70efd7f Fixed problem with call to boost::mpl::for_each 2023-09-21 15:48:45 -07:00
Richard Brice 53028d9c97 Updated build scripts to use boost_1.79.0 2023-09-21 15:48:45 -07:00
Thomas Krijnen 3bc9f81b6a Remove 4x3 RCs from cmake defaults 2023-09-17 21:02:05 +02:00
Thomas Krijnen 053e3a3191 #3098 Move boost::type application to curve to template function 2023-09-17 09:35:14 +02:00
Thomas Krijnen a14c40feda Check for empty result from map(IfcRepresentation) in iterator 2023-09-16 22:23:22 +02:00
Thomas Krijnen 88ef7c75b8 #3098 IfcCurveSegment and IfcClothoid handling (?) 2023-09-16 22:23:04 +02:00
Thomas Krijnen 79d456bbf1 mapping: always overwrite orientation of loop as facebound 2023-09-14 21:58:46 +02:00
Thomas Krijnen 380cf4eca5 cgal kernel: permissiveness for multiple outer bounds in face 2023-09-14 21:58:06 +02:00
Thomas Krijnen 179e3049dd cgal kernel: Continue with invalid state after triangulation 2023-09-14 21:57:23 +02:00
Thomas Krijnen 5bead4b219 #2805 Apply changes to v0.8 geometry mapping as well 2023-09-14 11:33:23 +02:00
Thomas Krijnen cae5a80397 Apply e9d0b8ab6 part of Serialization 2023-09-14 10:07:22 +02:00
Thomas Krijnen 02864f96e0 #2819 Handle periodic bspline curves in serialization 2023-09-14 10:03:19 +02:00
Thomas Krijnen 085d420d7c #2819 Mark rep id as AdvancedBrep 2023-09-14 10:03:18 +02:00
Dirk Olbrich 43b525e7e7 cmake: add use of ccache 2023-09-14 09:29:20 +02:00
Dirk Olbrich 1534e5cef5 cmake: fix regex for option flags 2023-09-14 09:29:20 +02:00
Dirk Olbrich 1263f3c4d3 cmake: move all macros/functions into utility file 2023-09-14 09:29:20 +02:00
Dirk Olbrich b3d10ce43e clang-tidy: add basic checks 2023-09-14 09:29:20 +02:00
Dirk Olbrich 66a0b56443 cmake: bump version and add compile commands 2023-09-14 09:29:20 +02:00
Dirk Olbrich e341fb9892 clangd: gitignore cache 2023-09-14 09:29:20 +02:00
Thomas Krijnen eca4eba747 Remove logging statement 2023-09-14 09:27:26 +02:00
Thomas Krijnen 727ea55315 Apply ifcparse/ part of '65cb47e2d892d84c0d3d8e89ba157360c6902c7f' 2023-09-14 09:27:08 +02:00
Thomas Krijnen d7951668e9 Case sensitivity on entity str comparison from cmd line https://sourceforge.net/p/ifcopenshell/discussion/1782717/thread/2bf3324a7f 2023-09-14 09:21:12 +02:00
Dirk Olbrich 8bb0ffd2c7 ifcparse: fix compiler warning -Wignored-qualifiers 2023-09-14 09:21:11 +02:00
Thomas Krijnen 1641ad0047 #2805 IFC4X3 codegen 2023-09-14 09:21:10 +02:00
Thomas Krijnen a40e359620 #2805 Pasta errors 2023-09-14 09:14:32 +02:00
Thomas Krijnen b374454f3a #2805 template keyword for gcc 2023-09-14 09:14:32 +02:00
Thomas Krijnen b4ee981134 #2805 Rerun codegen 2023-09-14 09:14:27 +02:00
Thomas Krijnen 5dabcbb944 #2805 Use dynamic cast for generalize() due to virtual inheritance of selects 2023-09-14 09:14:21 +02:00
Thomas Krijnen 39c1face4d #2805 update hierarchy helper 2023-09-14 09:14:21 +02:00
Thomas Krijnen 6180627acd #2805 rerun codegen 2023-09-14 09:14:16 +02:00
Thomas Krijnen 1a014046a9 #2805 rerun codegen 2023-09-14 09:14:08 +02:00
Thomas Krijnen c0abaa36f4 fix syntax error on gcc 2023-09-14 09:14:01 +02:00
Thomas Krijnen db3a6c8ef7 typename :( 2023-09-14 09:14:01 +02:00
Thomas Krijnen 52421a6398 Fix IfcFile::getInverse<T>() 2023-09-14 09:14:00 +02:00
Thomas Krijnen 063bb0a017 #3139 Capture parsed selected simple type values 2023-09-14 09:14:00 +02:00
Shohei Kunimatsu 1767b09bbc Fix wrong attribute name usage (ValueComponent -> UnitComponent) in IfcFile::getUnit 2023-09-14 09:14:00 +02:00
Thomas Krijnen 235c32875d Use plane eq snapping for boolean ops in cgal and other strategies in addition to minkowsky sum dilation 2023-09-13 22:05:23 +02:00
Thomas Krijnen 5eff7178da Restructure cgal shape triangulation 2023-09-13 22:05:22 +02:00
Thomas Krijnen 0116be1386 Use geobim tooling as a provisional iterator adaptor 2023-09-13 22:05:22 +02:00
Dirk Olbrich 8d85aaba6d cmake: reset to c++17 2023-09-11 11:40:20 +02:00
Dirk Olbrich 309a29faf2 cmake: reapply changes for cgal from v0.8 2023-09-11 11:40:20 +02:00
Dirk Olbrich 6b692d8772 cmake: merge 'v0.7.0' into 'v0.8.0' 2023-09-11 11:40:20 +02:00
Thomas Krijnen a393d694df Update submodule 2023-09-11 11:37:08 +02:00
Thomas Krijnen 4127247230 Reference correct cgal kernel impl and build wrapper with /force:multiple as well 2023-08-26 13:42:42 +02:00
Thomas Krijnen 4bb3cc5c90 Fix transformation in serialization element, accept geometry library in more geom functions 2023-08-26 11:35:23 +02:00
Thomas Krijnen 5336b2f987 Implement shape serialization for cgal, possibility to supply geometry library to iterator in py 2023-08-25 21:46:32 +02:00
krande 3f4d183680 ready for PR 2023-08-03 16:27:29 +08:00
krande 85943c8086 add platform conda pkg dir in matrix 2023-08-03 16:27:29 +08:00
krande a67bb8b2ff add platform specific anaconda uploads 2023-08-03 16:27:29 +08:00
krande 339aea0295 ready v0.8 branch for conda daily PR 2023-08-03 16:27:29 +08:00
Thomas Krijnen dad5845db7 Fix compilation of gserver 2023-08-01 11:52:11 +08:00
Thomas Krijnen d34b1e9545 Fix compilation of wrapper 2023-08-01 08:56:16 +08:00
Thomas Krijnen b7f73153cc Update unused filter() function 2023-07-31 16:01:29 +08:00
Thomas Krijnen 73fdeaf2a7 Fully qualify namespace 2023-07-31 15:01:36 +08:00
Thomas Krijnen 65a5646bf0 Major update: taxonomy shared pointers, collection type safety, work towards hashing 2023-07-27 16:42:06 +08:00
Thomas Krijnen 98a73f1646 Add occt build script patch for V7_7_1 2023-04-10 14:47:30 +02:00
Thomas Krijnen 9af7d33814 Update build-all.py 2023-04-10 14:31:20 +02:00
Thomas Krijnen eeddd5127b Update occt version number on win 2023-04-10 14:28:30 +02:00
Thomas Krijnen 8329a1dea1 Use taxonomy::matrix4 instead of Eigen::Matrix4d in profile helper which has default constructor to identity 2023-04-10 14:22:43 +02:00
Thomas Krijnen 11a515a025 Improve error reporting in test_wall_opening.py 2023-04-10 14:22:43 +02:00
Thomas Krijnen 09f6992c65 Fix linking of wrapper on GCC 2023-04-09 19:28:57 +00:00
Thomas Krijnen 933f7fced2 Merge OCCT 7.6+ compatibility 2023-04-09 19:28:37 +00:00
Thomas Krijnen ed00fc282a Update nix build script to OCCT 7.7.1 2023-04-09 19:27:58 +00:00
Thomas Krijnen d12d14e7f2 Experiment with simple_cartesian<double> kernel 2023-04-03 13:34:35 +02:00
Thomas Krijnen 49416808d4 Make use of identity in faceset helper 2023-04-03 13:33:22 +02:00
Thomas Krijnen 9d5fe1fee4 Fix some mapping errors 2023-04-03 13:31:52 +02:00
Thomas Krijnen cc223dd5b4 Add identity int to taxonomy item 2023-04-03 13:31:22 +02:00
Thomas Krijnen 2ac66571b0 Update build-all python versions 2023-04-01 13:51:12 +02:00
Thomas Krijnen 48798ae07d Use linker groups on gcc to fix geomserver build 2023-03-31 21:58:53 +02:00
aothms 99abc6e0e2 Fix errors on clang 2023-03-31 15:19:39 -04:00
Thomas Krijnen a3e3a6bd0c Update build-all.py 2023-03-31 15:29:21 +02:00
Thomas Krijnen b3f0140bb5 Also support exporting OBJ exterior shell 2023-03-31 15:19:54 +02:00
Thomas Krijnen b8c6bda006 Update cd.yml 2023-03-31 13:04:01 +02:00
Thomas Krijnen 64ff23c8f3 Update ci.yml 2023-03-31 13:03:25 +02:00
Thomas Krijnen 7e2fb6d578 Update cd.yml 2023-03-31 12:31:16 +02:00
Thomas Krijnen cd6967cf2b Return axis rep even when assigned to model context 2023-03-31 12:28:22 +02:00
Thomas Krijnen 3e69f061ea Fix for msb without voids 2023-03-31 12:28:22 +02:00
Thomas Krijnen ab99a0486d Fix retrieval of native element 2023-03-31 12:28:22 +02:00
Thomas Krijnen 442ba56972 Proceed with citygml conversion integration 2023-03-31 12:28:22 +02:00
Thomas Krijnen 12142568c2 Update ci-py-only.yml 2023-03-30 14:57:28 +02:00
Thomas Krijnen ab206da885 Update ConversionSettings.h 2023-03-30 14:29:06 +02:00
Thomas Krijnen 348a333323 Update ConversionSettings.h 2023-03-30 14:28:25 +02:00
Thomas Krijnen 7fb921e5d0 Update cd.yml 2023-03-30 11:54:00 +02:00
Thomas Krijnen a1f48da120 Update ci-py-only.yml 2023-03-30 11:53:57 +02:00
Thomas Krijnen 11a21e5d3f Update ci.yml 2023-03-30 11:53:53 +02:00
Thomas Krijnen 5b2f7653eb Integerate cityjson converter 2023-03-30 11:29:09 +02:00
Thomas Krijnen f1ce5f17e8 Merge remote-tracking branch 'origin/v0.7.0' into v0.8.0 2023-03-29 18:06:50 +02:00
Thomas Krijnen fc05c096f6 Undef var rrrors after merge 2023-03-29 15:56:41 +02:00
Thomas Krijnen 2c0e791c6e Rerun codegen 2023-03-29 15:36:07 +02:00
Thomas Krijnen c32c88b1a0 Merge remote-tracking branch 'origin/v0.7.0' into v0.8.0 2023-03-29 12:55:05 +02:00
Thomas Krijnen 05a7aac62e Prevent double counting elements in single threaded mode 2023-03-28 15:20:54 +02:00
Thomas Krijnen b108452cb1 Compilation error 2023-03-28 10:01:09 +02:00
Thomas Krijnen f803a38fbb Revert "Some warnings"
This reverts commit 468d8effc8.
2023-03-27 21:22:04 +02:00
Thomas Krijnen 468d8effc8 Some warnings 2023-03-27 21:09:25 +02:00
Thomas Krijnen 625ce773c5 Fix segfault in loop.cpp on empty instance 2023-03-27 21:08:52 +02:00
Thomas Krijnen 635f3ca30e Rerun codegen 2023-03-27 14:05:40 +02:00
Thomas Krijnen 96fbe9e5b6 String pooling and reducing duplication in schema codegen 2023-03-27 14:04:32 +02:00
Thomas Krijnen c964559b91 taxonomy string formatting 2023-03-27 14:02:53 +02:00
Thomas Krijnen 1adcce509f Presentation style handling for 4.3 2023-03-27 14:02:21 +02:00
Thomas Krijnen b957e629b5 Update wrapper code 2023-03-22 15:25:14 +01:00
Thomas Krijnen 031694af2b Make cgal optional 2023-03-22 11:47:00 +01:00
Thomas Krijnen 2b1b79bf1c Make occt optional 2023-03-22 11:17:14 +01:00
Thomas Krijnen cb35378a73 4x3 segment compatibilty 2023-03-22 09:55:04 +01:00
Thomas Krijnen 236f470ae6 Update geom server 2023-03-22 09:28:02 +01:00
Thomas Krijnen de93ad1e92 Duplicate const 2023-03-22 09:12:19 +01:00
Thomas Krijnen 4d5a77d8e3 Ambiguous overload 2023-03-22 09:02:57 +01:00
Thomas Krijnen 358b120108 Case sensitivity 2023-03-22 08:45:30 +01:00
Thomas Krijnen 4b36f9a8f9 Update ci.yml 2023-03-21 20:38:43 +01:00
Thomas Krijnen 7594aa8d0c Update ci-py-only.yml 2023-03-21 20:38:19 +01:00
Thomas Krijnen b92fa5eab2 Proceed with merge 2023-03-21 20:26:11 +01:00
Thomas Krijnen c78b2893de Proceed with merge 2023-03-21 20:15:01 +01:00
Thomas Krijnen cfb0eda067 Fix eigen installs 2022-11-15 22:19:24 +01:00
Thomas Krijnen a85571979e Merge branch 'v0.8.0' into v0.8.0-merge 2022-11-15 15:11:00 +01:00
Thomas Krijnen ccde605029 File renames, build script and cmake updates 2022-11-15 13:19:24 +01:00
Thomas Krijnen 6d59e6ea90 Fixes for transform and mapped item reuse in taxonomy 2020-07-09 22:09:54 +02:00
Thomas Krijnen 0e2bac5e3b Shape reuse based on std::less 2020-07-08 12:07:10 +02:00
Thomas Krijnen 6aafff2c40 taxonomy printing and different trimmed curve orientation handling 2020-06-21 15:15:49 +02:00
Thomas Krijnen eacea738f9 move dispatch curve creation 2020-06-11 20:51:22 +02:00
Thomas Krijnen 7f60ea9c52 cgal curve implementations 2020-06-11 20:51:08 +02:00
Thomas Krijnen b85e03374a Workaround singularity issues in gp_GTrsf 2020-06-11 20:50:50 +02:00
Thomas Krijnen 939d1a6c4f implement triangulation transformation in eigen 2020-06-11 20:50:13 +02:00
Thomas Krijnen 018f1ea1d4 fix radius 2020-06-11 20:49:53 +02:00
Thomas Krijnen 52a3d627e2 mapped item implementation 2020-06-11 20:49:44 +02:00
Thomas Krijnen 109131961f heap alloc for eigen types for alignment issues 2020-06-11 20:48:35 +02:00
Thomas Krijnen 185b4ef9fa shell based surface model 2020-06-11 20:44:29 +02:00
Thomas Krijnen 0fa05f7339 Note on segfault 2020-04-29 10:06:23 +02:00
Thomas Krijnen 0b659ce4f6 Update CMakeLists.txt 2020-04-28 13:54:41 +02:00
aothms 55024e1e8a Update cmake install directives 2020-04-05 09:41:20 +00:00
aothms 53477cc8e2 Small fixes for gcc 2020-04-03 15:05:50 +00:00
aothms bba7295edf Small fixes for gcc 2020-04-03 14:56:46 +00:00
Thomas Krijnen 9b391d3d47 Remove auto from lambda parameter declaration 2020-04-03 16:24:07 +02:00
Thomas Krijnen 5d21d26f24 Fix glTF transformation 2020-04-03 16:21:16 +02:00
Thomas Krijnen 47b2da6082 Fix gltf serializer compilation 2020-04-03 14:23:23 +02:00
aothms 63b9b7baa7 Nullptr return types 2020-04-03 12:01:58 +00:00
aothms 33e092c8d5 Update occt tree 2020-04-03 12:01:30 +00:00
aothms 4d23a442be Eigen in nix build 2020-04-03 12:00:48 +00:00
Thomas Krijnen 3113976ee5 Implement fillets and a couple of profiles 2020-03-30 14:31:59 +02:00
Thomas Krijnen 048ee84ae6 Propagate failure on representation to product 2020-03-27 14:06:43 +01:00
Thomas Krijnen 4aef5dbd10 Small fixes 2020-03-23 09:20:01 +01:00
Thomas Krijnen 60b160461e Update README 2020-02-01 11:23:01 +01:00
Thomas Krijnen df6852d2ac space boundaries 2020-02-01 11:16:09 +01:00
Thomas Krijnen 6b250b3ccf manifold solid brep 2020-02-01 11:15:40 +01:00
Thomas Krijnen bca78e086d Storey containment fuzziness 2020-01-31 11:58:14 +01:00
Thomas Krijnen cbf147b9f9 area overlap 2020-01-31 11:57:52 +01:00
Thomas Krijnen a805496895 Disable polyline point removal 2020-01-29 17:29:33 +01:00
Thomas Krijnen b91a34c8c6 Track time; fixes for wall connectivity check 2020-01-29 14:57:49 +01:00
Thomas Krijnen e448312d41 Reporting for wall connectivity 2020-01-27 10:42:01 +01:00
Thomas Krijnen 1d6f20c48d Fix wall connectivity 2020-01-26 17:11:14 +01:00
Thomas Krijnen 7a8a5e2ebb Dont close polylines automatically 2020-01-26 17:11:02 +01:00
Thomas Krijnen b6a7ba1e1c Fix for open polyhedra 2020-01-26 13:58:02 +01:00
Thomas Krijnen 060c35939a Wall connectivity 2020-01-26 13:12:19 +01:00
Thomas Krijnen 030ea06aac Fix placement on containment case 2020-01-25 14:24:18 +01:00
Thomas Krijnen 3575aded90 containment check 2020-01-21 16:26:00 +01:00
Thomas Krijnen 487be4b65e Correct projection to middle surface 2019-12-14 16:17:36 +01:00
Thomas Krijnen 612fb8d8d5 Average space boundary construction in Nef polyhedra 2019-12-14 14:50:20 +01:00
Thomas Krijnen a729f489ee Fix double free 2019-12-14 14:41:41 +01:00
Thomas Krijnen 59b04c7857 Validation work using Nef 2019-12-14 13:25:30 +01:00
Thomas Krijnen a5de17228a Work towards space boundaries fix 2019-10-06 19:03:31 +02:00
Thomas Krijnen f391b425ba dilate as boolean 2019-10-06 09:11:44 +02:00
Thomas Krijnen 389964c9f4 cgal boolean result and minkowski sum for dilation 2019-09-25 15:30:11 +02:00
Thomas Krijnen 11ad1b2cc5 cgal extrusion 2019-09-24 15:46:50 +02:00
Thomas Krijnen d91ac7363f Mark loops from profile_helper as external 2019-09-22 16:02:48 +02:00
Thomas Krijnen 0085393884 Take into account vertex welding 2019-09-22 16:02:22 +02:00
Thomas Krijnen 61403e878e Try catch face normal computation 2019-09-22 16:02:05 +02:00
Thomas Krijnen a1671448db Default static runtime to off. 2019-09-22 15:05:14 +02:00
Thomas Krijnen 474786c4c5 IfcArbitraryProfileDefWithVoids 2019-09-22 10:32:03 +02:00
Thomas Krijnen 1f4bc28e2b Product placements and openings 2019-09-19 10:11:01 +02:00
Thomas Krijnen 3cde411e1b halfspaces and boolean ops 2019-09-18 16:35:26 +02:00
Thomas Krijnen a447dc6208 Work towards trimmed curves 2019-09-16 19:30:11 +02:00
Thomas Krijnen 3731c95728 Mapped item 2019-09-16 17:40:55 +02:00
Thomas Krijnen d59f3e9932 Polyline 2019-09-16 15:40:13 +02:00
Thomas Krijnen 04bce57e80 Fix placements 2019-09-16 10:25:39 +02:00
Thomas Krijnen e3041219b5 Further work on profiles 2019-09-15 15:59:05 +02:00
Thomas Krijnen 0c54bdcd54 Cleanup 2019-09-04 09:10:57 +02:00
Thomas Krijnen bed9c44883 mark bounds as external based on entity type 2019-09-01 18:46:11 +02:00
Thomas Krijnen 8efb86420e Compilation errors 2019-09-01 16:48:50 +02:00
Thomas Krijnen 7f8bed9922 Begin reenable CGAL kernel 2019-09-01 16:29:00 +02:00
Thomas Krijnen 816c0d3618 Fix placements 2019-09-01 13:36:46 +02:00
Thomas Krijnen 2e7c43f590 Work on placements 2019-09-01 10:36:49 +02:00
Thomas Krijnen ca2a4f243d initialize units in mapping 2019-09-01 09:18:29 +02:00
Thomas Krijnen 64ee3e9af3 closed shell; placements; faceset_helper 2019-08-28 09:54:20 +02:00
Thomas Krijnen 3bfe3b9ab5 Seperate map() and map_impl() for automatic taxonomy item <> ifc instance mapping 2019-08-28 09:24:00 +02:00
Thomas Krijnen 640b08159f Work on shells 2019-08-27 18:59:19 +02:00
Thomas Krijnen f17036313d Work on face boundaries 2019-08-26 17:19:06 +02:00
Thomas Krijnen 8b4900b0e1 Work on shell conversino 2019-08-25 16:07:10 +02:00
Thomas Krijnen 41d7fb32da Provide collection implementation in abstract_kernel 2019-08-25 12:00:04 +02:00
Thomas Krijnen 8ec2019003 Fix enumeration order 2019-08-25 11:50:40 +02:00
Thomas Krijnen 26d7af1450 Implement additional mappings 2019-08-24 18:32:30 +02:00
Thomas Krijnen 2f1861db7b Declare conversions for reuse detection 2019-08-24 17:36:17 +02:00
Thomas Krijnen 94aa7dfab4 Close to working executable 2019-08-18 15:53:26 +02:00
Thomas Krijnen 8f88c601c6 IfcConvert links on windows 2019-08-18 14:31:22 +02:00
Thomas Krijnen 85171bb5df Remove ConversionResultPlacement, fix some errors 2019-08-18 08:37:59 +02:00
Thomas Krijnen 585b89be87 Fix compilation of serializers and convert 2019-08-17 09:47:07 +02:00
Thomas Krijnen ddeaf5a375 More work 2019-08-16 17:40:13 +02:00
Thomas Krijnen dae35f59ce Implement mapping of IfcExtrudedAreaSolid 2019-08-04 11:27:10 +02:00
Thomas Krijnen 467ebb68a3 First step at reorganizing 2019-08-04 09:36:31 +02:00
Thomas Krijnen c8def0474e Update examples 2019-08-03 16:11:02 +02:00
Thomas Krijnen f6aa7c8930 Additional merge issues 2019-08-03 15:43:14 +02:00
Thomas Krijnen 92f7d26835 Work on Python wrapper 2019-08-03 15:09:50 +02:00
Thomas Krijnen 5ccc7213a0 Merge remote-tracking branch 'origin/v0.6.0' into v0.7.0 2019-08-03 14:50:08 +02:00
Thomas Krijnen fd9c57b77d Merge branch 'v0.6.0' into v0.7.0 2019-08-02 17:56:45 +02:00
Thomas Krijnen b08e52bd9b Merge remote-tracking branch 'origin/v0.6.0' into v0.7.0 2019-08-02 13:23:41 +02:00
Thomas Krijnen 0cb2c81227 Rough draft of a client application for the C++ IfcGeomServer binary 2019-05-15 17:13:29 +02:00
Thomas Krijnen bbf271a10e Fix volume calculation with voxels in geom server 2019-05-15 17:07:16 +02:00
Thomas Krijnen d45d843173 Fix CMake error 2019-05-15 14:27:31 +02:00
Thomas Krijnen 4fa283fb3c Write voxelization logic in geom server 2019-05-15 13:57:50 +02:00
Thomas Krijnen 4400a6ea4f Make use of cgal configurable 2019-05-15 11:13:58 +02:00
Thomas Krijnen 9cb321e73d Move include up for M_PI def on MSVC 2019-05-10 14:38:42 +02:00
Thomas Krijnen e566af84c2 Fix geom server for schema agnosticism 2019-05-10 14:35:42 +02:00
Thomas Krijnen 310013dfe4 Fix compilation error from merge 2019-05-10 14:35:20 +02:00
Thomas Krijnen de3633e742 Cmake find voxels 2019-05-10 14:35:00 +02:00
Thomas Krijnen a24ad023a5 CGAL win build script 2019-05-10 13:46:13 +02:00
Thomas Krijnen adc0e92528 Fix remaining conflict 2019-05-10 13:42:16 +02:00
Thomas Krijnen 46ba5661d6 Merge branch 'v0.6.0' into v0.7.0 2019-05-10 13:37:42 +02:00
Thomas Krijnen 33bcf786fd MPIR and MPFR in win build script 2019-05-03 10:46:59 +02:00
Thomas Krijnen 8e6a6ec56d Add voxelization_toolkit to win build script 2019-04-30 14:36:55 +02:00
Thomas Krijnen b862f633db Fix voxel library in nix build script 2019-04-30 13:24:28 +02:00
Thomas Krijnen f9e839817d Add opensourceBIM/voxel to nix build script 2019-04-27 14:37:31 +02:00
Thomas Krijnen a0c01ff756 Merge branch 'v0.6.0' into v0.7.0
# Conflicts:
#	cmake/CMakeLists.txt
#	src/ifcconvert/IfcConvert.cpp
#	src/ifcgeom/IfcGeomRepresentation.h
#	src/ifcgeom/IfcRepresentationShapeItem.h
#	src/ifcgeom/kernels/opencascade/IfcGeomFunctions.cpp
#	src/ifcgeom/schema_agnostic/IfcGeomRepresentation.cpp
#	src/ifcgeom/schema_agnostic/Kernel.cpp
#	src/ifcgeom/schema_agnostic/Kernel.h
#	src/ifcgeomserver/IfcGeomServer.cpp
#	src/serializers/schema_dependent/XmlSerializer.cpp
2019-04-26 15:07:50 +02:00
Thomas Krijnen 5b066c9f95 Don't convert to Nef if there are no voids 2019-01-25 15:19:52 +01:00
Thomas Krijnen 3afb9169b1 Implement missing virtual function in CgalKernel 2019-01-25 14:25:34 +01:00
Thomas Krijnen 24b552a822 Merge fixes 2019-01-23 17:27:13 +01:00
Thomas Krijnen 884064f213 Merge remote-tracking branch 'cgal/cgal' into v0.7.0 2019-01-23 15:44:19 +01:00
Thomas Krijnen 4d39dbca2a Build static cgal, fix null pointer access 2019-01-23 15:10:20 +01:00
Thomas Krijnen 30479ca0a6 Fixes for compilation of cgal kernel 2019-01-23 12:34:21 +01:00
Thomas Krijnen a7a1ad129e Merge commit '6b47e9ca1d18df4b1cd2c66e488ad91f9730ecdf' into v0.7.0
# Conflicts:
#	cmake/CMakeLists.txt
#	nix/build-all.py
#	test/input
2019-01-22 13:00:49 +01:00
Thomas Krijnen bea627d01e Merge commit '6b47e9ca1d18df4b1cd2c66e488ad91f9730ecdf' into v0.7.0 2019-01-22 12:47:21 +01:00
Thomas Krijnen 059a1cb14b Merge commit '4d12bf7e8df4bd144526eeb5994802d308b40297' into v0.7.0 2019-01-22 12:38:02 +01:00
Thomas Krijnen 8c5349feaa Introduce AbstractKernel 2019-01-20 13:16:42 +01:00
Thomas Krijnen fa0a33f3c0 Option to select Kernel from IfcConvert 2019-01-19 12:39:47 +01:00
Thomas Krijnen 5a7c7ed048 Shuffle project structure 2019-01-18 16:43:38 +01:00
Thomas Krijnen 16d6420352 More work on enabling cgal kernel 2019-01-18 15:19:00 +01:00
Thomas Krijnen d804575974 Cgal kernel skeleton 2019-01-18 12:10:18 +01:00
Thomas Krijnen ad24b6be0f Isolate (most of the) geometry processing code into separate opencascade kernel 2019-01-18 11:23:19 +01:00
Thomas Krijnen 0072e1f247 CMake CGAL version of IfcGeom 2019-01-16 14:44:43 +01:00
Thomas Krijnen 116b80cf91 Fix MPFR download location 2019-01-16 14:41:34 +01:00
Thomas Krijnen 208f6d4d74 Small fixes to build script 2019-01-16 14:18:36 +01:00
Thomas Krijnen a0dfdc78ef Add cgal to IfcGeom deps 2019-01-16 14:06:17 +01:00
Thomas Krijnen cf2dd2aa8d Add GMP MPFR CGAL to build script 2019-01-16 14:04:05 +01:00
Thomas Krijnen 6737b54457 Add GMP MPFR CGAL to build script 2019-01-16 13:59:10 +01:00
Thomas Krijnen 9ae55ab303 Small fixes to transformations 2017-06-06 17:12:46 +02:00
Ken Arroyo Ohori 8baf6197d5 Merge pull request #16 from kenohori/cgal
Validation code to catch more cases of invalid objects
2017-04-25 10:22:33 -05:00
Ken Arroyo Ohori 42f23a786f Output all errors as separate files 2017-04-25 13:45:18 +02:00
Ken Arroyo Ohori 8b539d2b93 Requirement for self-intersection tests 2017-04-25 13:44:57 +02:00
Ken Arroyo Ohori b732759388 Comprehensive validation code for opening subtractions 2017-04-25 13:44:34 +02:00
Ken Arroyo Ohori 02244400ab Remove old debug code 2017-04-25 13:43:55 +02:00
Ken Arroyo Ohori 85a36738d2 Comment out triangulation code 2017-04-25 13:42:38 +02:00
Ken Arroyo Ohori 164e67a50b Catching some more CGAL errors, allow non-closed meshes, start of new code to triangulate faces 2017-04-21 15:43:19 +02:00
Ken Arroyo Ohori de83633891 Merge pull request #15 from kenohori/cgal
Catching some errors during conversion to/from Nef, tapered extrusions
2017-04-12 23:10:46 -05:00
Ken Arroyo Ohori 9f2a617ad7 Catch a few nasty cases in triangulation, more efficient to only compute face normals 2017-04-10 18:54:30 -05:00
Ken Arroyo Ohori 26bd03e407 Ditto 2017-04-10 18:53:52 -05:00
Ken Arroyo Ohori 248c73c2ab Catch failures to convert Nef to Polyhedron_3 2017-04-10 18:53:28 -05:00
Thomas Krijnen 8d9acfa677 Attempt to fix travis build w/ CGAL 2017-04-06 15:23:45 +02:00
Thomas Krijnen 7b7f9b4852 Attempt to fix travis build w/ CGAL 2017-04-06 14:57:10 +02:00
Thomas Krijnen 7189219aa4 Attempt to fix travis build w/ CGAL 2017-04-06 14:44:57 +02:00
Ken Arroyo Ohori f03a228280 Merge pull request #3 from aothms/cgal
Thomas fixed the transformations
2017-04-05 18:07:32 -05:00
Thomas Krijnen 91e5b337d3 Reverse matrix multiplication order 2017-04-05 16:06:07 +02:00
Thomas Krijnen 009f50abe1 Fix compilation on MSVC 2017-04-05 15:57:21 +02:00
Ken Arroyo Ohori c9267d7ace Fixed orientation bug in tapered extrusions 2017-03-30 21:11:05 -06:00
Ken Arroyo Ohori 4a340027bf IfcExtrudedAreaSolidTapered (with problems?) 2017-03-30 20:12:23 -06:00
Ken Arroyo Ohori 612f8f36db Merge pull request #14 from kenohori/cgal
Bugfixes + some validation code when creating New polyhedra
2017-03-30 19:16:48 -06:00
Ken Arroyo Ohori c1887f3f1f And the rest 2017-03-30 19:16:11 -06:00
Ken Arroyo Ohori 71ad7dd4bc Forgot one line 2017-03-30 19:06:47 -06:00
Ken Arroyo Ohori ed9676ed38 Squashed some bugs 2017-03-30 19:04:39 -06:00
Ken Arroyo Ohori a6195290f5 Merge pull request #13 from kenohori/cgal
Move shapes back to Polyhedron_3, more IFC entities supported, bugfixes
2017-03-23 20:33:52 -06:00
Ken Arroyo Ohori 583c334802 Removed sphere radius at some point 2017-03-23 20:31:41 -06:00
Ken Arroyo Ohori f8f4db72ec IfcDerivedProfileDef 2017-03-23 20:25:54 -06:00
Ken Arroyo Ohori dd206a2a52 A few more simple IFC classes to fill in things 2017-03-23 20:20:43 -06:00
Ken Arroyo Ohori 12967790ba Switched back to Polyhedron_3 for shapes. Should be checked. 2017-03-23 19:49:15 -06:00
Ken Arroyo Ohori d0b71a2e57 Merge pull request #12 from kenohori/cgal
Reorganisation, export of non-simple New polyhedra, (very slow) solution to create open meshes
2017-03-20 20:59:19 -06:00
Ken Arroyo Ohori 4061f93560 Export non-simple Nef too 2017-03-20 20:57:17 -06:00
Ken Arroyo Ohori 71d7bbd6ba Ordering things… 2017-03-20 20:06:48 -06:00
Ken Arroyo Ohori 62ca6f6a7d Checked shapes with styles. Found bug? 2017-03-20 16:45:27 -06:00
Ken Arroyo Ohori 8090bb4c00 Shapes with styles in separate file 2017-03-20 16:35:14 -06:00
Ken Arroyo Ohori cf6bd5a629 Enabled missing Cartesian transformations 2017-03-20 16:31:06 -06:00
Ken Arroyo Ohori cf9605f108 Missing Shapes, support for voids 2017-03-20 15:56:31 -06:00
Ken Arroyo Ohori 507d4778fa Merge pull request #11 from kenohori/cgal
Bugfixes in placements, half space solids and validation code
2017-03-17 19:27:34 -06:00
Ken Arroyo Ohori 95e6c14f39 Hack to solve issues with IfcHalfSpaceSolid. Not ideal. 2017-03-17 19:24:51 -06:00
Ken Arroyo Ohori 2bbe80fd28 Problems with extended kernel experiment, but this should be incorporated in any case 2017-03-17 16:12:24 -06:00
Ken Arroyo Ohori 0ffa633a6d Better validation 2017-03-16 19:30:39 -06:00
Ken Arroyo Ohori 30e88210b2 Simplified code by moving Nef creation outside 2017-03-16 19:20:41 -06:00
Ken Arroyo Ohori 98ce04ed64 Fix logic of transformations 2017-03-16 18:44:25 -06:00
Ken Arroyo Ohori d2aef0fcbd 2D Cartesian transformations (untested) 2017-03-13 22:32:12 -06:00
Ken Arroyo Ohori 38cbdbc0f4 Correct way to create trimmed parametric curves? 2017-03-13 20:22:19 -06:00
Ken Arroyo Ohori 83689a1cec Merge pull request #10 from kenohori/cgal
Basic support for (trimmed) curves
2017-03-13 19:29:20 -06:00
Ken Arroyo Ohori 81cb7f379e Ignore output files in /test/ 2017-03-13 19:26:54 -06:00
Ken Arroyo Ohori 7d16b725a3 IfcTrimmedCurve. Needs projection to closest point in curve? 2017-03-13 19:08:50 -06:00
Ken Arroyo Ohori 54331062c3 Basic curve types 2017-03-13 19:08:23 -06:00
Ken Arroyo Ohori 4419331710 Merge pull request #9 from kenohori/cgal
Fix issue with opening placements
2017-03-10 18:29:01 -06:00
Ken Arroyo Ohori 81a33309f3 Merge pull request #2 from aothms/cgal
Merge pull request #8 from kenohori/cgal
2017-03-10 18:28:17 -06:00
Ken Arroyo Ohori d02918070d Remove debug code 2017-03-10 18:26:15 -06:00
Ken Arroyo Ohori ac7099ab39 Fixed bug with opening placements 2017-03-10 18:21:15 -06:00
Ken Arroyo Ohori b5e79b2558 Debug code 2017-03-10 17:44:19 -06:00
Ken Arroyo Ohori b1df91ffd9 Merge pull request #8 from kenohori/cgal
More profiles (T, U, Z) and support for openings
2017-03-09 18:45:34 -06:00
Ken Arroyo Ohori 287fb9f0ed Convert openings and subtract them 2017-03-09 18:42:54 -06:00
Ken Arroyo Ohori 06c10dc4da Correct plane creation? 2017-03-09 17:04:37 -06:00
Ken Arroyo Ohori 3972727f9d Z profiles 2017-03-09 16:55:33 -06:00
Ken Arroyo Ohori 3e918180d2 U profiles 2017-03-09 16:46:09 -06:00
Ken Arroyo Ohori 0fbadc2985 T profiles 2017-03-09 16:29:14 -06:00
Ken Arroyo Ohori 8f89498a32 Merge pull request #1 from aothms/cgal
Merging back Thomas' latest changes
2017-03-09 09:46:48 -06:00
Thomas Krijnen 7bcd0d0a8d Apply transformation to IfcExtrudedAreaSolid 2017-03-09 15:35:29 +01:00
Thomas Krijnen 0596827b9d Fix null pointer access in tesselation of opencascade shape 2017-03-09 15:04:54 +01:00
Thomas Krijnen 619b4fbed5 Fix CGAL library linking on windows, conditional IfcTriangulatedFaceSet based on schema 2017-03-09 12:14:00 +01:00
Ken Arroyo Ohori deea0f6558 Merge pull request #7 from kenohori/cgal
Composite curves, some profiles (C, I, L)
2017-03-08 20:13:33 -06:00
Ken Arroyo Ohori 15e4e1952f I profiles (untested) 2017-03-08 20:11:45 -06:00
Ken Arroyo Ohori e922212357 L profiles 2017-03-08 19:55:17 -06:00
Ken Arroyo Ohori 0d36693780 C profiles 2017-03-08 19:38:25 -06:00
Ken Arroyo Ohori cb7ed51fc6 IfcCartesianTransformationOperator3DnonUniform (untested) 2017-03-07 20:00:32 -06:00
Ken Arroyo Ohori a3df0556aa Composite curves 2017-03-07 19:39:59 -06:00
Ken Arroyo Ohori 3f94d4af37 Skeleton for planes+halfspaces. Might be wrong. 2017-03-07 14:30:48 -06:00
Ken Arroyo Ohori 7f96b3a523 Merge pull request #6 from kenohori/cgal
Added several types of shapes and profiles
2017-03-07 13:55:15 -06:00
Ken Arroyo Ohori 27d8e86024 Hollow rectangle profiles, all tested now 2017-03-07 13:52:29 -06:00
Ken Arroyo Ohori 66048610e2 Rounded rectangles work now, def must be before rectangles 2017-03-07 13:41:04 -06:00
Ken Arroyo Ohori 31d4de228a Extrusions with holes (Nef) 2017-03-07 13:18:49 -06:00
Ken Arroyo Ohori 29021d8b06 Hollow circles 2017-03-07 13:04:22 -06:00
Ken Arroyo Ohori 1fb76a9749 Switched to normals per vertex per face 2017-03-07 12:50:06 -06:00
Ken Arroyo Ohori b299c27473 Switched to Nef_polyhedron_3. Some problems... 2017-03-06 19:28:12 -06:00
Ken Arroyo Ohori 64e385c361 Skeleton for IfcEdgeLoop and IfcOrientedEdge 2017-03-06 17:45:55 -06:00
Ken Arroyo Ohori 27b5fd0fc5 Debug code 2017-03-06 17:29:20 -06:00
Ken Arroyo Ohori 4f5ecee81e Removing duplicate points, IfcCartesianTransformationOperator3D with problems 2017-03-06 16:03:29 -06:00
Ken Arroyo Ohori ca19d447cc Zero-radius rounded rectangles 2017-03-06 15:03:57 -06:00
Ken Arroyo Ohori 484cea968e IfcTriangulatedFaceSet 2017-03-06 11:41:58 -06:00
Ken Arroyo Ohori 033a2e7482 IfcFaceBasedSurfaceModel 2017-03-06 11:28:57 -06:00
Ken Arroyo Ohori 1d3732aa62 IfcEllipseProfileDef 2017-03-06 11:23:37 -06:00
Ken Arroyo Ohori 584b2e5584 IfcTrapeziumProfileDef 2017-03-06 11:18:51 -06:00
Ken Arroyo Ohori 1bcc369c7a Rounded rectangles 2017-03-06 11:12:06 -06:00
Ken Arroyo Ohori 64bc8e9d4f Circular profiles, added missing transformation for rectangles 2017-03-06 10:52:57 -06:00
Ken Arroyo Ohori b9828b029c Right way to output more than one object 2017-03-03 15:25:45 -06:00
Ken Arroyo Ohori 749071601e Merge pull request #5 from aothms/ken_first_steps
Reorganised code, Boolean ops seem to work
2017-03-03 13:59:58 -06:00
Ken Arroyo Ohori bbe0b74f83 Boolean ops working? 2017-03-03 13:56:08 -06:00
Ken Arroyo Ohori efb8bce25a Didn’t save sphere output 2017-03-03 13:20:47 -06:00
Ken Arroyo Ohori c59ae03cb3 Fixed bug in cylinders/cones 2017-03-03 13:12:05 -06:00
Ken Arroyo Ohori 7145b1ae85 Some debugging code, checking transformations 2017-03-03 12:58:52 -06:00
Ken Arroyo Ohori 596c4f8b77 Adding some validation code 2017-03-03 09:58:17 -06:00
Ken Arroyo Ohori 302e7b2db8 IfcRightCircularCone 2017-03-02 18:42:10 -06:00
Ken Arroyo Ohori bece7053a0 IfcRightCircularCylinder 2017-03-02 18:39:18 -06:00
Ken Arroyo Ohori 82cd4056b7 IfcRectangularPyramid 2017-03-02 18:22:34 -06:00
Ken Arroyo Ohori 6297ff74f1 Boolean ops using Nef polyhedra (untested) 2017-03-02 18:11:11 -06:00
Ken Arroyo Ohori c9633273a6 Several more classes, needs testing 2017-03-02 17:11:58 -06:00
Ken Arroyo Ohori 2cb53a860d Entities for basic CSG 2017-03-02 15:09:05 -06:00
Ken Arroyo Ohori db85bebc1a Merge branch 'cgal' into ken_first_steps 2017-03-01 17:48:37 -06:00
Ken Arroyo Ohori 57fae25de8 Putting functions into files per geometric type 2017-03-01 17:48:19 -06:00
Thomas Krijnen 451ccd4e21 Merge pull request #4 from aothms/ken_first_steps
IfcManifoldSolidBrep and IfcConnectedFaceSet
2017-02-23 13:53:02 +01:00
Ken Arroyo Ohori b893f5a3f0 Take into account extrusion height 2017-02-22 18:15:27 -06:00
Ken Arroyo Ohori 64eb707996 Fixed issue with transformations? 2017-02-21 18:40:27 -06:00
Ken Arroyo Ohori c0732f5197 Trying to find out why placements don’t arrive at Triangulate() 2017-02-21 15:37:38 -06:00
Ken Arroyo Ohori e47d128b18 Brep and swept solid working now 2017-02-20 20:14:49 -06:00
Ken Arroyo Ohori 9d4463b73a Check for NULL placement 2017-02-13 15:26:06 -06:00
Ken Arroyo Ohori d9d5f17725 Should be working now 2017-02-13 11:45:17 -06:00
Ken Arroyo Ohori f4274e4b46 Skeleton for IfcExtrudedAreaSolid 2017-02-13 11:12:04 -06:00
Ken Arroyo Ohori b463dfe88a Changed --kernel parameter to --opencascade. Was conflicting with positional options for input. 2017-02-09 14:46:02 -06:00
Ken Arroyo Ohori 44634eb42d Remove implemented throws, add faces and materials 2017-02-08 17:12:56 -06:00
Ken Arroyo Ohori 1755752ab7 IfcAxis2Placement2D 2017-02-08 16:56:59 -06:00
Ken Arroyo Ohori 7051104bc7 Basic code to output triangulation, something goes wrong when getting materials... 2017-02-08 16:12:19 -06:00
Ken Arroyo Ohori 2894b0cb92 Nothing is a pointer now. Initialisation is easier… 2017-02-07 20:37:47 -06:00
Ken Arroyo Ohori 42b512960b Filling in most of the placement code. To check. 2017-02-07 20:25:04 -06:00
Ken Arroyo Ohori 96e9c8ecc1 Skeleton for IfcObjectPlacement and IfcAxis2Placement3D 2017-02-07 19:51:16 -06:00
Ken Arroyo Ohori bae84b6753 Directions as CGAL Vector_3, more robust points 2017-02-07 19:50:51 -06:00
Ken Arroyo Ohori e1702fc0cf Return value for transformation, still needs to be initialised somewhere… 2017-02-06 16:22:54 -06:00
Ken Arroyo Ohori 6aff3d0f3d Conversion result for breps 2017-02-06 16:22:36 -06:00
Thomas Krijnen 6b47e9ca1d Add GMP MPFR and CGAL include/libs to cmake and build script 2017-02-04 16:38:57 +01:00
Ken Arroyo Ohori 1525cf6bfc Polyhedra built with the incremental builder, IfcConvert crashes 2017-02-02 14:29:26 -06:00
Ken Arroyo Ohori 5724e1ac34 Face from IfcFace 2017-02-01 17:53:12 -06:00
Ken Arroyo Ohori f2a45b7057 Fixed pointer bug, wires seem okay now 2017-02-01 15:57:25 -06:00
Ken Arroyo Ohori 233aaeaca2 Points and wires 2017-01-31 19:03:15 -06:00
Ken Arroyo Ohori 9c21e05184 Skeleton reaching all the way up to points, to be filled in 2017-01-31 18:53:00 -06:00
Ken Arroyo Ohori 0821dd4702 Skeleton for IfcManifoldSolidBrep and IfcConnectedFaceSet 2017-01-27 18:40:38 -06:00
Ken Arroyo Ohori cac9c91c56 Mac metadata 2017-01-27 15:31:37 -06:00
Ken Arroyo Ohori a4264f3143 Replaced macros, added basic CGAL definitions 2017-01-27 15:31:22 -06:00
Thomas Krijnen 4d12bf7e8d Cgal kernel skeleton (#3)
Cgal kernel skeleton
2017-01-16 14:04:31 +01:00
Thomas Krijnen 3958204c1c Don't build Python wrapper on Travis 2017-01-13 20:51:12 +01:00
Thomas Krijnen d17f714dc5 Isolate geometry processing code into separate opencascade kernel 2017-01-13 20:51:12 +01:00
Thomas Krijnen 4fa7f293d6 cd to correct repository folder 2017-01-13 18:11:05 +01:00
Thomas Krijnen 7e3f96e410 Add GMP MPFR CGAL to build script 2017-01-09 17:14:49 +01:00
Thomas Krijnen 8018c9cc44 Add GMP MPFR CGAL to build script 2017-01-09 17:14:49 +01:00
1736 changed files with 1320744 additions and 85167 deletions
+24
View File
@@ -0,0 +1,24 @@
# We'll use defaults from the LLVM style with modifications
BasedOnStyle: LLVM
ColumnLimit: 0 # we do not enforce column lenght, please format responsibly
IndentWidth: 4
---
Language: Cpp
AllowShortEnumsOnASingleLine: false
AlwaysBreakTemplateDeclarations: Yes
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
SplitEmptyFunction: false
SplitEmptyRecord: false
SplitEmptyNamespace: false
IncludeBlocks: Regroup
InsertBraces: true
InsertNewlineAtEOF: true
PackConstructorInitializers: CurrentLine
PointerAlignment: Left
ReflowComments: false # keep licenze comment blocks
SortIncludes: CaseInsensitive
SpacesInLineCommentPrefix:
Maximum: 1
TabWidth: 4
+5
View File
@@ -0,0 +1,5 @@
Checks: 'bugprone-*,cert-*,clang-analyzer-*,readability-*'
WarningsAsErrors: ''
HeaderFilterRegex: ''
AnalyzeTemporaryDtors: false
FormatStyle: none
+6 -5
View File
@@ -16,7 +16,7 @@ jobs:
- run: echo ok go
build:
runs-on: ubuntu-20.04
runs-on: ubuntu-latest
needs: activate
steps:
- uses: actions/checkout@v2
@@ -29,7 +29,7 @@ jobs:
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 nlohmann-json3-dev
libhdf5-dev libcgal-dev nlohmann-json3-dev libeigen3-dev
-
name: ccache
@@ -50,8 +50,8 @@ jobs:
-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 \
-DPYTHON_INCLUDE_DIR:PATH=/usr/include/python3.10 \
-DPYTHON_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libpython3.10.so \
-DCOLLADA_SUPPORT=Off \
-DLIBXML2_INCLUDE_DIR=/usr/include/libxml2 \
-DLIBXML2_LIBRARIES=/usr/lib/x86_64-linux-gnu/libxml2.so \
@@ -63,6 +63,7 @@ jobs:
-DHDF5_INCLUDE_DIR=/usr/include/hdf5/serial \
-DGLTF_SUPPORT=On \
-DJSON_INCLUDE_DIR=/usr/include \
-DEIGEN_DIR=/usr/include/eigen3 \
../cmake
make -j $(nproc)
make install
@@ -80,7 +81,7 @@ jobs:
path: build/assets/Ifc*
deliver:
runs-on: ubuntu-20.04
runs-on: ubuntu-latest
needs: build
name: Docker Build, Tag, Push
+57
View File
@@ -0,0 +1,57 @@
name: ci-bcf-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: "0 0 18 * *"
push:
paths:
- '.github/workflows/ci-bcf-pypi.yml'
workflow_dispatch:
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
steps:
- uses: actions/checkout@v2 # https://github.com/actions/checkout
- uses: actions/setup-python@v2 # https://github.com/actions/setup-python
with:
python-version: '3.10' # 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
cd src/bcf &&
make dist
- name: Publish a Python distribution to PyPI
uses: ortega2247/pypi-upload-action@master
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
packages_dir: src/bcf/dist
-37
View File
@@ -1,37 +0,0 @@
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.10'
- name: Build package
run: |
cd src/bcf
pip install build
python -m build
- name: Test
run: |
cd src/bcf
make test
- name: Publish package
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_TOKEN }}
packages_dir: src/bcf/dist
+2 -2
View File
@@ -39,7 +39,7 @@ jobs:
strategy:
fail-fast: false
matrix:
pyver: [py37, py39, py310]
pyver: [py39, py310, py311]
config:
- {
name: "Windows Build",
@@ -62,7 +62,7 @@ jobs:
- uses: actions/setup-python@v2 # https://github.com/actions/setup-python
with:
architecture: 'x64' # optional x64 or x86. Defaults to x64 if not specified
python-version: '3.10'
python-version: '3.11'
- run: echo ${{ env.DATE }}
- name: Get current date
id: date
+48
View File
@@ -0,0 +1,48 @@
name: ci-bsdd-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: "0 0 18 * *"
workflow_dispatch:
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
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2 # https://github.com/actions/setup-python
with:
python-version: '3.11' # Version range or exact version of a Python version to use, using SemVer's version range syntax
- name: Compile
run: |
pip install build
cd src/bsdd &&
make dist
- name: Publish a Python distribution to PyPI
uses: ortega2247/pypi-upload-action@master
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
packages_dir: src/bsdd/dist
+48
View File
@@ -0,0 +1,48 @@
name: ci-ifcclash-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: "0 0 18 * *"
workflow_dispatch:
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
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2 # https://github.com/actions/setup-python
with:
python-version: '3.11' # Version range or exact version of a Python version to use, using SemVer's version range syntax
- name: Compile
run: |
pip install build
cd src/ifcclash &&
make dist
- name: Publish a Python distribution to PyPI
uses: ortega2247/pypi-upload-action@master
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
packages_dir: src/ifcclash/dist
+48
View File
@@ -0,0 +1,48 @@
name: ci-ifccsv-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: "0 0 18 * *"
workflow_dispatch:
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
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2 # https://github.com/actions/setup-python
with:
python-version: '3.11' # Version range or exact version of a Python version to use, using SemVer's version range syntax
- name: Compile
run: |
pip install build
cd src/ifccsv &&
make dist
- name: Publish a Python distribution to PyPI
uses: ortega2247/pypi-upload-action@master
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
packages_dir: src/ifccsv/dist
@@ -1,17 +1,10 @@
name: ci-ifcopenshell-conda-daily
name: ci-ifcopenshell-conda-daily-v0.8.0
on:
workflow_dispatch:
push:
paths:
- .github/workflows/ci-ifcopenshell-conda-daily.yml
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 * * *" # 11min before utc midnight every day
branches:
- v0.8.0
jobs:
activate:
@@ -33,19 +26,20 @@ jobs:
fail-fast: false
matrix:
pyver: [
{ name: py310, distver: '3.10'},
{ name: py311, distver: '3.11'}
{ name: py311, distver: '3.11'},
{ name: py312, distver: '3.12'}
]
platform: [
{ name: Windows, distver: windows-2022, upload: 'true' },
{ name: Linux, distver: ubuntu-22.04, upload: 'true' },
{ name: macOS, distver: macos-12, upload: 'true' }
{ name: win, distver: windows-latest, pkg_dir: 'win-64' },
{ name: linux, distver: ubuntu-latest, pkg_dir: 'linux-64' },
{ name: macOS, distver: macos-latest, pkg_dir: 'osx-64' }
]
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Download MacOSX SDK
- name: Download and extract 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 && \
@@ -53,18 +47,28 @@ jobs:
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
- uses: mamba-org/setup-micromamba@v1 # https://github.com/mamba-org/setup-micromamba
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' }}
environment-file: conda/environment.build.yml
create-args: >-
python=${{ matrix.pyver.distver }}
anaconda-client
- name: create conda package dist dir
run: |
conda-build . --python ${{ matrix.pyver.distver }} -c conda-forge --token ${{ secrets.ANACONDA_TOKEN }} --user ifcopenshell
working-directory: ./conda
mkdir -p ${{ github.workspace }}/dist
- name: build & test ifcopenshell
if: ${{ matrix.platform.upload == 'false' }}
run: |
conda-build . --python ${{ matrix.pyver.distver }} -c conda-forge
boa build . --python ${{ matrix.pyver.distver }} --no-remove-work-dir --output-folder '${{ github.workspace }}/dist'
working-directory: ./conda
- name: upload to anaconda
if: ${{ matrix.platform.name == 'win' }}
run: |
anaconda -t ${{ secrets.ANACONDA_TOKEN }} upload --force --user ifcopenshell '${{ github.workspace }}/dist/${{ matrix.platform.pkg_dir }}/*.tar.bz2'
- name: upload to anaconda
if: ${{ matrix.platform.name != 'win' }}
run: |
anaconda -t ${{ secrets.ANACONDA_TOKEN }} upload --force --user ifcopenshell ${{ github.workspace }}/dist/${{ matrix.platform.pkg_dir }}/*.tar.bz2
+3 -2
View File
@@ -1,6 +1,7 @@
name: ci-ifcopenshell-pypi
on:
workflow_dispatch:
schedule:
# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
@@ -35,7 +36,7 @@ jobs:
strategy:
fail-fast: false
matrix:
pyver: [py36, py37, py38, py39, py310, py311]
pyver: [py39, py310, py311, py312]
config:
- {
name: "Windows Build",
@@ -57,7 +58,7 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2 # https://github.com/actions/setup-python
with:
python-version: '3.10' # Version range or exact version of a Python version to use, using SemVer's version range syntax
python-version: '3.11' # 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
+48
View File
@@ -0,0 +1,48 @@
name: ci-ifcpatch-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: "0 0 18 * *"
workflow_dispatch:
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
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2 # https://github.com/actions/setup-python
with:
python-version: '3.11' # Version range or exact version of a Python version to use, using SemVer's version range syntax
- name: Compile
run: |
pip install build
cd src/ifcpatch &&
make dist
- name: Publish a Python distribution to PyPI
uses: ortega2247/pypi-upload-action@master
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
packages_dir: src/ifcpatch/dist
+48
View File
@@ -0,0 +1,48 @@
name: ci-ifctester-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: "0 0 18 * *"
workflow_dispatch:
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
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2 # https://github.com/actions/setup-python
with:
python-version: '3.11' # Version range or exact version of a Python version to use, using SemVer's version range syntax
- name: Compile
run: |
pip install build
cd src/ifctester &&
make dist
- name: Publish a Python distribution to PyPI
uses: ortega2247/pypi-upload-action@master
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
packages_dir: src/ifctester/dist
-98
View File
@@ -1,98 +0,0 @@
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
with:
key: ${GITHUB_WORKFLOW}
- name: Build ifcopenshell
run: |
sudo /usr/sbin/update-ccache-symlinks
mkdir build && cd build
PATH="/usr/lib/ccache:$PATH" cmake \
-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_add1" \
-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 xsdata numpy lxml
sudo /usr/bin/python -m pip install src/bcf --no-deps
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
sudo /usr/bin/python -m pip install tabulate
sudo /usr/bin/python -m pip install python-dateutil
- 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
+27 -23
View File
@@ -31,12 +31,25 @@ jobs:
- run: echo ok go
build:
runs-on: ubuntu-20.04
runs-on: ubuntu-latest
needs: activate
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.11
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install xmlschema xsdata numpy lxml pytest isodate lark networkx tabulate python-dateutil
pip install src/bcf --no-deps
pip install https://github.com/Andrej730/aud/archive/refs/heads/master-reduced-size.zip
- name: Install C++ dependencies
run: |
sudo apt update
@@ -49,11 +62,10 @@ jobs:
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
libhdf5-dev libcgal-dev libeigen3-dev
- name: ccache
uses: hendrikmuhs/ccache-action@v1
@@ -62,6 +74,9 @@ jobs:
- name: Build ifcopenshell
run: |
echo $Python3_ROOT_DIR
echo ${{ env.pythonLocation }}
mkdir build && cd build
cmake \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
@@ -71,11 +86,11 @@ jobs:
-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 \
-DPYTHON_EXECUTABLE:FILEPATH=${{ env.pythonLocation }}/bin/python \
-DPYTHON_INCLUDE_DIR:PATH=${{ env.pythonLocation }}/include/python3.11 \
-DPYTHON_LIBRARY:FILEPATH=${{ env.pythonLocation }}/lib/libpython3.11.so \
-DCOLLADA_SUPPORT=Off \
"-DSCHEMA_VERSIONS=2x3;4;4x3_add1" \
"-DSCHEMA_VERSIONS=2x3;4;4x3_add2" \
-DGLTF_SUPPORT=On \
-DJSON_INCLUDE_DIR=/usr/include \
-DCGAL_INCLUDE_DIR=/usr/include \
@@ -84,6 +99,7 @@ jobs:
-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 \
-DEIGEN_DIR=/usr/include/eigen3 \
../cmake
sudo make -j $(nproc)
sudo make install
@@ -102,23 +118,11 @@ jobs:
grep 0$ statuses
grep 0$ statuses | wc -l
- name: Install Python dependencies
run: |
sudo /usr/bin/python -m pip install -U pip
sudo /usr/bin/python -m pip install xmlschema xsdata numpy lxml
sudo /usr/bin/python -m pip install src/bcf --no-deps
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
sudo /usr/bin/python -m pip install https://github.com/Andrej730/aud/archive/refs/heads/master-reduced-size.zip
sudo /usr/bin/python -m pip install tabulate
sudo /usr/bin/python -m pip install python-dateutil
- name: Test
- name: Test ifcopenshell-python
run: |
cd test
sudo /usr/bin/python tests.py
python tests.py
cd ../src/ifcopenshell-python
mv ifcopenshell ifcopenshell-local # Force testing on installed module
make test
make test-safe
+23 -12
View File
@@ -7,34 +7,26 @@
# 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
/docs/cpp-api/output
# gettext binary translation files
*.mo
@@ -84,9 +76,28 @@ src/ifcopenshell-python/test/build
# blenderbim libs
src/blenderbim/blenderbim/libs
# blenderbim i18n
src/blenderbim/blenderbim/translations.py
# blenderbim test temp files
src/blenderbim/test/files/temp
src/blenderbim/test/files/basic.ifc.cache.blend
src/blenderbim/test/files/basic.ifc.cache.sqlite
src/blenderbim/drawings
src/blenderbim/layouts
# ifcopenshell swig and compiled files
src/ifcopenshell-python/ifcopenshell/_ifcopenshell_wrapper.so
src/ifcopenshell-python/ifcopenshell/ifcopenshell_wrapper.py
# apple
.DS_Store
# clangd config
.clangd
# clangd cache
.cache
# Brickschema
src/blenderbim/blenderbim/bim/schema/Brick.ttl
+7 -1
View File
@@ -10,4 +10,10 @@
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
url = https://github.com/IfcOpenShell/ids-test-files
[submodule "src/ifcconvert/cityjson"]
path = src/ifcconvert/cityjson
url = https://github.com/IfcOpenShell/ifc-to-cityjson
[submodule "docs/cpp-api/assets/doxygen-awesome-css"]
path = docs/cpp-api/assets/doxygen-awesome-css
url = https://github.com/jothepro/doxygen-awesome-css.git
+19 -15
View File
@@ -2,34 +2,38 @@
IfcOpenShell
============
<p align="center">
<img src="https://github.com/IfcOpenShell/IfcOpenShell/assets/88302/34901387-e2dd-4a0c-8e38-9ffc32a66cde">
</p>
IfcOpenShell is an open source ([LGPL]) software library for working with Industry Foundation Classes ([IFC]). Complete
parsing support is provided for [IFC2x3 TC1], [IFC4 Add2 TC1], IFC4x1, IFC4x3, and IFC4x3. Extensive geometric support
parsing support is provided for [IFC2x3 TC1], [IFC4 Add2 TC1], IFC4x1, IFC4x2, and [IFC4x3 Add2]. Extensive geometric support
is implemented for the IFC releases [IFC2x3 TC1] and [IFC4 Add2 TC1]. Extending with support for arbitrary IFC schemas
is possible at compile-time when using C++ and at run-time when using Python.
In addition to a C++ and Python API, IfcOpenShell comes with an ecosystem of tools, notably including IfcConvert (an application to convert IFC models to
other formats), the BlenderBIM Add-on (an add-on to Blender providing a graphical IFC authoring platform), and many
other libraries, CLI apps, and more. Support is also provided for auxiliary standards such as BCF and IDS.
In addition to a C++ and Python API, IfcOpenShell comes with an ecosystem of tools, notably including IfcConvert (an application
to convert IFC models to other formats), the BlenderBIM Add-on (an add-on to Blender providing a graphical IFC authoring platform),
and many other libraries, CLI apps, and more. Support is also provided for auxiliary standards such as BCF and IDS.
For more information, see:
* [IfcOpenShell Website](http://ifcopenshell.org)
* [IfcOpenShell Documentation](http://blenderbim.org/docs-python)
* [IfcOpenShell C++ Installation](https://blenderbim.org/docs-python/ifcopenshell/installation.html)
* [IfcOpenShell Python Installation](https://blenderbim.org/docs-python/ifcopenshell-python/installation.html)
* [IfcOpenShell Python Hello World Tutorial](https://blenderbim.org/docs-python/ifcopenshell-python/hello_world.html)
* [IfcOpenShell Documentation](https://docs.ifcopenshell.org)
* [IfcOpenShell C++ Installation](https://docs.ifcopenshell.org/ifcopenshell/installation.html)
* [IfcOpenShell Python Installation](https://docs.ifcopenshell.org/ifcopenshell-python/installation.html)
* [IfcOpenShell Python Hello World Tutorial](https://docs.ifcopenshell.org/ifcopenshell-python/hello_world.html)
* [BlenderBIM Add-on Website](https://blenderbim.org)
* [BlenderBIM Add-on Documentation](http://blenderbim.org/docs)
* [Add-on Installation](https://blenderbim.org/docs/users/installation.html)
* [Exploring an IFC model](https://blenderbim.org/docs/users/exploring_an_ifc_model.html)
* [BlenderBIM Add-on Documentation](https://docs.blenderbim.org/index.html)
* [Add-on Installation](https://docs.blenderbim.org/users/installation.html)
* [Exploring an IFC model](https://docs.blenderbim.org/users/exploring_an_ifc_model.html)
| 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 Stable | [![AUR Badge](https://img.shields.io/aur/version/ifcopenshell)](https://aur.archlinux.org/packages/ifcopenshell) |
| ArchLinux AUR Package git | [![AUR Badge](https://img.shields.io/aur/version/ifcopenshell-git)](https://aur.archlinux.org/packages/ifcopenshell-git) |
| ArchLinux AUR Package Stable | [![AUR Badge](https://img.shields.io/aur/version/ifcopenshell)](https://aur.archlinux.org/packages/ifcopenshell) |
| ArchLinux AUR Package git | [![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) |
@@ -40,7 +44,7 @@ Contents
Those marked with an asterisk are part of IfcOpenShell.
| Name | Description | License |
| ------------------------- | ----------------------------------------------------------------------| ------------------- |
| ------------------------- | --------------------------------------------------------------------- | ------------------- |
| bcf | Library to read and write BCF-XML and query OpenCDE BCF-API modules | LGPL-3.0-or-later |
| blenderbim | Add-on to Blender providing a graphical native IFC authoring platform | GPL-3.0-or-later |
| bsdd | Library to query the bSDD API | LGPL-3.0-or-later |
@@ -51,7 +55,6 @@ Those marked with an asterisk are part of IfcOpenShell.
| ifcblender | Historic Blender IFC import add-on | LGPL-3.0-or-later\* |
| ifccityjson | Convert CityJSON to IFC | LGPL-3.0-or-later |
| ifcclash | Clash detection library and CLI app | LGPL-3.0-or-later |
| ifccobie | Extract IFC data for COBie handover requirements | LGPL-3.0-or-later |
| ifcconvert | CLI app to convert IFC to many other formats | LGPL-3.0-or-later\* |
| ifccsv | Library and CLI app to export and import schedules from IFC | LGPL-3.0-or-later |
| ifcdiff | Compare changes between IFC models | LGPL-3.0-or-later |
@@ -74,6 +77,7 @@ Those marked with an asterisk are part of IfcOpenShell.
[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"
[IFC4x3 Add2]: https://standards.buildingsmart.org/IFC/RELEASE/IFC4_3/ "IFC4x3 Add2"
[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"
+40
View File
@@ -0,0 +1,40 @@
# Dockerfile for Running AWS Lambda Function with Python and IfcOpenShell
# Base image: Python 3.9 from AWS's public container registry
FROM public.ecr.aws/docker/library/python:3.9 AS build
# Set the location of your Lambda function code
ARG FUNCTION_DIR="/var/task"
# Install necessary packages
RUN apt-get -y update && apt-get -y install unzip curl
# Install AWS Lambda runtime interface client
RUN pip install --target ${FUNCTION_DIR} awslambdaric
# Set the IfcOpenShell build version (check available builds at: https://blenderbim.org/docs-python/ifcopenshell-python/installation.html)
ARG IFC_OPENSHELL_BUILD="39-v0.7.0-476ab50"
# Download and extract IfcOpenShell
RUN curl https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-${IFC_OPENSHELL_BUILD}-linux64.zip -O && \
unzip ifcopenshell-python-${IFC_OPENSHELL_BUILD}-linux64.zip && \
mv ifcopenshell ${FUNCTION_DIR} && \
rm ifcopenshell-python-${IFC_OPENSHELL_BUILD}-linux64.zip
# Copy the requirements file and install dependencies
COPY requirements.txt .
RUN pip install -r requirements.txt
# Copy the Lambda function code
COPY ./example_handler ${FUNCTION_DIR}/example_handler
# Set the working directory
WORKDIR ${FUNCTION_DIR}
# Set the entrypoint for the Lambda function
ENTRYPOINT [ "/usr/local/bin/python", "-m", "awslambdaric" ]
# Set the Python import path to the Lambda function handler
# This path is relative to the root of the Lambda function code (FUNCTION_DIR)
# Lambda invocation will look for this path
CMD ["example_handler.extract_wall_psets_handler"]
+27
View File
@@ -0,0 +1,27 @@
import ifcopenshell
import ifcopenshell.util.element
import boto3
s3 = boto3.client('s3')
def extract_wall_psets_handler(event, context):
print("Hello from lambda")
print("Event: {}".format(event))
print("Context: {}".format(context))
filename = event['body']['filename']
s3.download_file('my_ifc_files_bucket', filename, f'/tmp/{filename}')
ifc_file = ifcopenshell.open(f'/tmp/{filename}')
walls = ifc_file.by_type('IfcWall')
psets = []
for wall in walls:
wall_data = ifcopenshell.util.element.get_psets(wall)
wall_data['id'] = wall.GlobalId
psets.append(wall_data)
return {
'statusCode': 200,
'body': psets
}
+1
View File
@@ -0,0 +1 @@
boto3
+49 -40
View File
@@ -13,68 +13,77 @@ def request_repo_info(url: str):
return resp
def get_choco_package_info() -> str:
resp = request_repo_info(URL_CHOCO_PACKAGE)
html_txt = str(resp.read())
return html_txt
def get_latest_blender_version() -> list:
html_txt = get_choco_package_info()
return re.findall(RE_BLENDER_VERSION_MIN_MAJ_PAT, html_txt)
URL_IFCOS_RELEASES = "https://github.com/IfcOpenShell/IfcOpenShell/releases"
URL_CHOCO_PACKAGE = "https://community.chocolatey.org/packages/blender"
URL_BLENDER_CMAKE = "https://raw.githubusercontent.com/blender/blender/{}/build_files/cmake/Modules/FindPythonLibsUnix.cmake"
RE_BLENDER_VERSION_MIN_MAJ = r"Latest Version.+<span>Blender (\d+\.\d+)\..+</span>"
RE_BLENDER_VERSION_MIN_MAJ_PAT = r"Latest Version.+<span>Blender (\d+\.\d+\.\d+)</span>"
RE_BLENDER_PYTHON_VERSION_MAJ_MIN = r"(?:set|SET)\(_PYTHON_VERSION_SUPPORTED (\d+\.\d+)\)"
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)
resp = request_repo_info(URL_IFCOS_RELEASES)
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="")
latest_blender_version = get_latest_blender_version()
if latest_blender_version:
print(latest_blender_version[0], end="")
else:
print("[ERROR] could not determine blender_version_min_maj_pat")
quit(1)
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="")
html_txt = get_choco_package_info()
blender_version_min_maj = re.findall(RE_BLENDER_VERSION_MIN_MAJ, html_txt)
if blender_version_min_maj:
print(blender_version_min_maj[0], end="")
else:
print("[ERROR] could not determine blender_version_min_maj")
quit(1)
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)
latest_blender_version = get_latest_blender_version()
if latest_blender_version:
latest_blender_version_tag = f"v{latest_blender_version[0]}"
resp = request_repo_info(URL_BLENDER_CMAKE.format(latest_blender_version_tag))
html_txt = str(resp.read())
found = re.findall(re_blender_python_version_maj_min, html_txt)
found = re.findall(RE_BLENDER_PYTHON_VERSION_MAJ_MIN, html_txt)
if found:
print(found[0], end="")
else:
print("[ERROR] could not determine blender_python_version_maj_min")
quit(1)
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)
latest_blender_version = get_latest_blender_version()
if latest_blender_version:
latest_blender_version_tag = f"v{latest_blender_version[0]}"
resp = request_repo_info(URL_BLENDER_CMAKE.format(latest_blender_version_tag))
html_txt = str(resp.read())
found = re.findall(re_blender_python_version_maj_min, html_txt)
found = re.findall(RE_BLENDER_PYTHON_VERSION_MAJ_MIN, html_txt)
if found:
print(f"py{found[0].replace('.', '')}", end="")
else:
print("[ERROR] could not determine pyver")
quit(1)
+1244 -1029
View File
File diff suppressed because it is too large Load Diff
+43
View File
@@ -0,0 +1,43 @@
################################################################################
# #
# 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/>. #
# #
################################################################################
if(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt")
message(FATAL_ERROR "Cannot find install manifest: @CMAKE_BINARY_DIR@/install_manifest.txt")
endif()
file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files)
string(REGEX REPLACE "\n" ";" files "${files}")
foreach(file ${files})
message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
exec_program(
"@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
OUTPUT_VARIABLE rm_out
RETURN_VALUE rm_retval
)
if(NOT "${rm_retval}" STREQUAL 0)
message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
endif()
else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
endif()
endforeach()
+124
View File
@@ -0,0 +1,124 @@
################################################################################
# #
# 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/>. #
# #
################################################################################
# Create a cache entry if absent for environment variables
macro(UNIFY_ENVVARS_AND_CACHE VAR)
if((NOT DEFINED ${VAR}) AND(NOT "$ENV{${VAR}}" STREQUAL ""))
set(${VAR} "$ENV{${VAR}}" CACHE STRING "${VAR}" FORCE)
endif()
endmacro()
# Set INSTALL_RPATH for target with given paths
macro(SET_INSTALL_RPATHS _target _paths)
set(${_target}_rpaths "")
foreach(_path ${_paths})
list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${_path}" isSystemDir)
if("${isSystemDir}" STREQUAL "-1")
list(APPEND ${_target}_rpaths ${_path})
endif()
endforeach()
message(STATUS "Set INSTALL_RPATH for ${_target}: ${${_target}_rpaths}")
set_target_properties(${_target} PROPERTIES INSTALL_RPATH "${${_target}_rpaths}")
endmacro()
# Get a list of all OPTION flags from the CMakeLists.txt and store in an output LIST
function(get_all_option_flags output_list)
# Read the contents of the CMakeLists.txt
file(READ "${CMAKE_SOURCE_DIR}/CMakeLists.txt" cmake_contents)
# Find all OPTION flags using a regular expression
string(REGEX MATCHALL "[oO][pP][tT][iI][oO][nN]\\s*\\(\\s*([A-Za-z0-9_]+)" matches "${cmake_contents}")
# Extract the variable names from the matches
set(option_flags)
foreach(match IN LISTS matches)
string(REGEX REPLACE "[oO][pP][tT][iI][oO][nN]\\s*\\(\\s*([A-Za-z0-9_]+)" "\\1" option_flag "${match}")
list(APPEND option_flags "${option_flag}")
endforeach()
# Return the list of OPTION flags
set(${output_list} "${option_flags}" PARENT_SCOPE)
endfunction()
# Loop through a LIST of OPTION flags and convert to corresponding environment variables
function(convert_env_var_to_bool var_name)
if(DEFINED ENV{${var_name}})
string(TOUPPER "$ENV{${var_name}}" bool_value)
if(bool_value STREQUAL "ON" OR bool_value STREQUAL "TRUE" OR bool_value STREQUAL "1")
set(${var_name} ON CACHE BOOL "${var_name} as boolean" FORCE)
elseif(bool_value STREQUAL "OFF" OR bool_value STREQUAL "FALSE" OR bool_value STREQUAL "0")
set(${var_name} OFF CACHE BOOL "${var_name} as boolean" FORCE)
else()
# Not a bool, leave it as a string
endif()
else()
# Not defined, leave it as a string
endif()
endfunction()
# Usage:
# set(SOME_LIRARIES foo bar)
# add_debug_variants(SOME_LIRARIES "${SOME_LIRARIES}" d)
# "foo bar" -> "optimized foo debug food optimized bar debug bard"
# or
# set(SOME_LIRARIES path/foo.lib)
# add_debug_variants(SOME_LIRARIES "${SOME_LIRARIES}" "d")
# "path/foo.lib" -> "optimized path/foo.lib debug path/food.lib"
# TODO Could be refined: take the library file extension as a parameter and
# make sure the lib variable ends with not just contains it.
function(add_debug_variants NAME LIBRARIES POSTFIX)
set(LIBRARIES_STR "${LIBRARIES}")
set(LIBRARIES "")
# the result, "optimized <lib> debug <lib>", needs to be a list instead of a string
foreach(lib ${LIBRARIES_STR})
list(APPEND LIBRARIES optimized)
if("${lib}" MATCHES ".lib")
string(REPLACE ".lib" "" lib ${lib})
list(APPEND LIBRARIES ${lib}.lib)
else()
list(APPEND LIBRARIES ${lib})
endif()
list(APPEND LIBRARIES debug)
if("${lib}" MATCHES ".lib")
string(REPLACE ".lib" "" lib ${lib})
list(APPEND LIBRARIES ${lib}${POSTFIX}.lib)
else()
list(APPEND LIBRARIES ${lib}${POSTFIX})
endif()
endforeach()
set(${NAME} ${LIBRARIES} PARENT_SCOPE)
endfunction()
function(files_for_ifc_version IFC_VERSION RESULT_NAME)
set(IFC_PARSE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../src/ifcparse)
set(${RESULT_NAME}
${IFC_PARSE_DIR}/Ifc${IFC_VERSION}.h
${IFC_PARSE_DIR}/Ifc${IFC_VERSION}enum.h
${IFC_PARSE_DIR}/Ifc${IFC_VERSION}.cpp
PARENT_SCOPE
)
endfunction()
+1
View File
@@ -0,0 +1 @@
.env
-8
View File
@@ -1,8 +0,0 @@
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
+8 -3
View File
@@ -1,9 +1,10 @@
mkdir build && cd build
set MY_PY_VER=%PY_VER:.=%
set LIBXML2="%LIBRARY_PREFIX%/lib/libxml2.lib"
rem set LIBXML2="%LIBRARY_PREFIX%/lib/libxml2.lib"
cmake -G "Ninja" ^
-D SCHEMA_VERSIONS="2x3;4;4x1;4x3;4x3_add1" ^
-D CMAKE_BUILD_TYPE:STRING=Release ^
-D CMAKE_INSTALL_PREFIX:FILEPATH="%LIBRARY_PREFIX%" ^
-D CMAKE_PREFIX_PATH:FILEPATH="%LIBRARY_PREFIX%" ^
@@ -11,6 +12,9 @@ cmake -G "Ninja" ^
-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 EIGEN_DIR:FILEPATH="%LIBRARY_PREFIX%\include\eigen3" ^
-D LIBXML2_INCLUDE_DIR=%LIBRARY_PREFIX%/include/libxml2 ^
-D LIBXML2_LIBRARIES=%LIBRARY_PREFIX%/lib/libxml2.lib ^
-D GMP_INCLUDE_DIR:FILEPATH="%LIBRARY_PREFIX%\include" ^
-D GMP_LIBRARY_DIR:FILEPATH="%LIBRARY_PREFIX%\lib" ^
-D MPFR_LIBRARY_DIR:FILEPATH="%LIBRARY_PREFIX%\lib" ^
@@ -31,9 +35,10 @@ cmake -G "Ninja" ^
-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_LIBRARY_DIR:FILEPATH="%LIBRARY_PREFIX%\lib" ^
-D Boost_INCLUDE_DIR:FILEPATH="%LIBRARY_PREFIX%\include" ^
-D Boost_USE_STATIC_LIBS:BOOL=OFF ^
-D CITYJSON_SUPPORT:BOOL=OFF ^
%SRC_DIR%/cmake
if errorlevel 1 exit 1
+17 -10
View File
@@ -1,18 +1,21 @@
#!/bin/bash
declare -a CMAKE_PLATFORM_FLAGS
# IF osx use file lib suffix .dylib
# IF linux use file lib suffix .so
# IF windows use file lib suffix .dll
if [[ ${HOST} =~ .*linux.* ]]; then
CMAKE_PLATFORM_FLAGS+=(-DCMAKE_TOOLCHAIN_FILE=$RECIPE_DIR/cross-linux.cmake)
if [ "$(uname)" == "Darwin" ]; then
export FSUFFIX=dylib
export CFLAGS="$CFLAGS -Wl,-flat_namespace,-undefined,suppress"
export CXXFLAGS="$CXXFLAGS -Wl,-flat_namespace,-undefined,suppress"
export LDFLAGS="$LDFLAGS -Wl,-flat_namespace,-undefined,suppress"
elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
export FSUFFIX=so
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 \
-DSCHEMA_VERSIONS="2x3;4;4x1;4x3;4x3_add1" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
${CMAKE_PLATFORM_FLAGS[@]} \
@@ -28,7 +31,10 @@ cmake -G Ninja \
-DHDF5_LIBRARY_DIR=$PREFIX/lib \
-DJSON_INCLUDE_DIR=$PREFIX/include \
-DCGAL_INCLUDE_DIR=$PREFIX/include \
-DCOLLADA_SUPPORT=0 \
-DLIBXML2_INCLUDE_DIR=$PREFIX/include/libxml2 \
-DLIBXML2_LIBRARIES=$PREFIX/lib/libxml2.$FSUFFIX \
-DEIGEN_DIR:FILEPATH=$PREFIX/include/eigen3 \
-DCOLLADA_SUPPORT:BOOL=OFF \
-DBUILD_EXAMPLES:BOOL=OFF \
-DIFCXML_SUPPORT:BOOL=ON \
-DGLTF_SUPPORT:BOOL=ON \
@@ -37,8 +43,9 @@ cmake -G Ninja \
-DBUILD_IFCGEOM:BOOL=ON \
-DBUILD_GEOMSERVER:BOOL=OFF \
-DBOOST_USE_STATIC_LIBS:BOOL=OFF \
-DCITYJSON_SUPPORT:BOOL=OFF \
./cmake
ninja
ninja install -j 2
ninja install -j 1
+11 -2
View File
@@ -1,2 +1,11 @@
CONDA_BUILD_SYSROOT:
- /opt/MacOSX10.13.sdk # [osx]
CONDA_BUILD_SYSROOT: # used for github actions conda daily build
- /Users/runner/work/MacOSX10.13.sdk # [osx]
occt:
- 7.7.1
c_compiler:
- vs2022 # [win]
cxx_compiler:
- vs2022 # [win]
-16
View File
@@ -1,16 +0,0 @@
# 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)
+58
View File
@@ -0,0 +1,58 @@
@echo off
:: This is a batch file to set the environment variables for the project
:: It is not necessary for conda compilation, but it provides you with type hints when working with the c++ libraries
:: OpenCascade, CGAL, Eigen, etc distributed using conda-forge in your IDE.
::
:: mamba env update -f environment.build.yml --prune
:: mamba activate ifcopenshell-build
::
:: Note!
:: You have to add a .env file next to this env.bat file where you set PREFIX=<path to your conda env>
set CONDA_BUILD=1
set MY_PY_VER=311
:: set this file's parent directory as a variable
set THIS_DIR=%~dp0
:: read the .env file located in THIS_DIR and set the environment variables.
:: the .env file should contain a line like this:
:: PREFIX=C:\Users\your_user_name\mambaforge3\envs\ifcopenshell-build
for /f "tokens=*" %%i in (%THIS_DIR%.env) do set %%i
set LIBRARY_PREFIX=%PREFIX%/Library
set CMAKE_PREFIX_PATH=%PREFIX%;%LIBRARY_PREFIX%/include;%LIBRARY_PREFIX%/lib;%LIBRARY_PREFIX%/bin
set OCC_LIBRARY_DIR=%LIBRARY_PREFIX%/lib
set OCC_INCLUDE_DIR=%LIBRARY_PREFIX%/include/opencascade
set CGAL_DIR=%LIBRARY_PREFIX%/lib/cmake/CGAL
set CGAL_INCLUDE_DIR=%LIBRARY_PREFIX%/include
set EIGEN_DIR=%LIBRARY_PREFIX%/include/eigen3
set LIBXML2_INCLUDE_DIR=%LIBRARY_PREFIX%/include/libxml2
set LIBXML2_LIBRARIES=%LIBRARY_PREFIX%/lib/libxml2.lib
set Boost_LIBRARY_DIR=%LIBRARY_PREFIX%/lib
set Boost_INCLUDE_DIR=%LIBRARY_PREFIX%/include
set Boost_USE_STATIC_LIBS=OFF
set GMP_INCLUDE_DIR=%LIBRARY_PREFIX%/include
set GMP_LIBRARY_DIR=%LIBRARY_PREFIX%/lib
set MPFR_LIBRARY_DIR=%LIBRARY_PREFIX%/lib
set HDF5_INCLUDE_DIR=%LIBRARY_PREFIX%/include
set HDF5_LIBRARY_DIR=%LIBRARY_PREFIX%/lib
set JSON_INCLUDE_DIR=%LIBRARY_PREFIX%/include
set HDF5_SUPPORT=ON
set BUILD_IFCPYTHON=ON
set BUILD_IFCGEOM=ON
set COLLADA_SUPPORT=OFF
set BUILD_EXAMPLES=OFF
set BUILD_GEOMSERVER=OFF
set GLTF_SUPPORT=ON
set BUILD_CONVERT=ON
set BUILD_IFCMAX=OFF
set IFCXML_SUPPORT=ON
set PYTHON_EXECUTABLE=%PREFIX%/python.exe
set PYTHON_LIBRARY=%PREFIX%/libs/python%MY_PY_VER%.lib
+17
View File
@@ -0,0 +1,17 @@
name: ifcopenshell-build
channels:
- conda-forge
dependencies:
- boa
- boost-cpp
- occt
- libxml2
- cgal-cpp
- hdf5
- mpfr
- nlohmann_json
- swig
- zlib
# These needs to be installed per platform
#- sel(unix): gmp
#- sel(win): mpir
-14
View File
@@ -1,14 +0,0 @@
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
+22 -19
View File
@@ -1,61 +1,64 @@
{% set name = "ifcopenshell" %}
{% set version = "0.7.0" %}
context:
name: ifcopenshell
version: 0.8.0alpha1
package:
name: {{ name }}
version: {{ version }}
name: '{{ name|lower }}'
version: '{{ version }}'
source:
path: ..
build:
binary_relocation: false [osx]
number: 1
requirements:
build:
- {{ compiler('c') }}
- {{ compiler('cxx') }}
- "{{ compiler('c') }}"
- "{{ compiler('cxx') }}"
- ninja >=1.10.2
- cmake
- swig >=4.0.2
- swig 4.1.1
host:
- python
- boost-cpp
- occt
- occt ==7.7.0
- libxml2
- cgal-cpp
- hdf5
- eigen
- mpfr
- gmp # [unix]
- mpir # [win]
- sel(unix): gmp
- sel(win): mpir
- nlohmann_json
- zlib
run:
- python
- boost-cpp
- occt
- {{ pin_compatible('occt', max_pin='x.x.x') }}
- {{ pin_compatible('cgal-cpp', max_pin='x.x.x') }}
- {{ pin_compatible('boost-cpp', max_pin='x.x.x') }}
- libxml2
- cgal-cpp
- hdf5
- eigen
- mpfr
- gmp # [unix]
- mpir # [win]
- sel(unix): gmp
- sel(win): mpir
- nlohmann_json
- zlib
test:
imports:
- ifcopenshell
about:
home: http://ifcopenshell.org
home: https://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/
doc_url: https://blenderbim.org/docs-python/
dev_url: https://github.com/IfcOpenShell/IfcOpenShell
-11
View File
@@ -1,11 +0,0 @@
#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
@@ -1,11 +0,0 @@
#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)
File diff suppressed because it is too large Load Diff
+33
View File
@@ -0,0 +1,33 @@
# IfcOpenShell C++ API documentation
This folder contains the setup to build the IfcOpenShell C++ API documentation from the source code.
## Generating the documentation
> Prerequisites:
>
> Make sure to have [Doxygen](https://www.doxygen.nl) and [Graphviz](https://graphviz.org) installed into your `$PATH` variable.
>
> The documentation also use the [doxygen-awesome](https://jothepro.github.io/doxygen-awesome-css) theme as a git submodule.
Build with the command (from within the `/docs/cpp-api` folder):
```shell
$ doxygen
```
To include the current git commit hash into the build documentation, use the following command:
```shell
$ PROJECT_NUMBER=$(git rev-parse --short HEAD) doxygen
```
This will extract the current commit hash in short version and sets the propper ENV variable used by doxygen.
The generation of the documentation might take a while depending on your systems hardware, as it is configured to generate the Class graphs using .
The resulting documentation is located unter `/cpp-api/output/html` and can be directly accessed with your browser:
```shell
$ open ./output/html/index.html
```
Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

-240
View File
@@ -1,240 +0,0 @@
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
()
+27 -8
View File
@@ -59,6 +59,10 @@ import multiprocessing
import platform
import sysconfig
# @todo temporary for expired mpfr.org certificate on 2023-04-08
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
from urllib.request import urlretrieve
@@ -72,10 +76,10 @@ 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", "3.11.0"]
PYTHON_VERSIONS = ["3.9.11", "3.10.3", "3.11.8", "3.12.1"]
JSON_VERSION = "v3.6.1"
OCE_VERSION = "0.18.3"
OCCT_VERSION = "7.5.3"
OCCT_VERSION = "7.7.1"
BOOST_VERSION = "1.80.0"
PCRE_VERSION = "8.41"
LIBXML2_VERSION = "2.9.11"
@@ -182,7 +186,7 @@ cecho(""" - How many compiler processes may be run in parallel.
dependency_tree = {
'IfcParse': ('boost', 'libxml2', 'hdf5'),
'IfcGeom': ('IfcParse', 'occ', 'json', 'cgal'),
'IfcGeom': ('IfcParse', 'occ', 'json', 'cgal', 'eigen'),
'IfcConvert': ('IfcGeom',),
'OpenCOLLADA': ('libxml2', 'pcre'),
'IfcGeomServer': ('IfcGeom',),
@@ -196,6 +200,7 @@ dependency_tree = {
'json': (),
'hdf5': (),
'cgal': (),
'eigen': (),
'freetype': (),
}
@@ -250,6 +255,11 @@ if not os.path.exists(LOG_FILE):
open(LOG_FILE, "w").close()
logger.info(f"using command log file '{LOG_FILE}'")
# Causing havoc in python 3.11 build
try:
del os.environ['__PYVENV_LAUNCHER__']
except: pass
def run(cmds, cwd=None, can_fail=False):
"""
@@ -280,8 +290,9 @@ if platform.system() == "Darwin":
# Apparently not supported
PYTHON_VERSIONS = [pv for pv in PYTHON_VERSIONS if tuple(map(int, pv.split("."))) >= (3, 7)]
if run(["sw_vers", "-productVersion"]) < "10.16":
# Apparently not supported
PYTHON_VERSIONS = [pv for pv in PYTHON_VERSIONS if tuple(map(int, pv.split("."))) < (3, 11)]
# This is now solved with the '__PYVENV_LAUNCHER__' hack
# PYTHON_VERSIONS = [pv for pv in PYTHON_VERSIONS if tuple(map(int, pv.split("."))) < (3, 11)]
pass
BOOST_VERSION_UNDERSCORE = BOOST_VERSION.replace(".", "_")
@@ -510,6 +521,9 @@ if "json" in targets:
os.makedirs(os.path.dirname(json_install_path))
if not os.path.exists(json_install_path):
urlretrieve(json_url, json_install_path)
if "eigen" in targets:
git_clone_or_pull_repository("https://gitlab.com/libeigen/eigen.git", f"{DEPS_DIR}/install/eigen-3.3.9", revision="3.3.9")
if "pcre" in targets:
build_dependency(
@@ -549,6 +563,9 @@ if USE_OCCT and "occ" in targets:
patches = []
if OCCT_VERSION < "7.4":
patches.append("./patches/occt/enable-exception-handling.patch")
if OCCT_VERSION == "7.7.1":
patches.append("./patches/occt/no_ExpToCasExe.patch")
if "wasm" in flags:
patches.append("./patches/occt/no_em_js.patch")
@@ -563,7 +580,7 @@ if USE_OCCT and "occ" in targets:
"-DBUILD_RELEASE_DISABLE_EXCEPTIONS=Off",
f"-D3RDPARTY_FREETYPE_DIR={DEPS_DIR}/install/freetype"
],
download_url = "https://github.com/Open-Cascade-SAS/OCCT",
download_url = "https://git.dev.opencascade.org/repos/occt.git",
download_name = "occt",
download_tool=download_tool_git,
patch=patches,
@@ -757,6 +774,7 @@ cmake_args = [
"-DBOOST_ROOT=" f"{DEPS_DIR}/install/boost-{BOOST_VERSION}",
"-DGLTF_SUPPORT=" "ON",
"-DJSON_INCLUDE_DIR=" f"{DEPS_DIR}/install/json",
"-DEIGEN_DIR=" f"{DEPS_DIR}/install/eigen-3.3.9",
"-DBoost_NO_BOOST_CMAKE=" "On",
"-DADD_COMMIT_SHA=" +("On" if ADD_COMMIT_SHA else "Off")
]
@@ -888,8 +906,9 @@ if "IfcOpenShell-Python" in targets:
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)
if BUILD_CFG == "Release":
# 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
+13
View File
@@ -0,0 +1,13 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fd17283f77..6cecf9dad3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -826,6 +826,8 @@ if (EMSCRIPTEN)
list (REMOVE_ITEM BUILD_TOOLKITS ExpToCasExe)
endif()
+list (REMOVE_ITEM BUILD_TOOLKITS ExpToCasExe)
+
# bison
if (BUILD_YACCLEX)
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/bison")
+20
View File
@@ -0,0 +1,20 @@
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!
cff-version: 1.2.0
title: bcf
message: >-
If you use this software, please cite it using the
metadata from this file.
type: software
authors:
- name: "IfcOpenShell contributors"
repository-code: >-
https://github.com/IfcOpenShell/IfcOpenShell/tree/v0.7.0/src/bcf
abstract: >-
Library to read and write BCF-XML and query OpenCDE
BCF-API modules
keywords:
- BCF
- IFC
license: LGPL-3.0-or-later
+14 -1
View File
@@ -1,3 +1,9 @@
VERSION:=`date '+%y%m%d'`
SED:=sed -i
ifeq ($(UNAME_S),Darwin)
SED:=sed -i '' -e
endif
.PHONY: ci
ci:
tox
@@ -12,6 +18,13 @@ models:
cd src && xsdata generate -p bcf.v2.model --unnest-classes --kw-only --slots -ds Google bcf/v2/xsd
cd src && xsdata generate -p bcf.v3.model --unnest-classes --kw-only --slots -ds Google bcf/v3/xsd
.PHONY: dist
dist:
rm -rf dist
$(SED) "s/999999/$(VERSION)/" pyproject.toml
python -m build
$(SED) "s/$(VERSION)/999999/" pyproject.toml
# .PHONY
# api:
# openapi-python-client generate --url https://api.swaggerhub.com/apis/buildingSMART/BCF/3.0
# openapi-python-client generate --url https://api.swaggerhub.com/apis/buildingSMART/BCF/3.0
+3 -82
View File
@@ -1,84 +1,5 @@
# bcf
A simple Python implementation of BCF.
Manipulation of BCF-XML is available via `bcfxml.py` and manipulation of BCF-API
is available via `bcfapi.py`.
It tries to support BCF-XML version 2.1 and 3.0, and BCF-API 3.0.
## bcfxml
The `bcfxml.load` function lets you read a BCF-XML file.
It takes care of using the right version based on the "bcf.version" file contained in the BCF package.
The BCF files are extracted and parsed on-demand, and edits are stored in memory until you call the `save` method.
```python
from bcf.bcfxml import load
# Load a project
with load("/path/to/file.bcf") as bcfxml:
project = bcfxml.project
print(project.name)
# To edit a project, just modify the object directly
bcfxml.project.name = "New name"
# Get a dictionary of topics
topics = bcfxml.topics
for topic_guid, topic_handler in bcfxml.topics.items():
topic = topic_handler.topic
print("Topic guid is", topic.guid)
print("Topic title is", topic.title)
# Fetch extra data about a topic
header = topic_handler.header
comments = topic_handler.comments
viewpoints = topic_handler.viewpoints
for comment in comments:
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.save()
```
## 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)
```
A simple Python implementation of the BCF standard. Manipulation of BCF-XML is
available via `bcfxml.py` and manipulation of BCF-API is available via
`bcfapi.py`.
+4 -4
View File
@@ -11,13 +11,13 @@ name = "bcf-client"
description = "BCF-XML file handler."
readme = "README.md"
requires-python = ">=3.8"
keywords = ["IFC", "BCF", "BIM", "eingineering"]
keywords = ["IFC", "BCF", "BIM"]
dependencies = [
"xsdata",
"numpy",
"ifcopenshell",
]
version = "0.0.1"
version = "0.0.999999"
classifiers = [
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
"Operating System :: OS Independent",
@@ -76,7 +76,7 @@ deps =
black
isort
pylint
commands =
commands =
black {posargs:.}
isort {posargs:.}
pylint {posargs:.} --output-format=colorized
@@ -138,4 +138,4 @@ max-attributes = 10
[tool.pylint.format]
expected-line-ending-format = "LF"
max-line-length = 120
max-line-length = 120
+2
View File
@@ -275,6 +275,7 @@ class TopicHandler:
"""
new_viewpoint = VisualizationInfoHandler.create_new(element, self._xml_handler)
self.add_visinfo_handler(new_viewpoint)
return new_viewpoint
def add_viewpoint_from_point_and_guids(self, position: NDArray[np.float_], *guids: str) -> None:
"""Add a viewpoint pointing at an XYZ point in space
@@ -287,6 +288,7 @@ class TopicHandler:
position, *guids, xml_handler=self._xml_handler
)
self.add_visinfo_handler(vi_handler)
return vi_handler
def add_visinfo_handler(self, new_viewpoint: VisualizationInfoHandler) -> None:
self.viewpoints[new_viewpoint.guid + ".bcfv"] = new_viewpoint
+26
View File
@@ -0,0 +1,26 @@
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!
cff-version: 1.2.0
title: BlenderBIM Add-on
message: >-
If you use this software, please cite it using the
metadata from this file.
type: software
authors:
- name: "IfcOpenShell contributors"
repository-code: >-
https://github.com/IfcOpenShell/IfcOpenShell/tree/v0.7.0/src/blenderbim
url: 'https://blenderbim.org/'
repository-artifact: 'https://blenderbim.org/download.html'
abstract: >-
Add-on to Blender providing a graphical native IFC
authoring platform
keywords:
- IFC
- Blender
- NativeIFC
license: GPL-3.0-or-later
commit: 1fb6dac
version: v0.0.230506
date-released: '2023-05-23'
+88 -289
View File
@@ -36,141 +36,88 @@ endif
endif
VERSION:=`date '+%y%m%d'`
PYVERSION:=py37
LAST_COMMIT_HASH:=$(shell git rev-parse HEAD)
PYVERSION:=py310
PYPI_IMP:=cp
ifeq ($(PYVERSION), py37)
PYLIBDIR:=python3.7
PYNUMBER:=37
endif
ifeq ($(PYVERSION), py39)
PYLIBDIR:=python3.9
PYNUMBER:=39
PYPI_VERSION:=3.9
endif
ifeq ($(PYVERSION), py310)
PYLIBDIR:=python3.10
PYNUMBER:=310
PYPI_VERSION:=3.10
endif
ifeq ($(PYVERSION), py311)
PYLIBDIR:=python3.11
PYNUMBER:=311
PYPI_VERSION:=3.11
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/1d/a4/931d0780f31f3ea8c4f9ef6464a2825137c5241e6707a5fb03bef760a7eb/shapely-2.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_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/2d/f2/8ec281d357e8bb7d08dc8d727f0e4c8ef3dae7d3fa75c69c8e452bb82d50/shapely-2.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_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/a8/a5/403728b5614b28083f6424dfdefec5fcf58068495fb03bb08532671c642f/shapely-2.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_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
PYPI_PLATFORM:=--platform manylinux_2_17_x86_64
LXML_ARCH:=manylinux_2_28_x86_64
SHAPELY_ARCH:=manylinux_2_17_x86_64.manylinux2014_x86_64
PILLOW_ARCH:=manylinux_2_28_x86_64
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/e6/7d/4923f27c340339e1c896c77cafc8ed672c8d381a025bbab6c6ddcba27e8f/shapely-2.0.1-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
PYPI_PLATFORM:=--platform macosx_10_9_x86_64
SHAPELY_ARCH:=macosx_10_9_x86_64
PILLOW_ARCH:=macosx_10_10_x86_64
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/36/a4/7e542a209f862f967d7cb8e939eff155f4294a27d17e16441fb8bdd51a2c/shapely-2.0.1-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
LXML_ARCH:=macosx_11_0_x86_64
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/1f/2a/dc3353c2431cf53e8d04bb8fba27e584410ca3435c9c85f76d71bf0c0e80/shapely-2.0.1-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
LXML_ARCH:=macosx_11_0_x86_64
endif
ifeq ($(PYVERSION), py311)
LXML_ARCH:=macosx_11_0_universal2
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/e6/7d/4923f27c340339e1c896c77cafc8ed672c8d381a025bbab6c6ddcba27e8f/shapely-2.0.1-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/ea/aa/45fbd031edf3149cb767d8b9f9db45d5faf0324d743c6b8fb0298cc022d0/shapely-2.0.1-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/ec/41/d59208743e737184e1b403e95a937aebb022b8459e99efbcd5208fc8be46/shapely-2.0.1-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
PYPI_PLATFORM:=--platform macosx_11_0_arm64
LXML_ARCH:=macosx_11_0_universal2
SHAPELY_ARCH:=macosx_11_0_arm64
PILLOW_ARCH:=macosx_11_0_arm64
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/e2/87/b8b8d8d57b429b01aa56b7d723075c09f33c988b8091bb6f790c83436909/shapely-2.0.1-cp37-cp37m-win_amd64.whl
PILLOW_URL:=https://files.pythonhosted.org/packages/69/f5/9e802159d78b2eaf26bf1f8b94648605993f5ca7247ac8870f065063fc40/Pillow-9.2.0-cp37-cp37m-win_amd64.whl
PYPI_PLATFORM:=--platform win_amd64
LXML_ARCH:=win_amd64
SHAPELY_ARCH:=win_amd64
PILLOW_ARCH:=win_amd64
endif
LXML_NAME:=lxml
LXML_VER:=4.9.4
SHAPELY_NAME:=shapely
SHAPELY_VER:=2.0.2
PILLOW_NAME:=pillow
PILLOW_PKG_NAME:=Pillow
PILLOW_VER:=9.5.0
SHAPELY_URL:=https://files.pythonhosted.org/packages/cp$(PYNUMBER)/s/$(SHAPELY_NAME)/$(SHAPELY_NAME)-$(SHAPELY_VER)-cp$(PYNUMBER)-cp$(PYNUMBER)-$(SHAPELY_ARCH).whl
PILLOW_URL:=https://files.pythonhosted.org/packages/cp$(PYNUMBER)/p/$(PILLOW_NAME)/$(PILLOW_PKG_NAME)-$(PILLOW_VER)-cp$(PYNUMBER)-cp$(PYNUMBER)-$(PILLOW_ARCH).whl
ifeq ($(PLATFORM), macosm1)
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/a7/ae/eab645c4075093584b7a65ab71cb8ff4563a015bd935c9b55dba14b2c1eb/shapely-2.0.1-cp39-cp39-win_amd64.whl
PILLOW_URL:=https://files.pythonhosted.org/packages/19/3f/b4d4bcf05dbcbe07f2e9613a8f4180c297395e73a91d8ad22c32c6624f8c/Pillow-9.2.0-cp39-cp39-win_amd64.whl
LXML_URL:=https://anaconda.org/conda-forge/lxml/4.9.1/download/osx-arm64/lxml-4.9.1-py39h0520ce3_1.tar.bz2
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/81/8a/7ac076a86b2632f1872284c5e60ed5f2fc26094875a85b35d9fa17b52504/shapely-2.0.1-cp310-cp310-win_amd64.whl
PILLOW_URL:=https://files.pythonhosted.org/packages/02/55/67a3c17b9e7d972ed8c246f104da99ca4f3ea42fba566697e479011b84b6/Pillow-9.2.0-cp310-cp310-win_amd64.whl
LXML_URL:=https://anaconda.org/conda-forge/lxml/4.9.1/download/osx-arm64/lxml-4.9.1-py310h02f21da_0.tar.bz2
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
ifeq ($(PYVERSION), py311)
LXML_URL:=https://anaconda.org/conda-forge/lxml/4.9.1/download/osx-arm64/lxml-4.9.1-py311h246f609_1.tar.bz2
endif
else
LXML_URL:=https://files.pythonhosted.org/packages/cp$(PYNUMBER)/l/$(LXML_NAME)/$(LXML_NAME)-$(LXML_VER)-cp$(PYNUMBER)-cp$(PYNUMBER)-$(LXML_ARCH).whl
endif
$(info $$LXML_URL is [${LXML_URL}])
$(info $$SHAPELY_URL is [${SHAPELY_URL}])
$(info $$PILLOW_URL is [${PILLOW_URL}])
.PHONY: bump
bump:
@@ -190,7 +137,7 @@ endif
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-476ab50-$(PLATFORM)64.zip
cd dist/working && wget https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-$(PYNUMBER)-v0.7.0-f7c03db-$(PLATFORM)64.zip
cd dist/working && unzip ifcopenshell-python*
cp -r dist/working/ifcopenshell dist/blenderbim/libs/site/packages/
@@ -206,9 +153,7 @@ endif
# 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/
cp dist/working/IfcOpenShell-0.7.0/src/ifcopenshell-python/ifcopenshell/validate.py dist/blenderbim/libs/site/packages/ifcopenshell/
cp dist/working/IfcOpenShell-0.7.0/src/ifcopenshell-python/ifcopenshell/*.py dist/blenderbim/libs/site/packages/ifcopenshell/
cp dist/working/IfcOpenShell-0.7.0/src/ifcopenshell-python/ifcopenshell/express/rule_executor.py dist/blenderbim/libs/site/packages/ifcopenshell/express/
# Provides bcf functionality
cp -r dist/working/IfcOpenShell-0.7.0/src/bcf/src/bcf dist/blenderbim/libs/site/packages/
@@ -222,8 +167,10 @@ endif
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 IFCFM functionality
cp -r dist/working/IfcOpenShell-0.7.0/src/ifcfm/ifcfm dist/blenderbim/libs/site/packages/
# Provides bSDD functionality
cp -r dist/working/IfcOpenShell-0.7.0/src/bsdd/* 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
@@ -236,6 +183,11 @@ endif
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/
# Provides IfcGit functionality
cd dist/working && . env/bin/activate && $(PIP) install GitPython --target=./site-packages
cp -r dist/working/site-packages/smmap dist/blenderbim/libs/site/packages/
cp -r dist/working/site-packages/gitdb dist/blenderbim/libs/site/packages/
cp -r dist/working/site-packages/git dist/blenderbim/libs/site/packages/
rm -rf dist/working
# Provides Mustache templating in construction documentation
@@ -399,107 +351,23 @@ endif
mkdir dist/working
cd dist/working && $(PYTHON) -m venv env
cd dist/working && mkdir site-packages
# Required by IfcCSV
cd dist/working && . env/bin/activate && $(PIP) install pandas $(PYPI_PLATFORM) --python-version $(PYPI_VERSION) --implementation $(PYPI_IMP) --only-binary=:all: --target=./site-packages
# Pandas ships with very heavy tests
cd dist/working/site-packages/pandas && rm -rf tests
cd dist/working && . env/bin/activate && $(PIP) install openpyxl --target=./site-packages
cd dist/working && . env/bin/activate && $(PIP) install odfpy --target=./site-packages
# Required by IFCCityJSON
cd dist/working && . env/bin/activate && $(PIP) install cjio --target=./site-packages
# Provides express rule validation for ifcopenshell.validate
cd dist/working && . env/bin/activate && $(PIP) install pytest --target=./site-packages
cd dist/working/site-packages/ && rm -r *dist-info*
# Provides Brickschema functionality
cd dist/working && . env/bin/activate && $(PIP) install "brickschema[persistence]==0.7.6a2" --target=./site-packages
# Required for SVG to DXF conversion
cd dist/working && . env/bin/activate && $(PIP) install "ezdxf" --target=./site-packages
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
@@ -547,56 +415,6 @@ endif
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
# TODO: see if we can replace this with openpyxl which does both read/write
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
@@ -604,50 +422,17 @@ endif
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 && wget https://github.com/IfcOpenShell/IfcOpenShell/raw/v0.7.0/src/blenderbim/scripts/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
@@ -659,7 +444,21 @@ endif
cp -r dist/working/bpypolyskel-master/bpypolyskel dist/blenderbim/libs/site/packages/
rm -rf dist/working
# Required for Desktop icon and file association
cp -r blenderbim/libs/desktop dist/blenderbim/libs/
# Generate translations module for BBIM build
git clone https://github.com/IfcOpenShell/blenderbim-translations.git dist/working
$(PYTHON) scripts/bbim_translations.py -i "dist/working" -o "dist/blenderbim"
rm -rf dist/working
# Remove dependencies also bundled with Blender
rm -rf dist/blenderbim/libs/site/packages/numpy
rm -rf dist/blenderbim/libs/site/packages/numpy.libs
cd dist/blenderbim && $(SED) "s/999999/$(VERSION)/" __init__.py
cd dist/blenderbim && $(SED) "s/999999/$(VERSION)/" blender_manifest.toml
cd dist/blenderbim/bim && $(SED) "s/8888888/$(LAST_COMMIT_HASH)/" __init__.py
cd dist && zip -r blenderbim-$(VERSION)-$(PYVERSION)-$(PLATFORM).zip ./*
rm -rf dist/blenderbim
+7 -5
View File
@@ -22,19 +22,21 @@ import site
bl_info = {
"name": "BlenderBIM",
"description": "Author, import, and export data using the Industry Foundation Classes schema",
"description": "Transforms Blender into a native Building Information Model authoring platform using IFC.",
"author": "IfcOpenShell Contributors",
"blender": (2, 80, 0),
"blender": (3, 1, 0),
"version": (0, 0, 999999),
"location": "File > Export, File > Import, Scene / Object / Material / Mesh Properties",
"location": "File Menu, Scene Properties Tab. See documentation for more.",
"doc_url": "https://docs.blenderbim.org/",
"tracker_url": "https://github.com/IfcOpenShell/IfcOpenShell/issues",
"category": "Import-Export",
"category": "System",
}
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"))
# site.addsitedir(os.path.join(os.path.dirname(os.path.realpath(__file__)), "libs", "site", "packages"))
sys.path.insert(0, os.path.join(os.path.dirname(os.path.realpath(__file__)), "libs", "site", "packages"))
import blenderbim.bim
+153 -36
View File
@@ -16,14 +16,26 @@
# 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
from pathlib import Path
import bpy
import bpy.utils.previews
import blenderbim
import importlib
from . import handler, ui, prop, operator, helper
from typing import Callable, Union
try:
from blenderbim.translations import translations_dict
except ImportError:
translations_dict = {}
cwd = os.path.dirname(os.path.realpath(__file__))
modules = {
"project": None,
"search": None,
"bcf": None,
"bsdd": None,
"root": None,
"unit": None,
"model": None,
@@ -37,8 +49,9 @@ modules = {
"spatial": None,
"void": None,
"aggregate": None,
"nest": None,
"geometry": None,
"cobie": None,
"fm": None,
"resource": None,
"cost": None,
"sequence": None,
@@ -60,7 +73,6 @@ modules = {
"document": None,
"pset_template": None,
"clash": None,
"lca": None,
"csv": None,
"tester": None,
"bimtester": None,
@@ -70,6 +82,8 @@ modules = {
"covetool": None,
"augin": None,
"debug": None,
"ifcgit": None,
"covering": 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,
@@ -83,77 +97,127 @@ for name in modules.keys():
classes = [
operator.AddIfcFile,
operator.BIM_OT_add_section_plane,
operator.BIM_OT_delete_object,
operator.BIM_OT_open_webbrowser,
operator.BIM_OT_remove_section_plane,
operator.ConfigureVisibility,
operator.BIM_OT_select_object,
operator.BIM_OT_show_description,
operator.ClippingPlaneCutWithCappings,
operator.EditBlenderCollection,
operator.FileAssociate,
operator.FileUnassociate,
operator.OpenUpstream,
operator.OpenUri,
operator.ReloadIfcFile,
operator.RemoveIfcFile,
operator.RevertClippingPlaneCut,
operator.SelectDataDir,
operator.SelectIfcFile,
operator.ReloadSelectedIfcFile,
operator.SelectSchemaDir,
operator.SelectURIAttribute,
operator.EditBlenderCollection,
operator.BIM_OT_open_webbrowser,
operator.BIM_OT_show_description,
operator.SetTab,
operator.SwitchTab,
prop.StrProperty,
operator.BIM_OT_enum_property_search, # /!\ Register AFTER prop.StrProperty
prop.ObjProperty,
prop.Attribute,
prop.ModuleVisibility,
prop.BIMAreaProperties,
prop.BIMTabProperties,
prop.BIMProperties,
prop.IfcParameter,
prop.PsetQto,
prop.GlobalId,
prop.BIMObjectProperties,
prop.BIMCollectionProperties,
prop.BIMMaterialProperties,
prop.BIMMeshProperties,
ui.BIM_PT_section_plane,
prop.BIMFacet,
prop.BIMFilterGroup,
ui.BIM_UL_clipping_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_selection,
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,
# Tabs panel
ui.BIM_PT_tabs,
# Project overview
ui.BIM_PT_tab_project_info,
ui.BIM_PT_tab_project_setup,
ui.BIM_PT_tab_geometry,
ui.BIM_PT_tab_stakeholders,
ui.BIM_PT_tab_grouping_and_filtering,
# Object information
ui.BIM_PT_tab_object_metadata,
ui.BIM_PT_tab_misc,
# Geometry and materials
ui.BIM_PT_tab_placement,
ui.BIM_PT_tab_representations,
ui.BIM_PT_tab_geometric_relationships,
ui.BIM_PT_tab_parametric_geometry,
ui.BIM_PT_tab_profiles,
ui.BIM_PT_tab_materials,
ui.BIM_PT_tab_styles,
# Drawings and documents
ui.BIM_PT_tab_sheets,
ui.BIM_PT_tab_drawings,
ui.BIM_PT_tab_schedules,
ui.BIM_PT_tab_references,
# Services and systems
ui.BIM_PT_tab_services,
ui.BIM_PT_tab_zones,
# Structural analysis
ui.BIM_PT_tab_structural,
# Construction scheduling
ui.BIM_PT_tab_status,
ui.BIM_PT_tab_resources,
ui.BIM_PT_tab_cost,
ui.BIM_PT_tab_sequence,
# Facility management
ui.BIM_PT_tab_handover,
ui.BIM_PT_tab_operations,
# Quality and coordination
ui.BIM_PT_tab_quality_control,
ui.BIM_PT_tab_clash_detection,
ui.BIM_PT_tab_collaboration,
ui.BIM_PT_tab_sandbox,
# TODO: move this somewhere else and clean it up
ui.BIM_PT_section_plane,
ui.BIM_PT_section_with_cappings,
]
for mod in modules.values():
classes.extend(mod.classes)
addon_keymaps = []
icons = None
is_registering = False
last_commit_hash = "8888888"
original_scene_panels_polls: dict[bpy.types.Panel, Union[Callable, None]] = dict()
def on_register(scene):
handler.setDefaultProperties(scene)
global is_registering
if is_registering:
return
is_registering = True
handler.load_post(scene)
if not bpy.app.background:
bpy.app.handlers.depsgraph_update_post.remove(on_register)
is_registering = False
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.load_post)
bpy.app.handlers.load_post.append(handler.loadIfcStore)
bpy.app.handlers.save_post.append(handler.ensureIfcExported)
bpy.types.Scene.BIMProperties = bpy.props.PointerProperty(type=prop.BIMProperties)
bpy.types.Screen.BIMAreaProperties = bpy.props.CollectionProperty(type=prop.BIMAreaProperties)
bpy.types.Screen.BIMTabProperties = bpy.props.PointerProperty(type=prop.BIMTabProperties)
bpy.types.Collection.BIMCollectionProperties = bpy.props.PointerProperty(type=prop.BIMCollectionProperties)
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)
@@ -161,21 +225,59 @@ def register():
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)
if hasattr(bpy.types, "UI_MT_button_context_menu"):
bpy.types.UI_MT_button_context_menu.append(ui.draw_custom_context_menu)
bpy.types.STATUSBAR_HT_header.append(ui.draw_statusbar)
for mod in modules.values():
mod.register()
wm = bpy.context.window_manager
if wm.keyconfigs.addon:
km = wm.keyconfigs.addon.keymaps.new(name="Window", space_type="EMPTY")
kmi = km.keymap_items.new("bim.switch_tab", "TAB", "PRESS", ctrl=True)
addon_keymaps.append((km, kmi))
global icons
icons_dir = os.path.join(cwd, "data", "icons")
icon_preview = bpy.utils.previews.new()
for filename in os.listdir(icons_dir):
if filename.endswith(".png"):
icon_name = os.path.splitext(filename)[0]
icon_path = os.path.join(icons_dir, filename)
icon_preview.load(icon_name, icon_path, "IMAGE")
icons = icon_preview
global last_commit_hash
try:
import git
path = Path(__file__).resolve().parent
repo = git.Repo(str(path), search_parent_directories=True)
last_commit_hash = repo.head.object.hexsha
except:
pass
bpy.app.translations.register("blenderbim", translations_dict)
def unregister():
global icons
bpy.utils.previews.remove(icons)
for cls in reversed(classes):
bpy.utils.unregister_class(cls)
bpy.app.handlers.load_post.remove(handler.setDefaultProperties)
if getattr(cls, "is_registered", None) is None:
bpy.utils.unregister_class(cls)
elif cls.is_registered:
bpy.utils.unregister_class(cls)
bpy.app.handlers.load_post.remove(handler.load_post)
bpy.app.handlers.load_post.remove(handler.loadIfcStore)
bpy.app.handlers.save_post.remove(handler.ensureIfcExported)
del bpy.types.Scene.BIMProperties
del bpy.types.Collection.BIMCollectionProperties
del bpy.types.Object.BIMObjectProperties
del bpy.types.Material.BIMObjectProperties
del bpy.types.Material.BIMMaterialProperties
@@ -183,9 +285,24 @@ def unregister():
del bpy.types.Curve.BIMMeshProperties
del bpy.types.Camera.BIMMeshProperties
del bpy.types.PointLight.BIMMeshProperties
bpy.types.SCENE_PT_unit.remove(ui.ifc_units)
if hasattr(bpy.types, "UI_MT_button_context_menu"):
bpy.types.UI_MT_button_context_menu.remove(ui.draw_custom_context_menu)
bpy.types.STATUSBAR_HT_header.remove(ui.draw_statusbar)
for mod in reversed(list(modules.values())):
mod.unregister()
wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if kc:
for km, kmi in addon_keymaps:
km.keymap_items.remove(kmi)
addon_keymaps.clear()
import blenderbim.tool as tool
# use tuple() as method will be removing keys from dict
for panel in tuple(original_scene_panels_polls.keys()):
tool.Blender.remove_scene_panel_override(panel)
bpy.app.translations.unregister("blenderbim")
@@ -10,7 +10,7 @@
* (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
* 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.
*
@@ -22,10 +22,17 @@
text, tspan { /* 2.5mm */ fill: black; stroke: none; font-family: 'OpenGost Type B TT', 'DejaVu Sans Condensed', 'Liberation Sans', 'Arial Narrow', 'Arial'; font-size: 4.13px; }
.cut { fill: black; stroke: black; stroke-linecap: 'round'; stroke-width: 0.35; fill-rule: evenodd; }
.projection { fill: white; stroke: black; stroke-linecap: 'round'; stroke-width: 0.25; }
.surface { stroke: none; fill: #fff; fill-rule: evenodd; }
.annotation { fill: none; stroke: black; stroke-linecap: 'round'; stroke-width: 0.25; }
.IfcAnnotation { fill: none; stroke: black; stroke-linecap: 'round'; stroke-width: 0.25; }
.IfcGeographicElement { fill: none; stroke: black; stroke-linecap: 'round'; stroke-width: 1; }
.PredefinedType-LINEWORK { stroke: black; stroke-width: 0.25; }
.PredefinedType-LINEWORK.dashed { stroke-dasharray: 3, 2; }
.PredefinedType-LINEWORK.fine { stroke-width: 0.18; stroke: #777777; }
.PredefinedType-LINEWORK.thin { stroke-width: 0.25; }
.PredefinedType-LINEWORK.medium { stroke-width: 0.35; }
.PredefinedType-LINEWORK.thick { stroke-width: 0.5; }
.PredefinedType-LINEWORK.strong { stroke-width: 1; }
.PredefinedType-BACKGROUND { stroke: black; stroke-width: 0.18; }
.PredefinedType-GRID { marker-start: url(#grid-marker); marker-end: url(#grid-marker); }
.PredefinedType-SECTION { stroke-dasharray: 12.5, 3, 3, 3; }
@@ -39,7 +46,6 @@ text, tspan { /* 2.5mm */ fill: black; stroke: none; font-family: 'OpenGost Type
.PredefinedType-SLOPEPERCENT { marker-end: url(#radius-marker-end); }
.PredefinedType-SLOPEFRACTION { marker-end: url(#radius-marker-end); }
.PredefinedType-DIAMETER { marker-start: url(#diameter-marker-start); marker-end: url(#diameter-marker-end); }
.PredefinedType-HIDDENLINE { stroke-dasharray: 3, 2; }
.PredefinedType-STAIRARROW { marker-start: url(#stair-marker-start); marker-end: url(#stair-marker-end); }
.PredefinedType-BOUNDARY { fill: none; stroke: red; stroke-width: 1; stroke-dasharray: 12, 4, 3, 4, 3, 4; }
.PredefinedType-SEALANT { fill: url(#crosshatch1); stroke-width: 0.25; }
@@ -75,7 +75,7 @@
<marker id="stair-marker-end" markerHeight="42" markerWidth="21" orient="auto" refX="21" refY="21">
<path d="M 0 0 L 21 21 L 0 42" class="annotation stair" style="stroke-width:2; marker-start: none; marker-end: none;" />
</marker>
<marker id="plan-level-marker" markerHeight="30" markerWidth="30" refX="15" refY="15">
<marker id="plan-level-marker" markerHeight="30" markerWidth="30" refX="15" refY="15" orient="auto">
<g>
<path d="M 15 0 L 15 30" class="annotation" style="stroke-width:1;" />
<path d="M 0 15 L 30 15" class="annotation" style="stroke-width:1;" />
@@ -84,7 +84,7 @@
<path d="M 15 15 L 22.5 15 A 7.5 7.5 0 0 1 15 22.5 Z" fill="black"/>
</g>
</marker>
<marker id="section-level-marker" markerHeight="11" markerWidth="90" refX="20" refY="10">
<marker id="section-level-marker" markerHeight="11" markerWidth="90" refX="20" refY="10" orient="auto-start-reverse">
<g>
<path d="M 0 1 L 20 1 L 10 11 Z" fill="black" />
<path d="M 0 1 L 90 1" class="annotation" style="stroke-width:1;" />
@@ -96,4 +96,12 @@
<path d="M 7.5 10 L 10 0 L 15 10" class="annotation" style="stroke-width:1; fill: white;" />
</g>
</marker>
<filter x="0" y="0" width="1" height="1" id="fill-background">
<feFlood flood-color="white" result="bg" />
<feMerge>
<feMergeNode in="bg"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
</svg>

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

@@ -17,16 +17,49 @@
<line x1="0" y1="0" x2="0" y2="3" style="stroke:black; stroke-width:0.25" />
</pattern>
<pattern id="square1" width="1" height="1" patternUnits="userSpaceOnUse">
<line x1="0" y1="0" x2="0" y2="1" style="stroke:black; stroke-width:0.25" />
<line x1="0" y1="0" x2="1" y2="0" style="stroke:black; stroke-width:0.25" />
<path style="stroke: black; stroke-width: 0.25; fill: none;" d="M 0 0 1 0 1 1" />
</pattern>
<pattern id="square2" width="2" height="2" patternUnits="userSpaceOnUse">
<line x1="0" y1="0" x2="0" y2="2" style="stroke:black; stroke-width:0.25" />
<line x1="0" y1="0" x2="2" y2="0" style="stroke:black; stroke-width:0.25" />
<path style="stroke: black; stroke-width: 0.25; fill: none;" d="M 0 0 2 0 2 2" />
</pattern>
<pattern id="square3" width="3" height="3" patternUnits="userSpaceOnUse">
<line x1="0" y1="0" x2="0" y2="3" style="stroke:black; stroke-width:0.25" />
<line x1="0" y1="0" x2="3" y2="0" style="stroke:black; stroke-width:0.25" />
<path style="stroke: black; stroke-width: 0.25; fill: none;" d="M 0 0 3 0 3 3" />
</pattern>
<pattern id="recth1" width="2" height="1" patternUnits="userSpaceOnUse">
<path style="stroke: black; stroke-width: 0.25; fill: none;" d="M 0 0 2 0 2 1" />
</pattern>
<pattern id="recth2" width="4" height="2" patternUnits="userSpaceOnUse">
<path style="stroke: black; stroke-width: 0.25; fill: none;" d="M 0 0 4 0 4 2" />
</pattern>
<pattern id="recth3" width="6" height="3" patternUnits="userSpaceOnUse">
<path style="stroke: black; stroke-width: 0.25; fill: none;" d="M 0 0 6 0 6 3" />
</pattern>
<pattern id="rectv1" width="1" height="2" patternUnits="userSpaceOnUse">
<path style="stroke: black; stroke-width: 0.25; fill: none;" d="M 0 0 1 0 1 2" />
</pattern>
<pattern id="rectv2" width="2" height="4" patternUnits="userSpaceOnUse">
<path style="stroke: black; stroke-width: 0.25; fill: none;" d="M 0 0 2 0 2 4" />
</pattern>
<pattern id="rectv3" width="3" height="6" patternUnits="userSpaceOnUse">
<path style="stroke: black; stroke-width: 0.25; fill: none;" d="M 0 0 3 0 3 6" />
</pattern>
<pattern id="tile1" width="2" height="2" patternUnits="userSpaceOnUse">
<path style="stroke: black; stroke-width: 0.15; fill: none;" d="M 0 0 2 0 2 1 0 1 M 1 1 1 2" />
</pattern>
<pattern id="tile2" width="4" height="4" patternUnits="userSpaceOnUse">
<path style="stroke: black; stroke-width: 0.15; fill: none;" d="M 0 0 4 0 4 2 0 2 M 2 2 2 4" />
</pattern>
<pattern id="tile3" width="6" height="6" patternUnits="userSpaceOnUse">
<path style="stroke: black; stroke-width: 0.15; fill: none;" d="M 0 0 6 0 6 3 0 3 M 3 3 3 6" />
</pattern>
<pattern id="board1" width="4" height="2" patternUnits="userSpaceOnUse">
<path style="stroke: black; stroke-width: 0.15; fill: none;" d="M 0 0 4 0 4 1 0 1 M 2 1 2 2" />
</pattern>
<pattern id="board2" width="8" height="4" patternUnits="userSpaceOnUse">
<path style="stroke: black; stroke-width: 0.15; fill: none;" d="M 0 0 8 0 8 2 0 2 M 4 2 4 4" />
</pattern>
<pattern id="board3" width="12" height="6" patternUnits="userSpaceOnUse">
<path style="stroke: black; stroke-width: 0.15; fill: none;" d="M 0 0 12 0 12 3 0 3 M 6 3 6 6" />
</pattern>
<pattern id="crosshatch1" width="1" height="1" patternTransform="rotate(45 0 0)" patternUnits="userSpaceOnUse">
<line x1="0" y1="0" x2="0" y2="1" style="stroke:black; stroke-width:0.25" />

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 69 KiB

@@ -10,7 +10,7 @@
* (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
* 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.
*
@@ -0,0 +1,755 @@
{
"Technical": {
"render_type": "VIEWPORT",
"raster_style": {
"bpy.data.worlds[0].color": [
1.0,
1.0,
1.0
],
"scene.render.bake_bias": 0.0010000000474974513,
"scene.render.bake_margin": 16,
"scene.render.bake_margin_type": "ADJACENT_FACES",
"scene.render.bake_samples": 256,
"scene.render.bake_type": "NORMALS",
"scene.render.bake_user_scale": 0.0,
"scene.render.border_max_x": 1.0,
"scene.render.border_max_y": 1.0,
"scene.render.border_min_x": 0.0,
"scene.render.border_min_y": 0.0,
"scene.render.dither_intensity": 1.0,
"scene.render.engine": "BLENDER_WORKBENCH",
"scene.render.film_transparent": false,
"scene.render.filter_size": 1.5,
"scene.render.fps": 24,
"scene.render.fps_base": 1.0,
"scene.render.frame_map_new": 100,
"scene.render.frame_map_old": 100,
"scene.render.hair_subdiv": 0,
"scene.render.hair_type": "STRAND",
"scene.render.line_thickness": 1.0,
"scene.render.line_thickness_mode": "ABSOLUTE",
"scene.render.metadata_input": "SCENE",
"scene.render.motion_blur_shutter": 0.5,
"scene.render.pixel_aspect_x": 1.0,
"scene.render.pixel_aspect_y": 1.0,
"scene.render.preview_pixel_size": "AUTO",
"scene.render.resolution_percentage": 100,
"scene.render.resolution_x": 1000,
"scene.render.resolution_y": 1000,
"scene.render.sequencer_gl_preview": "SOLID",
"scene.render.simplify_child_particles": 1.0,
"scene.render.simplify_child_particles_render": 1.0,
"scene.render.simplify_gpencil": false,
"scene.render.simplify_gpencil_antialiasing": true,
"scene.render.simplify_gpencil_modifier": true,
"scene.render.simplify_gpencil_onplay": false,
"scene.render.simplify_gpencil_shader_fx": true,
"scene.render.simplify_gpencil_tint": true,
"scene.render.simplify_gpencil_view_fill": true,
"scene.render.simplify_shadows": 1.0,
"scene.render.simplify_shadows_render": 1.0,
"scene.render.simplify_subdivision": 6,
"scene.render.simplify_subdivision_render": 6,
"scene.render.simplify_volumes": 1.0,
"scene.render.stamp_font_size": 12,
"scene.render.stamp_note_text": "",
"scene.render.threads": 20,
"scene.render.threads_mode": "AUTO",
"scene.render.use_bake_clear": true,
"scene.render.use_bake_lores_mesh": false,
"scene.render.use_bake_multires": false,
"scene.render.use_bake_selected_to_active": false,
"scene.render.use_bake_user_scale": false,
"scene.render.use_border": false,
"scene.render.use_compositing": true,
"scene.render.use_crop_to_border": false,
"scene.render.use_file_extension": true,
"scene.render.use_freestyle": false,
"scene.render.use_high_quality_normals": false,
"scene.render.use_lock_interface": false,
"scene.render.use_motion_blur": false,
"scene.render.use_multiview": false,
"scene.render.use_overwrite": true,
"scene.render.use_persistent_data": false,
"scene.render.use_placeholder": false,
"scene.render.use_render_cache": false,
"scene.render.use_sequencer": true,
"scene.render.use_sequencer_override_scene_strip": false,
"scene.render.use_simplify": false,
"scene.render.use_single_layer": false,
"scene.render.use_stamp": false,
"scene.render.use_stamp_camera": true,
"scene.render.use_stamp_date": true,
"scene.render.use_stamp_filename": true,
"scene.render.use_stamp_frame": true,
"scene.render.use_stamp_frame_range": false,
"scene.render.use_stamp_hostname": false,
"scene.render.use_stamp_labels": true,
"scene.render.use_stamp_lens": false,
"scene.render.use_stamp_marker": false,
"scene.render.use_stamp_memory": false,
"scene.render.use_stamp_note": false,
"scene.render.use_stamp_render_time": true,
"scene.render.use_stamp_scene": true,
"scene.render.use_stamp_sequencer_strip": false,
"scene.render.use_stamp_time": true,
"scene.render.views_format": "STEREO_3D",
"scene.view_settings.exposure": 0.0,
"scene.view_settings.gamma": 1.0,
"scene.view_settings.look": "None",
"scene.view_settings.use_curve_mapping": false,
"scene.view_settings.view_transform": "Standard",
"scene.display.shading.aov_name": "",
"scene.display.shading.background_color": [
0.0,
0.0,
0.0
],
"scene.display.shading.background_type": "THEME",
"scene.display.shading.cavity_ridge_factor": 1.0,
"scene.display.shading.cavity_type": "BOTH",
"scene.display.shading.cavity_valley_factor": 1.0,
"scene.display.shading.color_type": "SINGLE",
"scene.display.shading.curvature_ridge_factor": 1.0,
"scene.display.shading.curvature_valley_factor": 1.0,
"scene.display.shading.light": "FLAT",
"scene.display.shading.object_outline_color": [
0.0,
0.0,
0.0
],
"scene.display.shading.render_pass": "COMBINED",
"scene.display.shading.shadow_intensity": 0.5,
"scene.display.shading.show_backface_culling": false,
"scene.display.shading.show_cavity": false,
"scene.display.shading.show_object_outline": true,
"scene.display.shading.show_shadows": false,
"scene.display.shading.show_specular_highlight": true,
"scene.display.shading.show_xray": false,
"scene.display.shading.show_xray_wireframe": false,
"scene.display.shading.single_color": [
1.0,
1.0,
1.0
],
"scene.display.shading.studio_light": "Default",
"scene.display.shading.studiolight_background_alpha": 0.0,
"scene.display.shading.studiolight_background_blur": 0.0,
"scene.display.shading.studiolight_intensity": 0.0,
"scene.display.shading.studiolight_rotate_z": 0.0,
"scene.display.shading.type": "SOLID",
"scene.display.shading.use_compositor": "DISABLED",
"scene.display.shading.use_dof": false,
"scene.display.shading.use_scene_lights": false,
"scene.display.shading.use_scene_lights_render": false,
"scene.display.shading.use_scene_world": false,
"scene.display.shading.use_scene_world_render": false,
"scene.display.shading.use_studiolight_view_rotation": true,
"scene.display.shading.use_world_space_lighting": false,
"scene.display.shading.wireframe_color_type": "MATERIAL",
"scene.display.shading.xray_alpha": 0.5,
"scene.display.shading.xray_alpha_wireframe": 0.0,
"scene.display.light_direction": [
0.5,
0.5,
0.5
],
"scene.display.matcap_ssao_attenuation": 1.0,
"scene.display.matcap_ssao_distance": 0.20000000298023224,
"scene.display.matcap_ssao_samples": 16,
"scene.display.render_aa": "8",
"scene.display.shadow_focus": 0.0,
"scene.display.shadow_shift": 0.10000000149011612,
"scene.display.viewport_aa": "FXAA",
"space.overlay.backwire_opacity": 0.5,
"space.overlay.bone_wire_alpha": 1.0,
"space.overlay.display_handle": "SELECTED",
"space.overlay.fade_inactive_alpha": 0.4000000059604645,
"space.overlay.gpencil_fade_layer": 0.5,
"space.overlay.gpencil_fade_objects": 0.5,
"space.overlay.gpencil_grid_opacity": 0.5,
"space.overlay.gpencil_vertex_paint_opacity": 1.0,
"space.overlay.grid_lines": 16,
"space.overlay.grid_scale": 1.0,
"space.overlay.grid_subdivisions": 10,
"space.overlay.normals_constant_screen_size": 7.0,
"space.overlay.normals_length": 0.10000000149011612,
"space.overlay.sculpt_curves_cage_opacity": 0.5,
"space.overlay.sculpt_mode_face_sets_opacity": 1.0,
"space.overlay.sculpt_mode_mask_opacity": 0.75,
"space.overlay.show_annotation": true,
"space.overlay.show_axis_x": false,
"space.overlay.show_axis_y": false,
"space.overlay.show_axis_z": false,
"space.overlay.show_bones": true,
"space.overlay.show_cursor": true,
"space.overlay.show_curve_normals": false,
"space.overlay.show_edge_bevel_weight": true,
"space.overlay.show_edge_crease": true,
"space.overlay.show_edge_seams": true,
"space.overlay.show_edge_sharp": true,
"space.overlay.show_edges": false,
"space.overlay.show_extra_edge_angle": false,
"space.overlay.show_extra_edge_length": false,
"space.overlay.show_extra_face_angle": false,
"space.overlay.show_extra_face_area": false,
"space.overlay.show_extra_indices": false,
"space.overlay.show_extras": true,
"space.overlay.show_face_center": false,
"space.overlay.show_face_normals": false,
"space.overlay.show_face_orientation": false,
"space.overlay.show_faces": true,
"space.overlay.show_fade_inactive": false,
"space.overlay.show_floor": false,
"space.overlay.show_freestyle_edge_marks": true,
"space.overlay.show_freestyle_face_marks": true,
"space.overlay.show_look_dev": false,
"space.overlay.show_motion_paths": true,
"space.overlay.show_object_origins": false,
"space.overlay.show_object_origins_all": false,
"space.overlay.show_occlude_wire": false,
"space.overlay.show_onion_skins": false,
"space.overlay.show_ortho_grid": true,
"space.overlay.show_outline_selected": true,
"space.overlay.show_overlays": true,
"space.overlay.show_paint_wire": false,
"space.overlay.show_relationship_lines": false,
"space.overlay.show_sculpt_curves_cage": true,
"space.overlay.show_sculpt_face_sets": true,
"space.overlay.show_sculpt_mask": true,
"space.overlay.show_split_normals": false,
"space.overlay.show_stats": false,
"space.overlay.show_statvis": false,
"space.overlay.show_text": true,
"space.overlay.show_vertex_normals": false,
"space.overlay.show_viewer_attribute": true,
"space.overlay.show_weight": false,
"space.overlay.show_wireframes": true,
"space.overlay.show_wpaint_contours": false,
"space.overlay.show_xray_bone": false,
"space.overlay.texture_paint_mode_opacity": 1.0,
"space.overlay.use_debug_freeze_view_culling": false,
"space.overlay.use_gpencil_canvas_xray": false,
"space.overlay.use_gpencil_edit_lines": true,
"space.overlay.use_gpencil_fade_gp_objects": false,
"space.overlay.use_gpencil_fade_layers": false,
"space.overlay.use_gpencil_fade_objects": false,
"space.overlay.use_gpencil_grid": false,
"space.overlay.use_gpencil_multiedit_line_only": false,
"space.overlay.use_gpencil_onion_skin": false,
"space.overlay.use_gpencil_show_directions": false,
"space.overlay.use_gpencil_show_material_name": false,
"space.overlay.use_normals_constant_screen_size": false,
"space.overlay.vertex_opacity": 1.0,
"space.overlay.vertex_paint_mode_opacity": 1.0,
"space.overlay.viewer_attribute_opacity": 1.0,
"space.overlay.weight_paint_mode_opacity": 1.0,
"space.overlay.wireframe_opacity": 1.0,
"space.overlay.wireframe_threshold": 0.0,
"space.overlay.xray_alpha_bone": 0.0
}
},
"Shaded": {
"render_type": "VIEWPORT",
"raster_style": {
"bpy.data.worlds[0].color": [
1.0,
1.0,
1.0
],
"scene.render.bake_bias": 0.0010000000474974513,
"scene.render.bake_margin": 16,
"scene.render.bake_margin_type": "ADJACENT_FACES",
"scene.render.bake_samples": 256,
"scene.render.bake_type": "NORMALS",
"scene.render.bake_user_scale": 0.0,
"scene.render.border_max_x": 1.0,
"scene.render.border_max_y": 1.0,
"scene.render.border_min_x": 0.0,
"scene.render.border_min_y": 0.0,
"scene.render.dither_intensity": 1.0,
"scene.render.engine": "BLENDER_WORKBENCH",
"scene.render.film_transparent": false,
"scene.render.filter_size": 1.5,
"scene.render.fps": 24,
"scene.render.fps_base": 1.0,
"scene.render.frame_map_new": 100,
"scene.render.frame_map_old": 100,
"scene.render.hair_subdiv": 0,
"scene.render.hair_type": "STRAND",
"scene.render.line_thickness": 1.0,
"scene.render.line_thickness_mode": "ABSOLUTE",
"scene.render.metadata_input": "SCENE",
"scene.render.motion_blur_shutter": 0.5,
"scene.render.pixel_aspect_x": 1.0,
"scene.render.pixel_aspect_y": 1.0,
"scene.render.preview_pixel_size": "AUTO",
"scene.render.resolution_percentage": 100,
"scene.render.resolution_x": 1000,
"scene.render.resolution_y": 1000,
"scene.render.sequencer_gl_preview": "SOLID",
"scene.render.simplify_child_particles": 1.0,
"scene.render.simplify_child_particles_render": 1.0,
"scene.render.simplify_gpencil": false,
"scene.render.simplify_gpencil_antialiasing": true,
"scene.render.simplify_gpencil_modifier": true,
"scene.render.simplify_gpencil_onplay": false,
"scene.render.simplify_gpencil_shader_fx": true,
"scene.render.simplify_gpencil_tint": true,
"scene.render.simplify_gpencil_view_fill": true,
"scene.render.simplify_shadows": 1.0,
"scene.render.simplify_shadows_render": 1.0,
"scene.render.simplify_subdivision": 6,
"scene.render.simplify_subdivision_render": 6,
"scene.render.simplify_volumes": 1.0,
"scene.render.stamp_font_size": 12,
"scene.render.stamp_note_text": "",
"scene.render.threads": 20,
"scene.render.threads_mode": "AUTO",
"scene.render.use_bake_clear": true,
"scene.render.use_bake_lores_mesh": false,
"scene.render.use_bake_multires": false,
"scene.render.use_bake_selected_to_active": false,
"scene.render.use_bake_user_scale": false,
"scene.render.use_border": false,
"scene.render.use_compositing": true,
"scene.render.use_crop_to_border": false,
"scene.render.use_file_extension": true,
"scene.render.use_freestyle": false,
"scene.render.use_high_quality_normals": false,
"scene.render.use_lock_interface": false,
"scene.render.use_motion_blur": false,
"scene.render.use_multiview": false,
"scene.render.use_overwrite": true,
"scene.render.use_persistent_data": false,
"scene.render.use_placeholder": false,
"scene.render.use_render_cache": false,
"scene.render.use_sequencer": true,
"scene.render.use_sequencer_override_scene_strip": false,
"scene.render.use_simplify": false,
"scene.render.use_single_layer": false,
"scene.render.use_stamp": false,
"scene.render.use_stamp_camera": true,
"scene.render.use_stamp_date": true,
"scene.render.use_stamp_filename": true,
"scene.render.use_stamp_frame": true,
"scene.render.use_stamp_frame_range": false,
"scene.render.use_stamp_hostname": false,
"scene.render.use_stamp_labels": true,
"scene.render.use_stamp_lens": false,
"scene.render.use_stamp_marker": false,
"scene.render.use_stamp_memory": false,
"scene.render.use_stamp_note": false,
"scene.render.use_stamp_render_time": true,
"scene.render.use_stamp_scene": true,
"scene.render.use_stamp_sequencer_strip": false,
"scene.render.use_stamp_time": true,
"scene.render.views_format": "STEREO_3D",
"scene.view_settings.exposure": 0.0,
"scene.view_settings.gamma": 1.0,
"scene.view_settings.look": "None",
"scene.view_settings.use_curve_mapping": false,
"scene.view_settings.view_transform": "Standard",
"scene.display.shading.aov_name": "",
"scene.display.shading.background_color": [
0.0,
0.0,
0.0
],
"scene.display.shading.background_type": "THEME",
"scene.display.shading.cavity_ridge_factor": 1.0,
"scene.display.shading.cavity_type": "BOTH",
"scene.display.shading.cavity_valley_factor": 1.0,
"scene.display.shading.color_type": "MATERIAL",
"scene.display.shading.curvature_ridge_factor": 1.0,
"scene.display.shading.curvature_valley_factor": 1.0,
"scene.display.shading.light": "STUDIO",
"scene.display.shading.object_outline_color": [
0.0,
0.0,
0.0
],
"scene.display.shading.render_pass": "COMBINED",
"scene.display.shading.shadow_intensity": 0.5,
"scene.display.shading.show_backface_culling": false,
"scene.display.shading.show_cavity": true,
"scene.display.shading.show_object_outline": true,
"scene.display.shading.show_shadows": true,
"scene.display.shading.show_specular_highlight": true,
"scene.display.shading.show_xray": false,
"scene.display.shading.show_xray_wireframe": false,
"scene.display.shading.single_color": [
1.0,
1.0,
1.0
],
"scene.display.shading.studio_light": "Default",
"scene.display.shading.studiolight_background_alpha": 0.0,
"scene.display.shading.studiolight_background_blur": 0.0,
"scene.display.shading.studiolight_intensity": 0.0,
"scene.display.shading.studiolight_rotate_z": 0.0,
"scene.display.shading.type": "RENDERED",
"scene.display.shading.use_compositor": "DISABLED",
"scene.display.shading.use_dof": false,
"scene.display.shading.use_scene_lights": false,
"scene.display.shading.use_scene_lights_render": false,
"scene.display.shading.use_scene_world": false,
"scene.display.shading.use_scene_world_render": false,
"scene.display.shading.use_studiolight_view_rotation": true,
"scene.display.shading.use_world_space_lighting": false,
"scene.display.shading.wireframe_color_type": "MATERIAL",
"scene.display.shading.xray_alpha": 0.5,
"scene.display.shading.xray_alpha_wireframe": 0.0,
"scene.display.light_direction": [
0.5,
0.5,
0.5
],
"scene.display.matcap_ssao_attenuation": 1.0,
"scene.display.matcap_ssao_distance": 0.20000000298023224,
"scene.display.matcap_ssao_samples": 16,
"scene.display.render_aa": "8",
"scene.display.shadow_focus": 0.0,
"scene.display.shadow_shift": 0.10000000149011612,
"scene.display.viewport_aa": "FXAA",
"space.overlay.backwire_opacity": 0.5,
"space.overlay.bone_wire_alpha": 1.0,
"space.overlay.display_handle": "SELECTED",
"space.overlay.fade_inactive_alpha": 0.4000000059604645,
"space.overlay.gpencil_fade_layer": 0.5,
"space.overlay.gpencil_fade_objects": 0.5,
"space.overlay.gpencil_grid_opacity": 0.5,
"space.overlay.gpencil_vertex_paint_opacity": 1.0,
"space.overlay.grid_lines": 16,
"space.overlay.grid_scale": 1.0,
"space.overlay.grid_subdivisions": 10,
"space.overlay.normals_constant_screen_size": 7.0,
"space.overlay.normals_length": 0.10000000149011612,
"space.overlay.sculpt_curves_cage_opacity": 0.5,
"space.overlay.sculpt_mode_face_sets_opacity": 1.0,
"space.overlay.sculpt_mode_mask_opacity": 0.75,
"space.overlay.show_annotation": true,
"space.overlay.show_axis_x": false,
"space.overlay.show_axis_y": false,
"space.overlay.show_axis_z": false,
"space.overlay.show_bones": true,
"space.overlay.show_cursor": true,
"space.overlay.show_curve_normals": false,
"space.overlay.show_edge_bevel_weight": true,
"space.overlay.show_edge_crease": true,
"space.overlay.show_edge_seams": true,
"space.overlay.show_edge_sharp": true,
"space.overlay.show_edges": false,
"space.overlay.show_extra_edge_angle": false,
"space.overlay.show_extra_edge_length": false,
"space.overlay.show_extra_face_angle": false,
"space.overlay.show_extra_face_area": false,
"space.overlay.show_extra_indices": false,
"space.overlay.show_extras": true,
"space.overlay.show_face_center": false,
"space.overlay.show_face_normals": false,
"space.overlay.show_face_orientation": false,
"space.overlay.show_faces": true,
"space.overlay.show_fade_inactive": false,
"space.overlay.show_floor": false,
"space.overlay.show_freestyle_edge_marks": true,
"space.overlay.show_freestyle_face_marks": true,
"space.overlay.show_look_dev": false,
"space.overlay.show_motion_paths": true,
"space.overlay.show_object_origins": false,
"space.overlay.show_object_origins_all": false,
"space.overlay.show_occlude_wire": false,
"space.overlay.show_onion_skins": false,
"space.overlay.show_ortho_grid": true,
"space.overlay.show_outline_selected": true,
"space.overlay.show_overlays": true,
"space.overlay.show_paint_wire": false,
"space.overlay.show_relationship_lines": false,
"space.overlay.show_sculpt_curves_cage": true,
"space.overlay.show_sculpt_face_sets": true,
"space.overlay.show_sculpt_mask": true,
"space.overlay.show_split_normals": false,
"space.overlay.show_stats": false,
"space.overlay.show_statvis": false,
"space.overlay.show_text": true,
"space.overlay.show_vertex_normals": false,
"space.overlay.show_viewer_attribute": true,
"space.overlay.show_weight": false,
"space.overlay.show_wireframes": false,
"space.overlay.show_wpaint_contours": false,
"space.overlay.show_xray_bone": false,
"space.overlay.texture_paint_mode_opacity": 1.0,
"space.overlay.use_debug_freeze_view_culling": false,
"space.overlay.use_gpencil_canvas_xray": false,
"space.overlay.use_gpencil_edit_lines": true,
"space.overlay.use_gpencil_fade_gp_objects": false,
"space.overlay.use_gpencil_fade_layers": false,
"space.overlay.use_gpencil_fade_objects": false,
"space.overlay.use_gpencil_grid": false,
"space.overlay.use_gpencil_multiedit_line_only": false,
"space.overlay.use_gpencil_onion_skin": false,
"space.overlay.use_gpencil_show_directions": false,
"space.overlay.use_gpencil_show_material_name": false,
"space.overlay.use_normals_constant_screen_size": false,
"space.overlay.vertex_opacity": 1.0,
"space.overlay.vertex_paint_mode_opacity": 1.0,
"space.overlay.viewer_attribute_opacity": 1.0,
"space.overlay.weight_paint_mode_opacity": 1.0,
"space.overlay.wireframe_opacity": 1.0,
"space.overlay.wireframe_threshold": 0.0,
"space.overlay.xray_alpha_bone": 0.0
}
},
"Blender Default": {
"render_type": "VIEWPORT",
"raster_style": {
"bpy.data.worlds[0].color": [
0.05087608844041824,
0.05087608844041824,
0.05087608844041824
],
"scene.render.bake_bias": 0.0010000000474974513,
"scene.render.bake_margin": 16,
"scene.render.bake_margin_type": "ADJACENT_FACES",
"scene.render.bake_samples": 256,
"scene.render.bake_type": "NORMALS",
"scene.render.bake_user_scale": 0.0,
"scene.render.border_max_x": 1.0,
"scene.render.border_max_y": 1.0,
"scene.render.border_min_x": 0.0,
"scene.render.border_min_y": 0.0,
"scene.render.dither_intensity": 1.0,
"scene.render.engine": "BLENDER_EEVEE",
"scene.render.film_transparent": false,
"scene.render.filter_size": 1.5,
"scene.render.fps": 24,
"scene.render.fps_base": 1.0,
"scene.render.frame_map_new": 100,
"scene.render.frame_map_old": 100,
"scene.render.hair_subdiv": 0,
"scene.render.hair_type": "STRAND",
"scene.render.line_thickness": 1.0,
"scene.render.line_thickness_mode": "ABSOLUTE",
"scene.render.metadata_input": "SCENE",
"scene.render.motion_blur_shutter": 0.5,
"scene.render.pixel_aspect_x": 1.0,
"scene.render.pixel_aspect_y": 1.0,
"scene.render.preview_pixel_size": "AUTO",
"scene.render.resolution_percentage": 100,
"scene.render.resolution_x": 1000,
"scene.render.resolution_y": 1000,
"scene.render.sequencer_gl_preview": "SOLID",
"scene.render.simplify_child_particles": 1.0,
"scene.render.simplify_child_particles_render": 1.0,
"scene.render.simplify_gpencil": false,
"scene.render.simplify_gpencil_antialiasing": true,
"scene.render.simplify_gpencil_modifier": true,
"scene.render.simplify_gpencil_onplay": false,
"scene.render.simplify_gpencil_shader_fx": true,
"scene.render.simplify_gpencil_tint": true,
"scene.render.simplify_gpencil_view_fill": true,
"scene.render.simplify_shadows": 1.0,
"scene.render.simplify_shadows_render": 1.0,
"scene.render.simplify_subdivision": 6,
"scene.render.simplify_subdivision_render": 6,
"scene.render.simplify_volumes": 1.0,
"scene.render.stamp_font_size": 12,
"scene.render.stamp_note_text": "",
"scene.render.threads": 20,
"scene.render.threads_mode": "AUTO",
"scene.render.use_bake_clear": true,
"scene.render.use_bake_lores_mesh": false,
"scene.render.use_bake_multires": false,
"scene.render.use_bake_selected_to_active": false,
"scene.render.use_bake_user_scale": false,
"scene.render.use_border": false,
"scene.render.use_compositing": true,
"scene.render.use_crop_to_border": false,
"scene.render.use_file_extension": true,
"scene.render.use_freestyle": false,
"scene.render.use_high_quality_normals": false,
"scene.render.use_lock_interface": false,
"scene.render.use_motion_blur": false,
"scene.render.use_multiview": false,
"scene.render.use_overwrite": true,
"scene.render.use_persistent_data": false,
"scene.render.use_placeholder": false,
"scene.render.use_render_cache": false,
"scene.render.use_sequencer": true,
"scene.render.use_sequencer_override_scene_strip": false,
"scene.render.use_simplify": false,
"scene.render.use_single_layer": false,
"scene.render.use_stamp": false,
"scene.render.use_stamp_camera": true,
"scene.render.use_stamp_date": true,
"scene.render.use_stamp_filename": true,
"scene.render.use_stamp_frame": true,
"scene.render.use_stamp_frame_range": false,
"scene.render.use_stamp_hostname": false,
"scene.render.use_stamp_labels": true,
"scene.render.use_stamp_lens": false,
"scene.render.use_stamp_marker": false,
"scene.render.use_stamp_memory": false,
"scene.render.use_stamp_note": false,
"scene.render.use_stamp_render_time": true,
"scene.render.use_stamp_scene": true,
"scene.render.use_stamp_sequencer_strip": false,
"scene.render.use_stamp_time": true,
"scene.render.views_format": "STEREO_3D",
"scene.view_settings.exposure": 0.0,
"scene.view_settings.gamma": 1.0,
"scene.view_settings.look": "None",
"scene.view_settings.use_curve_mapping": false,
"scene.view_settings.view_transform": "Filmic",
"scene.display.shading.aov_name": "",
"scene.display.shading.background_color": [
0.0,
0.0,
0.0
],
"scene.display.shading.background_type": "THEME",
"scene.display.shading.cavity_ridge_factor": 1.0,
"scene.display.shading.cavity_type": "WORLD",
"scene.display.shading.cavity_valley_factor": 1.0,
"scene.display.shading.color_type": "MATERIAL",
"scene.display.shading.curvature_ridge_factor": 0.0,
"scene.display.shading.curvature_valley_factor": 0.0,
"scene.display.shading.light": "STUDIO",
"scene.display.shading.object_outline_color": [
0.0,
0.0,
0.0
],
"scene.display.shading.render_pass": "COMBINED",
"scene.display.shading.shadow_intensity": 0.5,
"scene.display.shading.show_backface_culling": false,
"scene.display.shading.show_cavity": false,
"scene.display.shading.show_object_outline": false,
"scene.display.shading.show_shadows": false,
"scene.display.shading.show_specular_highlight": true,
"scene.display.shading.show_xray": false,
"scene.display.shading.show_xray_wireframe": false,
"scene.display.shading.single_color": [
0.800000011920929,
0.800000011920929,
0.800000011920929
],
"scene.display.shading.studio_light": "Default",
"scene.display.shading.studiolight_background_alpha": 0.0,
"scene.display.shading.studiolight_background_blur": 0.0,
"scene.display.shading.studiolight_intensity": 0.0,
"scene.display.shading.studiolight_rotate_z": 0.0,
"scene.display.shading.type": "RENDERED",
"scene.display.shading.use_compositor": "DISABLED",
"scene.display.shading.use_dof": false,
"scene.display.shading.use_scene_lights": false,
"scene.display.shading.use_scene_lights_render": false,
"scene.display.shading.use_scene_world": false,
"scene.display.shading.use_scene_world_render": false,
"scene.display.shading.use_studiolight_view_rotation": true,
"scene.display.shading.use_world_space_lighting": false,
"scene.display.shading.wireframe_color_type": "MATERIAL",
"scene.display.shading.xray_alpha": 0.5,
"scene.display.shading.xray_alpha_wireframe": 0.0,
"scene.display.light_direction": [
0.5773502588272095,
0.5773502588272095,
0.5773502588272095
],
"scene.display.matcap_ssao_attenuation": 1.0,
"scene.display.matcap_ssao_distance": 0.20000000298023224,
"scene.display.matcap_ssao_samples": 16,
"scene.display.render_aa": "8",
"scene.display.shadow_focus": 0.0,
"scene.display.shadow_shift": 0.10000000149011612,
"scene.display.viewport_aa": "FXAA",
"space.overlay.backwire_opacity": 0.5,
"space.overlay.bone_wire_alpha": 1.0,
"space.overlay.display_handle": "SELECTED",
"space.overlay.fade_inactive_alpha": 0.4000000059604645,
"space.overlay.gpencil_fade_layer": 0.5,
"space.overlay.gpencil_fade_objects": 0.5,
"space.overlay.gpencil_grid_opacity": 0.5,
"space.overlay.gpencil_vertex_paint_opacity": 1.0,
"space.overlay.grid_lines": 16,
"space.overlay.grid_scale": 1.0,
"space.overlay.grid_subdivisions": 10,
"space.overlay.normals_constant_screen_size": 7.0,
"space.overlay.normals_length": 0.10000000149011612,
"space.overlay.sculpt_curves_cage_opacity": 0.5,
"space.overlay.sculpt_mode_face_sets_opacity": 1.0,
"space.overlay.sculpt_mode_mask_opacity": 0.75,
"space.overlay.show_annotation": true,
"space.overlay.show_axis_x": true,
"space.overlay.show_axis_y": true,
"space.overlay.show_axis_z": false,
"space.overlay.show_bones": true,
"space.overlay.show_cursor": true,
"space.overlay.show_curve_normals": false,
"space.overlay.show_edge_bevel_weight": true,
"space.overlay.show_edge_crease": true,
"space.overlay.show_edge_seams": true,
"space.overlay.show_edge_sharp": true,
"space.overlay.show_edges": false,
"space.overlay.show_extra_edge_angle": false,
"space.overlay.show_extra_edge_length": false,
"space.overlay.show_extra_face_angle": false,
"space.overlay.show_extra_face_area": false,
"space.overlay.show_extra_indices": false,
"space.overlay.show_extras": true,
"space.overlay.show_face_center": false,
"space.overlay.show_face_normals": false,
"space.overlay.show_face_orientation": false,
"space.overlay.show_faces": true,
"space.overlay.show_fade_inactive": false,
"space.overlay.show_floor": true,
"space.overlay.show_freestyle_edge_marks": true,
"space.overlay.show_freestyle_face_marks": true,
"space.overlay.show_look_dev": false,
"space.overlay.show_motion_paths": true,
"space.overlay.show_object_origins": true,
"space.overlay.show_object_origins_all": false,
"space.overlay.show_occlude_wire": false,
"space.overlay.show_onion_skins": false,
"space.overlay.show_ortho_grid": true,
"space.overlay.show_outline_selected": true,
"space.overlay.show_overlays": true,
"space.overlay.show_paint_wire": false,
"space.overlay.show_relationship_lines": true,
"space.overlay.show_sculpt_curves_cage": true,
"space.overlay.show_sculpt_face_sets": true,
"space.overlay.show_sculpt_mask": true,
"space.overlay.show_split_normals": false,
"space.overlay.show_stats": false,
"space.overlay.show_statvis": false,
"space.overlay.show_text": true,
"space.overlay.show_vertex_normals": false,
"space.overlay.show_viewer_attribute": true,
"space.overlay.show_weight": false,
"space.overlay.show_wireframes": false,
"space.overlay.show_wpaint_contours": false,
"space.overlay.show_xray_bone": false,
"space.overlay.texture_paint_mode_opacity": 1.0,
"space.overlay.use_debug_freeze_view_culling": false,
"space.overlay.use_gpencil_canvas_xray": false,
"space.overlay.use_gpencil_edit_lines": true,
"space.overlay.use_gpencil_fade_gp_objects": false,
"space.overlay.use_gpencil_fade_layers": false,
"space.overlay.use_gpencil_fade_objects": false,
"space.overlay.use_gpencil_grid": false,
"space.overlay.use_gpencil_multiedit_line_only": false,
"space.overlay.use_gpencil_onion_skin": false,
"space.overlay.use_gpencil_show_directions": false,
"space.overlay.use_gpencil_show_material_name": false,
"space.overlay.use_normals_constant_screen_size": false,
"space.overlay.vertex_opacity": 1.0,
"space.overlay.vertex_paint_mode_opacity": 1.0,
"space.overlay.viewer_attribute_opacity": 1.0,
"space.overlay.weight_paint_mode_opacity": 1.0,
"space.overlay.wireframe_opacity": 1.0,
"space.overlay.wireframe_threshold": 1.0,
"space.overlay.xray_alpha_bone": 0.0
}
}
}
@@ -0,0 +1,72 @@
<?xml version="1.0" encoding="utf-8" ?>
<svg baseProfile="full" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="rectangle-tag">
<rect x="-6" y="-2.5" width="12" height="5" fill="white" stroke="black" style="stroke-width: 0.25;" />
</g>
<g id="triangle-tag">
<path style="fill: white; stroke: black; stroke-width: 0.25;" d="M 3.1409425e-7,-7.1069207 5.7650623,2.8784603 l -11.5301246,-6e-7 z" />
</g>
<g id="hexagon-tag">
<path style="fill: white; stroke: black; stroke-width: 0.25;" d="m 0.0161133,-6.0583333 5.2339915,3.8366023 -2.031433,6.1633977 c 0,0 -6.4894866,-0.027414 -6.4894866,-0.027414 l -1.97929,-6.1803395 5.2662181,-3.7922467" />
</g>
<g id="capsule-tag">
<rect x="-6" y="-2.5" width="12" height="5" rx="2.5" ry="2.5" fill="white" stroke="black" style="stroke-width: 0.25;" />
</g>
<g id="circle-tag">
<circle r="5" fill="white" stroke="black" style="stroke-width: 0.25;" />
</g>
<g id="door-tag">
<circle r="5" fill="white" stroke="black" style="stroke-width: 0.25;" />
<text y="-1.75" class="regular" text-anchor="middle" dominant-baseline="middle" data-type="text-template"></text>
<line x1="-5" x2="5" style="stroke: black; stroke-width: 0.25;" />
<text y="2.5" class="regular" text-anchor="middle" dominant-baseline="middle" data-type="text-template"></text>
</g>
<g id="window-tag">
<path style="fill: white; stroke: black; stroke-width: 0.25;" d="m 0.0161133,-6.0583333 5.2339915,3.8366023 -2.031433,6.1633977 c 0,0 -6.4894866,-0.027414 -6.4894866,-0.027414 l -1.97929,-6.1803395 5.2662181,-3.7922467" />
</g>
<g id="space-tag">
<text y="-5" class="large" text-anchor="middle" dominant-baseline="middle" data-type="text-template"></text>
<rect x="-6" y="-2.5" width="12" height="5" fill="white" stroke="black" style="stroke-width: 0.25;" />
<text class="regular" text-anchor="middle" dominant-baseline="middle" data-type="text-template"></text>
<text y="5" class="regular" text-anchor="middle" dominant-baseline="middle" data-type="text-template"></text>
</g>
<g id="elevation-arrow">
<path style="fill: black;" d="M -7.07106 0 0 -7.07106 7.07106 0" />
</g>
<g id="elevation-tag">
<circle r="5" fill="white" stroke="black" style="stroke-width: 0.25;" />
<line x1="-5" y1="0" x2="5" y2="0" style="stroke: black; stroke-width: 0.25;" />
</g>
<g id="section-arrow">
<path style="fill: black;" d="M -7.07106 0 0 -7.07106 7.07106 0" />
</g>
<g id="section-tag">
<circle r="5" fill="white" stroke="black" style="stroke-width: 0.25;" />
<line x1="-5" y1="0" x2="5" y2="0" style="stroke: black; stroke-width: 0.25;" />
</g>
<g id="dot">
<circle r="1" fill="black" stroke="black" style="stroke-width: 0.25;" />
</g>
<g id="setout-tag">
<circle fill="white" stroke="black" r="2.5" style="stroke-width: 0.5"/>
<path d="M 0 0 L -2.5 0 A 2.5 2.5 0 0 1 0 -2.5 Z" fill="black"/>
<path d="M 0 0 L 2.5 0 A 2.5 2.5 0 0 1 0 2.5 Z" fill="black"/>
<text x="3" y="-8" class="regular" text-anchor="start" dominant-baseline="auto" data-type="text-template"></text>
<text x="3" y="-4" class="regular" text-anchor="start" dominant-baseline="auto" data-type="text-template"></text>
</g>
<g id="setout-point">
<circle fill="white" stroke="black" r="2.5" style="stroke-width: 0.5"/>
<path d="M 0 0 L -2.5 0 A 2.5 2.5 0 0 1 0 -2.5 Z" fill="black"/>
<path d="M 0 0 L 2.5 0 A 2.5 2.5 0 0 1 0 2.5 Z" fill="black"/>
</g>
<g id="control-point">
<path style="fill: white; stroke: black; stroke-width: 0.5;" d="M 2.286165,1.4798666 H -1.0000316e-7 -2.2861651 L -1.1430826,-0.5000101 -1.0000316e-7,-2.479888 1.1430827,-0.5000101 Z" />
<circle r="0.5" fill="black" stroke="black" style="stroke-width: 0.25;" />
</g>
<g id="traverse-point">
<path style="fill: white; stroke: black; stroke-width: 0.5;" d="M -2,-2 2,2 M -2,2 2,-2" />
</g>
<g id="spot-elevation">
<path style="fill: white; stroke: black; stroke-width: 0.5;" d="M 0,-2 0,2 M -2,0 2,0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

@@ -1,67 +1,55 @@
<link href="jsgantt.css" rel="stylesheet" type="text/css"/>
<link href="../../module/sequence/gantt/main.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 type="text/javascript" src="../../module/sequence/gantt/index.js"></script>
<script>
var json_data = `{{{json_data}}}`;
</script>
<div id="options" class="no-print">
<h4>Choose a language:
<select id="lang" class="sweet_button" onchange="set_language(event)">
<option value='cn'>Chinese (cn)</option>
<option value='cs'>Czech (cs)</option>
<option value='nl'>Dutch (Standard)</option>
<option value='en' selected>English (en)</option>
<option value='fr'>French (fr)</option>
<option value='de'>German (de)</option>
<option value='hu'>Hungarian (hu)</option>
<option value='id'>Indonesian (id)</option>
<option value='it'>Italian (it)</option>
<option value='ja'>Japanese (ja)</option>
<option value='pt'>Portuguese (pt)</option>
<option value='ru'>Russian (ru)</option>
<option value='es'>Spanish (es)</option>
<option value='sv'>Swedish (sv)</option>
<option value='tr'>Turkish (tr)</option>
</select>
</h4>
<br>
</div>
<div class="top-right no-print" id="print_options">
<select class="sweet_button" id="print_page_size">
<option value="210,297">A4 Portrait</option>
<option value="297,210">A4 Landscape</option>
<option value="297,420">A3 Portrait</option>
<option value="420,297">A3 Landscape</option>
<option value="420,594">A2 Portrait</option>
<option value="594,420">A2 Landscape</option>
<option value="594,841">A1 Portrait</option>
<option value="841,594">A1 Landscape</option>
<option value="841,1189">A0 Portrait</option>
<option value="1189,841">A0 Landscape</option>
</select>
</div>
<div id="schedule-data" class="no-print"></div>
<div id="schedule-header" style=""></div>
<div style="position:relative" class="gantt" id="GanttChartDIV"></div>
<script>
var data = `{{{data}}}`;
setupPage(data);
create_gantt_chart(atob(json_data))
</script>
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -5,20 +5,28 @@ FILE_NAME('EPset_Drawing.ifc','2020-01-01T00:00:00',(),(),'EPset_Drawing','EPset
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));
#1=IFCPROPERTYSETTEMPLATE('2JhNIvqZrFnAgxfhK0XVQX',$,'EPset_Drawing','',.PSET_OCCURRENCEDRIVEN.,'IfcAnnotation',(#2,#3,#4,#5,#6,#7,#8,#9,#10,#11,#12,#13,#14,#15,#16,#17,#18,#19,#20,#21,#22,#23));
#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.);
#3=IFCSIMPLEPROPERTYTEMPLATE('1yVWUt5H9DAOuu0OaMMLpe',$,'Scale','The scale of this drawing represented as a numerator and denominator, such as 1/100',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
#4=IFCSIMPLEPROPERTYTEMPLATE('3gsuPBtU93b8f0gg1pjkq6',$,'HumanScale','The scale of this drawing in human readable format, such as 1:100',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
#5=IFCSIMPLEPROPERTYTEMPLATE('2T$a4OFsv2LeD5JeBKEV4f',$,'IsNTS','Whether or not the scale is intended to be significant',.P_SINGLEVALUE.,'IfcBoolean',$,$,$,$,$,.READWRITE.);
#6=IFCSIMPLEPROPERTYTEMPLATE('0AK5C2UpL4$eaac2LszAx$',$,'HasUnderlay','',.P_SINGLEVALUE.,'IfcBoolean',$,$,$,$,$,.READWRITE.);
#7=IFCSIMPLEPROPERTYTEMPLATE('2j2ZEZR8X5tONm7kli5hM6',$,'HasLinework','',.P_SINGLEVALUE.,'IfcBoolean',$,$,$,$,$,.READWRITE.);
#8=IFCSIMPLEPROPERTYTEMPLATE('1ttChRysH9UuEX2FeMj5Hu',$,'HasAnnotation','',.P_SINGLEVALUE.,'IfcBoolean',$,$,$,$,$,.READWRITE.);
#9=IFCSIMPLEPROPERTYTEMPLATE('2NPPxuABv1huDTVh32TFgw',$,'GlobalReferencing','',.P_SINGLEVALUE.,'IfcBoolean',$,$,$,$,$,.READWRITE.);
#10=IFCSIMPLEPROPERTYTEMPLATE('10hT_1zrzEbRRKMXYAWvtD',$,'Metadata','',.P_SINGLEVALUE.,'IfcText',$,$,$,$,$,.READWRITE.);
#11=IFCSIMPLEPROPERTYTEMPLATE('3Z0BXPSG5CWgtI33ioV7aj',$,'Include','Selector expression to include ifc elements in the drawing',.P_SINGLEVALUE.,'IfcText',$,$,$,$,$,.READWRITE.);
#12=IFCSIMPLEPROPERTYTEMPLATE('1RVts_g3PAw98PJA2yL3bO',$,'Exclude','Selector expression to exclude ifc elements in the drawing',.P_SINGLEVALUE.,'IfcText',$,$,$,$,$,.READWRITE.);
#13=IFCSIMPLEPROPERTYTEMPLATE('0c1$8NpYDEaBiJrj16jHIo',$,'Stylesheet','',.P_SINGLEVALUE.,'IfcText',$,$,$,$,$,.READWRITE.);
#14=IFCSIMPLEPROPERTYTEMPLATE('3mRF52q81FQB$h4oTh7M45',$,'Markers','',.P_SINGLEVALUE.,'IfcText',$,$,$,$,$,.READWRITE.);
#15=IFCSIMPLEPROPERTYTEMPLATE('1rhr_0N3LDtuORcEJP0KXM',$,'Symbols','',.P_SINGLEVALUE.,'IfcText',$,$,$,$,$,.READWRITE.);
#16=IFCSIMPLEPROPERTYTEMPLATE('2sHDBuW7P4TROy$hL2w7ct',$,'Patterns','',.P_SINGLEVALUE.,'IfcText',$,$,$,$,$,.READWRITE.);
#17=IFCSIMPLEPROPERTYTEMPLATE('1$xfo9EVb26QLqmPll2_RK',$,'MetricPrecision','',.P_SINGLEVALUE.,'IfcReal',$,$,$,$,$,.READWRITE.);
#18=IFCSIMPLEPROPERTYTEMPLATE('38uAtrp9nD_901NO42zd$7',$,'ImperialPrecision','',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
#19=IFCSIMPLEPROPERTYTEMPLATE('1MX0uffTL6TOvtvEJpxFmk',$,'DecimalPlaces','',.P_SINGLEVALUE.,'IfcInteger',$,$,$,$,$,.READWRITE.);
#20=IFCSIMPLEPROPERTYTEMPLATE('0joEq0Rd10cxweEh0NeHT6',$,'JoinCriteria','Comma separated selection keys which determine what cut objects are to be joined.',.P_SINGLEVALUE.,'IfcText',$,$,$,$,$,.READWRITE.);
#21=IFCSIMPLEPROPERTYTEMPLATE('0nYMT3OSj5gArVniCWZRtv',$,'ShadingStyles','',.P_SINGLEVALUE.,'IfcText',$,$,$,$,$,.READWRITE.);
#22=IFCSIMPLEPROPERTYTEMPLATE('3VWG22eZXBdQwdKlzMeVQH',$,'CurrentShadingStyle','',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
#23=IFCSIMPLEPROPERTYTEMPLATE('28mJ$GDxb7kBbKFH_rACMQ',$,'AngleDecimalPlaces','',.P_SINGLEVALUE.,'IfcInteger',$,$,$,$,$,.READWRITE.);
ENDSEC;
END-ISO-10303-21;
@@ -0,0 +1,13 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION((),'2;1');
FILE_NAME('EPset_Status.ifc','2020-01-01T00:00:00',(),(),'EPset_Status','EPset_Status',$);
FILE_SCHEMA(('IFC4'));
ENDSEC;
DATA;
#1=IFCPROPERTYSETTEMPLATE('3JoyTt$cz4fhYuQvJeTMhs',$,'EPset_Status','',.PSET_TYPEDRIVENOVERRIDE.,'IfcProduct',(#2,#4));
#2= IFCSIMPLEPROPERTYTEMPLATE('2HBOdOfz5E3hZ7IBLCq$$D',$,'Status','Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure).',.P_ENUMERATEDVALUE.,'IfcLabel',$,#3,$,$,$,.READWRITE.);
#3= IFCPROPERTYENUMERATION('EPEnum_ElementStatus',(IFCLABEL('NEW'),IFCLABEL('EXISTING'),IFCLABEL('DEMOLISH'),IFCLABEL('TEMPORARY'),IFCLABEL('OTHER'),IFCLABEL('NOTKNOWN'),IFCLABEL('UNSET')),$);
#4=IFCSIMPLEPROPERTYTEMPLATE('3ttXxqmlz62BlxjzEPpqvH',$,'UserDefinedStatus','',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
ENDSEC;
END-ISO-10303-21;
@@ -0,0 +1,16 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION((),'2;1');
FILE_NAME('EQto_BodyGeometryValidation.ifc','2020-01-01T00:00:00',(),(),'EQto_BodyGeometryValidation','EQto_BodyGeometryValidation',$);
FILE_SCHEMA(('IFC4'));
ENDSEC;
DATA;
#1=IFCPROPERTYSETTEMPLATE('2KS9su6r517uLXTGKwwDdn',$,'EQto_BodyGeometryValidation','Quantities supplied for validating the correct interpretation of the body shape representation at import. In case of multiple representation items, the quantities are summed for each of the items (irrespective of any overlap). Choosing a suitable tolerance value for comparing the supplied numbers to the numbers calculated from the reconstructed geometry is at the discretion of the importing application.',.QTO_OCCURRENCEDRIVEN.,'IfcProduct',(#2,#3,#4,#5,#6,#7));
#2=IFCSIMPLEPROPERTYTEMPLATE('3iCdOOLRjCwQ_HRTB41Xh8',$,'GrossSurfaceArea','Total gross area of the object, normally generated as perimeter * length + 2 * cross section area. It is the sum of OuterSurfaceArea + (2 x CrossSectionArea) and shall only be given, if the OuterSurfaceArea and CrossSectionArea cannot be established separately.\X2\000A000A\X0\Total gross surface area of the element before applying product-level geometric features such as openings and projections.',.Q_AREA.,$,$,$,$,$,$,.READWRITE.);
#3=IFCSIMPLEPROPERTYTEMPLATE('0juemEqF5889vg7HwR87Fv',$,'NetSurfaceArea','Net surface area of the object, normally generated as perimeter * length + 2 * cross section area taking into account possible processing features (cut-out''s, etc.) or openings and recesses.\X2\000A000A\X0\Total net surface area of the element after applying product-level geometric features such as openings and projections.',.Q_AREA.,$,$,$,$,$,$,.READWRITE.);
#4=IFCSIMPLEPROPERTYTEMPLATE('1LUuLSnMXFDgGLBCvte8aH',$,'GrossVolume','Total gross volume of the object. Openings, recesses, enclosed objects and projections are not taken into account.\X2\000A000A\X0\Total gross volume of the element before applying product-level geometric features such as openings and projections.',.Q_VOLUME.,$,$,$,$,$,$,.READWRITE.);
#5=IFCSIMPLEPROPERTYTEMPLATE('0ny7TXUFz8wvnoQ2eU8czF',$,'NetVolume','Total net volume of the object, taking into account possible processing features (cut-out''s, etc.) or openings and recesses.\X2\000A000A\X0\Total net volume of the element before applying product-level geometric features such as openings and projections.',.Q_VOLUME.,$,$,$,$,$,$,.READWRITE.);
#6=IFCSIMPLEPROPERTYTEMPLATE('31g8_gdUv8KRkOWzW48KoP',$,'SurfaceGenusBeforeFeatures','The Surface Genus of the evaluated representation items before applying product-level geometric features such as openings and projections.Surface Genus is a topological measure that represents the number of "holes" or "handles" on a surface. For example, a sphere has genus 0, and a torus has genus 1.Computed using the Euler characteristic:$$\\chi=V-E+F$$With the numbers of vertices (V), edges (E) and faces (F)$$\\chi=2\X2\2212\X0\2g\X2\2212\X0\b$$With surface genus (g) and the number of boundaries (b) the latter zero in case of an enclosed volume.',.Q_COUNT.,$,$,$,$,$,$,.READWRITE.);
#7=IFCSIMPLEPROPERTYTEMPLATE('3kBBtGUebC09mUggGTKpjj',$,'SurfaceGenusAfterFeatures','The Surface Genus of the evaluated representation items after applying product-level geometric features such as openings and projections.Surface Genus is a topological measure that represents the number of "holes" or "handles" on a surface. For example, a sphere has genus 0, and a torus has genus 1.Computed using the Euler characteristic:$$\\chi=V-E+F$$With the numbers of vertices (V), edges (E) and faces (F)$$\\chi=2\X2\2212\X0\2g\X2\2212\X0\b$$With surface genus (g) and the number of boundaries (b) the latter zero in case of an enclosed volume.',.Q_COUNT.,$,$,$,$,$,$,.READWRITE.);
ENDSEC;
END-ISO-10303-21;
@@ -5,18 +5,34 @@ FILE_NAME('Psets_BBIM_Annotation.ifc','2020-01-01T00:00:00',(),(),'Psets_BBIM_An
FILE_SCHEMA(('IFC4'));
ENDSEC;
DATA;
#1=IFCPROPERTYSETTEMPLATE('3VuPUwdCD2Qx3XDDRs0R1N',$,'EPset_Annotation','',.PSET_OCCURRENCEDRIVEN.,'IfcAnnotation',(#2,#3,#4));
#1=IFCPROPERTYSETTEMPLATE('3VuPUwdCD2Qx3XDDRs0R1N',$,'EPset_Annotation','',.PSET_OCCURRENCEDRIVEN.,'IfcAnnotation,IfcTypeProduct',(#2,#3,#4));
#2=IFCSIMPLEPROPERTYTEMPLATE('2P7JN79n96Q9pElZ83LKe4',$,'ZIndex','',.P_SINGLEVALUE.,'IfcInteger',$,$,$,$,$,.READWRITE.);
#3=IFCSIMPLEPROPERTYTEMPLATE('1Wpx_r2xj1_9w5JpI0QRJy',$,'Symbol','',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
#4=IFCSIMPLEPROPERTYTEMPLATE('3q0oxMUKP47vZ4jnyG$dDb',$,'Classes','Classes separarated by spaces that end up in classes for this element in svg. Can be used to specify the text font size: small - 1.8mm; regular - 2.5mm; large - 3.5mm; header - 5mm; title - 7mm. By default regular size is used.',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
#5=IFCPROPERTYSETTEMPLATE('0iKwujnQL9IevVQato8f7Z',$,'BBIM_Batting','',.PSET_OCCURRENCEDRIVEN.,'IfcAnnotation',(#6,#7));
#5=IFCPROPERTYSETTEMPLATE('0iKwujnQL9IevVQato8f7Z',$,'BBIM_Batting','',.PSET_OCCURRENCEDRIVEN.,'IfcAnnotation,IfcTypeProduct',(#6,#7));
#6=IFCSIMPLEPROPERTYTEMPLATE('0t2LEesGT1QRQtrIZUAR8L',$,'Thickness','Batting thickness',.P_SINGLEVALUE.,'IfcPositiveLengthMeasure',$,$,$,$,$,.READWRITE.);
#7=IFCSIMPLEPROPERTYTEMPLATE('082PndS6v2kBOiJoSboMnh',$,'Reverse pattern direction','Reverse batting pattern (swap starting and ending points)',.P_SINGLEVALUE.,'IfcBoolean',$,$,$,$,$,.READWRITE.);
#8=IFCPROPERTYSETTEMPLATE('1Dx2EiZnP67xotInXpwz90',$,'BBIM_Section','',.PSET_OCCURRENCEDRIVEN.,'IfcAnnotation',(#9,#10,#11,#12,#13));
#8=IFCPROPERTYSETTEMPLATE('1Dx2EiZnP67xotInXpwz90',$,'BBIM_Section','',.PSET_OCCURRENCEDRIVEN.,'IfcAnnotation,IfcTypeProduct',(#9,#10,#11,#12,#13));
#9=IFCSIMPLEPROPERTYTEMPLATE('2a_9s8spHDc9dZHtgg71XL',$,'ShowStartArrow','Display start arrow.',.P_SINGLEVALUE.,'IfcBoolean',$,$,$,$,$,.READWRITE.);
#10=IFCSIMPLEPROPERTYTEMPLATE('3i6SH_GbT7zhKea$wVE56A',$,'StartArrowSymbol','Custom symbol for the start of the section marker arrow. Need to make sure it''s present in "symbols.svg".',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
#11=IFCSIMPLEPROPERTYTEMPLATE('1DtsPn5a9FG8$zXHDDMavY',$,'ShowEndArrow','Display end arrow.',.P_SINGLEVALUE.,'IfcBoolean',$,$,$,$,$,.READWRITE.);
#12=IFCSIMPLEPROPERTYTEMPLATE('2$6U0mLI9AiPRWeBabdY3u',$,'EndArrowSymbol','Custom symbol for the end of the section marker arrow. Need to make sure it''s present in "symbols.svg".',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
#13=IFCSIMPLEPROPERTYTEMPLATE('1naFqntIL7igCY7hCaE7kq',$,'HasConnectedSectionLine','Connect or disconnect section markers with line (by default = True).',.P_SINGLEVALUE.,'IfcBoolean',$,$,$,$,$,.READWRITE.);
#14=IFCPROPERTYSETTEMPLATE('3V8oZ8YRD3_O7uR5vcUleS',$,'BBIM_Documentation','',.PSET_OCCURRENCEDRIVEN.,'IfcProject',(#15,#16,#17,#18,#19,#20,#21,#22,#23));
#15=IFCSIMPLEPROPERTYTEMPLATE('0ulAhgk3v9qfGlDILauR6J',$,'SheetsDir','Default sheets directory',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
#16=IFCSIMPLEPROPERTYTEMPLATE('2yvlVKiQXASucfH40deCvu',$,'LayoutsDir','Default layouts directory',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
#17=IFCSIMPLEPROPERTYTEMPLATE('2kXZqXicL3jRwsOnLM_0ho',$,'TitleblocksDir','Default titleblocks directory',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
#18=IFCSIMPLEPROPERTYTEMPLATE('1lmOfo9Bf9beMBJkCZKf5Y',$,'DrawingsDir','Default drawings directory',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
#19=IFCSIMPLEPROPERTYTEMPLATE('30cOKpb4D9CADKM04$N9X3',$,'StylesheetPath','Default stylesheet CSS',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
#20=IFCSIMPLEPROPERTYTEMPLATE('23tejOrxj859R_eCRp1AFP',$,'MarkersPath','Default markers SVG',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
#21=IFCSIMPLEPROPERTYTEMPLATE('1UDakJ5_f7kBhggNSW4$h5',$,'SymbolsPath','Default symbols SVG',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
#22=IFCSIMPLEPROPERTYTEMPLATE('0d53LEtgLDQxnv__NfgH7i',$,'PatternsPath','Default patterns SVG',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
#23=IFCSIMPLEPROPERTYTEMPLATE('26qFNMv7nCHgU6Jd7Anga5',$,'ShadingStylesPath','Default shading styles',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
#24=IFCPROPERTYSETTEMPLATE('0I9merLinF5Ap$aZwaclgm',$,'BBIM_Dimension','',.PSET_OCCURRENCEDRIVEN.,'IfcAnnotation,IfcTypeProduct',(#25,#26,#27,#28));
#25=IFCSIMPLEPROPERTYTEMPLATE('1rL2AbQsXD8RbpoWH5pYOV',$,'ShowDescriptionOnly','Hide the measurement values and show only annotation description',.P_SINGLEVALUE.,'IfcBoolean',$,$,$,$,$,.READWRITE.);
#26=IFCSIMPLEPROPERTYTEMPLATE('0SVyOfB0rC2xNfdRYf3XvY',$,'SuppressZeroInches','Suppress 0 inch values in dimension annotation text (for example: 12'' - 0" -> 12'')',.P_SINGLEVALUE.,'IfcBoolean',$,$,$,$,$,.READWRITE.);
#27=IFCSIMPLEPROPERTYTEMPLATE('2bUmj458PBqPAtUoI3MXsb',$,'TextPrefix','Text to add before annotation measurement value',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
#28=IFCSIMPLEPROPERTYTEMPLATE('0bnzttUb9BPuN597uNTXOE',$,'TextSuffix','Text to add after annotation measurement value',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
ENDSEC;
END-ISO-10303-21;
@@ -0,0 +1,23 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');
FILE_NAME('','2023-09-28T23:00:50',(),(),'IfcOpenShell v0.7.0-fbd8ea1ed','IfcOpenShell v0.7.0-fbd8ea1ed','');
FILE_SCHEMA(('IFC4'));
ENDSEC;
DATA;
#1=IFCPROPERTYSETTEMPLATE('1TLQmgUKf0I8Zi07bm9Jqn',$,'ePSet_ProjectedCRS','',.PSET_OCCURRENCEDRIVEN.,'IfcProject',(#2,#3,#4,#5,#6,#7));
#2=IFCSIMPLEPROPERTYTEMPLATE('2cH53PtVT3v88uf_uGFblG',$,'Name','',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.);
#3=IFCSIMPLEPROPERTYTEMPLATE('3JsReA6vXDqR7aNC$haRYW',$,'Description','',.P_SINGLEVALUE.,'IfcText',$,$,$,$,$,.READWRITE.);
#4=IFCSIMPLEPROPERTYTEMPLATE('0u0uEsT5HFtuX5GvozO9ba',$,'GeodeticDatum','',.P_SINGLEVALUE.,'IfcIdentifier',$,$,$,$,$,.READWRITE.);
#5=IFCSIMPLEPROPERTYTEMPLATE('1JgEX9Fsf0$ggxYltdkqiY',$,'VerticalDatum','',.P_SINGLEVALUE.,'IfcIdentifier',$,$,$,$,$,.READWRITE.);
#6=IFCSIMPLEPROPERTYTEMPLATE('3ahTZjYrD0MAOo5IH6QuGH',$,'MapProjection','',.P_SINGLEVALUE.,'IfcIdentifier',$,$,$,$,$,.READWRITE.);
#7=IFCSIMPLEPROPERTYTEMPLATE('3hqJR2ghD0GAti7q4sXKj7',$,'MapZone','',.P_SINGLEVALUE.,'IfcIdentifier',$,$,$,$,$,.READWRITE.);
#8=IFCPROPERTYSETTEMPLATE('1jGHTycOj0vA8xHfRl4TNs',$,'ePSet_MapConversion','',.PSET_OCCURRENCEDRIVEN.,'IfcProject',(#9,#10,#11,#12,#13,#15));
#9=IFCSIMPLEPROPERTYTEMPLATE('0nxsULXo17JRrAvNteYtNR',$,'Eastings','',.P_SINGLEVALUE.,'IfcLengthMeasure',$,$,$,$,$,.READWRITE.);
#10=IFCSIMPLEPROPERTYTEMPLATE('26RfaGJs5CqemN0Xin12XL',$,'Northings','',.P_SINGLEVALUE.,'IfcLengthMeasure',$,$,$,$,$,.READWRITE.);
#11=IFCSIMPLEPROPERTYTEMPLATE('0ziCn3nZv3m850VEUwWH42',$,'OrthogonalHeight','',.P_SINGLEVALUE.,'IfcLengthMeasure',$,$,$,$,$,.READWRITE.);
#12=IFCSIMPLEPROPERTYTEMPLATE('3d4BOt4In8WR119ms1SaAe',$,'XAxisAbscissa','',.P_SINGLEVALUE.,'IfcReal',$,$,$,$,$,.READWRITE.);
#13=IFCSIMPLEPROPERTYTEMPLATE('1Q4Voqj2j84RQRI8l67m28',$,'XAxisOrdinate','',.P_SINGLEVALUE.,'IfcReal',$,$,$,$,$,.READWRITE.);
#15=IFCSIMPLEPROPERTYTEMPLATE('0O1Hc0$XnDNOG_jPBmbW5r',$,'Scale','',.P_SINGLEVALUE.,'IfcReal',$,$,$,$,$,.READWRITE.);
ENDSEC;
END-ISO-10303-21;
File diff suppressed because one or more lines are too long
@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<svg baseProfile="full" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="rectangle-tag">
<rect x="-6" y="-2.5" width="12" height="5" fill="white" stroke="black" style="stroke-width: 0.25;" />
</g>
<g id="door-tag">
<circle cy="1.75" r="5" fill="white" stroke="black" style="stroke-width: 0.25;" />
<text text-anchor="middle" dominant-baseline="middle" data-type="text-template"></text>
<line x1="-5" y1="1.75" x2="5" y2="1.75" style="stroke: black; stroke-width: 0.25;" />
<text y="5" text-anchor="middle" dominant-baseline="middle" data-type="text-template"></text>
</g>
<g id="elevation-arrow">
<path style="fill: black;" d="M -7.07106 0 0 -7.07106 7.07106 0" />
</g>
<g id="elevation-tag">
<circle r="5" fill="white" stroke="black" style="stroke-width: 0.25;" />
<line x1="-5" y1="0" x2="5" y2="0" style="stroke: black; stroke-width: 0.25;" />
</g>
<g id="section-arrow">
<path style="fill: black;" d="M -7.07106 0 0 -7.07106 7.07106 0" />
</g>
<g id="section-tag">
<circle r="5" fill="white" stroke="black" style="stroke-width: 0.25;" />
<line x1="-5" y1="0" x2="5" y2="0" style="stroke: black; stroke-width: 0.25;" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

@@ -1,214 +0,0 @@
# BlenderBIM Add-on - OpenBIM Blender Add-on
# Copyright (C) 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/>.
presets = {
"Basic": ["project", "search", "bcf", "attribute", "spatial", "pset", "qto"],
"Admin": [
"project",
"search",
"bcf",
"root",
"unit",
"model",
"georeference",
"context",
"drawing",
"misc",
"attribute",
"type",
"spatial",
"void",
"aggregate",
"geometry",
"cobie",
"resource",
"cost",
"sequence",
"group",
"system",
"structural",
"boundary",
"profile",
"material",
"style",
"layer",
"owner",
"pset",
"qto",
"classification",
"constraint",
"document",
"pset_template",
"clash",
"lca",
"csv",
"bimtester",
"diff",
"patch",
"covetool",
"augin",
"debug",
],
"BIM Coordination": [
"project",
"search",
"bcf",
"root",
"unit",
"georeference",
"attribute",
"type",
"spatial",
"void",
"aggregate",
"owner",
"pset",
"qto",
"clash",
"csv",
"bimtester",
"diff",
"patch",
"debug",
],
"Architecture": [
"project",
"search",
"bcf",
"root",
"unit",
"model",
"georeference",
"context",
"drawing",
"misc",
"attribute",
"type",
"spatial",
"void",
"aggregate",
"geometry",
"group",
"system",
"boundary",
"profile",
"material",
"style",
"layer",
"owner",
"pset",
"qto",
"classification",
"pset_template",
"clash",
"csv",
],
"Structural Engineering": [
"project",
"search",
"bcf",
"root",
"unit",
"model",
"georeference",
"context",
"drawing",
"misc",
"attribute",
"type",
"spatial",
"void",
"aggregate",
"geometry",
"group",
"system",
"structural",
"boundary",
"profile",
"material",
"style",
"layer",
"owner",
"pset",
"qto",
"classification",
"pset_template",
"clash",
"csv",
],
"MEP": [
"project",
"search",
"bcf",
"root",
"unit",
"model",
"georeference",
"context",
"drawing",
"misc",
"attribute",
"type",
"spatial",
"void",
"aggregate",
"geometry",
"group",
"system",
"boundary",
"profile",
"material",
"style",
"layer",
"owner",
"pset",
"qto",
"classification",
"pset_template",
"clash",
"csv",
],
"Quantity Surveying": ["project", "search", "attribute", "spatial", "void", "pset", "qto", "classification", "csv"],
"Model Enrichment": [
"project",
"search",
"root",
"attribute",
"spatial",
"pset",
"qto",
"pset_template",
"csv",
"patch",
],
"3D Visualisation": ["project", "search", "bcf", "attribute", "spatial", "pset", "qto"],
"4D Scheduling": ["project", "search", "attribute", "spatial", "resource", "cost", "sequence", "pset", "qto"],
"5D Cost Management": [
"project",
"search",
"attribute",
"spatial",
"resource",
"cost",
"sequence",
"pset",
"qto",
"lca",
],
"Facility Management": ["project", "search", "attribute", "spatial", "cobie", "pset", "qto", "lca"],
}
@@ -1,2 +0,0 @@
Name,foo
TransomThickness,500
1 Name foo
2 TransomThickness 500
Binary file not shown.
+22 -33
View File
@@ -27,6 +27,7 @@ import addon_utils
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.util.placement
import ifcopenshell.util.unit
import blenderbim.tool as tool
import blenderbim.core.geometry
import blenderbim.core.aggregate
@@ -34,6 +35,7 @@ import blenderbim.core.spatial
import blenderbim.core.style
from blenderbim.bim.ifc import IfcStore
from mathutils import Vector
from typing import Union
class IfcExporter:
@@ -44,10 +46,8 @@ class IfcExporter:
self.file = IfcStore.get_file()
self.set_header()
IfcStore.update_cache()
if bpy.context.scene.BIMProjectProperties.is_authoring:
self.sync_deletions()
self.sync_all_objects()
self.sync_edited_objects()
self.sync_all_objects()
self.sync_edited_objects()
extension = self.ifc_export_settings.output_file.split(".")[-1].lower()
if extension == "ifczip":
with tempfile.TemporaryDirectory() as unzipped_path:
@@ -84,49 +84,40 @@ class IfcExporter:
)
self.file.wrapped_data.header.file_name.preprocessor_version = "IfcOpenShell {}".format(ifcopenshell.version)
self.file.wrapped_data.header.file_name.originating_system = "{} {}".format(
self.get_application_name(), self.get_application_version()
self.get_application_name(), tool.Blender.get_blenderbim_version()
)
def sync_deletions(self):
results = []
for ifc_definition_id in IfcStore.deleted_ids:
try:
product = self.file.by_id(ifc_definition_id)
if hasattr(product, "GlobalId"):
results.append(product.GlobalId)
except:
continue
ifcopenshell.api.run("root.remove_product", self.file, **{"product": product})
IfcStore.deleted_ids.clear()
return results
def sync_all_objects(self):
results = []
def sync_all_objects(self, skip_unlinking=False) -> list[ifcopenshell.entity_instance]:
results: list[ifcopenshell.entity_instance] = []
self.unit_scale = ifcopenshell.util.unit.calculate_unit_scale(self.file)
for ifc_definition_id in list(IfcStore.id_map.keys()):
obj = IfcStore.id_map[ifc_definition_id]
try:
if isinstance(obj, bpy.types.Material):
continue
tool.Collector.sync(obj)
if obj.library:
continue
tool.Collector.sync(obj, skip_unlinking)
result = self.sync_object_placement(obj)
if result:
results.append(result)
result = self.sync_object_material(obj)
# TODO: sync_object_material always returns None
# so it's never really appended
if result:
results.append(result)
except ReferenceError:
pass # The object is likely deleted
return results
def sync_edited_objects(self):
results = []
def sync_edited_objects(self) -> list[ifcopenshell.entity_instance]:
results: list[ifcopenshell.entity_instance] = []
for obj in IfcStore.edited_objs.copy():
if not obj:
continue
try:
if isinstance(obj, bpy.types.Material):
if self.has_changed_shading(obj):
if tool.Ifc.has_changed_shading(obj):
blenderbim.core.style.update_style_colours(tool.Ifc, tool.Style, obj=obj)
else:
element = tool.Ifc.get_entity(obj)
@@ -138,7 +129,7 @@ class IfcExporter:
IfcStore.edited_objs.clear()
return results
def sync_object_material(self, obj):
def sync_object_material(self, obj: bpy.types.Object) -> None:
if not obj.data or not isinstance(obj.data, bpy.types.Mesh):
return
if not self.has_changed_materials(obj):
@@ -149,15 +140,10 @@ class IfcExporter:
checksum = obj.data.BIMMeshProperties.material_checksum
return checksum != str([s.id() for s in tool.Geometry.get_styles(obj) if s])
def has_changed_shading(self, obj):
checksum = obj.BIMMaterialProperties.shading_checksum
return checksum != repr(np.array(obj.diffuse_color).tobytes())
def sync_object_placement(self, obj):
def sync_object_placement(self, obj: bpy.types.Object) -> Union[ifcopenshell.entity_instance, None]:
element = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id)
if not tool.Ifc.is_moved(obj):
return
blender_matrix = np.array(obj.matrix_world)
if (obj.scale - Vector((1.0, 1.0, 1.0))).length > 1e-4:
bpy.ops.bim.update_representation(obj=obj.name)
return element
@@ -168,7 +154,7 @@ class IfcExporter:
blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj)
return element
def sync_grid_axis_object_placement(self, obj, element):
def sync_grid_axis_object_placement(self, obj: bpy.types.Object, element: ifcopenshell.entity_instance) -> None:
grid = (element.PartOfU or element.PartOfV or element.PartOfW)[0]
grid_obj = tool.Ifc.get_object(grid)
if grid_obj:
@@ -181,7 +167,7 @@ class IfcExporter:
return "BlenderBIM"
def get_application_version(self):
return ".".join(
version = ".".join(
[
str(x)
for x in [
@@ -191,6 +177,9 @@ class IfcExporter:
][0]
]
)
if blenderbim.bim.last_commit_hash != "8888888":
version += f"-{blenderbim.bim.last_commit_hash[:7]}"
return version
class IfcExportSettings:
+145 -147
View File
@@ -16,47 +16,35 @@
# 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 bpy
import json
import addon_utils
import ifcopenshell.api.owner.settings
import blenderbim.bim
import blenderbim.tool as tool
import blenderbim.core.owner as core_owner
from blenderbim.bim.module.drawing.prop import RasterStyleProperty
from bpy.app.handlers import persistent
from blenderbim.bim.ifc import IfcStore
from blenderbim.bim.module.owner.prop import get_user_person, get_user_organisation
from blenderbim.bim.module.model.data import AuthoringData
from blenderbim.bim.module.model.workspace import LIST_OF_TOOLS, TOOLS_TO_CLASSES_MAP
from mathutils import Vector
from math import cos, degrees
from typing import Union
cwd = os.path.dirname(os.path.realpath(__file__))
global_subscription_owner = object()
def mode_callback(obj, data):
if not bpy.context.scene.BIMProjectProperties.is_authoring:
return
objects = bpy.context.selected_objects
if bpy.context.active_object:
objects += [bpy.context.active_object]
for obj in objects:
if (
obj.mode != "EDIT"
or not obj.data
or not isinstance(obj.data, (bpy.types.Mesh, bpy.types.Curve, bpy.types.TextCurve))
or not obj.BIMObjectProperties.ifc_definition_id
):
continue
if obj.data.BIMMeshProperties.ifc_definition_id:
tool.Ifc.edit(obj)
elif IfcStore.get_file().by_id(obj.BIMObjectProperties.ifc_definition_id).is_a("IfcGridAxis"):
tool.Ifc.edit(obj)
def name_callback(obj, data):
# TODO Do we still need this, now that we are monitoring the undo redo objects?
try:
obj.name
except:
# The object is invalid but somehow still has a callback. Clear all
# msgbus subscriptions to prevent useless further triggers.
bpy.msgbus.clear_by_owner(obj)
return # In case the object RNA is gone during an undo / redo operation
# Blender names are up to 63 UTF-8 bytes
if len(bytes(obj.name, "utf-8")) >= 63:
@@ -70,25 +58,31 @@ def name_callback(obj, data):
refresh_ui_data()
return
if not obj.BIMObjectProperties.ifc_definition_id or "/" not in obj.name:
if not obj.BIMObjectProperties.ifc_definition_id:
return
if obj.BIMObjectProperties.is_renaming:
obj.BIMObjectProperties.is_renaming = False
return
element = IfcStore.get_file().by_id(obj.BIMObjectProperties.ifc_definition_id)
if "/" in obj.name:
object_name = obj.name
element_name = obj.name.split("/", 1)[1]
else:
element_name = obj.name
object_name = element.is_a() + f"/{element_name}"
obj.name = object_name # NOTE: doesn't trigger infinite recursion
if element.is_a("IfcGridAxis"):
element.AxisTag = object_name.split("/")[1]
refresh_ui_data()
if not element.is_a("IfcRoot"):
return
if element.is_a("IfcSpatialStructureElement") or (hasattr(element, "IsDecomposedBy") and element.IsDecomposedBy):
collection = obj.users_collection[0]
collection.name = obj.name
if element.is_a("IfcGrid"):
axis_obj = IfcStore.get_element(element.UAxes[0].id())
axis_collection = axis_obj.users_collection[0]
grid_collection = None
for collection in bpy.data.collections:
if axis_collection.name in collection.children.keys():
grid_collection = collection
break
if grid_collection:
grid_collection.name = obj.name
element.Name = "/".join(obj.name.split("/")[1:])
element.Name = element_name
if obj.BIMObjectProperties.collection:
obj.BIMObjectProperties.collection.name = object_name
refresh_ui_data()
@@ -99,22 +93,78 @@ def color_callback(obj, data):
def active_object_callback():
refresh_ui_data()
update_bim_tool_props()
def update_bim_tool_props():
"""update BIM Tools props (such as extrusion_depth, length and x_angle) when active object changes"""
obj = bpy.context.active_object
# bunch of checks to see if we're in a valid state
if not obj:
return
mode = bpy.context.mode
current_tool = bpy.context.workspace.tools.from_space_view3d_mode(mode)
if not current_tool or current_tool.idname not in LIST_OF_TOOLS:
return
element = tool.Ifc.get_entity(obj)
if not element:
return
representation = ifcopenshell.util.representation.get_representation(element, "Model", "Body", "MODEL_VIEW")
if not representation:
return
props = bpy.context.scene.BIMModelProperties
if element.is_a("IfcElementType") or element.is_a("IfcElement"):
element_type = ifcopenshell.util.element.get_type(element)
if element_type:
is_bim_tool = current_tool.idname == "bim.bim_tool"
if is_bim_tool:
props.ifc_class = element_type.is_a()
if is_bim_tool or TOOLS_TO_CLASSES_MAP.get(current_tool.idname) == element_type.is_a():
props.relating_type_id = str(element_type.id())
extrusion = tool.Model.get_extrusion(representation)
if not extrusion:
return
def get_x_angle(extrusion):
x, y, z = extrusion.ExtrudedDirection.DirectionRatios
x_angle = Vector((0, 1)).angle_signed(Vector((y, z)))
return x_angle
si_conversion = ifcopenshell.util.unit.calculate_unit_scale(tool.Ifc.get())
if not AuthoringData.is_loaded:
AuthoringData.load()
if AuthoringData.data["active_material_usage"] == "LAYER2":
x_angle = get_x_angle(extrusion)
axis = tool.Model.get_wall_axis(obj)["reference"]
props.extrusion_depth = extrusion.Depth * si_conversion * cos(x_angle)
props.length = (axis[1] - axis[0]).length
props.x_angle = x_angle
elif AuthoringData.data["active_material_usage"] == "LAYER3":
x_angle = get_x_angle(extrusion)
props.x_angle = x_angle
elif AuthoringData.data["active_material_usage"] == "PROFILE":
props.extrusion_depth = extrusion.Depth * si_conversion
def active_material_index_callback(obj, data):
refresh_ui_data()
def subscribe_to(object, data_path, callback):
def subscribe_to(obj, data_path, callback):
try:
subscribe_to = object.path_resolve(data_path, False)
subscribe_to = obj.path_resolve(data_path, False)
except:
return
bpy.msgbus.subscribe_rna(
key=subscribe_to,
owner=object,
owner=obj,
args=(
object,
obj,
data_path,
),
notify=callback,
@@ -133,67 +183,44 @@ def refresh_ui_data():
except AttributeError:
pass
def purge_module_data():
from blenderbim.bim import modules
refresh_ui_data()
for name, value in modules.items():
try:
getattr(getattr(getattr(ifcopenshell.api, name), "data"), "Data").purge()
except AttributeError:
pass
# TODO: deprecate prop purge functions and refactor into data classes.
try:
getattr(value, "prop").purge()
except AttributeError:
pass
if isinstance(tool.Ifc.get(), ifcopenshell.sqlite):
tool.Ifc.get().clear_cache()
bpy.context.scene.DocProperties.should_draw_decorations = bpy.context.scene.DocProperties.should_draw_decorations
@persistent
def loadIfcStore(scene):
IfcStore.purge()
purge_module_data()
refresh_ui_data()
if not IfcStore.get_file():
return
IfcStore.get_schema()
IfcStore.relink_all_objects()
@persistent
def undo_pre(scene):
IfcStore.track_undo_redo_stack_object_map()
@persistent
def undo_post(scene):
if IfcStore.last_transaction != bpy.context.scene.BIMProperties.last_transaction:
IfcStore.last_transaction = bpy.context.scene.BIMProperties.last_transaction
IfcStore.undo()
purge_module_data()
IfcStore.track_undo_redo_stack_selected_objects()
IfcStore.reload_undo_redo_stack_objects()
@persistent
def redo_pre(scene):
IfcStore.track_undo_redo_stack_object_map()
IfcStore.undo(until_key=bpy.context.scene.BIMProperties.last_transaction)
refresh_ui_data()
tool.Ifc.rebuild_element_maps()
@persistent
def redo_post(scene):
if IfcStore.last_transaction != bpy.context.scene.BIMProperties.last_transaction:
IfcStore.last_transaction = bpy.context.scene.BIMProperties.last_transaction
IfcStore.redo()
purge_module_data()
IfcStore.track_undo_redo_stack_selected_objects()
IfcStore.reload_undo_redo_stack_objects()
@persistent
def ensureIfcExported(scene):
if IfcStore.get_file() and not bpy.context.scene.BIMProperties.ifc_file:
bpy.ops.export_ifc.bim("INVOKE_DEFAULT")
IfcStore.redo(until_key=bpy.context.scene.BIMProperties.last_transaction)
refresh_ui_data()
tool.Ifc.rebuild_element_maps()
def get_application(ifc):
@@ -224,81 +251,52 @@ def get_application_version():
)
def viewport_shading_changed_callback(area):
shading = area.spaces.active.shading.type
if shading == "RENDERED":
bpy.context.scene.BIMStylesProperties.active_style_type = "External"
@persistent
def setDefaultProperties(scene):
def load_post(scene):
global global_subscription_owner
active_object_key = bpy.types.LayerObjects, "active"
bpy.msgbus.subscribe_rna(
key=active_object_key, owner=global_subscription_owner, args=(), notify=active_object_callback
)
# subscribe to changes in viewport shading mode
# NOTE: couldn't find a way to make it work for new areas too
# it starts working for them after blender restart though
for screen in bpy.data.screens:
for area in screen.areas:
if area.type != "VIEW_3D":
continue
shading = area.spaces.active.shading
key = shading.path_resolve("type", False)
bpy.msgbus.subscribe_rna(
key=key, owner=global_subscription_owner, args=(area,), notify=viewport_shading_changed_callback
)
ifcopenshell.api.owner.settings.get_user = lambda ifc: core_owner.get_user(tool.Owner)
ifcopenshell.api.owner.settings.get_application = get_application
# TODO: Move to drawing module
if len(bpy.context.scene.DocProperties.drawing_styles) == 0:
drawing_style = bpy.context.scene.DocProperties.drawing_styles.add()
drawing_style.name = "Technical"
drawing_style.render_type = "VIEWPORT"
drawing_style.raster_style = json.dumps(
{
RasterStyleProperty.WORLD_COLOR.value: (1, 1, 1),
RasterStyleProperty.RENDER_ENGINE.value: "BLENDER_WORKBENCH",
RasterStyleProperty.RENDER_TRANSPARENT.value: False,
RasterStyleProperty.SHADING_SHOW_OBJECT_OUTLINE.value: True,
RasterStyleProperty.SHADING_SHOW_CAVITY.value: False,
RasterStyleProperty.SHADING_CAVITY_TYPE.value: "BOTH",
RasterStyleProperty.SHADING_CURVATURE_RIDGE_FACTOR.value: 1,
RasterStyleProperty.SHADING_CURVATURE_VALLEY_FACTOR.value: 1,
RasterStyleProperty.VIEW_TRANSFORM.value: "Standard",
RasterStyleProperty.SHADING_LIGHT.value: "FLAT",
RasterStyleProperty.SHADING_COLOR_TYPE.value: "SINGLE",
RasterStyleProperty.SHADING_SINGLE_COLOR.value: (1, 1, 1),
RasterStyleProperty.SHADING_SHOW_SHADOWS.value: False,
RasterStyleProperty.SHADING_SHADOW_INTENSITY.value: 0.5,
RasterStyleProperty.DISPLAY_LIGHT_DIRECTION.value: (0.5, 0.5, 0.5),
RasterStyleProperty.VIEW_USE_CURVE_MAPPING.value: False,
RasterStyleProperty.OVERLAY_SHOW_WIREFRAMES.value: True,
RasterStyleProperty.OVERLAY_WIREFRAME_THRESHOLD.value: 0,
RasterStyleProperty.OVERLAY_SHOW_FLOOR.value: False,
RasterStyleProperty.OVERLAY_SHOW_AXIS_X.value: False,
RasterStyleProperty.OVERLAY_SHOW_AXIS_Y.value: False,
RasterStyleProperty.OVERLAY_SHOW_AXIS_Z.value: False,
RasterStyleProperty.OVERLAY_SHOW_OBJECT_ORIGINS.value: False,
RasterStyleProperty.OVERLAY_SHOW_RELATIONSHIP_LINES.value: False,
}
)
drawing_style = bpy.context.scene.DocProperties.drawing_styles.add()
drawing_style.name = "Shaded"
drawing_style.render_type = "VIEWPORT"
drawing_style.raster_style = json.dumps(
{
RasterStyleProperty.WORLD_COLOR.value: (1, 1, 1),
RasterStyleProperty.RENDER_ENGINE.value: "BLENDER_WORKBENCH",
RasterStyleProperty.RENDER_TRANSPARENT.value: False,
RasterStyleProperty.SHADING_SHOW_OBJECT_OUTLINE.value: True,
RasterStyleProperty.SHADING_SHOW_CAVITY.value: True,
RasterStyleProperty.SHADING_CAVITY_TYPE.value: "BOTH",
RasterStyleProperty.SHADING_CURVATURE_RIDGE_FACTOR.value: 1,
RasterStyleProperty.SHADING_CURVATURE_VALLEY_FACTOR.value: 1,
RasterStyleProperty.VIEW_TRANSFORM.value: "Standard",
RasterStyleProperty.SHADING_LIGHT.value: "STUDIO",
RasterStyleProperty.SHADING_COLOR_TYPE.value: "MATERIAL",
RasterStyleProperty.SHADING_SINGLE_COLOR.value: (1, 1, 1),
RasterStyleProperty.SHADING_SHOW_SHADOWS.value: True,
RasterStyleProperty.SHADING_SHADOW_INTENSITY.value: 0.5,
RasterStyleProperty.DISPLAY_LIGHT_DIRECTION.value: (0.5, 0.5, 0.5),
RasterStyleProperty.VIEW_USE_CURVE_MAPPING.value: False,
RasterStyleProperty.OVERLAY_SHOW_WIREFRAMES.value: False,
RasterStyleProperty.OVERLAY_WIREFRAME_THRESHOLD.value: 0,
RasterStyleProperty.OVERLAY_SHOW_FLOOR.value: False,
RasterStyleProperty.OVERLAY_SHOW_AXIS_X.value: False,
RasterStyleProperty.OVERLAY_SHOW_AXIS_Y.value: False,
RasterStyleProperty.OVERLAY_SHOW_AXIS_Z.value: False,
RasterStyleProperty.OVERLAY_SHOW_OBJECT_ORIGINS.value: False,
RasterStyleProperty.OVERLAY_SHOW_RELATIONSHIP_LINES.value: False,
}
)
drawing_style = bpy.context.scene.DocProperties.drawing_styles.add()
drawing_style.name = "Blender Default"
drawing_style.render_type = "DEFAULT"
bpy.ops.bim.save_drawing_style(index="2")
AuthoringData.type_thumbnails = {}
AuthoringData.type_thumbnails = {}
if not bpy.context.preferences.addons["blenderbim"].preferences.should_setup_toolbar:
tool.Blender.unregister_toolbar()
if bpy.context.preferences.addons["blenderbim"].preferences.should_setup_workspace:
if "BIM" in bpy.data.workspaces:
bpy.context.window.workspace = bpy.data.workspaces["BIM"]
else:
bpy.ops.workspace.append_activate(idname="BIM", filepath=os.path.join(cwd, "data", "workspace.blend"))
# To improve usability for new users, we hijack the scene properties
# tab. We override default scene properties panels with our own poll
# to hide them unless the user has chosen to view Blender properties.
for panel in tool.Blender.get_scene_panels_list():
if panel in blenderbim.bim.original_scene_panels_polls:
continue
tool.Blender.override_scene_panel(panel)
tool.Blender.setup_tabs()
+99 -41
View File
@@ -29,6 +29,7 @@ from mathutils import geometry
from mathutils import Vector
import blenderbim.tool as tool
from blenderbim.bim.ifc import IfcStore
from typing import Optional, Callable, Any
def draw_attributes(props, layout, copy_operator=None, popup_active_attribute=None):
@@ -75,6 +76,10 @@ def draw_attribute(attribute, layout, copy_operator=None):
op.data_path = attribute.path_from_id("string_value")
if attribute.is_optional:
layout.prop(attribute, "is_null", icon="RADIOBUT_OFF" if attribute.is_null else "RADIOBUT_ON", text="")
if attribute.name == "GlobalId":
layout.operator("bim.generate_global_id", icon="FILE_REFRESH", text="")
if copy_operator:
op = layout.operator(f"{copy_operator}", text="", icon="COPYDOWN")
op.name = attribute.name
@@ -87,8 +92,15 @@ def import_attributes(ifc_class, props, data, callback=None):
# A more elegant attribute importer signature, intended to supersede import_attributes
def import_attributes2(element, props, callback=None):
for attribute in element.wrapped_data.declaration().as_entity().all_attributes():
import_attribute(attribute, props, element.get_info(), callback=callback)
if isinstance(element, str):
attributes = tool.Ifc.schema().declaration_by_name(element).as_entity().all_attributes()
info = {a.name(): None for a in attributes}
info["type"] = element
else:
attributes = element.wrapped_data.declaration().as_entity().all_attributes()
info = element.get_info()
for attribute in attributes:
import_attribute(attribute, props, info, callback=callback)
def import_attribute(attribute, props, data, callback=None):
@@ -109,7 +121,7 @@ def import_attribute(attribute, props, data, callback=None):
elif is_handled_by_callback is False:
props.remove(len(props) - 1)
elif data_type == "string":
new.string_value = "" if new.is_null else str(data[attribute.name()])
new.string_value = "" if new.is_null else str(data[attribute.name()]).replace("\n", "\\n")
if attribute.type_of_attribute().declared_type().name() == "IfcURIReference":
new.is_uri = True
elif data_type == "boolean":
@@ -171,7 +183,7 @@ def add_attribute_description(attribute_blender, attribute_ifc=None):
attribute_blender.description = description
def export_attributes(props, callback=None):
def export_attributes(props, callback: Optional[Callable] = None) -> dict[str, Any]:
attributes = {}
for prop in props:
is_handled_by_callback = callback(attributes, prop) if callback else False
@@ -209,37 +221,6 @@ def get_enum_items(data, prop_name, context=None):
return items
def get_obj_ifc_definition_id(context, obj, obj_type):
if obj_type == "Object":
return bpy.data.objects.get(obj).BIMObjectProperties.ifc_definition_id
elif obj_type == "Material":
return bpy.data.materials.get(obj).BIMObjectProperties.ifc_definition_id
elif obj_type == "MaterialSet":
return ifcopenshell.util.element.get_material(
tool.Ifc.get_entity(bpy.data.objects.get(obj)), should_skip_usage=True
).id()
elif obj_type == "MaterialSetItem":
return bpy.data.objects.get(obj).BIMObjectMaterialProperties.active_material_set_item_id
elif obj_type == "Task":
return context.scene.BIMTaskTreeProperties.tasks[
context.scene.BIMWorkScheduleProperties.active_task_index
].ifc_definition_id
elif obj_type == "Cost":
return context.scene.BIMCostProperties.cost_items[
context.scene.BIMCostProperties.active_cost_item_index
].ifc_definition_id
elif obj_type == "Resource":
return context.scene.BIMResourceTreeProperties.resources[
context.scene.BIMResourceProperties.active_resource_index
].ifc_definition_id
elif obj_type == "Profile":
return context.scene.BIMProfileProperties.profiles[
context.scene.BIMProfileProperties.active_profile_index
].ifc_definition_id
elif obj_type == "WorkSchedule":
return context.scene.BIMWorkScheduleProperties.active_work_schedule_id
# hack to close popup
# https://blender.stackexchange.com/a/202576/130742
def close_operator_panel(event):
@@ -260,12 +241,7 @@ def convert_property_group_from_si(property_group, skip_props=()):
for prop_name in property_group.bl_rna.properties.keys():
if prop_name in skip_props:
continue
prop_bl_rna = property_group.bl_rna.properties[prop_name]
if prop_bl_rna.array_length > 0:
prop_value = prop_bl_rna.default_array
else:
prop_value = prop_bl_rna.default
prop_value = tool.Blender.get_blender_prop_default_value(property_group, prop_name)
if type(prop_value) is float:
prop_value = prop_value * conversion_k
elif type(prop_value) is bpy.types.bpy_prop_array:
@@ -273,6 +249,86 @@ def convert_property_group_from_si(property_group, skip_props=()):
setattr(property_group, prop_name, prop_value)
def draw_filter(layout, filter_groups, data, module):
if not data.is_loaded:
data.load()
sprops = bpy.context.scene.BIMSearchProperties
if tool.Ifc.get():
row = layout.row(align=True)
row.label(text=f"{len(data.data['saved_searches'])} Saved Searches")
if data.data["saved_searches"]:
row.operator("bim.load_search", text="", icon="IMPORT").module = module
row.operator("bim.save_search", text="", icon="EXPORT").module = module
row = layout.row(align=True)
row.operator("bim.add_filter_group", text="Add Search Group", icon="ADD").module = module
row.operator("bim.edit_filter_query", text="", icon="FILTER").module = module
for i, filter_group in enumerate(filter_groups):
box = layout.box()
row = box.row(align=True)
row.prop(sprops, "facet", text="")
op = row.operator("bim.add_filter", text="Add Filter", icon="ADD")
op.type = sprops.facet
op.index = i
op.module = module
op = row.operator("bim.remove_filter_group", text="", icon="X")
op.index = i
op.module = module
for j, ifc_filter in enumerate(filter_group.filters):
if ifc_filter.type == "entity":
row = box.row(align=True)
row.prop(ifc_filter, "value", text="", icon="FILE_3D")
elif ifc_filter.type == "attribute":
row = box.row(align=True)
row.prop(ifc_filter, "name", text="", icon="COPY_ID")
row.prop(ifc_filter, "value", text="")
elif ifc_filter.type == "type":
row = box.row(align=True)
row.prop(ifc_filter, "value", text="", icon="FILE_VOLUME")
elif ifc_filter.type == "material":
row = box.row(align=True)
row.prop(ifc_filter, "value", text="", icon="MATERIAL")
elif ifc_filter.type == "property":
row = box.row(align=True)
row.prop(ifc_filter, "pset", text="", icon="PROPERTIES")
row.prop(ifc_filter, "name", text="")
row.prop(ifc_filter, "comparison", text="")
row.prop(ifc_filter, "value", text="")
elif ifc_filter.type == "classification":
row = box.row(align=True)
row.prop(ifc_filter, "value", text="", icon="OUTLINER")
elif ifc_filter.type == "location":
row = box.row(align=True)
row.prop(ifc_filter, "value", text="", icon="PACKAGE")
elif ifc_filter.type == "group":
row = box.row(align=True)
row.prop(ifc_filter, "value", text="", icon="OUTLINER_COLLECTION")
elif ifc_filter.type == "query":
row = box.row(align=True)
row.prop(ifc_filter, "name", text="", icon="POINTCLOUD_DATA")
row.prop(ifc_filter, "value", text="")
elif ifc_filter.type == "instance":
row = box.row(align=True)
row.prop(ifc_filter, "value", text="", icon="GRIP")
op = row.operator("bim.select_filter_elements", text="", icon="EYEDROPPER")
op.group_index = i
op.index = j
op.module = module
op = row.operator("bim.remove_filter", text="", icon="X")
op.group_index = i
op.index = j
op.module = module
# TODO this should move into ifcopenshell.util
class IfcHeaderExtractor:
def __init__(self, filepath: str):
self.filepath = filepath
@@ -284,6 +340,8 @@ class IfcHeaderExtractor:
return self.extract_ifc_spf(ifc_file)
elif extension.lower() == "ifczip":
return self.extract_ifc_zip()
elif extension.lower() == "ifcsqlite":
return {} # TODO
def extract_ifc_spf(self, ifc_file):
# https://www.steptools.com/stds/step/IS_final_p21e3.html#clause-8
+104 -166
View File
@@ -23,35 +23,39 @@ import hashlib
import zipfile
import tempfile
import ifcopenshell
import ifcopenshell.geom
import ifcopenshell.ifcopenshell_wrapper
import blenderbim.bim.handler
import blenderbim.tool as tool
from pathlib import Path
from blenderbim.tool.brick import BrickStore
from typing import Set, Union, Optional
IFC_CONNECTED_TYPE = Union[bpy.types.Material, bpy.types.Object]
class IfcStore:
path = ""
file = None
schema = None
cache = None
cache_path = None
id_map = {}
guid_map = {}
deleted_ids = set()
edited_objs = set()
pset_template_path = ""
pset_template_file = None
classification_path = ""
classification_file = None
library_path = ""
library_file = None
element_listeners = set()
undo_redo_stack_objects = set()
undo_redo_stack_object_names = {}
path: str = ""
file: ifcopenshell.file = None
schema: ifcopenshell.ifcopenshell_wrapper.schema_definition = None
cache: ifcopenshell.ifcopenshell_wrapper.HdfSerializer = None
cache_path: str = None
id_map: dict[int, IFC_CONNECTED_TYPE] = {}
guid_map: dict[str, IFC_CONNECTED_TYPE] = {}
edited_objs: Set[bpy.types.Object] = set()
pset_template_path: str = ""
pset_template_file: ifcopenshell.file = None
classification_path: str = ""
classification_file: ifcopenshell.file = None
library_path: str = ""
library_file: ifcopenshell.file = None
current_transaction = ""
last_transaction = ""
history = []
future = []
schema_identifiers = ["IFC4", "IFC2X3", "IFC4X3"]
session_files = {}
session_files: dict[str, ifcopenshell.file] = {}
@staticmethod
def purge():
@@ -62,7 +66,6 @@ class IfcStore:
IfcStore.cache_path = None
IfcStore.id_map = {}
IfcStore.guid_map = {}
IfcStore.deleted_ids = set()
IfcStore.edited_objs = set()
IfcStore.pset_template_path = ""
IfcStore.pset_template_file = None
@@ -83,8 +86,8 @@ class IfcStore:
if IfcStore.path:
try:
IfcStore.load_file(IfcStore.path)
except:
pass
except Exception as e:
print(f"Failed to load file {IfcStore.path}. Error details: {e}")
return IfcStore.file
@staticmethod
@@ -120,7 +123,9 @@ class IfcStore:
IfcStore.get_cache()
@staticmethod
def load_file(path):
def load_file(path) -> None:
if not os.path.isfile(path):
return
extension = path.split(".")[-1]
if extension.lower() == "ifczip":
with tempfile.TemporaryDirectory() as unzipped_path:
@@ -131,7 +136,9 @@ class IfcStore:
return
elif extension.lower() == "ifcxml":
IfcStore.file = ifcopenshell.file(ifcopenshell.ifcopenshell_wrapper.parse_ifcxml(path))
elif extension.lower() == "ifc":
elif bpy.context.scene.BIMProjectProperties.should_stream:
IfcStore.file = ifcopenshell.open(path, should_stream=True)
else:
IfcStore.file = ifcopenshell.open(path)
@staticmethod
@@ -145,7 +152,7 @@ class IfcStore:
return IfcStore.schema
@staticmethod
def get_element(id_or_guid):
def get_element(id_or_guid: Union[int, str]) -> IFC_CONNECTED_TYPE:
if isinstance(id_or_guid, int):
map_object = IfcStore.id_map
else:
@@ -158,106 +165,20 @@ class IfcStore:
return obj
@staticmethod
def add_element_listener(callback):
IfcStore.element_listeners.add(callback)
@staticmethod
def track_undo_redo_stack_object_map():
"""Keeps track of currently mapped object names, typically during undo and redo
When any Blender object is stored outside a Blender PointerProperty, such as
in a regular Python list, there is the likely probability that the object
will be invalidated when undo or redo occurs. Object invalidation seems to
occur whenever an object is affected during an operation.
For example, if an operator deletes a modifier on o1, then o1 will be invalidated.
"""
for key, value in IfcStore.id_map.items():
try:
IfcStore.undo_redo_stack_object_names[key] = value.name
except:
continue
@staticmethod
def track_undo_redo_stack_selected_objects():
"""Keeps track of selected object names, typically during undo and redo
When any Blender object is stored outside a Blender PointerProperty, such as
in a regular Python list, there is the likely probability that the object
will be invalidated when undo or redo occurs. Object invalidation seems to
occur for selected objects either pre/post undo/redo event, including
selected objects for consecutive undo/redos, and all children. This is
important because selected objects are often deleted from the scene.
So if I first select o1, then o2, then o3, then press undo, o3 will be
invalidated. If instead I press undo twice, o3 and o2 will be invalidated.
"""
if bpy.context.active_object:
objects = set([o.name for o in bpy.context.selected_objects + [bpy.context.active_object]])
objects.update([o.name for o in bpy.context.active_object.children])
else:
objects = set([o.name for o in bpy.context.selected_objects])
for obj in bpy.context.selected_objects:
objects.update([o.name for o in obj.children])
IfcStore.undo_redo_stack_objects |= objects
@staticmethod
def reload_undo_redo_stack_objects():
"""Reloads any invalidated objects after undo or redo
After an undo or redo operation, objects may have been invalidated in
our id_map and guid_map. Invalidated objects are typically those that
have been manipulated or deleted. This checks the cache of mapped and
selected objects prior to the operation and ensures that if the object
is invalidated, they are reloaded based on the object name that was
tracked prior to the undo / redo.
"""
file = IfcStore.get_file()
if not file:
return
# First, reload objects that were selected or active
for name in IfcStore.undo_redo_stack_objects:
obj = bpy.data.objects.get(name)
if not obj:
continue
if not obj.BIMObjectProperties.ifc_definition_id:
continue
element = file.by_id(obj.BIMObjectProperties.ifc_definition_id)
data = {"id": element.id(), "obj": obj.name}
if hasattr(element, "GlobalId"):
data["guid"] = element.GlobalId
IfcStore.commit_link_element(data)
# Scan for any straggling invalidated objects which were indirectly affected and reload them too.
for key, value in IfcStore.id_map.items():
try:
value.name
except:
# TODO not so sure about this obj_name check
obj_name = IfcStore.undo_redo_stack_object_names.get(key, None)
if not obj_name:
continue
obj = bpy.data.objects.get(obj_name)
if not obj or not obj.BIMObjectProperties.ifc_definition_id:
continue
element = file.by_id(obj.BIMObjectProperties.ifc_definition_id)
data = {"id": element.id(), "obj": obj.name}
if hasattr(element, "GlobalId"):
data["guid"] = element.GlobalId
IfcStore.commit_link_element(data)
@staticmethod
def relink_all_objects():
def relink_all_objects() -> None:
if not IfcStore.get_file():
return
for obj in bpy.data.objects:
if obj.library:
continue
IfcStore.relink_object(obj)
for obj in bpy.data.materials:
if obj.library:
continue
IfcStore.relink_object(obj)
@staticmethod
def relink_object(obj):
def relink_object(obj: IFC_CONNECTED_TYPE) -> None:
if not obj:
return
if obj.BIMObjectProperties.ifc_definition_id:
@@ -278,24 +199,14 @@ class IfcStore:
IfcStore.commit_link_element(data)
@staticmethod
def delete_element(element):
IfcStore.deleted_ids.add(element.id())
if IfcStore.history:
data = {"id": element.id()}
IfcStore.history[-1]["operations"].append(
{"rollback": IfcStore.rollback_delete_element, "commit": IfcStore.commit_delete_element, "data": data}
)
def link_element(element: ifcopenshell.entity_instance, obj: IFC_CONNECTED_TYPE) -> None:
# Please use tool.Ifc.link() instead of this method. We want to
# refactor this class and deprecate usage of IfcStore in favour of
# tools.
if not isinstance(obj, (bpy.types.Object, bpy.types.Material)):
obj.BIMMeshProperties.ifc_definition_id = element.id()
return
@staticmethod
def rollback_delete_element(data):
IfcStore.deleted_ids.remove(data["id"])
@staticmethod
def commit_delete_element(data):
IfcStore.deleted_ids.add(data["id"])
@staticmethod
def link_element(element, obj):
existing_obj = IfcStore.id_map.get(element.id(), None)
if existing_obj == obj:
return
@@ -319,11 +230,9 @@ class IfcStore:
if isinstance(obj, bpy.types.Material):
blenderbim.bim.handler.subscribe_to(obj, "diffuse_color", blenderbim.bim.handler.color_callback)
elif isinstance(obj, bpy.types.Object):
blenderbim.bim.handler.subscribe_to(obj, "mode", blenderbim.bim.handler.mode_callback)
blenderbim.bim.handler.subscribe_to(obj, "active_material_index", blenderbim.bim.handler.active_material_index_callback)
for listener in IfcStore.element_listeners:
listener(element, obj)
blenderbim.bim.handler.subscribe_to(
obj, "active_material_index", blenderbim.bim.handler.active_material_index_callback
)
if IfcStore.history:
data = {"id": element.id(), "guid": getattr(element, "GlobalId", None), "obj": obj.name}
@@ -345,15 +254,18 @@ class IfcStore:
IfcStore.id_map[data["id"]] = obj
if "guid" in data:
IfcStore.guid_map[data["guid"]] = obj
blenderbim.bim.handler.subscribe_to(obj, "mode", blenderbim.bim.handler.mode_callback)
blenderbim.bim.handler.subscribe_to(obj, "name", blenderbim.bim.handler.name_callback)
if isinstance(obj, bpy.types.Material):
blenderbim.bim.handler.subscribe_to(obj, "diffuse_color", blenderbim.bim.handler.color_callback)
elif isinstance(obj, bpy.types.Object):
blenderbim.bim.handler.subscribe_to(
obj, "active_material_index", blenderbim.bim.handler.active_material_index_callback
)
# TODO Listeners are not re-registered. Does this cause nasty problems to debug later on?
# TODO We're handling id_map and guid_map, but what about edited_objs? This might cause big problems.
@staticmethod
def rollback_unlink_element(data):
def rollback_unlink_element(data) -> None:
if "id" not in data or "obj" not in data:
return
obj = bpy.data.objects.get(data["obj"])
@@ -362,16 +274,18 @@ class IfcStore:
IfcStore.guid_map[data["guid"]] = obj
@staticmethod
def commit_unlink_element(data):
def commit_unlink_element(data) -> None:
del IfcStore.id_map[data["id"]]
if data["guid"]:
del IfcStore.guid_map[data["guid"]]
@staticmethod
def unlink_element(element=None, obj=None):
def unlink_element(
element: Optional[ifcopenshell.entity_instance] = None, obj: Optional[IFC_CONNECTED_TYPE] = None
) -> None:
if element is None:
try:
element = IfcStore.get_file().by_id(obj.BIMObjectProperties.ifc_definition_id)
element = tool.Ifc.get_entity(obj)
except:
pass
@@ -414,43 +328,51 @@ class IfcStore:
)
@staticmethod
def execute_ifc_operator(operator, context):
def execute_ifc_operator(operator: bpy.types.Operator, context: bpy.types.Context, is_invoke=False):
bpy.context.scene.BIMProperties.is_dirty = True
is_top_level_operator = not bool(IfcStore.current_transaction)
if is_top_level_operator:
IfcStore.begin_transaction(operator)
IfcStore.get_file().begin_transaction()
if tool.Ifc.get():
tool.Ifc.get().begin_transaction()
if BrickStore.graph is not None: # `if BrickStore.graph` by itself takes ages.
BrickStore.begin_transaction()
# This empty transaction ensures that each operator has at least one transaction
IfcStore.add_transaction_operation(operator, rollback=lambda data: True, commit=lambda data: True)
else:
operator.transaction_key = IfcStore.current_transaction
result = getattr(operator, "_execute")(context)
if is_invoke:
result = getattr(operator, "_invoke")(context, None)
else:
result = getattr(operator, "_execute")(context)
if is_top_level_operator:
IfcStore.get_file().end_transaction()
IfcStore.add_transaction_operation(
operator, rollback=lambda d: IfcStore.get_file().undo(), commit=lambda d: IfcStore.get_file().redo()
)
if tool.Ifc.get():
tool.Ifc.get().end_transaction()
IfcStore.add_transaction_operation(
operator, rollback=lambda d: tool.Ifc.get().undo(), commit=lambda d: tool.Ifc.get().redo()
)
if BrickStore.graph is not None: # `if BrickStore.graph` by itself takes ages.
BrickStore.end_transaction()
IfcStore.end_transaction(operator)
blenderbim.bim.handler.refresh_ui_data()
return result
@staticmethod
def begin_transaction(operator):
IfcStore.undo_redo_stack_objects = set()
IfcStore.undo_redo_stack_object_names = {}
def begin_transaction(operator: bpy.types.Operator) -> None:
IfcStore.current_transaction = str(uuid.uuid4())
operator.transaction_key = IfcStore.current_transaction
@staticmethod
def end_transaction(operator):
def end_transaction(operator: bpy.types.Operator) -> None:
IfcStore.current_transaction = ""
operator.transaction_key = ""
@staticmethod
def add_transaction_operation(operator, rollback=None, commit=None):
def add_transaction_operation(operator: bpy.types.Operator, rollback=None, commit=None) -> None:
key = getattr(operator, "transaction_key", None)
data = getattr(operator, "transaction_data", None)
bpy.context.scene.BIMProperties.last_transaction = key
@@ -466,19 +388,35 @@ class IfcStore:
IfcStore.future = []
@staticmethod
def undo():
def undo(until_key=None) -> None:
BrickStore.undo()
if not IfcStore.history:
return
event = IfcStore.history.pop()
for transaction in event["operations"][::-1]:
transaction["rollback"](transaction["data"])
IfcStore.future.append(event)
while IfcStore.history:
if IfcStore.history[-1]["key"] == until_key:
return
event = IfcStore.history.pop()
for transaction in event["operations"][::-1]:
transaction["rollback"](transaction["data"])
IfcStore.future.append(event)
@staticmethod
def redo():
def redo(until_key=None) -> None:
BrickStore.redo()
if not IfcStore.future:
return
event = IfcStore.future.pop()
for transaction in event["operations"]:
transaction["commit"](transaction["data"])
IfcStore.history.append(event)
has_encountered_key = False
while IfcStore.future:
if has_encountered_key and IfcStore.future[-1]["key"] != until_key:
return
elif IfcStore.future[-1]["key"] == until_key:
has_encountered_key = True
event = IfcStore.future.pop()
for transaction in event["operations"]:
transaction["commit"](transaction["data"])
IfcStore.history.append(event)
File diff suppressed because it is too large Load Diff
@@ -20,16 +20,19 @@ import bpy
from . import ui, prop, operator
classes = (
operator.BIM_OT_assign_object,
operator.BIM_OT_unassign_object,
operator.BIM_OT_enable_editing_aggregate,
operator.BIM_OT_disable_editing_aggregate,
operator.BIM_OT_add_aggregate,
operator.BIM_OT_select_parts,
operator.BIM_OT_select_aggregate,
operator.BIM_OT_add_part_to_object,
operator.BIM_OT_aggregate_assign_object,
operator.BIM_OT_disable_editing_aggregate,
operator.BIM_OT_enable_editing_aggregate,
operator.BIM_OT_select_aggregate,
operator.BIM_OT_select_parts,
operator.BIM_OT_aggregate_unassign_object,
operator.BIM_OT_break_link_to_other_aggregates,
operator.BIM_OT_select_linked_aggregates,
prop.BIMObjectAggregateProperties,
ui.BIM_PT_aggregate,
ui.BIM_PT_linked_aggregate,
)
@@ -35,8 +35,9 @@ class AggregateData:
"has_relating_object": cls.has_relating_object(),
"relating_object_label": cls.get_relating_object_label(),
"has_related_objects": cls.has_related_objects(),
"related_objects_amount": cls.get_related_objects_amount(),
"total_parts": cls.total_parts(),
"ifc_class": cls.ifc_class(),
"total_linked_aggregate": cls.total_linked_aggregate(),
}
cls.is_loaded = True
@@ -59,7 +60,7 @@ class AggregateData:
return ifcopenshell.util.element.get_parts(tool.Ifc.get_entity(bpy.context.active_object))
@classmethod
def get_related_objects_amount(cls):
def total_parts(cls):
parts = cls.get_related_objects()
return len(parts) if parts else 0
@@ -72,3 +73,26 @@ class AggregateData:
element = tool.Ifc.get_entity(bpy.context.active_object)
if element:
return element.is_a()
@classmethod
def total_linked_aggregate(cls):
element = tool.Ifc.get_entity(bpy.context.active_object)
aggregate = ifcopenshell.util.element.get_aggregate(element)
if not aggregate:
return []
if not element:
return []
product_linked_agg_group = [
r
for r in getattr(aggregate, "HasAssignments", []) or []
if r.is_a("IfcRelAssignsToGroup")
if "BBIM_Linked_Aggregate" in r.RelatingGroup.Name
]
if not product_linked_agg_group:
return []
total = len(product_linked_agg_group[0].RelatedObjects)
return total
@@ -33,30 +33,50 @@ class Operator:
return {"FINISHED"}
class BIM_OT_assign_object(bpy.types.Operator, Operator):
class BIM_OT_aggregate_assign_object(bpy.types.Operator, Operator):
"""Create aggregation relationship between two ifc elements"""
bl_idname = "bim.assign_object"
bl_label = "Assign Object"
bl_idname = "bim.aggregate_assign_object"
bl_label = "Assign Object To Aggregation"
bl_options = {"REGISTER", "UNDO"}
relating_object: bpy.props.IntProperty()
related_object: bpy.props.IntProperty()
def _execute(self, context):
core.assign_object(
tool.Ifc,
tool.Aggregate,
tool.Collector,
relating_obj=tool.Ifc.get_object(tool.Ifc.get().by_id(self.relating_object)),
related_obj=tool.Ifc.get_object(tool.Ifc.get().by_id(self.related_object)),
)
relating_obj = None
if self.relating_object:
element = tool.Ifc.get().by_id(self.relating_object)
if element.IsDecomposedBy:
relating_obj = tool.Ifc.get_object(element)
else:
assembly = element.Decomposes[0].RelatingObject
relating_obj = tool.Ifc.get_object(assembly)
elif context.active_object:
relating_obj = context.active_object
if not relating_obj:
return
for obj in bpy.context.selected_objects:
if obj == relating_obj:
continue
element = tool.Ifc.get_entity(obj)
if not element:
continue
result = core.assign_object(
tool.Ifc,
tool.Aggregate,
tool.Collector,
relating_obj=relating_obj,
related_obj=obj,
)
if not result:
self.report({"ERROR"}, f" Cannot aggregate {obj.name} to {relating_obj.name}")
class BIM_OT_unassign_object(bpy.types.Operator, Operator):
class BIM_OT_aggregate_unassign_object(bpy.types.Operator, Operator):
"""Remove aggregation relationship between two ifc elements"""
bl_idname = "bim.unassign_object"
bl_label = "Unassign Object"
bl_idname = "bim.aggregate_unassign_object"
bl_label = "Unassign Object From Aggregation"
bl_options = {"REGISTER", "UNDO"}
def _execute(self, context):
@@ -75,6 +95,12 @@ class BIM_OT_unassign_object(bpy.types.Operator, Operator):
related_obj=tool.Ifc.get_object(element),
)
# Removes Pset related to Linked Aggregates
pset = ifcopenshell.util.element.get_pset(element, "BBIM_Linked_Aggregate")
if pset:
pset = tool.Ifc.get().by_id(pset["id"])
ifcopenshell.api.run("pset.remove_pset", tool.Ifc.get(), pset=pset)
class BIM_OT_enable_editing_aggregate(bpy.types.Operator, Operator):
"""Enable editing aggregation relationship"""
@@ -148,10 +174,8 @@ class BIM_OT_add_aggregate(bpy.types.Operator, tool.Ifc.Operator):
core.assign_object(tool.Ifc, tool.Aggregate, tool.Collector, relating_obj=aggregate, related_obj=obj)
def create_aggregate(self, context, ifc_class):
aggregate_collection = bpy.data.collections.new(f"{ifc_class}/Assembly")
context.scene.collection.children.link(aggregate_collection)
aggregate = bpy.data.objects.new("Assembly", None)
aggregate_collection.objects.link(aggregate)
aggregate.location = context.scene.cursor.location
bpy.ops.bim.assign_class(obj=aggregate.name, ifc_class=ifc_class)
return aggregate
@@ -182,14 +206,29 @@ class BIM_OT_select_aggregate(bpy.types.Operator):
bl_label = "Select Aggregate"
bl_options = {"REGISTER", "UNDO"}
obj: bpy.props.StringProperty()
select_parts: bpy.props.BoolProperty(default=False)
@classmethod
def description(cls, context, properties):
if properties.select_parts:
return "Select Aggregate and Parts"
else:
return "Select Aggregate"
def execute(self, context):
self.file = IfcStore.get_file()
obj = bpy.data.objects.get(self.obj) or context.active_object
aggregate = ifcopenshell.util.element.get_aggregate(tool.Ifc.get_entity(obj))
aggregate_obj = tool.Ifc.get_object(aggregate)
if self.select_parts:
bpy.ops.bim.select_parts(obj=aggregate_obj.name)
if aggregate_obj in context.selectable_objects:
aggregate_obj.select_set(True)
tool.Blender.set_objects_selection(
context,
aggregate_obj,
[aggregate_obj],
clear_previous_selection=not self.select_parts,
)
return {"FINISHED"}
@@ -216,3 +255,65 @@ class BIM_OT_add_part_to_object(bpy.types.Operator, Operator):
part_class=self.part_class,
part_name=self.part_name,
)
class BIM_OT_break_link_to_other_aggregates(bpy.types.Operator, Operator):
bl_idname = "bim.break_link_to_other_aggregates"
bl_label = "Break link to other aggregates"
bl_options = {"REGISTER", "UNDO"}
def _execute(self, context):
element = tool.Ifc.get_entity(bpy.context.active_object)
aggregate = ifcopenshell.util.element.get_aggregate(element)
if not aggregate:
return []
if not element:
return []
parts = ifcopenshell.util.element.get_parts(aggregate)
for part in parts:
pset = ifcopenshell.util.element.get_pset(part, "BBIM_Linked_Aggregate")
pset = tool.Ifc.get().by_id(pset["id"])
ifcopenshell.api.run("pset.remove_pset", tool.Ifc.get(), pset=pset)
linked_aggregate_group = [
r.RelatingGroup
for r in getattr(aggregate, "HasAssignments", []) or []
if r.is_a("IfcRelAssignsToGroup")
if "BBIM_Linked_Aggregate" in r.RelatingGroup.Name
]
tool.Ifc.run("group.unassign_group", group=linked_aggregate_group[0], products=[aggregate])
return {"FINISHED"}
class BIM_OT_select_linked_aggregates(bpy.types.Operator, Operator):
bl_idname = "bim.select_linked_aggregates"
bl_label = "Select linked aggregates"
bl_options = {"REGISTER", "UNDO"}
def _execute(self, context):
element = tool.Ifc.get_entity(bpy.context.active_object)
aggregate = ifcopenshell.util.element.get_aggregate(element)
if not aggregate:
return []
if not element:
return []
linked_aggregate_group = [
r.RelatingGroup
for r in getattr(aggregate, "HasAssignments", []) or []
if r.is_a("IfcRelAssignsToGroup")
if "BBIM_Linked_Aggregate" in r.RelatingGroup.Name
]
for obj in context.selected_objects:
obj.select_set(False)
for rel in linked_aggregate_group[0].IsGroupedBy or []:
for element in rel.RelatedObjects:
obj = tool.Ifc.get_object(element)
obj.select_set(True)
return {"FINISHED"}
@@ -18,17 +18,18 @@
from bpy.types import Panel
from blenderbim.bim.module.aggregate.data import AggregateData
from blenderbim.bim.module.group.data import GroupsData, ObjectGroupsData
from blenderbim.bim.ifc import IfcStore
class BIM_PT_aggregate(Panel):
bl_label = "IFC Aggregates"
bl_label = "Aggregates"
bl_idname = "BIM_PT_aggregate"
bl_options = {"DEFAULT_CLOSED"}
bl_space_type = "PROPERTIES"
bl_region_type = "WINDOW"
bl_context = "object"
bl_parent_id = "BIM_PT_object_metadata"
bl_parent_id = "BIM_PT_tab_object_metadata"
@classmethod
def poll(cls, context):
@@ -54,27 +55,36 @@ class BIM_PT_aggregate(Panel):
row = layout.row(align=True)
row.prop(props, "relating_object", text="")
if props.relating_object:
op = row.operator("bim.assign_object", icon="CHECKMARK", text="")
op = row.operator("bim.aggregate_assign_object", icon="CHECKMARK", text="")
op.relating_object = props.relating_object.BIMObjectProperties.ifc_definition_id
op.related_object = context.active_object.BIMObjectProperties.ifc_definition_id
row.operator("bim.disable_editing_aggregate", icon="CANCEL", text="")
else:
row = layout.row(align=True)
if AggregateData.data["has_relating_object"]:
row.label(text=AggregateData.data["relating_object_label"], icon="TRIA_UP")
op = row.operator("bim.select_aggregate", icon="OBJECT_DATA", text="")
op.obj = context.active_object.name
op.select_parts = False
op = row.operator("bim.select_aggregate", icon="RESTRICT_SELECT_OFF", text="")
op.obj = context.active_object.name
op.select_parts = True
row.operator("bim.enable_editing_aggregate", icon="GREASEPENCIL", text="")
row.operator("bim.add_aggregate", icon="ADD", text="")
op = row.operator("bim.unassign_object", icon="X", text="")
op = row.operator("bim.aggregate_unassign_object", icon="X", text="")
else:
row.label(text="No Aggregate", icon="TRIA_UP")
row.operator("bim.enable_editing_aggregate", icon="GREASEPENCIL", text="")
row.operator("bim.add_aggregate", icon="ADD", text="")
row = layout.row(align=True)
parts = AggregateData.data["related_objects_amount"]
row.label(text=f"{parts or 'No'} Part{'s' if parts > 1 else ''}", icon="TRIA_DOWN")
total_parts = AggregateData.data["total_parts"]
if total_parts == 0:
row.label(text="No Parts", icon="TRIA_DOWN")
elif total_parts == 1:
row.label(text="1 Part", icon="TRIA_DOWN")
else:
row.label(text=f"{total_parts} Parts", icon="TRIA_DOWN")
if AggregateData.data["has_related_objects"]:
op = row.operator("bim.select_parts", icon="RESTRICT_SELECT_OFF", text="")
op.obj = context.active_object.name
@@ -91,3 +101,49 @@ class BIM_PT_aggregate(Panel):
op = layout.operator("bim.add_part_to_object", text="Add " + part_class.lstrip("Ifc"))
op.part_class = part_class
op.obj = context.active_object.name
class BIM_PT_linked_aggregate(Panel):
bl_label = "Linked Aggregates"
bl_idname = "BIM_PT_linked_aggregate"
bl_options = {"DEFAULT_CLOSED"}
bl_space_type = "PROPERTIES"
bl_region_type = "WINDOW"
bl_context = "object"
bl_order = 2
bl_parent_id = "BIM_PT_aggregate"
@classmethod
def poll(cls, context):
if not context.active_object:
return False
props = context.active_object.BIMObjectProperties
if not props.ifc_definition_id:
return False
if not IfcStore.get_element(props.ifc_definition_id):
return False
if not IfcStore.get_file().by_id(props.ifc_definition_id).is_a("IfcObjectDefinition"):
return False
return True
def draw(self, context):
layout = self.layout
if not AggregateData.is_loaded:
AggregateData.load()
props = context.active_object.BIMObjectAggregateProperties
row = layout.row(align=True)
row.label(text="Advanced Users Only", icon="ERROR")
row = layout.row(align=True)
if type(AggregateData.data['total_linked_aggregate']) is int:
if AggregateData.data['total_linked_aggregate'] > 0:
row.label(text=f"{AggregateData.data['total_linked_aggregate']} Linked Aggregates")
row.operator("bim.select_linked_aggregates", text="", icon="RESTRICT_SELECT_OFF")
row.operator("bim.refresh_linked_aggregate", text="", icon="FILE_REFRESH")
op = row.operator("bim.break_link_to_other_aggregates", text="", icon="X")
else:
row.label(text="No Linked Aggregates")
@@ -59,9 +59,13 @@ class MaterialAttributesData:
@classmethod
def load(cls):
cls.data = {"attributes": cls.attributes()}
cls.data = {"ifc_definition_id": cls.ifc_definition_id(), "attributes": cls.attributes()}
cls.is_loaded = True
@classmethod
def ifc_definition_id(cls):
return bpy.context.active_object.active_material.BIMObjectProperties.ifc_definition_id
@classmethod
def attributes(cls):
results = []
@@ -50,7 +50,22 @@ class EnableEditingAttributes(bpy.types.Operator):
oprops = obj.BIMObjectProperties
props = obj.BIMAttributeProperties
props.attributes.clear()
blenderbim.bim.helper.import_attributes2(tool.Ifc.get().by_id(oprops.ifc_definition_id), props.attributes)
def callback(name, prop, data):
if name in ("RefLatitude", "RefLongitude"):
new = props.attributes.add()
new.name = name
new.is_null = data[name] is None
new.is_optional = True
new.data_type = "string"
new.ifc_class = data["type"]
new.string_value = "" if new.is_null else json.dumps(data[name])
blenderbim.bim.helper.add_attribute_description(new)
new.description += " The degrees, minutes and seconds should follow this format : [12,34,56]"
blenderbim.bim.helper.import_attributes2(
tool.Ifc.get().by_id(oprops.ifc_definition_id), props.attributes, callback=callback
)
props.is_editing_attributes = True
return {"FINISHED"}
@@ -87,26 +102,64 @@ class EditAttributes(bpy.types.Operator, Operator):
obj = bpy.data.materials.get(self.obj)
props = obj.BIMAttributeProperties
product = tool.Ifc.get_entity(obj)
attributes = blenderbim.bim.helper.export_attributes(props.attributes)
def callback(attributes, prop):
if prop.name in ("RefLatitude", "RefLongitude"):
if prop.is_null:
attributes[prop.name] = None
else:
try:
attributes[prop.name] = json.loads(prop.string_value)
except:
attributes[prop.name] = None
return True
attributes = blenderbim.bim.helper.export_attributes(props.attributes, callback=callback)
ifcopenshell.api.run("attribute.edit_attributes", self.file, product=product, attributes=attributes)
bpy.ops.bim.disable_editing_attributes(obj=obj.name, obj_type=self.obj_type)
return {"FINISHED"}
class GenerateGlobalId(bpy.types.Operator):
class GenerateGlobalId(bpy.types.Operator, Operator):
bl_idname = "bim.generate_global_id"
bl_label = "Regenerate GlobalId"
bl_description = "Regenerate GlobalId\n\nSHIFT+CLICK to regenerate GlobalIds for all selected objects"
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
index = context.active_object.BIMAttributeProperties.attributes.find("GlobalId")
if index >= 0:
global_id = context.active_object.BIMAttributeProperties.attributes[index]
use_selected: bpy.props.BoolProperty(name="Use All Selected Objects", default=False, options={"SKIP_SAVE"})
def invoke(self, context, event):
# using all selected objects on shift+click
# make sure to use SKIP_SAVE on property, otherwise it might get stuck
if event.type == "LEFTMOUSE" and event.shift:
self.use_selected = True
return self.execute(context)
def _execute(self, context):
if self.use_selected:
for obj in context.selected_objects:
element = tool.Ifc.get_entity(obj)
if not element or not element.is_a("IfcRoot"):
continue
element.GlobalId = ifcopenshell.guid.new()
obj = context.active_object
if not obj or not obj.BIMAttributeProperties.is_editing_attributes:
return {"FINISHED"}
props = obj.BIMAttributeProperties
element = tool.Ifc.get_entity(obj)
if not element.is_a("IfcRoot"):
return {"FINISHED"}
if self.use_selected and obj in context.selected_objects:
# guid value was already regenerated, just update the ui prop
guid_value = element.GlobalId
else:
global_id = context.active_object.BIMAttributeProperties.attributes.add()
global_id.name = "GlobalId"
global_id.data_type = "string"
global_id.string_value = ifcopenshell.guid.new()
guid_value = ifcopenshell.guid.new()
props.attributes["GlobalId"].string_value = guid_value
return {"FINISHED"}
@@ -54,12 +54,12 @@ def draw_ui(context, layout, obj_type, attributes):
class BIM_PT_object_attributes(Panel):
bl_label = "IFC Attributes"
bl_label = "Attributes"
bl_idname = "BIM_PT_object_attributes"
bl_space_type = "PROPERTIES"
bl_region_type = "WINDOW"
bl_context = "object"
bl_parent_id = "BIM_PT_object_metadata"
bl_parent_id = "BIM_PT_tab_object_metadata"
@classmethod
def poll(cls, context):
@@ -76,7 +76,7 @@ class BIM_PT_object_attributes(Panel):
class BIM_PT_material_attributes(Panel):
bl_label = "IFC Material Attributes"
bl_label = "Material Attributes"
bl_idname = "BIM_PT_material_attributes"
bl_space_type = "PROPERTIES"
bl_region_type = "WINDOW"
@@ -94,4 +94,10 @@ class BIM_PT_material_attributes(Panel):
def draw(self, context):
if not MaterialAttributesData.is_loaded:
MaterialAttributesData.load()
elif (
context.active_object.active_material.BIMObjectProperties.ifc_definition_id
!= MaterialAttributesData.data["ifc_definition_id"]
):
MaterialAttributesData.load()
draw_ui(context, self.layout, "Material", MaterialAttributesData.data["attributes"])
@@ -26,7 +26,7 @@ class BIM_PT_augin(bpy.types.Panel):
bl_space_type = "PROPERTIES"
bl_region_type = "WINDOW"
bl_context = "scene"
bl_parent_id = "BIM_PT_integrations"
bl_parent_id = "BIM_PT_tab_sandbox"
def draw(self, context):
layout = self.layout
@@ -57,6 +57,7 @@ classes = (
operator.SelectBcfBimSnippetReference,
operator.SelectBcfDocumentReference,
operator.SelectBcfHeaderFile,
operator.UnloadBcfProject,
operator.ViewBcfTopic,
prop.BcfReferenceLink,
prop.BcfLabel,
@@ -16,6 +16,8 @@
# 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 bpy
import bcf
import bcf.v2.bcfxml
@@ -23,12 +25,31 @@ import bcf.v2.bcfxml
class BcfStore:
bcfxml = None
@staticmethod
def get_bcfxml():
if not BcfStore.bcfxml:
BcfStore.bcfxml = bcf.v2.bcfxml.BcfXml()
return BcfStore.bcfxml
@classmethod
def get_bcfxml(cls):
if not cls.bcfxml:
bcf_filepath = bpy.context.scene.BCFProperties.bcf_file
if not os.path.isabs(bcf_filepath):
bcf_filepath = os.path.abspath(os.path.join(bpy.path.abspath("//"), bcf_filepath))
if bcf_filepath:
try:
cls.bcfxml = bcf.bcfxml.load(bcf_filepath)
except:
# there will be a plenty of "Permission denied" errors
# as many poll() methods will try to access the bcfxml simultaneously
# the first time it's loaded
pass
return cls.bcfxml
@classmethod
def set(cls, bcfxml):
def set(cls, bcfxml, filepath):
cls.bcfxml = bcfxml
bpy.context.scene.BCFProperties.bcf_file = filepath
@classmethod
def set_by_filepath(cls, filepath):
cls.set(None, filepath)
@classmethod
def unload_bcfxml(cls):
cls.set(None, "")
@@ -42,11 +42,9 @@ class NewBcfProject(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
context.scene.BCFProperties.is_loaded = False
bcfxml = bcf.v2.bcfxml.BcfXml.create_new("New Project")
bcfstore.BcfStore.set(bcfxml)
bcfstore.BcfStore.set(bcfxml, "")
bpy.ops.bim.load_bcf_project()
context.scene.BCFProperties.is_loaded = True
return {"FINISHED"}
@@ -58,13 +56,11 @@ class LoadBcfProject(bpy.types.Operator):
filter_glob: bpy.props.StringProperty(default="*.bcf;*.bcfzip", options={"HIDDEN"})
def execute(self, context):
context.scene.BCFProperties.is_loaded = False
if self.filepath:
bcfstore.BcfStore.bcfxml = bcf.bcfxml.load(self.filepath)
bcfstore.BcfStore.set_by_filepath(self.filepath)
bcfxml = bcfstore.BcfStore.get_bcfxml()
context.scene.BCFProperties.name = bcfxml.project.name
bpy.ops.bim.load_bcf_topics()
context.scene.BCFProperties.is_loaded = True
return {"FINISHED"}
def invoke(self, context, event):
@@ -72,6 +68,16 @@ class LoadBcfProject(bpy.types.Operator):
return {"RUNNING_MODAL"}
class UnloadBcfProject(bpy.types.Operator):
bl_idname = "bim.unload_bcf_project"
bl_label = "Unload BCF Project"
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
bcfstore.BcfStore.unload_bcfxml()
return {"FINISHED"}
class LoadBcfTopics(bpy.types.Operator):
bl_idname = "bim.load_bcf_topics"
bl_label = "Load BCF Topics"
@@ -218,7 +224,7 @@ class EditBcfTopicName(bpy.types.Operator):
props = context.scene.BCFProperties
blender_topic = props.active_topic
bcfxml = bcfstore.BcfStore.get_bcfxml()
topic = bcfxml.topics[blender_topic.name]
topic = bcfxml.topics[blender_topic.name].topic
topic.title = blender_topic.title
return {"FINISHED"}
@@ -233,7 +239,7 @@ class EditBcfTopic(bpy.types.Operator):
blender_topic = props.active_topic
bcfxml = bcfstore.BcfStore.get_bcfxml()
topic = bcfxml.topics[blender_topic.name]
topic = bcfxml.topics[blender_topic.name].topic
topic.title = blender_topic.title or None
topic.priority = blender_topic.priority or None
topic.due_date = blender_topic.due_date or None
@@ -257,6 +263,7 @@ class SaveBcfProject(bpy.types.Operator):
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
bcfxml.save(self.filepath)
bcfstore.BcfStore.set(bcfxml, self.filepath)
return {"FINISHED"}
def invoke(self, context, event):
@@ -940,7 +947,7 @@ class ActivateBcfViewpoint(bpy.types.Operator):
context.area.type = old
for global_id in exception_global_ids:
obj = IfcStore.get_element(global_id)
if obj:
if obj and bpy.context.view_layer.objects.get(obj.name):
obj.hide_set(True)
else:
objs = []
@@ -954,7 +961,8 @@ class ActivateBcfViewpoint(bpy.types.Operator):
context_override = {}
context_override["object"] = context_override["active_object"] = objs[0]
context_override["selected_objects"] = context_override["selected_editable_objects"] = objs
bpy.ops.object.hide_view_set(context_override, unselected=True)
with context.temp_override(**context_override):
bpy.ops.object.hide_view_set(unselected=True)
context.area.type = old
if viewpoint.visualization_info.components.view_setup_hints:
@@ -968,14 +976,16 @@ class ActivateBcfViewpoint(bpy.types.Operator):
self.hide_spaces(context)
self.set_openings_visibility(False, context)
# set selection at the end not to conflict with .hide_spaces
self.set_selection(viewpoint)
self.set_colours(viewpoint)
def hide_spaces(self, context):
old = context.area.type
context.area.type = "VIEW_3D"
bpy.ops.object.select_all(action="DESELECT")
bpy.ops.object.select_pattern(pattern="IfcSpace/*")
bpy.ops.object.hide_view_set({})
bpy.ops.object.hide_view_set()
context.area.type = old
def set_openings_visibility(self, is_visible, context):

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