Commit Graph

1390 Commits

Author SHA1 Message Date
Andrej730 f6307520e9 Support looped railings #3415
Example - https://imgur.com/a/RaLORbk
2024-04-16 10:05:50 +02:00
Dion Moult 9c5096ea1d Write docs describing how to create profile representations 2024-04-16 10:05:49 +02:00
Dion Moult e0fffbfdfe New geometry.create_2pt_wall API function to create a wall-like representation from two points. 2024-04-16 10:05:49 +02:00
Dion Moult f3c4858d2f Add documentation for basic geometry creation 2024-04-16 10:05:49 +02:00
Dion Moult 7a7c38db5b Rename sverchok representation to mesh representation 2024-04-16 10:05:49 +02:00
Dion Moult 84570a69f8 Utility function to create rotation matrixes in numpy. 2024-04-16 10:05:49 +02:00
Andrej730 d42aa7d8cb root.remove_product fix 2024-04-16 10:05:48 +02:00
Andrej730 a5dedbedbb oops, forgot to clean up the test name 2024-04-16 10:05:48 +02:00
Andrej730 38dd5a218c root.copy_class to support copying ports in ifc2x3 2024-04-16 10:05:48 +02:00
Andrej730 8943b71d4e clean up after running test_wall_opening.py 2024-04-16 10:05:48 +02:00
Andrej730 661441b231 remove_product to remove IfcRelConnectsElements 2024-04-16 10:05:48 +02:00
Dion Moult 5a0192c5c4 Fix #3420. Fix missing sheet references on drawings and incorrect direction of section references. 2024-04-16 10:05:47 +02:00
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
Dion Moult fac527b0fe Fix failing tests since Github test runner only has IFC4X3_ADD1 not TC1 compiled in. 2024-04-15 13:30:42 +02:00
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 e8d6f122f3 See #3126. Forgot to commit tests related to explicit schema versions. 2024-04-15 13:30:41 +02:00
Thomas Krijnen 22ffd3d2b7 Update win32 download links installation.rst 2024-04-15 13:30:41 +02:00
Dion Moult e9d12d5e31 Fix #3126. Implement mapping from IFC4X3 to IFC4X3_ADD1 and explicit version identifiers in ifcopenshell.file 2024-04-15 13:30:41 +02:00
Dion Moult 200aeb896d See #3359. Bump IfcOpenShell and enable HLR prefiltering optimisation for drawing generation 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
OrionSehn 0f6e934ca8 Proposed fix to #3352 2024-04-15 13:30:40 +02:00
Andrej730 bd70f7bf7f add_representation - detect non consequtive curves and handle them
Basically if current mesh curve is non consequtive we handle it in similar way to b03c4da7b - convert it to curves using Blender and then save them to ifc.

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

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

before - https://i.imgur.com/9F542Iy.png
after - https://i.imgur.com/t58RlkF.png
2024-04-15 13:30:40 +02:00
Dion Moult ce8a9293bb See #3334. Optimise pset getting and add simple "broadphase" filtering for all facets for faster validation. 2024-04-15 13:30:40 +02:00
Dion Moult 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