This commit is contained in:
Andrej730
2024-07-08 11:39:19 +05:00
parent fc45e587c0
commit b45a995bb3
3 changed files with 35 additions and 3 deletions
+13 -1
View File
@@ -16,8 +16,20 @@
# You should have received a copy of the GNU General Public License
# along with BlenderBIM Add-on. If not, see <http://www.gnu.org/licenses/>.
from __future__ import annotations
from typing import TYPE_CHECKING, Optional
def purge_unused_profiles(ifc, profile):
if TYPE_CHECKING:
import bpy
import ifcopenshell
import blenderbim.tool as tool
def purge_unused_profiles(ifc: tool.Ifc, profile: tool.Profile) -> int:
"""Purge profiles that have no invserses.
:return: Number of removed profiles.
"""
purged_profiles = 0
for element_profile in profile.get_model_profiles():
if ifc.get().get_total_inverses(element_profile) > 0:
+11
View File
@@ -52,6 +52,17 @@ class Blender(blenderbim.core.tool.Blender):
OBJECT_TYPES_THAT_SUPPORT_EDIT_GPENCIL_MODE = ("GPENCIL",)
TYPE_MANAGER_ICON = "LIGHTPROBE_VOLUME" if bpy.app.version >= (4, 1, 0) else "LIGHTPROBE_GRID"
BLENDER_ENUM_ITEM = Union[tuple[str, str, str], tuple[str, str, str, str], tuple[str, str, str, str, str]]
"""
Options:
- (identifier, name, description)
- (identifier, name, description, number)
- (identifier, name, description, icon, number)
"""
@classmethod
def activate_camera(cls, obj: bpy.types.Object) -> None:
@@ -16,10 +16,19 @@
# You should have received a copy of the GNU Lesser General Public License
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import ifcopenshell
from typing import Literal
MATERIAL_SET_TYPE = Literal[
"IfcMaterialLayerSet",
"IfcMaterialProfileSet",
"IfcMaterialConstituentSet",
"IfcMaterialList",
]
def add_material_set(
file: ifcopenshell.file, name: str = "Unnamed", set_type: str = "IfcMaterialConstituentSet"
file: ifcopenshell.file, name: str = "Unnamed", set_type: MATERIAL_SET_TYPE = "IfcMaterialConstituentSet"
) -> ifcopenshell.entity_instance:
"""Adds a new material set
@@ -104,7 +113,7 @@ def add_material_set(
# Great! Let's assign our material set to our wall type.
ifcopenshell.api.material.assign_material(model, products=[wall_type], material=material_set)
"""
settings = {"name": name or "Unnamed", "set_type": set_type or "IfcMaterialConstituentSet"}
settings = {"name": name or "Unnamed", "set_type": set_type}
if settings["set_type"] == "IfcMaterialLayerSet":
return file.create_entity("IfcMaterialLayerSet", LayerSetName=settings["name"] or "Unnamed")