Compare commits

..

6853 Commits

Author SHA1 Message Date
Andrej730 6913864850 Remove triangulation on switch_representation
Now all walls, beams etc should become be displayed with quads.
2023-08-09 16:37:48 +05:00
Andrej730 f8ffc97bf5 remove_product to also remove psets for types 2023-08-09 16:37:47 +05:00
Andrej730 29d4a8d5fe 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
2023-08-09 15:04:27 +05:00
Andrej730 2c1c13f27e 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
2023-08-09 15:04:27 +05:00
Andrej730 4dc55e844c Fix default mep profile names
Previously it was generating names like 4000000x4000000 in mm projects.
2023-08-09 14:46:58 +05:00
Thomas Krijnen b611151039 #3536 fix edge segments in world coords 2023-08-09 14:55:23 +08:00
Dion Moult 9fc32e5c2e IfcTester JSON reporter now also stores identification data separately for convenient reporting. 2023-08-09 16:42:03 +10:00
Dion Moult c5e5036fd3 Store applicability in IfcTester JSON results 2023-08-09 15:00:58 +10:00
Dion Moult 0f68679295 Fix #2753. Disable mapping representations when appending assets via the ExtractElements recipe to be more forgiving (and faster) on invalid models. 2023-08-09 00:13:16 +10:00
Dion Moult fea0d93162 Fix SurfaceColour typo that broke loading colours in some IFCs 2023-08-08 23:47:57 +10:00
Dion Moult e43347161a Fix #3547. Bug where using existing clippings were not preserved when editing profile or wall representations. 2023-08-08 22:35:40 +10:00
arun 706aa70899 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
2023-08-08 13:06:36 +10:00
Carlos Dias fe5a6749a7 Add element guId in BCF report (#3549) 2023-08-06 21:11:31 +10:00
Thomas Krijnen c3f352c018 #3546 Filter duplicate edge indices 2023-08-06 14:27:31 +08:00
Dion Moult 79584dba13 Whoops 2023-08-04 23:56:05 +10:00
Dion Moult 1c74147d89 Dissolve specifically IOS triangulated edges for meshes instead of generic Blender limited dissolve. 2023-08-04 23:49:50 +10:00
Dion Moult cc53744c29 Skeleton operator to regenerate distribution elements recursively 2023-08-04 17:20:50 +10:00
Dion Moult 945836f578 Initial implementation of scale dependent map conversion for IFC4X3 2023-08-04 14:42:43 +10:00
rileywong311 e88e2f5d9c Add brick create relation with split screen 2023-08-03 16:41:30 -07:00
rileywong311 ea267d9443 Implement Brick split screen 2023-08-03 16:41:30 -07:00
rileywong311 d64e4d70c5 Add more subclasses to Brick root options 2023-08-03 16:41:30 -07:00
rileywong311 156844b27d Move Brick list root setting 2023-08-03 16:41:30 -07:00
rileywong311 b96944ff1b Reformat Brick props order and singularize "brick_entity_classes" 2023-08-03 16:41:30 -07:00
rileywong311 7bfa6115ee 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
2023-08-03 16:41:30 -07:00
rileywong311 589b3928f3 Guard loading brick files from bad paths
Referred to "IFCFileSelector.is_existing_ifc_file" method for to make this
2023-08-03 16:41:30 -07:00
rileywong311 a884eb5c54 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.
2023-08-03 16:41:30 -07:00
rileywong311 796d19a3a8 Change BrickschemaData.relations to BrickschemaData.active_relations 2023-08-03 16:41:30 -07:00
rileywong311 b9211e2a93 Load Brick relationships from schema 2023-08-03 16:41:30 -07:00
rileywong311 b662d6f08e Remove if Brickstore.graph.triples check
This returns a generator type which I believe is always truthy, so it didn't change anything.
2023-08-03 16:41:30 -07:00
rileywong311 deecd60ff1 Implement basic Brick create relation 2023-08-03 16:41:30 -07:00
rileywong311 01615724fd Add "remove brick relation" operator 2023-08-03 16:41:30 -07:00
rileywong311 97685a7a77 Rename Brick "attributes" to "relations" 2023-08-03 16:41:30 -07:00
Dion Moult dc1721ed60 Fix #3538. Update bl_info metadata to reflect that we are a native IFC authoring platform not an import-export add-on. 2023-08-03 23:25:13 +10:00
Andrej730 e801ba49b2 option to provide step_id into bim.create_shape_from_step_id directly 2023-08-03 15:54:47 +05:00
Andrej730 2446479d82 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
2023-08-03 15:54:47 +05:00
Andrej730 8908011ecf automatically assign ports predefined type 2023-08-03 13:42:00 +05:00
Andrej730 fe6be61d7a small change for readibility 2023-08-02 16:37:09 +05:00
Andrej730 45f81b4780 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
2023-08-02 16:33:36 +05:00
Andrej730 92df1b351c add_obstruction to fit_flow_segments, derive it's position from cursor 2023-08-02 14:09:25 +05:00
Andrej730 002c7c1ad9 Fixed #3533 (also fixed the same issue for windows) 2023-08-02 11:42:48 +05:00
Andrej730 a583860b58 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'
2023-08-02 11:41:37 +05:00
Dion Moult 4efe198dbb Whoops 2023-08-02 00:03:24 +10:00
Dion Moult 7a6332c883 Skeleton of "add fitting" operator which decides appropriate fitting type 2023-08-02 00:02:05 +10:00
Andrej730 a14ef1ebc2 Fixed TestGetApplicableTypes after 0e69f484f 2023-08-01 18:24:11 +05:00
Andrej730 fab0f92c8a keep the default flow direction for ports NOTDEFINED as it's not yet set 2023-08-01 17:52:01 +05:00
Andrej730 490937ecf9 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
2023-08-01 17:45:17 +05:00
Andrej730 cbf8b7f3a2 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
2023-08-01 17:45:17 +05:00
Andrej730 6c5bc5a3e8 Poll check for show/hide ports
https://i.imgur.com/NFAM1UC.png
2023-08-01 17:45:17 +05:00
Andrej730 f7aa67c6e9 Communicate that blend file is also saved on Ctrl-S
https://i.imgur.com/BnzTDhM.png
2023-08-01 17:45:17 +05:00
Andrej730 4ce41b33bb 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
2023-08-01 17:45:17 +05:00
Dion Moult a0fd2a11cb Another minor documentation fix 2023-08-01 22:43:40 +10:00
Dion Moult 4443f484c1 Easily create a "default" duct / pipe even if you have no demo library. 2023-08-01 22:34:34 +10:00
Dion Moult 120a9f9f3e Minor documentation fix 2023-08-01 22:25:25 +10:00
Andrej730 e33a400ebb 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'
2023-08-01 14:19:30 +05:00
Andrej730 2cc9ea0539 tests for system.get_connected_to / get_connected_from 2023-08-01 13:40:06 +05:00
Andrej730 3c8dc70198 error message on setting flow direction for disconnected port
previously it just did nothing which was a bit confusing
2023-08-01 13:40:06 +05:00
Chetan 08d8657588 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. 2023-08-01 08:46:57 +08:00
Dion Moult e0b4c1a810 Flow segments are now created at a specific RL above the active storey in the BIM Tool 2023-07-31 23:32:10 +10:00
ay-ex a517c9338d fix_choco_cmake_url (#3528)
fixed problematic url for blender cmake
2023-07-31 22:50:26 +10:00
Andrej730 ef01766f4d fixed bug in system.get_connected_to / get_connected_from
import was missing
2023-07-31 17:30:40 +05:00
Andrej730 e9f77f8d2e Create empty at object placement from debug panel
Small feature for debugging - https://i.imgur.com/OSOCIqG.png
2023-07-31 16:00:44 +05:00
Andrej730 a93d4da810 Fixed #3262 2023-07-31 15:17:45 +05:00
Andrej730 e86d3731ff sort keys in the entity to type mapping 2023-07-31 11:46:27 +05:00
Andrej730 0e69f484f4 More general solution for #3466 2023-07-31 11:45:03 +05:00
Dion Moult 3a812a9ec1 Fix #3465. Move representation utilities into new tab system. 2023-07-30 23:18:58 +10:00
Dion Moult 12d70324b8 Fix #3483. You can now conveniently duplicate material layers. 2023-07-30 22:41:28 +10:00
Bruno Postle caff4d0b20 Fix some broken restructured text formatting 2023-07-30 12:41:45 +01:00
Dion Moult afb9aa178f Fix #3453. Hidden annotation type removed, and demo library now comes with linetypes for dashed, fine, thin, medium, thick, and strong. 2023-07-30 21:13:21 +10:00
Wei Yang 356a10eac9 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.
2023-07-30 20:34:50 +10:00
Massimo Fabbro 60f60798df Add new api function that allows to create arbitrary profiles with voids (#3522) 2023-07-30 17:30:56 +10:00
Dion Moult 360729738c Fix #3466. Bug in upstream IFC where distribution elements and furnishing elements had no corresponding type and occurrence. 2023-07-30 16:59:25 +10:00
Dion Moult 794212c223 Fix #2906. Basic support added for perspective drawings. 2023-07-30 16:50:17 +10:00
Dion Moult 2015f0618a Fix #3484. You can now have project-specific pset templates distributed with your project in a relative path. Defaults to pset/. 2023-07-30 14:47:05 +10:00
Dion Moult d7158be431 Purge obsolete search operators in favour of new search filters, colour legend system. 2023-07-30 08:16:30 +10:00
Dion Moult 1ccbe831c8 Purge select similar prop operator in favour of dedicated select similar panel 2023-07-30 08:03:37 +10:00
Dion Moult 5a8e4fa8fd Purge obsolete & risky module unloading / loading feature in favour of tabs. 2023-07-30 07:55:04 +10:00
Dion Moult 9048b67724 Fix #3501. Annotation tool now creates annotations at the 3D cursor. 2023-07-29 23:46:45 +10:00
Dion Moult 9059b5d7ec Fix #3511. You can now use a query to load in occurrences from another project (library). 2023-07-29 22:43:50 +10:00
Dion Moult 7af3f89688 Fix #3502. New select similar feature. 2023-07-29 20:46:07 +10:00
Dion Moult 8be0f2e1da Fix #3273. Don't use simple string replacement when renaming drawings but instead identify elements by attributes which is preferred. 2023-07-29 14:46:11 +10:00
Thomas Krijnen 630bb88a15 SVG serialization UnifyInputs option 2023-07-29 10:07:33 +08:00
Thomas Krijnen 6575921ccd Implement IfcGridPlacement 2023-07-29 10:06:44 +08:00
Thomas Krijnen 95eb78e919 ci-ifctester-pypi.yml Add workflow_dispatch event 2023-07-29 09:37:39 +08:00
Thomas Krijnen 78b4b09be9 Include .xsd in ifctester package pypi distribution 2023-07-29 09:34:26 +08:00
Dion Moult 32e02db3f7 Fix #3521. Forgot to commit function. 2023-07-29 10:21:19 +10:00
Sigma Dimensions (Yass) 9d4715c0a9 Rename and move sub panels of Costing and Schedule Tab 2023-07-28 19:04:12 +01:00
Dion Moult 0ba5db751c Fix #3471. Allow to select hidden types (except if the type is excluded). 2023-07-28 23:42:02 +10:00
Dion Moult c1a15d944f Fix #3518. Default to deeper opening extrusions to handle more wall thicknesses. 2023-07-28 23:07:56 +10:00
ay-ex 7cd1c47ceb add ids html report template percentage bars per section (#3520)
adding html report template percentage bars to each section
2023-07-28 18:55:35 +10:00
Dion Moult a1aa047161 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.
2023-07-28 17:42:41 +10:00
Dion Moult e4896539b4 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. 2023-07-28 17:41:36 +10:00
Dion Moult 47ee667f06 Fix #3517. Fix bug where edit arbitrary profile button doesn't show if your profile has voids. 2023-07-28 17:27:54 +10:00
Dion Moult 7804c9ea80 Potential fix for #3273 where renamed drawings might not get moved on Windows. 2023-07-28 15:35:02 +10:00
Dion Moult 3980666824 Fix #3513. Minor issue where new hierarchical drawing list broke print all feature. 2023-07-28 14:55:22 +10:00
Dion Moult eda0b33b41 Fix #3512. Fix incorrect shapely fills due to unclosed polygons (tolerance issue) and incorrect raycast results. 2023-07-28 12:56:42 +10:00
Ryan Schultz 8fdd0983c0 Merge branch 'v0.7.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.7.0 2023-07-27 18:34:40 -05:00
Ryan Schultz 0ef141447b added to ifc_classes_suggestions.json 2023-07-27 18:34:27 -05:00
Bruno Postle 06ea0512f5 BlenderBIM filter Git messages, remove sort #3096 2023-07-27 16:35:10 +01:00
Dion Moult 8af11db8c2 Fix #3006. Don't affect visibility of types when activating drawing. 2023-07-27 22:29:17 +10:00
Dion Moult 1c5a4ddf20 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. 2023-07-27 12:36:15 +10:00
ay-ex b792b05753 add collapsible detail results (#3508) 2023-07-26 23:33:36 +10:00
Dion Moult 524bace23b Redo mechanism that allows filtered BIM Tool classes to be less "magic" and more explicit whether it filters all vs a specific element type. 2023-07-26 18:14:31 +10:00
Dion Moult 0d656040eb Fix #3479. Regression in 69fa124 when addressing #3421 that led to objects with multiple paths not taking part in the wall / slab joining procedure. 2023-07-25 23:29:06 +10:00
Dion Moult 12fcdebd37 Fix #3486. If Z index isn't specified, text is prioritised over other annotation types. 2023-07-25 22:50:09 +10:00
ay-ex c798309039 fix choco url constants (#3504) 2023-07-25 22:35:25 +10:00
Dion Moult e1913bf03e Fix #3497. Set closed vs unclosed polygonal face sets to allow loading in some IFC software. 2023-07-25 17:41:33 +10:00
Dion Moult bc541d335f Fix #3469. Fix bug where you couldn't load models if there was no style due to no polygons. 2023-07-25 17:12:11 +10:00
rileywong311 d4933c7f24 Refactor BrickStore.root_classes 2023-07-24 21:27:44 -07:00
Trashman247 4e96f17dac Ignore populate Brick attributes if active entity is a brick entity 2023-07-24 21:27:44 -07:00
Trashman247 4665b44ded Make Brick "root_classes" one source of truth 2023-07-24 21:27:44 -07:00
Trashman247 d834d94fd9 Change brick attributes query "name" and "value" to "predicate" and "object" 2023-07-24 21:27:44 -07:00
Trashman247 f2db071cf3 Move brick entity classes to BrickStore and create drop-down for entity type creation 2023-07-24 21:27:44 -07:00
Trashman247 0348e6d11a Move Brick namespace from data to BrickStore 2023-07-24 21:27:44 -07:00
Trashman247 1eb7c006f1 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.
2023-07-24 21:27:44 -07:00
Trashman247 c80a2e1d64 Reformat BrickSchema UI 2023-07-24 21:27:44 -07:00
Dion Moult 7b2d99ba1e Fix #3498. 2023-07-25 08:54:45 +10:00
Dion Moult 55c4ce0071 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.
2023-07-24 23:22:12 +10:00
Dion Moult 8e5dc01758 New projects now load with a Views and Types collection with appropriate visibility settings. 2023-07-24 18:01:25 +10:00
Dion Moult 90632a363c Demo library now ships with example text annotation types (door tag, window tag, etc) 2023-07-24 17:59:04 +10:00
Dion Moult 4d6225bc32 More explanatory images in geometry creation docs 2023-07-23 23:56:50 +10:00
Dion Moult 411ec36e65 Add documentation specifically about swept disk solid geometry for rebar 2023-07-23 23:41:53 +10:00
Gorgious 1a54f54c64 You can now directly apply an ifc array modifier
Previously one would have to click on "remove" then "keep objects"
2023-07-23 15:13:04 +02:00
Dion Moult 5d48dc15c1 Finish writing documentation on geometry creation 2023-07-23 23:04:14 +10:00
Gorgious 5169599884 Array children are now transform-unlocked & unconstrained when the array is applied 2023-07-23 14:01:17 +02:00
Gorgious c3323733a7 Array children are now transforme-locked after editing the array
I have yet to find how to set it on ifc load though
2023-07-23 13:39:52 +02:00
Gorgious 1468b7fddd Array children now follow their parent with a "child-of" constraint #3492 2023-07-23 13:38:37 +02:00
Gorgious 41d6882b40 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
2023-07-23 13:03:06 +02:00
Dion Moult a1ebc2e167 Revert "Small tester UI fix #3487"
This reverts commit c7a1acf974.
2023-07-23 19:09:00 +10:00
Carlos Dias d5d9c91f5a [BlenderBIM] Update IfcTester (2023_07_21) (#3489) 2023-07-23 19:04:45 +10:00
Ryan Schultz 98a6cbb1aa Allow negative X_angle values 2023-07-23 19:04:12 +10:00
Dion Moult f48060e7c7 Fix #3488. Minor regression in IFC4X3 mapping. 2023-07-23 15:42:09 +10:00
Dion Moult dd827bb4c5 You can now save, load, and create custom colour legends of properties 2023-07-23 15:20:14 +10:00
Dion Moult b1cab9484c 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. 2023-07-22 23:09:48 +10:00
Dion Moult 74637dd0ea You can now load and save searches from the search panel 2023-07-22 22:49:22 +10:00
Dion Moult a61eae5f98 More powerful search interface that uses the new facet selector syntax 2023-07-22 16:48:36 +10:00
Andrej730 4c18a89ee6 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
2023-07-22 11:03:22 +05:00
Andrej730 4a7b8f1104 Fixed errors after b6ddc0d
`element.is_a() in ...` wasn't taking into account spatial classes that inherit from IfcSpatialElement/IfcSpatialStructureElement
2023-07-22 10:36:40 +05:00
Andrej730 c7a1acf974 Small tester UI fix #3487 2023-07-21 18:00:11 +05:00
Andrej730 630ac7250a 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.
2023-07-21 15:33:28 +05:00
Dion Moult 08756a24a4 Fix #3477. Move text panels to object information tab. 2023-07-21 18:14:49 +10:00
Gorgious56 8edee78900 Minor fix in wall creation code 2023-07-21 09:57:23 +02:00
Dion Moult 9864261c41 New wall tool, slab tool, etc in toolshelf to improve usability. 2023-07-21 17:29:09 +10:00
Andrej730 bb3e978bba moving code to shape builder 2023-07-21 11:04:44 +05:00
Gorgious56 288cc698bd #3478 : Ifc class name suggestions can now autofill predefined type
If they are correctly filled in the json file :)
2023-07-20 19:40:31 +02:00
Andrej730 a2e70cb454 fixed error after 190153347 2023-07-20 21:56:28 +05:00
Andrej730 1901533470 Distance subtype for rl1, rl2 and x/y/z (opening dimensions) in BIM Tool 2023-07-20 19:35:35 +05:00
Andrej730 c61854c7aa small matrix math refactor
more readable and allows avoiding jumping between 3d/4d vectors
2023-07-20 19:13:56 +05:00
Andrej730 0dee353b8e A bit more descriptive port UI
Before - https://i.imgur.com/ZhVRoJM.png
After - https://i.imgur.com/tI1h2i7.png
2023-07-20 18:08:23 +05:00
Andrej730 2e3cc8e73a 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
2023-07-20 18:08:23 +05:00
Andrej730 6b276b8aed Small type manager refactor and more descriptions 2023-07-20 18:08:23 +05:00
Dion Moult 1b71f4f569 Implement guid facet in facet selector 2023-07-20 19:42:34 +10:00
Dion Moult 452089596e New facet based selector syntax. Proposed to supersede existing selector syntax. 2023-07-20 19:22:15 +10:00
Dion Moult a360bac4c3 You can now explicitly create new IfcTypeProducts. 2023-07-20 19:14:24 +10:00
Gorgious56 09bc05f1af Fix #3480 : Scene tabs now show their individual description on hover
Also correct minor typo
2023-07-20 10:42:11 +02:00
Andrej730 efc84606c5 Support looped railings #3415
Example - https://imgur.com/a/RaLORbk
2023-07-19 16:53:39 +05:00
Dion Moult 268039fb13 Write docs describing how to create profile representations 2023-07-19 19:58:19 +10:00
Dion Moult c59757c61a Fix #3469. Minor regression in linking refactor. 2023-07-19 19:58:19 +10:00
ay-ex 0e3386438e fix error messages 2023-07-19 18:39:13 +10:00
ay-ex 38782f4f53 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
2023-07-19 18:39:13 +10:00
Dion Moult da23e39084 Merge pull request #3467 from c4rlosdias/v0.7.0
[BlenderBIM] Add UI to IfcTester
2023-07-19 09:46:39 +10:00
Gorgious 88278a9edb Boolean subpanel is now located in the Geometric Relationships panel 2023-07-18 21:45:48 +02:00
Carlos Dias a23a66edc2 Update __init__.py 2023-07-18 15:28:37 -03:00
Carlos Dias d2c22b0b0c Update handler.py 2023-07-18 15:27:30 -03:00
Gorgious56 76a4850238 Show ifc modifiers only when applicable to current element 2023-07-18 19:31:51 +02:00
Gorgious56 bf5c8f5e88 Disable some tab buttons when no ifc file is loaded 2023-07-18 18:54:24 +02:00
c4rlosdias 36b45b744d add export bcf to ifctester (2023_07_18) 2023-07-18 13:35:43 -03:00
Andrej730 bffbfb5fa3 Small description for some type templates 2023-07-18 19:52:38 +05:00
Gorgious56 963ffa39b7 Housekeeping - Reorder suggestion dictionary keys alphabetically 2023-07-18 16:17:51 +02:00
Carlos Dias 25d76152f6 Merge branch 'IfcOpenShell:v0.7.0' into v0.7.0 2023-07-18 09:22:32 -03:00
c4rlosdias d851614cbb Add bug fixes 2023-07-18 09:21:47 -03:00
Gorgious56 9c7b073414 Refactor edit mode toggle logic for profile based representations 2023-07-18 14:02:56 +02:00
Gorgious56 66ed95fbc1 Add ifc modifier utilities to tool.Blender 2023-07-18 14:00:30 +02:00
Andrej730 44e98b17a0 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
2023-07-18 15:52:59 +05:00
Gorgious56 a095d93838 Fix bug when using the search operator (F3) with no active object 2023-07-18 10:43:36 +02:00
Dion Moult 892b41a540 New geometry.create_2pt_wall API function to create a wall-like representation from two points. 2023-07-18 18:29:26 +10:00
Dion Moult 0cdce9b2d6 Add documentation for basic geometry creation 2023-07-18 18:28:46 +10:00
Dion Moult 05e05d0d5a Rename sverchok representation to mesh representation 2023-07-18 18:22:56 +10:00
Dion Moult 8cbe298072 Utility function to create rotation matrixes in numpy. 2023-07-18 14:28:35 +10:00
c4rlosdias 7bc23c996b Add select entities (2023_07_17) 2023-07-17 17:07:45 -03:00
Gorgious56 b9ff4f3263 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
2023-07-17 14:48:01 +02:00
Gorgious56 42bbc9a093 Ensure positive extrusion depth
This prevents an error and mesh corruption when trying to input a negative extrusion depth
2023-07-17 14:29:35 +02:00
Dion Moult 33930642a4 Move all modifier panels into Representations and Materials tab. 2023-07-17 22:21:31 +10:00
ay-ex 0573ffb11a fix choco_update action
fix according to upstream makefile change: 
https://github.com/blender/blender/blob/main/build_files/cmake/Modules/FindPythonLibsUnix.cmake
2023-07-17 22:16:55 +10:00
Andrej730 21a614560a 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
2023-07-17 16:32:40 +05:00
Dion Moult 80d74866a9 More tab and panel shuffling. Top level panels now have a tab prefix. 2023-07-17 18:17:32 +10:00
Dion Moult d75e85b3a6 Disable Shift-D duplication of drawings for now until drawings stabilise more. Use the dedicated duplicate drawings feature. 2023-07-17 18:17:32 +10:00
Andrej730 a101f46478 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
2023-07-17 12:11:52 +05:00
Andrej730 2463b77985 Fixed #3441 2023-07-17 11:32:12 +05:00
Dion Moult e695bdbd0d Fix #3449. Fix bug where you couldn't edit the relating type of an annotation. 2023-07-17 15:47:10 +10:00
Dion Moult 17230e4170 Fix bug where loaded point geometry had unlinked meshes or placements with wrong units. 2023-07-17 15:46:33 +10:00
Dion Moult 80d88b3821 Fix #3275. You can now rename annotation types from the annotation manager. 2023-07-17 14:32:05 +10:00
Dion Moult 0500e666bd Add support for arbitrary point annotations and survey point, traverse points, control points, spot elevations, etc. 2023-07-17 11:48:09 +10:00
c4rlosdias 31bb220d38 Update 2023_07_16 2023-07-16 20:46:26 -03:00
Dion Moult 944f2f701a 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.
2023-07-16 22:58:56 +10:00
Dion Moult 844cc62960 More panel shuffling, new Quality and Coordination tab. Geometry is now part of materials. 2023-07-15 21:47:35 +10:00
Dion Moult 147df7f46b Bulk rename panels to remove redundant IFC prefix 2023-07-15 21:02:40 +10:00
Dion Moult 53bd4bf5ea Example of UI if we sentence-cased IFC classes. Good or bad? Please comment at https://community.osarch.org/discussion/comment/16493 2023-07-15 21:02:40 +10:00
Andrej730 d50e43197e small fix 90fce1804 2023-07-15 10:28:23 +05:00
Dion Moult 90fce18042 New icon tabbed interface so you don't need to click twice to change tab. 2023-07-15 13:22:13 +10:00
c4rlosdias 772414451e update ifctester - 2023_07_14 2023-07-14 12:04:22 -03:00
Dion Moult 0a840188bf 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!
2023-07-15 00:05:34 +10:00
Dion Moult a2e7cb8158 Fix undo bugs in the type module where some operators were not part of the undo system for some reason. 2023-07-15 00:00:10 +10:00
Dion Moult 2034fa203b Fix #3275. You can now rename types from the type manager. 2023-07-14 23:58:33 +10:00
Andrej730 572a8c812e root.remove_product fix 2023-07-14 18:22:31 +05:00
Andrej730 af4b5e1fe6 oops, forgot to clean up the test name 2023-07-14 18:02:51 +05:00
Andrej730 9c383e0c1a Fixed plan level annotation rotation #3440 2023-07-14 17:42:45 +05:00
Andrej730 a72231cb91 StairData refactor, solves #3416 2023-07-14 16:17:14 +05:00
Andrej730 846dbc341d root.copy_class to support copying ports in ifc2x3 2023-07-14 15:48:41 +05:00
Andrej730 ed95516b9d Clean up type objects on ifc import 2023-07-14 15:04:15 +05:00
Andrej730 b6ddc0d55e avoid IfcSpatialElement errors in ifc2x3
IfcSpatialElement was added only in ifc4
2023-07-14 14:46:58 +05:00
Andrej730 be5950bcb7 clean up after running test_wall_opening.py 2023-07-14 14:46:58 +05:00
Andrej730 6810bbff2f remove_product to remove IfcRelConnectsElements 2023-07-14 14:46:58 +05:00
Andrej730 2fa7cbaabf 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.
2023-07-14 14:46:58 +05:00
Dion Moult 69fa12423d See #3421. Fix drawing bug where IfcOpenShell might return unclosed paths even though the shape is closed and therefore break cut polygon fills. 2023-07-14 17:32:45 +10:00
Dion Moult 8f609ff383 See #3421. Fix bug where some projection fills wouldn't polygonize correctly in shapely due to numerical tolerance. 2023-07-14 17:29:30 +10:00
Dion Moult 924bf2a3ad Fix #3442. Update sheet list if drawing name changes. 2023-07-14 13:54:24 +10:00
Dion Moult 2be8f4a139 Move object data out of object tab and into new object dropdown. 2023-07-14 13:41:02 +10:00
Dion Moult 8411feedf4 You can now open projects from the Ctrl-N shortcut. 2023-07-14 13:40:09 +10:00
Gorgious56 56e6c8e0e1 Improve slightly the boolean interface in mesh properties editor 2023-07-13 14:52:00 +02:00
Dion Moult 818226d1e2 Fix #3414. The project wizard now doesn't load a fresh session by default. Note that File > Open still enforces a fresh session. 2023-07-13 22:34:13 +10:00
Andrej730 6336241431 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'
2023-07-13 17:32:25 +05:00
Dion Moult 7720166c31 Fix #3393. Bug where duplicating a typed text didn't also copy its literal. 2023-07-13 22:22:00 +10:00
Carlos Dias f5ba0673e3 Merge branch 'IfcOpenShell:v0.7.0' into v0.7.0 2023-07-13 08:01:54 -03:00
Andrej730 3b05799956 Delete edit text from BIM Tool since it's already in Annotation Tool 2023-07-13 15:54:28 +05:00
Andrej730 f3924249e9 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
2023-07-13 14:54:36 +05:00
Gorgious56 7f9e8a207d Enable drawing generation buttons only when an actual drawing is selected 2023-07-13 11:38:11 +02:00
Andrej730 38f7c044a3 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.
2023-07-13 14:32:09 +05:00
Andrej730 7896d5b6e5 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
2023-07-13 13:45:50 +05:00
Andrej730 96d812eaba Fixed console errors on checking modeling data 2023-07-13 13:03:18 +05:00
Dion Moult 0390a65590 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.
2023-07-13 16:26:06 +10:00
Andrej730 ad4ab1567f model data parameters renamed to pset_data for consitency 2023-07-13 11:08:52 +05:00
Andrej730 d633733d18 DoorData use refactor 2023-07-13 10:58:03 +05:00
Andrej730 cd1a813630 WindowData use refactor 2023-07-13 10:36:09 +05:00
Andrej730 c9e6da9b6c change .is_editing type for ifc modifiers to boolean 2023-07-13 09:53:11 +05:00
Andrej730 cada2c36e3 RoofData use refactor 2023-07-13 09:48:33 +05:00
Dion Moult 33304eb1a5 Group drawings by target view in the drawing list 2023-07-13 14:13:28 +10:00
Bruno Perdigão 4e72ef8b20 Select all objects in array modifier #3331 2023-07-13 13:21:49 +10:00
Dion Moult b9d8e86748 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. 2023-07-13 11:53:08 +10:00
Dion Moult 3adfc63b65 Fix #3432. Bug where null applicable occurrence of a type product caused the annotation tool to fail. 2023-07-13 11:27:01 +10:00
Andrej730 91e7d49060 makefile fix 2023-07-12 18:34:48 +05:00
Andrej730 4ad1a2be73 minor change for RailingData 2023-07-12 17:46:56 +05:00
Andrej730 ef8f825012 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
2023-07-12 17:10:30 +05:00
Andrej730 56adfc70b5 RailingData use refactor, solves #3416 2023-07-12 17:01:51 +05:00
smr02 bc909a26fa ifcsverchok delete api_WIP 2023-07-12 21:18:20 +10:00
Andrej730 dd0a015ec3 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
2023-07-12 12:34:24 +05:00
Gorgious56 3813c26db7 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
2023-07-12 09:28:21 +02:00
Dion Moult 95c06c7f82 Fix #3420. Fix missing sheet references on drawings and incorrect direction of section references. 2023-07-12 17:17:54 +10:00
Andrej730 db910d4024 more consistency in values for plan-, section level and diameter 2023-07-12 11:47:19 +05:00
Andrej730 669dbd2e8d radius annotation - support for prefix/suffix/fill-bg
and more consistency between viewport and svg
2023-07-12 11:47:18 +05:00
Andrej730 becbfccae9 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.
2023-07-12 11:47:18 +05:00
Andrej730 2f02d401f2 fill-bg for diameter, plan- and section-level annotations 2023-07-12 11:47:18 +05:00
Dion Moult ec2ca4bcf4 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. 2023-07-12 12:37:53 +10:00
Dion Moult 89df937f89 Fix #3425. Fix invalid IFC data where grid axes should be 2D not 3D. 2023-07-12 11:41:58 +10:00
Thomas Krijnen 7567971a32 Update entity_instance.py 2023-07-11 21:41:06 +02:00
Thomas Krijnen 74160731c9 Update rule_executor.py 2023-07-11 21:40:05 +02:00
Andrej730 5d7fefa042 Prevent resetting selected tab on blender restart
Not sure if there is any caveats to that
2023-07-11 18:23:26 +05:00
Dion Moult db4c61a472 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
2023-07-11 23:08:05 +10:00
Andrej730 298568d3ea PLAN_LEVEL annotations support for prefix, suffix #3399
Viewport - https://i.imgur.com/XRa3oJO.png
SVG - https://i.imgur.com/C8PjoiO.png
2023-07-11 17:04:58 +05:00
Dion Moult 4da7b355bf Fix #3414. Only clear default scene, not custom scene when loading / creating IFCs. 2023-07-11 21:45:34 +10:00
Andrej730 2a15743f8b SECTION_LEVEL annotations support for prefix, suffix #3399
also added support for "show only description" for section_level
2023-07-11 16:42:07 +05:00
Andrej730 e54cc11ca6 Fixed #3400 introduced in dda16c8 2023-07-11 14:54:51 +05:00
Dion Moult 24fdfc6d82 Resolve merge conflict 2023-07-11 18:15:18 +10:00
Dion Moult 8689164769 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.
2023-07-11 18:08:02 +10:00
Gorgious56 86dd79daa6 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
2023-07-11 09:33:06 +02:00
Andrej730 a231cc31e8 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
2023-07-11 11:00:20 +05:00
Dion Moult e412d27398 Integrate brickschema undo system into BlenderBIM Add-on undo system wrapper 2023-07-11 11:16:49 +10:00
Andrej730 60388f1a24 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.
2023-07-10 17:31:11 +05:00
Andrej730 d13d1493e3 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
2023-07-10 17:17:12 +05:00
Dion Moult 556489d686 Implement Ctrl-Tab in properties to conveniently toggle between two tabs. 2023-07-10 22:04:10 +10:00
Dion Moult 657e77117c Move built-in scene panels to a dedicated "Blender Properties" tab instead of unregistering permanently. 2023-07-10 22:04:10 +10:00
Andrej730 7d97f5e375 Library for US AISC15 Steel Profiles #3203 2023-07-10 16:36:07 +05:00
Gorgious56 7583b56738 Trying to edit a railing modifier path while modifying the parameters is now prevented and user is informed with a tooltip 2023-07-10 13:00:43 +02:00
Gorgious56 073a00b2ca Fix IfcRailing modifier support spacing <= 0 would throw an error, and deactivate support spacing field if manual support is selected 2023-07-10 12:47:46 +02:00
Thomas Krijnen 8baa0945e9 2dc4bbf8cd Apply same logic for derived attributes 2023-07-10 10:26:37 +02:00
Dion Moult 717c28b7c9 Override Ctrl-N new file menu to make it easier to start new projects and new IFC icon. 2023-07-10 17:16:32 +10:00
Andrej730 f4a4e906ab 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
2023-07-10 11:09:48 +05:00
Dion Moult 052ff71c51 See #3411. Sheets are now sorted alphabetically by default. 2023-07-10 14:13:44 +10:00
Dion Moult 3dfd36877e See #3016. Scene shading styles are now stored as part of the drawing style. 2023-07-10 14:13:44 +10:00
Dion Moult a9f2237d32 Update splash image to be centered 2023-07-10 13:15:49 +10:00
Dion Moult 62c93f0462 Fix #3410. Minor regression when moving UI to properties panel. 2023-07-10 11:19:15 +10:00
Dion Moult 60ea504267 Add support for Point representations too, not just point cloud. 2023-07-10 10:23:33 +10:00
Dion Moult 1e3b45c0b8 Fix bug where all grouped annotations were excluded when opening models, whereas we only want drawing annotations to be excluded. 2023-07-10 10:23:33 +10:00
Massimo Fabbro 757277cedf Fix bug where drawing decimal places couldn't be 0. Now it's possible to define 0 as value 2023-07-09 18:52:03 +02:00
Dion Moult 14fced7aba Forgot to commit updated IfcTester test suite 2023-07-09 22:30:14 +10:00
Dion Moult 7a3b299148 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.
2023-07-09 22:29:49 +10:00
Dion Moult 45cf6a8ace Drawing panels now moved to the drawings and documents "tab" 2023-07-09 18:30:40 +10:00
Dion Moult 9b1693e112 Update IfcTester to comply with latest modifications to IDS XSD. 2023-07-09 17:02:12 +10:00
Dion Moult cc59929cfd Visual clean up of annotation tool to only activate when a drawing is active and have a type manager similar to the BIM tool. 2023-07-09 16:01:16 +10:00
Dion Moult 43fd012a4c Update tool icons to all use the same underlying "cube" shape and add bracing for structural icon and background walls for spatial icon. 2023-07-08 22:56:23 +10:00
Bruno Perdigão f96f663dc3 recreate decompositions in Refresh operator 2023-07-08 22:12:24 +10:00
Bruno Perdigão 486bafc814 changed keymap 2023-07-08 22:12:24 +10:00
Bruno Perdigão 20a31be5bf clear BIMObjectPropertis.collection after duplication 2023-07-08 22:12:24 +10:00
Bruno Perdigão 98dad0cbbe initial commit 2023-07-08 22:12:24 +10:00
Dion Moult b0ce2e5a00 Fix #3390. Type products should not be set in the model interface. 2023-07-08 22:09:50 +10:00
Thomas Krijnen 3aea0915d0 #3189 proposal (#3190) 2023-07-08 20:07:28 +10:00
Bruno Perdigão 0ee5e3887b removed total_items from the operator 2023-07-08 20:06:18 +10:00
Bruno Perdigão 1afcec2005 implementation of #3332 2023-07-08 20:06:18 +10:00
Dion Moult 656b7cb06e Merge pull request #3405 from brunoperdigao/pset_select_same_value
Bug fix in #3392
2023-07-08 20:05:22 +10:00
Dion Moult 19d3f98b6f Merge branch 'v0.7.0' into pset_select_same_value 2023-07-08 20:05:13 +10:00
Dion Moult 73a736f52a Fix #3402. Activate drawing no longer affects the visibility of non-IFC objects. 2023-07-08 19:55:45 +10:00
Dion Moult 6adc48ade4 Fix #3403. Templates must be specific to the version you are creating. 2023-07-08 19:30:11 +10:00
Dion Moult 949a2bb347 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.
2023-07-08 17:03:06 +10:00
Dion Moult 8cb63720eb 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.
2023-07-08 16:26:21 +10:00
Dion Moult 52ac1090e9 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
2023-07-08 14:39:39 +10:00
Dion Moult 4f6180baf8 Delete old annotation panel in favour of annotation tool 2023-07-08 10:58:53 +10:00
Bruno Perdigão 743339598e minor fix 2023-07-07 15:27:48 -03:00
Bruno Perdigão 2e423f26ff bugfix and alt+click functionality 2023-07-07 15:19:35 -03:00
luzpaz b3b45893cc Fix various typos in src/ifcgeom* subdirs 2023-07-07 18:44:02 +02:00
Dion Moult a65747dd2c Minor doc improvements and SQL/stream code cleanup 2023-07-07 18:12:52 +10:00
Dion Moult 4286ad6dcc 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. 2023-07-07 17:57:09 +10:00
Dion Moult 0b823c772e Fix #3213. Internally, we should always use Unix path separators. 2023-07-07 17:20:07 +10:00
Dion Moult 9944024457 The user can now toggle between rotate before / after translating in OffsetObjectPlacements 2023-07-07 15:57:42 +10:00
Dion Moult 3cdad90755 Fix #3016. Drawing styles that set the shading style will change shading style upon activating the style. 2023-07-07 15:17:53 +10:00
Dion Moult 71846d683b Fix #3121. Merge equivalent contexts when merging projects in MergeProject Ifcpatch recipe. 2023-07-07 13:04:44 +10:00
Dion Moult 7be0fd6137 Fix failing tests since Github test runner only has IFC4X3_ADD1 not TC1 compiled in. 2023-07-07 12:33:38 +10:00
Bruno Perdigão 1eef746f60 implements #3268 2023-07-07 12:15:05 +10:00
Trashman247 1696ca5e08 Remove binding namespace new project (already in schema) 2023-07-06 16:47:53 -07:00
Trashman247 c011458ea2 remove import BrickStore in props 2023-07-06 16:47:53 -07:00
Trashman247 abf809f9dd Add brick operator accepts label parameter & add toggle for namespace editing 2023-07-06 16:47:53 -07:00
Trashman247 9257816e62 Add filter to listed namespaces (need add more aliases) 2023-07-06 16:47:53 -07:00
Trashman247 d47125b28f Double space core functions and clear brick browser on project close 2023-07-06 16:47:53 -07:00
Trashman247 b7453f584e Separate serialize into "save" and "save as" with file selection 2023-07-06 16:47:53 -07:00
Bruno Perdigão 6a7cf6843a implements #3268 2023-07-06 15:10:53 -03:00
Sigma Dimensions 9c4fa666c9 Georeferencing utility to convert an angle in degrees to X Axis Abscissa and Ordinate 2023-07-06 16:02:03 +01:00
Dion Moult a970120fac See #3126 and 5b4010c. Fix failing tests, and allow schema_by_name to follow the same schema_version distinction as file. 2023-07-06 22:40:31 +10:00
Andrej730 72907cd3f0 w-type US steel profiles #3203 2023-07-06 17:09:03 +05:00
Dion Moult ae7c9f35a6 See #3126. Forgot to commit tests related to explicit schema versions. 2023-07-06 20:56:33 +10:00
Thomas Krijnen 0b111084b0 Update win32 download links installation.rst 2023-07-06 11:30:09 +02:00
Thomas Krijnen 2ee0dcaf64 #3359 return early in case of no-prefiltering 2023-07-06 11:21:17 +02:00
Andrej730 70eabead92 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
2023-07-06 13:52:51 +05:00
Dion Moult 5a30d9fb9b Fix #3383. Disallow any extrusion angles >=90 which are invalid. 2023-07-06 17:34:22 +10:00
Dion Moult 3126db342d Test all shapes in the debug panel now also attempts 2D checks to prevent false positives. 2023-07-06 17:24:51 +10:00
Dion Moult c0db03438f Revert "More descriptive RuntimeError: Failed to process shape #3383"
This reverts commit 1542217117.
2023-07-06 17:02:57 +10:00
Andrej730 1542217117 More descriptive RuntimeError: Failed to process shape #3383
Example of the new error - https://i.imgur.com/0FMQw5V.png
2023-07-06 10:29:17 +05:00
Dion Moult 5b4010c67d Fix #3126. Implement mapping from IFC4X3 to IFC4X3_ADD1 and explicit version identifiers in ifcopenshell.file 2023-07-06 14:22:36 +10:00
Dion Moult c18d96f0e3 Fix #3386. 2023-07-06 13:46:09 +10:00
Dion Moult f9173700a6 Fix #3349. Allow inserting a filling into an uncontained building element. 2023-07-06 13:40:29 +10:00
Bruno Perdigão 7100a7fa8e fix #3063 2023-07-06 12:39:20 +10:00
Dion Moult 0078d691d3 Fix #3382. Minor regression in wall join refactor from d64c135 2023-07-06 11:45:12 +10:00
Sigma Dimensions fd626e37a0 fix #3385 - renaming grids with "F2" 2023-07-05 17:41:57 +01:00
Andrej730 e62d7ad9ef Moving editing roof and railing paths hotkey from Shift+E/Q to Tab 2023-07-05 18:40:35 +05:00
Andrej730 80eebc03d3 Fix #3263 2023-07-05 18:04:14 +05:00
Andrej730 62fea990d9 railing modifiers - fixing normals for frameless_panel #3277 2023-07-05 17:47:16 +05:00
Dion Moult 7ab01e6ac0 See #3359. Bump IfcOpenShell and enable HLR prefiltering optimisation for drawing generation 2023-07-05 22:18:53 +10:00
Andrej730 74a025b81c 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.
2023-07-05 16:52:23 +05:00
Andrej730 ca8ed87f2a 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
2023-07-05 16:52:23 +05:00
Andrej730 9fbcb3900f ShapeBuilder.polyline - skip creating segments if they are not needed 2023-07-05 13:02:17 +05:00
Dion Moult 1533283822 Fix #3356. Include version info in status bar for debugging and new copy debug info button to help bugreporting. 2023-07-05 17:39:43 +10:00
Dion Moult 6beca6382f Fix #3256. Support file profiles made out of multiple representation items. 2023-07-05 14:38:48 +10:00
Dion Moult a1caef5b4f See #3334. Fix some get_pset implementation errors in 64516a1 2023-07-05 10:37:13 +10:00
OrionSehn 7da96b4951 Proposed fix to #3352 2023-07-05 09:56:42 +10:00
Andrej730 66c275f617 Sync ifc class in BIM Tool and Type Manager
It's seems it would be better for ux if they will be connected
2023-07-04 17:17:57 +05:00
Andrej730 52a8fcd86e 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.
2023-07-04 16:43:42 +05:00
Dion Moult 3ba7ecdb95 See #3376. Bump updated build of IfcSverchok. 2023-07-04 20:17:01 +10:00
Dion Moult 36f7625cee Merge AWS Lambda installation documentation into official docs 2023-07-04 20:10:57 +10:00
Dion Moult ee82714423 Whoops 2023-07-04 19:47:49 +10:00
Dion Moult 281147367e Close #3377. Implement xyz coordinates for COBie object placement. 2023-07-04 19:45:11 +10:00
Dion Moult 0beea4255a Write IfcOpenShell documentation for geometry trees. 2023-07-04 18:04:15 +10:00
Andrej730 b03c4da7bf 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
2023-07-04 10:57:22 +05:00
Dion Moult c0402687b5 See #3334. Optimise pset getting and add simple "broadphase" filtering for all facets for faster validation. 2023-07-04 15:50:44 +10:00
Dion Moult c6fa7161b6 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.
2023-07-04 15:50:44 +10:00
Dion Moult 64516a173a See #3334. Fix bug where get_pset didn't handle property inheritance correctly. 2023-07-04 15:50:44 +10:00
c4rlosdias f507e3e8bd Add extra formats to output file 2023-07-04 12:42:59 +10:00
c4rlosdias 700d8a3b9c Add extra formats to output file 2023-07-03 10:22:08 -03:00
Andrej730 2f15d73b30 Prevent crash on attempt to link the current .blend file 2023-07-03 17:23:49 +05:00
Andrej730 53cc6f0bd6 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.
2023-07-03 17:09:01 +05:00
Andrej730 7680652c28 disable default vebose mode for getting shader attribute to prevent spam 2023-07-03 16:56:47 +05:00
Carlos Dias da3440d848 Merge branch 'IfcOpenShell:v0.7.0' into v0.7.0 2023-07-03 08:48:10 -03:00
Andrej730 e8b1d00e6d adding default ifc objects added from shift-a menu to the current collection 2023-07-03 16:22:20 +05:00
Andrej730 6ec7e48423 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
2023-07-03 15:54:51 +05:00
Andrej730 ccf09b962a Update type manager thumbnails on editing profiles
Example - https://imgur.com/a/IcV8IIR
2023-07-03 14:34:20 +05:00
Andrej730 485d41ae09 disable chaching sound running the bim tests
to save someone's ears (probably mine 😁) from running 10 chaching sounds per second
2023-07-03 12:43:26 +05:00
Dion Moult b67c5a0828 Fix #3366. Fix crash in IfcDiff if you are comparing a model with no geometry. 2023-07-03 17:28:38 +10:00
Andrej730 7b92057227 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'
2023-07-03 11:53:03 +05:00
Dion Moult a980ce1bfa Fix #3355. Reimplement graphical clash snapshots in BCF from IfcClash in the BlenderBIM Add-on. 2023-07-03 16:50:40 +10:00
Dion Moult 51b7f24a00 You can now unload BCF projects to load another one. 2023-07-03 16:50:40 +10:00
Dion Moult 136e1c3b3f Merge pull request #3364 from IfcOpenShell/interface-to-interact-with-Brickschema
Interface to interact with brickschema PR #1
2023-07-03 09:55:09 +10:00
Carlos Dias c094517a10 Update operator.py
missing output file format in arguments
2023-07-03 09:42:17 +10:00
Carlos Dias 93aa24c6d2 Update operator.py
missing output file format in arguments
2023-07-02 20:25:51 -03:00
Andrej730 b61a11d5b7 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
2023-07-02 19:59:18 +05:00
Andrej730 012da8fcb9 More responsive UI for IFC search 2023-07-02 15:52:24 +05:00
Andrej730 d64c1358d7 a bit of bim.join_wall refactor 2023-07-02 11:04:00 +05:00
Andrej730 0252701f7a 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'
2023-07-02 10:44:01 +05:00
Bruno Postle 6fed9bf795 BlenderBIM Git documentation minor corrections 2023-07-01 14:35:32 +01:00
Bruno Postle b088a763d8 BlenderBIM document Git merge asymmetry (#3096) 2023-07-01 09:53:26 +01:00
Dion Moult 104fe56612 Whoops 2023-07-01 15:41:40 +10:00
Dion Moult 9e0760b8d2 Fix hppfcl segfault by bumping hppfcl and its dependencies. Remove support for py37. 2023-07-01 15:37:21 +10:00
Andrej730 f26986645a Added warning for a86456392 2023-06-30 18:19:23 +05:00
Andrej730 a86456392b 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
2023-06-30 18:05:26 +05:00
Andrej730 61de0ad64c Calculating angle based on world position instead of camera pos #3362 2023-06-30 15:02:39 +05:00
Andrej730 243eee9ebf Added support for OCCLUSION textures for 3aff29dec 2023-06-30 14:44:06 +05:00
Andrej730 f23ac034c7 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
2023-06-30 14:19:07 +05:00
Andrej730 363ede9801 set default position on creating window and door
to avoid validation errors like IfcProduct.PlacementForShapeRepresentation
2023-06-30 14:16:39 +05:00
Andrej730 18d26df24e 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
2023-06-30 13:42:01 +05:00
Andrej730 0df62d5746 updated furniture library after f5031035c and a385938 2023-06-30 13:30:09 +05:00
Andrej730 f5031035c7 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))
2023-06-30 13:27:00 +05:00
Thomas Krijnen fc50bdd3a0 Fix openbot build 2023-06-30 09:32:10 +02:00
Kristoffer Andersen 3117d5b2e7 Update build.sh
Use only 1 cpu to reduce memory usage for conda builds
2023-06-30 09:27:15 +02:00
Riley Wong e6dc1d1acd Merge branch 'v0.7.0' into interface-to-interact-with-Brickschema 2023-06-30 00:05:20 -07:00
Trashman247 bd8afabce3 Resolve .git-ignore file conflict 2023-06-30 00:03:46 -07:00
Trashman247 01da8498f2 Move Brick.ttl ignore to main git-ignore file 2023-06-29 23:56:20 -07:00
Trashman247 a34b8d06ec Silence known rdflib_sqlalchemy TypeError warning 2023-06-29 23:42:00 -07:00
Massimo Fabbro 5764cfcbb9 Add regen button also under space tool 2023-06-30 14:34:21 +10:00
Dion Moult 1ad2465ad4 See #3283. Minor fix where IfcContext is abstract, so IfcProjectLibrary should be checked instead when loading filtered models. 2023-06-30 13:58:18 +10:00
Dion Moult f28e28abc0 Fix failing build 2023-06-30 11:59:17 +10:00
Dion Moult 97e321dd12 Bundle qhull for hppfcl on Linux too 2023-06-30 11:47:44 +10:00
Thomas Krijnen fc4b36e759 Fix openbot build 2023-06-29 22:04:18 +02:00
Thomas Krijnen 832cdce934 Fix openbot build 2023-06-29 22:03:29 +02:00
Andrej730 e45974df62 Support for door/window/stair modifiers in ifc2x3 2023-06-29 18:38:06 +05:00
Andrej730 bba118ed19 ShapeBuilder to use IfcPolyline of IfcIndexedPolyCurve to support ifc2x3
needed it to add suport for window/door modifiers in ifc2x3 in the next commit
2023-06-29 18:38:06 +05:00
Andrej730 709590401c fixing errors running tests if no tool selected in blender startup file
Error was: AttributeError: 'NoneType' object has no attribute 'idname'
2023-06-29 17:19:40 +05:00
Dion Moult ab74d1456b Bundle qhull for ifcclash on macosm1 2023-06-29 22:10:39 +10:00
Thomas Krijnen 4457da9042 Help swig not to trip over old occt handle definitions 2023-06-29 13:29:49 +02:00
Thomas Krijnen d501118eb4 Add --prefilter flag to draw.py 2023-06-29 13:29:49 +02:00
Thomas Krijnen 0a03d20133 SVG prefiltering elements based on large faces 2023-06-29 13:29:49 +02:00
Andrej730 f3f56c0891 simplified dev installation script for mac/linux 2023-06-29 16:13:37 +05:00
Andrej730 a689b31279 Fixed crash on Mac m1 on removing unused types (similar to 4d0be1972) 2023-06-29 15:34:52 +05:00
Andrej730 4d0be19720 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.
2023-06-29 14:56:06 +05:00
Andrej730 fb7591caef avoid errors unregistering tools from tests 2023-06-29 13:43:08 +05:00
Dion Moult 8efaf2fbcb Attempt to bundle hppfcl for macosm1 2023-06-29 18:13:52 +10:00
Andrej730 d41068e132 Console warnings if drawing's assets not found #3325 2023-06-29 10:15:02 +05:00
Andrej730 4e65f143da unregistering spatial and structural tools on disabling addon 2023-06-28 16:54:43 +05:00
Andrej730 40656297a6 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.
2023-06-28 15:57:29 +05:00
Andrej730 f88835b87b 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.
2023-06-28 15:56:38 +05:00
Andrej730 8f18db64cf Disable default stream mode for now to avoid errors #3354 2023-06-28 12:38:00 +05:00
Andrej730 fdd473234a Poll message for bim.file_unassociate/bim.file_associate 2023-06-28 10:45:53 +05:00
Andrej730 569f56f713 Fixed error on saving styles without textures after 3aff29dec 2023-06-28 10:39:57 +05:00
Andrej730 61607f9de2 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
2023-06-28 10:32:33 +05:00
Dion Moult 40b34f6a33 Docs now point to the popular Search IFC Class website. 2023-06-28 13:30:36 +10:00
Dion Moult 89b0674b08 You can now exclude classes from streaming in ifcopenshell.stream 2023-06-28 12:41:50 +10:00
Trashman247 37e4f98857 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.
2023-06-27 13:21:44 -07:00
Andrej730 e89a9cd01c 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).
2023-06-27 19:30:49 +05:00
Dion Moult 20b63f530a 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).
2023-06-27 21:07:37 +10:00
Dion Moult 183230b7f5 Naive implementation of file stream and Lark based IFC-SPF reader to handle huge IFCs. 2023-06-27 21:03:02 +10:00
Andrej730 7e2b40176c Fixing tests after 2dc9dc200 2023-06-27 15:29:05 +05:00
Andrej730 3aff29dec1 Support for import IfcSurfaceStyleWithTextures
Added UI for adding textures in BBIM shader graph generator

https://imgur.com/a/BI5pOZn
2023-06-27 14:30:30 +05:00
Trashman247 2ce32c6521 Change namespace selector to only show alias 2023-06-26 23:17:11 -07:00
Trashman247 9d84172f15 Add changeset versioning to Brick add/remove 2023-06-26 23:16:52 -07:00
Trashman247 8341931a62 Reformat commenting, remove prints, and remove BrickStore.project 2023-06-26 16:01:26 -07:00
Trashman247 81a4ff711c 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
2023-06-26 13:59:28 -07:00
Dion Moult 2da86c170f See #3347. Hotfix latest IfcOpenShell SQLite features when making builds. 2023-06-26 22:14:59 +10:00
Dion Moult 41a176cb6d The BlenderBIM Add-on now supports loading IFCSQLite files! 2023-06-26 17:21:01 +10:00
Dion Moult 10e96239a1 You can now toggle loading geometry in advanced mode when loading a project 2023-06-26 17:13:34 +10:00
Dion Moult 897dfb1e33 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).
2023-06-26 17:08:50 +10:00
Dion Moult c1d972f7bf Ifc2Sql patch now can store inverses for efficient queries. 2023-06-26 17:08:50 +10:00
Trashman247 d9196882dc 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)
2023-06-25 23:56:15 -07:00
Trashman247 580f8f6218 Change graph naming to all caps 2023-06-25 23:21:27 -07:00
Trashman247 e177f5f051 Add Brick.ttl to .gitignore 2023-06-25 23:20:56 -07:00
Andrej730 1a5c501af0 Fixed typo in e3a7f7627 2023-06-26 10:48:50 +05:00
Andrej730 12c10f98a3 Fixing bug after 28cc168
Was causing some tests to fail
2023-06-26 10:33:07 +05:00
Andrej730 e3a7f76276 Avoid ui errors after 2dc9dc200 2023-06-24 10:19:35 +05:00
Trashman247 046ce2b8e7 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.
2023-06-23 16:55:34 -07:00
Andrej730 6dab4501ad 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
2023-06-23 18:19:33 +05:00
Andrej730 2dc9dc2000 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).
2023-06-23 18:04:32 +05:00
Andrej730 addce9f0ea Fixed #3342 2023-06-23 17:15:10 +05:00
Andrej730 4a368938c3 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.
2023-06-22 22:00:42 +05:00
Thomas Krijnen a0f68baefc #2805 syntax 2023-06-22 16:23:32 +02:00
Thomas Krijnen 3decb48ed0 #2805 template keyword for gcc 2023-06-22 14:30:11 +02:00
Thomas Krijnen 2d330f4c90 #2805 IFC4X3 codegen 2023-06-22 14:10:55 +02:00
Thomas Krijnen 1c996013b6 #2805 Further fixes for aggregates of select 2023-06-22 14:10:55 +02:00
Thomas Krijnen 65cb47e2d8 #2805 IfcGeom dynamic casting updates 2023-06-22 14:07:34 +02:00
Thomas Krijnen e9d0b8ab66 #2805 IfcGeom updates 2023-06-22 12:07:10 +02:00
Thomas Krijnen 0bb9bcd9fb #2805 Pasta errors 2023-06-22 11:03:06 +02:00
Thomas Krijnen 997ebe48df #2805 template keyword for gcc 2023-06-22 10:48:19 +02:00
Thomas Krijnen 0cdf72fde1 #2805 Rerun codegen 2023-06-22 10:30:57 +02:00
Thomas Krijnen 97c6b99d57 #2805 Use dynamic cast for generalize() due to virtual inheritance of selects 2023-06-22 10:30:42 +02:00
Thomas Krijnen ed5d28de54 #2805 update hierarchy helper 2023-06-22 10:08:58 +02:00
Thomas Krijnen f5c102402f #2805 rerun codegen 2023-06-22 10:07:27 +02:00
Thomas Krijnen 7aa04611a1 #2805 provide aggregate typedef for select types 2023-06-22 10:07:26 +02:00
Andrej730 5c7f14cc3c 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
2023-06-22 10:15:39 +05:00
Andrej730 9e1249d8ee Fixed #3335 caused by 36b746d 2023-06-22 09:33:40 +05:00
Bruno Postle 6cb7234cb5 BBIM fix Git panel polling repo on refresh (#3096)
Just scrolling Git panel shouldn't do any Git IO
2023-06-21 21:42:50 +01:00
Thomas Krijnen aab6a21bf3 #2805 rerun codegen 2023-06-21 19:25:05 +02:00
Thomas Krijnen c72f960ed4 #2805 statically typed select types as aggregates 2023-06-21 19:25:04 +02:00
Massimo Fabbro b63b4ce326 Add toggle space visibiity button into spatial tool menu 2023-06-21 18:57:41 +02:00
Andrej730 71113b56bf refactor with SKIP_SAVE option on operator props
Co-Authored-By: Gorgious56 <25156105+Gorgious56@users.noreply.github.com>
2023-06-21 17:49:16 +05:00
Andrej730 ef57c209a0 More options to save .ifc as relative path in blender 2023-06-21 17:39:57 +05:00
Andrej730 e99c154cb2 Fixed tests after a4a6dce 2023-06-21 14:19:26 +05:00
Andrej730 520860bdb9 Fixed test after b035129 2023-06-21 14:19:25 +05:00
Andrej730 103e8a545b 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[...
2023-06-21 14:19:25 +05:00
Andrej730 d35c5c433f 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: []
2023-06-21 14:19:25 +05:00
Andrej730 7dc98612e4 Fixed void tests after d3d2c36 2023-06-21 11:04:22 +05:00
Andrej730 3853258b27 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
2023-06-21 10:16:03 +05:00
Andrej730 6825d26700 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
2023-06-21 09:58:41 +05:00
Andrej730 900c35e9fe Fixing collections tests related to 99d9c0f5b
FAILED test/bim/test_feature.py::test_remove_drawing - AssertionError: The collection "IfcGroup/PLAN_VIEW" does not exist
2023-06-21 09:46:44 +05:00
Bruno Postle 7aafa87b52 BlenderBIM push Git tags to remote
Shows error message if push fails
2023-06-20 16:58:55 +01:00
Andrej730 e719055d9a 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']
2023-06-20 19:42:31 +05:00
Andrej730 a956038bfc 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
2023-06-20 19:18:40 +05:00
Andrej730 5c2ae98c09 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
2023-06-20 19:18:39 +05:00
Andrej730 99d9c0f5bf Fixing collectors tests after 1f43ec8 2023-06-20 17:50:30 +05:00
Andrej730 2fbb9c569b Fixing tool tests 2023-06-20 17:30:01 +05:00
Andrej730 4a9d1ff038 Fixing core tests 2023-06-20 16:31:10 +05:00
Trashman247 bcf5f07718 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.
2023-06-19 21:59:17 -07:00
Trashman247 a3572f3372 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.
2023-06-19 21:54:28 -07:00
Andrej730 6cd9161986 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'
2023-06-19 19:04:51 +05:00
Andrej730 982f4a4965 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?
2023-06-19 19:03:18 +05:00
Thomas Krijnen c5aab16696 Remove dependency on bootstrap 2023-06-19 14:34:14 +02:00
Thomas Krijnen 6e1b18ba33 #3120 item_id vector test case 2023-06-19 13:48:35 +02:00
Thomas Krijnen 2b3d547c99 #3120 item_id vector 2023-06-19 13:47:55 +02:00
Andrej730 a34be6ae5d Getting shader graph nodes by type rather than name #3316
Because relying on names doesn't work for non english users
2023-06-19 16:17:37 +05:00
Andrej730 dfc5a280a4 Fixed error on disabling editing window 2023-06-19 15:51:01 +05:00
Andrej730 6a2bbfa85c 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)
2023-06-19 11:02:42 +05:00
Bruno Postle ddef4820d0 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'.
2023-06-16 19:42:57 +01:00
Thomas Krijnen e6b05b547b Further defer sql.py imports for ifcopenbot to succeed 2023-06-16 20:32:40 +02:00
Thomas Krijnen 5e8ec48d98 Comment out import mysql.connector 2023-06-16 14:16:17 +02:00
Thomas Krijnen 9c21304629 Correct if-clause 2023-06-16 14:08:48 +02:00
Thomas Krijnen 1278f98df6 Add test 2023-06-16 14:08:48 +02:00
Totally a booplicate d31b470e83 smol fix 2023-06-16 14:08:48 +02:00
Totally a booplicate 1ecb25684e fix missing else clause 2023-06-16 14:08:48 +02:00
Totally a booplicate 5999976d37 raise TypeError on invalid pset 2023-06-16 14:08:48 +02:00
Totally a booplicate 51e5f843ba rework unpack_unit_value
handle the `None` case, simplify logic
2023-06-16 14:08:48 +02:00
Totally a booplicate 3d787338fb improve naming of the new method 2023-06-16 14:08:48 +02:00
Totally a booplicate de67648f3e improve update_existing_properties
explicit class check
error out on a not supported type
better methods names
2023-06-16 14:08:48 +02:00
Totally a booplicate afa803ea62 implement _try_purge
per review comment about repeating code
2023-06-16 14:08:48 +02:00
Totally a booplicate 3a0aaee03b restructure if/elif/else chain 2023-06-16 14:08:48 +02:00
Totally a booplicate a5353e02b5 support tuples 2023-06-16 14:08:48 +02:00
Totally a booplicate 1acc743370 move prop check 2023-06-16 14:08:48 +02:00
Totally a booplicate 375f4f2a86 per review
change exception message
remove TODO
pass `Unit`
raise `NotImplementedError` when no template was found
2023-06-16 14:08:48 +02:00
Totally a booplicate d4b88fd422 resolve TODO
This is being fixed, we should always have a class to use
2023-06-16 14:08:48 +02:00
Totally a booplicate df6cc74a87 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
2023-06-16 14:08:48 +02:00
Balázs Dukai 80846061f2 Don't use importlib for version 2023-06-16 13:29:24 +02:00
Balázs Dukai 80f9590410 Get package version from pyproject.toml 2023-06-16 13:29:24 +02:00
Balázs Dukai 16cda28d16 Include GenericCityObject extension 2023-06-16 13:29:24 +02:00
Balázs Dukai 24ea024a0d Add parameters 2023-06-16 13:29:24 +02:00
Balázs Dukai e90d7ccdb1 Init package 2023-06-16 13:29:24 +02:00
Vasile-Corjan 1a3bf513a7 Update README.md 2023-06-16 08:34:05 +02:00
Vasile-Corjan a855c40426 Update README.md
I have added the parameters "minOccurs" and "maxOccurs"
2023-06-16 08:34:05 +02:00
Dion Moult c8ede38edb Run black on existing entity_instance 2023-06-16 16:17:17 +10:00
Dion Moult 704e27ecca Build testing prototype of an SQLite based file / entity_instance. 2023-06-16 16:16:22 +10:00
Dion Moult 438ddc17f5 Document two answers to frequently reported bugs: missing numpy and blend / ifc out of sync. 2023-06-16 14:13:15 +10:00
Dion Moult a8dfed50e4 Minor geometry processing documentation fix 2023-06-16 13:32:33 +10:00
Dion Moult 8cb99a77cf Convert Ifc2Sql script to IfcPatch recipe and add geometry support 2023-06-16 13:32:33 +10:00
Dion Moult f9b6e6f098 Fetch pset and qto names via pset data instead of real time to prevent UI lag on larger models. 2023-06-16 13:32:33 +10:00
Dion Moult 1365b76149 Lazily check for BBIM_Railing psets to prevent unnecessarily fetching psets for every element when loading models. 2023-06-16 13:32:33 +10:00
Dion Moult 47cc3158fd IfcPatch can now support patches that write to arbitrary files or have no output. 2023-06-16 13:32:33 +10:00
Dion Moult bac683e105 Fix bug for getting psets of materials and profiles in IFC2X3 2023-06-16 13:32:33 +10:00
Thomas Krijnen 840818d681 #3308 add assert 2023-06-15 21:27:42 +02:00
Thomas Krijnen 206933a2f2 #2819 Handle periodic bspline curves in serialization 2023-06-15 16:19:05 +02:00
Thomas Krijnen ff209b4c11 #2819 Mark rep id as AdvancedBrep 2023-06-15 16:18:29 +02:00
Sigma Dimensions 4bc987924d enable activating object type when trying to select type from an object ( whilst the type is hidden from view layer) 2023-06-14 13:11:17 +01:00
Massimo Fabbro f26cfc93ea Now generate spaces from walls considers also columns in order to create the contours 2023-06-14 12:58:39 +02:00
Thomas Krijnen 4bbb6cd2df #3305 Less pessimistic tolerance comparison in newells method 2023-06-14 11:47:24 +02:00
Thomas Krijnen 9411a1d94b #3305 one more iteration on lower fuzziness level for boolean ops 2023-06-14 11:47:24 +02:00
Sigma Dimensions 6a287ced7c temporarily hide IFC Spatial Manager for IFC2X3 models 2023-06-14 10:47:00 +01:00
Sigma Dimensions fb02ac34d4 Enable selecting group elements 2023-06-14 09:35:54 +01:00
Sigma Dimensions 81fd84223a Enable selecting a container's children from the IFC Spatial Manager panel 2023-06-13 21:17:02 +01:00
Sigma Dimensions a8f1a28ac2 fix replacing material with material profile 2023-06-13 14:04:28 +01:00
Sigma Dimensions d2f4f0d8c2 experimental patch of non parametric mep segments 2023-06-13 13:26:53 +01:00
Sigma Dimensions 1c17cccc45 fix missing import 2023-06-13 10:34:21 +01:00
Sigma Dimensions 061930bc8e Move Spatial Manager UI to "IFC Project Set-up" 2023-06-13 10:32:25 +01:00
Sigma Dimensions 28cc168b3b split material assign/unassign operators into tool and core 2023-06-13 10:28:31 +01:00
Sigma Dimensions 88f53f7931 fix delete material operator 2023-06-12 15:24:51 +01:00
Sigma Dimensions 755fa81817 Fix displaying connections for selected distribution ports 2023-06-12 15:23:24 +01:00
Sigma Dimensions 36fab12847 Refactor and re-use common spatial_tool.select_products 2023-06-12 15:21:33 +01:00
Andrej730 32393136d2 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 🙃
2023-06-12 17:28:52 +05:00
Andrej730 c7b3331496 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
2023-06-12 17:28:52 +05:00
Andrej730 7c0c934b4f 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
2023-06-12 17:28:51 +05:00
johanrd 62944e04e9 fix typo in README.md 2023-06-12 11:22:31 +02:00
Bruno Postle 3a93b15b55 BBIM show all fetched remote Git branches (#3096) 2023-06-11 20:49:55 +01:00
Gorgious 83cd00271b Fix #3142 : Use Tab hotkey to edit horizontally layered objects 2023-06-11 18:17:03 +02:00
Ahmad Saleem Z 820686a39b added link to aws/lambda guide in installation guide 2023-06-11 18:04:34 +02:00
Ahmad Saleem Z 4fe896a3b6 fix ARG in Dockerfile 2023-06-11 18:04:34 +02:00
Ahmad Saleem Z 975b1c444c documentation 2023-06-11 18:04:34 +02:00
Ahmad Saleem Z c3f2046491 example fixes 2023-06-11 18:04:34 +02:00
Ahmad Saleem Z 3a1557bedc added aws/lambda sample 2023-06-11 18:04:34 +02:00
Bruno Postle a71b5e1f11 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
2023-06-10 22:04:01 +01:00
Dion Moult 4806b9a260 Toggle between full schema (i.e. all tables for every declaration) and partial schema dump into SQL 2023-06-10 23:14:32 +10:00
Bruno Postle 0d67c43e16 BlenderBIM operator to delete a Git remote (#3096) 2023-06-10 11:08:49 +01:00
Bruno Postle e2b52e7ed9 BlenderBIM fix warning writing .git/config (#3096) 2023-06-10 10:07:17 +01:00
Balázs Dukai 3c53067567 Add copyright 2023-06-10 15:39:49 +10:00
Balázs Dukai 5ad7d4bb2a Update to ifcopenshell 0.7.0 and cjio 0.8
LoD is string in v1.1
2023-06-10 15:39:49 +10:00
Balázs Dukai 3803942c5f Update to v1.1 CityObject types 2023-06-10 15:39:49 +10:00
Andrej730 678f50f17d 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'
2023-06-09 19:38:16 +05:00
Andrej730 04fe2bdf2e 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
2023-06-09 18:40:53 +05:00
Dion Moult ed990c3e83 Experimental support for storage of IFC in MySQL and SQLite 2023-06-09 22:16:54 +10:00
D4ve-R 741c78cd6c Revert "build scripts"
This reverts commit 6c1218d352.
2023-06-09 13:28:25 +02:00
D4ve-R 2b88c542aa build scripts 2023-06-09 13:28:25 +02:00
D4ve-R 1f6b55e639 prepare for referencing 2023-06-09 13:28:25 +02:00
D4ve-R 9f3fb13cde metersPerUnit 2023-06-09 13:28:25 +02:00
D4ve-R 42f1d9c160 usd rotateXYZop 2023-06-09 13:28:25 +02:00
D4ve-R f0875835c1 Update submodule 2023-06-09 13:28:25 +02:00
D4ve-R 0828a89b66 fix typo 2023-06-09 13:28:25 +02:00
D4ve-R a8ca66b425 refactor 2023-06-09 13:28:25 +02:00
D4ve-R 92b03c6b59 stage up axis 2023-06-09 13:28:25 +02:00
D4ve-R d316efe902 fix filename bug 2023-06-09 13:28:25 +02:00
D4ve-R 77e4e939ce filename bug 2023-06-09 13:28:25 +02:00
D4ve-R fe7504edf2 cmake warnings 2023-06-09 13:28:25 +02:00
D4ve-R a8f1ab1923 material subsets 2023-06-09 13:28:25 +02:00
D4ve-R 1b5f9497d4 works fine 2023-06-09 13:28:25 +02:00
D4ve-R a7bbb35c5e compile & link successful 2023-06-09 13:28:25 +02:00
D4ve-R 1787f064f6 materials 2023-06-09 13:28:25 +02:00
D4ve-R d1c24ebba4 Add USDSerializer to IfcConvert 2023-06-09 13:28:25 +02:00
D4ve-R cc6dacb286 Add USDSerializer write-only 2023-06-09 13:28:25 +02:00
Thomas Krijnen c67eb60fd5 #2942 Escape SVG text labels 2023-06-09 11:34:50 +02:00
Sigma Dimensions 59c482489f Merge pull request #3279 from nelsonhp3/v0.7.0
implements fileselect to export_cost_schedules
2023-06-08 23:48:30 +01:00
Andrej730 7a0963617e Fixed small error on disabling editing extrusion axis 2023-06-08 17:58:06 +05:00
Chetan e4ec1dc457 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 2023-06-08 10:01:24 +02:00
Dion Moult b035129788 Fix bug where you couldn't unassign inherited materials. 2023-06-08 16:00:31 +10:00
Dion Moult 78be8114ac Fix sync bug where unused styles would be purged when reloading a blender file. 2023-06-08 16:00:31 +10:00
Nelson Henrique 18ad025c5d implements fileselect to export_cost_schedules 2023-06-08 00:24:48 +00:00
Martin15135215 5825e0c71b CITATION.cff for BIMTester 2023-06-08 09:45:54 +10:00
Martin15135215 df64ca4cfb CITATION.cff for ifc5d 2023-06-08 09:45:54 +10:00
Martin15135215 fc1f5496a0 CITATION.cff for ifc4d 2023-06-08 09:45:54 +10:00
Martin15135215 5a9dbc5a36 CITATION.cff for ifc2ca 2023-06-08 09:45:54 +10:00
Martin15135215 eaeeede287 CITATION.cff for bsdd 2023-06-08 09:45:54 +10:00
Martin15135215 e78b3a3977 CITATION.cff for bcf 2023-06-08 09:45:54 +10:00
Bruno Postle a8ca8217ea 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.
2023-06-07 22:50:20 +01:00
Dion Moult 77c2e30733 Fix #3272. See #3069. Fix incorrect refactoring when I was decoupling collections. 2023-06-07 22:13:38 +10:00
Gorgious56 5a3a387b8c Fix error when going out of edit mode with TAB when editing an arbitrary profile 2023-06-07 11:22:06 +02:00
Gorgious56 f68f60832c Fix profile based geometry not re-generating properly when exiting edit mode and the profile geometry wasn't modified 2023-06-07 11:21:43 +02:00
Martin15135215 b05417a4d8 Update author in CITATION.cff 2023-06-07 10:54:47 +02:00
Martin15135215 c2a4e30fae CITATION.cff file for BlenderBIM 2023-06-07 10:54:47 +02:00
Thomas Krijnen 1a0280928b #3201 take into account edge orientation correctly 2023-06-07 08:43:08 +02:00
Andrej730 dda16c847d 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
2023-06-07 11:07:48 +05:00
Dion Moult 47c6c2ce9a See #3266. Write documentation on how to use IfcCSV. 2023-06-07 16:00:12 +10:00
Dion Moult 3758c454c9 Add support for Pandas DataFrames in IfcCSV and clean up function signatures 2023-06-07 15:59:20 +10:00
Dion Moult 4b6424e0e1 Fix #3264. Describe IFC to JSON conversion (and other formats) in documentation. 2023-06-07 14:30:48 +10:00
Bruno Postle d71887d846 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.
2023-06-07 00:45:01 +01:00
Thomas Krijnen d61945a575 #3255 unreferened param 2023-06-06 13:25:13 +02:00
Gorgious56 45e6ae6708 Revert unselect non-ifc object using TAB 2023-06-06 11:59:05 +02:00
Gorgious56 ebbf30a88c 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 2023-06-06 09:57:00 +02:00
Dion Moult e5769766af Fix #3226. There is now a faster deletion mode that kicks in for large models and large geometry deletions. 2023-06-06 17:40:31 +10:00
Dion Moult 64b9d2e5e3 See #3226. New batched remove_deep2() which uses serialisation for faster removal performance on large graphs. 2023-06-06 17:40:31 +10:00
Andrej730 3213ffe760 Fixed #3259 2023-06-06 10:44:27 +05:00
Bruno Postle a851689bca BlenderBIM use git shortlog to summarise merge log 2023-06-05 21:22:16 +01:00
Gorgious56 98f2bd66b6 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
2023-06-05 18:07:25 +02:00
Andrej730 1c12a98b68 Solved #3219 2023-06-05 18:45:02 +05:00
Andrej730 a3859385c4 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).
2023-06-05 17:21:27 +05:00
Andrej730 c7394faf51 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.
2023-06-05 14:54:41 +05:00
Andrej730 3907ae656c small note for unsupported pset prop types 2023-06-05 12:44:50 +05:00
Andrej730 5fc31be8aa 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.
2023-06-05 12:09:59 +05:00
Andrej730 7976fb4d09 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'
2023-06-05 11:50:27 +05:00
Andrej730 01635ecd8a small fix for syntax warning after 4865b62ea
SyntaxWarning: "is not" with a literal. Did you mean "!="?
2023-06-05 11:42:28 +05:00
Andrej730 f6657113b6 Spatial/Structural Tools icons 2023-06-05 11:18:52 +05:00
Andrej730 480f1a91a6 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
2023-06-05 11:18:52 +05:00
Massimo Fabbro 4865b62ea9 Fix create spaces from walls z-value (#3248)
Co-authored-by: Dion Moult <dion@thinkmoult.com>
2023-06-05 15:17:03 +10:00
Massimo Fabbro 9a440899be New toggle space visibility button 2023-06-05 15:15:37 +10:00
Dion Moult 3ee6bdf207 You can now get decompositions non-recursively in element utilities 2023-06-05 15:11:55 +10:00
Dion Moult 1f43ec8709 Fix #3069. (Again) review all occurrences of users_collection and collection.name 2023-06-05 15:11:19 +10:00
Trashman247 d030582fbb Keep dist-info in compiling brickschema and add persistence extras 2023-06-04 20:53:23 -07:00
Bruno Postle 60a8d9b2fd 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.
2023-06-04 22:47:10 +01:00
Bruno Postle a5de5d8c0e Display multi-line commit and tag messages (#3096) 2023-06-04 18:39:03 +01:00
Sigma Dimensions b506e7dbbc Add a banner to ifcopenshell README 2023-06-04 12:53:21 +01:00
Bruno Postle db8f1a9b70 Operator to delete a Git tag (#3096) 2023-06-04 11:17:45 +01:00
Bruno Postle 032f52d434 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
2023-06-04 09:52:30 +01:00
Sigma Dimensions 1003e8de91 Prototype Building Storey Manager #3246 2023-06-03 21:07:20 +01:00
Sigma Dimensions c6ef402b60 fix draw_project_not_saved_ui for BIM documentation 2023-06-03 11:55:44 +01:00
Andrej730 5805653431 same generate_pset_templates.py for ifcopenshell and ifc dev repos
same script will be easier to maintain
2023-06-03 12:57:48 +05:00
Andrej730 186da73135 Fixed validation errors in pset templates library
- missing project and IfcRelDeclares guids
- missing RelatingContext in IfcRelDeclares
2023-06-03 11:00:29 +05:00
Andrej730 528481e774 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).
2023-06-03 10:34:13 +05:00
Sigma Dimensions 886ab52556 You can now review and assign currencies from the Cost Schedule Panel 2023-06-02 14:52:10 +01:00
Sigma Dimensions 8196f31d82 Display currency on cost item values and total cost 2023-06-02 14:49:59 +01:00
Andrej730 de3b844829 Placeholders for spatial and structural tools 2023-06-02 17:57:44 +05:00
Andrej730 fa4e19eba7 Tests for external svg references 2023-06-02 12:01:44 +05:00
Trashman247 1488ae40ee Update Makefile 2023-06-02 14:09:58 +10:00
Sigma Dimensions aa004ef0c6 auto refresh tasks assigned to products when filtering by active schedule 2023-06-02 00:34:08 +01:00
Sigma Dimensions 0c946fae36 fix removing cost item value 2023-06-02 00:31:50 +01:00
Sigma Dimensions f297739836 BBIM 5D: Various Cost Schedule UI Improvemements 2023-06-02 00:30:49 +01:00
Thomas Krijnen b33e58f40b fix syntax error on gcc 2023-06-01 22:03:31 +02:00
Thomas Krijnen 30d9743ae7 typename :( 2023-06-01 21:47:07 +02:00
Thomas Krijnen c974306636 #3141 eliminate_narrow_operands() 2023-06-01 21:42:31 +02:00
Thomas Krijnen 602176815a Commit obsolete fix just in case 2023-06-01 21:41:08 +02:00
Thomas Krijnen 7652144184 Fix IfcFile::getInverse<T>() 2023-06-01 21:39:08 +02:00
Andrej730 0fd94d291b 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
2023-06-01 21:41:06 +05:00
Sigma Dimensions 3c9f09f246 Use util.element.get_predefined_type() #065bda6 2023-06-01 13:07:00 +01:00
Thomas Krijnen d60fbd2c09 Don't assert but just if-check for not terminating rule execution on very invalid files 2023-06-01 14:06:41 +02:00
Sigma Dimensions 9d869ebb6d Run costing tests and rename changed methods 2023-06-01 13:02:01 +01:00
Dion Moult 971e508e3d See #3069. Continued refactoring to not rely on users_collection[0]. 2023-06-01 21:18:32 +10:00
Dion Moult 7020caf682 See #3069. More cleanup moving away from collection names and assumed single collections. 2023-06-01 17:39:36 +10:00
Dion Moult 7cd7ad1281 Fix regressions after making aggregate based on selected objects. 2023-06-01 16:59:53 +10:00
Dion Moult 586707dd28 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. 2023-06-01 16:59:53 +10:00
Andrej730 4bb46fa607 Remove test to reproduce #3169 as irrelevant 2023-06-01 10:01:14 +05:00
Andrej730 7d5beb6c80 Added test to cover 2629172ff 2023-06-01 10:01:13 +05:00
Andrej730 ecc0263062 Fixed bug with saving data to Pset_StairFlightCommon not in project units 2023-06-01 10:01:13 +05:00
Dion Moult 39c5dc6ea4 Merge pull request #3214 from maxfb87/new_patch_recipie
New patch recipe
2023-06-01 09:55:10 +10:00
Thomas Krijnen e6d6ab6da7 More informed invalid shape reporting 2023-05-31 22:15:26 +02:00
Thomas Krijnen d7c3b5a990 #3201 apply boolean results in batches as well 2023-05-31 22:15:01 +02:00
Thomas Krijnen 3409cd7c29 #3201 approximate circular sharp corners 2023-05-31 22:13:53 +02:00
Massimo Fabbro 91176349f7 Remove old patch file 2023-05-31 21:07:34 +02:00
Massimo Fabbro 6634025346 Move the recipe into the blenderbim script folder and rewrite it as a script 2023-05-31 21:02:29 +02:00
Sigma Dimensions a771061495 Exporting cost schedules opens the folder directory 2023-05-31 16:21:19 +01:00
Andrej730 2629172ff4 Displaying project units for length values in psets and qsets
Examples:
- https://i.imgur.com/ww7MJ7w.png
- https://i.imgur.com/N1rOELc.png
2023-05-31 18:16:01 +05:00
Andrej730 36b746da7a Railing, Door Modifiers - project units props
Example - https://i.imgur.com/SJOQMMm.png
2023-05-31 14:33:18 +05:00
Burak Yildiz d3aa2e87c9 fix ifcopenshell.version 2023-05-31 10:12:16 +02:00
Andrej730 c6090ef9b3 black format 2023-05-31 12:06:03 +05:00
Andrej730 6354a11645 maintaining same roof thickness for different rafter edge angles
PS roof code is not getting simpler to work with 🥲
2023-05-31 12:04:10 +05:00
Dion Moult 11ec8e04c2 Removing authoring mode which was an outdated concept. 2023-05-31 15:35:53 +10:00
Dion Moult 8a9998bc65 Fix #3163. Use text in lieu of inability to use URIReferences in drawing pset. 2023-05-31 15:14:53 +10:00
Sigma Dimensions 065bda604e Cost schedule name label now shows the predefined type 2023-05-31 04:38:21 +01:00
Dion Moult 471aeab439 Fix #3120. Don't remove doubles as it may break mesh manifoldness. 2023-05-31 13:26:53 +10:00
Dion Moult f2c757b1bb Fix #3113. Support regex in selector filter values. 2023-05-31 13:23:51 +10:00
Andrej730 f6e72ec06f rafter edge angle and roof thickness #3092
Added option to adjust rafter edge angle and roof thickness
Short demonstration - https://imgur.com/a/TsYSs6i
2023-05-30 18:03:35 +05:00
Andrej730 9dd82036ba Roof modifier - asymmetrical gable #3093
Example - https://i.imgur.com/EHaSt16.png
2023-05-30 18:03:34 +05:00
Dion Moult ff2fa70776 Close #3139. Bump IfcOpenShell. 2023-05-30 21:06:09 +10:00
Dion Moult e4b1f56f6d Fix #3211. Generated fills now are siblings to the element that they void. 2023-05-30 16:07:31 +10:00
Andrej730 0d7a789ed8 Schedule Builder - text/background color support #3154 2023-05-30 10:58:56 +05:00
Andrej730 d73e77c5ed separate ifc text literals in svg with newline #3207 2023-05-30 10:30:22 +05:00
Dion Moult dddbf64e93 Fix #3212. Bug where viewport camera bisection didn't have enough tolerance and sometimes wasn't visible. 2023-05-30 14:31:03 +10:00
Dion Moult 1d5891fde7 Fix #3209. Handle loading of custom scales, fix incomplete NTS implementation, and use Lark for more reliable imperial scale parsing. 2023-05-30 12:53:02 +10:00
Dion Moult c5de64de51 Merge pull request #3177 from IfcOpenShell/elevation_tweaks
a few plan level tweaks
2023-05-30 09:53:42 +10:00
Dion Moult a43b2a2ae8 Merge branch 'v0.7.0' into elevation_tweaks 2023-05-30 09:53:19 +10:00
Massimo Fabbro 7ab92dfa0b IfcPatch ReplaceDrawingPath recipie improved: now it's possible to use it on Linux and on Windows 2023-05-29 20:01:45 +02:00
Massimo Fabbro ff81286874 Now it's possible to fix drawing reference path problem saved in Windows and opened in Linux 2023-05-29 17:14:06 +02:00
Andrej730 51ad31f5a3 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
2023-05-29 17:13:51 +05:00
Andrej730 6336db0069 Optimized iteration over objects for viewport annotations #3198
This commit should increase viewport annotations performance significantly on large projects. Described in #3198
2023-05-29 16:47:47 +05:00
Dion Moult 7d7122ee4c Fix #3210. Revert "BBIM Drawings: Exclude ifc objects hidden from render view"
This reverts commit 6f39648077.
2023-05-29 20:31:23 +10:00
Dion Moult 7d852f9e51 Fix #3138. Remove manual copy class and be more intelligent about what classe can be reassigned. 2023-05-29 17:21:05 +10:00
Andrej730 605097de76 Same distance function for viewport and svg #1321 #3198 2023-05-29 12:11:29 +05:00
Dion Moult 07638dac27 Fix #3200. Bug where include / exclude filters could break the drawing. 2023-05-29 15:27:48 +10:00
Sigma Dimensions 6f39648077 BBIM Drawings: Exclude ifc objects hidden from render view 2023-05-28 14:47:47 +01:00
Sigma Dimensions 90c19f8454 Ctrl+P and Alt+P BIMTool Hotekys to assign/unassign aggregation 2023-05-28 14:45:57 +01:00
Bruno Postle 929aa3a49b Select new/changed objects in visual diff (#3096)
When visualising differences between current/selected revision,
new/changed objects are selected as well as colourised
2023-05-28 11:22:01 +01:00
Bruno Postle 83e97b7205 Fix checkout version equivalent to a remote HEAD 2023-05-28 11:02:46 +01:00
Dion Moult 5d583741b9 See #3184. Preserve parametric layerset axis direction hints when changing types. 2023-05-28 17:29:00 +10:00
Dion Moult d3d2c3608b Fix #2106. You can now assign an opening to another element. 2023-05-28 15:02:55 +10:00
Dion Moult a0edd66b92 Fix #3050. Unlinking now gives you an option to delete as well. 2023-05-28 13:52:23 +10:00
Dion Moult c8c0c9a621 Fix #3169. Don't allow the user to create invalid material sets without items. 2023-05-27 22:50:59 +10:00
Dion Moult 00c010e04d See #3169. Fix bug where non walls and slabs didn't get semantic classes in drawings. 2023-05-27 21:32:13 +10:00
Andrej730 1d2c9780da 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.
2023-05-27 15:22:07 +05:00
Dion Moult adec3853e8 Fix #3202. 2023-05-26 19:54:26 +10:00
Dion Moult d3251c5ca1 New get_shape_matrix utility. 2023-05-26 19:31:01 +10:00
Dion Moult 68f8d8798a Fix #3181. 2023-05-26 19:31:01 +10:00
Bruno Postle 4c793be5f7 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 ¯\_(ツ)_/¯
2023-05-26 08:28:20 +01:00
Andrej730 812eb5eaef Small documentation note 2023-05-25 16:09:43 +05:00
Andrej730 6c2be8f886 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
2023-05-25 14:50:45 +05:00
Gorgious56 301d4fecf8 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 2023-05-24 16:54:57 +02:00
Gorgious56 604dfa8cf4 Fix annoying tooltip when using the eyedropper to copy a type 2023-05-24 16:06:33 +02:00
Andrej730 8bb4ab91b8 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.
2023-05-24 18:02:53 +05:00
Andrej730 0cdd9a0cde Window Modifier - support typing units in props
Example - https://i.imgur.com/C99RRs9.png
2023-05-24 17:41:10 +05:00
Andrej730 4768ea23e4 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
2023-05-24 16:45:07 +05:00
Andrej730 659cbe69c3 Stair Modifier - support typing units in props
Example - https://i.imgur.com/XQsVge1.png
2023-05-24 16:45:07 +05:00
Andrej730 e22f4dd001 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.
2023-05-24 16:45:07 +05:00
Andrej730 394b2003b3 Small error message on aggregating objects 2023-05-24 16:45:07 +05:00
Dion Moult d72ac7827b Fix #3193. Revert "partially addresses #3103."
This reverts commit 1b2ab4e3f0.
2023-05-24 21:31:41 +10:00
Dion Moult 610ec7d8ad Fix #3086. 2023-05-24 19:33:14 +10:00
Gorgious 8f41ae0c1b 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. 2023-05-24 11:10:35 +10:00
Gorgious f8113d4857 You can now eyedrop an object in the 3D viewport to fill in its class in the type selector 2023-05-24 11:10:35 +10:00
Gorgious 72169d06ad Fix Relating type enum not correctly initializing 2023-05-24 11:10:35 +10:00
Gorgious 2b78871c01 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 2023-05-24 11:10:35 +10:00
Gorgious 1ce254cc9a Selecting types and instances now show a helpful tooltip when the object is not selectable (due to being hidden or in a hidden collection) 2023-05-24 11:10:35 +10:00
Gorgious 3b07c086a8 You can now duplicate a type from the properties panel
+ change the "paste" icon for the  "duplicate" icon
2023-05-24 11:10:35 +10:00
Gorgious ff7b101b71 "Select instances" button is now grayed out when the type doesn't have any instance 2023-05-24 11:10:35 +10:00
Bruno Postle 92405d819b 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.
2023-05-23 22:45:41 +01:00
Andrej730 c367989ebd Roof modifier - more descriptive errors on invalid footprints #3171 2023-05-23 18:46:27 +05:00
Andrej730 7cae099fb4 Default material layer thickness for adding new layers
Same as when you create IfcMaterialLayerSet
2023-05-23 16:20:06 +05:00
Andrej730 7dcccf9ea5 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.
2023-05-23 15:59:15 +05:00
Ryan Schultz 535e974cc3 bulk assignment of objects to an aggregate. 2023-05-22 22:06:08 -05:00
Andrej730 629aff1e50 Added a descriptive error on attempt of deleting last material layer 2023-05-22 16:37:31 +05:00
Andrej730 628b6830db Fixed error loading .ifc and activating view for drawing with underlay 2023-05-22 15:47:28 +05:00
Ryan Schultz 1b2ab4e3f0 partially addresses #3103. 2023-05-21 15:07:08 -05:00
Sigma Dimensions f97752c368 fix contracting/expanding schedule of rates 2023-05-21 13:25:15 +01:00
Sigma Dimensions d2d5db9bf6 Fix selecting unassigned work/cost schedule products 2023-05-21 12:59:54 +01:00
Sigma Dimensions a8554d9e56 small fix for work schedule derived start/end dates 2023-05-21 12:52:05 +01:00
Sigma Dimensions 11a38af901 BBIMD: enable deleting sequence relationships from list of predecessors/successors 2023-05-21 12:48:34 +01:00
Sigma Dimensions 27a4976b9d remove annoying print statement 2023-05-21 12:45:28 +01:00
Sigma Dimensions eb54f5a0cb ios api task fix: remove orphan IfcRelNests when deleting tasks 2023-05-21 12:45:04 +01:00
Sigma Dimensions a4a6dce6de BBIM D: Copy cost items, export Cost Schedules individually, start improving Cost Schedule UI 2023-05-21 12:42:50 +01:00
Sigma Dimensions 4184e25c68 Easier grouping of materials by allowing material attributes editing from the IfcMaterial subpanel in the scene properties tab 2023-05-21 12:33:41 +01:00
Bruno Postle d98b0766c2 Allow missing/broken GitPython
`import git` can fail badly with a broken xcode installation, so
we let blenderbim run anyway
2023-05-21 09:11:26 +01:00
Bruno Postle b8990dd0a4 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.
2023-05-20 09:25:33 +01:00
Andrej730 2198201e0b 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.
2023-05-19 17:33:45 +05:00
Andrej730 53e58848f3 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
```
2023-05-19 15:40:58 +05:00
Andrej730 9c367d1702 fixed neg values in format_distance & section/plan level #3175 2023-05-19 15:28:45 +05:00
Andrej730 db18a81035 Added default Model/Annotation/PLAN_VIEW to support e68fdb2db 2023-05-19 12:33:56 +05:00
Andrej730 d1d6b00f92 Test that drawing styles are loaded 2023-05-19 12:00:00 +05:00
Andrej730 32fc147a7c 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
```
2023-05-19 11:48:35 +05:00
Andrej730 d98054234c Update drawing styles on changing Underlay checkbox #3172 2023-05-19 10:52:52 +05:00
Ryan Schultz d6460026f2 allow elevations to show negative values
removed RL - not standard throughout the world
2023-05-18 22:38:12 -05:00
Bruno Postle 88ba6514e8 Git remote fetch and push operations (#3096) 2023-05-19 00:27:37 +01:00
Andrej730 894a688bd8 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.
2023-05-18 18:36:07 +05:00
Andrej730 c69ead4893 Test to cover drawing maintaining sheet position #3155
Updated to gitignore to include some new folders that are created during tests
2023-05-18 17:30:04 +05:00
Andrej730 e68fdb2db7 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.
2023-05-18 14:19:36 +05:00
Andrej730 ae9372c3d3 Maintaining drawing's sheet position on raster x/y changes #3155
Example - https://i.imgur.com/uiNWhIq.png
2023-05-17 19:23:42 +05:00
Andrej730 0365c6d43b 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)
2023-05-17 14:50:52 +05:00
Andrej730 18b6969221 Showing decorations on activating view #3146 2023-05-17 12:35:53 +05:00
Andrej730 a1935acb3d 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
2023-05-17 12:20:08 +05:00
Andrej730 9548c5e657 Positioning AngleDecorator text at the center of the arc
Before - https://i.imgur.com/0VxFkg9.png
After - https://i.imgur.com/ibDnlbE.png
2023-05-17 11:52:14 +05:00
Andrej730 762299124f More smoothed lines for annotations with angles and circles 2023-05-17 11:32:01 +05:00
Andrej730 f682bf5688 Added some tests for changing ifc text 2023-05-17 11:18:24 +05:00
Andrej730 f7ed3a8727 Fixed bug with annotations update #3159
toggleDecorations was interrupted because it was trying to update text for non text element
2023-05-17 10:44:26 +05:00
Andrej730 c124506e41 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.
2023-05-16 17:58:26 +05:00
Andrej730 273cdc6ea8 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'
```
2023-05-16 16:53:38 +05:00
Andrej730 0ef6ea6bd4 Schedule Builder - some naive support for font size in text #3154 2023-05-16 16:43:39 +05:00
Andrej730 607d9a06ec Schedule Builder - support for bold and italic text in cells #3154 2023-05-16 16:31:26 +05:00
Andrej730 1b472ca5f2 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
2023-05-16 15:24:39 +05:00
Andrej730 18568d6ba7 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.
2023-05-16 15:16:48 +05:00
Andrej730 bfb59dd387 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
2023-05-16 14:44:45 +05:00
Andrej730 38cf88d5d2 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.
2023-05-15 16:43:56 +05:00
Bruno Postle 7ca6f9d7a1 BlenderBIM Git clone repository operator (#3096) 2023-05-14 21:10:53 +01:00
Gorgious 5874508263 use tool module instead of local function to activate object 2023-05-13 19:57:52 +02:00
Bruno Postle 954de793dd BlenderBIM Git tagging documentation 2023-05-13 10:37:29 +01:00
Bruno Postle df74d5efbe BlenderBIM list and create git tags #3096 2023-05-13 09:57:10 +01:00
Andrej730 f7b9a7bfb5 Multiline in dimension description / suffix / prefix #3005
Also added some offset for dimension text in viewport to make it more similar to svg
2023-05-12 14:54:22 +05:00
Thomas Krijnen 63eaa88d3d #3139 Capture parsed selected simple type values 2023-05-12 10:19:15 +02:00
Andrej730 f518521ea1 Option to add prefix and suffix to dimension annotation #3005
Example - https://imgur.com/a/0NkStWm
2023-05-11 17:38:48 +05:00
Andrej730 5e1ee22bcd 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"]}`
2023-05-11 14:18:51 +05:00
Andrej730 ca09ff2ef0 Not all curve annotation types were detected at the import #3090 2023-05-11 10:54:27 +05:00
Bruno Postle 8643aff800 Merge branch 'v0.7.0' of github.com:IfcOpenShell/IfcOpenShell into v0.7.0 2023-05-10 22:53:00 +01:00
Gorgious 2e88993654 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 2023-05-10 22:51:30 +01:00
Bruno Postle b77849d279 Report ifcmerge conflicts in pop-up #3096 2023-05-10 22:45:22 +01:00
Gorgious c7e288466f 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 2023-05-10 21:31:19 +02:00
Kristoffer Andersen bb48d4aac1 Update meta.yaml
pin daily conda builds to occt 7.7.0
2023-05-10 20:43:22 +02:00
Gorgious56 2b99cc1e58 Fix typo in get_pset docstring 2023-05-10 16:41:19 +02:00
Andrej730 ca286f8d19 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).
2023-05-10 18:19:00 +05:00
Bruno Perdigão 73a3cc2cc5 changed custom scale input 2023-05-10 09:11:09 +10:00
Bruno Postle 169709ed04 Selecting a git revision updates info box 2023-05-09 22:15:57 +01:00
Sigma Dimensions 2e746242ce Fix task json issue due to "Bad control character in string literal in JSON at position XXXX" 2023-05-09 15:43:12 +01:00
Sigma Dimensions 951b8e2b15 Convenient Pie Menu shortcut to aggregate selected objects to active object 2023-05-09 14:24:31 +01:00
Sigma Dimensions ede3edcf1e fix toggle_cost_item_parent 2023-05-09 13:25:21 +01:00
Sigma Dimensions 184c9f87b2 Fix baseline gantt chart bug when new tasks are added to the planned schedule 2023-05-09 13:03:57 +01:00
Dion Moult 0793a4602d Minor improvements to shape utility. 2023-05-09 20:51:08 +10:00
Dion Moult bb285c47dc See #2673. Bundle IfcTester for PyPI. 2023-05-09 20:49:08 +10:00
arun 4cb6fc05d6 corrected get_extrusions function 2023-05-08 20:18:57 +02:00
Kristoffer Andersen a302e5db64 add zlib to conda build dependency
zlib is now longer indirectly included from the vtk package now that we have a new occt variant novtk that does not depend on vtk
2023-05-08 14:12:03 +02:00
Bruno Postle ff21749da4 Merge branch 'v0.7.0' of github.com:IfcOpenShell/IfcOpenShell into v0.7.0 2023-05-07 13:12:22 +01:00
Bruno Postle 23b5da7670 BlenderBIM ifc file association (linux only) #2399 2023-05-07 13:08:28 +01:00
Bruno Postle c31e479f47 Rename blenderbim.sh, better initialisation #2399 2023-05-07 09:46:15 +01:00
Dion Moult 260eb31a69 Add shape utility to easily get profiles and extrusions 2023-05-07 17:32:46 +10:00
Dion Moult 1fb6dac6fb Fix failing tests in preparation for release. 2023-05-06 11:05:13 +10:00
Dion Moult 34d947c51f Fix #3084. Issue where drawings with no elements couldn't be generated. 2023-05-06 11:02:41 +10:00
Sigma Dimensions 23f7a6d5a6 fix test-related sequence bug
Fix baseline gantt chart bug
2023-05-06 00:21:57 +01:00
Sigma Dimensions b15926c20a Fix baseline gantt chart bug when new tasks are added to the planned schedule 2023-05-05 23:43:27 +01:00
Sigma Dimensions 0a7ef80ca7 BBIM4D: Enable filtering by active work schedule when retrieve tasks related to objects 2023-05-05 18:26:32 +01:00
Sigma Dimensions be08406cc1 Auto-refresh task sorting 2023-05-05 17:11:24 +01:00
Bruno Postle cc9777b1e8 Basic user documentation for BlenderBIM Git functionality (#3096) 2023-05-04 23:53:37 +01:00
Dion Moult 539b3a243b Fix fundamental bug where area and volume units were ignored on new projects. 2023-05-04 21:43:48 +10:00
Andrej730 41e58a3d46 Small addition to 8c302ed85 2023-05-04 16:00:12 +05:00
Andrej730 8c302ed85c Changed x_angle subtype to degrees
Now BIMModelProperties.x_angle stores data in radians internally but for user it still appears as degrees
2023-05-04 15:53:29 +05:00
Dion Moult dc4dc46b62 See #1676. Fix space boundary generation for IFC4 RV where openings are already subtracted from the body. 2023-05-04 20:22:29 +10:00
Dion Moult a07fa5a2c2 Accommodate invalid named units when loading IFCs. 2023-05-04 19:55:54 +10:00
Dion Moult ad9dbce003 See #3085. Don't bundle numpy as Blender already has it and it causes conflicts. 2023-05-04 19:45:04 +10:00
Andrej730 d0526d0ae5 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.
2023-05-04 12:55:40 +05:00
Andrej730 75e9c3265d Fallback to abs path adding schedule rel path is not available #3106 2023-05-04 11:32:05 +05:00
Andrej730 b37705ab6e Updating drawing's size on sheet to match it's scale #2965 2023-05-04 11:25:16 +05:00
Massimo Fabbro d9d5f86a6e Now it's possible to regenerate a space that it was created automatically from walls 2023-05-04 11:37:42 +10:00
Sigma Dimensions 1f3ad95c00 remove annoying print statement, run black on cost 2023-05-03 19:46:15 +01:00
Sigma Dimensions 9e360f7efa remove annoying print statement, run black on cost 2023-05-03 19:45:01 +01:00
Sigma Dimensions 64fd6a1f52 fix copying relationships when duplicating tasks 2023-05-03 19:43:05 +01:00
Sigma Dimensions ba04df4ce3 BBIM 4D: implement human readable duration to read/edit durations.
new IOS Fuzzy Duration Parsing utility
2023-05-03 16:09:27 +01:00
Sigma Dimensions cd27a026fd fix editing null task duration values #3091 2023-05-03 16:01:58 +01:00
Dion Moult baedf71106 Minor documentation update to describe how add-ons with conflicting deps / hotkeys are incompatible. 2023-05-04 00:31:44 +10:00
Dion Moult 4f6c95b119 See #1676. Space boundary generation now accounts for voids and fills. 2023-05-04 00:31:24 +10:00
Dion Moult b1761ac393 See #1676. Space boundaries default to physical internal boundaries. 2023-05-03 21:21:55 +10:00
Dion Moult fcdf3e583f See #1676. You can now set the type of boundary class prior to generating boundaries. 2023-05-03 21:03:54 +10:00
Andrej730 2001119dff 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.
2023-05-03 15:39:53 +05:00
Dion Moult 60a9d96ac8 See #1676. You can now duplicate space boundaries. 2023-05-03 20:38:09 +10:00
Andrej730 6bd177d250 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.
2023-05-03 15:00:58 +05:00
Andrej730 1ece84e31d 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.
2023-05-03 14:55:45 +05:00
Andrej730 40ea9457a8 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.
2023-05-03 14:39:43 +05:00
Andrej730 e95d91a91e Support multiline text in the schedule #3010
Before - https://i.imgur.com/gff5jo3.png
After - https://i.imgur.com/meyXBYb.png
2023-05-03 12:33:07 +05:00
Andrej730 c8fb92175f 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).
2023-05-03 12:25:08 +05:00
Sigma Dimensions a6fb4cbfbf BBIM 4D: Enable displaying task tooltip in the gantt chart & add resource columns 2023-05-03 04:34:55 +01:00
Sigma Dimensions 30bb6d05c5 BBIM 4D: You can now visualize & print work schedule baselines with Gantt Charts 2023-05-03 04:33:16 +01:00
Sigma Dimensions 9422f804fb minor fix 2023-05-03 04:22:02 +01:00
Sigma Dimensions 415a7746be 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
2023-05-02 17:27:47 +01:00
Andrej730 ee903208dc Small fix for text alignment in scheduler 2023-05-02 17:41:56 +05:00
Dion Moult f89e834fea Fix #3085. Prioritise shipped BlenderBIM Add-on packages instead of system packages to avoid dependency clashes. 2023-05-02 22:20:34 +10:00
Dion Moult e8b4335741 Minor UI cleanup. Remove align buttons from architectural tool panel. 2023-05-02 22:20:34 +10:00
Dion Moult 83010f0542 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. 2023-05-02 22:20:34 +10:00
Dion Moult 04e5f5036c See #1676. Deleting space boundaries now also removes connection geometry. 2023-05-02 22:20:34 +10:00
Andrej730 5d86d38a14 Support cells text alignment building schedule from ods #2885
Before - https://i.imgur.com/9QZ2YW2.png
After - https://i.imgur.com/M7ZHSJq.png
2023-05-02 17:04:48 +05:00
Andrej730 a82db1f622 Support merged columns building schedule from ods #2885
Before - https://i.imgur.com/p1l6ugn.png
After - https://i.imgur.com/9QZ2YW2.png
2023-05-02 16:24:30 +05:00
Andrej730 fb618d536b Keep rows height building svg schedule from ods #2885
Before - https://i.imgur.com/erMH4Ku.png
After - https://i.imgur.com/p1l6ugn.png
2023-05-02 14:56:05 +05:00
Andrej730 23f96779fa More safe adding roof modifier #3080 2023-05-02 10:38:25 +05:00
Dion Moult 7b67854654 Fix #3088. Prioritise body curves to be loaded before trying to load 2D annotations. 2023-05-02 13:11:01 +10:00
Sigma Dimensions 2e7f941465 BBIM 4D: Auto Update Resource Usage from resource tree 2023-05-02 02:47:22 +01:00
Sigma Dimensions 1c1706fde3 BBIM feature to create & view work schedule baselines 2023-05-02 02:43:54 +01:00
Sigma Dimensions ca77a895e0 IOS.API consider removing baseline tasks when deleting tasks 2023-05-02 02:31:48 +01:00
Sigma Dimensions 0f447f964e IOS.API usecase to create a work schedule baseline 2023-05-02 02:30:38 +01:00
Sigma Dimensions 2c31fc6b25 run black 2023-05-02 02:27:32 +01:00
Dion Moult 0ba79dc105 Accommodate space boundaries with no connection geometry, fetch spatial structure for IFC2X3, and fix scale bug when editing boundary profiles. 2023-05-02 10:23:54 +10:00
dependabot[bot] 52c686b656 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>
2023-05-02 10:06:31 +10:00
Thomas Krijnen 64d98f1295 #2676 2023-05-01 20:16:39 +02:00
Andrej730 ceb2c4075c 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
2023-05-01 16:25:04 +05:00
Andrej730 166e7d52ec Keep text rotation for text annotation with symbols #2946 2023-05-01 16:25:04 +05:00
Dion Moult 644c2652ea See #1676. You can now toggle boundaries on or off in the BIM tool via Alt-B, with a special boundary decorator. 2023-05-01 21:19:29 +10:00
Andrej730 63b201fd95 Test command to load blend file during test scenario for debugging 2023-05-01 15:35:27 +05:00
Andrej730 d70616056c Moving decorators colors from scene to addon props #3033 2023-05-01 14:54:47 +05:00
Dion Moult a65e376886 See #1676. Tab now toggles space boundary surface profile editing. 2023-05-01 19:40:49 +10:00
Andrej730 a985c70f0c Fixed error on adding Roof modifier to non-footprint objects #3080 2023-05-01 14:03:28 +05:00
Andrej730 0d09e02e7e Fixed bug with double conversion of height/extrusion length #3073
Also fixed some tests
2023-05-01 13:46:24 +05:00
Thomas Krijnen 23e3551f27 Fix regex escape in rule_executor.py 2023-04-30 19:09:43 +02:00
Shohei Kunimatsu 885bca0865 Fix wrong attribute name usage (ValueComponent -> UnitComponent) in IfcFile::getUnit 2023-04-30 19:06:58 +02:00
Sigma Dimensions 0f874dad51 BBIM 4D features & fixes:
- feature to re-order tasks
- fixes for task sorting
- further workSchedule UI/UX improvements
- forgotten bits and bobs
2023-04-30 15:44:13 +01:00
Sigma Dimensions 107873cf6e - refactor IOS.API resource calculation to re-use shared utilities
- run black
2023-04-30 15:35:17 +01:00
Sigma Dimensions 4a8f5af7ba - BBIM 4D: features to review and edit Resource productivity data on the fly
- IOS: new resource utilitiy functions
2023-04-30 15:31:36 +01:00
Dion Moult 83084aeb7b Add profile-style (like slab editing) enable editing, edit, and disable editing operators for energy boundary surface geometry. 2023-04-30 20:57:51 +10:00
Dion Moult 51640ccc28 Fix #3030. Don't bother layerset slicing walls with a single layer. 2023-04-30 13:43:43 +10:00
Dion Moult aefbc134ea Cut merging now only applies to particular elements for the majority of cases. Drawing generation can be twice as fast due to this. 2023-04-30 13:43:43 +10:00
Massimo Fabbro 29e1d70334 Generate space from walls refactor and cleaning around 2023-04-29 22:33:19 +02:00
Massimo Fabbro 9118e529e6 Add generate space button in UI in N-Panel -> BlenderBim -> Architectural 2023-04-29 22:33:19 +02:00
Massimo Fabbro 8ee0a1611d Now it's possible to create spaces automatically from selected walls 2023-04-29 22:33:19 +02:00
Sigma Dimensions 2af4388f40 Fix duplicate task logic in IOS.API 2023-04-29 13:53:04 +01:00
Dion Moult 93a2d18ea6 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) 2023-04-29 16:33:44 +10:00
Dion Moult fc49859ea4 Fallback to unmerged polygons if merging fails. More investigation needed. 2023-04-29 16:30:40 +10:00
Dion Moult c0ac9cb380 Viewport layerset slicing now uses a cache for speed. 2023-04-28 22:46:49 +10:00
Andrej730 d5cc6c3c8e Fixed double conversion in bim tool props after b4b6404
No more 1000000 and 3000000 mm values
2023-04-28 17:32:19 +05:00
Andrej730 9b22b5000f Added support for different railing cap types
Very similar to this - https://i.imgur.com/SNyvfgh.png
2023-04-28 17:24:41 +05:00
Dion Moult 3b69a4cc78 Fix bug where numerical tolerance caused certain objects to be unnecessarily updated. 2023-04-28 22:15:09 +10:00
Dion Moult adf54efcc5 Fix bug in cut decorator layersets where walls could be joined to odd non-layered things. 2023-04-28 22:14:26 +10:00
Dion Moult f6962eb58e Fix #3053. Bug where very thin meshes (<1mm) couldn't be reverse engineered into extrusions. 2023-04-28 21:05:13 +10:00
Andrej730 11601d6532 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.
2023-04-28 11:43:15 +05:00
Sigma Dimensions be2131d62c BBIM 4D: Auto-refresh task re-ordering 2023-04-27 13:58:08 +01:00
Dion Moult 3ffbf46ac2 Fix #3066. Regression crash when deleting openings. 2023-04-27 22:24:12 +10:00
Sigma Dimensions 3943107eec forgotten core functions & run black 2023-04-27 13:05:51 +01:00
Sigma Dimensions 94e3f75341 Sequence Tools clean-up 2023-04-27 13:03:32 +01:00
Sigma Dimensions 8bc8b950e7 BBIM 4D: Features to select a Work Schedule's assigned / unassigned products 2023-04-27 12:55:31 +01:00
Sigma Dimensions 05a95ac666 Work Schedule Panel UX improvement 2023-04-27 12:53:27 +01:00
Sigma Dimensions f016c803e4 Fix schedule task sorting 2023-04-27 12:49:27 +01:00
Dion Moult bac0dd37fa Fix #3052. Deep deletion of large geometries is now thousands of times faster. 2023-04-27 20:15:17 +10:00
Bruno Postle 75a37cf737 Fix crash when switching between git revisions 2023-04-26 23:50:36 +01:00
Bruno Postle bb7e9c4610 Fix check for invalid Git branch name 2023-04-26 22:25:27 +01:00
Andrej730 ee2f18349f 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
2023-04-26 18:04:39 +05:00
Dion Moult 8829a3cbe9 See #1227. Minor fix. 2023-04-26 22:24:37 +10:00
Dion Moult b210e39c7e See #1227. Experimental viewport layerset visualisation. 2023-04-26 22:10:34 +10:00
Bruno Postle 4d4500f061 Fix some refresh glitches in IFC Git panel 2023-04-26 00:07:22 +01:00
Thomas Krijnen 79860a0c04 Fix iterator::get() invalid cast on nullptr 2023-04-25 21:00:01 +02:00
Bruno Postle d53fcdc616 Format ifcgit code with black 2023-04-25 07:30:35 +01:00
Dion Moult 5e6a094ac6 Fix #3046. Renaming drawings now updates all drawing references on sheets. 2023-04-24 22:41:38 +10:00
Andrej730 757bf4e916 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'
2023-04-24 11:17:08 +05:00
Andrej730 7bb57b3ab9 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
2023-04-24 10:33:38 +05:00
Dion Moult cb22b5804d Fix #3055. Get paths using forward slashes for platform compatibility. 2023-04-24 13:11:42 +10:00
Dion Moult bfbced3859 Fix #3051. Text background filter now applied on <text> element to make it work on Firefox. 2023-04-24 12:58:36 +10:00
Dion Moult c090ee9b83 Fix #3040. View title template variables now have access to sheet attributes prefixed with "Sheet". 2023-04-23 22:04:49 +10:00
Dion Moult b6caf069d0 Fix #3001. User can now specify join criteria in drawings. Only elements where all the criteria have the same values are merged. 2023-04-23 21:32:00 +10:00
Dion Moult 5b4449eea0 Fix #3054. Edit sheet is now implemented for drawings, schedules, and titleblocks. 2023-04-23 17:49:51 +10:00
Bruno Postle 7dc17a3653 Include git, gitdb and smmp libs in blenderbim zip 2023-04-23 08:35:39 +01:00
Bruno Postle 598bf799de Install GitPython *before* removing the working folder 2023-04-23 08:12:49 +01:00
Bruno Postle 4774a37d48 Add GitPython dependency 2023-04-23 08:03:19 +01:00
Dion Moult d9a1e6f4b1 New default patterns for stack and stretcher bond tiles and floorboards. 2023-04-23 12:44:35 +10:00
Bruno Perdigão 72dae8e9ad applyed the patch by Bruno Postle 2023-04-23 12:05:57 +10:00
Bruno Perdigão b2d7fb9443 changed imports to integrate with blenderbim 2023-04-23 12:05:57 +10:00
Bruno Perdigão bf945e36bd initial commit 2023-04-23 12:05:57 +10:00
Dion Moult 2bcfe93dd2 See #3002. Spaces are now managed separately so that they don't conflict with projection polygon merging and raycasting. 2023-04-22 23:59:33 +10:00
Dion Moult 195ef743c6 See #3002. Experimental SVGFill approach to polygon merging. 2023-04-22 13:05:42 +10:00
Thomas Krijnen 8478eb9aa0 Update draw.py 2023-04-21 16:29:04 +02:00
Andrej730 47f57d20cd 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)
2023-04-21 18:24:32 +05:00
Dion Moult 8f8eb06d6b See #3002. Experimental shapely approach to polygon merging for semantic projection elements. 2023-04-21 22:33:08 +10:00
Andrej730 7d6803f325 Roof modifier - remove redundant context fill causing visual artifacts 2023-04-21 16:49:44 +05:00
Andrej730 f9b7a8b92b 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
2023-04-21 16:49:44 +05:00
Andrej730 7ee0c047e5 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
2023-04-21 16:49:44 +05:00
Andrej730 bfbfe17644 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 😅
2023-04-20 17:15:17 +05:00
Andrej730 046940f949 Fixed error in disabling text exiting after deleting text literal 2023-04-20 14:27:37 +05:00
Dion Moult 2950ddcf4f Fix validation error where IfcURIReference cannot be used as a property data type :( 2023-04-20 18:06:35 +10:00
Dion Moult 3d441b4ad3 Fix #3038. Fix #3039. Selector should default to none instead for throwing errors if the query doesn't have a result. 2023-04-20 17:41:52 +10:00
Dion Moult caa5e8983b Fix #3021. IfcSpatialElements are included in drawings by default. 2023-04-20 17:34:24 +10:00
Andrej 59b7944d8e Merge pull request #3032 from IfcOpenShell/quantities_project_units
Converting quantities to project units to fix #3025
2023-04-20 11:03:12 +05:00
Andrej730 648eb8fdd1 Converting to project units inside QtoCalculator.guess_quantity
Also added some error message if `calculate_quantity` failed to calculate a quantity
2023-04-20 11:01:38 +05:00
Andrej730 f160516772 tool.Qto.convert_to_project_units 2023-04-20 10:32:36 +05:00
Andrej730 4beb7780f8 bim.calculate_quantity - remove convertion part
now the convertion already happens in QtoCalculator.calculate_quantity
2023-04-20 10:32:24 +05:00
Kristoffer Andersen d44b6d40e9 pin lief version for conda build 2023-04-20 06:48:44 +02:00
Kristoffer Andersen 8fd9f5a8cb Add conda to conda daily build trigger path 2023-04-20 06:43:31 +02:00
Kristoffer Andersen 414af2f55e Change conda lief version 2023-04-20 06:40:44 +02:00
Kristoffer Andersen 8624be6bcf Fix conda env 2023-04-20 06:36:10 +02:00
Andrej730 4aa26b613b test_qto.py black format 2023-04-19 19:05:11 +05:00
Andrej730 57cb062d48 Tests for calculating quantities for prefix and imperial project units 2023-04-19 19:04:05 +05:00
Andrej730 b4b6404b65 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'.
2023-04-19 18:03:26 +05:00
Andrej730 989dd2be50 qto_calculator.py black format 2023-04-19 17:04:15 +05:00
Andrej730 50b8baddec 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.
2023-04-19 17:03:32 +05:00
Andrej730 2e00c3db0b Update viewport on bim.activate_model
To see the changed context right away in the viewport
2023-04-19 12:12:11 +05:00
Andrej730 232260787e 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
2023-04-19 11:37:10 +05:00
Andrej730 54054c4aee Fixed bug in get_object_bounding_box #3023 2023-04-19 11:27:45 +05:00
arun 1a7843a6b5 Nesting added to util.get_decomposition function 2023-04-19 15:46:51 +10:00
Sigma Dimensions ed4ba4d0d3 fix "cost_item quantity updates" bug when editing a QTO 2023-04-19 01:01:44 +00:00
htlcnn 849d6118d0 fix EditBcfTopic and EditBcfTopicName 2023-04-19 09:23:50 +10:00
Andrej730 364138d408 CutDecorator color connected to preferences too #2987 2023-04-18 18:13:04 +05:00
Dion Moult 32c8da06ca New default triangle, hexagon, capsule, circle, and space tag symbols 2023-04-18 22:32:09 +10:00
Andrej730 2df4c5825f 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
2023-04-18 17:29:07 +05:00
Andrej730 527cbc3ae0 Some descriptions for EPset_Drawing 2023-04-18 16:59:07 +05:00
Andrej730 4fee8744d6 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.
2023-04-18 16:59:07 +05:00
Thomas Krijnen 8f8862d23d get_mappeditem_transformation() 2023-04-18 13:17:20 +02:00
Thomas Krijnen 836f36fd8e Add util.placement.get_cartesiantransformationoperator3d() 2023-04-18 13:15:13 +02:00
Thomas Krijnen a1326cb5ed Normalize vectors in a2p() 2023-04-18 13:13:29 +02:00
Vukas Pajic 4bfda8851c Update failure reason #3018 2023-04-18 13:12:24 +02:00
Andrej730 f02f15cbfb 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
2023-04-18 14:17:40 +05:00
Dion Moult 30182684d5 Fix bug where you could save geometry with no data (no vertices / splines) which is invalid. 2023-04-18 18:10:01 +10:00
Dion Moult 7df80af30b Fix #2913. Bug where properties with multiple inverses were not correctly purged. 2023-04-18 18:08:24 +10:00
Dion Moult 6b2e867107 Fix #2916. Bug where joining swept solids didn't merge styles correctly. 2023-04-18 18:07:44 +10:00
Vukas Pajic d333090b09 cleanup 2023-04-18 09:17:23 +10:00
Vukas Pajic 8ae7763ac5 added new tests for case where spec has no requirements 2023-04-18 09:17:23 +10:00
Andrej730 51ac86be79 Fixed bug in bim.select_assigned_product
It was trying to call method `Drawingcls.get_active_object()` that didn't exist
2023-04-17 14:47:11 +05:00
Andrej730 552078c8a2 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.
2023-04-17 11:21:07 +05:00
Dion Moult 4b4ede733f Add support for loading IfcProxy 2023-04-17 10:37:30 +10:00
Dion Moult d07e8bc747 Add support for editing ref latitude/longitude 2023-04-17 10:14:22 +10:00
Massimo Fabbro 8850d78e5a Small fix 2023-04-17 09:25:21 +10:00
Massimo Fabbro 4fbf4e7d42 Now it's possible to specify the digits number in a drawing. Fix #2993 2023-04-17 09:25:21 +10:00
Ryan Schultz d6e1a670b9 Library - changed to correct class 2023-04-17 09:24:35 +10:00
Dion Moult 1a32c8827e Fix #3003. 2023-04-17 09:11:33 +10:00
Dion Moult 784b5156df Fix #2975. Fix bug where imperial projects still created drawings with metric scales by default. 2023-04-16 23:18:22 +10:00
Dion Moult 6e3336afb1 See #2975. Fix bug where custom scales were not loaded correctly. 2023-04-16 23:17:56 +10:00
Dion Moult d0ddee3623 Fix bug where changing object visibility didn't first check for view layer existence. 2023-04-16 21:50:58 +10:00
Ryan Schultz 9cf55033d4 Fix #2989 2023-04-16 08:05:05 +10:00
Dion Moult 7371efde17 Fix #2980. Minor cleanup to polish array panel UI. 2023-04-15 16:01:50 +10:00
Dion Moult 156269a53f Fix #2988. Imperial dimensions in viewport are now split between feet and inches. 2023-04-15 15:33:01 +10:00
Ryan Schultz ed7e5fb482 Fix #2990 2023-04-14 15:57:36 -05:00
Andrej730 2e973a4591 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.
2023-04-14 19:07:38 +05:00
Andrej730 f1bd82d301 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
2023-04-14 17:52:54 +05:00
Dion Moult f51bfa314d Fix #2986. Reimplement Metadata property of EPset_Drawing to include arbitrary metadata as CSS classes. 2023-04-14 20:24:02 +10:00
Dion Moult 7b3410c7b1 Fix #2985. Purge obsolete vector style feature. 2023-04-14 20:04:33 +10:00
Dion Moult 6b0e7d51b1 Fix #2979. Batch drawling unselected and selected cut lines. 2023-04-14 18:24:01 +10:00
Andrej730 4e5659efad 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.
2023-04-14 12:40:53 +05:00
Dion Moult 66f10adde8 Fix #2980. Array deletion now uses delete tool. Delete moved into tool so it can be used by other functions. 2023-04-14 09:56:55 +10:00
Dion Moult 459c4d7fcc See #2978. Fix crash upon drawing deletion. 2023-04-14 09:36:51 +10:00
Dion Moult 03d9efb790 Fix #2955. Drawings can now set a precision. 2023-04-13 22:20:18 +10:00
Dion Moult 33bd6099ee Fix #2971. Only update placement if object actually moved. 2023-04-13 21:56:32 +10:00
Dion Moult 850a1d326b Purge old code from timer-based type browser system 2023-04-13 21:39:54 +10:00
Thomas Krijnen f0bb19d48d Fixes to validation of selected simple type / enum 2023-04-13 13:16:48 +02:00
Dion Moult a56eac0131 Minor fix 2023-04-13 18:48:20 +10:00
Dion Moult d3201809ab Fix #2968. Deletions are no longer postponed. Should fix or reveal a lot of sync errors. 2023-04-13 18:38:28 +10:00
Dion Moult 3628a0e241 Fix bug where switching representations didn't update the material checksum, leading to unnecessary material syncs at export time. 2023-04-13 18:15:28 +10:00
Dion Moult 07badd3df5 Styles are applied per mesh data now (potentially dangerous). Fix crash when switching to representation which has styles from an unstyled mesh. 2023-04-13 16:10:00 +10:00
Dion Moult f63091ce05 Fix #2974. Type property sets are now properly copied. 2023-04-13 14:08:02 +10:00
Dion Moult 617b2978c0 New activate model operator to switch back to a MODEL_VIEW target view subcontext 2023-04-12 21:27:43 +10:00
Dion Moult 364e96ad1e Activating a drawing now automatically switches to the preferred target view representation of all elements 2023-04-12 21:27:43 +10:00
Dion Moult 9170e5ca65 New "cut decorator" that draws cut lines in drawings. 2023-04-12 21:27:43 +10:00
Dion Moult cbe71f221c Only activate drawing styles if underlay enabled, and default to default Blender styles to prevent confusion 2023-04-12 21:27:43 +10:00
Dion Moult c039c01407 Regenerating fills now maintains the active representation 2023-04-12 21:27:43 +10:00
Dion Moult 629ba41f5f Only allow drawing / sheet / schedule creation once the IFC is saved to enforce correct relative paths. 2023-04-12 21:27:43 +10:00
Andrej730 198fa67cc1 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
2023-04-12 11:51:50 +05:00
CyrilWaechter e7830e3d55 Fix #2964 2023-04-11 22:03:26 +02:00
Andrej730 90bfb25f41 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
2023-04-11 19:17:03 +05:00
Andrej730 037cb00caa 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
2023-04-11 19:17:03 +05:00
Andrej730 f002124c38 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
2023-04-11 19:06:59 +05:00
Andrej730 ac42f9f599 Changed roof preview colors and it's now transparent
Changed roof preview colors to the same as openings
2023-04-11 19:06:58 +05:00
Andrej730 88d4640d3f fixed mistake in tool.Blender.apply_bmesh
was resulting in error when you apply roof path
2023-04-11 17:30:29 +05:00
Andrej730 d2da01041c 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
2023-04-11 17:14:10 +05:00
Dion Moult 75c17b820f Fix bug where invalidly mapped representations shouldn't be edited. 2023-04-11 21:50:28 +10:00
Thomas Krijnen 2dc4bbf8cd Support rule compilation and execution on latebound schema 2023-04-11 13:24:32 +02:00
Thomas Krijnen c9a5abc3be Some small fixes for rule compliance in template.py 2023-04-11 09:46:50 +02:00
Thomas Krijnen 7ea468a9a6 Update build-all.py 2023-04-11 08:47:46 +02:00
Dion Moult c6223520e0 Fix #2947. Embarrassing bug where slabs didn't consider the total thickness. 2023-04-11 16:24:39 +10:00
Dion Moult 176cbf9861 Fix #2948. Bug where IFC array tool didn't track undo properly causing crashes. 2023-04-11 15:21:04 +10:00
Dion Moult 00315a6f2d See #2516. Titleblocks dropdown now also shows project titleblocks. 2023-04-11 14:08:48 +10:00
Dion Moult 2145b2f8e2 Fix #2955. You can now store default paths in a project pset. 2023-04-11 14:06:31 +10:00
Dion Moult 31155e7bc9 See #2516. Fix issue where getting sheet layout URIs were not explicit. 2023-04-11 12:26:05 +10:00
Trashman247 2d07208d0f Reformat parametrized "Save" in IFC project (again) 2023-04-11 10:26:48 +10:00
Trashman247 35ad7e16c6 Reformat parametrized "Save" in IFC project 2023-04-11 10:26:48 +10:00
Trashman247 27c52fe6d5 Add dynamic tool tip for parametrized "Save" in IFC project 2023-04-11 10:26:48 +10:00
Andrej e153f63a23 Merge pull request #2962 from maxfb87/fix_bug
Fix minor bug
2023-04-11 01:23:58 +05:00
Andrej 2cbbc360c0 Merge branch 'v0.7.0' into fix_bug 2023-04-11 01:23:27 +05:00
Thomas Krijnen 8a4a42777f Property transfer ownership of schema from py to c++ upon register_schema() 2023-04-10 22:01:53 +02:00
Thomas Krijnen 352d6b5ef9 Attempt load schema from cwd (IS THIS DANGEROUS?) 2023-04-10 20:31:56 +02:00
Thomas Krijnen cc49b0efdc Don't fail on unmapped attribute types (IFC4.4) 2023-04-10 20:17:26 +02:00
Andrej730 e71ee988bf 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'
2023-04-10 18:05:40 +05:00
Dion Moult 937a5b2c2d Fix #2516. Add/build/remove/view/rename/copy sheet/drawing/schedule now all references and updates user configurable relative paths. 2023-04-10 22:30:33 +10:00
Dion Moult 92221e19c3 Fix bug where unassigning a document was too aggressive and deleted relationships where it shouldn't. 2023-04-10 22:30:33 +10:00
CyrilWaechter e5c920864c Add ifczip and ifcxml to x-ifc mime-type 2023-04-10 11:43:26 +02:00
Nathan Hild 6f63682bdf Correct tooltip messages for enabling and disabling edit buttons 2023-04-10 10:28:10 +02:00
Andrej730 7623eddcd7 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.
2023-04-10 12:37:39 +05:00
Andrej730 d1dee1e908 Fixed errors from 9bca705 2023-04-10 12:30:51 +05:00
Andrej730 8b302f8d21 Make BIM Tool alignment buttons clickable and some hotkeys code cleanup 2023-04-10 11:22:17 +05:00
Dion Moult dfeebd6b6b Fix #2960. 2023-04-10 09:01:34 +10:00
Massimo Fabbro df53ce9f6e Better fix about cls without is_registered method 2023-04-09 22:33:37 +02:00
Massimo Fabbro 9bb2c00b6d Fix bug related to operators without is_registered method 2023-04-09 21:58:11 +02:00
Dion Moult 641253c4c6 Document list now shows description and locations instead of names as names are inherited. 2023-04-09 23:03:10 +10:00
Dion Moult 6ce49b7130 See #2516. References to titleblocks, layouts, and published sheets are now explicitly stored. Titleblock paths are now configurable. Generated filenames are sanitised. 2023-04-09 23:03:10 +10:00
Andrej730 804ad0cece Prevent flickering for SectionLevel and Grid decorators 2023-04-09 18:03:08 +05:00
Dion Moult 6c60d14c05 Fix #2959. Oversight when disabling mesh edit mode. Edit grid axes should be allowed. 2023-04-09 12:52:10 +10:00
Dion Moult def2d2bcc9 See #2516. WARNING: breaking changes! Restructure drawing system to use relative paths based on IfcDocumentReference Locations. 2023-04-08 21:59:53 +10:00
Andrej730 9bca705dc3 Solved producing orphan objects data on drawing deletion 2023-04-08 11:37:35 +05:00
Andrej730 2dcc271dff Updating sheet name from UI #2950 2023-04-07 19:06:41 +05:00
Thomas Krijnen 33415fa1af #2685 Fix AttributeError 2023-04-07 16:02:11 +02:00
Andrej730 10315e0e29 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.
2023-04-07 17:36:58 +05:00
Dion Moult f321cc81c8 Minor improvement to add error message when mirror elements called without a mirror axis. 2023-04-07 20:07:38 +10:00
Bruno Perdigão 68b685f580 minor fix, sets a minimum to 'count' 2023-04-07 19:58:33 +10:00
Bruno Perdigão c87c79b937 Fix #2937. IFC Array now have the option to sync children 2023-04-07 19:58:33 +10:00
Sigma Dimensions de3dfcdc43 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
2023-04-07 04:33:56 +02:00
Kristoffer Andersen 657ddc0fa1 conda daily pin occt version 2023-04-06 21:38:42 +02:00
Dion Moult 1da01489f1 Fix #2935. Duplicating objects clear any parametric array relationships. 2023-04-06 21:18:36 +10:00
Massimo Fabbro 64a27614ff Fix bug #2825 2023-04-06 21:12:18 +10:00
Dion Moult 6c5acfc8bb Fix #2945. Selector should expand enumerated list properties so that you can match any of them. 2023-04-06 19:21:22 +10:00
Andrej730 884ee5b587 Warning when user loading sheets and some svgs are missing
Added this warning because missing svgs can lead to errors later on.
2023-04-06 13:51:12 +05:00
Andrej730 c2320a3c1e 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.
2023-04-06 13:51:07 +05:00
Bruno Perdigão ab23030051 ifc array modifier: get cursor position in relation to the object local axes 2023-04-06 10:45:47 +10:00
Bruno Perdigão 699c692f6c ifc array modifier: adds the option to get the dimensions from the 3d cursor 2023-04-06 10:45:47 +10:00
Bruno Perdigão 0c85e26950 ifc array modifier: bugfix, prevent divider from being zero. 2023-04-06 10:45:35 +10:00
Bruno Perdigão 2cd7e737cd ifc array modifier: adds the option to choose between "total" and "increment" as dimension input 2023-04-06 10:45:35 +10:00
Gorgious56 a1adbe2b34 You can now change the section line decorator width in the UI 2023-04-06 09:37:01 +10:00
Gorgious56 a144c2b7ea Add new shader to display the section as a thick line on the mesh 2023-04-06 09:37:01 +10:00
Gorgious56 201c056ffa Add new decorator utility to the Compare node group 2023-04-06 09:37:01 +10:00
Andrej730 2e95168610 Title case naming for operators 2023-04-05 17:49:58 +05:00
Andrej730 b18c05cbb9 Open all drawings at once with shift+click (similar to print all)
Also added filepath check to make sure all drawings were printed first.
2023-04-05 17:47:27 +05:00
Andrej730 102a4c6110 Title case naming for operators 2023-04-05 17:47:27 +05:00
Dion Moult b6c0ef3d19 Fix #2936. Unassigning a type now also unmaps representations. 2023-04-05 22:33:11 +10:00
Andrej730 ea3065dbc2 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.
2023-04-05 16:34:43 +05:00
Gorgious56 534c3ad329 Fix temporary section cutaway socket inputs/outputs not initializing properly
Related to #2547
2023-04-05 13:30:35 +02:00
Dion Moult 90a7d807a1 Fix #2938. Unlinked objects should no longer synchronise edits after they've changed. 2023-04-05 21:07:44 +10:00
Dion Moult 4baafb5e2f See #2938. Fix issue where unlinking didn't consider other users of the object's data or material. 2023-04-05 20:58:24 +10:00
Andrej730 f911765cdb Support for SECTION_LEVEL annotations description in viewport
Example - https://i.imgur.com/ATF9Fp6.png
(similar to svg)
2023-04-05 14:44:27 +05:00
Andrej730 d0a36c79d5 Small fix 2023-04-05 13:10:41 +05:00
Andrej730 ffea5320a0 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
2023-04-05 12:38:36 +05:00
Andrej730 0b54e41a40 Small editing assigned product UI fix
Previously checkmark didn't worked at all if the existing and new product were the same.
2023-04-04 19:02:07 +05:00
Andrej730 26c67f770a Sliding doors - more consistent 2d repr between door types #2919 2023-04-04 18:53:59 +05:00
Andrej730 f6623db0e6 Sliding doors - moved annotation arrow to Annotation/PLAN_VIEW #2919 2023-04-04 18:38:44 +05:00
Dion Moult d7844ee8e8 Fix #2114. Duplicate overrides are now defined as macros which means that repeating last function now works. 2023-04-04 22:01:45 +10:00
Andrej730 1c8970bbf2 removed redundant parts from generate_steel_profiles_library.py
removed never used methods and contexts
2023-04-04 14:23:21 +05:00
Dion Moult eb70849a30 Fix #2898. Explicitly check for changed active material in material UI panels. 2023-04-04 17:04:32 +10:00
Andrej730 77ce3c9067 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.
2023-04-04 11:18:29 +05:00
Dion Moult 56cd226a27 Deprecate mode subscriptiosn of profiles and walls 2023-04-04 13:59:10 +10:00
Dion Moult a1acdc0977 See #2881. Allow indices in the selector instead of relying on external evaluations. 2023-04-04 09:58:23 +10:00
Dion Moult 1a624c957b See #2916. Minor fix. 2023-04-04 09:43:58 +10:00
Andrej730 1c9eeb2aca Revert "Fixed ifc validation errors for generated openings #2925"
This reverts commit 66a53b486a.
2023-04-03 23:04:27 +05:00
Gorgious56 45f06eeea7 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
2023-04-03 17:55:44 +02:00
Andrej730 66a53b486a Fixed ifc validation errors for generated openings #2925 2023-04-03 19:53:43 +05:00
Andrej730 fc45f5b48f 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(())
```
2023-04-03 19:53:43 +05:00
Andrej730 c7105a22e6 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
```
2023-04-03 19:53:43 +05:00
Andrej730 e1fc7cad44 Fixed all unit.add_si_unit uses after fd87747
Now they were causing `TypeError: Usecase.__init__() got an unexpected keyword argument 'name'`
2023-04-03 19:53:42 +05:00
Andrej730 afeeaeb984 Fixed some validation errors for doors and windows #2925
Fixed the ones caused by using 3d curves as inner/outer curves in profiles.
2023-04-03 19:53:42 +05:00
Andrej730 2bc60b87f2 Fixed issue with tool.Blender.apply_bmesh 2023-04-03 19:53:42 +05:00
Dion Moult 4ad9ecb7db FixRevitTINs patch recipe now also purges non up-facing polygons as Revit doesn't handle them very well. 2023-04-03 21:28:34 +10:00
Dion Moult 3ec7b82b85 Fix #2930. Do not require entity applicability in IfcTester. 2023-04-03 21:28:00 +10:00
Dion Moult 48666def6b Fix #2910. Bug where style colours were not synced prior to duplication. 2023-04-03 20:16:43 +10:00
Chun 5732921fb6 a simplifier workflow and a more consistent coding style 2023-04-03 19:50:53 +10:00
Chun b86c11e1dc Unify variable 2023-04-03 19:50:53 +10:00
Chun 1bae4b219a Update functions of get_connected_to and get_connected_from compatible with IFC4 and IFC2X3 2023-04-03 19:50:53 +10:00
Chun 70ff73f805 Add IFC4 support for functions get_connected_to and get_connected_from in util.system 2023-04-03 19:50:53 +10:00
Chun a9636c5038 Add IFC4 support to get_connected_to and get_connected_from functions 2023-04-03 19:50:53 +10:00
Dion Moult a406b9f7ef Fix #2928. 2023-04-03 18:12:32 +10:00
Dion Moult f291345111 Fix #2924. IfcElements default to a null predefined type so they can inherit where possible. 2023-04-03 13:54:25 +10:00
Dion Moult c947ccb8be Fix #2926. Connections removed when rotating 90 deg to prevent unintuitive behaviour. Layer2 are also now recalculated. 2023-04-03 13:43:42 +10:00
Dion Moult 28c6b0d4bb Link to IfcArchitect tutorial series for quickstart video tutorials 2023-04-03 12:35:10 +10:00
Dion Moult 19317a9cc2 See #2881. Add support for evaluated commands in smart text literals 2023-04-02 21:25:06 +10:00
Dion Moult d67da6425e Fix #2927. Continuing to make mesh editing stricter. 2023-04-02 15:02:43 +10:00
Dion Moult 901f41358f Shortlist which IFC geometries may be treated as a meshlike object. 2023-04-02 13:45:05 +10:00
Dion Moult 061922aea2 Minor fix 2023-04-01 22:19:29 +11:00
Massimo Fabbro 5f7b6a5498 fix qto ui bug where objects with no assigned base qto doesn't allow to show the qto panel 2023-04-01 21:59:53 +11:00
Dion Moult 2ef9d5eed9 Fix #2922. You can now edit extrusion profiles of swept solids. 2023-04-01 21:27:20 +11:00
Dion Moult 9fba57d5db Disable edit mode on non mesh-like representations as well to prevent risk of invalid geometry. 2023-04-01 21:25:45 +11:00
Dion Moult e9074e3b3f Fix bug where generated openings invalidly used 3 dimensions instead of 2 2023-04-01 18:14:54 +11:00
Andrej730 f053ba714f 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.
2023-04-01 12:12:34 +05:00
Andrej730 b6598f09a3 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'
2023-04-01 12:00:07 +05:00
Andrej730 b9d7b95304 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.
2023-03-31 19:56:26 +05:00
Andrej730 3db540f786 Fixed another typo related to #2889... 2023-03-31 19:50:22 +05:00
Andrej730 071b99c6c6 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)
```
2023-03-31 17:52:07 +05:00
Andrej730 3a3d96be0a bgl to gpu: profiles and openings decorations #2897
Still need to fix shaders.py and decoration.py
2023-03-31 16:38:24 +05:00
Andrej730 a03fbab4d5 Added description to some annotation operators 2023-03-31 11:06:21 +05:00
Andrej730 cc3b119288 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
2023-03-31 10:59:39 +05:00
Andrej730 1a750d1b85 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.
2023-03-31 10:59:39 +05:00
Andrej730 5b3ae9b9fd 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
2023-03-30 18:41:55 +05:00
Andrej730 81471d80cd 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'
```
2023-03-30 17:12:00 +05:00
Andrej730 eb14db4deb Fixed typo in ifcopenshell.util.type 2023-03-30 16:42:25 +05:00
Andrej730 50d989363a Added arrow to 2d repr of sliding doors (#2919)
Example - https://i.imgur.com/eJnhDXU.png
2023-03-30 16:36:55 +05:00
Dion Moult e52a99bd71 Load all type products by default (in preparation for IfcAnnotationType support) 2023-03-30 21:26:16 +11:00
Andrej730 a7a7c86657 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
2023-03-30 12:41:34 +05:00
Andrej730 59b8347082 Added option for oblique style for viewport dimension annotations
It's available after adding "oblique" to EPset_Annotation classes of the annotaiton.

Examples with and without it:
- https://i.imgur.com/JtgSeUK.png
- https://i.imgur.com/H7TPnfo.png
2023-03-29 16:37:00 +05:00
Andrej730 86883770b8 Fixed wrong text direction for plan level annotation
It occured when plan level spline direction was right-to-left.
2023-03-29 15:02:39 +05:00
Andrej730 d19c7d27a8 Cleaned up meshes produced during slab / arbitrary profile edit
Previously it was producing orphan meshes
2023-03-29 14:30:35 +05:00
Andrej730 eb35aad6e3 Added warning to bim.set_arc_index 2023-03-29 14:30:35 +05:00
Thomas Krijnen 5f952ecd00 Update ci.yml 2023-03-29 11:14:51 +02:00
Thomas Krijnen 74cd28d761 Update ci-py-only.yml 2023-03-29 11:14:41 +02:00
Thomas Krijnen 6e8049c43b Update ci.yml 2023-03-29 10:46:18 +02:00
Thomas Krijnen bbc61483ad Update ci-py-only.yml 2023-03-29 10:45:54 +02:00
Andrej730 db5315249c Fixed bug with slab editing decorator breaking on undo
Because of jumping between modes "bim.set_arc_index" doesn't remove newly created vertex groups on undo which resulted in error in decorator.

    File "\blenderbim\bim\module\model\decorator.py", line 134, in __call__
        if group_index in vertex[deform_layer]:
    AttributeError: BMElem[key]: invalid key, must be a BMLayerItem
2023-03-29 10:34:11 +05:00
Sigma Dimensions 4d34404e47 code clean up 2023-03-29 01:59:42 +00:00
Sigma Dimensions fa261b3281 Features to re-order cost items in a tree (changing parent & changing nesting order) 2023-03-29 01:49:55 +00:00
Sigma Dimensions 73feadcd66 Improved UI for adding cost item values 2023-03-29 01:38:21 +00:00
Sigma Dimensions da84165e13 Enable object selection from Cost item related products' list 2023-03-29 01:35:21 +00:00
Sigma Dimensions cc550c413b fix UI issue for loading product cost items 2023-03-29 01:31:09 +00:00
Sigma Dimensions 5b8b68457f ios utility to transform a human readable date or duration from string into objects 2023-03-29 00:47:05 +00:00
Sigma Dimensions 7850f8c718 You can now view & and highlight cost items assigned to an object, from Viewport Selection 2023-03-29 00:41:59 +00:00
Sigma Dimensions 3502b560f0 You can now select unassigned cost schedule products 2023-03-29 00:32:08 +00:00
Sigma Dimensions 53aa5e5fe0 You can now clear all cost assignements at once 2023-03-29 00:23:32 +00:00
Sigma Dimensions 674526d2df Show total elements/tasks/resources assigned to a cost item 2023-03-29 00:06:31 +00:00
Sigma Dimensions 384c9c9872 Refactor BBIM costing code, and re-use shared IOS utilies code 2023-03-28 23:28:00 +00:00
Sigma Dimensions 1170448cd0 New ifcopenshell cost utilities 2023-03-28 23:11:07 +00:00
Sigma Dimensions a7ec9c097a Enable displaying assigned nested resources for Cost Items 2023-03-28 23:09:07 +00:00
Sigma Dimensions 9b3b29a91c Enable displaying assigned nested tasks for Cost Items 2023-03-28 23:05:26 +00:00
Sigma Dimensions 16c4b212fd Enable displaying nested elements for Cost Item assigned Elements 2023-03-28 22:53:03 +00:00
Andrej730 50ba0815f7 Fixed UI for box alignment
Replaced checkboxes with icons and removed vertical and horizontal space between them, now looks neat.
2023-03-28 19:34:32 +05:00
Thomas Krijnen 8d3347c02b Update Dockerfile 2023-03-28 15:49:27 +02:00
Andrej730 fbd57a2bd7 Fixed array operator bug after 75f56462b (related to #2905) 2023-03-28 18:16:42 +05:00
Andrej730 75c98e5b00 Exiting current editing decorator if user switches from EDIT mode
Switching from EDIT mode acts like canceling editing which seems intuitive.

Now it's also possible to add similar thing to other use of decorators - beware of the possible Blender bug - mentioned it in `ProfileDecorator.install description`

Added this change to editing of profiles, extrusion axis, roof and railing paths, extrusion profiles.
2023-03-28 17:28:59 +05:00
Andrej730 c725eeb5db IFC Roof - small fix 2023-03-28 16:45:46 +05:00
Andrej730 75f56462b5 IFC Array - option to use local space instead of global (#2905) 2023-03-28 15:40:25 +05:00
Andrej730 f6ca12d3b8 IFC Text Multiple literals now displayed in viewport separated by newline 2023-03-28 14:58:12 +05:00
Andrej730 f6b7201bc4 Added default blender selection behaviour to CAD Tool
Similarly to BIM Tool (85bba9d)
Now it works exactly as default blender selection - supports box selection etc
2023-03-28 14:52:23 +05:00
Andrej730 ab618be49f Gable Roof support for roof modifier
How it works:
1) You add Roof Modifier to some object that represents roof footprint.
2) Start editing path (Shift-E in BIM Tool).
3) Then you can select any edge and specify roof angles manually for each edge (Shift-R in BIM Tool)
to make side gabled you just need to set angle to 90 degrees. Preview will update automatically.  You can set it back to 0 for angle to be defined automatically.

Some other changes:
- refactored decorator.py, in decorator now it's possible to supply some custom bmesh function that will be called on redraw, decorator now also can draw faces;
- changed colors for selected verts / edges to less bright, now it in more contrast to selected verts / edges color and seems much more readable;
2023-03-28 12:43:06 +05:00
Sigma Dimensions 5943e7e62e api usecase to re order related objects in a nest 2023-03-28 04:29:08 +00:00
Sigma Dimensions fde654aee7 api usecase to change nest 2023-03-28 04:27:47 +00:00
Sigma Dimensions 4880e1f9eb You can now select individual Task Inputs & Task Ouputs directly from the task quantity assignments. 2023-03-28 04:13:18 +00:00
Sigma Dimensions 8083a635a8 You can now import work schedules from csv 2023-03-28 04:04:48 +00:00
Dion Moult fab76bbcde Fixed bug where enumeration values in psets could be empty lists. 2023-03-27 23:08:47 +11:00
krande 7f78df595f minor clarification in comment 2023-03-27 13:35:24 +02:00
krande 03ff34f89f update ci-restart script with code that works and is testable locally 2023-03-27 13:35:24 +02:00
krande 8820a1dcc3 switch to a python implementation of the same procedure 2023-03-27 13:35:24 +02:00
krande 514975d123 add a workflow to catches and restarts failed conda builds due to 143 errors. And minor cleanup of unused variables in conda meta.yaml 2023-03-27 13:35:24 +02:00
Dion Moult c87911f00e IFC selector now uses "class" as a keyword to get the IFC class to disambiguate between "type" and "class". 2023-03-27 21:47:11 +11:00
Dion Moult 1e77562f0f Fix #2847. You can now join meshes and extrusions together. 2023-03-27 21:46:26 +11:00
Dion Moult b1843ce781 Fix IfcTester bug which did not consider null enumeration values 2023-03-27 17:36:06 +11:00
Dion Moult 02fb09ff7e Implement faux-mirroring. 2023-03-27 14:21:59 +11:00
Dion Moult bdb193f500 Minor fix 2023-03-27 13:38:14 +11:00
Dion Moult e9a3630595 Fix #2898. You can now copy materials from the materials tab. 2023-03-26 19:04:32 +11:00
Dion Moult fb3e4016ec See #2898. Fix bug where UI data was not refreshed when you switched active materials. 2023-03-26 18:07:10 +11:00
Trashman247 15a1aa5355 Move bl_descriptions
Moved bl_descriptions under bl_options when bl_options exists, copying the syntax of already existing operators with descriptions.
2023-03-26 17:46:33 +11:00
Trashman247 f1d6e95e51 Add tooltips to IFC Project Info and Clash Sets Panels 2023-03-26 17:46:33 +11:00
Dion Moult b9c99b35a5 Fix #2881. Support added for referencing nested relationships and material set items. 2023-03-25 22:07:18 +11:00
Dion Moult df0a503b89 Improve implementation of is_moved so that anywhere we check movement, types and projects are not considered 2023-03-24 21:59:09 +11:00
Dion Moult 346071185f Fix bug where appending a product from a library which had relationships to types caused a bunch of types to be pulled in unintentionally 2023-03-24 20:53:55 +11:00
Dion Moult f3f90e0ad5 Fix bug where mesh analysis during updating meshes as solids (i.e. extrusions) did not remove doubles, causing it to fail on sloppy meshes (and meshes are often sloppy) 2023-03-24 20:53:18 +11:00
Dion Moult 8aa2c1eea7 Fix critical bug where types would think they moved and cause long syncs at export time. 2023-03-24 20:52:20 +11:00
Dion Moult 57c32e55c2 Fix #2698. Bug where clash sets couldn't be visualised if you had one of the models open (i.e. not linked) in the active session. 2023-03-24 18:25:33 +11:00
Dion Moult de080a668f Fix #2901. Silly typo. 2023-03-24 17:48:27 +11:00
Dion Moult 00fc71dcbe Fix #2837. Shared subelements mistakenly caused the subelement append loop to break early. The solution is to traverse one level at a time. 2023-03-24 17:36:46 +11:00
Andrej730 808cb6ec14 Fixed outdated code issue 2023-03-24 11:00:08 +05:00
Andrej730 8899776106 Fixed #2900
1) Leaders text decorator wasn't changed after adding support for multiple literals
2) added drawing data update on toggling viewport annotations - so user would see correct values right away; also fixed similar thing on updating product
2023-03-24 11:00:08 +05:00
Andrej730 ae674b00c2 Fixed bugs after adding aggregated text annotations (#2899) 2023-03-24 10:09:23 +05:00
Dion Moult 73b6d23d4f Minor fix 2023-03-24 16:05:27 +11:00
Dion Moult 6d1cabe534 Fix #2887. Fix bug where you could create multiple opening objects. 2023-03-24 15:03:39 +11:00
Dion Moult ab34fda42c See #2887. Save mesh dialog now only shown when mesh is edited. 2023-03-24 14:33:13 +11:00
Dion Moult fab4133df6 Minor fix 2023-03-24 13:22:10 +11:00
Dion Moult 301e368a2c Minor fix 2023-03-23 22:09:31 +11:00
Dion Moult 0a22714fb8 See #2887. Experimental edit mode toggle override to ensure mesh changes stay in sync and so that you can edit meshes without openings applied. 2023-03-23 21:51:06 +11:00
Thomas Krijnen ef2cec7435 #2884 depends python3-pytest 2023-03-23 09:05:39 +01:00
Dion Moult b4f486e9aa Minor fix 2023-03-23 16:54:15 +11:00
Andrej730 297303063e Small changes in default names for saving ifc projects
1) changed first ifc saving handler from save_pre to save_post so that in the situation when you just created with .blend file and started ifc project on save dialog would suggest the same name for the .ifc file and for .blend file (previously it was always suggesting ".ifc" and you had to type it in manually).

2) suggested default ifc project named changed from `<blend_filename>.blend.ifc` to `<blend_filename>.ifc` for simplicity.

PS save_pre didn't really work anyway - by the time "save ifc dialog" file was invoked and appeared .blend file was already saved anyway.
2023-03-23 09:54:16 +05:00
Andrej730 df95bdb48e Fixing tests after 2003bfe4f 2023-03-23 09:53:02 +05:00
Dion Moult 95ac021623 Improve UI to indicate active representation. 2023-03-23 15:37:52 +11:00
Dion Moult 416efa4f14 See #2887. Fix bad UI design that could lead to objects created with the unintended context. 2023-03-23 10:44:57 +11:00
Ryan Schultz 2003bfe4fe Added_MODEL_VIEW_context
added...
context_type="Model", context_identifier="Annotation", target_view="MODEL_VIEW", parent=model
from: https://github.com/IfcOpenShell/IfcOpenShell/issues/2890
2023-03-23 08:00:39 +11:00
Andrej730 fc55a48c11 Automated adjustment of annotations scale if either camera orthographic scale or drawing scale changed 2023-03-22 15:56:55 +05:00
Andrej730 37a6be1e2b Ifc text viewport rotation for text with box alignment 2023-03-22 15:47:07 +05:00
Andrej730 e551bf531c Optimized ifc text viewport rotation algorithm 2023-03-22 14:37:48 +05:00
Andrej730 e173ea7f80 Ifc Text rotation in viewport preview 2023-03-22 14:05:03 +05:00
Andrej730 f8dc421f03 Fixed bug with multiline text in svg
Insertion position at <text> instead of <tspan> creates unnecessary x offsets between tspans
2023-03-22 11:04:43 +05:00
Andrej730 e2afb34e0d Fixed typo causing #2889 2023-03-22 10:09:38 +05:00
Andrej730 f7181aae8a Multiple literals in 1 Ifc Text + aggregated text annotations
Added option to store multiple literals inside 1 Ifc text object.

If multiple literals share the same `BoxAlignment` then only the first one will be displayed in viewport
to prevent visual clutter (although added small asterisk symbol to indicate that there are still multiple literals).

Added option for aggregated text annotations. Example - "door-tag" symbol.
If you create text, specify "door-tag" symbol in EPset_Annotation.Symbol
\and add two literals to it then they'll automatically will fit to that door-tag in the svg drawing
(https://i.imgur.com/OXaIlWe.png).

The way it works - you define symbol in symbols.svg (or in your own symbols svg file)
and then add the `<text>` fields where text from literals will fit right in.
The imporant note: `<text>` tag must have attribute `data-type="text-template"` for it to work.
For example: `<text text-anchor="middle" dominant-baseline="middle" data-type="text-template"></text>`
2023-03-21 17:37:28 +05:00
ArturTomczak 2a0fdd214c update the namespaces to current IDS schema 2023-03-21 20:37:37 +11:00
Dion Moult 45209be0ff You can now easily get a list of FMHEM classes and subtypes to list explicitly in IDS requirements 2023-03-21 17:15:59 +11:00
Dion Moult fcb3640bee IfcTester webapp can now render simple PartOf requirements 2023-03-21 17:13:34 +11:00
Dion Moult d503a4b50b Fix #2883. Regression in text in drawings. 2023-03-21 12:31:32 +11:00
Dion Moult 8bae2984e1 Fix #2886. Typo. 2023-03-21 09:11:30 +11:00
Andrej730 78499cc55d Fixed bugs related to "print all" (#2882) 2023-03-20 15:15:54 +05:00
Dion Moult b6aa5c57c0 Fix bug where copying types with parametric materials could lead to invalidly reused material set items. 2023-03-20 20:40:11 +11:00
Dion Moult d71e34f073 Fix bug where 2D types were not loaded as a fallback from the body representation. 2023-03-20 19:42:54 +11:00
Dion Moult a38d06d7e7 Remove dead code that manually synced drawing references. Now we have an automatic sync_references function instead. 2023-03-20 17:05:43 +11:00
Dion Moult 72b5cc8a44 Minor fix 2023-03-20 17:03:39 +11:00
Dion Moult c97e1079e8 See #2866. Fix issue where annotation should be able to use 3D coordinates (i.e. Model context type) for elevations and sections where it makes more sense. 2023-03-20 16:36:50 +11:00
Carlos Villagrasa 65caa7906d Merge remote-tracking branch 'upstream/v0.7.0' into pset_custom_units_test 2023-03-19 22:33:01 +01:00
Carlos Villagrasa d89a8520a9 Added a test for pset custom IfcUnits 2023-03-19 22:23:36 +01:00
Andres d68356c3a7 Rename class causing unregistering error 2023-03-20 08:21:11 +11:00
Andres cb0e8b6bf2 Add own sublogger for IfcSverchok 2023-03-20 08:21:11 +11:00
Andres b20b99669d Chore: add newline at end of file 2023-03-20 08:21:11 +11:00
Andres d41a277b71 Fix runtime error when unregistering add-on 2023-03-20 08:21:11 +11:00
Andres 33e6a0fdae Update logger to match Sverchok latest 2023-03-20 08:21:11 +11:00
Massimo Fabbro d911d8579d Add qto data file 2023-03-20 08:12:24 +11:00
Massimo Fabbro 05bdc962a3 Now it's possible to see the selected object related cost items and related quantities in qto n-panel 2023-03-20 08:12:24 +11:00
Sigma Dimensions 0e03a01f61 fixing previous commit #ff806dc 2023-03-19 14:11:32 +00:00
Sigma Dimensions ff806dc6e4 improve covering qto calculation 2023-03-19 13:30:35 +00:00
Thomas Krijnen 5fcfbac4a3 Update validate.py 2023-03-19 13:24:27 +01:00
Thomas Krijnen 00b18f67cf #2685 indeterminate upper bound formatting 2023-03-19 12:46:15 +01:00
Dion Moult 088354a96b Fix critical bug where copied representations would be inefficiently or incorrectly replicated. 2023-03-19 22:03:45 +11:00
Dion Moult cfd857233c Fix #2864. Fix bug where element containment was invalidly prioritised over voids and fills in relative placement. 2023-03-19 18:46:34 +11:00
Dion Moult 2816d7f522 Fix bug where deleting the drawing object could lead to orphaned relationships 2023-03-19 18:15:09 +11:00
Dion Moult 3da718a6d1 Fix bug where removing objects could leave orphaned annotation relationships 2023-03-19 15:17:26 +11:00
Dion Moult 558aff72a0 Psets and qtos are now only created when properties exist to prevent invalid IFCs. 2023-03-19 14:49:31 +11:00
Dion Moult bcc399b842 Empty psets are purged to discourage invalid psets with no properties 2023-03-19 13:13:15 +11:00
Andrej730 32e47d03d4 IFC text - box alignment in viewport 2023-03-18 11:56:29 +05:00
Carlos Villagrasa a669c194cf Merge pull request #2869 from cvillagrasa/api_material_fix
Api material fix
2023-03-17 17:04:22 +01:00
Carlos Villagrasa 91f4687eac Revert "Add more parameters to material.add_layer"
This reverts commit 9946117de1.
2023-03-17 17:02:35 +01:00
Andrej730 31f6baaf67 small refactor for Ifc.edit and tool.Ifc
1) replaced IfcStore.edited_objs.add with tool.Ifc.edit
2) updated interface in tool.py
3) removed unlink from tool.Ifc - it was declared there twice
2023-03-17 17:50:56 +05:00
Andrej730 a83c4b2896 Stair, roof, railing - auto updating representation when creating one or update it
So basically there should be no need to manually update representation after you created one of the objects from ifc modifiers.
2023-03-17 17:32:36 +05:00
Andrej730 c685425667 Fixed bugs with text annotations after
1) Bug when new text added without specifying it's font size in class appeared empty;
2) Bug when leader text appeared weirdly bold.
2023-03-17 17:02:42 +05:00
ay-ex 553334d50e add imports to snippet
added imports and syntax highlighting so it is easier to run for newcomers
2023-03-17 20:33:15 +11:00
Andrej730 0b7b0a29a9 Solved redundant spaces in multiline svg text annotations (#2833)
The issue occurs because of svg pretty formatting - indent spaces <text> tag treats as actual spaces. Because of that use some css magic to remove those spaces from <text> tag and assign class to it's children <tspan> tags.

Altough trying to solve this issue I've tried to disable svg pretty format and got empty svg as a result (only templates, styles, no annotations) for some reason.
2023-03-17 11:05:27 +05:00
Andrej730 ae7f834a0f draw_text_annotation refactor
Refactored a code a bit and replaced literal parsing with `text_obj.BIMTextProperties.text` since it's already done beforehand in `tool.Drawing.update_text_value()`.
2023-03-17 11:05:26 +05:00
Andrej730 fe0a98a44f black format 2023-03-16 16:08:58 +05:00
Andrej730 35e748089b Prevent pyrna_enum_to_py warnings on using BIM Tool hotkeys
Type of warning fixed:
WARN (bpy.rna): pyrna_enum_to_py: current value '0' matches no enum in 'BIMModelProperties', '', 'ifc_class'
2023-03-16 16:08:58 +05:00
Andrej730 ff2cda7d18 Small refactor + allowing to preview text in viewport while editing 2023-03-16 16:08:58 +05:00
Andrej730 0d473fa9ac Fixing BoxAlignment value in tests (similar to 9f7db386a) 2023-03-16 16:08:58 +05:00
Andrej730 d8eb765906 BIM Tool - hotkey for editing text annotation
Added hotkey in BIM Tool for editing active text annotation (It's binded on Shift + E).
2023-03-16 16:08:58 +05:00
Carlos Villagrasa fab7b590f7 Allow for custom IfcUnits when editing psets 2023-03-16 20:39:32 +11:00
Andrej730 c9f52d2f8e Option to print all svg drawings #2794
It's working either if you shift click the printing button or supply `print_all = True` argument to `bim.create_drawing operator`.
2023-03-16 11:35:31 +05:00
Andrej730 821993d289 Fixed accidentally removed line in ee1e40171 2023-03-16 10:11:26 +05:00
Andrej730 2d32bc609a Figured a new way to update viewport to preview changes in ifc text 2023-03-16 10:11:26 +05:00
Andrej730 296cec02e8 Removed outdated code from BIMTextProperties 2023-03-16 10:11:26 +05:00
Andrej730 b55ac88c9d Fixing tests after 9f7db386a
TestExportTextLiteralAttributes and TestImportTextAttributes was failing because now we're assuming that BoxAlignment will have 1 of values from the list below and not "BoxAlignment"

"top-left", "top-middle", "top-right", "middle-left", "center", "middle-right", "bottom-left", "bottom-middle", "bottom-right"
2023-03-15 19:43:17 +05:00
Andrej730 c6d3598c52 Fixing tests after e9fdc979d 2023-03-15 19:43:17 +05:00
Andrej730 c4d2b30017 black format 2023-03-15 19:43:17 +05:00
Andrej730 ee1e401719 Ifc Text - drop down menu to switch font size
Added drop down menu to Ifc Text section in object properties where you can change text's size and it will automatically change it in `EPset_Annotation.Classes`. You can also preview it in viewport and it will write in IFC only after you finish editing.

Still need to investigate `annotation.Annotator.resize_text(context.active_object)` in `refreshFontSize`.
2023-03-15 19:43:16 +05:00
Andrej730 3c2ef518e8 IfcText - box alignment interface instead of manually typing text position
realigning box widget
2023-03-15 19:43:16 +05:00
Andrej730 f3e327e088 Added classes description for EPset_Annotation 2023-03-15 19:43:16 +05:00
Andrej730 be1d4e06de IfcText - different text sizes in viewport 2023-03-15 19:43:16 +05:00
Dion Moult 32f5a77d07 New shape utilities for getting top / bottom elevations and bbox. 2023-03-15 18:51:31 +11:00
Dion Moult 9121a6b864 Revert "Fix #2418. Object materials are now found in the materials tab."
This reverts commit 7666463751.
2023-03-15 18:30:11 +11:00
Carlos Villagrasa 9946117de1 Add more parameters to material.add_layer 2023-03-15 08:27:46 +01:00
Carlos Villagrasa ee85055d45 Fix bug in which layer.Material was erased 2023-03-15 08:27:27 +01:00
Andrej730 cce0867f63 IfcText - spacing in multiline text now depends on text size #2833 2023-03-14 19:38:15 +05:00
Andrej730 021321eb65 IfcText - support multiline text in viewport preview 2023-03-14 19:38:15 +05:00
Andrej730 6bd1b84b2b IfcText to appear on top of object properties stack
1) Puts IFC Text only on top of ifc panels to make it easier to change it's text
2) I guess it could be a good practive to set `bl_order = 1` by default so it will be possible later to prioritize something since by default blender sets `bl_order = 0` and then even `bl_order = -1` wouldn't help.
3) May not work in previously created files
2023-03-14 19:38:15 +05:00
Massimo Fabbro f5281a0895 Delete unuseful function 2023-03-14 11:24:37 +11:00
Massimo Fabbro 08fdf6014d weight calculator improvement (see #2859) 2023-03-14 11:24:37 +11:00
Andrej730 94f06d9e18 Another fix for dissolve limit in hiped roof generator... 2023-03-13 17:05:08 +05:00
Andrej730 8405ee4926 Fixed bug dissolve limit in generate hipped roof (e69452883)
Now it will work fine in both edit and object mode
2023-03-13 11:28:36 +05:00
Massimo Fabbro 154c4295df Finish mapping mappable quantities with get_weight 2023-03-13 13:18:02 +11:00
Massimo Fabbro 93519c1c63 Now is possible to calculate an object gross weight 2023-03-13 13:18:02 +11:00
Dion Moult 1250a20e35 Fix #2858. Fix #2856. BlenderBIM Add-on drawings and IfcCSV now support the new quoted and escaped selector capabilities. 2023-03-13 11:09:56 +11:00
Thomas Krijnen 9ec54228f8 Update ci-py-only.yml 2023-03-12 12:01:12 +01:00
Dion Moult 3f94184ace Fix bug where IfcURIReference properties wouldn't display 2023-03-12 21:55:07 +11:00
Thomas Krijnen 88c06f5450 Try different way of invoking ccache 2023-03-12 11:46:25 +01:00
Thomas Krijnen e50045bbed Update ci.yml 2023-03-12 10:06:32 +01:00
Thomas Krijnen 41417a77b9 Update ci-py-only.yml 2023-03-12 10:06:29 +01:00
Thomas Krijnen a5774bd02a Update ci-py-only.yml 2023-03-12 09:40:30 +01:00
Thomas Krijnen c38f48ee62 Try to let pip not install outdated ifopsh 2023-03-12 09:04:33 +01:00
Dion Moult 30c850e37d Fix #2140. Voids and fills can now be added, removed, and edited for non-geometric aggregates. 2023-03-12 12:52:30 +11:00
Dion Moult b6fdbd979e Adding existing objects as openings no longer move to cursor which is more intuitive 2023-03-12 12:52:30 +11:00
Thomas Krijnen 7a8bcbee33 #2685 poly curve test cases 2023-03-11 20:44:59 +01:00
Thomas Krijnen 42d7c7d32c #2685 Recompile rule 2023-03-11 20:44:11 +01:00
Thomas Krijnen c71a5a4d65 #2685 Indexing of simple type aggregates; fix index codegen bug; sizeof of indeterminate; repeat over indeterminate 2023-03-11 20:43:00 +01:00
Andrej730 e69452883f Temporarily commented out dissolve_limited in generate_hipped_roof
Currently it causes an error if you run it in object mode and doesn't really work in edit mode either because you may have no vertices selected. Will fix soon.
2023-03-11 20:47:41 +05:00
Sigma Dimensions 8624888bfc You can now specify custom names for types instead of relying on the default "TYPEX" naming 2023-03-11 14:13:56 +01:00
Andrej730 fad5c7c921 Section annotation - custom markers / toggle displaying the markers
Now it's possible to set custom markers in section annotation.

To do so you need to add BBIM_Section pset to the annotation and then you can either toggle displaying some marker with ShowStartArrow/ShowEndArrow or you can write the id of some custom symbol in StartArrowSymbol/EndArrowSymbol (need to make sure the symbol is included in symbols.svg).

Other changes:

- removed vertex sorting in decoration.py so that start and end points will be the same thing both in svg and in viewport representation (previously the sorting was needed of the direction the arrow in shader wasn't inverted));

- fixed bug when in svg section arrow symbols wouldn't rotate if you move individual verts of the annotation, not the entire object (I guess this bug sneaked in after adapting elevation annotation)
2023-03-11 18:02:16 +05:00
Dion Moult 0dad93bf00 See #2140. You can now bulk unassign aggregates, and they are auto directly contained in any previous indirect containers. 2023-03-11 16:31:23 +11:00
Dion Moult c51aa910cb See #2140. You can now select multiple objects and bulk add them to a single aggregate, and customise the aggregate class. 2023-03-11 16:31:23 +11:00
Andrej730 6d486aeb4d Removed debug print 2023-03-11 10:30:24 +05:00
Dion Moult 7041a4a4a9 Fix #2850. Splitting walls now reassigns voids and fills to the appropriate split portion. 2023-03-11 15:08:26 +11:00
Andrej730 381570cd9e Decorators - a bit more consistent geometry parsing between edit/object modes 2023-03-10 19:26:08 +05:00
Andrej730 c9f93b2316 Section annotation option not to draw full line between the markers
Here's the example - https://i.imgur.com/db09OVF.png

To make it work need to add BBIM_Section property set to the annotation and set "HasConnectedSectionLine" to False (by default it's True).
Also added preview for this feature in viewport.
2023-03-10 19:26:08 +05:00
Dion Moult 3706ecc5f2 Fix #2689. Fully disable wall sketches until we come up with a proper UX for it. 2023-03-10 21:21:03 +11:00
Dion Moult 51ad51036e Generated spaces now remember height and origin represents recalculation point. 2023-03-10 19:48:49 +11:00
Dion Moult 3edbcb9ff8 Fix #2849. Brick.ttl is now bundled. 2023-03-10 17:49:11 +11:00
Dion Moult 3e3c1699da Fix #1047. You can now set offsets to the iterator via Python. 2023-03-10 15:49:45 +11:00
Dion Moult 7666463751 Fix #2418. Object materials are now found in the materials tab. 2023-03-10 15:37:21 +11:00
Dion Moult c532b90c92 Minor fix. 2023-03-10 08:50:25 +11:00
Andrej730 7677733850 small fix for tool.Drawing.get_drawing_metadata
Otherwise it always returned a list with 1 empty string like `[ "" ]` which resulted in messy class names in svg like "-87IfcAnnotation0LtaLiEpzAOxEqmIvCV27EFALLSLOPEANGLE".
2023-03-09 18:50:05 +05:00
Andrej730 972d701801 Fall annotations
Added fall annotation - they appear both in viewport and svg.

There are three types of annotations (SLOPE_ANGLE, SLOPE_FRACTION, SLOPE_PERCENT) you can switch them by changing annotation's ObjectType to one of those values.

By default it uses angle representation.
2023-03-09 18:50:05 +05:00
Dion Moult cdee5532b6 Fix #2838. Bug where invalid 3D entity was used for 2D coordinates. 2023-03-09 21:01:54 +11:00
Dion Moult 38019288de Fix #2839. Bug where undo system could store edits of IFC primitives. 2023-03-09 18:18:56 +11:00
Dion Moult 3e2ca328d2 Get side area lets you choose the side axis now in util.shape. 2023-03-09 17:48:42 +11:00
Dion Moult 93b44b43a5 You can now get all materials including materials in sets via the util module. 2023-03-09 17:48:10 +11:00
Dion Moult 4ebcf8133c Fix #2435. The selector now supports regex filtering. 2023-03-09 11:07:28 +11:00
kzfile 13f8b183cb fix IfcSpace default style 2023-03-08 20:58:49 +01:00
Andrej730 8e5154e65e Minor fix for 6d524b632
Added get_viewport_context to interface too
2023-03-08 19:53:22 +05:00
Andrej730 6d524b632c Small fix for warnings " 'bim.cad_tool' not found for space"
Small fix to allow setting cad_tool even if operators were called not from viewport and to avoid warnings like "Warning: Tool 'bim.cad_tool' not found for space 'PROPERTIES'"
2023-03-08 18:42:36 +05:00
Andrej730 4ad3d65628 UI fixes for railing and roof modifiers
Changes:
1) Added editing railing / roof path as hotkey to bim / cad tools.
2) Added profile decorator
3) Some switching modes and tools for convenience
4) Fixed nasty bug in tool.Blender.apply_bmesh - method wasn't updating current mesh if it was in edit mode.
2023-03-08 18:22:28 +05:00
Dion Moult 4282014bfa Fix #2843. You can now get the bounding box centroid of geometry. 2023-03-08 20:58:21 +11:00
Andrej730 daee666735 Ifc Roof modifier
Added Ifc Roof modifier (also added it to shift-a menu and type manager). It works similar way to railing modifier - you define roof profile and then roof is generated.

Currently it has only 1 type of roof - HIP_ROOF (it utilizes bim.generate_hipped_roof operator).
2023-03-07 18:05:49 +05:00
Andrej730 5a6ae57833 Added ifc operators to some model operators 2023-03-07 09:43:05 +05:00
Andrej730 da8e5dced1 Added test to check #2839 2023-03-06 18:36:29 +05:00
Andrej730 fb38c68c7d Black format after adding railing modifier 2023-03-06 16:01:17 +05:00
Andrej730 2dc3c9b027 Railing - added to type manager 2023-03-06 15:47:55 +05:00
Andrej730 b057312ebf Ifc Railing modifier
Added Ifc Railing modifier (similarly to stair, window, door modifiers...).
You can start working with it either creating some edge based path and adding this modifier or by creating Railing for Shift+A menu (it will create some simple path to start with).

In railing modifier you can switch two edit modes - editing main railing properties and editing path. Editing path will show only the railing path, you can edit it and save it. You cannot edit the railing pass if you're not in this mode.
2023-03-06 15:47:55 +05:00
Thomas Krijnen d1217e61c4 #2822 svg: begin group lazily when data is actually being appended 2023-03-06 09:16:27 +01:00
Thomas Krijnen b521b68fd8 svg: compiler warnings 2023-03-06 09:15:27 +01:00
Thomas Krijnen c9302cde7c svg: prevent garbage data on empty path 2023-03-06 09:14:40 +01:00
Dion Moult 823e3c76eb Fix #2699. Bools and numeric filters are now handled in the selection UI. 2023-03-06 18:10:51 +11:00
Dion Moult 30d6289942 New utility to quickly get the grid north or true north angles. 2023-03-06 17:47:22 +11:00
Dion Moult a43a3d1ecd Fix #2745. You can now quote and escape complex pset names in the selector. 2023-03-06 17:47:03 +11:00
Dion Moult 9e0c5e9244 Fix #2835. Bug where in certain scenarios the decorator would crash due to prematurely freed bmesh. 2023-03-06 15:06:12 +11:00
Dion Moult a8f1df8a50 Fix #2836. Bug where very small lines could accidentally be seen as closed loops due to paperspace rounding. 2023-03-06 12:07:28 +11:00
Dion Moult fba84ecd3c Fix bug where invalid svg embedding was done when building sheets. 2023-03-06 11:52:55 +11:00
Dion Moult 8cc4edf60f Titleblocks now contain north symbol with dynamic angles. 2023-03-06 11:52:39 +11:00
Dion Moult e6eb455d71 Bump 2023-03-04 23:04:05 +11:00
Thomas Krijnen b84782e07f #2810 catch bad positioning warning and empty result 2023-03-03 14:32:02 +01:00
Dion Moult 2e3e0bef12 Minor fix 2023-03-03 22:27:47 +11:00
Dion Moult 51ff2f05bf Fix #2823. Only update colours if you actually change them. 2023-03-03 22:22:47 +11:00
Andrej730 42110e7f63 Added IfcPropertySingleValue to EnablePsetEditing to fix bug
Noticed bug trying to edit "Data" in psets from ifc modifiers and fixed it.

Traceback:
Error: Python: Traceback (most recent call last):
  File "\blenderbim\bim\module\pset\operator.py", line 94, in execute
    self.load_from_pset_data(pset)
  File "\blenderbim\bim\module\pset\operator.py", line 206, in load_from_pset_data
    metadata.set_value(value)
UnboundLocalError: local variable 'value' referenced before assignment
2023-03-03 15:36:14 +05:00
Dion Moult f0733cb148 Minor hotfix 2023-03-03 20:53:10 +11:00
Dion Moult 7383f44f8f See #2645. Update tests to use overridden built-ins. 2023-03-03 18:22:47 +11:00
Dion Moult 311a80955d Fix #2828. Bug where existing "TOP" connections were not removed if you tried to extend to a new slab / roof. Allow generic "top" connections to any LAYER3 element. 2023-03-03 17:59:20 +11:00
Dion Moult 08561b11c3 Fix #2077. You can now edit profiles via their axis line. 2023-03-03 17:47:16 +11:00
Andrej730 47192cc834 Fixed typo in generate_pset_templates.py 2023-03-03 11:08:56 +05:00
Dion Moult 860a0bfc8e Fix #2828. Extending walls to roofs / slabs is now more intuitive as you select the target slab last. 2023-03-03 14:42:08 +11:00
Dion Moult 5677768e99 Fix #2818. Alignment functions now considers layer set usage offsets. 2023-03-03 11:55:49 +11:00
Andrej730 4c58ca28e5 Synchronizing batting viewport and svg dimensions
Also switched to even more simple pattern to indicate insulation because of the vertex limit
2023-03-02 19:00:23 +05:00
Dion Moult 588d6ccaaa Attempt 2. 2023-03-02 21:51:09 +11:00
Dion Moult 21f583800a Ensure Python 3.10 is used to fetch BlenderBIM Add-on dependencies 2023-03-02 21:43:22 +11:00
Andrej730 4ea08a087c Minor array refactor 2023-03-02 14:39:36 +05:00
Dion Moult e5885db187 Get batting thickness from decorator data 2023-03-02 19:02:00 +11:00
Andrej730 1fca38625f A last bit of cleaning up temp files after tests 2023-03-02 10:45:00 +05:00
Sigma Dimensions cf2ad43ed7 refactor pset operator 2023-03-01 15:37:19 +01:00
Andrej730 fb3023bb79 Moved blenderbim tests temporary files to separate directory
Moved temporary test files to separate directory and added it to gitignore

Still have test.exp.cache.dat spawning from `test_feature`...
2023-03-01 18:46:13 +05:00
Andrej730 52f18fea85 Viewport preview for batting annotation
Currently it's always set to the same thickness and doesn't update from pset value.

It's currently using zigzag pattern to indicate batting because some techincal limitation of the shader (Error: C6033: Hardware limitation reached, can only emit 256 vertices of this size)

Also added batting to the annotation tool panel.
2023-03-01 17:37:17 +05:00
Dion Moult d5ecb9b8ea See #2820. Fix issue where some hatches weren't merged when an object had multiple SVG paths. 2023-03-01 22:25:12 +11:00
Dion Moult 67d33001d5 See #2820. Ensure only closed polygons are merged in drawings. 2023-03-01 21:57:33 +11:00
Dion Moult 4f571fa2fc Attempt to fix pytest bundling. 2023-03-01 21:39:15 +11:00
Dion Moult c5bd902dc6 See #2820. See #2822. Fix to accommodate empty element groups in drawings. 2023-03-01 21:08:34 +11:00
Dion Moult 68282c7a1e Fix #2821. 2023-03-01 20:54:07 +11:00
Sigma Dimensions d40dcae212 fix 5d csv imports with funky characters and numbers, fix 5d export 2023-03-01 10:51:52 +01:00
Dion Moult 12151c40ff Fix #2799. Drawing polygon merging now is purely material based. 2023-03-01 17:52:57 +11:00
Dion Moult 9c8b15fa1a Fix #2645. No longer override built-in operators for critical features. 2023-03-01 14:30:56 +11:00
Dion Moult 3d49cc9d13 By default, the site is now cut with a nice thick line on drawings 2023-03-01 11:28:45 +11:00
Dion Moult 955c0d19a6 See #2799. Cut walls with the same material in drawings are now merged by default. 2023-02-28 22:59:45 +11:00
Andrej730 3cf7a9e925 Renamed batting pset 2023-02-28 11:24:47 +05:00
Andrej730 8cbf719772 Replaced tool method from 17add48 with existing one 2023-02-28 10:04:18 +05:00
Dion Moult 2f614330c9 Fix #2781. Usability bug where it wasn't clear references were only loaded from the active external classification library. 2023-02-28 12:39:15 +11:00
Dion Moult 5a40519114 Minor fix 2023-02-28 11:43:36 +11:00
Dion Moult 96271e8bd8 Users can no longer create orphaned opening elements, which are invalid. 2023-02-28 10:05:22 +11:00
Dion Moult 9b75a415d4 See #2812. Resolve issue where obsolete link_to_scene argument was used. 2023-02-28 10:03:56 +11:00
Dion Moult 5f71abb5fa Minor fix to insulation scale 2023-02-28 09:23:28 +11:00
Dion Moult affb066b7b Fix #2813. Bug where the user could try to load thumbnails even though there were no types. 2023-02-28 08:44:36 +11:00
Andrej730 17add48254 Minor refactor for modifiers 2023-02-27 19:18:39 +05:00
Andrej730 f5b6fdcb5b Batting Annotation pattern
Added batting pattern to line annotations.
The way to use it is:
1) Add "Line" Annotation;
2) Change object type to "BATTING"
3) Add object property set "Pset_BBIM_Bating" (also added in this commit) to specify the batting thickness.

Currently there is no preview for batting in viewport.

Other changes:
- EPset_Annotation.ifc -> Psets_BBIM_Annotation.ifc (more general psets ifc library for the future use)
2023-02-27 19:18:39 +05:00
Dion Moult 68bdbe4c4f Bundle bpypolyskel so that users can start playing with the hipped roof generator 2023-02-27 21:49:04 +11:00
Dion Moult 363ddc2a9b Minor fix 2023-02-27 20:49:45 +11:00
Dion Moult 20d44378d9 You can now generate type-based spaces and regenerate spaces when boundaries change. 2023-02-27 20:49:38 +11:00
Dion Moult 4fe321275a Fix bug where space types were not loaded. 2023-02-27 20:47:20 +11:00
Dion Moult 60b1192703 Fix critical bug where a user might override and break existing objects if they reused an object name 2023-02-27 20:46:53 +11:00
Dion Moult b25233a748 Fix critical bug where duplicate orphaned collections were created in the background. 2023-02-27 20:12:39 +11:00
Dion Moult d9b54c923c Fix bug where you couldn't manage spatial types in the type manager 2023-02-27 20:10:27 +11:00
Dion Moult 131ee8270b Minor fix 2023-02-27 10:57:28 +11:00
Massimo Fabbro e71bace6a8 update makefile with shapely 2.0.1 2023-02-27 09:10:46 +11:00
Dion Moult 2c4a0669ed Fix bug where copying to container might get the wrong coordinates if containers weren't synced. 2023-02-26 22:31:21 +11:00
Dion Moult ee451b6b29 Experimental operator to generate hipped roofs from a footprint. 2023-02-26 21:23:35 +11:00
Dion Moult 7b858fffb2 All generated drawing text now has classes so you can customise their style. 2023-02-26 21:22:43 +11:00
Dion Moult 6ce0deeb63 Fix #2808. Bug where you couldn't assign element types in IFC4X3. 2023-02-26 11:26:13 +11:00
Dion Moult 96b2eaeae4 Experimental operator to generate spaces bounded by walls. 2023-02-25 21:40:02 +11:00
Andrej730 8fe8175a87 Monolithic stair variant generator 2023-02-25 10:40:27 +05:00
Andrej730 ee2bedfb64 Update openings position based on fillings position at wall regenarete
So basically now when you move windows or doors attached to the wall, their openings positions will also be updated if you hit "regenerate" for the wall.
2023-02-24 17:12:41 +05:00
Andrej730 aa8da74ed8 ifc2x3 pset library name fix + copyrights 2023-02-24 11:07:33 +05:00
Dion Moult f2c03a508f Fix #2600. Link back to exact docs folder in repo. 2023-02-24 16:21:21 +11:00
Dion Moult aa172488b0 Fix #2594. Document potential lag in PyPI releases of C++ core. 2023-02-24 13:35:46 +11:00
Dion Moult ae09adf854 Fix #2424. Bug where indirect assets (e.g. importing a type using a material) with relationships had their relationships duplicated 2023-02-24 13:01:26 +11:00
Andrej730 5b5dd73684 get_inverse_attributes - added more correct recursive unpacking for aggregates and selections
Not affected the result schemas though
2023-02-23 18:56:24 +05:00
Andrej730 3849a87adc Added simple tests for door and window modifier
This thing used to result in errors before we fixed `replace_object_ifc_representation`
2023-02-23 18:38:20 +05:00
Andrej730 708dc6aca2 IFC4X3/IFC2X3 pset templates library
Generated from xmls from the ISO release of IFC4X3.
Based on https://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2_TC1/HTML/annex/annex-a/general-usage/IFC4_ADD2.ifc

Also generated pset templates library for IFC2X3 (also based on similar xmls) but IFC2X3 ifc pset library is using... IFC4X3 schema because IfcPropertySetTemplate and IfcRelDeclares are not available in IFC2X3. Which is okay for our purposes for now.

Will need to update IFC4X3 library if one of the issues will be resolved:
https://github.com/buildingSMART/IFC4.3.x-development/issues/587
https://github.com/buildingSMART/IFC4.3.x-development/issues/586
2023-02-23 18:17:14 +05:00
Dion Moult 2fe2c349fd Fix #2743. obj2ifc scripts updated to support multiple OBJ files. 2023-02-23 22:17:34 +11:00
Dion Moult d396d32a8f You can now extend beams to walls. 2023-02-23 18:33:31 +11:00
Dion Moult 1fd02755f8 Fix BCF module bugs where certain BCF entities were assumed to exist. 2023-02-23 18:32:44 +11:00
Dion Moult 79d92b511b Fix #2442. Fix bug where viewboxes were not clipped when compiling drawing sheets. 2023-02-23 13:16:33 +11:00
Andrej730 ff7d93e66c Undo tests - proof of concept
Created some simple undo tests.

This "flip wall and ctrl-z" test actually is crashing blender if I do it manually - so I guess undo in background mode is still kind of different.
2023-02-22 20:24:43 +05:00
Dion Moult 68a8c7a235 Add basic integration tests for modeling slabs and beams 2023-02-22 21:50:12 +11:00
Dion Moult 5e744ff7d1 Add integration tests for basic wall modeling features 2023-02-22 20:38:02 +11:00
Dion Moult 921a185ffa Fix bug where natively loaded faceted breps didn't respect false origins. 2023-02-22 16:32:32 +11:00
Dion Moult 855751f026 Fix #2767. Removing representations now cleans up after orphaned Blender mesh data. 2023-02-22 16:24:24 +11:00
Sigma Dimensions 255c2efe98 Fix sequence data loading for unnamed items, ref #2783 2023-02-21 22:55:44 +01:00
Sigma Dimensions 892b282054 Fix loading task properties when calendar doesn't have a name, ref issue #2783 2023-02-21 20:23:07 +01:00
Dion Moult 26efc6b4e7 Fix bug where BIM tool hotkeys could activate operations without being in a correct state. 2023-02-21 21:54:53 +11:00
Dion Moult a0618c5827 Fix #2769. Bug where parametric UI was hardcoded to only work for walls. Now works on any generic parametric vertical layers. 2023-02-21 21:41:52 +11:00
Andrej730 d4bbb6e2c7 Added Model/Profile/Elevation_VIEW context as default for new projects #2784
Default Model/Profile/Elevation_VIEW context could be helpful to make openings created with BIM tool more correct.
2023-02-21 11:46:05 +05:00
Andrej730 66b7692227 Fixed windows/openings bugs
1) Window bug (#2792) - lining_offset wasn't converted from ifc units during window properties editing
2) Openings bug - OveallWidth/OverallHeight based openings was converted to ifc units even though their dimensions were already in ifc units.
2023-02-21 11:20:36 +05:00
Dion Moult 2429f507ad Fix #2785. Fix bug where invalid models from Revit that reused material usages could create invalid models. 2023-02-21 13:48:24 +11:00
Dion Moult 03a66d2806 Fix #2787. Fix creating invalid orphaned property and group relationships when removing systems / groups / elements. 2023-02-21 10:59:47 +11:00
Dion Moult 9d8551cb48 Demo library now has profile names to follow native IFC best practices 2023-02-21 10:14:06 +11:00
Dion Moult 2ca0b52c6a Fix failing test when editing a material profile with an unnamed profile 2023-02-21 09:51:30 +11:00
Massimo Fabbro 9cc754488b calculate all quantities smoke test 2023-02-21 09:12:30 +11:00
Massimo Fabbro f81ceb53cf add qto feature test 2023-02-21 09:12:30 +11:00
Dion Moult d1d0b5724d Revert "Solving test fail - keeping unnamed profiles when updating profiles in MaterialsData"
This reverts commit 0e1689c2d9.
2023-02-21 08:51:44 +11:00
Sigma Dimensions 40560b71c2 BBIM: fix material errors, and add smoke tests 2023-02-20 17:49:54 +01:00
Andrej730 378a25bbaa Added some .feature convenience debug fixtures 2023-02-20 19:57:05 +05:00
Andrej730 1dfabe2591 Fixed issue with float vectors assertion during tests
`sequence.feature` - Added `[:]` to make errors more readable values in errors (for example, (0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 1.0) instead of `<bpy_float[4], Object.color>`

`test_feature.py` - fixed `FAILED test/bim/test_feature.py::test_animate_the_consumption_of_a_wall - AssertionError: Value is <bpy_float[4], Object.color>`
Test was failing because of float garbage in object.color (the comparison was (0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 1.0) <> [0.2, 0.2, 0.2, 1] )

After that fix all tests now are passed 🥲
2023-02-20 19:53:16 +05:00
Andrej730 0e1689c2d9 Solving test fail - keeping unnamed profiles when updating profiles in MaterialsData
Solves test_enable_editing_material_set_item test error
```
FAILED test/bim/test_feature.py::test_enable_editing_material_set_item - RuntimeError: Error: Python: Traceback (most recent call last).

RuntimeError: Error: Python: Traceback (most recent call last):
  File "\blenderbim\bim\module\material\operator.py", line 587, in execute
    self.mprops.profiles = str(material_set_item.Profile.id())
TypeError: bpy_struct: item.attr = val: enum "107" not found in ('79', '98')
Location: C:\software\Steam\steamapps\common\Blender\3.4\scripts\modules\bpy\ops.py:113
```

The problem was `bim.enable_editing_material_set_item"` was trying to set `MaterialsData` profiles and wasn't able to set unnamed profile because `MaterialsData.profiles()` was discarding unnamed profiles (which is seems contradictory because `profiles()` is also handling unnamed profiles anyway).
2023-02-20 18:00:48 +05:00
Sigma Dimensions bd071cc472 Add smoke test for editing material profiles 2023-02-20 11:08:15 +01:00
Dion Moult dde847cb5a IfcTester can now output reports in BCF 2023-02-20 17:50:36 +11:00
Dion Moult 3c17718f70 Fix bug where adding a BCF viewpoint didn't take into account project units 2023-02-20 17:50:36 +11:00
Andrej730 0445119e77 Shifting dimensions defined openings by min_x and min_z to prevent #2784 2023-02-20 11:22:02 +05:00
Dion Moult e82cb5c149 IfcTester can now create reports in ODS format 2023-02-20 17:05:07 +11:00
Dion Moult 984548f315 IfcTester can now output reports in plain text 2023-02-20 17:04:38 +11:00
Dion Moult a0be4f58e6 Fix #2780. Fix bug where validation couldn't be run. pytest is now bundled. 2023-02-20 11:26:09 +11:00
Dion Moult 147602e107 Fix bug where ifcopenshell express rule validator required a logger with set_state. 2023-02-20 11:26:09 +11:00
Andrea Ghensi ac81169290 build(bcf): remove conda dependency 2023-02-20 07:26:34 +11:00
Dion Moult 1d78e05370 Fix #2774. Bump IfcOpenShell. 2023-02-19 21:53:49 +11:00
Andrej730 4b15b02ac8 Fixed Door modifier initial opening problem #2784
- add check of OverallHeight and OverallWidth for creating openings for doors and windows;
- OverallHeight, OverallWidth update for all the occurences of the type for doors and windows;
- new tool.Ifc method - get_all_element_occurences
2023-02-18 17:11:04 +05:00
Thomas Krijnen 57d18a0644 Update IfcIShapeProfileDef.cpp 2023-02-18 13:00:45 +01:00
Dion Moult 2f73af7e6a Fix bug where BlenderBIM Add-on BCF module was completely broken. Now works with latest BCF library for BCF-XML v2. 2023-02-18 21:12:36 +11:00
Dion Moult e712ef344d New feature in BCF to allow extracting specific files like header files, snippets, or bitmaps. 2023-02-18 21:11:05 +11:00
Dion Moult f91e9a3119 Fix BCF bug where viewpoints were not created with a .bcfv suffix which is not compliant. 2023-02-18 21:10:27 +11:00
Dion Moult 9cf36f1d91 Fix BCF bug where BCFv2 files were unable to be loaded 2023-02-18 21:09:32 +11:00
Andrej730 ab9a4856ab Update entity-types mapping for ifc4
Added IfcWindowStyle and IfcDoorStyle for suitable StandartCases since StandartCases inherit from IfcDoor and IfcWindow.
2023-02-17 17:57:17 +05:00
Andrej730 d52618277e Ifc4x3 - entity-types mapping
- added mapping entity-types mapping based on iso release of ifc4x3

- added some manual corrections for `generate_util_type_json.py` if someone would regenerate the map for ifc4.

- manual correction in ifc4x3 mapping for IfcCivilElement. It could be removed in the future releases of IFC if https://github.com/buildingSMART/IFC4.3.x-development/issues/583 is resolved

If curious to look what were the changes for mapping between ifc4 and ifc4x3:
https://github.com/IfcOpenShell/IfcOpenShell/commit/da51253fb0a9d08aa93f5fe3c074d3592b3aa997#diff-98f525c91bb47b9820e603fba61cc015d3e6ae7261593d727c51114e3ff73aa7
2023-02-17 17:57:16 +05:00
CyrilWaechter 743bd2c48f Add buttons to selected related boundaries
Related by a common:
- BuildingElement
- BuildingElementType
- Space
- SpaceType
2023-02-17 13:21:24 +01:00
CyrilWaechter 11894de455 Add button space to select its boundaries 2023-02-17 10:43:48 +01:00
Dion Moult 0c8122afc4 See #2762. Final final attempt. 2023-02-17 13:28:02 +11:00
Dion Moult f893503d0c See #2762. Final attempt. 2023-02-17 13:12:09 +11:00
Dion Moult 504782f156 See #2762. Attempt 3. 2023-02-17 12:53:55 +11:00
Dion Moult 5d1f32bfc0 See #2762. 2023-02-17 12:28:19 +11:00
Dion Moult 5bc315be92 See #2762. 2023-02-17 12:27:31 +11:00
Dion Moult e8f21c79b1 See #2762. 2023-02-17 12:03:25 +11:00
Sigma Dimensions ba24f9b491 - Improve ODS export
- Fix XLSX export bug
- Improve active cost item UI active cost item
- Fix missing tool cost function
2023-02-16 20:22:45 +01:00
Andrej730 937fa21cce Fix to prevent pyrna_enum_to_py warnings using BIM Tool
Prevents couple `pyrna_enum_to_py` warnings that occured using BIM Tool

```
WARN (bpy.rna): C:\Users\blender\git\blender-v340\blender.git\source\blender\python\intern\bpy_rna.c:1341 pyrna_enum_to_py: current value '0' matches no enum in 'BIMModelProperties', '', 'ifc_class_browser'
WARN (bpy.rna): C:\Users\blender\git\blender-v340\blender.git\source\blender\python\intern\bpy_rna.c:1341 pyrna_enum_to_py: current value '0' matches no enum in 'BIMModelProperties', '', 'relating_type_id'
WARN (bpy.rna): C:\Users\blender\git\blender-v340\blender.git\source\blender\python\intern\bpy_rna.c:1341 pyrna_enum_to_py: current value '0' matches no enum in 'BIMModelProperties', '', 'ifc_class'
```
2023-02-16 17:43:34 +05:00
Andrej730 16cbab2de7 Commented how to regenerate BIM Tool keymap in case of errors 2023-02-16 16:40:07 +05:00
Andrej730 a85f81d8ca Refactor - moved some helpers functions to tool 2023-02-16 15:16:42 +05:00
Andrej730 1617ede010 Simplified addings hotkeys descriptions in BIM Tool
Now it's more universal and doesn't require some single operator to be attached to hotkey description.
Also added description for some hotkeys
2023-02-16 14:36:24 +05:00
Dion Moult d9f1d501aa See #2762. Try again. 2023-02-16 15:01:19 +11:00
Sigma Dimensions 8ee60db0df Re-assigning a product type class should also reassign the class of its typed instances 2023-02-15 23:11:30 +01:00
Sigma Dimensions d2e02c8ab3 complete cost schedule exports commit 9dc69f3 2023-02-15 23:09:15 +01:00
Sigma Dimensions 2d4e4d2445 forgotten commit for duplicating tasks 2023-02-15 23:00:43 +01:00
Sigma Dimensions 9dc69f3aa7 You can now export Cost Schedules as CSV, ODS, XSLX with BlenderBIM or using the cli app 2023-02-15 22:50:39 +01:00
Andrej730 476ab506d0 Added ifc4x3 json schema and it's parser
API for docs works the same way as it worked for ifc2x3 and ifc4.

Besides changing `doc.py` and adding `.json` schemas added `ifc4x3dev_scrape_data_for_docs.py` (it's kind of hacky now and relies on `server.py` code from the further mentioned repo) that's used to parse some entities descriptions from https://github.com/buildingSMART/IFC4.3.x-development for later use in `doc.py`.
2023-02-15 18:38:04 +05:00
CyrilWaechter a6fa6201f7 Fix bugs introduced in cf87852 2023-02-15 10:34:25 +01:00
Dion Moult 26f7db0504 Fix #2698. IfcClash results are now aware of multiple linked IFC models. 2023-02-15 20:32:50 +11:00
Dion Moult 77a0da2a17 See #2762. Another attempt at fixing PyPI build. 2023-02-15 20:06:07 +11:00
Thomas Krijnen 785d2e601c Fix after 31cf1127a6 2023-02-15 09:52:21 +01:00
Massimo Fabbro 3687e4ed91 finish mapping Qto_FootingBaseQuantities 2023-02-15 09:35:29 +11:00
Thomas Krijnen 31cf1127a6 Validation output enhancements 2023-02-14 20:55:14 +01:00
Thomas Krijnen 97385efbca entity_instance.get_info(scalar_only=) 2023-02-14 20:11:24 +01:00
Andrej730 6a87b68c3b Window Modifier - added 2d representation
+ fixed lining offset for door 2d representation
2023-02-14 16:54:43 +05:00
Andrej730 be06bd6369 Added note about core.geometry representations functions 2023-02-14 16:54:19 +05:00
Andrea Ghensi a5b4ac863b fix: ifc clash operator fixes
fixes #2698
2023-02-14 21:55:41 +11:00
Thomas Krijnen e535f911d1 Update extrusion-dir cases for undeterminate handling 2023-02-14 10:04:46 +01:00
Thomas Krijnen 18670bcbd6 Recompile rules 2023-02-14 10:04:46 +01:00
Thomas Krijnen 27511d362e Use inverse unpacking in rule execution 2023-02-14 10:04:45 +01:00
Thomas Krijnen c634bffa10 Update reverse compilation to eliminate getattr() calls 2023-02-14 10:04:45 +01:00
Thomas Krijnen dffa90bd5d Better conformance wrt indeterminate with AST rewriting and dedicated type 2023-02-14 10:04:45 +01:00
Thomas Krijnen 6a47d33974 Add zone IsGroupedBy where rule test case 2023-02-14 10:04:45 +01:00
Thomas Krijnen e87524ba11 ifcopenshell.settings.unpack_non_aggregate_inverses 2023-02-14 10:04:44 +01:00
CyrilWaechter b1154ae377 Adapt to code changes introduced in ea91f43 2023-02-14 09:22:20 +01:00
Andrej730 cbc24c31a2 aud dependency fork fix
Solves #2759
2023-02-14 00:59:17 +05:00
Dion Moult 0a8a6e5825 Fix #2383. Don't default text alignment via CSS, let attributes take precedence. 2023-02-13 22:28:53 +11:00
Andrej730 e088a10aa8 New openings size wasn't converted using unit_scale #2765 2023-02-13 15:29:32 +05:00
Dion Moult 007d984baf Fix #2274. You can now purge unused types. 2023-02-13 15:20:56 +11:00
Dion Moult 7d979e5a04 Fix #2575. We are incompatible with add-ons using dictionary overrides for delete/duplicate macros. 2023-02-13 11:22:57 +11:00
CyrilWaechter 4134c709a8 Add fallback solution for invalid geometries
When an inner boundary cut an outer boundary in an IfcCurveBoundedPlane
which is invalid in IFC schema then ifcopenshell fails to create
geometry.
See #635
2023-02-12 18:29:24 +01:00
Thomas Krijnen ff5e4991ab Test files 2023-02-12 15:28:14 +01:00
Thomas Krijnen 0b4b45b7c8 Validate bounds of non-aggregate inverses 2023-02-12 15:28:14 +01:00
Massimo Fabbro 145ac1a0f4 Fix #2716 issue (#2761) 2023-02-12 14:09:33 +01:00
Dion Moult 74de7436b7 See #2762. Fix pip build. 2023-02-12 20:32:30 +11:00
Dion Moult 60fa05a913 Fix #2521. Fill areas have limited dissolve applied before rendering. 2023-02-12 18:58:49 +11:00
Dion Moult 303de61417 See #2760. Fix bug where editing pset with null'ed enumeration fails. 2023-02-12 15:12:31 +11:00
Dion Moult a9a4c6049f Fix bug where you couldn't duplicate text annotations. 2023-02-12 15:02:41 +11:00
Dion Moult 82b201a14e Fix #2352. Text styling is now possible with custom classes. 2023-02-12 15:01:47 +11:00
Dion Moult c9bd7adf8a Fix bug where you couldn't create a drawing with no linework. 2023-02-12 13:31:49 +11:00
Dion Moult 0655d77210 See #2760. Fix bug where groups UI had undefined variable. 2023-02-12 13:31:49 +11:00
Sigma Dimensions 515ec28fb3 Place text leader annotations horizontally 2023-02-12 01:07:41 +01:00
Sigma Dimensions c28c2dd077 BIM tool hotkey to update base quantities 2023-02-12 00:47:54 +01:00
Sigma Dimensions b04383bb64 Smoke test for duplicating tasks 2023-02-12 00:38:22 +01:00
Sigma Dimensions f4b93ef243 You can now duplicate tasks 2023-02-12 00:37:37 +01:00
Sigma Dimensions 05cf00bef6 Add smoke test for task product selection & minor fix 2023-02-11 23:24:52 +01:00
Andrej730 e81346c339 Door openings updated on door parameters update
Based on 6d1e9f73a
2023-02-11 19:01:56 +05:00
Sigma Dimensions ac911cefd6 minor fix for d4eb56e 2023-02-11 14:24:53 +01:00
Li1506 c4cea20849 add IfcConvert testing on sample files step to ci.yml 2023-02-11 13:25:50 +01:00
Sigma Dimensions e30992b905 minor fix for commit d3b176e 2023-02-11 13:23:23 +01:00
Sigma Dimensions 5beea8640e BBIM: rewrite Selector search filter to use core and tool functions 2023-02-11 13:19:08 +01:00
Sigma Dimensions d3b176e5eb complete costing module refactoring 2023-02-11 12:34:54 +01:00
Andrej730 0d0691a012 Door modifier - double doors type support 2023-02-11 16:09:13 +05:00
Sigma Dimensions d4eb56e360 New Search and Spatial selection Tools
+ refactor sequence modules
2023-02-11 11:23:07 +01:00
Andrej730 5cfc122b79 Door modifier - double swing doors
still no dashed lines in 2d representation
2023-02-11 14:20:04 +05:00
Sigma Dimensions fa0f484922 Inlcude audio library for BlenderBIM costing chaching sound 2023-02-11 10:05:54 +01:00
Dion Moult ceaa930aad Fix #2756. Bug where reassigning classes with a enum didn't work. 2023-02-11 11:03:35 +11:00
Dion Moult bbd2b67041 Add link to dev fund in add-on about section. 2023-02-11 09:54:43 +11:00
Sigma Dimensions 6c82e6f889 Fix assign cost value usecase 2023-02-10 21:28:49 +01:00
Thomas Krijnen 531e07767f #2754 latebound schema handling 2023-02-10 21:08:20 +01:00
Thomas Krijnen da39c903f3 Latebound schema handling: Improve error messages 2023-02-10 21:07:25 +01:00
Andrej730 f458aa9932 Door fixes
1) do not create new ifc representation if editing was canceled (similar to 25c650f4c)
2) plan and profile representations now  are optional (similar to 50d71d5ea)
2023-02-10 18:00:43 +05:00
Andrej730 9e383959c8 door black formatting 2023-02-10 16:58:36 +05:00
Andrej730 3654e49f87 Door handles 2023-02-10 16:55:13 +05:00
Dion Moult 13f5767921 Minor fix 2023-02-10 19:01:54 +11:00
Dion Moult 6d1e9f73a6 Windows now regenerate openings when window parameters updated 2023-02-10 19:01:20 +11:00
Andrej730 d9ddf67afb small fix for 50d71d5ea
The error was:
```
Error: Python: Traceback (most recent call last):
  File "\blenderbim\bim\module\model\window.py", line 337, in execute
    element = blenderbim.core.root.assign_class(
NameError: name 'blenderbim' is not defined
```
2023-02-10 12:49:33 +05:00
Dion Moult 47e6352350 Don't create temporary objs when updating filling openings. 2023-02-10 18:45:53 +11:00
Dion Moult ae564d1b61 Fix #1040. New utility for geometric shape analysis only requiring numpy. 2023-02-10 16:03:16 +11:00
Vukas Pajic d9cee04769 Fix #2755 2023-02-09 11:00:25 +01:00
Dion Moult 50d71d5ea1 Black code and make profile representation optional for windows. 2023-02-09 20:13:14 +11:00
Dion Moult 25c650f4cd Don't edit IFC when simply disabling window editing. 2023-02-09 19:33:08 +11:00
Andrej730 f0502c123e Window modifier - fixed bugs related to ae5ea3857
1) now replacing actual representation instead of the map
2) removed `should_sync_changes_first` as unnecessary representation update
2023-02-08 18:17:47 +05:00
Sigma Dimensions 693960a4ab start refactoring costing operators into core & tool 2023-02-08 13:39:46 +01:00
Vukas Pajic 5df0cf39a0 minor fix 2023-02-08 12:06:16 +01:00
Vukas Pajic 578220a1ab (IfcPatch) allow user to specify output directory for "SplitByBuildingStorey" 2023-02-08 12:04:58 +01:00
Andrej730 ae5ea3857e Fixing bug with updating window/door modifier with element types
The bug occured when you created a window/door type and some instance of it and then would try to update modifier.

There were two problems:
1) Because `remove_representation` removes all the meshes of the representation, representation has to be switched before removing the old one.

2) `switch_representation` parameter `is_global` was set to `False` and it wasn't affecting all instances of the type which led to errors during representation switch later on.
2023-02-08 15:56:57 +05:00
Dion Moult 93d0ffd459 Fix #2520. You can now duplicate drawings with or without annotations. 2023-02-08 21:16:54 +11:00
Vukas Pajic 1b85928810 allow user to specify output directory for "SplitByBuildingStorey" 2023-02-08 10:42:05 +01:00
Dion Moult f118c50d1d Fix bug where removing a drawing didn't remove its references. 2023-02-08 19:08:45 +11:00
Sigma Dimensions ac5ec72acf BBIM: improve work schedule visualisation workflow & refactor visualise_work_schedule_date operator 2023-02-08 08:25:11 +01:00
Sigma Dimensions 7fe2634d32 Improve guess schedule date range ( including tasks with input assignements) 2023-02-08 08:18:08 +01:00
Dion Moult 1279b9848f Fix regression with editing material psets 2023-02-08 17:43:50 +11:00
Dion Moult ea91f4302c Drawings now load on-demand instead of at project load. See #2520. 2023-02-08 16:53:19 +11:00
Dion Moult 88bddb9531 See #2520. You can now duplicate drawings. 2023-02-08 12:29:49 +11:00
Sigma Dimensions 4e308a6e31 fix api docstring description for nest.unassign_object usecase 2023-02-07 15:35:34 +01:00
Andrej730 4bd7fc5304 Simplified door ifc representation 2023-02-07 16:48:37 +05:00
Andrej730 0122fe4382 Fix #2742 2023-02-07 14:57:37 +05:00
Dion Moult 1730f25a5a Fix #2584. You can now edit any layered or profile material agnostic of class. 2023-02-07 19:13:22 +11:00
Dion Moult 3f8314bcf3 Minor fix. 2023-02-07 12:37:10 +11:00
Dion Moult 5879d14803 See #2737. Fix bug where convert length unit patch did not work outside Blender session. 2023-02-07 09:05:20 +11:00
Andrej730 4c1a821922 Pset_StairFlightCommon update
Added Pset_StairFlightCommon update to stair modifier
2023-02-06 18:54:25 +05:00
Andrej730 e1456533f2 Doors - clean up + black format 2023-02-06 18:53:48 +05:00
Andrej730 7522a3a2ab renamed "data" parameter in model/data.py
renamed "data" parameter in model/data.py to make it a bit more distinctive from neighbour "Data" parameter with json string
2023-02-06 18:45:48 +05:00
Andrej730 144d01a0ef Added modifiers folding to prevent clutter 2023-02-06 18:45:48 +05:00
Andrej730 f6cb6c8b21 Accepting predefined type for windows/stairs/doors from type manager
Also assigned layout name property for windows/doors
2023-02-06 18:45:48 +05:00
Andrej730 0f5264af99 Door - added to type manager
Also added predefined type for door and bit of refactoring
2023-02-06 18:44:09 +05:00
Andrej730 e57ff19e16 Door - added 2d representation 2023-02-06 18:44:09 +05:00
Andrej730 b2bdbdd8c3 Door modifier - basic setup
Also:
- refactored window modifier code - part of it is now reused building a door and can be used by other module in the future
- fixed bug with window lining intersecting frame when lining_depth < panel_depth
- simplified the way lining is built in ifc - previously it was using 4-6 extrusions, now it's 1-2 which is also better for 2D drawings
2023-02-06 18:44:09 +05:00
Andrej730 a8400ec963 geonodes prototype copyright 2023-02-06 18:44:09 +05:00
Sigma Dimensions d028b52d77 fix visualise_work_schedule_date - issue #2740 2023-02-06 12:35:42 +01:00
Sigma Dimensions 65990255e8 Fix issue #2740 2023-02-06 12:29:06 +01:00
Sigma Dimensions 3a71b03a9a Fix sequence module test bugs 2023-02-06 12:04:03 +01:00
Dion Moult 99274c2d7a Fix #1806. Changing filling types now also updates the void representation. 2023-02-06 20:28:50 +11:00
Dion Moult e40bbf2525 See #1806. Typed fillings now share the same representation for their openings. 2023-02-06 17:01:29 +11:00
Dion Moult 38c6378315 See #1806. New fillings inherit their voids from existing occurrences if possible. 2023-02-06 14:40:59 +11:00
Dion Moult c050ca1037 Fix #2736. Increase tolerance for HLR rendering to prevent "see through" objects in drawings. 2023-02-06 13:42:37 +11:00
Thomas Krijnen 9813dda778 Express rules: test case for instance comparison 2023-02-05 13:08:55 +01:00
Thomas Krijnen 6b7aeb90c7 Express rules: allow comparison of instances to instances and values 2023-02-05 13:08:55 +01:00
Dion Moult 3cb29e1344 Fix unintuitive UI where objects had to be visible for the operation to run. 2023-02-05 22:27:56 +11:00
Dion Moult 4d4961a490 Close #2622. IfcCSV now supports ODS and XLSX formats for export. 2023-02-05 18:53:16 +11:00
Dion Moult ccd7db06f8 Fix #2611. Address multiple situations in the UI where the users could create invalid material data without an indication that it is invalid. 2023-02-05 17:10:25 +11:00
Dion Moult 77234706b0 Assigning a profile set auto creates profiles if none exist to prevent invalid data. 2023-02-05 15:29:54 +11:00
Einar Raknes 9f399b34fb Rename panel from IFC Construction Type to IFC Type
As discussed here: https://community.osarch.org/discussion/1332/blenderbim-ifc-construction-type-ifcbuiltelementtype-confusion
2023-02-05 12:18:17 +11:00
Dion Moult dc77a798b5 Assigning a layer set for the first time prefills with a layer to prevent invalid data. 2023-02-04 22:14:33 +11:00
Dion Moult 207093fe99 Fix regression where changing assigned types didn't update the materials. 2023-02-04 22:12:28 +11:00
Dion Moult 42c4a68108 Fix bug where unnamed profiles clogged up the material profile settings. 2023-02-04 16:20:52 +11:00
Dion Moult a7cc58fb50 Update libraries to use Plan/Body/PLAN_VIEW instead of annotations. 2023-02-04 14:09:35 +11:00
Dion Moult 6bab10d2ac Minor fix. 2023-02-04 12:51:01 +11:00
Thomas Krijnen c4b77c2a07 Recompile rules 2023-02-03 22:22:40 +01:00
Thomas Krijnen 66d0627035 Property names test case 2023-02-03 21:18:06 +01:00
Thomas Krijnen 3f4417c9f2 Window lining test case 2023-02-03 21:17:48 +01:00
Thomas Krijnen 5526bed4c3 Express rules: allow indexing in sets 2023-02-03 21:17:08 +01:00
Thomas Krijnen 078bf8646a Express rules: enclose rhs of not in parens when needed 2023-02-03 21:10:34 +01:00
Dion Moult 6adbcdd8e1 Fix #2472. BREAKING CHANGE. Annotations are now drawn in addition to body views, not in lieu of. 2023-02-03 21:31:15 +11:00
Dion Moult b4d633a34d Fix #2735. 2023-02-03 21:28:36 +11:00
Dion Moult e1e4380fc7 Fix 3 bugs related to representations:
* Bug when switching representations when active object not selected.
 * Bug when switching to a non MODEL_VIEW body representation would load the MODEL_VIEW one instead all the time.
 * Add support for plan body representations.
2023-02-03 21:27:25 +11:00
Dion Moult 1ed7b21ab0 Fix #1496. Mirrored elements have their placements correctly synced. 2023-02-03 15:53:21 +11:00
Dion Moult 158a4c5e75 Fix bug where IFC2X3 fallback styles couldn't be assigned. 2023-02-03 13:21:23 +11:00
Dion Moult f72d48aab5 Fix bug where calendar caching meant invalid duration calculations if you edited your calendar after a date calculation. 2023-02-03 10:06:55 +11:00
Dion Moult be26a77ecb Support times specified as ISO strings too in date utils, not just datetimes. 2023-02-02 23:01:49 +11:00
Dion Moult 7c275a99a2 New utility functions for automatic local to global elevation conversions and easier unit conversions 2023-02-02 23:01:12 +11:00
Dion Moult f77d2f449d Close #2451. Implement georeferenced elevations in drawings. 2023-02-02 22:55:45 +11:00
Dion Moult 18ba805a15 Fix silly bug. 2023-02-02 21:36:13 +11:00
Dion Moult a5adf0021f Fix #2599. Unassigning materials now also removes the Blender material. 2023-02-02 18:41:07 +11:00
Dion Moult 7d944255d0 Fix bug where you could unassign a material usage and create an invalid parametric occurrence 2023-02-02 18:26:14 +11:00
Dion Moult b984a77862 IfcFM parser and writer is now easier to override for custom FM requirements 2023-02-02 14:29:48 +11:00
Dion Moult d69aa20802 Fix #2620. You can now run patches from models in memory. 2023-02-01 19:29:35 +11:00
Dion Moult 7e16cb797f See #1848. Some straggling refactoring for resource data. 2023-02-01 17:37:59 +11:00
Dion Moult b3c7971ea9 Purge all data classes from API. 2023-02-01 15:44:08 +11:00
Dion Moult a778b98fdb Fix #1848. Purge remaining references to API data classes. 2023-02-01 15:41:21 +11:00
Dion Moult 4efb80efe4 See #1848. Refactor structural data class. 2023-02-01 14:54:42 +11:00
Sigma Dimensions cfaacf8650 Ifcopenshell api usecase to unassign object nesting 2023-01-31 18:59:33 +01:00
Sigma Dimensions 60da4cb87b BBIM: Refactor activate drawing view 2023-01-31 18:42:18 +01:00
Andrej730 db6207db6c prevent flickering in profile manager thumbnails 2023-01-31 14:48:26 +05:00
Dion Moult 9b4568c881 Minor fix 2023-01-31 20:40:32 +11:00
Dion Moult cd132d4fe9 See #1848. Refactor sequence data class. 2023-01-31 20:38:03 +11:00
Andrej730 f01900bdb1 Profile manager thumnails (#2568) 2023-01-31 13:55:50 +05:00
Dion Moult 0fddd243c2 See #1848. Refactor resource data class. 2023-01-31 18:30:26 +11:00
Dion Moult 1066e5e0a7 See #1848. Refactor layer data class. 2023-01-31 17:35:54 +11:00
Dion Moult 7e0b1b9cbd See #1848. Refactor group data class. Add support for multiple subgroup relationships. 2023-01-31 15:35:14 +11:00
Dion Moult 95e924a5bc Fix #2206. Bug where removing a cost item with active data created an error. 2023-01-31 14:33:29 +11:00
Dion Moult f9cfd17303 Fix #2251. Fix #2603. Bug where annotations don't show because redeclaration of built-in glsl variables is not allowed. 2023-01-31 11:04:23 +11:00
Dion Moult 9f37f73e52 Fix #2585. Bug where geometry could randomly get corrupted. 2023-01-31 10:54:07 +11:00
Andrej730 9acd2043d7 Window/Stair types added as presets in type manager 2023-01-30 15:31:50 +05:00
Dion Moult ab6159f173 See #1848. Refactor cost data class. 2023-01-30 20:53:17 +11:00
Andrej730 f9bff64f0d ifc geonodes modifier prototype 2023-01-30 13:45:52 +05:00
Andrej730 978f362073 More consistent default and current units for stair and window modifiers 2023-01-30 12:44:11 +05:00
Dion Moult 7a185e7f7c See #1848. Refactor constraint data class. 2023-01-30 11:47:02 +11:00
Dion Moult 044cd6e97b See #1848. Refactor boundary data class. 2023-01-30 11:27:38 +11:00
Dion Moult b939370f2b See #1848. Remove reliance on data class for material module. 2023-01-30 10:20:55 +11:00
Sigma Dimensions 4af0c1c98c BBIM: Fix editing slab representation bug 2023-01-29 21:20:33 +01:00
Dion Moult 181531ada8 Fix bug where circle profiles didn't follow project units. 2023-01-29 21:30:11 +11:00
Thomas Krijnen e92d908063 Delete ifcopenshell_wrapper.py 2023-01-29 10:26:05 +01:00
Dion Moult 686f4a023d Fix #2356. Handle cases where the annotation types get changed to an incompatible object type. 2023-01-29 20:10:23 +11:00
Thomas Krijnen c0c6c23fca Update schema.py 2023-01-29 09:47:46 +01:00
Dion Moult 396fd5520f Fix #2349. Be more defensive on invalid smart annotations. 2023-01-29 15:15:00 +11:00
Dion Moult efc3a692cb Fix #2726. 2023-01-29 12:27:50 +11:00
Ryan Schultz 2902d96690 #2692 - bulk assign and unassign ifcmaterials 2023-01-29 10:05:03 +11:00
Massimo Fabbro 70f35095ff Writing qto tests (#2728)
* Update qto tool tests and fix some bugs

* complete test_run qto tests
2023-01-29 10:03:07 +11:00
Ryan Schultz 87c67abac9 #2652 Removes all IFC data, and converts the file to a simple Blender file 2023-01-29 10:00:43 +11:00
Thomas Krijnen 7df9640807 #2704 properly propagate iterator destructor 2023-01-28 14:21:52 +01:00
Thomas Krijnen 25edc91976 #2704 retain kernel pool to free cache 2023-01-28 14:21:52 +01:00
Thomas Krijnen 2174fda88d #2704 keep track of simple types by iden to free later 2023-01-28 14:21:52 +01:00
Thomas Krijnen 2fc5c6c110 #2704 newobject after decl does not work (duh) 2023-01-28 14:21:52 +01:00
Dion Moult 6a2307308c Fix bug where copying objects with profiles should only share profiles if the profile is named. 2023-01-28 21:51:00 +11:00
Dion Moult 1a05fae826 Fix #2426. bug where unrelated objects would get drawing properties by accident. 2023-01-28 14:27:47 +11:00
Andrej730 cce27d73fd Fixed ifc window bugs
1) The bug occured if you would try to remove ifc window modifier and add it back again. Now adding new window checks if window was previously added
2) Second bug occured if you import .ifc project with window and some props were not used before (for example window was without transom), then newly added props would have incorrect units.
2023-01-27 17:44:52 +05:00
Andrej730 87515f3839 Added creating window to Shift+A menu 2023-01-27 16:30:35 +05:00
Dion Moult 24f3918769 Fix #2705. Annotation draw error when splines are outside the zoom level of the screen. 2023-01-27 14:32:41 +11:00
Dion Moult f7af38c863 Fix #2712. 2023-01-27 12:09:17 +11:00
Dion Moult 6c2a4711da Fix bug where annotations were assumed to only be part of one drawing group 2023-01-27 08:38:00 +11:00
Dion Moult 41fdd77bfa Fix #2579. Bug where measurements were considered to be greasepencil strokes when drawing walls. 2023-01-27 08:32:25 +11:00
Dion Moult 9185a51234 Fix #2363. Bug when adding unbuilt schedule to sheet. 2023-01-27 08:22:10 +11:00
Ryan Schultz c5ae86d10b fix bug on Extend IfcBeam: https://community.osarch.org/discussion/1327/blenderbim-bug-on-extend-ifcbeam 2023-01-26 08:31:04 -06:00
Andrej730 74477d0051 Window modifier - removed hardcoded mm units
Related to #2724
2023-01-26 18:29:58 +05:00
Andrej730 cee0ff2074 BIM tool UI black format 2023-01-26 17:14:42 +05:00
Andrej730 85bba9d5f8 Added default blender selection behaviour to BIM Tool
Copied keymap templates from blender source and mentioned them

Related to #2568
2023-01-26 17:14:42 +05:00
Andrej730 8e696cbf02 Added description to some operators with hotkeys 2023-01-26 17:14:42 +05:00
Andrej730 c7d1f5efc0 Changed split hotkey to Shift-K (#2568)
to preserve useful default shift-s hotkey
2023-01-26 17:14:42 +05:00
Andrej730 68bbb4d7a1 Solving interface issues from #2568
1) Added type manager to N-panel. Actually made side-panel and header layout logic more similar.
2) Added interface from sidebar to properties too
2023-01-26 17:14:42 +05:00
Andrej730 b1dd20fef7 Fixed window units in bmesh (#2724) 2023-01-26 14:42:35 +05:00
Thomas Krijnen a701624d7b #2720 add gltf to CD yml 2023-01-26 09:07:53 +01:00
Thomas Krijnen f912be7875 #2720 add gltf to CD yml 2023-01-26 08:59:38 +01:00
Andrej730 04bdb12e79 Window Modifier - added mullions/transoms, removed relative panel dimensions 2023-01-26 12:30:34 +05:00
Dion Moult d69f6c02b6 See #1636. Fix drawing caching when new voids are added or parametric objects updated. 2023-01-26 12:14:45 +11:00
Dion Moult 95c3a57a4d Fix #2722. 2023-01-26 11:11:04 +11:00
Dion Moult 0b6d321d83 Fix #2721. 2023-01-26 11:09:51 +11:00
Dion Moult e0fd3fd90e See #1636. Fix bug where moving an opening didn't update the drawing cache for it's element. 2023-01-26 09:18:08 +11:00
Dion Moult 7686e35858 Fix #2697. 2023-01-25 20:52:43 +11:00
Dion Moult 8eeb8804d4 Handle corrupt geometry caches (e.g. due to crash) by creating a fresh cache. 2023-01-25 17:56:05 +11:00
Dion Moult cb9a7cf5be Fix #2712. Handle deletion of rel services buildings. 2023-01-25 17:42:39 +11:00
Andrej730 54cec30a60 Window modifier - fixed bug in bmesh 2023-01-25 11:15:01 +05:00
Andrej730 9f0ad9be3c Black formatting window modifier 2023-01-25 11:13:41 +05:00
Andrej730 a6271d0936 IFC Window modifier
Added IFC Window in object modifiers tab (works similar way to Ifc Stair)
2023-01-25 11:13:41 +05:00
Andrej730 cf6acd5dd6 ShapeBuilder - added 3d rectangles and polylines support 2023-01-25 11:10:20 +05:00
Andrej730 f8468e66e6 Fixed omitted ifc operators returns 2023-01-25 11:10:20 +05:00
Andrej730 d0cf5f9d0c Fixed ShapeBuilder bug for mirroring IfcExtrudedAreaSolid
Also fixed typo in shape_builder_examples
2023-01-25 11:10:19 +05:00
Dion Moult 2c123fdbfb Bump IfcOpenShell - mainly to fix geometry caching bug 2023-01-25 16:55:05 +11:00
Dion Moult 49b5bbd585 Fix PyPI IfcOpenShell action 2023-01-25 14:08:59 +11:00
Dion Moult bf3063ec00 You can now convert ArchiCAD spaces across multiple stories to Revit rooms 2023-01-25 13:55:38 +11:00
Sigma Dimensions 1e2ac1fe24 Fix IFC Array bug 2023-01-23 22:51:41 +01:00
Sigma Dimensions 9d7145746f Drawing feature tests 2023-01-23 22:06:29 +01:00
Sigma Dimensions 6e7fee5bc8 BBIM: Fix drawing elevation view bug 2023-01-21 12:00:07 +01:00
Sigma Dimensions 9638ae3e77 BBIM: Fix bug error when trying to open a drawing rather than a sheet/schedule 2023-01-21 01:26:26 +01:00
Sigma Dimensions 69cee56b7c BBIM: fix profile joiner for beams & other products 2023-01-21 01:18:06 +01:00
Sigma Dimensions 2257942676 BBIM: When adding doors to a wall, maintain the wall as the active object.
This allows adding multiple doors smoothly.
2023-01-21 00:51:46 +01:00
Sigma Dimensions a5ca7c540f remove useless lines and run quality check black 2023-01-20 21:39:24 +01:00
Sigma Dimensions c9b0a7c3de Attempt to fix selector bug where retrieving material values gets caught in exception 2023-01-20 21:23:40 +01:00
Sigma Dimensions 358d19c883 BBIM: fix bug where task inputs could also be "USERDEFINED" or "NOTDEFINED" 2023-01-20 13:51:08 +01:00
Sigma Dimensions e624d56516 BBIM: improve task bar visual creation 2023-01-20 13:48:14 +01:00
Sigma Dimensions 78a6532615 ifcopenshell: Improve purging for remove_task usecase 2023-01-20 12:58:11 +01:00
Sigma Dimensions 44bb4ac74d BBIM: enable adding task bars visual when creating an animation 2023-01-20 11:34:38 +01:00
Sigma Dimensions f782d784af BBIM: improve task object selection 2023-01-20 11:31:06 +01:00
Sigma Dimensions caf9034839 BBIM: refactor gantt generation operator 2023-01-20 11:26:32 +01:00
Sigma Dimensions 893fd50b85 BBIM: Attempt to fix 3D viewport decoration issue 2023-01-20 10:12:42 +01:00
Sigma Dimensions 7a3e53a9f8 update qto core and qto tools:
- when calculating quantities of an object, assign base qto to object if none exists.
- optimise core and tool functions so it's faster for many selected objects
2023-01-19 21:05:47 +01:00
Dion Moult 07ee62eb91 Add support for editing material set item psets. 2023-01-18 16:40:15 +11:00
Thomas Krijnen b41878e960 #2697 take only a single inverse at a time 2023-01-16 21:29:59 +01:00
Vukas Pajic d9f1cb5525 reassign_class now preserves original STEP ID and GLOBALID - #2701 2023-01-16 13:34:57 +01:00
Vukas Pajic 8110951987 Now support custom attributes in IfcSelector #2649 2023-01-16 08:58:14 +01:00
Vukas Pajic 6b63b5aae7 selector now correctly applies comparison operator. #2643 2023-01-16 08:08:26 +01:00
Martyna Jakubowska e814736e68 Update README.md 2023-01-16 06:15:38 +11:00
Thomas Krijnen 802e3a0ea1 #2688 fix non-planar face triangulation 2023-01-15 14:42:24 +01:00
Massimo Fabbro 4e8a962f60 Minor fix 2023-01-15 11:34:54 +11:00
Massimo Fabbro e20d4c93b7 Delete unuseful qto tool function 2023-01-15 11:34:54 +11:00
Massimo Fabbro 1be76c8aaa Fix little bug 2023-01-15 11:34:18 +11:00
Andrea Ghensi a4566797fe fix: ifcclash bcfxml export 2023-01-15 07:23:42 +11:00
Kristoffer Andersen 4ee3458ff9 Run linux/osx builds with fewer cpus 2023-01-14 17:23:44 +01:00
Sigma Dimensions f86de533f8 BBIM: Feature to select an annotation's assigned object 2023-01-13 16:13:57 +01:00
Sigma Dimensions 693831dca3 BBIM: replace "guess_all_quantities" operator in the UI 2023-01-13 15:00:17 +01:00
Kristoffer Andersen 7500919b5d Set to fixed daily release
Remove association to every completed CI workflow. High frequency of releases makes it better to keep this at a fixed interval given it's so compute intensive
2023-01-13 14:59:06 +01:00
Sigma Dimensions e37b6fa8a2 BBIM: Replace "GuessAllQuantities" with "CalculateQuantities in QTO subpanel, and also re-calculate for all selected objects 2023-01-13 14:57:36 +01:00
Thomas Krijnen 9de9645229 #2665 increase halfspace tolerance comparison 2023-01-13 13:56:38 +01:00
Thomas Krijnen 373d664251 #2361 2023-01-13 12:50:18 +01:00
Dion Moult 6ab912a049 Fix invalid IFC context dimensionality 2023-01-13 22:35:23 +11:00
Dion Moult 9b9c900340 You can now manage material set psets from the UI 2023-01-13 22:35:23 +11:00
Thomas Krijnen a1ac820050 #2685 Recompile rules 2023-01-13 12:12:32 +01:00
Thomas Krijnen e812a886dc #2685 also implement __mul__ on express_set 2023-01-13 12:12:32 +01:00
Thomas Krijnen b759e22875 #2685 assoc material test cases 2023-01-13 12:12:32 +01:00
Thomas Krijnen 93e0babe5a #1785 disable hdf5 brep softlinking 2023-01-13 12:10:57 +01:00
Kristoffer Andersen 7d021fb7a4 reduce number of parallel tasks 2023-01-13 08:03:16 +01:00
Kristoffer Andersen b2cb8ffd8f Update ci-ifcopenshell-conda-daily.yml 2023-01-13 07:56:24 +01:00
Kristoffer Andersen 25a5651e50 Update ci-ifcopenshell-conda-daily.yml 2023-01-13 07:53:53 +01:00
Thomas Krijnen b301eb6520 Update boolean_utils.cpp 2023-01-12 13:07:40 +01:00
Thomas Krijnen 9f90d37401 Delete .travis.yml 2023-01-12 12:41:28 +01:00
Dion Moult ba7741fef5 Fix #2285. You can now get all the elements in a presentation layer. 2023-01-12 12:28:09 +11:00
Thomas Krijnen d1a40d129f #2685 Recompile rules 2023-01-11 13:38:12 +01:00
Thomas Krijnen 791076df2d invalid escape sequence 2023-01-11 13:20:44 +01:00
Thomas Krijnen 608952a4dd #2685 WR test cases for local placement / indeterminate 2023-01-11 12:50:30 +01:00
Thomas Krijnen e64047c511 WR test cases for rigid op / typeof() of simple types 2023-01-11 12:49:47 +01:00
Thomas Krijnen fc3c6599c7 WR test cases for MLS / usedin() 2023-01-11 12:48:53 +01:00
Thomas Krijnen 2336f299f7 Implement typeof() on simple types 2023-01-11 12:47:40 +01:00
Thomas Krijnen 4a71ab9631 #2685 Don't raise issues on WR evaluating to indeterminate 2023-01-11 12:47:13 +01:00
Dion Moult ac3c4cac89 Flange thickness is thickness at edge. 2023-01-11 09:33:20 +01:00
Dion Moult 2be1baab32 I-shape angle fix, fix incorrect flange thickness, and clean up ifdef. 2023-01-11 09:33:20 +01:00
Dion Moult 3e42fdb883 Minor fix 2023-01-11 09:33:20 +01:00
Dion Moult ed37d11002 Fix #2631. Add support for flange edge radius and flange slope for I-shapes. 2023-01-11 09:33:20 +01:00
Dion Moult 4cf896f564 Fix bug where half space booleans didn't show in the right spot due to units 2023-01-11 17:05:02 +11:00
Dion Moult 7e151799b0 Fix #2650. IFC selector only operates on visible objects. 2023-01-11 15:20:58 +11:00
Dion Moult 597b2bb0a8 Fix #2596. Bug with IFC4X3 UI errors as docs couldn't be fetched. 2023-01-10 12:14:10 +11:00
Dion Moult ddc0f7e652 Theme improvements to IfcOpenShell docs 2023-01-10 11:43:20 +11:00
Jesusbill 4845d191f4 Minor fixes to docs 2023-01-10 01:06:49 +01:00
Dion Moult da84cc5925 Add documentation for IfcPatch and all recipes 2023-01-10 10:18:13 +11:00
Dion Moult c8ba96cde8 Make syntax highlighting explicit in docs 2023-01-10 10:16:28 +11:00
Dion Moult 66e067d1ce Remove IfcMax from documentation as it's no longer relevant 2023-01-10 06:38:53 +11:00
Dion Moult 9d39760f6f Add IfcClash to docs 2023-01-10 06:38:53 +11:00
Sigma Dimensions 8aa4934d92 BBIM: Move out Search/Selection sub-panels from "IFC Collaboration" to "IFC Selection" 2023-01-09 14:49:59 +01:00
Dion Moult f848340124 Fix #2681. Fix 90 degree rotation on walls. 2023-01-09 21:55:22 +11:00
Dion Moult b699f55d9c Deleting a spatial or aggregated element now also removes its collection 2023-01-09 16:46:51 +11:00
Dion Moult 745709c56a Handle orphaned spatial elements when loading projects 2023-01-09 16:46:23 +11:00
Dion Moult 0c4c8ad9bc Fix #1012. Half complete example documentation for the IFC Project panel.
Incredibly incomplete, but serves as an example of how reference user-based documentation should be structured.
2023-01-09 15:24:50 +11:00
Ryan Schultz 3ce010de77 added IfcCivilElement to entity_to_type_map_4.json 2023-01-09 12:14:11 +11:00
Dion Moult dd600dd20f Fix #2024. Boolean diagram included in IfcOpenShell docs. 2023-01-09 11:50:49 +11:00
Dion Moult 360b9956c0 Fix failing tests from refactor which I really should've done before the release 2023-01-09 11:00:46 +11:00
Andrej730 1888048d4d Moved ShapeBuilder to separate module #2679
Moved ShapeBuilder to separate module - now `mathutils` will be only required if you're actually using ShapeBuilder (related to #2679)
2023-01-08 19:47:18 +05:00
Andrej730 4ab6d648c9 sverchok_modifier - minor refactor 2023-01-08 19:47:18 +05:00
Andrej730 c29048ecfb Furniture library bug fixes 2023-01-08 19:47:18 +05:00
Dion Moult 0294c4e02c Fix #2678. Critical typo bug meant that units were fixed to metric millimeters. 2023-01-08 12:58:53 +11:00
Dion Moult 3cfcd847cf Fix #2677. Docs now generate in a reasonable time and exclude generated IFC modules. 2023-01-08 11:12:54 +11:00
Massimo Fabbro 694b21a0e1 Delete unuseful functions and improve speed (#2672)
* Delete unuseful functions and improve speed

* Delete active object function, cleaning around and improve performance

* Better functions names and prevent user defined qto use
2023-01-07 18:11:46 +01:00
Dion Moult 73d43649a5 Link to latest IfcSverchok release 2023-01-07 17:08:46 +11:00
Dion Moult 55036653df Update IfcSverchok loading based on latest Sverchok master 2023-01-07 13:04:30 +11:00
Dion Moult 66ecb92cc2 Minor UX improvements to library name and Sverchok UI 2023-01-07 12:00:22 +11:00
Andrej730 23c7bc3f56 Added ShapeBuilder class and library for non structural assets (
`ShapeBuilder` class is used to programmatically create 2d and 3d ifc shapes and representations. It's inspired by the way OpenSCAD language is designed - the goal was to create a readable and easy way to create new shapes. The class can be imported from `ifcopenshell.util.representation` module.

Examples of things created with `ShapeBuilder` can be found in `shape_builder_examples.py` or `generate_furniture_library.py` / `Non_structural_assets_library.ifc`.

Also added ifc library of non structual assets (furniture etc) - `Non_structural_assets_library.ifc`. All assets are using most common dimensions for them - it makes it good for prototyping. Related to https://community.osarch.org/discussion/1192
2023-01-06 16:35:55 +05:00
Andrej730 74fee24004 Update ifc geometry on sverchok update 2023-01-06 12:23:54 +05:00
Dion Moult 618ecccb7b Fix #2428. Document minimum system support. 2023-01-06 17:11:51 +11:00
Dion Moult f818fc659a Bundle ifcopenshell for Python 3.11 on PyPI. See #2551. 2023-01-06 16:37:50 +11:00
Dion Moult 4afada48a6 Fix #2440. Fix #2439. Describe how to access advanced mode when dealing with large models. 2023-01-06 14:01:42 +11:00
Dion Moult 59451cb90c Fix #2664. Package with latest IfcOpenShell build. See #2670. 2023-01-06 11:16:29 +11:00
Sigma Dimensions 53bf746227 BBIM: Fixes for:
- Task Time attributes
- Fix typo animation time calculation
2023-01-05 18:43:50 +01:00
Sigma Dimensions cd6f995471 BBIM: Disable "Create animation" buttons when no start dates/end dates are given 2023-01-05 18:36:22 +01:00
Dion Moult 839a00c2a8 Run black on validation, lazy-load _pytest.assertion so that it isn't a hard dependency for non-express rule validation. 2023-01-05 20:54:17 +11:00
Dion Moult 9208781b8f Bump IfcOpenShell version 2023-01-05 18:38:32 +11:00
Dion Moult 25af42f4cb Fix circular import of json_logger when doing import ifcopenshell.validate 2023-01-05 18:37:14 +11:00
Dion Moult d386a884aa You can now purge properties explicitly instead of setting them to None 2023-01-05 17:37:40 +11:00
Dion Moult cb92be2b08 No need to specify SI unit names as they can be derived from the unit type 2023-01-05 17:37:40 +11:00
Martyna Jakubowska 70b7f1424f Resolved Code Review 2023-01-05 17:37:40 +11:00
Martyna Jakubowska 56858540b8 Update README.md 2023-01-05 17:37:40 +11:00
Martyna Jakubowska 0331a21280 Update README.md 2023-01-05 17:37:40 +11:00
Martyna Jakubowska 9f53d724d1 Update README.md 2023-01-05 17:37:40 +11:00
martinaCodes c114f09f9a Added example model and a corresponding description 2023-01-05 17:37:40 +11:00
martinaCodes 1a2183ef71 Bug fixes in create_entity 2023-01-05 17:37:40 +11:00
martinaCodes 0ab0213dea Bug fixes and changed behaviour of create_entity, so it creates an entity pr. each representation 2023-01-05 17:37:40 +11:00
Martyna Jakubowska 421f861e46 Updated README 2023-01-05 17:37:38 +11:00
martinaCodes 6e5f2f3f8d Updated by_query and removed print statements 2023-01-05 17:36:33 +11:00
martinaCodes 05633cd657 Updated following nodes to work with the current workflow: add_pset, by_guid, get_attribute, get_property, read_entity. Added tooltips and other minor fixes 2023-01-05 17:36:33 +11:00
Martyna Jakubowska 41ae350f33 Create README.md 2023-01-05 17:36:33 +11:00
martinaCodes 8a26f30506 Important rework of handling multiple/nested items in bmesh_to_ifc, create_entity and sverchok_to_ifc nodes. Formatting and other minor fixes. 2023-01-05 17:36:33 +11:00
martinaCodes 4ae7643874 cleaned print statements etc 2023-01-05 17:36:33 +11:00
martinaCodes b09068e1f4 write_file added logic that ensures proper model hierarchy 2023-01-05 17:36:33 +11:00
martinaCodes 87dbaa39d8 bmesh_to_ifc now creates separate representations for each distinct bmesh geometry 2023-01-05 17:36:33 +11:00
martinaCodes d193e8a3eb major changes primarily to file creation/saving logic.
Bug fix in create entity.
Other..
this commit is way to big and unstructured.
2023-01-05 17:36:33 +11:00
martinaCodes f9e766138c new pick_ifc_class node + minor fixes. Add_spatial_element is WIP 2023-01-05 17:36:33 +11:00
martinaCodes 36899d362e added blender panel for saving file + minor fix in create_entity 2023-01-05 17:36:33 +11:00
martinaCodes fd789178c1 Add_spatial_element node updated 2023-01-05 17:36:33 +11:00
martinaCodes a0757851c8 Add_spacial_element node updated to work with multiple elements. V0.1 - still a bit buggy. 2023-01-05 17:36:33 +11:00
martinaCodes 039727cb19 added entity locations 2023-01-05 17:36:33 +11:00
martinaCodes b5133f1c41 write_file node updated 2023-01-05 17:36:33 +11:00
martinaCodes ab218b842a create_shape node updated + minor changes 2023-01-05 17:36:33 +11:00
martinaCodes 37aa17fcf3 sverchok_to_ifc node added + works for multiple geometries. Parent contexts also get deleted if not used. 2023-01-05 17:36:33 +11:00
martinaCodes 6542fc7db3 updated by_type to current workflow + added sv_to_ifc 2023-01-05 17:36:33 +11:00
martinaCodes c8c690afc2 changes
1) pasing ID references
2) bugs in create_entities, where number of representations couldn't be updated
3) by_id node updated to current workflow
... other small fixes
2023-01-05 17:36:33 +11:00
martinaCodes 5d569dea30 fixed create_entity and minor changes to bmesh_to_ifc 2023-01-05 17:36:33 +11:00
martinaCodes 38031a02bc new nodes, and changes to create_entity2, but not working yet 2023-01-05 17:36:33 +11:00
martinaCodes 25460661ab created new singleton class SvIfcStore, created new 'create_entity2' node 2023-01-05 17:36:33 +11:00
martinaCodes 3684be1936 fixed api_WIP, minor cleanup in other nodes 2023-01-05 17:36:33 +11:00
martinaCodes 0ada921ad8 fixed a typo-bug 2023-01-05 17:36:33 +11:00
martinaCodes 8fb285596a added new nodes to node index 2023-01-05 17:36:33 +11:00
martinaCodes ba4130d395 Added new nodes: api_WIP, bmesh_to_ifc, create_project and quick_project_setup
Modified nodes: api, create_entity
2023-01-05 17:36:33 +11:00
Sigma Dimensions f818446e7e BBIM fix: prevent "guess_all_quantities" operator from showing up on Property Sets 2023-01-04 13:59:00 +01:00
Dion Moult 82ac895bbb Write docs for void API module 2023-01-04 16:10:13 +11:00
Dion Moult fd8774718e Write docs for unit API module 2023-01-04 16:10:13 +11:00
Dion Moult 90d4d5afda Write docs for type API module 2023-01-04 16:10:12 +11:00
Dion Moult 92623b98e2 Write docs for system API module 2023-01-04 16:10:12 +11:00
Dion Moult b86818ead3 Write docs for style API module 2023-01-04 16:10:12 +11:00
Dion Moult 9e45435024 Documentation example fixes where I forgot to give things with representations a placement 2023-01-04 16:10:12 +11:00
Sigma Dimensions 981b6cd65f Various 4D improvements:
- refactor work schedule visualisation operator
- Fix text handler
- Improve durations UI for task times (proposal to replicate for all durations)
- Simplify durations ( P32H as P4D or P1D8H)
- Implement years/months in various datetime calculations
- Feature to customise animation colors per construction task type
- Feature to add Visual task bars
- Feature to customise Visual task bar material colors
- Move helper functions from blenderbim.bim.module.sequence to ifcopenshell.util.sequence
2023-01-04 02:08:52 +01:00
Dion Moult 0c77fb81ce Write documentation for structural API module 2023-01-03 17:32:08 +11:00
Dion Moult e53a9cd66c Write documentation for spatial API module 2023-01-03 17:31:56 +11:00
Dion Moult 2805109cef Write documentation for sequence API module 2023-01-03 17:31:48 +11:00
Dion Moult 6594445fa3 Add new code example for creating a work schedule 2023-01-03 17:31:23 +11:00
Massimo Fabbro bac6c62073 Finish mapping quantities (see #2533) (#2661)
* Finish Qto_SignBaseQuantities

* Finish Qto_RailBaseQuantities

* Finish Qto_PitorialSignQuantities

* Finish Qto_JunctionBoxBaseQuantities

* Finish Qto_ArealStratumBaseQuantities

* Finish Qto_SiteBaseQuantities

* Finish Qto_RoofBaseQuantities

* Finish Qto_RoofBaseQuantities

* Finish Qto_ChimneyBaseQuantities

* Finish Qto_EarthworksCutBaseQuantities

* Finish Qto_KerbBaseQuantities

* Finish Qto_PavementBaseQuantities

* Finish Qto_RampFlightBaseQuantities

* Finish Qto_SurfaceFeatureBaseQuantities

* Finish Qto_StairFlightBaseQuantities

* Finish Qto_ConstructionMaterialResourceBaseQuantities

* Finish Qto_DistributionChamberElementBaseQuantities

* Finish Qto_CourseBaseQuantities

* Finish Qto_RailingBaseQuantities

* Finish Qto_SleeperBaseQuantities

* Finish Qto_TankSurfaceQuantities

* Finish Qto_BuildingElementProxy

* Finish Qto_MemberBaseQuantities

* Finish Qto_BodyGeometryValidation

* Finish Qto_VolumetricStratumBaseQuantities

* Finish Qto_SpatialZoneBaseQuantities

* Finish Qto_ReinforcingElementBaseQuantities

* Finish update calculate all quantities button with new calculating functions
2022-12-30 21:33:18 +01:00
Thomas Krijnen 6180d73f75 Fix build-all collada compile on gcc 9.4.0 2022-12-28 13:33:16 +01:00
Sigma Dimensions 599c391407 code clean up for sequence module 2022-12-26 22:48:51 +01:00
Sigma Dimensions 1f18c5ab82 features to guess schedule date range and setup default task columns, and code clean up 2022-12-26 18:30:25 +01:00
Sigma Dimensions 2bb4e645b2 Fix: When counting working days, consider if calendar is applicable 2022-12-26 17:19:57 +01:00
Sigma Dimensions 5326e21fef 2 Fixes for 1 commit:
- Consider all tasks descendants when deriving task earliest or latest dates
2022-12-26 17:18:33 +01:00
Sigma Dimensions 891b49ff6f BBIM: feature to display total task Assignements 2022-12-26 13:38:54 +01:00
Thomas Krijnen 0f9c84c1ce Feature: express rules (#2662)
* temp reasonable state, missing rule_head contents

* better state, with init() and rule_id, but some missing parameters

* performance; embed root in dict; fix lookup

* Add ast_utils

* Fixes related to listnode and typo

* First steps with code gen

* Finalize first steps towards working code generation

* Backwards compat

* Rule execution, error formatting, test cases

* Where rule: support indexing, more expressions, test plane angle measure

* positive length measure test cases

* Venture into entity rules, test actor role

* Fixed for not unary op and address test cases

* Test group qualifier and air terminal type

* typeof() implementation and test annotation curve occ

* Flexible handling of expression, type set intersection, IfcAnnotationSurface test cases

* Functions, derived attrs, fix branch order, allow to terminate branches, apply -1 to index

* Implement express query(), test cases for 2x3 bspline curve

* Function args, if-else, repeat, entity instance construction, cshape test cases

* Multiple function call arguments and other small but influential changes. IfcDotProject() almost working except for variable case

* Make lowercase and fix assignment to qualified lhs

* Entity instance schema without file, aggregate assignment workaround, range fix, lowercase instance locals, extruded area direction test cases

* Enumeration item handling, query() robustness, arbitrary profile test cases

* Empty aggregate_initializer, xor and instance equality, nested expression fix in IfcCrossProduct, axis2-3d test cases

* Numeric stable sort with indices greater then 10, get ast node parent, redeclared derived support, nested expression robustness, define entity functions, case statements, xor, mod, bool literals, nvl, unknown, conversion based unit test cases

* Safeguard for schema name case norm, case norm query variable_id

* free instance comparison, supertype serialization fix, include inherited attributes in locals, proper elif-else in case stmt, loindex, shape rep test cases

* Union operator on set, retain general_aggr_types in parse tree, test cases for property set

* Escape stmt, rule locals and statements

* Return calculated values for redeclared derived attributes

* fix for rules without stmt, add derived and inverse attributes to locals, filter unused locals, wrap exists() arg with lambda to catch indexerror, support repeated aggr init element, typeof() none check, enum namespace uppercase

* Regen 2x3 rules

* Rule test filter only on basename

* Update fixtures for compliance with full body of rules

* Add rule support to ifcopenshell.validate

* Implement usedin() function, test cases for IfcWallSC MLS

* blength

* Run code generation on all schemas

* Try to eliminate runtime pyparsing dep

* Try to eliminate runtime pyparsing dep
2022-12-26 11:29:32 +01:00
Sigma Dimensions 2ccf25f7eb Display Scheduled Resource Usage as a property within rersource tree 2022-12-26 07:04:11 +01:00
Sigma Dimensions 082a326e67 Enable displaying number of resources used by a task 2022-12-26 06:16:19 +01:00
Sigma Dimensions d33a7244a3 Task Output selection improvements - allow recursive nesting and add checkbox to toggle between nested and non-nested 2022-12-26 05:17:56 +01:00
Thomas Krijnen bdb352ab22 Update ci-py-only.yml 2022-12-25 17:36:31 +01:00
Thomas Krijnen 04fb7cdf9c Update ci.yml 2022-12-25 17:36:18 +01:00
Andrej730 16de2f2e7e Added mention of sverchok's copyrights 2022-12-23 09:24:26 +05:00
Andrej730 0b6c8fe83e Added base for ifc sverchok modifier
It's located in "Modifiers" section of the properties (the same way as IFC Array or IFC Stair).
It requires Sverchok addon to be enabled (it's lazy importing it when it's needed, so there is no new constant dependency).

What you can now do with it:
1) Add sverchok graphs to this modifier and store simple data from sverchok in IFC ("Update data from sverchok). The "output" node of the sverchok graph has to be type of "Viewer Draw" and it's name should start with "ifcoutput" (no case-sensitive).
2) Import/export json of sverchok graphs.
2022-12-21 20:10:39 +05:00
Andrej730 d11959d303 Removed deprecated angle annotations operator
As it's currently completely replace with new more intuitive operator.
2022-12-19 20:13:59 +05:00
Andrej730 2bd5f3bbb3 Fixed annotations angle operator svg rendering bug
Fixed bug where the angle was drawn in svg only for the first two edges of the curve.
Now it takes into account all edges - first angle = edge0 + edge1, second angle = edge1 + edge2 etc.
2022-12-19 20:07:29 +05:00
CyrilWaechter cabc91dd5e Allow to write to unexisting directory
`ifcopenshell.write("/unexisting/path/model.ifc")` was failing without
throwing an error. It now works and a test ensure it works.
2022-12-19 01:44:40 +01:00
Sigma Dimensions 88c9f15320 fix library import for date utils 2022-12-18 04:34:20 +01:00
Sigma Dimensions b206e90097 Proposal to use parent productivity to calculate resource work. 2022-12-18 04:17:17 +01:00
Sigma Dimensions 73d3e9589c BBIM: forgotten commit for "ScheduleDuration" formatting 2022-12-18 03:56:10 +01:00
Sigma Dimensions 84a07c3fdf fix typo for resource_work calculation 2022-12-18 03:41:13 +01:00
Sigma Dimensions ea1c306733 fix offset date calculation when finish date lies outside of calendar range 2022-12-18 03:34:20 +01:00
Dion Moult 30dc13f1a7 Add support for loading IFCs with aggregated types 2022-12-17 20:48:05 +11:00
Dion Moult 9b3b06adf3 Write documentation for root API module 2022-12-16 15:29:50 +11:00
Dion Moult 436482532d Write documentation for resource API module 2022-12-16 15:07:02 +11:00
Dion Moult d2fee728f2 Write documentation for pset_template API module 2022-12-16 11:22:46 +11:00
Dion Moult 0ccea3cef8 Add documentation for pset API module 2022-12-15 16:02:27 +11:00
Dion Moult 241406f676 Consolidate standard "clean environment" instructions in docs 2022-12-14 23:13:01 +11:00
Dion Moult a89c061b58 Write docs for project API module 2022-12-14 17:28:34 +11:00
Dion Moult 1211c153d9 Revert detailed SPF comments in code example
Sorry I find these really hard to read an intimidating for new users.
2022-12-14 17:28:12 +11:00
Dion Moult a5bdcf488b Write docs for profile API module 2022-12-14 16:49:06 +11:00
Dion Moult a5a1ef2e8e Write docs for owner API module 2022-12-14 15:58:53 +11:00
Ryan Schultz 05cd11ae12 Added some troubleshooting measures to determine if another plugin is interfering with BB. 2022-12-13 08:12:21 -06:00
fbpyr 307f9a2322 bump python version
bumping python version, so it works with our ubuntu latest image and `actions/setup-python@v2`
2022-12-13 21:35:42 +11:00
CyrilWaechter 3d05dc234a Ignore mypy cache, swig and compiled files 2022-12-11 22:49:44 +01:00
CyrilWaechter 1f87165601 Remove bloat line 2022-12-11 22:46:05 +01:00
CyrilWaechter a513e1b56a Remove duplicate line 2022-12-10 19:45:17 +01:00
CyrilWaechter ec0c8f509e Move boundary origin to space origin
Ensure that boundary origin is same as space origin to assign correct
geometry into IFC.
2022-12-10 19:44:28 +01:00
Ryan Schultz a23bac6ecb where to look to see if a dependency has changed. 2022-12-09 10:31:57 -06:00
Kristoffer Andersen 569c19abca Merge pull request #2642 from CyrilWaechter/v0.7.0
Remove unecessary line which make build failing
2022-12-09 10:52:01 +01:00
CyrilWaechter dfeac601e4 Remove unecessary line which make build failing 2022-12-09 09:44:19 +01:00
Dion Moult 53cecb3546 Write documentation for the nest API module. 2022-12-07 18:56:44 +11:00
Dion Moult cf87852d9c Add API documentation for the material module 2022-12-07 17:30:08 +11:00
Dion Moult 7da3d9ee70 Add docs for library API module 2022-12-07 12:20:29 +11:00
Dion Moult 9650bbb5ee Add docs to layer API 2022-12-07 08:59:24 +11:00
Dion Moult 45953c6b49 Add API documentation for group module 2022-12-06 16:42:47 +11:00
Dion Moult b34caa1b5f Add documentation for grid API module 2022-12-05 17:10:22 +11:00
Ryan Schultz ea8433b187 Added more examples to the Code Examples page 2022-12-05 15:44:38 +11:00
Andrej730 390f23a30c Added ReloadSelectedIfcFile operator
Added ReloadSelectedIfcFile operator and added it to IFC Quality Control -> IFC Debug, it's useful when you're debugging and doing a lot of iterations on the same file.
2022-12-05 14:59:58 +11:00
Massimo Fabbro c8ba2b53c9 Mapping quantities (see #2533) (#2627)
* Finish mapping Qto_PileBaseQuantities

* Finish mapping IfcPipeSegmentBaseQuantities

* Finish mapping IfcVehicleBaseQuantities

* Finish mapping Qto_OpeningElementBaseQuantities

* Finish mapping Qto_PlateBaseQuantities

* Finish Qto_MarineFacilityBaseQuantities

* Finish Qto_FacilityPartBaseQuantities

* Finish Qto_ProjectionElementBaseQuantities

* Better syntax
2022-12-02 18:19:43 +01:00
Thomas Krijnen dbbbb52e9e #2624 2022-12-02 13:43:44 +01:00
Dion Moult 052d6e2254 Add API docs for georeferencing module 2022-11-28 10:30:51 +11:00
Massimo Fabbro b05c711fb9 Merge pull request #2619 from maxfb87/mapping_quantities
Finish mapping quantities Qto_SpaceBaseQuantities (see #2533)
2022-11-27 08:17:32 +01:00
CyrilWaechter eb0322759c Allow ifcpatch to work with .ifcZIP | .ifcXML
Closes #2350
2022-11-26 05:37:00 +01:00
CyrilWaechter 25a7a95284 Allow to write .ifcZIP | .ifcXML #2350
Transparently write any .ifc | .ifcXML | .ifcZIP formatted file
 with any extension :
- by guessing format from its extension
(eg. .zip | .ifczip | .ifcZIP | .ifcXML | .ifcxml | .IFC | .ifc)
zipped file can file can be of any supported format
- by specifying a format
- by specifying if it should be zipped
2022-11-26 05:19:01 +01:00
Ryan Schultz 8ec1b7bb3e misspellings with outer_boundary 2022-11-25 12:29:00 -06:00
CyrilWaechter 5f094f6a95 Fix IfcSystem assignment bug introduced in f0b1935
Fixing my own bug…
Note : always run all test before pushing not only the one which used to fail…
2022-11-25 19:01:07 +01:00
CyrilWaechter f0b1935861 Add system assignment check
@aothms Is there a way to check against IFC formal propositions ?
Example for [IfcZone](http://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcZone.htm#5.4.3.82.4-Formal-propositions)
@Moult Should I move is_assignable to an util ?
2022-11-25 18:52:58 +01:00
Massimo Fabbro 2540ba3467 Finish mapping quantities Qto_SpaceBaseQuantities 2022-11-25 17:22:13 +01:00
CyrilWaechter 88093728a7 Add IfcSpatialElementType to assignable classes
Required for IFC4+ to assign IfcSpaceType and IfcSpatialZoneType
Solves #2615
2022-11-25 15:55:32 +01:00
Thomas Krijnen af6734d7b0 IfcOpenShell WASM module build script (#2617) 2022-11-25 13:16:36 +01:00
Thomas Krijnen 8a108f37c3 Moar schema indices 2022-11-24 09:36:02 +01:00
Andrej730 d88510b919 Added new angle annotations operator
New operator should be more intuitive to work with. I kept the old one too for now.
2022-11-24 12:05:54 +06:00
Thomas Krijnen afe9f7602f Test cases for #2586 2022-11-23 13:46:15 +01:00
Thomas Krijnen ff2b79a41f Distinguish between nil and derived in validate.py 2022-11-23 13:45:44 +01:00
Thomas Krijnen 631722303f https://raw.githubusercontent.com/buildingSMART/IFC4.3-html/sep-13-release/IFC/RELEASE/IFC4x3/HTML/IFC4X3_TC1.exp 2022-11-23 13:23:49 +01:00
Dion Moult 4b20a407e9 Add API docs for drawing module 2022-11-23 11:23:40 +09:00
Dion Moult b23f445946 Add API documentation for document module 2022-11-23 10:56:41 +09:00
CyrilWaechter 09c8268494 Fix path for ci (root at src/ifcopenshell-python) 2022-11-22 23:25:11 +01:00
CyrilWaechter 0bc3543914 Update test/input submodule to https://github.com/IfcOpenShell/files/commit/20a17fcf3b1be2bc48af0273f7604af5b7cc4068
#2350
2022-11-22 21:23:26 +01:00
CyrilWaechter 0412eb48a0 Fix type hints #2350 for python <3.10 2022-11-22 01:00:04 +01:00
CyrilWaechter e7d5add13d Add test suite for ifcopenshell.open #2350
Fix open function: format argument was unused
2022-11-22 00:40:27 +01:00
Thomas Krijnen 25948a608a Missing parse updates after 4e0a19e 2022-11-21 09:43:13 +01:00
Dion Moult 11f772b5a3 Add documentation for cost module 2022-11-21 12:05:58 +09:00
CyrilWaechter 412cf7c6cb Add stable AUR package 2022-11-21 01:42:26 +01:00
CyrilWaechter b2d5580c37 Allow to open .ifcZIP | .ifcXML #2350
Transparently open any .ifc | .ifcXML | .ifcZIP formatted file
 with any extension :
- by guessing format from its extension
(eg. .zip | .ifczip | .ifcZIP | .ifcXML | .ifcxml | .IFC | .ifc)
zipped file can file can be of any supported format
-  by specifying a format
2022-11-21 01:32:12 +01:00
CyrilWaechter 8386aa0e0a IfcZone: Allow to remove an object from an IfcZone 2022-11-20 17:48:30 +01:00
CyrilWaechter ae0f2a9de6 IfcZone : Allow basic selection/deletion/creation 2022-11-20 17:35:27 +01:00
Thomas Krijnen 4e0a19e013 https://raw.githubusercontent.com/buildingSMART/IFC4.3-html/v4.3.1.0/IFC/RELEASE/IFC4x3/HTML/IFC4X3_ADD1.exp 2022-11-20 16:52:46 +01:00
Thomas Krijnen 9a840174d2 Fix test case 2022-11-20 14:38:17 +01:00
Massimo Fabbro 83528ba80a Merge pull request #2612 from maxfb87/Mapping_quantities
Finish mapping Qto_CoveringBaseQuantities (see #2533)
2022-11-19 23:05:29 +01:00
Massimo Fabbro eb23372fd0 Finish mapping Qto_CoveringBaseQuantities 2022-11-19 21:44:51 +01:00
Massimo Fabbro 286e9dfda9 Merge pull request #2605 from maxfb87/mapping_quantities
Mapping quantities (see #2533)
2022-11-19 17:28:29 +01:00
Vukas Pajic f0b9c9ad7b #2602 get_properties no longer throws error when EnumerationValues = None 2022-11-18 14:35:57 +01:00
Kristoffer Andersen afd79ee16d bump conda daily build number 2022-11-18 13:52:35 +01:00
Ryan Schultz caa4445eb0 Added diffuse_color inside IFC Style panel 2022-11-18 12:36:10 +11:00
Andrej730 f850bd5741 documented create_simple_2dcurve() 2022-11-17 12:03:28 +06:00
Massimo Fabbro 8c5883ffaa Finish mapping Qto_DoorBaseQuantities and Qto_WindowBaseQuantities 2022-11-16 22:28:10 +01:00
Massimo Fabbro 8f8940de2a Minor fix 2022-11-16 21:56:29 +01:00
Massimo Fabbro bf59871db5 Fix get_gross_side_area for Qto_WallBaseQuantities 2022-11-16 21:50:52 +01:00
Dion Moult 22eb0bf2e4 Write API documentation for control module 2022-11-16 18:38:51 +09:00
Dion Moult 68838a37e5 Add API documentation for context module 2022-11-16 18:18:22 +09:00
Dion Moult 22b4bfe07d Add API docs for constraint module 2022-11-16 08:57:25 +09:00
Andrej730 ff2714d991 Added c-, z-profiles with lips to AU steel library
Added c- and z-profiles with lips to IFC AU Steel profile library (based on data from https://github.com/boltsparts/boltsparts/pull/15).

For z-profiles I've created simple 2D curve generation function that can be reused later - it requires list of points and list of points with fillets and the results are list of curve points, segments and IfcIndexedPolyCurve.

Example:

    points, segments, ifc_curve = create_simple_curve_from_coords(coords,
        fillets =     (0,   1,   4, 5, 6,   7,   10, 11),
        fillet_radius=(r+t, r+t, r, r, r+t, r+t, r, r),
        closed=True, ifc_file=ifc_file)
2022-11-15 13:35:44 +06:00
Dion Moult 308ee7f7a9 Add API documentation for classification module 2022-11-15 16:11:47 +09:00
Dion Moult c87924c4ba Add API docs for boundary module 2022-11-15 08:27:26 +09:00
Thomas Krijnen 8f33c2ca9d Missing file 2022-11-14 09:38:51 +01:00
Thomas Krijnen 9351038009 Refactoring 2022-11-14 09:23:59 +01:00
Dion Moult 66281ec1f1 Add docs for attribute API 2022-11-14 07:55:50 +11:00
Dion Moult ae843e6faf Add docs for aggregate api 2022-11-14 07:48:20 +11:00
Massimo Fabbro 5ca0a254ff Cleaning around in qto_calculator 2022-11-14 06:50:33 +11:00
Thomas Krijnen c18458b3db Refactoring 2022-11-13 11:21:58 +01:00
Thomas Krijnen 3736a8b4b4 Refactoring 2022-11-13 11:04:16 +01:00
Dion Moult 6558f68cd4 Minor fix 2022-11-13 15:32:24 +11:00
Dion Moult 4fd5806f70 Minor documentation tweaks 2022-11-13 15:30:35 +11:00
Thomas Krijnen b1c730c04d draw.include_projection setting 2022-11-12 15:49:29 +01:00
Dion Moult bdec443410 Minor fixes to IfcTester 2022-11-12 14:08:01 +11:00
Erik Abrahamsson d9afb0f8a2 Fix translation of days in Powerproject importer 2022-11-12 08:32:19 +11:00
Andrej730 9dfd7e03f7 IFC Stair - added "Wood / Steel" stair type
Added new stair type "Wood / Steel" to IFC Stair modifier. It's less sophisticated than "Concrete" stair type - it acts more like a "Dumb stair" operator we have.
2022-11-11 17:32:57 +06:00
Andrej730 31b633b8b6 IFC Stair - cosmetic adjustments 2022-11-11 16:22:55 +06:00
Massimo Fabbro 20f4737ffd Fix some errors and update notes 2022-11-11 12:00:08 +11:00
Massimo Fabbro 4d4ab63404 Finish mapping Qto_BeamBaseQuantities 2022-11-11 12:00:08 +11:00
Massimo Fabbro 056f7610c1 Fix some get_lateral_area function errors 2022-11-11 12:00:08 +11:00
Massimo Fabbro bfb2f06e44 Finish mapping Qto_BeamBaseQuantities 2022-11-11 12:00:08 +11:00
Dion Moult a7febaa9b0 Fix astapowerproject import to ifc which seemed mostly broken for some reason 2022-11-11 11:38:09 +11:00
Sigma Dimensions ff984f62af BBIM feature to load nested tasks outputs, and select all nested task outputs 2022-11-10 18:05:26 +01:00
Otso Alho d005524c4c catch missing instances one by one. do not throw away whole relation. 2022-11-10 14:18:50 +01:00
Dion Moult a2362668a3 The profile manager now only manages named profiles 2022-11-10 23:32:15 +11:00
Andrej730 277317e6fd Added "IFC Stair" to object modifiers
1) Added "IFC Stair" to object modifiers - it works in similar way as "IFC Array". It creates a stair from current object (if it's IfcStairFlight) and writes it's parameters to property set "BBIM_Stair" and also to IfcStairFlight parameters.
Then you can edit it - modifying stair parameters and immediately see the changes, then you can save those changes or discard them.
2) "Clever Stair" operator (in Shift+A menu) works a bit different now - it creates new IfcStairFlight with IFC Stair modifier activated.
2022-11-10 15:57:08 +06:00
Dion Moult b3f0b9b37b Get cross section area from profile directly rather than mesh parsing 2022-11-10 17:37:14 +11:00
Dion Moult 6de1e73e4f Distinguish between calculating gross and net surface area 2022-11-10 17:02:11 +11:00
Thomas Krijnen c6cdf4ab77 Be a bit more careful in throwing NoSuchObject in case of triangulated face handling https://github.com/IfcOpenShell/wasm-preview/issues/1 2022-11-09 20:32:53 +01:00
Dion Moult 21f8aca00f Elementary fixes to the BCF module just so that things load (but lots are still broken) 2022-11-09 23:35:47 +11:00
Thomas Krijnen 1d6c3b3fc2 Update build-all.py 2022-11-09 10:58:38 +01:00
Thomas Krijnen 4362163ea9 Update build-all.py 2022-11-09 10:57:42 +01:00
Dion Moult 67808b8384 Fix issue where sometimes world coordinate system would trigger the georeferencing distance threshold 2022-11-09 18:37:16 +11:00
Andrea Ghensi 2cbc7a10ab [BCF] New BCF XML handler with better performances (#2355)
BREAKING CHANGE: incompatible methods and objects with previous version.

closes #2321
2022-11-09 08:54:23 +11:00
Massimo Fabbro d97594df96 Finish Qto_SlabBaseQuantities quantities (#2567) 2022-11-08 22:21:00 +11:00
Dion Moult c7eca135de Document how you can get the matrix of elements from IfcOpenShell Python. 2022-11-08 20:18:08 +11:00
Dion Moult e63ec83325 Fix some bugs in IfcTester that prevented tests running on IFC2X3 2022-11-08 20:05:56 +11:00
Dion Moult 1ddae8a6f5 Fix #2577. Bug where system editing UI appears multiple times. 2022-11-08 20:04:59 +11:00
Andrej730 03781bdf9b Updated EU, AU steel profiles libraries
1) Updated AU profiles based on more correct data (https://github.com/boltsparts/boltsparts/pull/4) - also added welded i-beam profiles
2) Added inner and outer fillet radius to hollow profiles since this data was added to https://github.com/boltsparts/boltsparts
3) Added more data to ifc profiles that was available on bolts: FilletRadius for I-beams, C-beams; FilletRadius and EdgeRadius for I-beams. Sovles #2556
4) Set names IfcProfileDef names too. Solves #2556
2022-11-08 11:29:43 +06:00
Dion Moult 62e5c3684b Fix #2564. Bug where profiles were not reused across copies. 2022-11-07 22:37:53 +11:00
Dion Moult ff90728a22 New unassign container API function 2022-11-07 18:47:15 +11:00
Dion Moult dadf23681b Fix #2123. Bug where mesh to extrusion conversion didn't work for thin extrusions. 2022-11-07 17:45:05 +11:00
Dion Moult 516bd37518 Fix #2550. Bug where material styles weren't included when appending from a library 2022-11-07 16:20:23 +11:00
Dion Moult 521ec1b124 Support styles defined somewhere along a boolean result stack 2022-11-07 11:24:13 +11:00
Thomas Krijnen 4881e4c686 Error in type checking introduced in ca98e77b40 2022-11-06 14:45:00 +01:00
Thomas Krijnen a57cac5f9c #2558 make conditional 2022-11-06 14:39:01 +01:00
Thomas Krijnen ca98e77b40 #2471 Fix refcount when setting aggregates 2022-11-05 16:24:04 +01:00
Dion Moult cbd9c898c3 Fix failing tests 2022-11-04 17:08:41 +11:00
Massimo Fabbro f57731a10a Mapping quantities #2533 (#2565)
* Implement some Qto_WallBaseQuantities quantities

* finish Qto_WallBaseQuantities
2022-11-04 08:56:38 +11:00
Dion Moult 0142bface5 You can now edit parameterised profiles again in the material panel 2022-11-04 00:05:09 +11:00
Dion Moult 5acbf4658f Material UI now prompts to add a profile if none exist in your library 2022-11-03 23:44:47 +11:00
Dion Moult 32e00f6d49 Refactor material UI to not depend on IOS API data class 2022-11-03 23:36:16 +11:00
Gorgious56 4e3ce192cc Custom property set attributes now show their description when right clicking the field
+ Add explicit numerical constraint members to attribute class #2562
+ Fix error in numerical value callback #2562
+ Fix error in setting attribute values because of wrong type cast
2022-11-03 09:54:35 +01:00
Gorgious56 841bb59d18 Fix error when the user selects a class suggestion that is not a predefined type 2022-11-03 08:21:55 +01:00
Gorgious56 8dd8a23af9 The predefined type suggestions now fetch their values from the ifcopenshell.util.doc module instead of parsing the file data 2022-11-03 08:16:40 +01:00
Dion Moult adc59de2bf Minor fix to accommodate null descriptions and parents with no attributes
# Conflicts:
#	src/ifcopenshell-python/ifcopenshell/util/doc.py
2022-11-03 17:13:56 +11:00
Gorgious56 20198bccdb Numerical Attribute validation callback (#2562)
* Numerical attributes can now be clamped

* #2545 : IfcMaterialLayer Priority is now clamped between 0 and 100

* Run black
2022-11-03 14:41:47 +11:00
Andrej730 c0909dace0 black.py formatting 2022-11-02 17:35:51 +06:00
Andrej730 bd054d4baf Added more advanced stair generating operator 2022-11-02 17:31:27 +06:00
Dion Moult 35a70a4ae3 Fix #2559. Don't consider door and window styles in IFC4X3. 2022-11-02 17:31:10 +11:00
Dion Moult a1d30d157b Minor fix. 2022-11-02 17:27:18 +11:00
Kristoffer Andersen 621d89c80e Update ci-ifcopenshell-conda-daily.yml
Bump GA versions away from deprecated versions
2022-11-01 20:58:59 +01:00
Gorgious 2fa3793622 Selecting an ifc predefined type in addition to the ifc class in the object ifc class selector now correctly assigns it 2022-11-01 17:34:29 +01:00
Kristoffer Andersen 872c057c4f bump conda daily to python v 3.10 and 3.11 2022-11-01 16:16:28 +01:00
Kristoffer Andersen f6a530e5e3 remove cap on boost version 2022-11-01 15:17:32 +01:00
Dion Moult 2043a629c7 Material profile sets UI cleanup and now lets you choose from a profile in your library instead of creating new profiles on the fly all the time 2022-11-01 23:39:07 +11:00
Kristoffer Andersen a7f9d548cf fix: add conditional #include <windows.h> for certain files breaking … (#2558)
* fix: add conditional #include <windows.h> for certain files breaking with boost v1.78+

* Revert "fix: add conditional #include <windows.h> for certain files breaking with boost v1.78+"

This reverts commit 7cd5c6292b.

* fix: add only `BOOST_REGEX_NO_W32` to fix issues boost v1.78+
2022-11-01 13:30:07 +01:00
Dion Moult 1391dd38ec Update README.md 2022-11-01 13:29:20 +01:00
Dion Moult 38f6b7aca0 Clean up README
This new proposed readme makes it more obvious to readers that there is a large collection of tools available, a brief glance of what they do, and directs users to the dedicated websites and documentation for further instructions on installation and so on.
2022-11-01 13:29:20 +01:00
Dion Moult f0e4397ef9 Change PyPI package readme. See #2531. 2022-11-01 09:08:13 +11:00
Dion Moult 6b7ffc8ca6 Merge pull request #2544 from Gorgious56/Tooltips
Blenderbim : Implement tooltips and online docs in the interface
2022-11-01 08:46:51 +11:00
Gorgious 5458f4f9dd Slightly optimise the display of the description popup 2022-10-31 22:22:46 +01:00
Gorgious 0c3269d9e1 Revert "Squashed commit of the following:"
This reverts commit f07cf1d1ef.
2022-10-31 19:53:19 +01:00
Gorgious 84dde4c5c0 Property set templates attributes now show a tooltip on hover 2022-10-31 19:34:59 +01:00
Gorgious 7eefb3f62f Pset nominal values now show their description on right click 2022-10-31 19:09:58 +01:00
Gorgious 90369bf7f7 Directly use predefined type doc function instead of wrapper 2022-10-31 18:10:03 +01:00
Gorgious eff3318399 Directly use attribute doc functions instead of wrapper 2022-10-31 18:01:59 +01:00
Gorgious ee59d366dc Directly use entity doc functions instead of wrappers 2022-10-31 17:57:24 +01:00
Gorgious c0b91848a3 Refactor right click context menu 2022-10-31 17:30:33 +01:00
Gorgious d05d430642 Directly use pset doc functions instead of wrapped ones 2022-10-31 17:30:18 +01:00
Gorgious e8a73e008e Pset types and template types enums now show tooltips on hover 2022-10-31 17:15:58 +01:00
Thomas Krijnen 259bb4f36a Let's try #2551 2022-10-31 13:39:01 +01:00
Dion Moult b87191a358 Forgot to commit new profile import export in model tool 2022-10-31 22:34:48 +11:00
Gorgious a359230181 Actually fix #2553 : Add safeguard to unregister custom right click context menu 2022-10-31 11:29:04 +01:00
Gorgious a95e12c0b2 Pset enums now display a tooltip on hover 2022-10-31 11:09:31 +01:00
Gorgious 2ac27c6fdd Add additional line to the ifc description popup to display the attribute type 2022-10-31 10:43:50 +01:00
Gorgious 757578a74b Fix error fetching the description of a nameless attribute 2022-10-31 10:34:18 +01:00
Gorgious 3466a38a44 Removed hardcoded descriptions thanks to 937f39c 2022-10-31 10:32:49 +01:00
Gorgious f07cf1d1ef Squashed commit of the following:
commit 7fb4cdaa16
Author: Gorgious <nathan.hild@gmail.com>
Date:   Mon Oct 31 09:35:06 2022 +0100

    Fix #2546 : Editing a material now automatically ends the edition of its material set item if necessary

commit 427411e758
Author: Dion Moult <dion@thinkmoult.com>
Date:   Mon Oct 31 19:04:57 2022 +1100

    You can now edit arbitrary profiles in the profile manager

commit cc056d5d53
Author: Gorgious <nathan.hild@gmail.com>
Date:   Mon Oct 31 08:52:11 2022 +0100

    Fix #2553 : Right click documentation is now only available for Blender 3.3+
    Also fix an error in the console when right clicking a button

commit 31600033bf
Author: ArturTomczak <artomczak@gmail.com>
Date:   Sun Oct 30 23:16:08 2022 +0100

    add BCF reporter to IDS (#2552)

    * grammar

    * reason not always a list

    * extend readme with instruction

    * remove microseconds from date

    * add BCF reporter

commit 0338825175
Author: Dion Moult <dion@thinkmoult.com>
Date:   Sun Oct 30 23:26:59 2022 +1100

    You can now add new profile definitions in the profile manager

commit d9f8aa4e7b
Author: Andrej730 <azhilenkov@gmail.com>
Date:   Sun Oct 30 11:29:42 2022 +0600

    Added ifc types schema for Ifc2x3 and Ifc4

    Types schema located in separate json file, it's structure:
    { ifc_type_name: {"description": type_description, "spec_url": type_spec_url} }

    I've also added new API function to get type data - `get_type_doc(version, ifc_type)`

commit 6803788676
Author: Dion Moult <dion@thinkmoult.com>
Date:   Sun Oct 30 11:02:18 2022 +1100

    Load thumbnails in a paginated manner to allow to scale to larger models

commit d421cc0bbb
Author: Massimo Fabbro <79401028+maxfb87@users.noreply.github.com>
Date:   Sun Oct 30 00:07:56 2022 +0200

    No mapped quantities in qto calculator  has None value (#2549)

commit bf57c8b1bf
Author: Dion Moult <dion@thinkmoult.com>
Date:   Sat Oct 29 23:45:04 2022 +1100

    Refactor profile module to use data class

commit 9a25db6584
Author: Andrej730 <azhilenkov@gmail.com>
Date:   Sat Oct 29 18:31:40 2022 +0600

    get_attribute_doc get_entity_doc now use recursive method by default

commit 17ccd0adf7
Author: Andrej730 <azhilenkov@gmail.com>
Date:   Sat Oct 29 18:27:51 2022 +0600

    Simplified getting entity parent information for schema api

    Removed unnecssary parent information from json schema - now API is getting it from ifcopenshell schema.

commit 937f39c898
Author: Andrej730 <azhilenkov@gmail.com>
Date:   Sat Oct 29 17:35:43 2022 +0600

    Added information about parent entity to schema

    Added information about parent entity to schema (it's located in "parent_entity" entity parameter inside schema), both for Ifc2x3 and Ifc4.

    Modified get_entity_doc and get_attribute_doc - now you can use additional optional parameter `recursive=True` with those functions - then parent entities attributes will be included to the list of entity's attributes. For example IfcWindow will also have attributes from IfcBuildingElement, IfcElement, IfcProduct etc...

commit 0b5ccd88a5
Author: Andrej730 <azhilenkov@gmail.com>
Date:   Sat Oct 29 16:31:54 2022 +0600

    Added descriptions for psets and qsets to ifc2x3, ifc4 schema

    Example of getting pset description: `get_property_set_doc("IFC4", "Pset_ZoneCommon")['description']`

commit ebf3cd8909
Author: Andrej730 <azhilenkov@gmail.com>
Date:   Sat Oct 29 10:32:26 2022 +0600

    Added IFC libraries for AU and EU profiles

    Also added script that was used to generate those libraries (the script is using data from https://github.com/boltsparts/BOLTS).

    Types of steel profiles included:
    I profiles, Z profiles, C profiles (known as U profiles in IFC), L profiles (both equal and unequal), hollow profiles (circle, square and rectangular).

commit 08afec3461
Author: Dion Moult <dion@thinkmoult.com>
Date:   Fri Oct 28 22:32:15 2022 +1100

    Support material layer set usage negative direction sense for parametric walls

commit 4408a23873
Author: Dion Moult <dion@thinkmoult.com>
Date:   Fri Oct 28 22:30:43 2022 +1100

    Merge duplicate types IfcPatch recipe can now merge based on any attribute
2022-10-31 09:51:05 +01:00
Gorgious 7fb4cdaa16 Fix #2546 : Editing a material now automatically ends the edition of its material set item if necessary 2022-10-31 09:35:06 +01:00
Dion Moult 427411e758 You can now edit arbitrary profiles in the profile manager 2022-10-31 19:05:04 +11:00
Gorgious cc056d5d53 Fix #2553 : Right click documentation is now only available for Blender 3.3+
Also fix an error in the console when right clicking a button
2022-10-31 08:52:11 +01:00
ArturTomczak 31600033bf add BCF reporter to IDS (#2552)
* grammar

* reason not always a list

* extend readme with instruction

* remove microseconds from date

* add BCF reporter
2022-10-31 09:16:08 +11:00
Dion Moult 0338825175 You can now add new profile definitions in the profile manager 2022-10-30 23:27:11 +11:00
Andrej730 d9f8aa4e7b Added ifc types schema for Ifc2x3 and Ifc4
Types schema located in separate json file, it's structure:
{ ifc_type_name: {"description": type_description, "spec_url": type_spec_url} }

I've also added new API function to get type data - `get_type_doc(version, ifc_type)`
2022-10-30 11:33:20 +06:00
Dion Moult 6803788676 Load thumbnails in a paginated manner to allow to scale to larger models 2022-10-30 11:02:31 +11:00
Massimo Fabbro d421cc0bbb No mapped quantities in qto calculator has None value (#2549) 2022-10-30 09:07:56 +11:00
Dion Moult bf57c8b1bf Refactor profile module to use data class 2022-10-29 23:45:12 +11:00
Andrej730 9a25db6584 get_attribute_doc get_entity_doc now use recursive method by default 2022-10-29 18:31:40 +06:00
Andrej730 17ccd0adf7 Simplified getting entity parent information for schema api
Removed unnecssary parent information from json schema - now API is getting it from ifcopenshell schema.
2022-10-29 18:27:51 +06:00
Andrej730 937f39c898 Added information about parent entity to schema
Added information about parent entity to schema (it's located in "parent_entity" entity parameter inside schema), both for Ifc2x3 and Ifc4.

Modified get_entity_doc and get_attribute_doc - now you can use additional optional parameter `recursive=True` with those functions - then parent entities attributes will be included to the list of entity's attributes. For example IfcWindow will also have attributes from IfcBuildingElement, IfcElement, IfcProduct etc...
2022-10-29 17:35:43 +06:00
Andrej730 0b5ccd88a5 Added descriptions for psets and qsets to ifc2x3, ifc4 schema
Example of getting pset description: `get_property_set_doc("IFC4", "Pset_ZoneCommon")['description']`
2022-10-29 16:31:54 +06:00
Andrej730 ebf3cd8909 Added IFC libraries for AU and EU profiles
Also added script that was used to generate those libraries (the script is using data from https://github.com/boltsparts/BOLTS).

Types of steel profiles included:
I profiles, Z profiles, C profiles (known as U profiles in IFC), L profiles (both equal and unequal), hollow profiles (circle, square and rectangular).
2022-10-29 10:32:26 +06:00
Gorgious56 d9b1c26bf0 Fix bug when prop_with_search is used with a prop that is not an enum 2022-10-28 16:50:11 +02:00
Gorgious56 490da99792 Pset primary measure type should now display a tooltip on hover
Awaiting for ifc measure descriptions to be added to the docs
2022-10-28 16:32:17 +02:00
Gorgious56 528df00027 Organization and person now show a tooltip on hover 2022-10-28 16:30:04 +02:00
Gorgious56 bc10f934d6 Add tooltips to attributes to guide users to their description 2022-10-28 15:46:02 +02:00
Gorgious56 819db11db4 Simplify attribute description 2022-10-28 15:44:31 +02:00
Gorgious56 37a0854d40 Material set profile attributes now show a description on right click
+ added link to docs to Material set profile attributes and Material set item
2022-10-28 14:39:36 +02:00
Gorgious56 b984268b5d parameterized profile classes now shot a tooltip on hover 2022-10-28 14:34:57 +02:00
Gorgious56 e4d2ae185d Fix bug when an entity doesn't have any predefined type to fetch in the docs 2022-10-28 14:26:08 +02:00
Gorgious56 345098b4af Fix bug when attribute enum items descriptions are not filled in 2022-10-28 13:51:52 +02:00
Gorgious56 98b517954f Material layer set item attributes now show a description on right click 2022-10-28 13:47:42 +02:00
Gorgious56 dba8d2df9d Fix bug when right clicking an operator button in the interface 2022-10-28 13:43:41 +02:00
Gorgious56 6756ba7022 Ifc profile classes enum now shows a tooltip on hover 2022-10-28 13:42:51 +02:00
Dion Moult 08afec3461 Support material layer set usage negative direction sense for parametric walls 2022-10-28 22:32:15 +11:00
Dion Moult 4408a23873 Merge duplicate types IfcPatch recipe can now merge based on any attribute 2022-10-28 22:30:57 +11:00
Gorgious56 c33b5aa4b7 Extract attribute description fetching 2022-10-28 12:08:28 +02:00
Gorgious56 0ebbc62a06 Add popup window when clicking Ifc description in right click context menu 2022-10-28 11:54:07 +02:00
Gorgious56 0494373155 Store Ifc class in attribute
This shouldn't be necessary ? but it's easier for now
2022-10-28 11:53:23 +02:00
Gorgious56 c897cb3ea0 Show descriptions for attributes in right click context menu
This is hacky, looking for a solution to get tooltips on hover over field
2022-10-28 11:10:12 +02:00
Gorgious56 f38e8f26f5 You can now access property sets online documentation through the right click context menu 2022-10-28 09:07:33 +02:00
Gorgious56 7164103a80 Search button now only displays when an enum has more than 10 items
To reduce visual clutter for enums with only a few values
Also tweak the online docs ui function
2022-10-28 08:33:56 +02:00
Gorgious56 5fb7f33fb0 You can now access the ifc classes online docs from the right click context menu
+ Remove the ugly buttons in the interface
2022-10-28 08:19:35 +02:00
Gorgious56 e602f16ed3 Add description to more ifc entities enums
- Constraint type
- Material type
- ObjectMaterial type
- Actor class and type
- Structural load type and boundary condition type
- Style type
- System type
- Relating type
- Unit type
2022-10-27 17:19:24 +02:00
Gorgious56 17a872a8d8 Use new get_predefined_type_doc function #1982 2022-10-27 16:00:12 +02:00
Dion Moult 4533b74d65 Minor IfcTester fixes 2022-10-27 23:37:01 +11:00
Dion Moult 62229b032e You can now array IFC elements parametrically 2022-10-27 23:36:09 +11:00
Andrej730 f2c2fa8dce Added entities predefined types to schema
Both for ifc2x3 and ifc4 but there is still a problem with ifc2x3 predefined types description - it's empty since constants have no description in ifc2x3. For temporary solution I've used description available on ifc4 for ifc2x3 too.

I've also added API function to get entity's predefined type description: `get_predefined_type_doc(version, entity, predefined_type)`

Example for the same constant that has no description in ifc2x3 and has one in ifc4:
https://github.com/buildingSMART/IFC/blob/Ifc2.3.0.1/Constants/s/STEAMINJECTION_1b6zZZM99EevT2LVdQ7B%24V.xml
https://github.com/buildingSMART/IFC/blob/Ifc4.0.2.1/Constants/s/STEAMINJECTION_1b6zZZM99EevT2LVdQ7B$V.xml
2022-10-27 16:23:46 +06:00
Dion Moult ae170bbfac Fix #2541. Forgot that wall body must be based off the axis reference line. 2022-10-27 19:08:37 +11:00
Dion Moult 706b925f4c FM documents now use the identification as the key, and refer to the doc info instead of doc reference 2022-10-27 09:46:11 +11:00
Dion Moult 65288eac04 Minor fix. See #2533. 2022-10-27 09:45:28 +11:00
Massimo Fabbro bf5a9bdac6 Start quantity calculator implementation (related to #2533) (#2534)
* Start quantity calculator implementation

* Fix get qto_name
2022-10-26 23:51:52 +11:00
Dion Moult e22ebfbf94 Fix #2523. Extrusion depth now reflects perpendicular depth 2022-10-26 22:24:18 +11:00
Dion Moult fb2989c17f Fix #2528. Setting x angle on slabs now only affects the X euler angle 2022-10-26 18:11:54 +11:00
Dion Moult ffbf6483b5 You can now disconnect a wall from a roof clipping 2022-10-26 17:53:20 +11:00
Dion Moult 5c5488fa49 You can now clip walls by sloped slabs / roofs. 2022-10-25 23:13:44 +11:00
Dion Moult 7ff1b8a34d New API for connecting and disconnecting elements 2022-10-25 17:54:24 +11:00
Dion Moult fb786bb90c Batch reassignments now take advantage of inverse indices for a slight speedup. See #2408. 2022-10-25 16:27:13 +11:00
Dion Moult fad80eacaf Bump IOS 2022-10-25 14:03:25 +11:00
Gorgious56 84020c9832 Type Manager : Add search to ifc class and descriptions to class an predefined type enums 2022-10-24 15:20:52 +02:00
Dion Moult 59bce590cc Fix #2529. Bulk copying decomposed elements to multiple storeys now maintains decomposition. 2022-10-24 22:57:23 +11:00
Dion Moult a7ae78ec2a Fix crash when deleting opening. See #2529. 2022-10-24 21:49:44 +11:00
Dion Moult 523a97329e Fix door appearing on wrong RL when not on ground floor. See #2529. 2022-10-24 20:34:09 +11:00
Dion Moult 248dab936d Experimental reimplementation of reloading an updated IFC 2022-10-24 13:36:50 +11:00
Dion Moult a908fa62ba Loading model elements is now half aware of existing elements and will reuse where possible. 2022-10-24 13:07:45 +11:00
Dion Moult 2f7643424d IfcDiff now uses the iterator to compare geometry, which seems significantly faster. 2022-10-24 13:06:03 +11:00
Dion Moult 226c94381b IfcDiff now supports file objects as inputs instead of filepaths 2022-10-23 23:33:52 +11:00
Dion Moult 548a2972bc You can now add new profileset based types easily in the type manager. 2022-10-23 21:17:52 +11:00
Dion Moult 6263110733 You can now add layerset types in the type manager and access the manager on blank projects. 2022-10-23 20:02:34 +11:00
Dion Moult 89e8bf1ed6 You can now add new mesh based types in the type manager 2022-10-23 18:15:33 +11:00
Dion Moult 3809b5a34b You can now create new empty types, and select type objects from the type manager 2022-10-23 16:53:09 +11:00
Ryan Schultz 3cda25773d Maintaining the MaterialLayer thickness when X_Angle is used (#2525) 2022-10-23 15:35:17 +11:00
Ryan Schultz 77f2ad8f68 'X angle' rotates ifcslab/ifcramp in space. (#2522)
* 'X angle' rotates ifcslab/ifcramp in space.

* rotation w/ mathutils.Matrix.Rotation instead
per https://github.com/IfcOpenShell/IfcOpenShell/pull/2522#issuecomment-1287969832
2022-10-23 15:32:31 +11:00
Dion Moult 733b89be12 Link to C++ API reference from Python Sphinx docs 2022-10-23 12:15:11 +11:00
Thomas Krijnen 6346c5ba47 #1444 V3d_DirectionalLight compatibility fix 2022-10-22 20:30:13 +02:00
Thomas Krijnen dbb342d494 Small changes to code_examples.rst 2022-10-21 09:25:55 +02:00
Massimo Fabbro cb0ad67bcc Fixed errors and little improvement 2022-10-21 09:17:40 +02:00
Massimo Fabbro f0266a16a3 Little improve about code example doc and geometry setting doc 2022-10-21 09:17:40 +02:00
Thomas Krijnen cdde536651 Test cases for #2486 and #2517 2022-10-20 20:31:56 +02:00
Thomas Krijnen c1aca6ba8c #2517 Don't free parsed simple types as part of parent entity, but at file destruction 2022-10-20 20:30:48 +02:00
Thomas Krijnen f9391f80c4 #2408 test case 2022-10-20 13:36:00 +02:00
Thomas Krijnen f012286eda #2408 ifcopenshell.file.get_inverse(with_attribute_indices) 2022-10-20 13:35:02 +02:00
Dion Moult 45087e8822 The BIM Tool now provides similar slab-like editing tools for ramps and roofs 2022-10-20 20:51:32 +11:00
Dion Moult 8fa944d2a8 You can now have sloped slabs, good for doing roof slabs. 2022-10-20 19:56:15 +11:00
Dion Moult 67955b4e35 Batch reassign utility to address performance issues in #2408. 2022-10-20 18:25:14 +11:00
Dion Moult 9a0f29170a Fix #2518. Don't fail on non-existent schemas to allow for custom schemas 2022-10-20 15:03:33 +11:00
Dion Moult d09286eeca Schema migrator now supports IfcElectricDistributionPoint 2022-10-20 14:52:39 +11:00
Gorgious56 89f64eacef Remove info mode and streamline entity url fetching 2022-10-19 18:42:05 +02:00
Gorgious56 3334ea5c10 Fix error when toggling viewport annotations if there is no active camera in the current scene 2022-10-19 16:13:53 +02:00
Dion Moult 16b05d9981 Fix support for document references in IFC2X3 2022-10-19 20:17:10 +11:00
Thomas Krijnen 7f278fbde4 Import submodule explicitly 2022-10-19 10:44:29 +02:00
Dion Moult 2cad62554e Fix #2510. 2022-10-19 18:54:42 +11:00
Boris Brangeon 83bd0a973c Add function grouped_by in Selector (#2515) 2022-10-19 18:49:06 +11:00
Boris Brangeon b2c5153c1c Add IsGroupedBy in function get_decomposition (#2513)
* Add IsGroupedBy in function get_decomposition

selector example : "@ .IfcZone & .IfcSpace"

* Update element.py

* Change name function get_group

get_group to get_grouped_by
2022-10-19 18:48:55 +11:00
Dion Moult ec955ca717 You can now draw walls at a set RL 2022-10-19 17:54:25 +11:00
Dion Moult 9c28a95f41 Fix #2416. 2022-10-19 12:44:55 +11:00
Dion Moult 80020970e1 Purge old dynamic void system as Blender booleans are not sufficient. 2022-10-19 12:32:02 +11:00
Dion Moult f55b47dcb3 Include sample file generator in IfcTester doc generator 2022-10-19 11:54:30 +11:00
Dion Moult 7197db796c Fix #2508 2022-10-19 09:48:05 +11:00
Dion Moult a5aa970977 Add support for normalised ratio diffuse colours. See #2509. 2022-10-19 09:37:22 +11:00
Dion Moult 159e2ca779 Run black and minor fix. See #1990. 2022-10-19 09:17:37 +11:00
Gorgious56 ec1fbabd00 Dynamic Attribute Info (#1990)
* Add info mode toggle in addon prefs

* Add documentation property to Attribute

* Add webbrowser open operator

* Populate attribute doc on import

* Add attribute doc popup operator

* use path_resolve instead of eval

* Rename operator

* Add description field

* Panel UI is managed by operator

* Revert "Panel UI is managed by operator"

This reverts commit a7bbd06865.

* Revert "Revert "Panel UI is managed by operator""

This reverts commit d62115bf63.

* Add info popup to ifc class panel in object properties

* Implement fetching doc for non-ifc classes from jsonlike format

* Draw doc from non ifc classes

* Add utility function to draw info button on a given layout

* Add info buttons in the create project UI

* Display entity descriptions as tooltips in enum items

* Move predefined types fetching to data class

* Remove leftover prop code

* Use tool to get schema
2022-10-19 08:17:31 +11:00
Dion Moult b70bf5ed33 Cute developer function to spit out a debug object to help when coding. 2022-10-18 23:11:37 +11:00
Dion Moult d6be887bde Minor IfcTester test case fixes 2022-10-18 23:11:11 +11:00
Dion Moult 6098d94223 Fix #2507. 2022-10-18 22:47:42 +11:00
Dion Moult f045e86a38 Rebuild wall engine (again) to allow for sloped wall clippings. 2022-10-18 20:02:00 +11:00
Dion Moult 9ef65c9cc5 Add basic support for sloped walls, sloping along the local X axis 2022-10-17 22:52:44 +11:00
Ryan Schultz f8a8250429 searching for an IfcMaterial in IfcMaterialDefinitions (#2503)
* searching for an IfcMaterial in IfcMaterialDefinitions
A start to trying to address: https://community.osarch.org/discussion/comment/13024/#Comment_13024

* refactored to a tighter version. Thanks Thomas.
2022-10-17 20:24:05 +11:00
Dion Moult a75341b36e Fix #2505. Missing rotate button in UI. 2022-10-17 20:11:37 +11:00
Dion Moult 0a0271a30e Filled openings can now be based off a custom profile representation 2022-10-17 18:34:34 +11:00
Andrej730 871f6ebdf1 Updated windows batch script for setting up environment for blenderbim
Previous batch scripts was resulting in broken sym links (probably because mklink and some other comands were expecting full paths). New script provide required full paths and also use 1 line to set up blenderbim location.
2022-10-17 12:19:53 +06:00
Dion Moult 90f1a179bc You can now flip the direction of doors and windows 2022-10-16 23:50:00 +11:00
Andrej730 81d80ee415 Doc API is now accessible without setting up DocAPI class
Now you can access Doc API functions directly (like `ifcopenshell.util.doc.get_entity_doc(...)`) without setting up DocAPI class.
To make it work I've set up singleton DocDatabase class and made all paths relative to module location.
2022-10-16 16:54:05 +06:00
Dion Moult 1eeb820d26 Flipping walls with fillings now works. See #2491. 2022-10-16 21:05:05 +11:00
Andrej730 4dc860c019 Added IFC v4.0 json schema and added docs API for working with schemas
The schema for IFC4 the same as it was for IFC2x3.
Properties schema for IFC4 includes both quantity and propety sets.

Also cleaned up entities description for IFC2x3 from HTML code and IFC tags.
2022-10-16 13:32:22 +06:00
Dion Moult cb28a0b298 Flipping walls with openings now works. See #2491. 2022-10-16 17:58:06 +11:00
Dion Moult 76e6923a3e Filled openings now handle offset wall axes 2022-10-16 10:16:10 +11:00
Dion Moult 56a09e51bd Modeling dimensions now affect newly created walls and profiles 2022-10-15 22:53:19 +11:00
Dion Moult b90ab70658 Modeling dimensions now have sensible defaults depending on units and show prior to element creation 2022-10-15 11:06:21 +11:00
Andrej730 28aab490df IFC v2.3 json schema and parsing tool to regenerate it (#2501)
* IFC v2.3 json schema and parsing tool to regenerate it

Added entities and propeties schema in json format.

ifc2x3_entities.json format:
entity_name -> description, url, attributes;
attributes format: attribute_name -> attribute_descrption

ifc2x3_properties.json format:
property_set_name -> property_name -> description, children
children format: child_property_name -> child_property_description.

Also added doc.py script that can generate the same json schema files but requires docs IFC 2.3 docs in the same folder (https://github.com/buildingSMART/IFC/tree/Ifc2.3.0.1)

* Moved all json schema files to /util/schema

* Moved json files back to /util/, changed doc.py export location

* Added specification urls for entities and properties

Added specification urls for entities and properties.
Also added a function to parse actual property sets domain from the website to generate specification urls (domain on website and on github do not match).

Schema structure was changed:

ifc2x3_entities.json format:
entity_name -> description, spec_url, attributes;
attributes format: attribute_name -> attribute_descrption

ifc2x3_properties.json format:
property_set_name -> properties, spec_url
properties format: property_name -> description, children_properties
children_properties format: child_property_name -> child_property_description.

ifc2x3_property_sets_domains.json format:
property_set_name -> ifc_domain
2022-10-15 07:14:34 +11:00
Thomas Krijnen 0810fa7564 Escape \W in selector grammar 2022-10-14 11:30:11 +02:00
Dion Moult a34c0cb35c Fix a variety of IFC validation errors in entity creation and asset appending 2022-10-14 18:19:35 +11:00
fbpyr 10bde73c1a choco nightly path (#2498)
* fix choco nightly scripts path

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

* Qto gross volume calculation minor fixes

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

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

* fix check yesterday bbim releases after midnight

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

* Minor fix

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

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

* First time preview on sidebar works again

* Avoid flickering

* Show multiple previews on the first run

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

* unzip instead of tar

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

* Reduce update interval

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

* Using timer instead of sleep

* remove sleep import

* Reduce asset update interval

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

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

* Using timer instead of sleep

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

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

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

* Add button to assign pset qto to selected objects

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

* Calculate all qtos button: first tool test

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

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

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

* [ifcConvert] Add related objects in tasks

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

* Get IfcTasks from IfcWorkSchedule

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

* Added task to property / quanty relationship

* [IfcConvert] Added calendars to xml output file

* [IfcConvert] Added Output objects in the XML file

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

* [IfcConvert] Added IfcWorkPlan to xml export

* [IfcConvert] Added IfcRelConnectsElements to xml export

* [IfcConvert] Added IfcRelConnectsElements to xml export

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

Tested:

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

* fix indentation in yaml

* fix branch name

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

* chore: WIP daily builds - add tests

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

* fix: add more packages to test requires

* fix: remove space in minimum version requirement of numpy

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

* fix MacOSX SDK address and made it platform conditional

* make tests pass

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

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

* fix wrong path to source files

* fix errors in tests

* remove test files and skip tests

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

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

* point to occt v0.7.6

* make conditional import of BRepAdaptor_HCompCurve

* try removing libxml2 include path

* minor changes

* Test nix builds

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

* remove run check

* remove testing of nix builds

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

This reverts commit 22a552a9ac.

* Revert "ci-py-only test modification"

This reverts part of commit af1e832f

* update occt version to 7.6.2 in daily builds

* Revert "Test nix builds"

This reverts commit af1e832f81.

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

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

* Remove SELECT from type browser

* model and geometry module tests fixed

* Polishing of type authoring layout redesign

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

* check cron based trigger isolated

* fix args

* add scheduled choco build action

* revert to original

* fix action name

* fix action name

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

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

* Remove SELECT from type browser

* model and geometry module tests fixed

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

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

* Move data to data submodule

* Fix error when suggestion mapping contains only one value

* Add predefined types to the search popup

* Use defaultdict to be able to add suggestions later

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

* Move data retrieval to data module

* Simplify prop search items retrieval

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

240pm 14/07

draft version

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

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

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

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

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

* Display props operator

* display search for pset

* Display search for root

* Update operator and UI layout function

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

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

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

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

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

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

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

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

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

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

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

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

* Operator to add new storey to building

* Add new storey to building button in aggregates panel

* Minor fix

* add method to data class to retrieve ifc class name

* Extract aggregate creation logic

* Prevent aggregating non-ifc elements + display popup info

* Add tooltips + rename operators

* Rename function to get relating object

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

* Add utilities to get related objects

* Add utility function to get related objects from element

* display related object in Aggregates panel in object properties

* Revert "Rename function to get relating object"

This reverts commit 5248627a41.

* Update method names

* Add Operator to select parts of an element

* Ditch box layout and only display number of parts

* Add operator to select aggregate of an element

* Display operator to select aggregate of element

* Move logic to aggregate module

* Add utility methods to Blender tool

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

* Refactor add_section_plane operator

* Prevent error if last section has been removed

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

* Fix shader glitch when user deletes last cutaway object

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

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

* Refactor logic to be usable with other file selectors

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

* small naming change + added missing ui classes

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

* Formatting

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

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

* adopted new solution for umlauts in enums

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

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

* Optimize logic for bigger number of tasks

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

* update incorporating review comments

* added a new feature - remove psets

* type dropdown now references ifc data types

* adopt new solution for enumerations and umlauts

* Revert "adopt new solution for enumerations and umlauts"

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

* Extend ops descriptions, labels and debug output

* Use Operator property for selecting dense meshes

* Prevent error if id has no geom representation

* Use Poll operator and poll fail message

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

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

* Assign kwargs to object instead of settings dict

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

Use tool module instead of previous custom search loop.

* Boundaries: add relations editing

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

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

* Add a tool to colour boundaries

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

* Add ifccityjson to BlenderBIM

* Make ifccityjson work like a package

* Use pip while installing CJIO dependency for ifccityjson

* revert removal of brick module

* Changes from pull request review

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

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

* Removed the test code

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

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

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

* Removed the test code

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

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

* Initial support for Primavera XER files

* IFC4D impl XER calendars exceptions and work time

* merged updats

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

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

* Merged changes from master

* refactoring

* resolved conflicts

* refactoring code for IFC4D

* refactoring code for IFC4D

* refactoring code for IFC4D

* Reverted the changes to IfcRelAssignsToProcess usecase

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

* reverted changes to add_work_plan and Makefile

* Added resource parsing support for Primavera XER

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

* Initial support for Primavera XER files

* merged updats

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

* Merged changes from master

* refactoring

* resolved conflicts

* refactoring code for IFC4D

* refactoring code for IFC4D

* Reverted the changes to IfcRelAssignsToProcess usecase

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

* reverted changes to add_work_plan and Makefile

* Added resource parsing support for Primavera XER

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

* deleted repetitive classes for P6XER import

* Resource Parsing added Primavera P6 XML module

* Initial support for Primavera XER files

* IFC4D impl XER calendars exceptions and work time

* merged updats

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

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

* Merged changes from master

* refactoring

* resolved conflicts

* refactoring code for IFC4D

* refactoring code for IFC4D

* refactoring code for IFC4D

* Reverted the changes to IfcRelAssignsToProcess usecase

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

* reverted changes to add_work_plan and Makefile

* Added resource parsing support for Primavera XER

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

* Initial support for Primavera XER files

* merged updats

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

* Merged changes from master

* refactoring

* resolved conflicts

* refactoring code for IFC4D

* refactoring code for IFC4D

* Reverted the changes to IfcRelAssignsToProcess usecase

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

* reverted changes to add_work_plan and Makefile

* Added resource parsing support for Primavera XER

* deleted repetitive classes for P6XER import

* Resource Parsing added Primavera P6 XML module

* P6XML Parser failing on calendar type

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

* Initial support for Primavera XER files

* IFC4D impl XER calendars exceptions and work time

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

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

* Merged changes from master

* refactoring

* resolved conflicts

* refactoring code for IFC4D

* refactoring code for IFC4D

* refactoring code for IFC4D

* Reverted the changes to IfcRelAssignsToProcess usecase

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

* reverted changes to add_work_plan and Makefile

* Added resource parsing support for Primavera XER

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

* Initial support for Primavera XER files

* merged updats

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

* Merged changes from master

* refactoring

* resolved conflicts

* refactoring code for IFC4D

* refactoring code for IFC4D

* Reverted the changes to IfcRelAssignsToProcess usecase

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

* reverted changes to add_work_plan and Makefile

* Added resource parsing support for Primavera XER

* deleted repetitive classes for P6XER import

* Resource Parsing added Primavera P6 XML module

* Initial support for Primavera XER files

* IFC4D impl XER calendars exceptions and work time

* merged updats

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

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

* Merged changes from master

* refactoring

* resolved conflicts

* refactoring code for IFC4D

* refactoring code for IFC4D

* refactoring code for IFC4D

* Reverted the changes to IfcRelAssignsToProcess usecase

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

* reverted changes to add_work_plan and Makefile

* Added resource parsing support for Primavera XER

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

* Initial support for Primavera XER files

* merged updats

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

* Merged changes from master

* refactoring

* resolved conflicts

* refactoring code for IFC4D

* refactoring code for IFC4D

* Reverted the changes to IfcRelAssignsToProcess usecase

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

* reverted changes to add_work_plan and Makefile

* Added resource parsing support for Primavera XER

* deleted repetitive classes for P6XER import

* Resource Parsing added Primavera P6 XML module

* removed the testing code

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

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

* Initial support for Primavera XER files

* IFC4D impl XER calendars exceptions and work time

* merged updats

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

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

* Merged changes from master

* refactoring

* resolved conflicts

* refactoring code for IFC4D

* refactoring code for IFC4D

* refactoring code for IFC4D

* Reverted the changes to IfcRelAssignsToProcess usecase

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

* reverted changes to add_work_plan and Makefile

* Added resource parsing support for Primavera XER

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

* Initial support for Primavera XER files

* merged updats

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

* Merged changes from master

* refactoring

* resolved conflicts

* refactoring code for IFC4D

* refactoring code for IFC4D

* Reverted the changes to IfcRelAssignsToProcess usecase

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

* reverted changes to add_work_plan and Makefile

* Added resource parsing support for Primavera XER

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

* deleted repetitive classes for P6XER import

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

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

* update based on comments

* incorporate suggestion from @Gorgious56

* change curly brackets to square brackets ;)

* update based on comments from @Moult

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

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

* Initial support for Primavera XER files

* IFC4D impl XER calendars exceptions and work time

* merged updats

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

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

* Merged changes from master

* refactoring

* resolved conflicts

* refactoring code for IFC4D

* refactoring code for IFC4D

* refactoring code for IFC4D

* Reverted the changes to IfcRelAssignsToProcess usecase

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

* reverted changes to add_work_plan and Makefile

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

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

* Initial support for Primavera XER files

* IFC4D impl XER calendars exceptions and work time

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

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

* Initial implementation import of point clouds in BlenderBIM

* create point cloud elements on the appropriate place

* Updated import_ifc.py based on review PR

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

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

* Initial support for Primavera XER files

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

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

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

* Update ui.py

* updated ui to allow individual toggling of modules

* working

* code cleanup and update

* fix issue where non relevant operators shown

* update based on review comments

* add contingency for intermodule panel dependancy

* removed 'magic' operators :)

* clean up some leftover lines

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

* Add tooltips for new project

* Small fix

* Added more tootips

* Add other tooltip to the n-panel

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

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

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

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

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

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

* Test Remove filling

* Update bootstrap defs for filling test

* Fix possible errors in add_filling and remove_filling

* Enable adding fillings from the opening object ui

* Typo

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

This reverts commit b217860840.

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

* Ensure an IfcOpeningElement can't be voided

* merge 0.7.0

* Add test cases for filling operators

* Test Opening operators

* Delete related fill relations on object deletion

* Remove try/except

* typo

* Minor fix

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

* Don't show ui elements when not applicable

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

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

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

* Fix error when using Miles or Thou-inch units

* Parametric gizmo scales with scene units

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

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

* Minor fix. See #1711.

* Test util.element module. See #1711.

* Test IFC file module. See #1711.

* Minor fix. See #1711.

* Move logic into operators

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

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

* Keep ifc parameters expanded when updating representation

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

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

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

* Treat MapUnit as a regular attribute

* Remove left over attributes

* Refactor operator for MapUnit change

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

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

* Assign / Unassign Material executes on all selected objects

* AddRepresentation executes on all selected objects

* Assign / Unassign Constraint executes on all selected objects

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

* Assign / Unassign Document executes on all selected objects

* Code Cleanup & Consistency

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

* Revert changes to geometry operator

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

This reverts commit 1117c8670c.

* Revert changes to material operator

* Use attribute helper functions

* Filter select entities in import_attributes

* revert changes to attribute fetching

* Revert "Filter select entities in import_attributes"

This reverts commit 7f84c2ea63.

* Enforce new attribute data type to string

* Restrict import_attributes usecase

* Remove trailing spaces

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

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

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

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

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

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

* Simplify group & systems operators

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

* Basic Changes

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

* Add utilities to get active collection item

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

* Jump through hoops to not display empty dynamic enums

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

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

* Foolproof active topic access with property

* Use self when available

* Add utility method to explicitely refresh topic

* Simplify Refresh topic code

* BCF Topics can now be deleted using Blender UI

* Revert dynamic enum for related topics

* Minor fix and cleanup

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

* Clear input fields on active topic change

* BCF : Fix resetting comment has_related_viewpoint default value

* Prevent global function use from import

* Use dynamic enum to choose related topic

* Add newline at eof

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

* Rename DrawingStyleProp to RasterStyleProperty

* Minor Fix

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

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

* Add helper function to extract IFCPatch arguments

* Add Operator to populate Attributes with IFCPatch arguments

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

* Move all reflection logic inside helper module

* Improve UI

* Correctly unpack arguments when Patching IFC

* Refactor Attribute class to provide agnostic value access

* Take advantage of Attribute agnosticity refactor

* Use regular json if no docstring when Patching

* centralize docstring extraction in UI module

* Revert "centralize docstring extraction in UI module"

This reverts commit e7a63d2a0b.

* Place Patch description in recipe enum field

* Minor fixes

* Minor fixes

* Remove description field from Attribute

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

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

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

* Restrict min number of polygons to 0

* Simplify high poly mesh operator execution

* Clear debug attributes when purging ifc

* Poll if ifc file exists in operators

* Poll if ifc filepath exists before import

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

* Return prematurely from operator if no file is set

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

This reverts commit f876cfbcef.

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

This reverts commit 6782c47d86.

* Prevent error message if ifc_types enum is empty

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

* Support Multi input string fields

* Simplify people & organisation UI code

* General-purpose code cleanup

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

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

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

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

problem with stepmatcher remains

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

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

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

* Ensure that files are always passed when entities are wrapped

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

* Minor fix

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

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

* Update documentation for installation of add-on

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

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

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

* Update __init__.py

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

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

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

* Added Project and Version script for v3

* Cleaning the code

* optional fix

* Added markup.xsd in v3 bcfxml

* Completed Vision.xsd and Markup.xsd

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

fix #1481
May adopt a bmesh approach instead ?

* Ensure polygons are coplanar

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

* Removed Redundant part

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

* Fix relationships, and add support for projection elements

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

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

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

* Added File Structure for v3

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

changed all 'applicabiliy' to 'applicability'

* added boolean restriction

* Add PredefinedType support

* replace f-string with %

* skip PredefinedType if not IFC4

* code formatting

* check PredefinedType if exists not based on schema

* narrow try-except

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

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

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

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

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

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

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

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

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

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

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

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

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

* Fix the usage of Schema in BIMTester

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

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

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

* Modification to Bimtester refactor + Diff refactor

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

* Initial refactor for CSV to become a CSV Module

* Update __init__.py

* Address Dion's review

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

* Remove Cobie references from ui and operator

* Update __init__.py

* Extra Updates

* Update operator.py

* Update ui.py

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

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

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

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

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

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

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

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

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

ptrdiff_t index = -1;

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

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

* indented code correctly

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

`model-rotation` was also added to support rotation in the same
manner as `model-offset` supports offset.
2019-09-13 16:09:11 +02:00
Dion Moult dee8af6ec9 Implement associations to qualitative objective constraints 2019-09-11 16:50:27 +10:00
Dion Moult 00af240915 Implement rel associate classifications for objects and types 2019-09-11 14:47:53 +10:00
Dion Moult 730057ed4d Allow objects and types to be associated with external documents 2019-09-11 12:44:36 +10:00
Dion Moult 675ba205ef Bump readme with new features 2019-09-11 09:23:02 +10:00
Dion Moult 9ab13a3e0c Maintain GlobalIds for type products 2019-09-10 20:11:58 +10:00
Dion Moult 9b7ea1e83c Allow for psets to be assigned to types, and pset overrides 2019-09-10 20:11:37 +10:00
Dion Moult 2c84a07bdc Don't hardcode unit definitions 2019-09-10 17:08:45 +10:00
Dion Moult dd1ddfcd8e Merge branch 'v0.6.0' of https://github.com/IfcOpenShell/IfcOpenShell into v0.6.0 2019-09-10 05:26:43 +01:00
Dion Moult cd21611646 Define diffuse colour, and give possibility for externally defined material URI 2019-09-10 14:18:50 +10:00
Dion Moult 360767a6eb Bump feature list 2019-09-09 22:00:12 +10:00
Dion Moult 2bf89f11c8 Minor code cleanup 2019-09-09 15:11:32 +10:00
Dion Moult 018123aa21 Export basic material information 2019-09-09 15:11:07 +10:00
Dion Moult 0bf149c894 Fix minor bug where libraries don't exist 2019-09-09 12:48:42 +10:00
Dion Moult b0797db321 Maintain GlobalIds for projects and spatial structures 2019-09-08 20:51:59 +10:00
Dion Moult 58e870d185 Relate objects to psets 2019-09-08 19:02:00 +10:00
Dion Moult 70ec98a9e0 Add ability to detect data types from property set templates so that psets are easier to insert 2019-09-08 18:30:16 +10:00
Dion Moult 22bb5cc276 Relate types to their respective project library 2019-09-08 14:55:23 +10:00
Dion Moult cecb623e76 Prevent unnecessary duplicate creation of the same representation 2019-09-08 11:24:41 +10:00
Dion Moult 04aa0ad04d Support IfcProjectLibrary as related to IfcProject 2019-09-08 11:07:40 +10:00
Dion Moult 58be8e95b0 Bump readme with new features 2019-09-07 22:32:41 +10:00
Dion Moult 5f8a792cf4 Allow the creation and storage of map conversions and CRSes 2019-09-07 22:27:52 +10:00
Dion Moult 5dbbe174de Allow wireframe geometry exports 2019-09-07 08:05:42 +10:00
Dion Moult 9908e5cf05 Clean up trailing whitespace 2019-09-07 08:04:49 +10:00
Dion Moult 3d11a98eef Fix #665 - Display curves too, not just solid elements 2019-09-07 07:40:16 +10:00
Dion Moult 5ce8917c82 Allow type definitions which have no representation, to be used as simply ways to inherit properties 2019-09-05 21:38:52 +10:00
Dion Moult 9c11e6bd09 Update readme with new features 2019-09-05 18:50:32 +10:00
Dion Moult dd3df2258d Allow settings to toggle export of representations and quantities 2019-09-05 17:18:13 +10:00
Dion Moult 826280f35c Add support for multiple collection instances 2019-09-05 12:04:34 +10:00
Dion Moult 5536bd5d59 Minor fix where qto calculator wasn't passed in, whoops 2019-09-05 12:03:07 +10:00
Krzysztof Trzciński 90bf32c342 Fix reusing meshes and mesh naming 2019-09-05 07:14:08 +10:00
Dion Moult d917e738db Merge pull request #662 from elmopl/blender_ifc_280rc1
Fix reusing meshes and mesh naming
2019-09-05 07:13:16 +10:00
Krzysztof Trzciński 42307972a8 Fix reusing meshes and mesh naming 2019-09-04 21:02:47 +01:00
Dion Moult bd9aa18053 Record and remember globalids between exports 2019-09-04 17:46:58 +10:00
Dion Moult 3074242aa0 Add basic support for some forms of quantity take-off 2019-09-04 16:53:10 +10:00
Dion Moult 684e687b6a Simplify unnecessary code to get representations 2019-09-04 11:58:18 +10:00
Krzysztof Trzciński 1dff84ace3 Fix clash of mesh names (fixes #661) 2019-09-04 09:01:09 +10:00
Krzysztof Trzciński 99d8e96a35 Add support for collections 2019-09-04 09:01:00 +10:00
Krzysztof Trzciński c3a3cbee3f Fix filename -> ifcopenshell.file 2019-09-04 09:00:41 +10:00
Krzysztof Trzciński 748f826418 Introduce defaultdict instead of checks 2019-09-04 08:58:48 +10:00
Dion Moult 032a4743ac Merge pull request #641 from elmopl/blender_ifc_280rc1
Blender ifc 2.80rc1 collections enhancement
2019-09-04 08:55:46 +10:00
Krzysztof Trzciński 7c99294ba8 Fix clash of mesh names (fixes #661) 2019-09-03 17:57:39 +01:00
Dion Moult 1665d8e0f6 Merge remote-tracking branch 'blender-bim-ifc/master' into v0.6.0 2019-09-03 21:06:15 +10:00
Dion Moult 6e9f24af66 Move to subdir 2019-09-03 21:02:57 +10:00
Dion Moult 359b55aeab Add feature about IfcRelAggregates to readme 2019-09-03 20:55:10 +10:00
Dion Moult b1dda0a679 Support element decomposition through IfcRelAggregates 2019-09-03 20:52:22 +10:00
Dion Moult a7286e5527 Add a timer for export times 2019-09-03 20:51:58 +10:00
Dion Moult c055a8e9e8 Allow objects to be an arbitrary collection as long as some parent is part of the spatial tree 2019-09-03 20:51:39 +10:00
Dion Moult 8c0a24c463 Add screenshots 2019-09-02 21:38:14 +10:00
Dion Moult 164c249a48 Add instruction about adding to path 2019-09-02 21:28:53 +10:00
Dion Moult adb3a08638 Bump readme with demo blend file 2019-09-02 21:27:24 +10:00
Dion Moult cba28fbb72 Minor fix to template so that it isn't syntatically incorrect, at least.
We'll fix the hardcoded variables later.
2019-09-02 21:18:22 +10:00
Dion Moult 4de35bc252 Fix missing data for type products 2019-09-02 21:16:21 +10:00
Dion Moult 27407b8642 Parse array modifiers and create instances. Take into account local vs global rotation. 2019-09-02 19:43:55 +10:00
Dion Moult 3490b1b388 Report exceptions about spatial structure 2019-09-02 19:43:11 +10:00
Dion Moult 46c5cd4ee2 Describe newly coded features in readme 2019-09-01 22:17:49 +10:00
Dion Moult 73b387011d Add example pset 2019-09-01 22:03:40 +10:00
Dion Moult 931b00d651 Add types schema 2019-09-01 22:03:33 +10:00
Dion Moult c461a483b3 Now allow the creation of psets in a crude form 2019-09-01 22:03:02 +10:00
Dion Moult 36a74a212c Only parse selected types, not all types in the type collection 2019-09-01 19:30:58 +10:00
Dion Moult 291a54d07e Support IfcRelDefinesByType 2019-09-01 18:40:20 +10:00
Dion Moult 6a5bedc02e Support exporting product types 2019-09-01 17:23:48 +10:00
Dion Moult e11d4e4e4c Support custom attributes for products 2019-09-01 13:22:26 +10:00
Dion Moult fdb6af4ce3 Clean up files I should've put in gitignore 2019-09-01 11:46:11 +10:00
Dion Moult 1c28055afe Support object instancing, so product representations are reused if the mesh data is the same 2019-09-01 11:45:32 +10:00
Dion Moult 72fa983e81 Allow export of any product class 2019-09-01 11:21:24 +10:00
Dion Moult bb29a493c7 Don't hardcode spatial structure elements. Make a sensible assumption instead that all collections are either contexts or spatial structures. 2019-09-01 10:33:06 +10:00
Dion Moult 1c647c5365 Print errors in case the name cannot be detected 2019-09-01 10:32:22 +10:00
Dion Moult 6b53ebdc5e Hardcode context names, since there are unlikely to be many 2019-09-01 10:27:05 +10:00
Dion Moult c2cb11c594 Remove useless function 2019-09-01 10:26:54 +10:00
Dion Moult 153d6fe337 Use an IFC4 template. Don't let 2X3 hold us back! 2019-09-01 10:26:33 +10:00
Dion Moult 11e187fc76 We don't need this ifc_schema class, it seems 2019-09-01 10:14:31 +10:00
Dion Moult fa38317438 Whitespace cleanup 2019-09-01 09:45:57 +10:00
Dion Moult 7c2d640106 Refactor representation creation into its own function 2019-09-01 09:44:06 +10:00
Dion Moult 64b23393a0 Remove unnecessary comment 2019-09-01 09:43:36 +10:00
Dion Moult ae9fce8c45 Support dynamic contexts and trees of spatial structures 2019-08-31 23:51:53 +10:00
Dion Moult bd35a9924e Refactor into a class. It's gonna get big! 2019-08-31 17:37:53 +10:00
Dion Moult 2f4e82e0b9 Rename to sensible name 2019-08-31 17:16:16 +10:00
Dion Moult e9649a5217 Basic geometry export 2019-08-29 23:11:12 +10:00
gpioto 98f4c8518e Casting default timestamp template to integer
The documentation of IFC indicates that the timestamp must be of type Integer. (https://standards.buildingsmart.org/IFC/DEV/IFC4_2/FINAL/HTML/link/ifctimestamp.htm)
If not, it cause some problems importing the generated IFC file in some platforms
2019-08-28 09:01:13 +02:00
Thomas Krijnen 75b24c2352 Put maximum length on layerset wall end point intersection 2019-08-21 11:59:30 +02:00
Thomas Krijnen 16ce1f0823 Make sure layerset fold is parallel to other wall axis curve 2019-08-16 10:42:48 +02:00
Thomas Krijnen af1853de04 Iterative epsilon in faceset helper 2019-08-09 17:48:56 +02:00
Thomas Krijnen b3711ad8cb thread_local define for clang 2019-08-09 10:05:49 +02:00
Krzysztof Trzciński e450101a12 Add support for collections 2019-07-16 19:31:16 +01:00
Krzysztof Trzciński 3f3b548d74 Fix filename -> ifcopenshell.file 2019-07-16 18:33:54 +01:00
Krzysztof Trzciński 6284b3960d Introduce defaultdict instead of checks 2019-07-16 18:30:03 +01:00
2289 changed files with 1439379 additions and 118772 deletions
+8
View File
@@ -0,0 +1,8 @@
c14f5eeca042232025797990396232e4feab53e7
d6881e833da0b6278313870d37d42ca6ece8686a
892be5444c5bd01a601c99243ac8d3e7b2f0e779
d169a964dd7e9ab5c98b35a82bcbc76dc6229a7a
4a6ec11f6f84a3d1fed2ee9b2f85d783ac3daa9d
2c9d6a47f4d24a923069775206bf734feeb14830
8f1743ed64a2a52c201a1ef5e312b4d3a7a922cf
ad7f030344c405e10cfa7d5cf06d82c121eeb825
+4
View File
@@ -0,0 +1,4 @@
# These are supported funding model platforms
github: [aothms]
open_collective: opensourcebim
+118
View File
@@ -0,0 +1,118 @@
name: CD
on:
push:
jobs:
activate:
runs-on: ubuntu-latest
if: |
github.repository == 'IfcOpenShell/IfcOpenShell' &&
!startsWith(github.event.head_commit.message, 'Release ') &&
!contains(github.event.head_commit.message, 'ci skip')
steps:
- run: echo ok go
build:
runs-on: ubuntu-20.04
needs: activate
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Install dependencies
run: |
sudo apt update
sudo apt-get install --no-install-recommends \
git cmake gcc g++ libboost-all-dev python3-all-dev swig libpcre3-dev libxml2-dev \
libocct-foundation-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev libocct-ocaf-dev libocct-visualization-dev libocct-data-exchange-dev \
libhdf5-dev libcgal-dev nlohmann-json3-dev
-
name: ccache
uses: hendrikmuhs/ccache-action@v1
-
name: Build ifcopenshell
run: |
mkdir build && cd build
cmake \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_INSTALL_PREFIX=$PWD/install/ \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=/usr \
-DCMAKE_SYSTEM_PREFIX_PATH=/usr \
-DBUILD_PACKAGE=On \
-DOCC_INCLUDE_DIR=/usr/include/opencascade \
-DOCC_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3 \
-DPYTHON_INCLUDE_DIR:PATH=/usr/include/python3.8 \
-DPYTHON_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libpython3.8.so \
-DCOLLADA_SUPPORT=Off \
-DLIBXML2_INCLUDE_DIR=/usr/include/libxml2 \
-DLIBXML2_LIBRARIES=/usr/lib/x86_64-linux-gnu/libxml2.so \
-DCGAL_INCLUDE_DIR=/usr/include \
-DGMP_INCLUDE_DIR=/usr/include \
-DMPFR_INCLUDE_DIR=/usr/include \
-DGMP_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DMPFR_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DHDF5_INCLUDE_DIR=/usr/include/hdf5/serial \
-DGLTF_SUPPORT=On \
-DJSON_INCLUDE_DIR=/usr/include \
../cmake
make -j $(nproc)
make install
-
name: Package
run: |
make package
working-directory: build
- name: Upload
uses: actions/upload-artifact@v2
with:
# Artifact name
name: ifcos-artifacts
# Directory containing files to upload
path: build/assets/Ifc*
deliver:
runs-on: ubuntu-20.04
needs: build
name: Docker Build, Tag, Push
steps:
- uses: actions/checkout@v2
with:
lfs: true
- name: Download
uses: actions/download-artifact@v2
with:
# Artifact name
name: ifcos-artifacts
path: artifacts/
-
name: Set up QEMU
uses: docker/setup-qemu-action@v1
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
-
name: Login to Dockerhub
uses: docker/login-action@v1
with:
username: aecgeeks
password: ${{ secrets.DOCKER_HUB_TOKEN }}
-
name: Build container image
uses: docker/build-push-action@v2
with:
context: artifacts
repository: aecgeeks/ifcopenshell
tags: aecgeeks/ifcopenshell:latest
file: ./Dockerfile
push: true
+104
View File
@@ -0,0 +1,104 @@
import pathlib
import shutil
import requests
import zipfile
import os
# To test this locally, set these environment variables
REPO_OWNER = os.environ.get("REPO_OWNER", "IfcOpenShell/IfcOpenShell")
MY_WORKFLOW = os.environ.get("MY_WORKFLOW", "ci-ifcopenshell-conda-daily")
WORKFLOW_RUN_ID = os.environ.get("WORKFLOW_RUN_ID", None)
TOKEN = os.environ.get("GITHUB_TOKEN", None)
# To test this locally create a fine-grained personal access token for this repo with permissions "actions:read"
# See https://github.com/settings/tokens?type=beta
# This is a list of strings that indicate that a job has stopped abruptly.
SIGNS_OF_STOPPAGE = [
"Error: The operation was canceled.",
"fatal error C1060: compiler is out of heap space",
]
def start_request_session():
s = requests.Session()
headers = {
"Accept": "application/vnd.github+json",
"X-GitHub-Api-Version": "2022-11-28",
}
if TOKEN:
headers["Authorization"] = f"Bearer {TOKEN}"
s.headers = headers
return s
def get_ci_run(repo_name, run_id):
url = f"https://api.github.com/repos/{repo_name}/actions/runs/{run_id}"
s = start_request_session()
response = s.get(url)
return response.json()
def evaluate_log_file_for_abrupt_stop(log_file):
with open(log_file) as f:
for i, line in enumerate(f):
for sign in SIGNS_OF_STOPPAGE:
if sign in line:
print(f"Found sign of abrupt stoppage in [line {i}]: '{sign}'")
return True
return False
def get_ci_specific_run_specific_failure_details(repo_name, run_id):
url = f"https://api.github.com/repos/{repo_name}/actions/runs/{run_id}/attempts/1/logs"
s = start_request_session()
response = s.get(url)
# SAVE zip file
with open("logs.zip", "wb") as f:
f.write(response.content)
# unzip file
with zipfile.ZipFile("logs.zip", "r") as zip_ref:
zip_ref.extractall("logs")
failed_logs = []
for file in pathlib.Path("logs").iterdir():
if file.is_dir():
continue
if evaluate_log_file_for_abrupt_stop(file):
failed_logs.append(file)
return failed_logs
def restart_job(repo_name, job_id):
url = f"https://api.github.com/repos/{repo_name}/actions/runs/{job_id}/rerun-failed-jobs"
s = start_request_session()
response = s.post(url)
return response.json()
def eval_jobs():
run = get_ci_run(REPO_OWNER, WORKFLOW_RUN_ID)
if run["run_attempt"] > 1:
print("This is not the first attempt. Exiting")
return
failed_logs = get_ci_specific_run_specific_failure_details(REPO_OWNER, WORKFLOW_RUN_ID)
if len(failed_logs) == 0:
print("No runs exhibit signs of abrupt stoppage")
return
print("restarting job", WORKFLOW_RUN_ID)
r = restart_job(REPO_OWNER, WORKFLOW_RUN_ID)
print(r)
shutil.rmtree("logs")
os.remove("logs.zip")
if __name__ == "__main__":
eval_jobs()
+37
View File
@@ -0,0 +1,37 @@
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
+92
View File
@@ -0,0 +1,92 @@
name: Publish-blenderbim-chocolatey package
on:
schedule:
# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12 or JAN-DEC)
# │ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT)
# * * * * *
- cron: "30 0 * * *" # 30min past utc midnight
env:
major: 0
minor: 0
name: blenderbim
choco_version: 1.1.0
CHOCO_TOKEN: ${{ secrets.CHOCO_TOKEN }}
jobs:
activate:
runs-on: ubuntu-latest
if: |
github.repository == 'IfcOpenShell/IfcOpenShell'
steps:
- name: Set env
run: echo ok go
build:
needs: activate
name: ${{ matrix.config.name }}-${{ matrix.pyver }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
pyver: [py310]
config:
- {
name: "Windows Build",
short_name: win,
}
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2 # https://github.com/actions/setup-python
with:
python-version: '3.10.9' # Version range or exact version of a Python version to use, using SemVer's version range syntax
architecture: 'x64' # optional x64 or x86. Defaults to x64 if not specified
- run: echo ${{ env.DATE }}
- name: Check in published releases if we should do a choco release
id: do_choco
run: |
echo "::set-output name=choco_release::$(python3 /home/runner/work/IfcOpenShell/IfcOpenShell/choco/blenderbim/check_repo_infos.py --do_choco_release?)"
- name: Fill chocolatey scripts on win with latest blender python
if: ${{steps.do_choco.outputs.choco_release}} == 'do_choco_release'
run: |
yesterday_non_iso="$(date --date='yesterday' +'%y%m%d' | tr -d '\n')" &&
target_os=${{ matrix.config.short_name }} &&
latest_blender_python_version_maj_min=$(python3 /home/runner/work/IfcOpenShell/IfcOpenShell/choco/blenderbim/check_repo_infos.py --latest_blender_python_version_maj_min?) &&
echo "latest_blender_python_version_maj_min?: $latest_blender_python_version_maj_min" &&
pyver=$(python3 /home/runner/work/IfcOpenShell/IfcOpenShell/choco/blenderbim/check_repo_infos.py --pyver?) &&
export latest_blender_version_maj_min=$(python3 /home/runner/work/IfcOpenShell/IfcOpenShell/choco/blenderbim/check_repo_infos.py --latest_blender_release_maj_min?) &&
export latest_blender_version_maj_min_pat=$(python3 /home/runner/work/IfcOpenShell/IfcOpenShell/choco/blenderbim/check_repo_infos.py --latest_blender_release_maj_min_pat?) &&
echo latest_blender_version_maj_min_pat?: $latest_blender_version_maj_min_pat &&
export blenderbim_build_version="${{ env.major }}.${{ env.minor }}.$yesterday_non_iso" &&
export url_blenderbim_py310_win_zip="https://github.com/IfcOpenShell/IfcOpenShell/releases/download/blenderbim-$yesterday_non_iso/blenderbim-$yesterday_non_iso-$pyver-$target_os.zip" &&
wget $url_blenderbim_py310_win_zip --no-verbose &&
export sha256sum_blenderbim_py310_win_zip=$( sha256sum blenderbim-$yesterday_non_iso-$pyver-$target_os.zip --tag | cut -d ' ' -f 4 | tr -d '\n') &&
echo sha256sum_blenderbim_py310_win_zip: $sha256sum_blenderbim_py310_win_zip &&
python3 choco/blenderbim/fill_dynamic_parameters.py &&
echo __build choco with mono &&
wget "https://github.com/chocolatey/choco/archive/refs/tags/$choco_version.tar.gz" --quiet &&
tar -xzf "$choco_version.tar.gz" &&
cd choco-$choco_version &&
chmod +x build.sh zip.sh &&
./build.sh &&
cp -r build_output/chocolatey /opt/chocolatey &&
cd /home/runner/work/IfcOpenShell/IfcOpenShell/choco/blenderbim/ &&
echo __choco pack &&
mono /opt/chocolatey/choco.exe --version &&
mono /opt/chocolatey/choco.exe pack --allow-unofficial &&
echo __choco set apiKey &&
mono /opt/chocolatey/choco.exe setapikey --key="$CHOCO_TOKEN" --source="https://push.chocolatey.org/" --allow-unofficial # &&
echo __choco push &&
mono /opt/chocolatey/choco.exe push --source="https://push.chocolatey.org/" --key="$CHOCO_TOKEN" --allow-unofficial --verbose
- name: Inform user about not packaging
if: ${{steps.do_choco.outputs.choco_release}} != 'do_choco_release'
run: |
echo "no releases found today ${{ env.DATE }}, therefore choco packaging is skipped."
@@ -0,0 +1,83 @@
name: Publish-blenderbim-multiplatform
on:
push:
paths:
- '.github/workflows/ci-blenderbim-matrix.yml'
- 'src/blenderbim/**'
- 'src/ifcopenshell-python/ifcopenshell/**'
- 'src/bcf/src/bcf/**'
- 'src/ifcclash/ifcclash/**'
- 'src/ifccobie/**'
- 'src/ifcdiff/**'
- 'src/ifccsv/**'
- 'src/ifcpatch/ifcpatch/**'
- 'src/ifc4d/ifc4d/**'
- 'src/ifc5d/ifc5d/**'
- 'src/ifccityjson/**'
branches:
- v0.7.0
env:
major: 0
minor: 0
name: blenderbim
jobs:
activate:
runs-on: ubuntu-latest
if: |
github.repository == 'IfcOpenShell/IfcOpenShell'
steps:
- name: Set env
run: echo ok go
build:
needs: activate
name: ${{ matrix.config.name }}-${{ matrix.pyver }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
pyver: [py39, py310]
config:
- {
name: "Windows Build",
short_name: win,
}
- {
name: "Linux Build",
short_name: linux
}
- {
name: "MacOS Build",
short_name: macos
}
- {
name: "MacOS ARM Build",
short_name: macosm1
}
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2 # https://github.com/actions/setup-python
with:
architecture: 'x64' # optional x64 or x86. Defaults to x64 if not specified
python-version: '3.10'
- run: echo ${{ env.DATE }}
- name: Get current date
id: date
run: echo "::set-output name=date::$(date +'%y%m%d')"
- name: Compile
run: |
cp -r src/blenderbim src/blenderbim_${{ matrix.config.short_name }}_${{ matrix.pyver }} &&
cd src/blenderbim_${{ matrix.config.short_name }}_${{ matrix.pyver }} &&
make dist PLATFORM=${{ matrix.config.short_name }} PYVERSION=${{ matrix.pyver }}
- name: Upload Zip file to release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: src/blenderbim_${{ matrix.config.short_name }}_${{ matrix.pyver }}/dist/blenderbim-${{steps.date.outputs.date}}-${{ matrix.pyver }}-${{ matrix.config.short_name }}.zip
asset_name: blenderbim-${{steps.date.outputs.date}}-${{ matrix.pyver }}-${{ matrix.config.short_name }}.zip
tag: "blenderbim-${{steps.date.outputs.date}}"
overwrite: true
body: "Daily developer testing build blenderbim-${{steps.date.outputs.date}}"
@@ -0,0 +1,73 @@
name: ci-ifcopenshell-conda-daily
on:
push:
paths:
- .github/workflows/ci-ifcopenshell-conda-daily.yml
- conda/**
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
jobs:
activate:
runs-on: ubuntu-latest
if: |
github.repository == 'IfcOpenShell/IfcOpenShell'
steps:
- name: Set env
run: echo ok go
test:
name: ${{ matrix.platform.distver }}-${{ matrix.pyver.name }}
needs: activate
runs-on: ${{ matrix.platform.distver }}
defaults:
run:
shell: bash -l {0}
strategy:
fail-fast: false
matrix:
pyver: [
{ name: py310, distver: '3.10'},
{ name: py311, distver: '3.11'}
]
platform: [
{ name: Windows, distver: windows-2022, upload: 'true' },
{ name: Linux, distver: ubuntu-22.04, upload: 'true' },
{ name: macOS, distver: macos-12, upload: 'true' }
]
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Download MacOSX SDK
if: ${{ matrix.platform.name == 'macOS' }}
run: |
curl -o MacOSX10.13.sdk.tar.xz -L https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX10.13.sdk.tar.xz && \
tar xf MacOSX10.13.sdk.tar.xz && \
sudo mv -v MacOSX10.13.sdk /opt/ && \
ls /opt/
- uses: seanmiddleditch/gha-setup-ninja@master
- uses: mamba-org/provision-with-micromamba@main # https://github.com/mamba-org/provision-with-micromamba
with:
channels: conda-forge
channel-priority: strict
environment-file: conda/environment.yml
extra-specs: |
python=${{ matrix.pyver.distver }}
- name: build, test and upload ifcopenshell
if: ${{ matrix.platform.upload == 'true' }}
run: |
conda-build . --python ${{ matrix.pyver.distver }} -c conda-forge --token ${{ secrets.ANACONDA_TOKEN }} --user ifcopenshell
working-directory: ./conda
- name: build & test ifcopenshell
if: ${{ matrix.platform.upload == 'false' }}
run: |
conda-build . --python ${{ matrix.pyver.distver }} -c conda-forge
working-directory: ./conda
@@ -0,0 +1,77 @@
name: ci-ifcopenshell-pypi
on:
schedule:
# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12 or JAN-DEC)
# │ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT)
# * * * * *
- cron: "0 0 18 * *"
push:
paths:
- '.github/workflows/ci-ifcopenshell-pypi.yml'
env:
major: 0
minor: 0
name: ifcopenshell
jobs:
activate:
runs-on: ubuntu-latest
if: |
github.repository == 'IfcOpenShell/IfcOpenShell'
steps:
- name: Set env
run: echo ok go
build:
needs: activate
name: ${{ matrix.config.name }}-${{ matrix.pyver }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
pyver: [py36, py37, py38, py39, py310, py311]
config:
- {
name: "Windows Build",
short_name: win,
}
- {
name: "Linux Build",
short_name: linux
}
- {
name: "MacOS Build",
short_name: macos
}
- {
name: "MacOS ARM Build",
short_name: macosm1
}
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2 # https://github.com/actions/setup-python
with:
python-version: '3.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
cp -r src/ifcopenshell-python src/ifcopenshell_${{ matrix.config.short_name }}_${{ matrix.pyver }} &&
cd src/ifcopenshell_${{ matrix.config.short_name }}_${{ matrix.pyver }} &&
make dist PLATFORM=${{ matrix.config.short_name }} PYVERSION=${{ matrix.pyver }}
- name: Publish a Python distribution to PyPI
uses: ortega2247/pypi-upload-action@master
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
packages_dir: src/ifcopenshell_${{ matrix.config.short_name }}_${{ matrix.pyver }}/dist
+57
View File
@@ -0,0 +1,57 @@
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 * *"
push:
paths:
- '.github/workflows/ci-ifctester-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
- 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/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
@@ -0,0 +1,98 @@
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
@@ -0,0 +1,34 @@
name: Restart failed daily conda builds
on:
workflow_run:
workflows: [ ci-ifcopenshell-conda-daily ]
types:
- completed
env:
REPO_OWNER: IfcOpenShell/IfcOpenShell
MY_WORKFLOW: ci-ifcopenshell-conda-daily
jobs:
restart-failed-runs:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
steps:
- name: checkout
uses: actions/checkout@v3
- name: Use python 3.11
uses: actions/setup-python@v2
with:
python-version: 3.11
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install requests
- name: Check for failed runs
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
WORKFLOW_RUN_ID: ${{ github.event.workflow_run.id }}
run: |
python check_repo_ci_jobs.py
working-directory: .github/workflows
+124
View File
@@ -0,0 +1,124 @@
name: ci
on:
push:
paths:
- 'src/ifcblender/**'
- 'src/ifcconvert/**'
- 'src/ifcgeom/**'
- 'src/ifcgeom_schema_agnostic/**'
- 'src/ifcgeomserver/**'
- 'src/ifcjni/**'
- 'src/ifcmax/**'
- 'src/ifcopenshell-python/**'
- '!src/ifcopenshell-python/docs/**'
- 'src/ifcparse/**'
- 'src/ifcwrap/**'
- 'src/qtviewer/**'
- 'src/serializers/**'
- 'conda/**'
- 'cmake/**'
- '.github/workflows/ci.yml'
pull_request:
jobs:
activate:
runs-on: ubuntu-latest
if: |
github.repository == 'IfcOpenShell/IfcOpenShell' &&
!contains(github.event.head_commit.message, 'skip ci')
steps:
- run: echo ok go
build:
runs-on: ubuntu-20.04
needs: activate
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Install C++ dependencies
run: |
sudo apt update
sudo apt-get install --no-install-recommends \
git cmake gcc g++ \
libboost-date-time-dev \
libboost-filesystem-dev \
libboost-iostreams-dev \
libboost-program-options-dev \
libboost-regex-dev \
libboost-system-dev \
libboost-thread-dev \
python3-all-dev python3-pip \
swig libpcre3-dev libxml2-dev \
libtbb-dev nlohmann-json3-dev \
libocct-foundation-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev libocct-ocaf-dev libocct-visualization-dev libocct-data-exchange-dev \
libhdf5-dev libcgal-dev
- name: ccache
uses: hendrikmuhs/ccache-action@v1
with:
key: ${GITHUB_WORKFLOW}
- name: Build ifcopenshell
run: |
mkdir build && cd build
cmake \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=/usr \
-DCMAKE_SYSTEM_PREFIX_PATH=/usr \
-DOCC_INCLUDE_DIR=/usr/include/opencascade \
-DOCC_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3 \
-DPYTHON_INCLUDE_DIR:PATH=/usr/include/python3.8 \
-DPYTHON_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libpython3.8.so \
-DCOLLADA_SUPPORT=Off \
"-DSCHEMA_VERSIONS=2x3;4;4x3_add1" \
-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: Run IfcConvert on Sample files
run: |
(find test/input src/blenderbim/test/files -name '*.ifc' | while read i; do \
echo $i | tee -a log; \
timeout 1m "$(which IfcConvert)" -yv "$i" "$i.obj" --validate >> log 2>&1; \
echo $i $? >> statuses; \
done) || true
echo Failed
grep -v 0$ statuses
grep -v 0$ statuses | wc -l
echo Succeeded
grep 0$ statuses
grep 0$ statuses | wc -l
- 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
run: |
cd test
sudo /usr/bin/python tests.py
cd ../src/ifcopenshell-python
mv ifcopenshell ifcopenshell-local # Force testing on installed module
make test
+117
View File
@@ -0,0 +1,117 @@
name: Release
on:
push:
tags:
- 'v[0-9].[0-9].[0-9]*'
jobs:
activate:
if: github.repository == 'IfcOpenShell/IfcOpenShell'
runs-on: ubuntu-latest
steps:
- run: echo ok go
build:
needs: activate
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v2
with:
submodules: recursive
- name: Install C++ dependencies
run: |
sudo apt update
sudo apt-get install --no-install-recommends \
git cmake gcc g++ \
libboost-date-time-dev \
libboost-filesystem-dev \
libboost-iostreams-dev \
libboost-program-options-dev \
libboost-regex-dev \
libboost-system-dev \
libboost-thread-dev \
python3-all-dev python3-pip \
swig libpcre3-dev libxml2-dev \
libtbb-dev nlohmann-json3-dev \
libocct-foundation-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev libocct-ocaf-dev libocct-visualization-dev libocct-data-exchange-dev \
libhdf5-dev libcgal-dev opencollada-dev
- name: Build
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
mkdir build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=$PWD/install/ \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=/usr \
-DCMAKE_SYSTEM_PREFIX_PATH=/usr \
-DBUILD_PACKAGE=On \
-DOCC_INCLUDE_DIR=/usr/include/opencascade \
-DOCC_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3 \
-DPYTHON_INCLUDE_DIR:PATH=/usr/include/python3.8 \
-DPYTHON_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libpython3.8.so \
-DLIBXML2_INCLUDE_DIR=/usr/include/libxml2 \
-DLIBXML2_LIBRARIES=/usr/lib/x86_64-linux-gnu/libxml2.so \
-DGLTF_SUPPORT=On \
-DJSON_INCLUDE_DIR=/usr/include \
-DCGAL_INCLUDE_DIR=/usr/include \
-DGMP_INCLUDE_DIR=/usr/include \
-DMPFR_INCLUDE_DIR=/usr/include \
-DGMP_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DMPFR_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DHDF5_INCLUDE_DIR=/usr/include/hdf5/serial \
-DOPENCOLLADA_INCLUDE_DIR=/usr/include/opencollada \
-DOPENCOLLADA_LIBRARY_DIR=/usr/lib/opencollada/ \
../cmake
make -j $(nproc)
make install
- name: Package
id: package
run: |
make package
echo ::set-output name=tgz::$( ls assets/*.tar.gz | head -n 1 | xargs basename )
echo ::set-output name=deb::$( ls assets/*.deb | head -n 1 | xargs basename )
working-directory: build
env:
CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Release
id: release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: true
body: |
Changes to this release
- add github actions support #1306
- add boost depends to ifcopenshell deb packaging
- <add more changes here>
See more details in the documentation
# body_path: build/CHANGELOG.md
- name: Upload TGZ
id: upload-tgz
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
asset_path: build/assets/${{ steps.package.outputs.tgz }}
asset_name: ${{ steps.package.outputs.tgz }}
asset_content_type: application/x-gzip
- name: Upload DEB
id: upload-deb
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
asset_path: build/assets/${{ steps.package.outputs.deb }}
asset_name: ${{ steps.package.outputs.deb }}
asset_content_type: application/vnd.debian.binary-package
+88 -4
View File
@@ -1,7 +1,19 @@
# Dependency and build folders created by the build scripts
/deps*/
/build*/
/install*/
/_deps/
/_build-vs*-x*/
/_deps-vs*-x*-installed/
/_installed-vs*-x*/
/build/
# output directories
/cmake/out/
/docs/out/
/src/examples/out/
/src/ifcmax/out/
/src/ifcwrap/out/
/src/qtviewer/out/
/win/BuildDepsCache*.txt
# IfcExpressParser residue
/src/ifcexpressparser/express_parser.py
@@ -10,7 +22,79 @@ __pycache__
*.py.bak
# Visual Studio Code files
.vscode
.vs
# PyCharm files
.idea
# OSX files
#Virtual Env Files
Pipfile
Pipfile.lock
# Docs
/docs/output
/docs/rst_files
/docs/doxygen
/src/ifcblenderexport/docs/_build
# gettext binary translation files
*.mo
# Vim
*.swp
*.swo
# Flask
instance/*
!instance/.gitignore
.webassets-cache
.env
*.db
# Byte-compiled / optimized / DLL files
*.py[cod]
*$py.class
# pipenv
Pipfile
Pipfile.lock
# Database
*.db
# PyTest
htmlcov
.coverage
# Blender
*.blend1
# Sphinx
_build/
# IDS Docs
src/ifcopenshell-python/test/build
# tox cache
.tox/
*.egg-info/
# mypy cache
.mypy_cache
# blenderbim libs
src/blenderbim/blenderbim/libs
# blenderbim test temp files
src/blenderbim/test/files/temp
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
# Brickschema
src/blenderbim/blenderbim/bim/schema/Brick.ttl
+6
View File
@@ -5,3 +5,9 @@
[submodule "src/ifcopenshell-python/ifcopenshell/mvd"]
path = src/ifcopenshell-python/ifcopenshell/mvd
url = https://github.com/opensourceBIM/python-mvdxml/
[submodule "src/svgfill"]
path = src/svgfill
url = https://github.com/IfcOpenShell/svgfill
[submodule "src/ifcopenshell-python/test/Sample-BIM-Files"]
path = src/ifcopenshell-python/test/Sample-BIM-Files
url = https://github.com/IfcOpenShell/ids-test-files
-68
View File
@@ -1,68 +0,0 @@
language: cpp
compiler:
- gcc
- clang
os: linux
dist: bionic
sudo: required
before_install:
- "sudo add-apt-repository -y ppa:freecad-community/ppa"
- sudo apt-get update -qq
install:
- |
sudo apt-get install -y \
libocct-data-exchange-dev libocct-foundation-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev \
libboost-system-dev libboost-program-options-dev libboost-regex-dev libboost-thread-dev libboost-date-time-dev libboost-iostreams-dev libboost-filesystem-dev \
build-essential cmake python2.7 libpython2.7-dev swig zlib1g liblzma5 opencollada-dev wget apt-transport-https
- sudo mkdir -p /usr/include/json/nlohmann/
- sudo wget https://github.com/nlohmann/json/releases/download/v3.6.1/json.hpp -O /usr/include/json/nlohmann/json.hpp
- sudo sh -c 'curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -'
- sudo sh -c 'curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list'
- sudo apt-get update -qq && sudo apt-get install -y dart
- export PATH=$PATH:/usr/lib/dart/bin:$HOME/.pub-cache/bin
- git clone https://github.com/KhronosGroup/glTF-Validator && pushd glTF-Validator && pub get && pub global activate --source path ./ && popd
script:
- pwd
- cd cmake
- mkdir build
- cd build
- |
cmake \
-DOCC_INCLUDE_DIR=/usr/include/opencascade \
-DOCC_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
-DPYTHON_LIBRARY=/usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7.so \
-DPYTHON_INCLUDE_DIR=/usr/include/python2.7 \
-DPYTHON_EXECUTABLE=/usr/bin/python2.7 \
-DLIBXML2_INCLUDE_DIR=/usr/include/libxml2 \
-DLIBXML2_LIBRARIES="/usr/lib/x86_64-linux-gnu/libxml2.a;/lib/x86_64-linux-gnu/libz.so.1;/lib/x86_64-linux-gnu/liblzma.so.5;/usr/lib/x86_64-linux-gnu/libicuuc.so;/usr/lib/x86_64-linux-gnu/libicudata.so" \
-DGLTF_SUPPORT=On \
-DJSON_INCLUDE_DIR=/usr/include/json \
..
- sudo make -j2 install
- cd ../../test
- /usr/bin/python2.7 tests.py
- cd input
- /usr/local/bin/IfcConvert -yv acad2010_walls.ifc acad2010_walls.glb
- gltf_validator acad2010_walls.glb
- python -c "from __future__ import print_function; from io import open; import ifcopenshell; f = ifcopenshell.open('encoding.ifc'); print(f[1][0], file=open('encoding.txt', 'w', encoding='utf-8'))" && grep "'a' 1m³ ≤ 5m³ ≥ 10m³" encoding.txt
- |
(for i in *.ifc; do \
echo $i | tee -a log; \
timeout 1m /usr/local/bin/IfcConvert -yv "$i" "$i.dae" --validate >> log 2>&1; \
echo $i $? >> statuses; \
done) || true
- echo Failed
- grep -v 0$ statuses
- grep -v 0$ statuses | wc -l
- echo Succeeded
- grep 0$ statuses
- grep 0$ statuses | wc -l
+2 -2
View File
@@ -1,7 +1,7 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -618,4 +618,4 @@ an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
END OF TERMS AND CONDITIONS
+1 -1
View File
@@ -1,7 +1,7 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
+39
View File
@@ -0,0 +1,39 @@
# -*- mode: Dockerfile -*-
FROM ubuntu:focal
ARG CHANNEL
ENV CHANNEL=${CHANNEL:-latest}
RUN apt-get update \
&& apt-get install -y \
vim \
ssh \
sudo \
wget \
software-properties-common ;\
rm -rf /var/lib/apt/lists/*
RUN useradd --user-group --create-home --shell /bin/bash IfcOpenShell ;\
echo "IfcOpenShell ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
ENV DEBIAN_FRONTEND=noninteractive
RUN echo "deb http://archive.ubuntu.com/ubuntu focal-proposed main restricted" | tee -a /etc/apt/sources.list; \
echo "deb http://archive.ubuntu.com/ubuntu focal-proposed universe" | tee -a /etc/apt/sources.list; \
echo "deb http://archive.ubuntu.com/ubuntu focal-proposed multiverse" | tee -a /etc/apt/sources.list; \
apt-get -qq update; \
apt-get -y install tzdata dos2unix rsync; \
apt-get -y install python3 libxml2 libpython3.8 \
libboost-all-dev \
libocct-foundation-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev \
libocct-ocaf-dev libocct-visualization-dev libocct-data-exchange-dev \
libhdf5-serial-dev python3-pytest ; \
rm -rf /var/lib/apt/lists/* ;
COPY . /home/IfcOpenShell/
RUN ls -lrtR /home/IfcOpenShell
RUN dpkg -i /home/IfcOpenShell/*.deb
USER IfcOpenShell
+68 -209
View File
@@ -1,224 +1,83 @@
IfcOpenShell
============
IfcOpenShell is an open source ([LGPL]) software library for working with the Industry Foundation Classes ([IFC])
file format. Currently supported IFC releases are [IFC2x3 TC1] and [IFC4 Add2 TC1].
For more information, see
* [http://ifcopenshell.org](http://ifcopenshell.org)
* [http://academy.ifcopenshell.org](http://academy.ifcopenshell.org)
<p align="center">
<img src="https://github.com/IfcOpenShell/IfcOpenShell/assets/88302/34901387-e2dd-4a0c-8e38-9ffc32a66cde">
</p>
[![Build Status](https://api.travis-ci.org/IfcOpenShell/IfcOpenShell.png)](https://api.travis-ci.org/IfcOpenShell/IfcOpenShell)
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, IFC4x2, and IFC4x3. 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.
Prerequisites
-------------
* Git
* CMake (2.6 or newer)
* Windows: [Visual Studio] 2008 or newer with C++ toolset (or [Visual C++ Build Tools]) or [MSYS2] + MinGW
* *nix: GCC 4.7 or newer, or Clang (any version)
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.
Dependencies
-------------
* [Boost](http://www.boost.org/)
* [Open Cascade](http://opencascade.org) - *optional*, but required for building IfcGeom
([official](http://www.opencascade.org/getocc/download/loadocc/), "OCCT", or [community edition](https://github.com/tpaviot/oce), "OCE")
For converting IFC representation items into BRep solids and tesselated meshes
* [OpenCOLLADA](https://github.com/khronosGroup/OpenCOLLADA/) - *optional*
For IfcConvert to be able to write tessellated Collada (.dae) files
* [SWIG](http://www.swig.org/) and [Python](https://www.python.org/) - *optional*
For building the IfcOpenShell Python interface and the Blender add-on
* [3ds Max SDK](http://www.autodesk.com/products/3ds-max/free-trial) - *optional*
For building the 3ds Max plug-in.
All recent versions of 3ds Max (2014 and newer) are 64-bit only, so a 64-bit installation is assumed.
For more information, see:
Building IfcOpenShell
---------------------
* [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)
* [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)
**Note:** The path where the source code is cloned to can contain spaces but non-ASCII characters are very likely to cause problems with the build.
| 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) |
| 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) |
### Compiling on Windows
The preferred way to fetch and build this project's dependencies is to use the build scripts
in win/ folder. **See [win/readme.md] for more information**.
Contents
--------
#### Using Visual Studio
Instructions in a nutshell (**assuming Visual Studio 2015 x64 environment variables set**):
Those marked with an asterisk are part of IfcOpenShell.
> cd IfcOpenShell\win
> build-deps.cmd
> run-cmake.bat
| 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 |
| ifc2ca | Utility to convert IFC structural analysis models to Code_Aster | LGPL-3.0-or-later |
| ifc4d | Convert to and from IFC and project management software | LGPL-3.0-or-later |
| ifc5d | Report and optimise cost information from IFC | LGPL-3.0-or-later |
| ifcbimtester | Wrapper for Gherkin based unit testing for IFC models | LGPL-3.0-or-later |
| 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 |
| ifcfm | Extract IFC data for FM handover requirements | LGPL-3.0-or-later |
| ifcgeom | Internal library for IfcOpenShell | LGPL-3.0-or-later\* |
| ifcgeom\_schema\_agnostic | Internal library for IfcOpenShell | LGPL-3.0-or-later\* |
| ifcgeomserver | Internal library for IfcOpenShell | LGPL-3.0-or-later\* |
| ifcjni | Internal library for IfcOpenShell | LGPL-3.0-or-later\* |
| ifcmax | Historic extension for IFC support in 3DS Max | LGPL-3.0-or-later\* |
| ifcopenshell-python | Python library for IFC manipulation | LGPL-3.0-or-later\* |
| ifcparse | Internal library for IfcOpenShell | LGPL-3.0-or-later\* |
| ifcpatch | Utility to run pre-packaged scripts to manipulate IFCs | LGPL-3.0-or-later |
| ifcsverchok | Blender Add-on for visual node programming with IFC | GPL-3.0-or-later |
| ifctester | Library, CLI and webapp for IDS model auditing | LGPL-3.0-or-later |
| ifcwrap | Internal library for IfcOpenShell | LGPL-3.0-or-later\* |
| qtviewer | Internal library for IfcOpenShell | LGPL-3.0-or-later\* |
| serializers | Internal library for IfcOpenShell | LGPL-3.0-or-later\* |
You can now open and build the solution file in Visual Studio:
> ..\build-vs2015-x64\IfcOpenShell.sln
As the scripts default to using the `RelWithDebInfo` configuration, and a freshly created solution by CMake defaults
to `Debug`, make sure to switch the used build configuration. Build the `INSTALL` project (right-click -> Project
Only) to deploy the headers and binaries into a single location if wanted/needed.
Alternatively, one can use the utility batch file(s) to build and install the project easily from the command-line
(installing a project will build it also, if required):
> install-ifcopenshell.bat
#### Using MSYS2 + MinGW
Start the MSYS2 Shell and then:
$ cd IfcOpenShell/win
$ ./build-deps.sh
$ ./run-cmake.sh
$ ./install-ifcopenshell.sh
#### Using Bash on Ubuntu on Windows
Start Bash on Ubuntu on Windows and follow the instructions below. Compiling on Ubuntu 14.04.4 LTS using GCC 4.8.4
or Clang 3.5 has been confirmed to work.
### Compiling on *nix
The following instructions are for Ubuntu, modify as required for other operating systems. [nix/build-all.py] script
can be experimented with and studied for pointers for other operating systems, but note that this script is not currently
meant to be used for a typical IfcOpenShell workspace setup.
Note: where `make -j` is written, add a number roughly equal to the amount of CPU cores + 1.
**1)** Install most of the prerequisites and dependencies:
$ sudo apt-get install git cmake gcc g++ libboost-all-dev
**2a)** Either use an OCE package from your operating system's software repository
$ sudo apt-get install liboce-foundation-dev liboce-modeling-dev liboce-ocaf-dev liboce-visualization-dev liboce-ocaf-lite-dev
**2b)** or (if not available, or the latest code is wanted) compile OCE yourself (note that the build takes a long time):
$ sudo apt-get install libftgl-dev libtbb2 libtbb-dev libgl1-mesa-dev libfreetype6-dev
$ git clone https://github.com/tpaviot/oce.git
$ cd oce
$ mkdir build && cd build
$ cmake ..
$ make -j
$ sudo make install
**2c)** or obtain and compile OCCT from http://www.opencascade.org/getocc/download/loadocc/
**3)** For building IfcConvert with COLLADA (.dae) support (on by default), OpenCOLLADA is needed:
$ sudo apt-get install libpcre3-dev libxml2-dev
$ git clone https://github.com/KhronosGroup/OpenCOLLADA.git
$ cd OpenCOLLADA
Using a known good revision, but HEAD should work too:
$ git checkout 064a60b65c2c31b94f013820856bc84fb1937cc6
$ mkdir build && cd build
$ cmake ..
$ make -j
$ sudo make install
**4)** For building the IfcPython wrapper (on by default), SWIG and Python development are needed, if not already available:
$ sudo apt-get install python-all-dev swig
**5)** To build IfcOpenShell please take the following steps. Alternatively use environment variables for setting the
dependencies' paths. `OCC_INCLUDE_DIR` might be needed to set also. `OPENCOLLADA_INCLUDE_DIR` and `OPENCOLLADA_LIBRARY_DIR`
(and potentially `PCRE_LIBRARY_DIR`) are needed if building with COLLADA support. (`-DCOLLADA_SUPPORT=0` disables it).
$ cd /path/to/IfcOpenShell
$ mkdir build && cd build
$ cmake ../cmake -DOCC_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu/ \
-DOPENCOLLADA_INCLUDE_DIR="/usr/local/include/opencollada" \
-DOPENCOLLADA_LIBRARY_DIR="/usr/local/lib/opencollada" \
-DPCRE_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu/
$ make -j
If all worked out correctly you can now use IfcOpenShell. See the examples below.
**6)** Install the project if wanted:
$ sudo make install
Installing IfcOpenShell with Conda
----------------------------------
Another option for building and installing IfcOpenShell is to use the popular
[Anaconda Python Distribution](https://www.anaconda.com/download).
The requirements are spread across a number of channels.
You can add these channels to your configuration, or specify them all on the command line:
$ conda install -c conda-forge -c oce -c dlr-sc -c ifcopenshell ifcopenshell
Usage examples
--------------
**Invoking IfcConvert from the command line**
$ wget ftp://ftp.dds.no/pub/ifc/Munkerud/Munkerud_hus6_BE.zip
$ unzip Munkerud_hus6_BE.zip
$ ./IfcConvert Munkerud_hus6_BE.ifc
$ less Munkerud_hus6_BE.obj
**Using the IfcOpenShell Python interface**
$ wget -O duplex.zip http://projects.buildingsmartalliance.org/files/?artifact_id=4278
$ unzip duplex.zip
$ python
>>> import ifcopenshell
>>> f = ifcopenshell.open("Duplex_A_20110907_optimized.ifc")
>>>
>>> # Accessing entity instances by type:
>>> f.by_type("ifcwall")[:2]
[#91=IfcWallStandardCase('2O2Fr$t4X7Zf8NOew3FL9r',#1,'Basic Wall:Interior - Partition (92mm Stud):144586',$,'Basic Wall:Interior - Partition (92mm Stud):128360',#5198,#18806,'144586'), #92=IfcWallStandardCase('2O2Fr$t4X7Zf8NOew3FLIE',#1,'Basic Wall:Interior - Partition (92mm Stud):143921',$,'Basic Wall:Interior - Partition (92mm Stud):128360',#5206,#18805,'143921')]
>>> wall = _[0]
>>> len(wall) # number of EXPRESS attributes
8
>>>
>>> # Accessing EXPRESS attributes by name:
>>> wall.GlobalId
'2O2Fr$t4X7Zf8NOew3FL9r'
>>> wall.Name = "My wall"
>>> wall.NonExistingAttr
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File ".\ifcopenshell.py", line 14, in __getattr__
except: raise AttributeError("entity instance of type '%s' has no attribute'%s'"%(self.wrapped_data.is_a(), name)) from None
AttributeError: entity instance of type 'IfcWallStandardCase' has no attribute 'NonExistingAttr'
>>> wall.GlobalId = 3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File ".\ifcopenshell.py", line 26, in __setattr__
self[self.wrapped_data.get_argument_index(key)] = value
File ".\ifcopenshell.py", line 30, in __setitem__
self.wrapped_data.set_argument(idx, entity_instance.map_value(value))
File ".\ifc_wrapper.py", line 118, in <lambda>
set_argument = lambda self,x,y: self._set_argument(x) if y is None else self
._set_argument(x,y)
File ".\ifc_wrapper.py", line 114, in _set_argument
def _set_argument(self, *args): return _ifc_wrapper.entity_instance__set_argument(self, *args)
RuntimeError: INT is not a valid type for 'GlobalId'
>>> # Creating new entity instances
>>> f.createIfcCartesianPoint(Coordinates=(1.0,1.5,2.0))
#27530=IfcCartesianPoint((1.,1.5,2.))
>>>
>>> # Working with GlobalId attributes:
>>> import uuid
>>> ifcopenshell.guid.compress(uuid.uuid1().hex)
'3x4C8Q_6qHuv$P$FYkANRX'
>>> new_guid = _
>>> owner_hist = f.by_type("IfcOwnerHistory")[0]
>>> new_wall = f.createIfcWallStandardCase(new_guid, owner_hist, None, None, Tag='my_tag')
>>> new_wall.ObjectType = ''
>>> new_wall.ObjectPlacement = new_wall.Representation = None
>>>
>>> # Accessing entity instances by instance id or GlobalId:
>>> f[92]
#92=IfcWallStandardCase('2O2Fr$t4X7Zf8NOew3FLIE',#1,'Basic Wall:Interior - Partition (92mm Stud):143921',$,'Basic Wall:Interior - Partition (92mm Stud):128360',#5206,#18805,'143921')
>>> f['2O2Fr$t4X7Zf8NOew3FLIE']
#92=IfcWallStandardCase('2O2Fr$t4X7Zf8NOew3FLIE',#1,'Basic Wall:Interior - Partition (92mm Stud):143921',$,'Basic Wall:Interior - Partition (92mm Stud):128360',#5206,#18805,'143921')
>>>
>>> # Writing IFC-SPF files to disk:
>>> f.write("out.ifc")
[LGPL]: https://github.com/IfcOpenShell/IfcOpenShell/tree/master/COPYING "LGPL"
[IFC]: http://www.buildingsmart-tech.org/specifications/ifc-overview "IFC"
[IFC2x3 TC1]: http://www.buildingsmart-tech.org/specifications/ifc-releases/ifc2x3-tc1-release "IFC2x3 TC1"
[IFC4 Add1]: http://www.buildingsmart-tech.org/specifications/ifc-releases/ifc4-add1-release "IFC4 Add1"
[LGPL]: https://github.com/IfcOpenShell/IfcOpenShell/tree/master/COPYING.LESSER "LGPL-3.0-or-later"
[IFC]: https://technical.buildingsmart.org/standards/ifc/ "IFC"
[IFC2x3 TC1]: https://standards.buildingsmart.org/IFC/RELEASE/IFC2x3/TC1/HTML/ "IFC2x3 TC1"
[IFC4 Add2 TC1]: https://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2_TC1/HTML/ "IFC4 Add2 TC1"
[Visual Studio]: https://www.visualstudio.com/ "Visual Studio"
[Visual C++ Build Tools]: http://landinghub.visualstudio.com/visual-cpp-build-tools "Visual C++ Build Tools"
[MSYS2]: https://msys2.github.io/ "MSYS2"
+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
+34
View File
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Do not remove this test for UTF-8: if “Ω” doesnt appear as greek uppercase omega letter enclosed in quotation marks, you should use an editor that supports UTF-8, not this one. -->
<package xmlns="http://schemas.microsoft.com/packaging/2015/06/nuspec.xsd">
<metadata>
<id>blenderbim-nightly</id>
<version>blenderbim_build_version-alpha</version>
<packageSourceUrl>https://github.com/IfcOpenShell/IfcOpenShell</packageSourceUrl>
<owners>fbpyr</owners>
<!-- == SOFTWARE SPECIFIC SECTION == -->
<title>BlenderBIM install nightly</title>
<authors>Dion Moult and many more, see: https://github.com/IfcOpenShell/IfcOpenShell/graphs/contributors</authors>
<projectUrl>https://github.com/IfcOpenShell/IfcOpenShell</projectUrl>
<iconUrl>https://rawcdn.githack.com/IfcOpenShell/IfcOpenShell/c6ee1d1679d1298de0d7447ff108c22709c68e54/choco/blenderbim/blenderbim.png</iconUrl>
<!-- <copyright>Year Software Vendor</copyright> -->
<licenseUrl>https://github.com/IfcOpenShell/IfcOpenShell/blob/v0.7.0/COPYING</licenseUrl>
<requireLicenseAcceptance>true</requireLicenseAcceptance>
<projectSourceUrl>https://github.com/IfcOpenShell/IfcOpenShell</projectSourceUrl>
<docsUrl>https://blenderbim.org/docs/</docsUrl>
<!--<mailingListUrl></mailingListUrl>-->
<bugTrackerUrl>https://github.com/IfcOpenShell/IfcOpenShell/issues</bugTrackerUrl>
<tags>blender bim blenderbim ifc python opensource foss</tags>
<summary>opensource bim</summary>
<description>opensource bim addon for blender - source code at: https://github.com/IfcOpenShell/IfcOpenShell</description>
<!-- <releaseNotes>__REPLACE_OR_REMOVE__MarkDown_Okay</releaseNotes> -->
<dependencies>
<dependency id="blender" version="latest_blender_version_maj_min_pat" />
<dependency id="7zip" version="22.1"/>
</dependencies>
</metadata>
<files>
<file src="tools\**" target="tools" />
</files>
</package>
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

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

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

+240
View File
@@ -0,0 +1,240 @@
APPLY_DEFAULT_MATERIALS
-----------------------
Given the command invocation:
Duplex_A_20110907_optimized.ifc d.dae -yv --include attribute GlobalId 3bXiCStxP6Fgxdej$yc50U
You will find log messages along the lines of
[Warning] {3bXiCStxP6Fgxdej$yc50U} No material and surface styles for:
#333=IfcCovering('3bXiCStxP6Fgxdej$yc50U',#1,'Compound Ceiling:Gypsum Board:187483',$,'Compound Ceiling:Gypsum Board',#17840,#17052,'187483',.CEILING.)
This means that there is no IfcStyledItem associated to the representation items and that the element does not have an IfcMaterial association with IfcMaterialRepresentation from which we can derive a style (colour) for the element.
The interactive session below shows how with this setting enabled you will get a default generated material from the IFC element entity type and material indices of 0 pointing to that. With this setting disabled the material index would be -1 to indicate a missing style. Note that there is one material index for every triangle in the list of `shp.geometry.faces`.
>>> import ifcopenshell, ifcopenshell.geom
>>> f = ifcopenshell.open("Duplex_A_20110907_optimized.ifc")
>>> s = ifcopenshell.geom.settings()
>>> c = f["3bXiCStxP6Fgxdej$yc50U"]
>>>
>>> shp = ifcopenshell.geom.create_shape(s, c)
>>> shp.geometry.material_ids
(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)
>>> [(m.name, m.diffuse) for m in shp.geometry.materials]
[]
>>>
>>> s.set(s.APPLY_DEFAULT_MATERIALS, True)
>>> shp = ifcopenshell.geom.create_shape(s, c)
>>> shp.geometry.material_ids
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
>>> [(m.name, m.diffuse) for m in shp.geometry.materials]
[('IfcCovering', (0.7, 0.7, 0.7))]
This is enabled by default for the IfcConvert serializers as they will not gracefully handle -1 material indices and allows users to quickly assign colours based on entity types in their modelling applications.
APPLY_LAYERSETS
---------------
This setting is available in IfcConvert as `--enable-layerset-slicing`.
For IfcWall and IfcSlab elements, takes the associated IfcMaterialLayerSet and builds a set of surfaces to segment the building element geometry.
Note that enabling this settings is computationally intensive as it involves 3D Boolean operations.
Duplex_A_20110907_optimized.ifc d1.dae -yv --include attribute GlobalId 2O2Fr$t4X7Zf8NOew3FNr2
![Image of d1.dae](images/settings-1.png)
Duplex_A_20110907_optimized.ifc d2.dae --enable-layerset-slicing -yv --include attribute GlobalId 2O2Fr$t4X7Zf8NOew3FNr2
![Image of d2.dae](images/settings-2.png)
BUILDING_LOCAL_PLACEMENT
------------------------
This setting is available in IfcConvert using `--building-local-placement`.
In the typical IfcSite > IfcBuilding > IfcBuildingStorey > ... hierarchy of elements, don't incorporate the ObjectPlacement of the IfcBuilding and above in the placement of elements in the output. This is useful when there is a large offset in this placement that reduces precision in further processing.
CONVERT_BACK_UNITS
------------------
This setting is available in IfcConvert using `--convert-back-units`.
Internally IfcOpenShell uses meters as the global length unit to do calculations. This setting restores the coordinate positions after conversion by multiplying the factor of the IfcUnit with UnitType=LENGTHUNIT into the output geometry coordinate values.
DISABLE_OPENING_SUBTRACTIONS
----------------------------
This setting is available in IfcConvert using `--disable-opening-subtraction`.
As in most viewer applications, IfcOpeningElement geometry is subtracted from their host elements. This setting disables this behavior.
Duplex_A_20110907_optimized.ifc d1.dae -yv --include attribute GlobalId 2O2Fr$t4X7Zf8NOew3FNr2
![Image of d1.dae](images/settings-1.png)
Duplex_A_20110907_optimized.ifc d3.dae --disable-opening-subtraction -yv --include attribute GlobalId 2O2Fr$t4X7Zf8NOew3FNr2
![Image of d3.dae](images/settings-3.png)
Note that disabling this settings will reduce processing time and improve robustness as it involves 3D Boolean operations.
DISABLE_TRIANGULATION
---------------------
To be used in conjunction with `USE_BREP_DATA`. Do not apply the triangulation and - when `USE_BREP_DATA` is set - return a OpenCASCADE serialized TopoDS_Shape from `create_shape()` and `iterator`.
>>> import ifcopenshell, ifcopenshell.geom
>>> s = ifcopenshell.geom.settings()
>>> s.set(s.DISABLE_TRIANGULATION, True)
>>> s.set(s.USE_BREP_DATA, True)
>>> f = ifcopenshell.open("Duplex_A_20110907_optimized.ifc")
>>> c = f["3bXiCStxP6Fgxdej$yc50U"]
>>> shp = ifcopenshell.geom.create_shape(s, c)
>>> print(shp.geometry.brep_data)
CASCADE Topology V1, (c) Matra-Datavision
Locations 0
Curve2ds 0
Curves 12
1 4.6750000000000034 -8.0749999999999904 2.657 -2.0455514041918775e-15 -1 0
1 4.6750000000000034 -8.0749999999999904 2.657 1 -3.435893306383461e-15 0
1 6.2260000000000044 -8.0749999999999957 2.657 -2.0455514041918724e-15 -1 0
1 6.226 -10.246000000000031 2.657 -1 6.8717866127669219e-15 0
...
EDGE_ARROWS
-----------
When `INCLUDE_CURVES` is true and geometric elements include curves (such as the wall axis), add arrow heads to the edges to indicate direction of the curve.
Duplex_A_20110907_optimized.ifc d4.dae --model --plan --edge-arrows -yv --include attribute GlobalId 2O2Fr$t4X7Zf8NOew3FNr2
![Image of d4.dae](images/settings-4.png)
EXCLUDE_SOLIDS_AND_SURFACES
---------------------------
Exclude faces, shells and solids from geometrical output. Implied when using `--plan` without `--model` in IfcConvert.
FASTER_BOOLEANS
---------------
NOTE: Only applicable when using OCCT 6.9 and earlier.
This setting is available in IfcConvert using `--merge-boolean-operands`.
Fuse the collection of all boolean operands into a single union before applying the boolean subtraction, as opposed to doing individual subtractions. This likely improves performance. From OCCT 7.0 onwards the boolean operations with multiple arguments is used.
GENERATE_UVS
------------
This setting is available in IfcConvert using `--generate-uvs`.
Applies a box projection on the generated geometry for the element to obtain UV coordinates. This is purely generated, it does not involve texture coordinates stored in the IFC model.
Duplex_A_20110907_optimized.ifc d5.dae --generate-uvs -yv --include attribute GlobalId 2O2Fr$t4X7Zf8NOew3FNr2
![Image of d5.dae with a UV grid applied in Blender](images/settings-5.png)
INCLUDE_CURVES
--------------
This setting is available in IfcConvert using `--plan`.
Include edge and wire geometries in the geometric output.
LAYERSET_FIRST
--------------
This setting is available in IfcConvert using `--layerset-first`.
When not using APPLY_LAYERSETS, take the first material layer from the set to use as the material for the overall element.
NO_NORMALS
----------
This setting is available in IfcConvert using `--no-normals`.
Do not emit normals on geometric output
SEARCH_FLOOR
------------
Note: Only applicable to Collada .DAE output when used from IfcConvert.
This setting is available in IfcConvert using `--use-element-hierarchy`.
Include the spatial hierarchy in the elements.
SEW_SHELLS
----------
This setting is available in IfcConvert using `--orient-shells`.
Re-orient or sew connected face sets to have a consistent outwards orientation.
SITE_LOCAL_PLACEMENT
--------------------
This setting is available in IfcConvert using `--site-local-placement`.
See `BUILDING_LOCAL_PLACEMENT`, but exclude also the ObjectPlacement of the IfcSite.
USE_BREP_DATA
-------------
See `DISABLE_TRIANGULATION`.
USE_PYTHON_OPENCASCADE
----------------------
Note: Only available when an import of `OCC.Core.BRepTools` or `OCC.BRepTools` succeeds.
This implies `USE_WORLD_COORDS` `USE_BREP_DATA` and `DISABLE_TRIANGULATION`. The serialized TopoDS_Shape of `USE_BREP_DATA` is deserialized by Python OpenCASCADE.
USE_WORLD_COORDS
----------------
Apply the ObjectPlacement of the building elements to the geometric output. This is implied when using the Wavefront .OBJ output in IfcConvert. Note that this also eliminates the possibility for geometric elements to point to the same interpreted geometry result.
VALIDATE_QUANTITIES
-------------------
This setting is available in IfcConvert using `--validate`.
Running IfcConvert with `--validate` will set a non-zero exit code when ever a log message with severity equal or greater than ERROR has been emitted.
Currently for internal use only. For every building element geometry converted, looks for an associated quantity set where the OwnerHistory's organization name is IfcOpenShell. And looks for the quantities "Total Surface Area", "Volume", "Shape Validation Properties.Surface Genus" and validates these according to the interpreted geometry definition. Emit Logger::Error when calculated values are outside of the tolerance range for the value stored in the model.
WELD_VERTICES
-------------
Note: In Python, this setting is *on* by default.
Note: This setting only affects triangulated output.
This setting is available in IfcConvert using `--weld-vertices`.
Discards normals and joins vertices solely based on position. This is useful when output is to be modified in a modeling application.
>>> import ifcopenshell, ifcopenshell.geom
>>> s = ifcopenshell.geom.settings()
>>> s.set(s.WELD_VERTICES, False)
>>> f = ifcopenshell.open("Duplex_A_20110907_optimized.ifc")
>>> c = f["3bXiCStxP6Fgxdej$yc50U"]
>>> shp = ifcopenshell.geom.create_shape(s, c)
>>> shp.geometry.verts
(4.675000000000003, -8.07499999999999, 2.657, 4.674999999999999, -10.24600000000002, 2.657, 6.226000000000004, -8.074999999999996, 2.657, 6.226, -10.24600000000003, 2.657, 4.675000000000003, -8.07499999999999, 2.6, 4.674999999999999, -10.24600000000002, 2.6, 6.226000000000004, -8.074999999999996, 2.6, 6.226, -10.24600000000003, 2.6, 4.674999999999999, -10.24600000000002, 2.657, 4.674999999999999, -10.24600000000002, 2.6, 4.675000000000003, -8.07499999999999, 2.657, 4.675000000000003, -8.07499999999999, 2.6, 6.226, -10.24600000000003, 2.657, 4.674999999999999, -10.24600000000002, 2.657, 6.226, -10.24600000000003, 2.6, 4.674999999999999, -10.24600000000002, 2.6, 6.226000000000004, -8.074999999999996, 2.657, 6.226, -10.24600000000003, 2.657, 6.226000000000004, -8.074999999999996, 2.6, 6.226, -10.24600000000003, 2.6, 4.675000000000003, -8.07499999999999, 2.657, 4.675000000000003, -8.07499999999999, 2.6, 6.226000000000004, -8.074999999999996, 2.657, 6.226000000000004, -8.074999999999996, 2.6)
>>> shp.geometry.normals
(3.059754518198021e-17, 0.0, -1.0, 3.059754518198021e-17, 0.0, -1.0, 3.059754518198021e-17, 0.0, -1.0, 3.059754518198021e-17, 0.0, -1.0, 2.110175529791737e-16, 0.0, -1.0, 2.110175529791737e-16, 0.0, -1.0, 2.110175529791737e-16, 0.0, -1.0, 2.110175529791737e-16, 0.0, -1.0, -1.0, 1.79434333701042e-15, 0.0, -1.0, 1.79434333701042e-15, 0.0, -1.0, 1.79434333701042e-15, 0.0, -1.0, 1.79434333701042e-15, 0.0, 6.8717866127669046e-15, 1.0, 0.0, 6.8717866127669046e-15, 1.0, 0.0, 6.8717866127669046e-15, 1.0, 0.0, 6.8717866127669046e-15, 1.0, 0.0, -1.0, 1.79434333701042e-15, 0.0, -1.0, 1.79434333701042e-15, 0.0, -1.0, 1.79434333701042e-15, 0.0, -1.0, 1.79434333701042e-15, 0.0, 3.4358933063834523e-15, 1.0, 0.0, 3.4358933063834523e-15, 1.0, 0.0, 3.4358933063834523e-15, 1.0, 0.0, 3.4358933063834523e-15, 1.0, 0.0)
>>>
>>> s.set(s.WELD_VERTICES, True)
>>> shp = ifcopenshell.geom.create_shape(s, c)
>>> shp.geometry.verts
(4.675000000000003, -8.07499999999999, 2.657, 4.674999999999999, -10.24600000000002, 2.657, 6.226000000000004, -8.074999999999996, 2.657, 6.226, -10.24600000000003, 2.657, 4.675000000000003, -8.07499999999999, 2.6, 4.674999999999999, -10.24600000000002, 2.6, 6.226000000000004, -8.074999999999996, 2.6, 6.226, -10.24600000000003, 2.6)
>>> shp.geometry.normals
()
+10
View File
@@ -0,0 +1,10 @@
IfcOpenShell
============
.. toctree::
:maxdepth: 3
rst_files/library_root
* `ifcopenshell-python documentation <python/html/index.html>`_
+501 -395
View File
File diff suppressed because it is too large Load Diff
+20
View File
@@ -0,0 +1,20 @@
--- a/tools/build/src/tools/emscripten.jam
+++ b/tools/build/src/tools/emscripten.jam
@@ -6,6 +6,7 @@
import feature ;
import os ;
import toolset ;
+import generators ;
import common ;
import gcc ;
import type ;
@@ -52,6 +53,8 @@
<debug-symbols>off <debug-symbols>on
<rtti>off <rtti>on
;
+generators.override builtin.lib-generator : emscripten.prebuilt ;
+generators.override emscripten.searched-lib-generator : searched-lib-generator ;
type.set-generated-target-suffix EXE : <toolset>emscripten : "js" ;
type.set-generated-target-suffix OBJ : <toolset>emscripten : "bc" ;
+99
View File
@@ -0,0 +1,99 @@
diff --git a/src/Message/Message_PrinterSystemLog.cxx b/src/Message/Message_PrinterSystemLog.cxx
index 0c82c2167..a2e9e6d68 100644
--- a/src/Message/Message_PrinterSystemLog.cxx
+++ b/src/Message/Message_PrinterSystemLog.cxx
@@ -55,27 +55,6 @@
return ANDROID_LOG_DEBUG;
}
#elif defined(__EMSCRIPTEN__)
- #include <emscripten/emscripten.h>
-
- //! Print message to console.debug().
- EM_JS(void, occJSConsoleDebug, (const char* theStr), {
- console.debug(UTF8ToString(theStr));
- });
-
- //! Print message to console.info().
- EM_JS(void, occJSConsoleInfo, (const char* theStr), {
- console.info(UTF8ToString(theStr));
- });
-
- //! Print message to console.warn().
- EM_JS(void, occJSConsoleWarn, (const char* theStr), {
- console.warn(UTF8ToString(theStr));
- });
-
- //! Print message to console.error().
- EM_JS(void, occJSConsoleError, (const char* theStr), {
- console.error(UTF8ToString(theStr));
- });
#else
#include <syslog.h>
@@ -169,16 +148,6 @@ void Message_PrinterSystemLog::send (const TCollection_AsciiString& theString,
#elif defined(__ANDROID__)
__android_log_write (getAndroidLogPriority (theGravity), myEventSourceName.ToCString(), theString.ToCString());
#elif defined(__EMSCRIPTEN__)
- // don't use bogus emscripten_log() corrupting UNICODE strings
- switch (theGravity)
- {
- case Message_Trace: occJSConsoleDebug(theString.ToCString()); return;
- case Message_Info: occJSConsoleInfo (theString.ToCString()); return;
- case Message_Warning: occJSConsoleWarn (theString.ToCString()); return;
- case Message_Alarm: occJSConsoleError(theString.ToCString()); return;
- case Message_Fail: occJSConsoleError(theString.ToCString()); return;
- }
- occJSConsoleWarn (theString.ToCString());
#else
syslog (getSysLogPriority (theGravity), "%s", theString.ToCString());
#endif
diff --git a/src/OSD/OSD_MemInfo.cxx b/src/OSD/OSD_MemInfo.cxx
index 08a939beb..7c1fc79b3 100644
--- a/src/OSD/OSD_MemInfo.cxx
+++ b/src/OSD/OSD_MemInfo.cxx
@@ -37,15 +37,6 @@
#include <OSD_MemInfo.hxx>
-#if defined(__EMSCRIPTEN__)
- #include <emscripten.h>
-
- //! Return WebAssembly heap size in bytes.
- EM_JS(size_t, OSD_MemInfo_getModuleHeapLength, (), {
- return Module.HEAP8.length;
- });
-#endif
-
// =======================================================================
// function : OSD_MemInfo
// purpose :
@@ -156,29 +147,6 @@ void OSD_MemInfo::Update()
}
#elif defined(__EMSCRIPTEN__)
- if (IsActive (MemHeapUsage)
- || IsActive (MemWorkingSet)
- || IsActive (MemWorkingSetPeak))
- {
- // /proc/%d/status is not emulated - get more info from mallinfo()
- const struct mallinfo aMI = mallinfo();
- if (IsActive (MemHeapUsage))
- {
- myCounters[MemHeapUsage] = aMI.uordblks;
- }
- if (IsActive (MemWorkingSet))
- {
- myCounters[MemWorkingSet] = aMI.uordblks;
- }
- if (IsActive (MemWorkingSetPeak))
- {
- myCounters[MemWorkingSetPeak] = aMI.usmblks;
- }
- }
- if (IsActive (MemVirtual))
- {
- myCounters[MemVirtual] = OSD_MemInfo_getModuleHeapLength();
- }
#elif (defined(__linux__) || defined(__linux))
if (IsActive (MemHeapUsage))
{
@@ -0,0 +1,29 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 95abbe21..293c951c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -284,10 +284,10 @@ add_subdirectory(COLLADASaxFrameworkLoader)
add_subdirectory(COLLADAStreamWriter)
# building COLLADAValidator app
-add_subdirectory(COLLADAValidator)
+# add_subdirectory(COLLADAValidator)
# DAE validator app
-add_subdirectory(DAEValidator)
+# add_subdirectory(DAEValidator)
# Library export
install(EXPORT LibraryExport DESTINATION ${OPENCOLLADA_INST_CMAKECONFIG} FILE OpenCOLLADATargets.cmake)
diff --git a/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp b/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp
index 1f9a3eef..dd6f5c59 100644
--- a/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp
+++ b/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp
@@ -10,6 +10,7 @@
#include "GeneratedSaxParserUtils.h"
#include <math.h>
+#include <cmath>
#include <memory>
#include <string.h>
#include <limits>
+81
View File
@@ -0,0 +1,81 @@
diff --git a/COLLADABaseUtils/include/COLLADABUhash_map.h b/COLLADABaseUtils/include/COLLADABUhash_map.h
index 8ab0fb9b..12503bfb 100644
--- a/COLLADABaseUtils/include/COLLADABUhash_map.h
+++ b/COLLADABaseUtils/include/COLLADABUhash_map.h
@@ -32,9 +32,9 @@
#include <unordered_map>
#include <unordered_set>
- #define COLLADABU_HASH_MAP std::tr1::unordered_map
- #define COLLADABU_HASH_MULTIMAP std::tr1::unordered_multimap
- #define COLLADABU_HASH_SET std::tr1::unordered_set
+ #define COLLADABU_HASH_MAP std::unordered_map
+ #define COLLADABU_HASH_MULTIMAP std::unordered_multimap
+ #define COLLADABU_HASH_SET std::unordered_set
#define COLLADABU_HASH_NAMESPACE_OPEN std { namespace tr1
#define COLLADABU_HASH_NAMESPACE_CLOSE }
#define COLLADABU_HASH_FUN hash
@@ -50,12 +50,12 @@
#define COLLADABU_HASH_FUN hash
#endif
#elif defined(__MINGW32__) || defined(__MINGW64__)
- #include <tr1/unordered_map>
- #include <tr1/unordered_set>
+ #include <unordered_map>
+ #include <unordered_set>
- #define COLLADABU_HASH_MAP std::tr1::unordered_map
- #define COLLADABU_HASH_MULTIMAP std::tr1::unordered_multimap
- #define COLLADABU_HASH_SET std::tr1::unordered_set
+ #define COLLADABU_HASH_MAP std::unordered_map
+ #define COLLADABU_HASH_MULTIMAP std::unordered_multimap
+ #define COLLADABU_HASH_SET std::unordered_set
#define COLLADABU_HASH_NAMESPACE_OPEN std { namespace tr1
#define COLLADABU_HASH_NAMESPACE_CLOSE }
#define COLLADABU_HASH_FUN hash
@@ -107,12 +107,12 @@
#define COLLADABU_HASH_NAMESPACE_CLOSE
#define COLLADABU_HASH_FUN hash
#else
- #include <tr1/unordered_map>
- #include <tr1/unordered_set>
+ #include <unordered_map>
+ #include <unordered_set>
- #define COLLADABU_HASH_MAP std::tr1::unordered_map
- #define COLLADABU_HASH_MULTIMAP std::tr1::unordered_multimap
- #define COLLADABU_HASH_SET std::tr1::unordered_set
+ #define COLLADABU_HASH_MAP std::unordered_map
+ #define COLLADABU_HASH_MULTIMAP std::unordered_multimap
+ #define COLLADABU_HASH_SET std::unordered_set
#define COLLADABU_HASH_NAMESPACE_OPEN std { namespace tr1
#define COLLADABU_HASH_NAMESPACE_CLOSE }
#define COLLADABU_HASH_FUN hash
diff --git a/common/libBuffer/include/CommonFWriteBufferFlusher.h b/common/libBuffer/include/CommonFWriteBufferFlusher.h
index c7af45b2..fac4f133 100644
--- a/common/libBuffer/include/CommonFWriteBufferFlusher.h
+++ b/common/libBuffer/include/CommonFWriteBufferFlusher.h
@@ -15,12 +15,12 @@
#if (defined(WIN64) || defined(_WIN64) || defined(__WIN64__)) || (defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__) || defined(__APPLE__))
#if defined(__GNUC__) && !defined(_LIBCPP_VERSION)
-# include <tr1/unordered_map>
+# include <unordered_map>
#else
# include <unordered_map>
#endif
#else
-# include <tr1/unordered_map>
+# include <unordered_map>
#endif
#ifdef _LIBCPP_VERSION
@@ -58,7 +58,7 @@ namespace Common
#else
typedef __int64 FilePosType;
#endif
- typedef std::tr1::unordered_map<MarkId, FilePosType > MarkIdToFilePos;
+ typedef std::unordered_map<MarkId, FilePosType > MarkIdToFilePos;
public:
static const size_t DEFAUL_BUFFER_SIZE = 64*1024;
+22
View File
@@ -0,0 +1,22 @@
From a0deb4ce8b43cf3c8b8c0a4225c6be5296446dbd Mon Sep 17 00:00:00 2001
From: Adam Eri <adam.eri@blackmirror.media>
Date: Tue, 3 Sep 2019 23:30:20 +0200
Subject: [PATCH] Resolves compile error on macOS
Resolves "no member named 'isnan' in namespace 'std'" on macOS
---
GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp b/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp
index 1f9a3eef..dd6f5c59 100644
--- a/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp
+++ b/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp
@@ -10,6 +10,7 @@
#include "GeneratedSaxParserUtils.h"
#include <math.h>
+#include <cmath>
#include <memory>
#include <string.h>
#include <limits>
+18
View File
@@ -0,0 +1,18 @@
package:
name: ifcopenshell
version: 0.7.0
source:
path: IfcOpenShell
build:
script: |
python nix/build-all.py --without-hdf5 --without-opencollada --without-swig --without-pcre -v --wasm --py310 IfcOpenShell-Python
cp pyodide/setup.py .
about:
home: http://ifcopenshell.org
license: LGPL-3.0-or-later
summary: |
IfcOpenShell is an open source (LGPL) software library for
working with the Industry Foundation Classes (IFC) file format.
+11
View File
@@ -0,0 +1,11 @@
from setuptools import setup, find_packages
setup(name='IfcOpenShell',
version='0.7.0',
description='IfcOpenShell is an open source (LGPL) software library for working with the Industry Foundation Classes (IFC) file format.',
author='Thomas Krijnen',
author_email='thomas@aecgeeks.com',
url='http://ifcopenshell.org',
packages=find_packages(),
package_data={'': ['*.so']},
)
+2
View File
@@ -0,0 +1,2 @@
[tool.black]
line-length = 120
+64
View File
@@ -0,0 +1,64 @@
# ****************************************************************************
# line endings
# to suppress line ending changes in github, add ?w=1 at link end of a diff
# for more information see
# FreeCAD source code src/Mod/.gitattributes
# FreeCAD forum topic https://forum.freecadweb.org/viewtopic.php?f=17&t=41117
# FreeCAD pull request https://github.com/FreeCAD/FreeCAD/pull/2752
# get all used file types
# in a directory in a bash use
# find . -type f -name '*.*' | sed 's|.*\.||' | sort -u
# search for a specific file ending
# find . -type f -name '*.ico'
# normalize the line endings of the following files
*.cpp text
*.css text
*.csv text
*.feature text
*.gitattributes text
*.gitignore text
*.gitkeep
*.h text
*.html text
*.ifc text
*.json text
*.md text
*.po text
*.pot text
*.py text
*.txt text
# files not normalized ATM
# bat
# bnf
# blend
# i
# ico
# mo
# mpass
# png
# pth
# pyc
# rst
# svg
# ttf
# xsd
# line endings of all directories will be normalized
# to exclude a directory from being normalized add it here
# example: to exclude dirctory ifcbimtester use the following line without #
# ifcbimtester/** -text
# use git to manually correct the file endings
# git add --renormalize .
+1
View File
@@ -0,0 +1 @@
.tox
+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
+621
View File
@@ -0,0 +1,621 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
+165
View File
@@ -0,0 +1,165 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.
+2
View File
@@ -0,0 +1,2 @@
include src/bcf/v2/xsd/*.xsd
include src/bcf/v3/xsd/*.xsd
+17
View File
@@ -0,0 +1,17 @@
.PHONY: ci
ci:
tox
.PHONY: license
license:
copyright-header --license LGPL3 --copyright-holder "Andrea Ghensi <andrea.ghensi@gmail.com>" --copyright-year "2022" --copyright-software "IfcOpenShell" --copyright-software-description "BCF XML file handling" -a ./ -o ./
# TODO: make this based on xsd file presence
.PHONY: models
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
# api:
# openapi-python-client generate --url https://api.swaggerhub.com/apis/buildingSMART/BCF/3.0
+84
View File
@@ -0,0 +1,84 @@
# 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)
```
+141
View File
@@ -0,0 +1,141 @@
[build-system]
requires = [
"setuptools>=61",
"wheel"
]
build-backend = "setuptools.build_meta"
[project]
name = "bcf-client"
# author = "IfcOpenShell"
description = "BCF-XML file handler."
readme = "README.md"
requires-python = ">=3.8"
keywords = ["IFC", "BCF", "BIM"]
dependencies = [
"xsdata",
"numpy",
"ifcopenshell",
]
version = "0.0.1"
classifiers = [
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Topic :: Scientific/Engineering",
"Topic :: Utilities",
]
[project.urls]
Source = "https://github.com/IfcOpenShell/IfcOpenShell"
Issues = "https://github.com/IfcOpenShell/IfcOpenShell/issues"
[tool.black]
line-length = 120
extend-exclude = "model"
[tool.isort]
profile = "black"
extend_skip_glob = ["src/bcf/*/model/*"]
[tool.coverage.paths]
source = ["src"]
[tool.coverage.run]
branch = true
source = ["bcf"]
omit = ["*/model/*"]
[tool.coverage.report]
show_missing = true
fail_under = 65
exclude_lines = [
"pragma: no cover",
"if TYPE_CHECKING",
"if __name__ == .__main__.:",
"Protocol",
]
[tool.tox]
legacy_tox_ini = """
[tox]
env_list = lint, type, py3{10,11}
skip_missing_interpreters = true
[testenv]
deps =
pytest
pytest-cov
coverage
commands = pytest --cov --cov-report=term tests
[testenv:lint]
description = run linters
skip_install = true
deps =
black
isort
pylint
commands =
black {posargs:.}
isort {posargs:.}
pylint {posargs:.} --output-format=colorized
[testenv:type]
description = run type checks
deps =
mypy>=0.991
commands =
- mypy {posargs:src}
"""
[tool.mypy]
check_untyped_defs = true
disallow_any_generics = true
disallow_incomplete_defs = true
disallow_subclassing_any = true
disallow_untyped_calls = true
disallow_untyped_defs = true
no_implicit_optional = true
#no_implicit_reexport = true
show_column_numbers = true
show_error_codes = true
show_error_context = true
strict_equality = true
strict_optional = true
warn_redundant_casts = true
#warn_return_any = true
warn_unreachable = true
warn_unused_configs = true
warn_unused_ignores = true
exclude= "src/bcf/v(2|3)/model"
plugins = "numpy.typing.mypy_plugin"
[[tool.mypy.overrides]]
module = "tests"
disallow_untyped_decorators = false
disallow_untyped_defs = false
[[tool.mypy.overrides]]
module = [
"pytest",
"pytest_mock",
"ifcopenshell",
"ifcopenshell.*",
]
ignore_missing_imports = true
[tool.pylint.main]
ignore = ["model"]
ignored-modules = ["bcf.v2.model", "bcf.v3.model", "xsdata"]
jobs = 0
disable="all"
enable="E" # B,B9,BLK,C,D,E,F,I,N,S,W
[tool.pylint.design]
max-args = 10
max-attributes = 10
[tool.pylint.format]
expected-line-ending-format = "LF"
max-line-length = 120
+6
View File
@@ -0,0 +1,6 @@
black
mypy
pylint
isort
xsdata
tox==3.27.1
+3
View File
@@ -0,0 +1,3 @@
from setuptools import setup
setup()
+17
View File
@@ -0,0 +1,17 @@
# BCF - BCF Python library
# Copyright (C) 2021 Prabhat Singh <singh01prabhat@gmail.com>
#
# This file is part of BCF.
#
# BCF is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# BCF is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with BCF. If not, see <http://www.gnu.org/licenses/>.
+73
View File
@@ -0,0 +1,73 @@
"""
BCF - BCF Python library
Copyright (C) 2021 Prabhat Singh <singh01prabhat@gmail.com>
Copyright (C) 2022 Andrea Ghensi <andrea.ghensi@gmail.com>
This file is part of BCF.
BCF is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
BCF is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with BCF. If not, see <http://www.gnu.org/licenses/>.
"""
import zipfile
from pathlib import Path
from typing import Optional, Union
from bcf.v2.bcfxml import BcfXml as BcfXml2
from bcf.v2.model import Version as Version2
from bcf.v3.bcfxml import BcfXml as BcfXml3
from bcf.v3.model import Version as Version3
from bcf.xml_parser import AbstractXmlParserSerializer, XmlParserSerializer
def load(
filepath: Path, xml_handler: Optional[AbstractXmlParserSerializer] = None
) -> Optional[Union[BcfXml2, BcfXml3]]:
"""
Load a BCF file.
Args:
filepath: The path to the BCF file.
Returns:
The loaded BCF file.
Raises:
ValueError: If the BCF version is not supported.
"""
xml_handler = xml_handler or XmlParserSerializer()
version_id = _get_version(filepath, xml_handler)
if version_id in {"2.1", "2.0"}:
return BcfXml2.load(filepath, xml_handler)
if version_id == "3.0":
return BcfXml3.load(filepath, xml_handler)
raise ValueError(f"Version {version_id} not supported.")
def _get_version(filepath: Union[str, Path], xml_handler: Optional[AbstractXmlParserSerializer] = None) -> str:
"""
Returns the version of the BCF file.
Args:
filepath: The path to the BCF file.
xml_handler: The XML handler. If none is given, XmlParserSerializer is used.
Returns:
The version of the BCF file.
"""
xml_handler = xml_handler or XmlParserSerializer()
with zipfile.ZipFile(filepath) as bcf_zip:
try:
version = xml_handler.parse(bcf_zip.read("bcf.version"), Version3)
except:
version = xml_handler.parse(bcf_zip.read("bcf.version"), Version2)
return version.version_id
+64
View File
@@ -0,0 +1,64 @@
from typing import Optional
import numpy as np
from numpy.typing import NDArray
def camera_vectors_from_element_placement(
elem_placement: NDArray[np.float_],
) -> tuple[NDArray[np.float_], NDArray[np.float_], NDArray[np.float_]]:
"""
Calculate the vectors of a camera pointing to an element.
Args:
elem_placement: Placement matrix of an element.
Returns:
Camera position, direction and up vectors
"""
target_position = elem_placement[:3, 3]
return camera_vectors_from_target_position(target_position)
def camera_vectors_from_target_position(
target_position: NDArray[np.float_], offset: Optional[NDArray[np.float_]] = None
) -> tuple[NDArray[np.float_], NDArray[np.float_], NDArray[np.float_]]:
"""
Calculate the vectors of a camera pointing to a target point.
Args:
target_position: point the camera is pointing to.
camera_offset: offset of the camera from the target point.
Returns:
Camera position, direction and up vectors
"""
camera_offset = np.array((5, 5, 5)) if offset is None else offset
camera_position = target_position + camera_offset
camera_direction = unit_vector(-camera_offset) # pylint: disable=invalid-unary-operand-type
camera_right = unit_vector(np.cross(np.array([0.0, 0.0, 1.0]), camera_direction))
camera_up = unit_vector(np.cross(camera_direction, camera_right))
return camera_position, camera_direction, camera_up
# rotation_transform = np.eye(4)
# rotation_transform[0, :3] = camera_right
# rotation_transform[1, :3] = camera_up
# rotation_transform[2, :3] = camera_direction
# translation_transform = np.eye(4)
# translation_transform[:3, -1] = -camera_position
# look_at_transform = np.matmul(rotation_transform, translation_transform)
# mat = np.linalg.inv(look_at_transform)
# return camera_position, -mat[:3, 2], mat[:3, 1]
def unit_vector(v: NDArray[np.float_]) -> NDArray[np.float_]:
"""
Return the unit vector of a vector.
Args:
v: vector
Returns:
unit vector.
"""
norm = np.linalg.norm(v)
return v if norm == 0 else v / norm
+55
View File
@@ -0,0 +1,55 @@
"""
In Memory Zip File management, taken from ruamel.std.zipfile
Copyright (c) 2017-2020 Anthon van der Neut, Ruamel bvba
original idea from https://stackoverflow.com/a/19722365/1307905
"""
import zipfile
from io import BytesIO
from os import PathLike
from pathlib import Path
from typing import Any, Optional, Protocol
class ZipFileInterface(Protocol):
def writestr(self, filename_in_zip: str | zipfile.ZipInfo, file_contents: bytes | str) -> None:
...
class InMemoryZipFile:
def __init__(
self, file_name: Optional[str | Path] = None, compression: int = zipfile.ZIP_DEFLATED, debug: int = 0
) -> None:
# Create the in-memory file-like object
self._file_name: Optional[str | Path] = str(file_name) if hasattr(file_name, "_from_parts") else file_name
self.in_memory_data = BytesIO()
# Create the in-memory zipfile
self.in_memory_zip = zipfile.ZipFile(self.in_memory_data, "w", compression, False)
self.in_memory_zip.debug = debug
def writestr(self, filename_in_zip: str | zipfile.ZipInfo, file_contents: bytes | str) -> None:
"""Appends a file with name filename_in_zip and contents of
file_contents to the in-memory zip."""
self.in_memory_zip.writestr(filename_in_zip, file_contents)
def write_to_file(self, filename: str | bytes | PathLike[str] | PathLike[bytes] | int) -> None:
"""Writes the in-memory zip to a file."""
# Mark the files as having been created on Windows so that
# Unix permissions are not inferred as 0000
for zfile in self.in_memory_zip.filelist:
zfile.create_system = 0
self.in_memory_zip.close()
with open(filename, "wb") as f:
f.write(self.data)
@property
def data(self) -> bytes:
return self.in_memory_data.getvalue()
def __enter__(self) -> "InMemoryZipFile":
return self
def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any) -> None:
if self._file_name:
self.write_to_file(self._file_name)
View File
+17
View File
@@ -0,0 +1,17 @@
# BCF - BCF Python library
# Copyright (C) 2020, 2021 Dion Moult <dion@thinkmoult.com>
#
# This file is part of BCF.
#
# BCF is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# BCF is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with BCF. If not, see <http://www.gnu.org/licenses/>.
+275
View File
@@ -0,0 +1,275 @@
"""BCF XML V2 handler."""
import uuid
import warnings
import zipfile
from pathlib import Path
from typing import Any, NoReturn, Optional, TypeVar
import bcf.v2.model as mdl
from bcf.inmemory_zipfile import InMemoryZipFile, ZipFileInterface
from bcf.v2.topic import TopicHandler
from bcf.xml_parser import AbstractXmlParserSerializer, XmlParserSerializer
T = TypeVar("T")
class BcfXml:
"""BCF XML handler."""
def __init__(
self, filename: Optional[Path] = None, xml_handler: Optional[AbstractXmlParserSerializer] = None
) -> None:
self._filename = filename
self._xml_handler = xml_handler or XmlParserSerializer()
self._version: Optional[mdl.Version] = None
self._project_info: Optional[mdl.ProjectExtension] = None
self._topics: dict[str, TopicHandler] = {}
self._extension_schema: Optional[bytes] = None
self._zip_file = self._load_zip_file()
def __enter__(self) -> "BcfXml":
return self
def __exit__(self, *args: Any) -> None:
self.close()
def __del__(self) -> None:
self.close()
def close(self) -> None:
if self._zip_file:
self._zip_file.close()
def _load_zip_file(self) -> Optional[zipfile.ZipFile]:
return zipfile.ZipFile(self._filename) if self._filename else None
@property
def version(self) -> mdl.Version:
"""Bcf Version."""
if not self._version:
self._version = (
self._xml_handler.parse(self._zip_file.read("bcf.version"), mdl.Version)
if self._zip_file
else mdl.Version(version_id="2.1")
)
return self._version
@version.setter
def version(self, value: mdl.Version) -> None:
self._version = value
@property
def project_info(self) -> Optional[mdl.ProjectExtension]:
"""BCF project information."""
if not self._project_info and self._zip_file and zipfile.Path(self._zip_file, "project.bcfp").exists():
self._project_info = self._xml_handler.parse(self._zip_file.read("project.bcfp"), mdl.ProjectExtension)
return self._project_info
@project_info.setter
def project_info(self, value: Optional[mdl.ProjectExtension]) -> None:
self._project_info = value
@property
def project(self) -> Optional[mdl.Project]:
"""BCF project."""
return self.project_info.project if self.project_info else None
@property
def extension_schema(self) -> Optional[bytes]:
if not self._extension_schema and self._zip_file and self.project_info and self.project_info.extension_schema:
self._extension_schema = self._zip_file.read(self.project_info.extension_schema)
return self._extension_schema
@extension_schema.setter
def extension_schema(self, value: bytes) -> None:
self._extension_schema = value
@property
def topics(self) -> dict[str, TopicHandler]:
"""BCF topics."""
if not self._topics and self._zip_file:
self._topics = self._load_topics(self._zip_file, self._xml_handler)
return self._topics
def _load_topics(
self, zip_file: zipfile.ZipFile, xml_handler: AbstractXmlParserSerializer
) -> dict[str, TopicHandler]:
topics = {}
for topic_dir in zipfile.Path(zip_file).iterdir():
if not topic_dir.is_dir():
continue
markup_path = topic_dir.joinpath("markup.bcf")
if not markup_path.exists():
continue
topics[topic_dir.name] = TopicHandler(topic_dir, xml_handler)
return topics
@classmethod
def load(cls, filename: Path, xml_handler: Optional[AbstractXmlParserSerializer] = None) -> Optional["BcfXml"]:
"""
Create a BcfXml object from a file.
Args:
filename: Path to the file.
xml_handler: XML parser and serializer.
Returns:
A BcfXml object with the file contents.
Raises:
ValueError: If the file name is null or empty
"""
if not filename:
raise ValueError("filename is required")
xml_handler = xml_handler or XmlParserSerializer()
return cls(xml_handler=xml_handler, filename=filename)
@classmethod
def create_new(
cls,
project_name: Optional[str] = None,
xml_handler: Optional[AbstractXmlParserSerializer] = None,
) -> "BcfXml":
"""
Create a new BcfXml object.
Args:
project_name: The name of the project.
xml_handler: XML parser and serializer.
Returns:
A new BcfXml object.
"""
instance = cls(xml_handler=xml_handler or XmlParserSerializer())
instance.project_info = mdl.ProjectExtension(
project=mdl.Project(name=project_name, project_id=str(uuid.uuid4())), extension_schema=""
)
return instance
def save(self, filename: Optional[Path] = None, keep_open: bool = False) -> None:
"""Save the BCF file to the given filename."""
if not filename and not self._filename:
raise ValueError("No file name specified, cannot save BCF file.")
if filename:
self._filename = filename
with InMemoryZipFile(self._filename) as bcf_zip:
self._save_project(bcf_zip)
self._save_version(bcf_zip)
self._save_topics(bcf_zip)
if keep_open:
self._zip_file = self._load_zip_file()
def _save_project(self, destination_zip: ZipFileInterface) -> None:
self._smart_save_xml(destination_zip, self._project_info, "project.bcfp")
if self.extension_schema and self.project_info:
destination_zip.writestr(self.project_info.extension_schema, self.extension_schema)
def _save_version(self, destination_zip: ZipFileInterface) -> None:
if not self._version and self._zip_file:
destination_zip.writestr("bcf.version", self._zip_file.read("bcf.version"))
else:
self._save_xml(destination_zip, "bcf.version", self.version)
def _smart_save_xml(self, destination_zip: ZipFileInterface, item: Any, target: str) -> None:
if item:
self._save_xml(destination_zip, target, item)
elif self._zip_file and zipfile.Path(self._zip_file, target).exists():
destination_zip.writestr(target, self._zip_file.read(target))
def _save_xml(self, destination_zip: ZipFileInterface, inner_file: str, xml_obj: Any) -> None:
destination_zip.writestr(inner_file, self._xml_handler.serialize(xml_obj))
def _save_topics(self, destination_zip: ZipFileInterface) -> None:
for topic_handler in self.topics.values():
topic_handler.save(destination_zip)
def add_topic(
self, title: str, description: str, author: str, topic_type: str = "", topic_status: str = ""
) -> TopicHandler:
"""
Add a new topic to the BCF.
Args:
title: The title of the topic.
description: The description of the topic.
author: The author of the topic.
topic_type: The type of the topic.
topic_status: The status of the topic.
Returns:
The newly created topic wrapped inside a TopicHandler object.
"""
topic_handler = TopicHandler.create_new(
title,
description,
author,
topic_type=topic_type,
topic_status=topic_status,
xml_handler=self._xml_handler,
)
self.topics[topic_handler.guid] = topic_handler
return topic_handler
def __eq__(self, other: object) -> bool | NoReturn:
return (
self.version == other.version and self.project_info == other.project_info
if isinstance(other, BcfXml)
else NotImplemented
)
# region Deprecated methods
def new_project(self) -> "BcfXml":
"""Deprecated method."""
warnings.warn("new_project is deprecated, use create_new instead.", DeprecationWarning)
return self.create_new()
def get_project(self, _filepath: Optional[str] = None) -> Optional[mdl.Project]:
"""Deprecated method."""
warnings.warn("get_project is deprecated, use project_info.project instead.", DeprecationWarning)
return self.project
def edit_project(self) -> None:
"""Deprecated method."""
warnings.warn("edit_project is deprecated, there's no need to use it.", DeprecationWarning)
def save_project(self, filepath: Path) -> None:
"""Deprecated method."""
warnings.warn("save_project is deprecated, use save instead.", DeprecationWarning)
self.save(filepath)
def get_version(self) -> Optional[str]:
warnings.warn("get_version is deprecated, use version.version_id instead.", DeprecationWarning)
return self.version.version_id
def edit_version(self) -> None:
"""Deprecated method."""
warnings.warn("edit_version is deprecated, there's no need to use it.", DeprecationWarning)
def get_topics(self) -> dict[str, TopicHandler]:
"""Deprecated method."""
warnings.warn("get_topics is deprecated, use topics instead.", DeprecationWarning)
return self.topics
def get_topic(self, guid: str) -> TopicHandler:
"""Return a topic by its GUID."""
warnings.warn("get_topic is deprecated, use topics[guid] instead", DeprecationWarning)
return self.topics[guid]
def get_header(self, guid: str) -> Optional[mdl.Header]:
"""Return the header of a Topic by its GUID."""
return self.topics[guid].header
def edit_topic(self) -> None:
"""Deprecated method."""
warnings.warn("edit_topic is deprecated, there's no need to use it.", DeprecationWarning)
def add_comment(self, _topic: mdl.Topic, _comment: Optional[mdl.Comment] = None) -> None:
"""Deprecated method."""
warnings.warn("add_comment is deprecated, use topics methods instead.", DeprecationWarning)
def edit_comment(self) -> None:
"""Deprecated method."""
warnings.warn("edit_comment is deprecated, there's no need to use it.", DeprecationWarning)
# TODO: deprecate other methods
# endregion
+70
View File
@@ -0,0 +1,70 @@
from bcf.v2.model.markup import (
BimSnippet,
Comment,
CommentViewpoint,
Header,
HeaderFile,
Markup,
Topic,
TopicDocumentReference,
TopicRelatedTopic,
ViewPoint,
)
from bcf.v2.model.project import Project, ProjectExtension
from bcf.v2.model.version import Version
from bcf.v2.model.visinfo import (
BitmapFormat,
ClippingPlane,
Component,
ComponentColoring,
ComponentColoringColor,
Components,
ComponentSelection,
ComponentVisibility,
ComponentVisibilityExceptions,
Direction,
Line,
OrthogonalCamera,
PerspectiveCamera,
Point,
ViewSetupHints,
VisualizationInfo,
VisualizationInfoBitmap,
VisualizationInfoClippingPlanes,
VisualizationInfoLines,
)
__all__ = [
"BimSnippet",
"Comment",
"CommentViewpoint",
"Header",
"HeaderFile",
"Markup",
"Topic",
"TopicDocumentReference",
"TopicRelatedTopic",
"ViewPoint",
"Project",
"ProjectExtension",
"Version",
"BitmapFormat",
"ClippingPlane",
"Component",
"ComponentColoring",
"ComponentColoringColor",
"ComponentSelection",
"ComponentVisibility",
"ComponentVisibilityExceptions",
"Components",
"Direction",
"Line",
"OrthogonalCamera",
"PerspectiveCamera",
"Point",
"ViewSetupHints",
"VisualizationInfo",
"VisualizationInfoBitmap",
"VisualizationInfoClippingPlanes",
"VisualizationInfoLines",
]
+461
View File
@@ -0,0 +1,461 @@
from dataclasses import dataclass, field
from typing import List, Optional
from xsdata.models.datatype import XmlDateTime
@dataclass(slots=True, kw_only=True)
class BimSnippet:
reference: str = field(
metadata={
"name": "Reference",
"type": "Element",
"namespace": "",
"required": True,
}
)
reference_schema: str = field(
metadata={
"name": "ReferenceSchema",
"type": "Element",
"namespace": "",
"required": True,
}
)
snippet_type: str = field(
metadata={
"name": "SnippetType",
"type": "Attribute",
"required": True,
}
)
is_external: bool = field(
default=False,
metadata={
"name": "isExternal",
"type": "Attribute",
}
)
@dataclass(slots=True, kw_only=True)
class CommentViewpoint:
class Meta:
global_type = False
guid: str = field(
metadata={
"name": "Guid",
"type": "Attribute",
"required": True,
"pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
}
)
@dataclass(slots=True, kw_only=True)
class HeaderFile:
class Meta:
global_type = False
filename: Optional[str] = field(
default=None,
metadata={
"name": "Filename",
"type": "Element",
"namespace": "",
}
)
date: Optional[XmlDateTime] = field(
default=None,
metadata={
"name": "Date",
"type": "Element",
"namespace": "",
}
)
reference: Optional[str] = field(
default=None,
metadata={
"name": "Reference",
"type": "Element",
"namespace": "",
}
)
ifc_project: Optional[str] = field(
default=None,
metadata={
"name": "IfcProject",
"type": "Attribute",
"length": 22,
"pattern": r"[0-9,A-Z,a-z,_$]*",
}
)
ifc_spatial_structure_element: Optional[str] = field(
default=None,
metadata={
"name": "IfcSpatialStructureElement",
"type": "Attribute",
"length": 22,
"pattern": r"[0-9,A-Z,a-z,_$]*",
}
)
is_external: bool = field(
default=True,
metadata={
"name": "isExternal",
"type": "Attribute",
}
)
@dataclass(slots=True, kw_only=True)
class TopicDocumentReference:
class Meta:
global_type = False
referenced_document: Optional[str] = field(
default=None,
metadata={
"name": "ReferencedDocument",
"type": "Element",
"namespace": "",
}
)
description: Optional[str] = field(
default=None,
metadata={
"name": "Description",
"type": "Element",
"namespace": "",
}
)
guid: Optional[str] = field(
default=None,
metadata={
"name": "Guid",
"type": "Attribute",
"pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
}
)
is_external: bool = field(
default=False,
metadata={
"name": "isExternal",
"type": "Attribute",
}
)
@dataclass(slots=True, kw_only=True)
class TopicRelatedTopic:
class Meta:
global_type = False
guid: str = field(
metadata={
"name": "Guid",
"type": "Attribute",
"required": True,
"pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
}
)
@dataclass(slots=True, kw_only=True)
class ViewPoint:
viewpoint: Optional[str] = field(
default=None,
metadata={
"name": "Viewpoint",
"type": "Element",
"namespace": "",
}
)
snapshot: Optional[str] = field(
default=None,
metadata={
"name": "Snapshot",
"type": "Element",
"namespace": "",
}
)
index: Optional[int] = field(
default=None,
metadata={
"name": "Index",
"type": "Element",
"namespace": "",
}
)
guid: str = field(
metadata={
"name": "Guid",
"type": "Attribute",
"required": True,
"pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
}
)
@dataclass(slots=True, kw_only=True)
class Comment:
date: XmlDateTime = field(
metadata={
"name": "Date",
"type": "Element",
"namespace": "",
"required": True,
}
)
author: str = field(
metadata={
"name": "Author",
"type": "Element",
"namespace": "",
"required": True,
}
)
comment: str = field(
metadata={
"name": "Comment",
"type": "Element",
"namespace": "",
"required": True,
}
)
viewpoint: Optional[CommentViewpoint] = field(
default=None,
metadata={
"name": "Viewpoint",
"type": "Element",
"namespace": "",
}
)
modified_date: Optional[XmlDateTime] = field(
default=None,
metadata={
"name": "ModifiedDate",
"type": "Element",
"namespace": "",
}
)
modified_author: Optional[str] = field(
default=None,
metadata={
"name": "ModifiedAuthor",
"type": "Element",
"namespace": "",
}
)
guid: str = field(
metadata={
"name": "Guid",
"type": "Attribute",
"required": True,
"pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
}
)
@dataclass(slots=True, kw_only=True)
class Header:
file: List[HeaderFile] = field(
default_factory=list,
metadata={
"name": "File",
"type": "Element",
"namespace": "",
"min_occurs": 1,
}
)
@dataclass(slots=True, kw_only=True)
class Topic:
reference_link: List[str] = field(
default_factory=list,
metadata={
"name": "ReferenceLink",
"type": "Element",
"namespace": "",
}
)
title: str = field(
metadata={
"name": "Title",
"type": "Element",
"namespace": "",
"required": True,
}
)
priority: Optional[str] = field(
default=None,
metadata={
"name": "Priority",
"type": "Element",
"namespace": "",
}
)
index: Optional[int] = field(
default=None,
metadata={
"name": "Index",
"type": "Element",
"namespace": "",
}
)
labels: List[str] = field(
default_factory=list,
metadata={
"name": "Labels",
"type": "Element",
"namespace": "",
}
)
creation_date: XmlDateTime = field(
metadata={
"name": "CreationDate",
"type": "Element",
"namespace": "",
"required": True,
}
)
creation_author: str = field(
metadata={
"name": "CreationAuthor",
"type": "Element",
"namespace": "",
"required": True,
}
)
modified_date: Optional[XmlDateTime] = field(
default=None,
metadata={
"name": "ModifiedDate",
"type": "Element",
"namespace": "",
}
)
modified_author: Optional[str] = field(
default=None,
metadata={
"name": "ModifiedAuthor",
"type": "Element",
"namespace": "",
}
)
due_date: Optional[XmlDateTime] = field(
default=None,
metadata={
"name": "DueDate",
"type": "Element",
"namespace": "",
}
)
assigned_to: Optional[str] = field(
default=None,
metadata={
"name": "AssignedTo",
"type": "Element",
"namespace": "",
}
)
stage: Optional[str] = field(
default=None,
metadata={
"name": "Stage",
"type": "Element",
"namespace": "",
}
)
description: Optional[str] = field(
default=None,
metadata={
"name": "Description",
"type": "Element",
"namespace": "",
}
)
bim_snippet: Optional[BimSnippet] = field(
default=None,
metadata={
"name": "BimSnippet",
"type": "Element",
"namespace": "",
}
)
document_reference: List[TopicDocumentReference] = field(
default_factory=list,
metadata={
"name": "DocumentReference",
"type": "Element",
"namespace": "",
}
)
related_topic: List[TopicRelatedTopic] = field(
default_factory=list,
metadata={
"name": "RelatedTopic",
"type": "Element",
"namespace": "",
}
)
guid: str = field(
metadata={
"name": "Guid",
"type": "Attribute",
"required": True,
"pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
}
)
topic_type: Optional[str] = field(
default=None,
metadata={
"name": "TopicType",
"type": "Attribute",
}
)
topic_status: Optional[str] = field(
default=None,
metadata={
"name": "TopicStatus",
"type": "Attribute",
}
)
@dataclass(slots=True, kw_only=True)
class Markup:
header: Optional[Header] = field(
default=None,
metadata={
"name": "Header",
"type": "Element",
"namespace": "",
}
)
topic: Topic = field(
metadata={
"name": "Topic",
"type": "Element",
"namespace": "",
"required": True,
}
)
comment: List[Comment] = field(
default_factory=list,
metadata={
"name": "Comment",
"type": "Element",
"namespace": "",
}
)
viewpoints: List[ViewPoint] = field(
default_factory=list,
metadata={
"name": "Viewpoints",
"type": "Element",
"namespace": "",
}
)
+41
View File
@@ -0,0 +1,41 @@
from dataclasses import dataclass, field
from typing import Optional
@dataclass(slots=True, kw_only=True)
class Project:
name: Optional[str] = field(
default=None,
metadata={
"name": "Name",
"type": "Element",
"namespace": "",
}
)
project_id: str = field(
metadata={
"name": "ProjectId",
"type": "Attribute",
"required": True,
}
)
@dataclass(slots=True, kw_only=True)
class ProjectExtension:
project: Optional[Project] = field(
default=None,
metadata={
"name": "Project",
"type": "Element",
"namespace": "",
}
)
extension_schema: str = field(
metadata={
"name": "ExtensionSchema",
"type": "Element",
"namespace": "",
"required": True,
}
)
+21
View File
@@ -0,0 +1,21 @@
from dataclasses import dataclass, field
from typing import Optional
@dataclass(slots=True, kw_only=True)
class Version:
detailed_version: Optional[str] = field(
default=None,
metadata={
"name": "DetailedVersion",
"type": "Element",
"namespace": "",
}
)
version_id: Optional[str] = field(
default=None,
metadata={
"name": "VersionId",
"type": "Attribute",
}
)
+476
View File
@@ -0,0 +1,476 @@
from dataclasses import dataclass, field
from enum import Enum
from typing import List, Optional
class BitmapFormat(Enum):
PNG = "PNG"
JPG = "JPG"
@dataclass(slots=True, kw_only=True)
class Component:
originating_system: Optional[str] = field(
default=None,
metadata={
"name": "OriginatingSystem",
"type": "Element",
}
)
authoring_tool_id: Optional[str] = field(
default=None,
metadata={
"name": "AuthoringToolId",
"type": "Element",
}
)
ifc_guid: Optional[str] = field(
default=None,
metadata={
"name": "IfcGuid",
"type": "Attribute",
"length": 22,
"pattern": r"[0-9,A-Z,a-z,_$]*",
}
)
@dataclass(slots=True, kw_only=True)
class Direction:
x: float = field(
metadata={
"name": "X",
"type": "Element",
"required": True,
}
)
y: float = field(
metadata={
"name": "Y",
"type": "Element",
"required": True,
}
)
z: float = field(
metadata={
"name": "Z",
"type": "Element",
"required": True,
}
)
@dataclass(slots=True, kw_only=True)
class Point:
x: float = field(
metadata={
"name": "X",
"type": "Element",
"required": True,
}
)
y: float = field(
metadata={
"name": "Y",
"type": "Element",
"required": True,
}
)
z: float = field(
metadata={
"name": "Z",
"type": "Element",
"required": True,
}
)
@dataclass(slots=True, kw_only=True)
class ViewSetupHints:
spaces_visible: Optional[bool] = field(
default=None,
metadata={
"name": "SpacesVisible",
"type": "Attribute",
}
)
space_boundaries_visible: Optional[bool] = field(
default=None,
metadata={
"name": "SpaceBoundariesVisible",
"type": "Attribute",
}
)
openings_visible: Optional[bool] = field(
default=None,
metadata={
"name": "OpeningsVisible",
"type": "Attribute",
}
)
@dataclass(slots=True, kw_only=True)
class ClippingPlane:
location: Point = field(
metadata={
"name": "Location",
"type": "Element",
"required": True,
}
)
direction: Direction = field(
metadata={
"name": "Direction",
"type": "Element",
"required": True,
}
)
@dataclass(slots=True, kw_only=True)
class ComponentColoringColor:
class Meta:
global_type = False
component: List[Component] = field(
default_factory=list,
metadata={
"name": "Component",
"type": "Element",
"min_occurs": 1,
}
)
color: Optional[str] = field(
default=None,
metadata={
"name": "Color",
"type": "Attribute",
"pattern": r"[0-9,a-f,A-F]{6}([0-9,a-f,A-F]{2})?",
}
)
@dataclass(slots=True, kw_only=True)
class ComponentSelection:
component: List[Component] = field(
default_factory=list,
metadata={
"name": "Component",
"type": "Element",
"min_occurs": 1,
}
)
@dataclass(slots=True, kw_only=True)
class ComponentVisibilityExceptions:
class Meta:
global_type = False
component: List[Component] = field(
default_factory=list,
metadata={
"name": "Component",
"type": "Element",
"min_occurs": 1,
}
)
@dataclass(slots=True, kw_only=True)
class Line:
start_point: Point = field(
metadata={
"name": "StartPoint",
"type": "Element",
"required": True,
}
)
end_point: Point = field(
metadata={
"name": "EndPoint",
"type": "Element",
"required": True,
}
)
@dataclass(slots=True, kw_only=True)
class OrthogonalCamera:
"""
Attributes
camera_view_point:
camera_direction:
camera_up_vector:
view_to_world_scale: view's visible size in meters
"""
camera_view_point: Point = field(
metadata={
"name": "CameraViewPoint",
"type": "Element",
"required": True,
}
)
camera_direction: Direction = field(
metadata={
"name": "CameraDirection",
"type": "Element",
"required": True,
}
)
camera_up_vector: Direction = field(
metadata={
"name": "CameraUpVector",
"type": "Element",
"required": True,
}
)
view_to_world_scale: float = field(
metadata={
"name": "ViewToWorldScale",
"type": "Element",
"required": True,
}
)
@dataclass(slots=True, kw_only=True)
class PerspectiveCamera:
"""
Attributes
camera_view_point:
camera_direction:
camera_up_vector:
field_of_view: It is currently limited to a value between 45 and
60 degrees. This limitation will be dropped in the next
release and viewers should be expect values outside this
range in current implementations.
"""
camera_view_point: Point = field(
metadata={
"name": "CameraViewPoint",
"type": "Element",
"required": True,
}
)
camera_direction: Direction = field(
metadata={
"name": "CameraDirection",
"type": "Element",
"required": True,
}
)
camera_up_vector: Direction = field(
metadata={
"name": "CameraUpVector",
"type": "Element",
"required": True,
}
)
field_of_view: float = field(
metadata={
"name": "FieldOfView",
"type": "Element",
"required": True,
"min_inclusive": 1.0,
"max_inclusive": 170.0,
}
)
@dataclass(slots=True, kw_only=True)
class VisualizationInfoBitmap:
class Meta:
global_type = False
bitmap: BitmapFormat = field(
metadata={
"name": "Bitmap",
"type": "Element",
"required": True,
}
)
reference: str = field(
metadata={
"name": "Reference",
"type": "Element",
"required": True,
}
)
location: Point = field(
metadata={
"name": "Location",
"type": "Element",
"required": True,
}
)
normal: Direction = field(
metadata={
"name": "Normal",
"type": "Element",
"required": True,
}
)
up: Direction = field(
metadata={
"name": "Up",
"type": "Element",
"required": True,
}
)
height: float = field(
metadata={
"name": "Height",
"type": "Element",
"required": True,
}
)
@dataclass(slots=True, kw_only=True)
class ComponentColoring:
color: List[ComponentColoringColor] = field(
default_factory=list,
metadata={
"name": "Color",
"type": "Element",
"min_occurs": 1,
}
)
@dataclass(slots=True, kw_only=True)
class ComponentVisibility:
exceptions: Optional[ComponentVisibilityExceptions] = field(
default=None,
metadata={
"name": "Exceptions",
"type": "Element",
}
)
default_visibility: Optional[bool] = field(
default=None,
metadata={
"name": "DefaultVisibility",
"type": "Attribute",
}
)
@dataclass(slots=True, kw_only=True)
class VisualizationInfoClippingPlanes:
class Meta:
global_type = False
clipping_plane: List[ClippingPlane] = field(
default_factory=list,
metadata={
"name": "ClippingPlane",
"type": "Element",
}
)
@dataclass(slots=True, kw_only=True)
class VisualizationInfoLines:
class Meta:
global_type = False
line: List[Line] = field(
default_factory=list,
metadata={
"name": "Line",
"type": "Element",
"min_occurs": 1,
}
)
@dataclass(slots=True, kw_only=True)
class Components:
view_setup_hints: Optional[ViewSetupHints] = field(
default=None,
metadata={
"name": "ViewSetupHints",
"type": "Element",
}
)
selection: Optional[ComponentSelection] = field(
default=None,
metadata={
"name": "Selection",
"type": "Element",
}
)
visibility: ComponentVisibility = field(
metadata={
"name": "Visibility",
"type": "Element",
"required": True,
}
)
coloring: Optional[ComponentColoring] = field(
default=None,
metadata={
"name": "Coloring",
"type": "Element",
}
)
@dataclass(slots=True, kw_only=True)
class VisualizationInfo:
"""
VisualizationInfo documentation.
"""
components: Optional[Components] = field(
default=None,
metadata={
"name": "Components",
"type": "Element",
}
)
orthogonal_camera: Optional[OrthogonalCamera] = field(
default=None,
metadata={
"name": "OrthogonalCamera",
"type": "Element",
}
)
perspective_camera: Optional[PerspectiveCamera] = field(
default=None,
metadata={
"name": "PerspectiveCamera",
"type": "Element",
}
)
lines: Optional[VisualizationInfoLines] = field(
default=None,
metadata={
"name": "Lines",
"type": "Element",
}
)
clipping_planes: Optional[VisualizationInfoClippingPlanes] = field(
default=None,
metadata={
"name": "ClippingPlanes",
"type": "Element",
}
)
bitmap: List[VisualizationInfoBitmap] = field(
default_factory=list,
metadata={
"name": "Bitmap",
"type": "Element",
}
)
guid: str = field(
metadata={
"name": "Guid",
"type": "Attribute",
"required": True,
"pattern": r"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}",
}
)
+306
View File
@@ -0,0 +1,306 @@
"""BCF XML V2 Topic handler."""
import datetime
import tempfile
import uuid
import zipfile
from pathlib import Path
from typing import Any, NoReturn, Optional
import numpy as np
from ifcopenshell import entity_instance
from numpy.typing import NDArray
from xsdata.models.datatype import XmlDateTime
import bcf.v2.model as mdl
from bcf.inmemory_zipfile import ZipFileInterface
from bcf.v2.visinfo import VisualizationInfoHandler
from bcf.xml_parser import AbstractXmlParserSerializer, XmlParserSerializer
class TopicHandler:
"""BCF Topic and related objects handler."""
def __init__(
self,
topic_dir: Optional[zipfile.Path] = None,
xml_handler: Optional[AbstractXmlParserSerializer] = None,
) -> None:
self._markup: Optional[mdl.Markup] = None
self._viewpoints: dict[str, VisualizationInfoHandler] = {}
self._reference_files: dict[str, bytes] = {}
self._document_references: dict[str, bytes] = {}
self._bim_snippet: Optional[bytes] = None
self._xml_handler = xml_handler or XmlParserSerializer()
self._topic_dir = topic_dir
@property
def markup(self) -> Optional[mdl.Markup]:
if not self._markup:
markup_path = self._topic_dir.joinpath("markup.bcf")
if markup_path.exists():
self._markup = self._xml_handler.parse(markup_path.read_bytes(), mdl.Markup)
return self._markup
@markup.setter
def markup(self, value: mdl.Markup) -> None:
self._markup = value
@property
def topic(self) -> mdl.Topic:
"""Return the Topic object."""
return self.markup.topic
@property
def guid(self) -> str:
"""Return the GUID of the topic."""
if self._markup:
return self.topic.guid
return self._topic_dir.name if self._topic_dir else ""
@property
def header(self) -> Optional[mdl.Header]:
"""Return the header of the topic."""
return self.markup.header if self.markup else None
@property
def comments(self) -> list[mdl.Comment]:
"""Return the comments of the topic."""
return self.markup.comment if self.markup else []
@property
def bim_snippet(self) -> Optional[bytes]:
if not self._bim_snippet and self._topic_dir:
self._bim_snippet = self._load_bim_snippet()
return self._bim_snippet
@bim_snippet.setter
def bim_snippet(self, value: bytes) -> None:
self._bim_snippet = value
@property
def viewpoints(self) -> dict[str, VisualizationInfoHandler]:
if not self._viewpoints and self._topic_dir:
self._viewpoints = self._load_viewpoints()
return self._viewpoints
@property
def reference_files(self) -> dict[str, bytes]:
if self._reference_files or not self.header:
return self._reference_files
for ref in self.header.file:
if ref.is_external:
continue
real_path = self._topic_dir
for path_part in ref.reference.split("/"):
real_path = real_path.parent if path_part == ".." else real_path.joinpath(path_part)
self._reference_files[ref.reference] = real_path.read_bytes()
return self._reference_files
@property
def document_references(self) -> dict[str, bytes]:
if self._document_references or not self.topic:
return self._document_references
for doc in self.topic.document_reference:
if doc.is_external or not doc.referenced_document:
continue
real_path = self._topic_dir
for path_part in doc.referenced_document.split("/"):
real_path = real_path.parent if path_part == ".." else real_path.joinpath(path_part)
self._document_references[doc.referenced_document] = real_path.read_bytes()
return self._document_references
def _load_bim_snippet(self) -> Optional[bytes]:
bim_snippet_obj = self.topic.bim_snippet
if bim_snippet_obj and not bim_snippet_obj.is_external:
bim_snippet_path = self._topic_dir.joinpath(bim_snippet_obj.reference)
if bim_snippet_path.exists():
return bim_snippet_path.read_bytes()
return None
def _load_viewpoints(self) -> dict[str, VisualizationInfoHandler]:
if self.markup and (viewpoints := self.markup.viewpoints):
return VisualizationInfoHandler.from_topic_viewpoints(self._topic_dir, viewpoints)
return {}
@classmethod
def create_new(
cls,
title: str,
description: str,
author: str,
topic_type: str = "",
topic_status: str = "",
xml_handler: Optional[AbstractXmlParserSerializer] = None,
) -> "TopicHandler":
"""
Create a new BCF topic.
Args:
title: The title of the topic.
description: The description of the topic.
author: The author of the topic.
topic_type: The type of the topic.
topic_status: The status of the topic.
xml_handler: The XML parser/serializer to use.
Returns:
The BCF topic definition.
"""
creation_date = XmlDateTime.from_datetime(datetime.datetime.now())
guid = str(uuid.uuid4())
topic = mdl.Topic(
title=title,
description=description,
creation_author=author,
creation_date=creation_date,
guid=guid,
topic_type=topic_type,
topic_status=topic_status,
)
markup = mdl.Markup(topic=topic)
obj = cls(topic_dir=Path(guid), xml_handler=xml_handler or XmlParserSerializer())
obj.markup = markup
return obj
def save(self, destination_zip: ZipFileInterface) -> None:
"""
Save the topic to a BCF zip file.
Args:
bcf_zip: The BCF zip file to save to.
"""
topic_dir = self.guid
self._save_xml(destination_zip, self._markup, "markup.bcf")
self._save_viewpoints(destination_zip, topic_dir)
self._save_bim_snippet(destination_zip)
self._save_reference_files(destination_zip)
self._save_document_references(destination_zip)
def _save_viewpoints(self, destination_zip: ZipFileInterface, topic_dir: str) -> None:
if not self.markup or not (viewpoints := self.markup.viewpoints):
return
for vpt in viewpoints:
if vpt.viewpoint:
self.viewpoints[vpt.viewpoint].save(destination_zip, topic_dir, vpt)
def _save_xml(self, destination_zip: ZipFileInterface, item: Any, target: str) -> None:
if self._topic_dir is None:
return
to_write = self._xml_handler.serialize(item) if item else self._topic_dir.joinpath(target).read_bytes()
destination_zip.writestr(f"{self._topic_dir.name}/{target}", to_write)
def _save_bim_snippet(self, destination_zip: ZipFileInterface) -> None:
snippet = self.topic.bim_snippet
if not snippet or snippet.is_external:
return
ref_filename = Path(snippet.reference).name
if self.bim_snippet:
destination_zip.writestr(f"{self.topic.guid}/{ref_filename}", self.bim_snippet)
def _save_reference_files(self, destination_zip: ZipFileInterface) -> None:
if not self.header:
return
for ref in self.header.file:
if ref.is_external or not ref.reference:
continue
real_path = self._topic_dir
for path_part in ref.reference.split("/"):
real_path = real_path.parent if path_part == ".." else real_path.joinpath(path_part)
destination_zip.writestr(real_path.at, self.reference_files[ref.reference])
def _save_document_references(self, destination_zip: ZipFileInterface) -> None:
if not self.topic:
return
for doc in self.topic.document_reference:
if doc.is_external or not doc.referenced_document:
continue
real_path = self._topic_dir
for path_part in doc.referenced_document.split("/"):
real_path = real_path.parent if path_part == ".." else real_path.joinpath(path_part)
destination_zip.writestr(real_path.at, self.document_references[doc.referenced_document])
def extract_file(self, entity, outfile: Optional[Path] = None) -> Path:
"""Extracts an element with a file into a temporary directory
These include header files, bim snippets, document references, and
viewpoint bitmaps. External reference are not downloaded. Instead, the
URI reference is returned.
:param entity: The entity with a file reference to extract
:type entity: bcf.v2.model.HeaderFile,bcf.v2.model.BimSnippet,bcf.v2.model.TopicDocumentReference
:param outfile: If provided, save the header file to that location.
Otherwise, a temporary directory is created and the filename is
derived from the header's original filename.
:type outfile: pathlib.Path,optional
:return: The filepath of the extracted file. It may be a URL if the
header file is external.
:rtype: Path
"""
if hasattr(entity, "reference"):
reference = entity.reference
else:
reference = entity.referenced_document
if not reference:
return
if getattr(entity, "is_external", False):
return entity.reference
resolved_reference = self._topic_dir
for part in Path(reference).parts:
if part == "..":
resolved_reference = resolved_reference.parent
else:
resolved_reference = resolved_reference.joinpath(part)
if not outfile:
if getattr(entity, "filename", None):
filename = entity.filename
else:
filename = resolved_reference.name
outfile = Path(tempfile.mkdtemp()) / filename
with open(outfile, "wb") as f:
f.write(resolved_reference.read_bytes())
return outfile
def add_viewpoint(self, element: entity_instance) -> None:
"""Add a viewpoint pointed at the placement of an IFC element to the topic.
Args:
element: The IFC element.
"""
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
Args:
position: the XYZ point in space
guids: one or more element GlobalIds.
"""
vi_handler = VisualizationInfoHandler.create_from_point_and_guids(
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
self.markup.viewpoints.append(mdl.ViewPoint(viewpoint=new_viewpoint.guid + ".bcfv", guid=new_viewpoint.guid))
def __eq__(self, other: object) -> bool | NoReturn:
return (
(
self.markup == other.markup
and self.viewpoints == other.viewpoints
and self.bim_snippet == other.bim_snippet
)
if isinstance(other, TopicHandler)
else NotImplemented
)
+299
View File
@@ -0,0 +1,299 @@
import uuid
import zipfile
from functools import lru_cache
from typing import Any, Iterable, Optional
import numpy as np
from ifcopenshell import entity_instance
import ifcopenshell.util.unit
import ifcopenshell.util.placement
from numpy.typing import NDArray
import bcf.v2.model as mdl
from bcf.geometry import (
camera_vectors_from_element_placement,
camera_vectors_from_target_position,
)
from bcf.inmemory_zipfile import ZipFileInterface
from bcf.xml_parser import AbstractXmlParserSerializer, XmlParserSerializer
class VisualizationInfoHandler:
"""Handle the VisualizationInfo and related objects."""
def __init__(
self,
visualization_info: mdl.VisualizationInfo,
snapshot: Optional[bytes] = None,
bitmaps: Optional[dict[str, bytes]] = None,
xml_handler: Optional[AbstractXmlParserSerializer] = None,
) -> None:
self.visualization_info = visualization_info
self.snapshot = snapshot
self.bitmaps = bitmaps or {}
self._xml_handler = xml_handler or XmlParserSerializer()
@property
def guid(self) -> str:
"""Return the GUID of the visualization info."""
return self.visualization_info.guid
@classmethod
def from_topic_viewpoints(
cls,
topic_dir: zipfile.Path,
vps: Iterable[mdl.ViewPoint],
xml_handler: Optional[AbstractXmlParserSerializer] = None,
) -> dict[str, "VisualizationInfoHandler"]:
"""Create VisualizationInfoHandler objects of a Topic's ViewPoints."""
viewpoints = {}
for vpt in vps:
visinfo = cls.load(topic_dir, vpt, xml_handler)
if visinfo and vpt.viewpoint:
viewpoints[vpt.viewpoint] = visinfo
return viewpoints
@classmethod
def load(
cls,
topic_dir: zipfile.Path,
vpt: mdl.ViewPoint,
xml_handler: Optional[AbstractXmlParserSerializer] = None,
) -> Optional["VisualizationInfoHandler"]:
"""
Load the VisualizationInfo and related objects from a BCF zip file.
Args:
topic_dir: The directory in the BCF zip file to load from.
vpt: The ViewPoint to load.
xml_handler: The XML handler to use to parse the VisualizationInfo.
Returns:
The VisualizationInfoHandler object.
"""
visinfo = cls._load_visinfo(topic_dir, vpt.viewpoint, xml_handler)
if not visinfo:
return None
snapshot = cls._load_snapshot(topic_dir, vpt.snapshot)
bitmaps = cls._load_bitmaps(topic_dir, visinfo)
return cls(visinfo, snapshot, bitmaps, xml_handler)
@staticmethod
def _load_visinfo(
topic_dir: zipfile.Path,
vp_name: Optional[str],
xml_handler: Optional[AbstractXmlParserSerializer] = None,
) -> Optional[mdl.VisualizationInfo]:
if not vp_name:
return None
vp_path = topic_dir.joinpath(vp_name)
if vp_path.exists():
xml_handler = xml_handler or XmlParserSerializer()
return xml_handler.parse(vp_path.read_bytes(), mdl.VisualizationInfo)
return None
@staticmethod
def _load_snapshot(topic_dir: zipfile.Path, vp_snapshot: Optional[str]) -> Optional[bytes]:
if vp_snapshot:
snapshot_path = topic_dir.joinpath(vp_snapshot)
if snapshot_path.exists():
return snapshot_path.read_bytes()
return None
@staticmethod
def _load_bitmaps(topic_dir: zipfile.Path, visinfo: Optional[mdl.VisualizationInfo]) -> dict[str, bytes]:
if not visinfo or not (bitmaps := visinfo.bitmap):
return {}
bitmaps_dict = {}
for bitmap in bitmaps:
if not bitmap.reference:
continue
bitmap_path = topic_dir.joinpath(bitmap.reference)
if bitmap_path.exists():
bitmaps_dict[bitmap.reference] = bitmap_path.read_bytes()
return bitmaps_dict
def save(
self,
bcf_zip: ZipFileInterface,
topic_dir: str,
vpt: mdl.ViewPoint,
) -> None:
"""
Save the VisualizationInfo and related objects to a BCF zip file.
Args:
bcf_zip: The BCF zip file to save to.
topic_dir: The directory in the BCF zip file to save to.
vpt: The ViewPoint to save.
"""
if not (vp_name := vpt.viewpoint):
return
self._save_visinfo(bcf_zip, topic_dir, vp_name)
self._save_snapshot(bcf_zip, topic_dir, vpt.snapshot)
self._save_bitmaps(bcf_zip, topic_dir)
def _save_snapshot(self, bcf_zip: ZipFileInterface, topic_dir: str, filename: Optional[str]) -> None:
if self.snapshot and filename:
bcf_zip.writestr(f"{topic_dir}/{filename}", self.snapshot)
def _save_visinfo(self, bcf_zip: ZipFileInterface, topic_dir: str, vp_name: str) -> None:
bcf_zip.writestr(
f"{topic_dir}/{vp_name}",
self._xml_handler.serialize(self.visualization_info),
)
def _save_bitmaps(self, bcf_zip: ZipFileInterface, topic_dir: str) -> None:
if not self.bitmaps:
return
if not (bitmaps_defs := self.visualization_info.bitmap):
return
for bitmap_def in bitmaps_defs:
if not (bitmap_name := bitmap_def.reference):
continue
if bitmap_name in self.bitmaps:
bcf_zip.writestr(f"{topic_dir}/{bitmap_name}", self.bitmaps[bitmap_name])
@classmethod
def create_new(
cls,
element: entity_instance,
xml_handler: Optional[AbstractXmlParserSerializer] = None,
) -> "VisualizationInfoHandler":
"""
Create a new VisualizationInfoHandler object from an IFC element.
Args:
element: The IFC element to point at.
xml_handler: The XML handler to use.
Returns:
The VisualizationInfoHandler object.
"""
xml_handler = xml_handler or XmlParserSerializer()
return cls(visualization_info=build_viewpoint(element), xml_handler=xml_handler)
@classmethod
def create_from_point_and_guids(
cls,
position: NDArray[np.float_],
*guids: str,
xml_handler: Optional[AbstractXmlParserSerializer] = None,
) -> "VisualizationInfoHandler":
"""
Create a new VisualizationInfoHandler object from an IFC element.
Args:
position: target point coordinates.
*guids: One or more IFC element GUID.
xml_handler: The XML handler to use.
Returns:
The VisualizationInfoHandler object.
"""
xml_handler = xml_handler or XmlParserSerializer()
return cls(
visualization_info=build_viewpoint_from_position_and_guids(position, *guids), xml_handler=xml_handler
)
@lru_cache(maxsize=None)
def build_viewpoint(element: entity_instance) -> mdl.VisualizationInfo:
"""
Return a BCF viewpoint of an IFC element.
This function is cached to speedudp the creation of multiple BCF topics regarding the same element.
Args:
element: The IFC element to point at.
Returns:
The BCF viewpoint definition.
"""
ifc_file = element.wrapped_data.file
unit_scale = ifcopenshell.util.unit.calculate_unit_scale(ifc_file)
elem_placement = ifcopenshell.util.placement.get_local_placement(element.ObjectPlacement)
elem_placement[0][3] *= unit_scale
elem_placement[1][3] *= unit_scale
elem_placement[2][3] *= unit_scale
return mdl.VisualizationInfo(
guid=str(uuid.uuid4()),
components=build_components(element.GlobalId),
perspective_camera=build_camera(elem_placement),
)
def build_viewpoint_from_position_and_guids(position: NDArray[np.float_], *guids: str) -> mdl.VisualizationInfo:
"""
Return a BCF viewpoint of an IFC element.
This function is cached to speedudp the creation of multiple BCF topics regarding the same element.
Args:
position: target point coordinates.
*guids: One or more IFC element GUID.
Returns:
The BCF viewpoint definition.
"""
return mdl.VisualizationInfo(
guid=str(uuid.uuid4()),
components=build_components(*guids),
perspective_camera=build_camera_from_vectors(*camera_vectors_from_target_position(position)),
)
def build_components(*guids: str) -> mdl.Components:
"""
Return the BCF components from an IFC element GUID.
Args:
*guids: One or more IFC element GUID.
Returns:
The BCF components definition.
"""
components = [mdl.Component(ifc_guid=guid) for guid in guids]
return mdl.Components(
selection=mdl.ComponentSelection(component=components),
visibility=mdl.ComponentVisibility(default_visibility=True),
)
def build_camera(elem_placement: NDArray[np.float_]) -> mdl.PerspectiveCamera:
"""
Return a BCF camera for an IFC element placement matrix.
Args:
elem_placement: The IFC element placement as a rototranslation matrix.
Returns:
The BCF camera definition.
"""
return build_camera_from_vectors(*camera_vectors_from_element_placement(elem_placement))
def build_camera_from_vectors(
camera_position: NDArray[np.float_], camera_dir: NDArray[np.float_], camera_up: NDArray[np.float_]
) -> mdl.PerspectiveCamera:
"""
Return a BCF camera for an IFC element placement matrix.
Args:
camera_position: camera position array
camera_dir: camera direction versor
camera_up_vector: camera up versor
Returns:
The BCF camera definition.
"""
camera_viewpoint = mdl.Point(x=camera_position[0], y=camera_position[1], z=camera_position[2])
camera_direction = mdl.Direction(x=camera_dir[0], y=camera_dir[1], z=camera_dir[2])
camera_up_vector = mdl.Direction(x=camera_up[0], y=camera_up[1], z=camera_up[2])
return mdl.PerspectiveCamera(
camera_view_point=camera_viewpoint,
camera_direction=camera_direction,
camera_up_vector=camera_up_vector,
field_of_view=60.0,
)
+154
View File
@@ -0,0 +1,154 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Mit XMLSpy v2011 rel. 2 sp1 (http://www.altova.com) von Klaus Linhard (IABI e.V.) bearbeitet -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Markup">
<xs:complexType>
<xs:sequence>
<xs:element name="Header" type="Header" minOccurs="0"/>
<xs:element name="Topic" type="Topic"/>
<xs:element name="Comment" type="Comment" minOccurs="0" maxOccurs="unbounded"/>
<!-- ISG Jira issue BCF-9. Add support for several viewpoints and snapshots per issue -->
<xs:element name="Viewpoints" type="ViewPoint" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="Header">
<xs:sequence>
<xs:element name="File" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Filename" type="xs:string" minOccurs="0"/>
<xs:element name="Date" type="xs:dateTime" minOccurs="0"/>
<!-- Reference (URL) of the file -->
<xs:element name="Reference" type="xs:string" minOccurs="0"/>
</xs:sequence>
<xs:attributeGroup ref="FileAttributes"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<!-- ISG Jira issue BCF-9. Add support for several viewpoints and snapshots per issue -->
<xs:complexType name="ViewPoint">
<xs:sequence>
<!-- viewpoint file (xml) -->
<xs:element name="Viewpoint" type="xs:string" minOccurs="0"/>
<!-- the snapshot png -->
<xs:element name="Snapshot" type="xs:string" minOccurs="0"/>
<!-- the viewpoint index (sort order) -->
<xs:element name="Index" type="xs:int" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Guid" type="Guid" use="required"/>
<!-- Guid of the viewpoint -->
</xs:complexType>
<!-- BimSnippet -->
<xs:complexType name="BimSnippet">
<xs:sequence>
<!--
Name of the file in the topic folder containing the snippet or a URL.
E.G.- Expresscode containing p.e Issue, Request
// Maybe some header infos ?? // IfcEntites // Geometry
-->
<!-- Reference (name) to the snippet file -->
<xs:element name="Reference" type="xs:string"/>
<xs:element name="ReferenceSchema" type="xs:string"/>
</xs:sequence>
<xs:attribute name="SnippetType" type="xs:string" use="required"/>
<xs:attribute name="isExternal" type="xs:boolean" default="false"/>
<!-- This flag is true when the reference is a URL pointing outside of the BCF file-->
</xs:complexType>
<xs:complexType name="Topic">
<xs:sequence>
<xs:element name="ReferenceLink" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Title" type="xs:string"/>
<xs:element name="Priority" type="Priority" minOccurs="0"/>
<!-- ISG Jira issue BCF-8 Add a way save order the topics -->
<xs:element name="Index" type="xs:int" minOccurs="0"/>
<xs:element name="Labels" type="TopicLabel" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="CreationDate" type="xs:dateTime" minOccurs="1"/>
<xs:element name="CreationAuthor" type="UserIdType" minOccurs="1"/>
<xs:element name="ModifiedDate" type="xs:dateTime" minOccurs="0"/>
<xs:element name="ModifiedAuthor" type="UserIdType" minOccurs="0"/>
<xs:element name="DueDate" type="xs:dateTime" minOccurs="0"/>
<xs:element name="AssignedTo" type="UserIdType" minOccurs="0"/>
<xs:element name="Stage" type="Stage" minOccurs="0"/>
<xs:element name="Description" type="xs:string" minOccurs="0"/>
<xs:element name="BimSnippet" type="BimSnippet" minOccurs="0"/>
<!-- Name of the file in the topic folder or url -->
<xs:element name="DocumentReference" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<!-- Name of the file in the topic folder or url -->
<xs:element name="ReferencedDocument" type="xs:string" minOccurs="0"/>
<!-- Human readable name of the document -->
<xs:element name="Description" type="xs:string" minOccurs="0"/>
</xs:sequence>
<xs:attributeGroup ref="DocumentReference"/>
</xs:complexType>
</xs:element>
<xs:element name="RelatedTopic" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="Guid" type="Guid" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Guid" type="Guid" use="required"/>
<xs:attribute name="TopicType" type="TopicType"/>
<xs:attribute name="TopicStatus" type="TopicStatus"/>
</xs:complexType>
<!-- Reference to a document inside of the topic folder or a url pointing to the web -->
<xs:attributeGroup name="DocumentReference">
<!-- Guid of the DocumentReference -->
<xs:attribute name="Guid" type="Guid"/>
<!-- A flag that is true when the ReferencedDocument points outside of the BCF file (a URL) -->
<xs:attribute name="isExternal" type="xs:boolean" default="false"/>
</xs:attributeGroup>
<xs:complexType name="Comment">
<xs:sequence>
<xs:element name="Date" type="xs:dateTime"/>
<xs:element name="Author" type="UserIdType"/>
<xs:element name="Comment" type="xs:string"/>
<xs:element name="Viewpoint" minOccurs="0">
<xs:complexType>
<xs:attribute name="Guid" type="Guid" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="ModifiedDate" type="xs:dateTime" minOccurs="0"/>
<xs:element name="ModifiedAuthor" type="UserIdType" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Guid" type="Guid" use="required"/>
</xs:complexType>
<xs:simpleType name="TopicStatus">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="TopicType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="TopicLabel">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="Priority">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="UserIdType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="Stage">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="Guid">
<xs:restriction base="xs:string">
<xs:pattern value="[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcGuid">
<xs:restriction base="xs:string">
<xs:length value="22"/>
<xs:pattern value="[0-9,A-Z,a-z,_$]*"/>
</xs:restriction>
</xs:simpleType>
<xs:attributeGroup name="FileAttributes">
<xs:attribute name="IfcProject" type="IfcGuid"/>
<xs:attribute name="IfcSpatialStructureElement" type="IfcGuid"/>
<xs:attribute name="isExternal" type="xs:boolean" default="true"/>
</xs:attributeGroup>
</xs:schema>
+18
View File
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Mit XMLSpy v2011 rel. 2 sp1 (http://www.altova.com) von Klaus Linhard (IABI e.V.) bearbeitet -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="ProjectExtension">
<xs:complexType>
<xs:sequence>
<xs:element name="Project" type="Project" minOccurs="0"/>
<xs:element name="ExtensionSchema" type="xs:anyURI"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="Project">
<xs:sequence>
<xs:element name="Name" type="xs:string" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="ProjectId" type="xs:string" use="required"/>
</xs:complexType>
</xs:schema>
+12
View File
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Mit XMLSpy v2011 rel. 3 (http://www.altova.com) von Klaus Linhard (IABI e.V.) bearbeitet -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Version">
<xs:complexType>
<xs:sequence>
<xs:element name="DetailedVersion" type="xs:string" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="VersionId" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:schema>
+191
View File
@@ -0,0 +1,191 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Mit XMLSpy v2011 rel. 2 sp1 (http://www.altova.com) von Klaus Linhard (IABI e.V.) bearbeitet -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="VisualizationInfo">
<xs:annotation>
<xs:documentation>VisualizationInfo documentation</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Components" type="Components" minOccurs="0"/>
<xs:element name="OrthogonalCamera" type="OrthogonalCamera" minOccurs="0"/>
<xs:element name="PerspectiveCamera" type="PerspectiveCamera" minOccurs="0"/>
<xs:element name="Lines" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Line" type="Line" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ClippingPlanes" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="ClippingPlane" type="ClippingPlane" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- ISG Jira issue BCF-17: Add support for text in the viewpoints -->
<xs:element name="Bitmap" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Bitmap" type="BitmapFormat"/>
<!-- Name of the bitmap file in the topic folder -->
<xs:element name="Reference" type="xs:string"/>
<!-- Location of the center of the bitmap -->
<xs:element name="Location" type="Point"/>
<!-- Normal of the bitmap -->
<xs:element name="Normal" type="Direction"/>
<!-- Upvector of the bitmap -->
<xs:element name="Up" type="Direction"/>
<!-- Height of the bitmap -->
<xs:element name="Height" type="xs:double"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<!-- Guid of the viewpoint -->
<xs:attribute name="Guid" type="Guid" use="required"/>
</xs:complexType>
</xs:element>
<xs:complexType name="OrthogonalCamera">
<xs:sequence>
<xs:element name="CameraViewPoint" type="Point"/>
<xs:element name="CameraDirection" type="Direction"/>
<xs:element name="CameraUpVector" type="Direction"/>
<xs:element name="ViewToWorldScale" type="xs:double">
<xs:annotation>
<xs:documentation>view's visible size in meters</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="PerspectiveCamera">
<xs:sequence>
<xs:element name="CameraViewPoint" type="Point"/>
<xs:element name="CameraDirection" type="Direction"/>
<xs:element name="CameraUpVector" type="Direction"/>
<xs:element name="FieldOfView" type="FieldOfView">
<xs:annotation>
<xs:documentation>
It is currently limited to a value between 45 and 60 degrees.
This limitation will be dropped in the next release and viewers
should be expect values outside this range in current implementations.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Point">
<xs:sequence>
<xs:element name="X" type="xs:double"/>
<xs:element name="Y" type="xs:double"/>
<xs:element name="Z" type="xs:double"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Direction">
<xs:sequence>
<xs:element name="X" type="xs:double"/>
<xs:element name="Y" type="xs:double"/>
<xs:element name="Z" type="xs:double"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="FieldOfView">
<xs:restriction base="xs:double">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="170"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Components">
<xs:sequence>
<xs:element name="ViewSetupHints" type="ViewSetupHints" minOccurs="0" />
<!-- Components with relevance to the viewpoint. They should be displayed highlighted or selected in a viewer -->
<xs:element name="Selection" type="ComponentSelection" minOccurs="0" />
<xs:element name="Visibility" type="ComponentVisibility" minOccurs="1" />
<xs:element name="Coloring" type="ComponentColoring" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ViewSetupHints">
<xs:attribute name="SpacesVisible" type="xs:boolean"/>
<xs:attribute name="SpaceBoundariesVisible" type="xs:boolean"/>
<xs:attribute name="OpeningsVisible" type="xs:boolean"/>
</xs:complexType>
<xs:complexType name="ComponentSelection">
<xs:sequence>
<xs:element name="Component" type="Component" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ComponentVisibility">
<xs:sequence>
<xs:element name="Exceptions" minOccurs="0">
<!-- List Components that are different than the DefaultVisibility. E.g. if DefaultVisibility = false then list
Components that should be visible -->
<xs:complexType>
<xs:sequence>
<xs:element name="Component" type="Component" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="DefaultVisibility" type="xs:boolean"/>
</xs:complexType>
<xs:complexType name="ComponentColoring">
<xs:sequence>
<xs:element name="Color" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Component" type="Component" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="Color"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Component">
<xs:sequence>
<xs:element name="OriginatingSystem" type="xs:string" minOccurs="0"/>
<xs:element name="AuthoringToolId" type="xs:string" minOccurs="0"/>
</xs:sequence>
<xs:attribute ref="IfcGuid"/>
<!-- ISG Jira Issue BCF-14 -->
</xs:complexType>
<xs:attribute name="Color">
<xs:simpleType>
<xs:restriction base="xs:normalizedString">
<!-- Should either match 3 or 4 hex bytes , e.g. "FF00FF" or "FF00FF99" -->
<xs:pattern value="[0-9,a-f,A-F]{6}([0-9,a-f,A-F]{2})?"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="IfcGuid">
<xs:simpleType>
<xs:restriction base="xs:normalizedString">
<xs:length value="22"/>
<xs:pattern value="[0-9,A-Z,a-z,_$]*"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:complexType name="Line">
<xs:sequence>
<xs:element name="StartPoint" type="Point"/>
<xs:element name="EndPoint" type="Point"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ClippingPlane">
<xs:sequence>
<xs:element name="Location" type="Point"/>
<xs:element name="Direction" type="Direction"/>
</xs:sequence>
</xs:complexType>
<!-- ISG Jira issue BCF-17: Add support for text in the viewpoints -->
<xs:simpleType name="BitmapFormat">
<xs:restriction base="xs:string">
<xs:enumeration value="PNG"/>
<xs:enumeration value="JPG"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Guid">
<xs:restriction base="xs:string">
<xs:pattern value="[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
+1
View File
@@ -0,0 +1 @@
"""BCF XML v3 handler."""
+591
View File
@@ -0,0 +1,591 @@
# BCF - BCF Python library
# Copyright (C) 2021 Prabhat Singh <singh01prabhat@gmail.com>
#
# This file is part of BCF.
#
# BCF is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# BCF is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with BCF. If not, see <http://www.gnu.org/licenses/>.
import base64
import http.server
import os
import tempfile
import time
import urllib
import uuid
import webbrowser
from re import A
from typing import Any, Optional, Tuple
import requests
client_id, client_secret = "", ""
class OAuthReceiver(http.server.BaseHTTPRequestHandler):
def do_GET(self) -> None:
query = urllib.parse.parse_qs(urllib.parse.urlparse(self.path).query)
self.server.auth_code = query.get("code", [""])[0] # type:ignore
self.server.auth_state = query.get("state", [""])[0] # type:ignore
self.send_response(200)
self.send_header("Content-type", "text/plain")
self.end_headers()
self.wfile.write("You have now authenticated :) You may now close this browser window.".encode("utf-8"))
class FoundationClient:
def __init__(
self, client_id: str, client_secret: str, base_url: Optional[str] = None, redirect_subdir: Optional[str] = None
) -> None:
self.baseurl = base_url
self.access_token = ""
self.refresh_token = ""
self.access_token_expires_on = time.time()
self.refresh_token_expires_on = float("inf")
self.token_endpoint = ""
self.client_id = client_id
self.client_secret = client_secret
self.auth_method: Optional[str] = None
self.redirect_subdir = redirect_subdir
def get_access_token(self) -> str:
if self.access_token and self.access_token_expires_on > time.time():
return self.access_token
elif self.refresh_token and self.refresh_token_expires_on > time.time():
self.get_refresh_token()
else:
self.login()
return self.access_token
def get_auth_methods(self) -> list[Any]:
resp = requests.get(f"{self.baseurl}foundation/1.0/auth")
return resp.json()["supported_oauth2_flows"]
def get_versions(self) -> list[Any]:
resp = requests.get(f"{self.baseurl}foundation/versions")
return resp.json()["versions"]
def login(self) -> None:
resp = requests.get(f"{self.baseurl}foundation/1.0/auth")
values = resp.json()
auth_endpoint = values["oauth2_auth_url"]
self.token_endpoint = values["oauth2_token_url"]
with http.server.HTTPServer(("", 8080), OAuthReceiver) as server:
state = str(uuid.uuid4())
query = urllib.parse.urlencode(
{
"client_id": self.client_id,
"response_type": "code",
"state": state,
"redirect_uri": f"http://localhost:{server.server_address[1]}/{self.redirect_subdir}",
}
)
if "?" in auth_endpoint:
webbrowser.open(f"{auth_endpoint}&{query}")
else:
webbrowser.open(f"{auth_endpoint}?{query}")
server.timeout = 100
server.handle_request()
if server.auth_code and server.auth_state == state: # pylint: disable=E1101
data = {
"grant_type": "authorization_code",
"code": server.auth_code, # pylint: disable=E1101 type:ignore
"redirect_uri": f"http://localhost:{server.server_address[1]}/{self.redirect_subdir}",
}
headers = self._get_access_token_headers()
self.set_tokens_from_response(requests.post(self.token_endpoint, data=data, headers=headers))
def get_refresh_token(self) -> None:
self.set_tokens_from_response(
requests.post(
self.token_endpoint,
params={
"grant_type": "refresh_token",
"refresh_token": self.refresh_token,
},
).json()
)
def get_new_access_token(self) -> None:
headers = self._get_access_token_headers()
self.set_tokens_from_response(
requests.post(
self.token_endpoint,
data={
"grant_type": "refresh_token",
"refresh_token": self.refresh_token,
},
headers=headers,
).json()
)
def _get_access_token_headers(self) -> dict[str, str]:
auth_string = f"{self.client_id}:{self.client_secret}"
header_string = base64.b64encode(auth_string.encode("utf-8")).decode("utf-8")
return {"Authorization": f"Basic {header_string}"}
def set_auth_method(self, method: str = "authorization_code_grant") -> None:
if method != "authorization_code_grant":
raise NotImplementedError(f"{method} not supported")
else:
self.auth_method = method
def set_tokens_from_response(self, response: requests.Response) -> None:
response_dict = response.json()
self.access_token = response_dict["access_token"]
self.refresh_token = response_dict["refresh_token"]
self.access_token_expires_on = time.time() + response_dict["expires_in"]
if "refresh_token_expires_in" in response_dict:
self.refresh_token_expires_on = time.time() + response_dict["refresh_token_expires_in"]
class BcfClient:
def __init__(self, foundation_client: FoundationClient) -> None:
self.foundation_client = foundation_client
self.version_id: Optional[str] = None
self.baseurl: Optional[str] = None
self.filepath = tempfile.mkdtemp()
def set_version(self, version: dict[str, str]) -> None:
self.version_id = version["version_id"]
self.baseurl = version["api_base_url"]
def get(self, endpoint: str, params: Any = None, is_auth_required: bool = False) -> Any:
# TODO: handle error http status codes and raise exception. Follow error.json standard.
headers = {"Authorization": f"Bearer {self.foundation_client.get_access_token()}"}
response = requests.get(f"{self.baseurl}{endpoint}", headers=headers, params=params or None)
try:
response = requests.get(f"{self.baseurl}{endpoint}", headers=headers, params=params or None)
if response.status_code == 200:
return response.json()
response.raise_for_status()
except requests.exceptions.HTTPError as e:
print(f"message: {response.reason}' '{response.status_code}' '{ e }")
def post(self, endpoint: str, data: Any = None, params: Any = None) -> Tuple[int, str]:
headers = {
"Authorization": f"Bearer {self.foundation_client.get_access_token()}",
"Content-type": "application/json",
}
try:
response = requests.post(
f"{self.baseurl}{endpoint}", headers=headers, params=params or None, data=data or None
)
if response.status_code != 201:
response.raise_for_status()
return response.status_code, response.text
except requests.exceptions.HTTPError as errh:
print(f"message: {response.reason}' '{response.status_code}, {errh}")
return response.status_code, response.reason
def put(self, endpoint: str, data: Any = None, params: Any = None) -> Tuple[int, str]:
headers = {
"Authorization": f"Bearer {self.foundation_client.get_access_token()}",
"Content-type": "application/json",
}
try:
response = requests.put(
f"{self.baseurl}{endpoint}", headers=headers, params=params or None, data=data or None
)
if response.status_code != 200:
response.raise_for_status()
return response.status_code, response.text
except requests.exceptions.HTTPError as errh:
print(f"message: {response.reason}' '{response.status_code}, {errh}")
return response.status_code, response.reason
def delete(self, endpoint: str, params: Any = None) -> Tuple[int, str]:
headers = {
"Authorization": f"Bearer {self.foundation_client.get_access_token()}",
"Content-type": "application/json",
}
try:
response = requests.delete(f"{self.baseurl}{endpoint}", headers=headers, params=params or None)
if response.status_code != 200:
response.raise_for_status()
return response.status_code, response.text
except requests.exceptions.HTTPError as errh:
print(f"message: {response.reason}' '{response.status_code}, {errh}")
return response.status_code, response.reason
def get_projects(self) -> list[Any]:
return self.get("/projects")
def get_project(self, project_id: str = "") -> dict[str, Any]:
return self.get(
f"/projects/{project_id}",
{
"project_id": project_id,
},
)
def update_project(self, project_id: str = "", data: Any = None) -> Tuple[int, str]:
url = f"{self.baseurl}/projects/{project_id}"
headers = {"Authorization": f"Bearer {self.foundation_client.get_access_token()}"}
resp = requests.put(url, headers=headers, data=data)
return resp.status_code, resp.text
def get_extensions(self, project_id: str = "") -> dict[str, Any]:
return self.get(
f"/projects/{project_id}/extensions",
{
"project_id": project_id,
},
)
def get_topics(
self,
project_id: str = "",
topics: str = "",
query_string: Optional[str] = None,
) -> list[Any]:
# return self.get(
# f"/projects/{project_id}/topics",
# {
# "project_id": project_id,
# "topics": topics,
# "query_string": query_string,
# },
# )
pass
def get_topic(self, project_id: str = "", topic_id: str = "") -> dict[str, Any]:
return self.get(
f"/projects/{project_id}/topics/{topic_id}",
{
"project_id": project_id,
"topic_id": topic_id,
},
)
def create_topic(self, project_id: str = "", data: Any = None) -> Tuple[int, str]:
return self.post(f"/projects/{project_id}/topics", data=data)
def update_topic(self, project_id: str = "", topic_id: str = "", data: Any = None) -> Tuple[int, str]:
return self.put(f"/projects/{project_id}/topics/{topic_id}", data=data)
def delete_topic(self, project_id: str = "", topic_id: str = "") -> Tuple[int, str]:
return self.delete(f"/projects/{project_id}/topics/{topic_id}")
def get_snippet(self, project_id: str = "", topic_id: str = "") -> Tuple[int, str]:
headers = {
"Authorization": f"Bearer {self.foundation_client.get_access_token()}",
"Content-type": "application/octet-stream",
}
response = requests.get(f"{self.baseurl}/projects/{project_id}/topics/{topic_id}/snippet", headers=headers)
content = response.content.decode("utf-8")
with open(os.path.join(self.filepath, f"{project_id}_{topic_id}_snippet.txt"), "w") as f:
f.write(content)
return response.status_code, content
def update_snippet(self, project_id: str = "", topic_id: str = "", files: Any = None, data: Any = None) -> int:
headers = {
"Authorization": f"Bearer {self.foundation_client.get_access_token()}",
"Content-type": "application/octet-stream",
}
response = requests.put(
f"{self.baseurl}/projects/{project_id}/topics/{topic_id}/snippet", headers=headers, files=files
)
return response.status_code
def get_files_information(self, project_id: str = "") -> list[Any]:
return self.get(
f"/projects/{project_id}/files_information",
{
"project_id": project_id,
},
)
def get_files(self, project_id: str = "", topic_id: str = "") -> list[Any]:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/files",
{
"project_id": project_id,
"topic_id": topic_id,
},
)
def update_files(
self,
project_id: str = "",
topic_id: str = "",
data: Any = None,
params: Any = None,
) -> Tuple[int, str]:
return self.put(
f"/projects/{project_id}/topics/{topic_id}/files",
data=data,
)
def get_comments(self, project_id: str = "", topic_id: str = "") -> None:
pass
def create_comments(
self,
project_id: str = "",
topic_id: str = "",
data: Any = None,
params: Any = None,
) -> Tuple[int, str]:
return self.post(
f"/projects/{project_id}/topics/{topic_id}/comments",
data=data,
)
def get_comment(self, project_id: str = "", topic_id: str = "", comment_id: str = "") -> dict[str, Any]:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/comments/{comment_id}",
{
"project_id": project_id,
"topic_id": topic_id,
"comment_id": comment_id,
},
)
def delete_comment(self, project_id: str = "", topic_id: str = "", comment_id: str = "") -> Tuple[int, str]:
return self.delete(f"/projects/{project_id}/topics/{topic_id}/comments/{comment_id}")
def update_comment(
self,
project_id: str = "",
topic_id: str = "",
comment_id: str = "",
data: Any = None,
) -> Tuple[int, str]:
return self.put(
f"/projects/{project_id}/topics/{topic_id}/comments/{comment_id}",
data=data,
)
def get_viewpoints(self, project_id: str = "", topic_id: str = "") -> list[Any]:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/viewpoints",
{
"project_id": project_id,
"topic_id": topic_id,
},
)
def create_viewpoints(self, project_id: str = "", topic_id: str = "", data: Any = None) -> Tuple[int, str]:
return self.post(
f"/projects/{project_id}/topics/{topic_id}/viewpoints",
data=data,
)
def get_viewpoint(self, project_id: str = "", topic_id: str = "", viewpoint_id: str = "") -> dict[str, Any]:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/viewpoints/{viewpoint_id}",
{
"project_id": project_id,
"topic_id": topic_id,
"viewpoint_id": viewpoint_id,
},
)
def delete_viewpoint(
self,
project_id: str = "",
topic_id: str = "",
viewpoint_id: str = "",
) -> Tuple[int, str]:
return self.delete(
f"/projects/{project_id}/topics/{topic_id}/viewpoints/{viewpoint_id}",
)
def get_snapshot(self, project_id: str = "", topic_id: str = "", viewpoint_id: str = "") -> str:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/viewpoints/{viewpoint_id}/snapshot",
{
"project_id": project_id,
"topic_id": topic_id,
"viewpoint_id": viewpoint_id,
},
)
def get_bitmap(self, project_id: str = "", topic_id: str = "", viewpoint_id: str = "", bitmap_id: str = "") -> str:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/viewpoints/{viewpoint_id}/bitmaps/{bitmap_id}",
{
"project_id": project_id,
"topic_id": topic_id,
"viewpoint_id": viewpoint_id,
"bitmap_id": bitmap_id,
},
)
def get_selection(self, project_id: str = "", topic_id: str = "", viewpoint_id: str = "") -> dict[str, Any]:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/viewpoints/{viewpoint_id}/selection",
{
"project_id": project_id,
"topic_id": topic_id,
"viewpoint_id": viewpoint_id,
},
)
def get_coloring(self, project_id: str = "", topic_id: str = "", viewpoint_id: str = "") -> dict[str, Any]:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/viewpoints/{viewpoint_id}/coloring",
{
"project_id": project_id,
"topic_id": topic_id,
"viewpoint_id": viewpoint_id,
},
)
def get_visibility(self, project_id: str = "", topic_id: str = "", viewpoint_id: str = "") -> dict[str, Any]:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/viewpoints/{viewpoint_id}/visibility",
{
"project_id": project_id,
"topic_id": topic_id,
"viewpoint_id": viewpoint_id,
},
)
def get_related_topics(self, project_id: str = "", topic_id: str = "") -> list[Any]:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/related_topics",
{
"project_id": project_id,
"topic_id": topic_id,
},
)
def update_related_topics(
self,
project_id: str = "",
topic_id: str = "",
data: Any = None,
) -> Tuple[int, str]:
return self.put(
f"/projects/{project_id}/topics/{topic_id}/related_topics",
data=data,
)
def get_document_references(self, project_id: str = "", topic_id: str = "") -> list[Any]:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/document_references",
{
"project_id": project_id,
"topic_id": topic_id,
},
)
def create_document_reference(
self,
project_id: str = "",
topic_id: str = "",
data: Any = None,
) -> Tuple[int, str]:
return self.post(
f"/projects/{project_id}/topics/{topic_id}/document_references",
data=data,
)
def update_document_references(
self,
project_id: str = "",
topic_id: str = "",
document_reference_id: str = "",
data: Any = None,
) -> Tuple[int, str]:
return self.put(
f"/projects/{project_id}/topics/{topic_id}/document_references/{document_reference_id}",
data=data,
)
def get_documents(self, project_id: str = "", topic_id: str = "") -> list[Any]:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/documents",
{
"project_id": project_id,
"topic_id": topic_id,
},
)
def create_document(
self, project_id: str = "", topic_id: str = "", guid: Optional[str] = None, files: Any = None, data: Any = None
) -> int:
headers = {
"Authorization": f"Bearer {self.foundation_client.get_access_token()}",
"Content-type": "application/octet-stream",
}
response = requests.post(
f"/projects/{project_id}/topics/{topic_id}/documents",
data=data,
params={"guid": guid},
files=files,
headers=headers,
)
return response.status_code
def get_document(self, project_id: str = "", topic_id: str = "", document_id: str = "") -> Tuple[int, str]:
headers = {
"Authorization": f"Bearer {self.foundation_client.get_access_token()}",
"Content-type": "application/octet-stream",
}
response = requests.get(f"{self.baseurl}/projects/{project_id}/topics/documents/{document_id}", headers=headers)
content = response.content.decode("utf-8")
with open(os.path.join(self.filepath, f"{project_id}_{topic_id}_{document_id}_document.txt"), "w") as f:
f.write(content)
return response.status_code, content
def get_topics_events(self, project_id: str = "") -> list[Any]:
return self.get(
f"/projects/{project_id}/topics/events",
{
"project_id": project_id,
},
)
def get_topic_events(self, project_id: str = "", topic_id: str = "") -> list[Any]:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/events",
{
"project_id": project_id,
"topic_id": topic_id,
},
)
def get_comments_events(self, project_id: str = "") -> list[Any]:
return self.get(
f"/projects/{project_id}/topics/comments/events",
{
"project_id": project_id,
},
)
def get_comment_events(self, project_id: str = "", topic_id: str = "", comment_id: str = "") -> list[Any]:
return self.get(
f"/projects/{project_id}/topics/{topic_id}/comments/{comment_id}/events",
{
"project_id": project_id,
"topic_id": topic_id,
"comment_id": comment_id,
},
)
+291
View File
@@ -0,0 +1,291 @@
"""BCF XML V3 handlers."""
import uuid
import warnings
import zipfile
from pathlib import Path
from typing import Any, NoReturn, Optional, TypeVar
import bcf.v3.model as mdl
from bcf.inmemory_zipfile import InMemoryZipFile, ZipFileInterface
from bcf.v3.document import DocumentsHandler
from bcf.v3.topic import TopicHandler
from bcf.xml_parser import AbstractXmlParserSerializer, XmlParserSerializer
T = TypeVar("T")
class BcfXml:
"""BCF XML handler."""
def __init__(
self, filename: Optional[Path] = None, xml_handler: Optional[AbstractXmlParserSerializer] = None
) -> None:
self._filename = filename
self._xml_handler = xml_handler or XmlParserSerializer()
self._version: Optional[mdl.Version] = None
self._project_info: Optional[mdl.ProjectInfo] = None
self._extensions: Optional[mdl.Extensions] = None
self._topics: dict[str, TopicHandler] = {}
self._documents: Optional[DocumentsHandler] = None
self._zip_file = self._load_zip_file()
def __enter__(self) -> "BcfXml":
return self
def __exit__(self, *args: Any) -> None:
self.close()
def __del__(self) -> None:
self.close()
def close(self) -> None:
if self._zip_file:
self._zip_file.close()
def _load_zip_file(self) -> Optional[zipfile.ZipFile]:
return zipfile.ZipFile(self._filename) if self._filename else None
@property
def version(self) -> mdl.Version:
"""Bcf Version."""
if not self._version:
self._version = (
self._xml_handler.parse(self._zip_file.read("bcf.version"), mdl.Version)
if self._zip_file
else mdl.Version(version_id="3.0")
)
return self._version
@version.setter
def version(self, value: mdl.Version) -> None:
self._version = value
@property
def project_info(self) -> Optional[mdl.ProjectInfo]:
"""BCF project information."""
if not self._project_info and self._zip_file and zipfile.Path(self._zip_file, "project.bcfp").exists():
self._project_info = self._xml_handler.parse(self._zip_file.read("project.bcfp"), mdl.ProjectInfo)
return self._project_info
@project_info.setter
def project_info(self, value: Optional[mdl.ProjectInfo]) -> None:
self._project_info = value
@property
def project(self) -> Optional[mdl.Project]:
"""BCF project."""
return self.project_info.project if self.project_info else None
@property
def extensions(self) -> Optional[mdl.Extensions]:
"""BCF extensions."""
if not self._extensions and self._zip_file:
self._extensions = self._xml_handler.parse(self._zip_file.read("extensions.xml"), mdl.Extensions)
return self._extensions
@extensions.setter
def extensions(self, value: Optional[mdl.Extensions]) -> None:
self._extensions = value
@property
def topics(self) -> dict[str, TopicHandler]:
"""BCF topics."""
if not self._topics and self._zip_file:
self._load_topics()
return self._topics
def _load_topics(self) -> None:
for topic_dir in zipfile.Path(self._zip_file).iterdir():
if not topic_dir.is_dir():
continue
markup_path = topic_dir.joinpath("markup.bcf")
if not markup_path.exists():
continue
self._topics[topic_dir.name] = TopicHandler(topic_dir, self._xml_handler)
@property
def documents(self) -> Optional[DocumentsHandler]:
"""Documents stored in the BCF file."""
if not self._documents and self._zip_file:
self._documents = DocumentsHandler.load(self._zip_file, self._xml_handler)
return self._documents
@classmethod
def load(cls, filename: Path, xml_handler: Optional[AbstractXmlParserSerializer] = None) -> Optional["BcfXml"]:
"""
Create a BcfXml object from a file.
Args:
filename: Path to the file.
xml_handler: XML parser and serializer.
Returns:
A BcfXml object with the file contents.
Raises:
ValueError: If the file name is null or empty
"""
if not filename:
raise ValueError("filename is required")
xml_handler = xml_handler or XmlParserSerializer()
return cls(xml_handler=xml_handler, filename=filename)
@classmethod
def create_new(
cls,
project_name: Optional[str] = None,
extensions: Optional[mdl.Extensions] = None,
xml_handler: Optional[AbstractXmlParserSerializer] = None,
) -> "BcfXml":
"""
Create a new BcfXml object.
Args:
project_name: The name of the project.
extensions: The Extension XML object. Defaults to an empty one.
xml_handler: XML parser and serializer.
Returns:
A new BcfXml object.
"""
instance = cls(xml_handler=xml_handler or XmlParserSerializer())
instance.project_info = mdl.ProjectInfo(project=mdl.Project(name=project_name, project_id=str(uuid.uuid4())))
instance.extensions = extensions or mdl.Extensions()
return instance
def save(self, filename: Optional[Path] = None, keep_open: bool = False) -> None:
"""Save the BCF file to the given filename."""
if not filename and not self._filename:
raise ValueError("No file name specified, cannot save BCF file.")
if filename:
self._filename = filename
with InMemoryZipFile(self._filename) as bcf_zip:
self._save_project(bcf_zip)
self._save_version(bcf_zip)
self._save_extensions(bcf_zip)
self._save_documents(bcf_zip)
self._save_topics(bcf_zip)
if keep_open:
self._zip_file = self._load_zip_file()
def _save_project(self, destination_zip: ZipFileInterface) -> None:
self._smart_save_xml(destination_zip, self._project_info, "project.bcfp")
def _save_version(self, destination_zip: ZipFileInterface) -> None:
if not self._version and self._zip_file:
destination_zip.writestr("bcf.version", self._zip_file.read("bcf.version"))
else:
self._save_xml(destination_zip, "bcf.version", self.version)
def _save_extensions(self, destination_zip: ZipFileInterface) -> None:
self._smart_save_xml(destination_zip, self._extensions, "extensions.xml")
def _smart_save_xml(self, destination_zip: ZipFileInterface, item: Any, target: str) -> None:
if item:
self._save_xml(destination_zip, target, item)
elif self._zip_file and zipfile.Path(self._zip_file, target).exists():
destination_zip.writestr(target, self._zip_file.read(target))
def _save_xml(self, destination_zip: ZipFileInterface, inner_file: str, xml_obj: Any) -> None:
destination_zip.writestr(inner_file, self._xml_handler.serialize(xml_obj))
def _save_documents(self, bcf_zip: ZipFileInterface) -> None:
if self.documents:
self.documents.save(bcf_zip)
def _save_topics(self, destination_zip: ZipFileInterface) -> None:
for topic_handler in self.topics.values():
topic_handler.save(destination_zip)
def add_topic(
self, title: str, description: str, author: str, topic_type: str = "", topic_status: str = ""
) -> TopicHandler:
"""
Add a new topic to the BCF.
Args:
title: The title of the topic.
description: The description of the topic.
author: The author of the topic.
topic_type: The type of the topic.
topic_status: The status of the topic.
Returns:
The newly created topic wrapped inside a TopicHandler object.
"""
topic_handler = TopicHandler.create_new(
title,
description,
author,
topic_type=topic_type,
topic_status=topic_status,
xml_handler=self._xml_handler,
)
self.topics[topic_handler.guid] = topic_handler
return topic_handler
def __eq__(self, other: object) -> bool | NoReturn:
return (
self.version == other.version
and self.project_info == other.project_info
and self.extensions == other.extensions
if isinstance(other, BcfXml)
else NotImplemented
)
# region Deprecated methods
def new_project(self) -> "BcfXml":
"""Deprecated method."""
warnings.warn("new_project is deprecated, use create_new instead.", DeprecationWarning)
return self.create_new()
def get_project(self, _filepath: Optional[str] = None) -> Optional[mdl.Project]:
"""Deprecated method."""
warnings.warn("get_project is deprecated, use project_info.project instead.", DeprecationWarning)
return self.project
def edit_project(self) -> None:
"""Deprecated method."""
warnings.warn("edit_project is deprecated, there's no need to use it.", DeprecationWarning)
def save_project(self, filepath: Path) -> None:
"""Deprecated method."""
warnings.warn("save_project is deprecated, use save instead.", DeprecationWarning)
self.save(filepath)
def get_version(self) -> str:
warnings.warn("get_version is deprecated, use version.version_id instead.", DeprecationWarning)
return self.version.version_id
def edit_version(self) -> None:
"""Deprecated method."""
warnings.warn("edit_version is deprecated, there's no need to use it.", DeprecationWarning)
def get_topics(self) -> dict[str, TopicHandler]:
"""Deprecated method."""
warnings.warn("get_topics is deprecated, use topics instead.", DeprecationWarning)
return self.topics
def get_topic(self, guid: str) -> TopicHandler:
"""Return a topic by its GUID."""
warnings.warn("get_topic is deprecated, use topics[guid] instead", DeprecationWarning)
return self.topics[guid]
def get_header(self, guid: str) -> Optional[mdl.Header]:
"""Return the header of a Topic by its GUID."""
return self.topics[guid].header
def edit_topic(self) -> None:
"""Deprecated method."""
warnings.warn("edit_topic is deprecated, there's no need to use it.", DeprecationWarning)
def add_comment(self, _topic: mdl.Topic, _comment: Optional[mdl.Comment] = None) -> None:
"""Deprecated method."""
warnings.warn("add_comment is deprecated, use topics methods instead.", DeprecationWarning)
def edit_comment(self) -> None:
"""Deprecated method."""
warnings.warn("edit_comment is deprecated, there's no need to use it.", DeprecationWarning)
# TODO: deprecate other methods
# endregion
+61
View File
@@ -0,0 +1,61 @@
"""BCF XML V3 Documents handler."""
import zipfile
from typing import Any, Optional
import bcf.v3.model as mdl
from bcf.inmemory_zipfile import ZipFileInterface
from bcf.xml_parser import AbstractXmlParserSerializer, XmlParserSerializer
class DocumentsHandler:
"""BCF documents handler."""
def __init__(
self,
definition: mdl.DocumentInfo,
documents: Optional[dict[str, bytes]] = None,
xml_handler: Optional[AbstractXmlParserSerializer] = None,
) -> None:
self.definition = definition
self.documents = documents or {}
self._xml_handler = xml_handler or XmlParserSerializer()
@classmethod
def load(
cls,
zip_file: zipfile.ZipFile,
xml_handler: Optional[AbstractXmlParserSerializer] = None,
) -> Optional["DocumentsHandler"]:
"""
Loads the documents from the given zip file directory.
Args:
zip_path: The directory path inside the zip file.
xml_handler: The xml parser/serializer to use.
Returns:
The documents handler.
"""
xml_handler = xml_handler or XmlParserSerializer()
file_to_open = zipfile.Path(zip_file, "documents.xml")
if not file_to_open.exists():
return None
definition = xml_handler.parse(file_to_open.read_bytes(), mdl.DocumentInfo)
documents = {}
if def_docs := definition.documents:
for document in def_docs.document:
document_path = zipfile.Path(zip_file, f"documents/{document.guid}")
if document_path.exists():
documents[document.filename] = document_path.read_bytes()
return cls(definition, documents=documents)
def save(self, bcf_zip: ZipFileInterface) -> None:
"""Save the documents to the zip file."""
bcf_zip.writestr("documents.xml", self._xml_handler.serialize(self.definition))
if documents := self.definition.documents:
for doc in documents.document:
if doc.filename in self.documents:
bcf_zip.writestr(
f"documents/{doc.guid}",
self.documents[doc.filename],
)
+110
View File
@@ -0,0 +1,110 @@
from bcf.v3.model.documents import Document, DocumentInfo, DocumentInfoDocuments
from bcf.v3.model.extensions import (
Extensions,
ExtensionsPriorities,
ExtensionsSnippetTypes,
ExtensionsStages,
ExtensionsTopicLabels,
ExtensionsTopicStatuses,
ExtensionsTopicTypes,
ExtensionsUsers,
)
from bcf.v3.model.markup import (
BimSnippet,
Comment,
CommentViewpoint,
DocumentReference,
File,
Header,
HeaderFiles,
Markup,
Topic,
TopicComments,
TopicDocumentReferences,
TopicLabels,
TopicReferenceLinks,
TopicRelatedTopics,
TopicRelatedTopicsRelatedTopic,
TopicViewpoints,
ViewPoint,
)
from bcf.v3.model.project import Project, ProjectInfo
from bcf.v3.model.version import Version
from bcf.v3.model.visinfo import (
Bitmap,
BitmapFormat,
ClippingPlane,
Component,
ComponentColoring,
ComponentColoringColor,
ComponentColoringColorComponents,
Components,
ComponentSelection,
ComponentVisibility,
ComponentVisibilityExceptions,
Direction,
Line,
OrthogonalCamera,
PerspectiveCamera,
Point,
ViewSetupHints,
VisualizationInfo,
VisualizationInfoBitmaps,
VisualizationInfoClippingPlanes,
VisualizationInfoLines,
)
__all__ = [
"Document",
"DocumentInfo",
"DocumentInfoDocuments",
"Extensions",
"ExtensionsPriorities",
"ExtensionsSnippetTypes",
"ExtensionsStages",
"ExtensionsTopicLabels",
"ExtensionsTopicStatuses",
"ExtensionsTopicTypes",
"ExtensionsUsers",
"BimSnippet",
"Comment",
"CommentViewpoint",
"DocumentReference",
"File",
"Header",
"HeaderFiles",
"Markup",
"Topic",
"TopicComments",
"TopicDocumentReferences",
"TopicLabels",
"TopicReferenceLinks",
"TopicRelatedTopics",
"TopicRelatedTopicsRelatedTopic",
"TopicViewpoints",
"ViewPoint",
"Project",
"ProjectInfo",
"Version",
"Bitmap",
"BitmapFormat",
"ClippingPlane",
"Component",
"ComponentColoring",
"ComponentColoringColor",
"ComponentColoringColorComponents",
"ComponentSelection",
"ComponentVisibility",
"ComponentVisibilityExceptions",
"Components",
"Direction",
"Line",
"OrthogonalCamera",
"PerspectiveCamera",
"Point",
"ViewSetupHints",
"VisualizationInfo",
"VisualizationInfoBitmaps",
"VisualizationInfoClippingPlanes",
"VisualizationInfoLines",
]
+61
View File
@@ -0,0 +1,61 @@
from dataclasses import dataclass, field
from typing import List, Optional
@dataclass(slots=True, kw_only=True)
class Document:
filename: str = field(
metadata={
"name": "Filename",
"type": "Element",
"namespace": "",
"required": True,
"min_length": 1,
"white_space": "collapse",
}
)
description: Optional[str] = field(
default=None,
metadata={
"name": "Description",
"type": "Element",
"namespace": "",
"min_length": 1,
"white_space": "collapse",
}
)
guid: str = field(
metadata={
"name": "Guid",
"type": "Attribute",
"required": True,
"pattern": r"[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}",
}
)
@dataclass(slots=True, kw_only=True)
class DocumentInfoDocuments:
class Meta:
global_type = False
document: List[Document] = field(
default_factory=list,
metadata={
"name": "Document",
"type": "Element",
"namespace": "",
}
)
@dataclass(slots=True, kw_only=True)
class DocumentInfo:
documents: Optional[DocumentInfoDocuments] = field(
default=None,
metadata={
"name": "Documents",
"type": "Element",
"namespace": "",
}
)
+181
View File
@@ -0,0 +1,181 @@
from dataclasses import dataclass, field
from typing import List, Optional
@dataclass(slots=True, kw_only=True)
class ExtensionsPriorities:
class Meta:
global_type = False
priority: List[str] = field(
default_factory=list,
metadata={
"name": "Priority",
"type": "Element",
"namespace": "",
"min_length": 1,
"white_space": "collapse",
}
)
@dataclass(slots=True, kw_only=True)
class ExtensionsSnippetTypes:
class Meta:
global_type = False
snippet_type: List[str] = field(
default_factory=list,
metadata={
"name": "SnippetType",
"type": "Element",
"namespace": "",
"min_length": 1,
"white_space": "collapse",
}
)
@dataclass(slots=True, kw_only=True)
class ExtensionsStages:
class Meta:
global_type = False
stage: List[str] = field(
default_factory=list,
metadata={
"name": "Stage",
"type": "Element",
"namespace": "",
"min_length": 1,
"white_space": "collapse",
}
)
@dataclass(slots=True, kw_only=True)
class ExtensionsTopicLabels:
class Meta:
global_type = False
topic_label: List[str] = field(
default_factory=list,
metadata={
"name": "TopicLabel",
"type": "Element",
"namespace": "",
"min_length": 1,
"white_space": "collapse",
}
)
@dataclass(slots=True, kw_only=True)
class ExtensionsTopicStatuses:
class Meta:
global_type = False
topic_status: List[str] = field(
default_factory=list,
metadata={
"name": "TopicStatus",
"type": "Element",
"namespace": "",
"min_length": 1,
"white_space": "collapse",
}
)
@dataclass(slots=True, kw_only=True)
class ExtensionsTopicTypes:
class Meta:
global_type = False
topic_type: List[str] = field(
default_factory=list,
metadata={
"name": "TopicType",
"type": "Element",
"namespace": "",
"min_length": 1,
"white_space": "collapse",
}
)
@dataclass(slots=True, kw_only=True)
class ExtensionsUsers:
class Meta:
global_type = False
user: List[str] = field(
default_factory=list,
metadata={
"name": "User",
"type": "Element",
"namespace": "",
"min_length": 1,
"white_space": "collapse",
}
)
@dataclass(slots=True, kw_only=True)
class Extensions:
topic_types: Optional[ExtensionsTopicTypes] = field(
default=None,
metadata={
"name": "TopicTypes",
"type": "Element",
"namespace": "",
}
)
topic_statuses: Optional[ExtensionsTopicStatuses] = field(
default=None,
metadata={
"name": "TopicStatuses",
"type": "Element",
"namespace": "",
}
)
priorities: Optional[ExtensionsPriorities] = field(
default=None,
metadata={
"name": "Priorities",
"type": "Element",
"namespace": "",
}
)
topic_labels: Optional[ExtensionsTopicLabels] = field(
default=None,
metadata={
"name": "TopicLabels",
"type": "Element",
"namespace": "",
}
)
users: Optional[ExtensionsUsers] = field(
default=None,
metadata={
"name": "Users",
"type": "Element",
"namespace": "",
}
)
snippet_types: Optional[ExtensionsSnippetTypes] = field(
default=None,
metadata={
"name": "SnippetTypes",
"type": "Element",
"namespace": "",
}
)
stages: Optional[ExtensionsStages] = field(
default=None,
metadata={
"name": "Stages",
"type": "Element",
"namespace": "",
}
)

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