Commit Graph

137 Commits

Author SHA1 Message Date
Dion Moult 861659c212 Fix #3605. Bug where invalid representation type was created when booleans are added / removed. 2024-04-16 10:24:58 +02:00
Andrej730 c2013a172f geometry.edit_object_placement was producing orphaned placements
It was producing orphaned IfcLocalPlacement if placement was parent to some other one. During edit_object_placement we were replacing all parent references with the new placement but wasn't removing the old one.
2024-04-16 10:24:57 +02:00
Dion Moult 73b93e7020 Fix #3547. Bug where using existing clippings were not preserved when editing profile or wall representations. 2024-04-16 10:22:47 +02:00
arun bd1bfe548a Update create_2pt_wall.py (#3553)
* Update create_2pt_wall.py

included unit scale for use cases other than si unit

* Revised Update create_2pt_wall.py

included is_si kwarg to select between si units and other units and also changed the dtype of p1 and p2 array to float incase they are entered as integers
2024-04-16 10:22:46 +02:00
Andrej730 81dc68d11d Fixed #3262 2024-04-16 10:10:50 +02:00
Dion Moult 84c91518b5 Fix #2906. Basic support added for perspective drawings. 2024-04-16 10:10:50 +02:00
Dion Moult 1e8662f079 Fix #3497. Set closed vs unclosed polygonal face sets to allow loading in some IFC software. 2024-04-16 10:05:51 +02:00
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 7a7c38db5b Rename sverchok representation to mesh representation 2024-04-16 10:05:49 +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
Andrej730 8d18a8a023 Fix for f88835b #3271
Now we do not rely on small offset to keep using inner curves to create linings, if some part of the lining is not present (which happens on mullions and transoms) we'll create U or L shape extrusion instead of rectangle with inner curve.

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

It's a bit hacky since we still use really small offsets to keep "The outer curve shall enclose all inner curves." rule for IfcArbitraryProfileDefWithVoids valid.
2024-04-15 13:25:51 +02:00
Andrej730 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
Andrej730 ad4f00648f Blender curves to IfcIndexedPolyCurve #3233
Now blender curves segments saved in IfcIndexedPolyCurves instead of creating individual polygons.
Also changed ShapeBuilder.polyline - now it will try to store points in IfcLineIndex where it's possible (previously it was storing just 2).
2024-04-15 10:59:03 +02:00
Andrej730 3d9994726b Added support for different railing cap types
Very similar to this - https://i.imgur.com/SNyvfgh.png
2024-04-15 09:52:38 +02:00
Andrej730 b5d24334fd Fixed bug with wrong position of support in wall mounted railing
The problem was that that support's disk was not rotated according to the railing path.
2024-04-15 09:52:38 +02:00
Andrej730 1dcf74eb60 WALL_MOUNTED_HANDRAIL type for Railing modifier
Added WALL_MOUNTED_HANDRAIL type for railing modifier. It's still a bit work in progress - still need to add support for different railing termination types.

Here's the short demonstration - https://user-images.githubusercontent.com/9417531/234582621-6c6f948b-9cdc-4be6-b380-17ddbf5803bf.mp4
2024-04-15 09:52:37 +02:00
Andrej730 6043d35821 Sliding doors - more consistent 2d repr between door types #2919 2024-04-15 09:25:49 +02:00
Andrej730 5d4ecb7177 Sliding doors - moved annotation arrow to Annotation/PLAN_VIEW #2919 2024-04-15 09:25:49 +02:00
Andrej730 3095521e36 Fixed some validation errors for doors and windows #2925
Fixed the ones caused by using 3d curves as inner/outer curves in profiles.
2024-04-15 09:25:48 +02:00
Andrej730 3429972067 Added arrow to 2d repr of sliding doors (#2919)
Example - https://i.imgur.com/eJnhDXU.png
2024-04-15 09:25:47 +02:00
Andrej730 7f1bb71c66 IFC Door Modifier - sliding doors
Added support for sliding doors in IFC Door Modifier.

The main differences are 2d representation (https://i.imgur.com/VyEH569.png) and the door panel being placed before the lining, not after
2024-04-15 09:25:22 +02:00
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
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 cdee5532b6 Fix #2838. Bug where invalid 3D entity was used for 2D coordinates. 2023-03-09 21:01:54 +11:00
Andrej730 6a87b68c3b Window Modifier - added 2d representation
+ fixed lining offset for door 2d representation
2023-02-14 16:54:43 +05:00
Andrej730 0d0691a012 Door modifier - double doors type support 2023-02-11 16:09:13 +05:00
Andrej730 5cfc122b79 Door modifier - double swing doors
still no dashed lines in 2d representation
2023-02-11 14:20:04 +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
Andrej730 4bd7fc5304 Simplified door ifc representation 2023-02-07 16:48:37 +05:00
Andrej730 e1456533f2 Doors - clean up + black format 2023-02-06 18:53:48 +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
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 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 b3c7971ea9 Purge all data classes from API. 2023-02-01 15:44:08 +11:00
Andrej730 978f362073 More consistent default and current units for stair and window modifiers 2023-01-30 12:44:11 +05:00
Andrej730 74477d0051 Window modifier - removed hardcoded mm units
Related to #2724
2023-01-26 18:29:58 +05:00
Andrej730 04bdb12e79 Window Modifier - added mullions/transoms, removed relative panel dimensions 2023-01-26 12:30:34 +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
Dion Moult c8ba96cde8 Make syntax highlighting explicit in docs 2023-01-10 10:16:28 +11:00
Dion Moult 052d6e2254 Add API docs for georeferencing module 2022-11-28 10:30:51 +11:00
Dion Moult e22ebfbf94 Fix #2523. Extrusion depth now reflects perpendicular depth 2022-10-26 22:24:18 +11:00
Dion Moult 7ff1b8a34d New API for connecting and disconnecting elements 2022-10-25 17:54:24 +11:00