As described in #6744 partial stub wrapper is completely replacing the type information from the wrapper, so having partial stub is making things worse than they were before.
This commit is adding all available symbols from the wrapper to the stub and allows to gradually include type information to the stub.
It also adds a safe net to ensure stub and wrapper won't go out of sync.
* bSDD now supports a couple more args when querying the API.
* Fetching properties via the classification UI has been removed
* The bSDD dictionary selector has been merged into the classification
source dropdown
* The bSDD dictionary selector merged into the property set name
dropdown
* You can now search for properties in the bSDD directly when adding
properties
* You can browse properties via groups or classifications (based on
assigned classifications)
* You can browse properties via keyword (with some limitations due to
the API)
* You can selectively choose which properties you then want to add.
Only basic support right now.
The error was:
```
Traceback (most recent call last):
File "\IfcOpenShell\src\ifcopenshell-python\ifcopenshell\util\generate_pset_templates.py", line 416, in <module>
templates_generator.parse_ifc4x3_data()
File "\IfcOpenShell\src\ifcopenshell-python\ifcopenshell\util\generate_pset_templates.py", line 94, in parse_ifc4x3_data
self.parse_psets_data("IFC4X3", pset_data_glob, "IFC4X3 Property Set Templates", str(IFC4x3_OUTPUT_PATH))
File "\IfcOpenShell\src\ifcopenshell-python\ifcopenshell\util\generate_pset_templates.py", line 129, in parse_psets_data
schema = ifcopenshell.ifcopenshell_wrapper.schema_by_name(schema_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "\ifcopenshell\ifcopenshell_wrapper.py", line 9037, in schema_by_name
return _ifcopenshell_wrapper.schema_by_name(arg1)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: No schema named IFC4X3
```
There are a few differences to the previous implementation:
1. It is no longer recalculated on wall regeneration. The new wall
regeneration is strict to the spec on the rules of rel connects path,
and so this being a "userdefined" connection we only calculate it
explicitly when the user invokes the operator.
2. It uses meshes instead of clipping planes, so you can clip to
strange shapes or gable roofs or whatever. Nice.