Commit Graph

430 Commits

Author SHA1 Message Date
Furgo
f3f5e380ff BIM: ignore FreeCAD groups for IFC export, controlled by a user preference (#21583)
* Add .db extension to git ignore list

* BIM: new feature - add ignore groups option on IFC exports

* BIM: create generic get_architectural_contents function
2025-06-03 11:19:07 +02:00
paul
d435e31174 [BimWindow] ArchWindow/MakeWindow Normal Default Auto & SketchArch Support Sill Property (#21568)
https://github.com/FreeCAD/FreeCAD/pull/21261
Historically, the normal of a Window object was deduced by the orientation of the Base Sketch and hardcoded in the Normal property.
Now with the new AutoNormalReversed property/flag (above PR), set True as default, the auto Normal previously in opposite direction to is now consistent with that previously hardcoded.
With the normal set to 'auto', window object would not suffer weird shape if the Base Sketch is rotated by some reason.
The Normal property is set to  'auto' (0,0,0) default following the above PR.

https://github.com/FreeCAD/FreeCAD/pull/21005
BIM: Allow changing Sill parameter in Properties for Window #21005
Ground work is added to support Window augmented by SketchArch Parametric Placement feature (PR to ArchWindow.py to be submitted separately)
2025-06-03 11:15:18 +02:00
Furgo
b7008de12a BIM: fix ArchRebar default name (#21681)
* BIM: ArchRebar, only import GUI modules if the GUI is up

* BIM: ArchRebar, add tests

* BIM: Arch.makeRebar, fix rebar default name

* BIM: Arch.makeRebar, add type hints

* BIM: Arch.makeRebar, add code comments

* BIM: Arch.makeRebar, expand docstring
2025-06-02 18:31:50 +02:00
Roy-043
66cf7b4c36 Draft/BIM: change BezCurve, BSpline and Wire to Part::FeaturePython
Fixes: #7387.

See comment: https://github.com/FreeCAD/FreeCAD/issues/7387#issuecomment-2915599566

PR to change the base object of BezCurve, BSpline and Wire to `Part::FeaturePython`. This will only affect new objects. So code will have to also keep handling the old object type (`Part::Part2DObjectPython`).

The modification of BimPreflight.py needs to be verified. The steps in the old code lacked logic IMO. But I may have misunderstood.
2025-06-02 17:27:20 +02:00
Furgo
848a938d72 BIM: clarify window frame depth (#21486)
* BIM: improve tooltip for window Frame property

* BIM: rename window editor's Thickness label to Frame depth

In order to match the window's Frame property, to which
this value is added to.
- Improve tooltip
- Rename the 'default' label to be more specific

* BIM: improve window editor's Offset property tooltip

- Rename 'default' label for clarity
2025-06-02 17:24:21 +02:00
Chris Hennes
728b54f94c Merge pull request #21712 from yorikvanhavre/translations
Translations
2025-06-02 09:31:21 -05:00
Yorik van Havre
640642eed2 Translations: Merged crowdin translations 2025-06-02 11:48:26 +02:00
Roy-043
186e9c98da BIM: Terrain should not also be in Group of Site
Addresses one of the issues mentioned in #21667.

* If the Terrain is dropped on the Site it is added to the Group (as before) but the Terrain property is then also set to None.
* If one of the objects in Group is selected as the Terrain it is removed from the Group.
2025-06-02 11:45:34 +02:00
luzpaz
269ed4537f BIM: fix typo in Arch.py (#21696) 2025-06-01 18:36:10 +02:00
tetektoza
e6ec691ac1 BIM: Add support for deactivation active object to BIM Views Tree (#21570)
* BIM: Use checkbox in model tree for Activation/Deactivation of WP

* BIM: Set active object after deactivating current object if it exists

Currently we can get into a scenario where user can activate two working
planes, one after another. For example, Level, and  then Level001. If
they activate both, and then deactivate Level001, working plane switches
back to Level. But, we didn't set the object as the active one, so user
didn't have clear information that they can deactivate it, only the
working plane was switching it.

So this patch sets the object as the active one, if it exists.

* BIM: Add support for deactivation active object to BIM Views Tree

As the title says - it adds the checkbox that's similarly done in Part
workbench, so user can select/deselect the item and if they had previous
active object, it will also fall back to the previous object.

Also, moved out part of the common logic from ArchBuildingPart and
BimViews to utils.

* BIM: Handle correct context on activating WP for NativeIFC/BIM

* BIM: Remove redundant logic from BIM Views upon double click

As all of the logic is being handled now in `activate` function in
BimViews, this logic is redundant

* BIM: Rename button for taskbar and BIM Views from Activate to Active
2025-05-28 11:27:11 +02:00
tetektoza
81830d21db BIM: Parse Classification in IFC correctly for conversion/type assign 2025-05-26 10:24:34 +02:00
Furgo
0e22d16a56 BIM: add first iteration of unit tests 2025-05-26 10:23:24 +02:00
Furgo
e9d0f287f2 BIM: refactor to reduce code duplication and improved readability 2025-05-26 10:23:24 +02:00
Furgo
bdbcdef87f BIM: remove command now removes windows from walls
Fixes: #21551
2025-05-26 09:53:21 +02:00
Furgo
796ae9805f BIM: add test for window removal from walls 2025-05-26 09:53:21 +02:00
Paul Lee
fec3d96acc [ArchWall] Fix SetLength Error When Base Sketch has External Geom
fix #21357 error message problem

Github issue and discussion:
https://github.com/FreeCAD/FreeCAD/issues/21357
https://github.com/FreeCAD/FreeCAD/issues/21357#issuecomment-2886010914

ArchWall return error when Base Sketch has external(projected) geometry.

External projected geometry has TNP-problem, until the feature is TNP-tolerant,  support of external(projected) geometry at ArchWall is not encouraged. The reported error message is fixed in the meantime in this PR.
2025-05-26 09:49:36 +02:00
Benjamin Nauck
a82ab42721 Merge pull request #21289 from tetektoza/fix/fix_transparency_doors_windows_ifc
BIM: Change from RGBT to RGBA for IFC
2025-05-23 14:10:47 +02:00
paul
990109fe8c BIM - ArchWindow - Add AutoNormalReversed property 2025-05-23 12:08:33 +02:00
tetektoza
756d60d3df BIM: Additional improvements for Activate button in BIM Views
This patch introduces a few things:
- changes Activate button to be first in the list
- puts it in bold text, also adding (Default) to point it is default
  action
- removes all of the hiding logic upon double click and leaving Activate
by default to be called after double-clicking a BuildingPart
2025-05-23 12:06:55 +02:00
Roy-043
9a505c36c4 BIM: Revise close panel on doc close solution (#21302)
* BIM: Revise close panel on doc close solution

Use built-in feature to close the task panels. See #21253.

* Keep self.doc
2025-05-23 11:49:55 +02:00
tetektoza
c528ce29eb BIM/Help: Access DockWidgetArea QFlag enum correctly
Currently, for both Help and BIM Views panels we can get a traceback
about incorrect casting if we move the panel.

This is because the QFlag of DockWidgetArea that is being passed, as it is not
able to be parsed down to an int. Most probably some historical change
either in Qt or FC.

This error also caused to not write current BIM Views/Help panel setup
to config, resulting in the position being resetted every run.
2025-05-23 11:47:10 +02:00
tetektoza
8f8ed52764 BIM: Add missing IFC attributes for both Pipe and Rebar
As the title says - those two tools missed IFC attributes, since they
used different path of initialization than other components, so this
patch makes sure we initialize those properties properly.
2025-05-23 10:50:47 +02:00
Furgo
13924c0469 BIM: allow deleting locked IFC properties when needed 2025-05-23 10:18:36 +02:00
Furgo
f20d00c570 Revert "BIM: add workaround for Draft workbench test mockup"
This reverts commit 5be803863e7552f7cb96998cd682edd3c556b4be.
2025-05-23 10:14:40 +02:00
Furgo
9b83b4b051 BIM: add workaround for Draft workbench test mockup 2025-05-23 10:14:40 +02:00
Furgo
f21fcf4f26 BIM: add basic error checking in unit test, make extrusion a solid 2025-05-23 10:14:40 +02:00
Furgo
0ae1a33e73 BIM: add area calculation unit tests for Arch Components 2025-05-23 10:14:40 +02:00
Furgo
3d07b8e826 BIM: support curved vertical edges for area calculation 2025-05-23 10:14:40 +02:00
Furgo
175d47e5da BIM: refactor component area calculation into a helper class 2025-05-23 10:14:40 +02:00
Furgo
5d77bb7429 BIM: correct planar check to avoid vertical/horizontal misclassification 2025-05-23 10:14:40 +02:00
Furgo
22f329c140 BIM: add support for bsplines in Arch structures 2025-05-23 10:14:40 +02:00
Ralf Habacker
2da686a89d BIM: Add support for concatenation of lines in Obj files
If a line in an obj file ends with '\', the following line is appended.
2025-05-22 12:54:35 +02:00
Ralf Habacker
f2f9b1ddd3 BIM: Add support to import lines from obj files
Single lines and polylines from 'l' instructions are imported as
Draft::Wire objects and grouped with an App:Part object so that
the lines contained in the obj file are included in the
corresponding object definition.

Single lines defined in the obj file within a block are converted
into a non-closed polyline if the second point of a line matches
the first point of the following line.

Fixes #21326
2025-05-22 12:54:03 +02:00
tetektoza
3b441792b8 BIM: Make a correct mapping to weight during IFC Quantities assignment
Currently we can assign quantities to a BIM object, but upon exporting
quantities are not visible in the IFC file.

This was because we didn't have a correct mapping to weight property.
`App::PropertyWeight" basically doesn't exist, so this patch changes it
to `App::PropertyMass`, as it is the same. The incorrect mapping
resulted in a traceback, which in turn resulted in missing a big part of
additional processing for the properties, which resulted in
`writeQuantities` checking for non-existent IfcData in the object.
2025-05-19 18:10:37 +02:00
Furgo
47c76827d8 BIM: do not prune Roof objects on export 2025-05-19 18:00:38 +02:00
Benjamin Nauck
05af09abb9 Merge pull request #21042 from furgo16/add-taskpanel-walloffset
BIM: add Offset input to wall creation task panel
2025-05-19 17:45:46 +02:00
tetektoza
c8395f43fc BIM: Avoid traceback if there is no Classification selected
As the title says, if user selects `OK` button and has no Classification
selected (which can happen only if the list is empty I think), then they
get a traceback since we're trying to access list of selections
directly.

So this patch adds a small patch to close the form if user has pressed
`OK` button and did not select anything.
2025-05-19 17:41:24 +02:00
tetektoza
b8b9e221b0 BIM: Rename to alpha instead of trans after switch to RGBA 2025-05-15 23:00:20 +02:00
Luz Paz
ee4fa234c9 Fix various typos
Missed by the codespell CI not being functional for a period of time.
2025-05-15 10:59:48 -05:00
Chris Hennes
f5ab6295ba UI: Remove qPixmapFromMimeSource pixmap function
This function dates back to Qt3, and was removed in Qt4. Modern Qt no
longer uses this ui file entry, and in some circumstances the uic
complains about its presence.
2025-05-15 00:56:30 +02:00
Paul Lee
fec569f017 [ArchStairs] ArchSketch Support and Refactoring Phase 3 + Regression
Phase 2 Subsequent to #21025 + Regression Fix

FC Forum Discussion:-
https://forum.freecad.org/viewtopic.php?p=814274#p814274

ArchSketch Support, PropertySet, and Refactoring to enable more complex Stairs shape.
2025-05-13 11:31:09 +02:00
Paul Lee
9da5eae6f0 [BimWindow] Interactive Creation Tool: Check if SketchArch is Enabled (ArchSketchLock)
Improvement to User Interactive Experience:
- The Window Interactive Tool would check if SketchArch-addon is enabled by user, i.e. if ArchSketckLock is checked.
- If not, the conventional creation behaviour is used, SketchArch properties would not be added to Window object.
- It also check if Base of Wall is ArchSketch or not.

Github Discussion:
- https://github.com/paullee0/FreeCAD_SketchArch/issues/27#issuecomment-2837652351
2025-05-13 11:29:09 +02:00
tetektoza
01f3fcb343 BIM: Allow changing Sill parameter in Properties for Window
User has no possibility to change Sill parameter upon adding Window, it
is only possible while creating Window for the first time.

So this patch adds this parameter, and changing it moves the *BASE*
coordinate of the object in Z direction.
2025-05-13 11:25:31 +02:00
tetektoza
8002693157 BIM: Switch Visibility of ViewObj on/off to restore it in all objs 2025-05-13 11:03:05 +02:00
tetektoza
1fef7dff94 BIM: Do not hide children of Building if Building has been isolated 2025-05-13 11:03:05 +02:00
tetektoza
69ad218f5c BIM: Remove additional recompute at the end of isolate 2025-05-13 11:03:05 +02:00
tetektoza
b7718efd5c BIM: Exclude viewtree from cached items and add a sanity check 2025-05-13 11:03:05 +02:00
tetektoza
10d476a35b BIM: Cache the tree elements beforehand and hide only necessary ones 2025-05-13 11:03:05 +02:00
tetektoza
8c3439e992 BIM: Hide all objects that aren't selected during Isolate
Currently if user selects an item and does `Isolate` operation on it in
BIM, everything is being hidden if the item was inside another container
(like Building).

This is because we are prioritizing on hiding parents of current object
if they are not the selected ones, which is causing the child of the
parent to be hidden as well (duh).

So, this patch fixes isolate method to hide all other parents and their
childs. If they are not a parent of our child under selection -> hide
them and proceed further. If we are processing parent of our selection,
just hide anything on current level that is not our selection while
leaving parent intact.
2025-05-13 11:03:05 +02:00
tetektoza
d63382262e BIM: Change from RGBT to RGBA for IFC
Currently users by default have transparent window frames and doors.

Turns out that at some point there was a switch from RGBT to RGBA, which
means last transparency element differs in the range of transparency
that it specifies (RGBT, where 1 - fully visible, RGBA where 1 - fully
transparent). As the changed happened, all of the windows and door
became transparent.

This patch changes that, from RGBT to RGBA so we will map transparency
properly, as well as adding a possibility to set transparency through
material.
2025-05-12 23:36:13 +02:00