Andrej730
d42aa7d8cb
root.remove_product fix
2024-04-16 10:05:48 +02:00
Andrej730
38dd5a218c
root.copy_class to support copying ports in ifc2x3
2024-04-16 10:05:48 +02:00
Andrej730
661441b231
remove_product to remove IfcRelConnectsElements
2024-04-16 10:05:48 +02:00
Dion Moult
dc9b11832b
Fix #3425 . Fix invalid IFC data where grid axes should be 2D not 3D.
2024-04-16 10:05:46 +02:00
Thomas Krijnen
c2aa09b374
Update entity_instance.py
2024-04-16 10:05:46 +02:00
Thomas Krijnen
4940f95d7a
2dc4bbf8cd Apply same logic for derived attributes
2024-04-16 10:05:08 +02:00
Dion Moult
17d9ddd57d
Update tool icons to all use the same underlying "cube" shape and add bracing for structural icon and background walls for spatial icon.
2024-04-16 10:05:07 +02:00
Thomas Krijnen
d6250aaf2a
#3189 proposal ( #3190 )
2024-04-16 10:05:07 +02:00
luzpaz
1819a45e4c
Fix various typos in src/ifcgeom* subdirs
2024-04-16 10:05:04 +02:00
Dion Moult
3e7afbed08
Minor doc improvements and SQL/stream code cleanup
2024-04-15 13:30:42 +02:00
Sigma Dimensions
676c96c6e2
Georeferencing utility to convert an angle in degrees to X Axis Abscissa and Ordinate
2024-04-15 13:30:41 +02:00
Dion Moult
13075dcae4
See #3126 and 5b4010c. Fix failing tests, and allow schema_by_name to follow the same schema_version distinction as file.
2024-04-15 13:30:41 +02:00
Dion Moult
e9d12d5e31
Fix #3126 . Implement mapping from IFC4X3 to IFC4X3_ADD1 and explicit version identifiers in ifcopenshell.file
2024-04-15 13:30:41 +02:00
Andrej730
5b10923b45
ShapeBuilder.polyline - skip creating segments if they are not needed
2024-04-15 13:30:40 +02:00
Dion Moult
f1e3fb38ad
See #3334 . Fix some get_pset implementation errors in 64516a1
2024-04-15 13:30:40 +02:00
Andrej730
bd70f7bf7f
add_representation - detect non consequtive curves and handle them
...
Basically if current mesh curve is non consequtive we handle it in similar way to b03c4da7b - convert it to curves using Blender and then save them to ifc.
The advantage is that it creates less curves in ifc because mesh method wasn't able to detect separate curves correctly if vertex order was messed up (usually it is) and it would create separate curve for each curve segment.
I've also replaced figuring vertex duplicates with `bmesh.ops.remove_doubles` manually with `bmesh.ops.remove_doubles` and it's now much faster. In some cases because of the manual calculations it was taking too long - in #3233 Ryan mentiones that it freezes blender, it wasn't really freezing Blender but to finish calculations it would take 10 minutes.
2024-04-15 13:30:40 +02:00
Andrej730
33d3afc35d
experimental support for spline curves representation #3233
...
there is still no full support but as a workaround I've added blender converting curves to meshes and back to curves so we could preserve the actual shapes
before - https://i.imgur.com/9F542Iy.png
after - https://i.imgur.com/t58RlkF.png
2024-04-15 13:30:40 +02:00
Dion Moult
ce8a9293bb
See #3334 . Optimise pset getting and add simple "broadphase" filtering for all facets for faster validation.
2024-04-15 13:30:40 +02:00
Dion Moult
9af7ddaf56
See #3334 . Fix bug where get_pset didn't handle property inheritance correctly.
2024-04-15 13:30:40 +02:00
Andrej730
49abaf6798
improved relative path handling for textures #3365
...
now we're going to store all texture paths in .ifc as posix to keep them working if .ifc moved from one platform to another
previously it was saving all paths as absolute
2024-04-15 13:29:28 +02:00
Andrej730
1357b83d99
Added support for OCCLUSION textures for 3aff29dec
2024-04-15 13:29:28 +02:00
Andrej730
0d74ffd52f
Shape builder - detect AdvancedSweptSolid
...
To avoid validation errors on creating wall mounted railings
#143=IfcShapeRepresentation(#15,'Body','SweptSolid',(#116,#126,#129,#139,#142))
Rule IfcShapeRepresentation.CorrectItemsForType:
IfcShapeRepresentationTypes(self.RepresentationType, self.Items)
Violated by:
False
+ where False = IfcShapeRepresentationTypes('SweptSolid', (#116=IfcSweptDiskSolid(#115,10.,$,$,$), #126=IfcExtrudedAreaSolid(#120,#124,#125,20.), #129=IfcSweptDiskSolid(#128,10.,$,$,$), #139=IfcExtrudedAreaSolid(#133,#137,#138,20.), #142=IfcSweptDiskSolid(#141,25.000000372529,$,$,$)))
+ where 'SweptSolid' = #143=IfcShapeRepresentation(#15,'Body','SweptSolid',(#116,#126,#129,#139,#142)).RepresentationType
+ and (#116=IfcSweptDiskSolid(#115,10.,$,$,$), #126=IfcExtrudedAreaSolid(#120,#124,#125,20.), #129=IfcSweptDiskSolid(#128,10.,$,$,$), #139=IfcExtrudedAreaSolid(#133,#137,#138,20.), #142=IfcSweptDiskSolid(#141,25.000000372529,$,$,$)) = #143=IfcShapeRepresentation(#15,'Body','SweptSolid',(#116,#126,#129,#139,#142)).Items
2024-04-15 13:29:28 +02:00
Andrej730
5c1a96c24c
Shape builder - avoid duplicated indices in polylines
...
For example
IfcLineIndex((1,2,3,4,1))
instead of
IfcLineIndex((1,2,2,3,3,4,4,1))
2024-04-15 13:29:28 +02:00
Thomas Krijnen
cb804f2e84
Fix openbot build
2024-04-15 13:29:28 +02:00
Thomas Krijnen
4e599cf132
Fix openbot build
2024-04-15 13:29:20 +02:00
Thomas Krijnen
b76beabb43
Fix openbot build
2024-04-15 13:29:20 +02:00
Andrej730
ced6326bfd
ShapeBuilder to use IfcPolyline of IfcIndexedPolyCurve to support ifc2x3
...
needed it to add suport for window/door modifiers in ifc2x3 in the next commit
2024-04-15 13:29:20 +02:00
Thomas Krijnen
727d075e0e
Add --prefilter flag to draw.py
2024-04-15 13:28:16 +02:00
Andrej730
8d18a8a023
Fix for f88835b #3271
...
Now we do not rely on small offset to keep using inner curves to create linings, if some part of the lining is not present (which happens on mullions and transoms) we'll create U or L shape extrusion instead of rectangle with inner curve.
Long story short - this should keep ifc for windows valid.
2024-04-15 13:25:51 +02:00
Andrej730
e3b77613d3
Corrected L shapes in window lining after e89a9cd #3271
...
From this - https://i.imgur.com/hQuCcR3.png
To this - https://i.imgur.com/qZ2Lyfo.png
It's a bit hacky since we still use really small offsets to keep "The outer curve shall enclose all inner curves." rule for IfcArbitraryProfileDefWithVoids valid.
2024-04-15 13:25:51 +02:00
Dion Moult
bde5b52495
You can now exclude classes from streaming in ifcopenshell.stream
2024-04-15 13:25:50 +02:00
Andrej730
2fbb3c8ac6
adjust window offset on transoms/mullions for symmetry #3271
...
Before - https://i.imgur.com/DbEzJ9H.png
After - https://i.imgur.com/0CERh86.png
Added it for modifier preview and ifc 2d and 3d repr but still need to work some things in 3d representation (L shape lining is not always detected correctly).
2024-04-15 13:25:50 +02:00
Dion Moult
17582f00cf
Naive implementation of file stream and Lark based IFC-SPF reader to handle huge IFCs.
2024-04-15 13:25:50 +02:00
Dion Moult
fee6ea52ba
ifcopenshell.sqlite wrapper now handles JSON fields by default, which is significantly more performant
...
f attributes holding entity lists are expanded in SQL, this means that you end up with significantly more rows. Also, you cannot have the ifc_id marked as a UNIQUE field / benefit from unique primary key index. So leaving the fields as JSON is actually significantly more efficient (almost 10X faster to load a model into BBIM).
2024-04-15 13:25:50 +02:00
Thomas Krijnen
88823943f0
Further defer sql.py imports for ifcopenbot to succeed
2024-04-15 12:04:44 +02:00
Thomas Krijnen
4f387e723b
Comment out import mysql.connector
2024-04-15 12:04:44 +02:00
Thomas Krijnen
5a601f16fd
Correct if-clause
2024-04-15 12:04:44 +02:00
Totally a booplicate
aced364a08
smol fix
2024-04-15 12:04:44 +02:00
Totally a booplicate
0b2cfc7560
fix missing else clause
2024-04-15 12:04:44 +02:00
Totally a booplicate
dc5a0d4568
raise TypeError on invalid pset
2024-04-15 12:04:44 +02:00
Totally a booplicate
79983e5097
rework unpack_unit_value
...
handle the `None` case, simplify logic
2024-04-15 12:04:44 +02:00
Totally a booplicate
e31047e8c6
improve naming of the new method
2024-04-15 12:04:44 +02:00
Totally a booplicate
182aa3ed01
improve update_existing_properties
...
explicit class check
error out on a not supported type
better methods names
2024-04-15 12:04:44 +02:00
Totally a booplicate
0632c9bf1b
implement _try_purge
...
per review comment about repeating code
2024-04-15 12:04:44 +02:00
Totally a booplicate
cd5baefb55
restructure if/elif/else chain
2024-04-15 12:04:44 +02:00
Totally a booplicate
53dd817d97
support tuples
2024-04-15 12:04:43 +02:00
Totally a booplicate
0ce987f788
move prop check
2024-04-15 12:04:43 +02:00
Totally a booplicate
f4c618701c
per review
...
change exception message
remove TODO
pass `Unit`
raise `NotImplementedError` when no template was found
2024-04-15 12:04:43 +02:00
Totally a booplicate
c186e7120c
resolve TODO
...
This is being fixed, we should always have a class to use
2024-04-15 12:04:43 +02:00
Totally a booplicate
1f89fea569
attempt to improve pset support
...
1. Adds support to directly passed in property entities
2. Adds support for tuples
3. Adds support for P_LISTVALUE
2024-04-15 12:04:43 +02:00