Fix #1401. Modified custom psets are now immediately available without needing to restart Blender.

This commit is contained in:
Dion Moult
2021-07-29 16:15:31 +10:00
parent c257afbd1c
commit 6bf692b44d
5 changed files with 29 additions and 15 deletions
@@ -195,6 +195,7 @@ class EditPset(bpy.types.Operator):
"pset": self.file.by_id(pset_id),
"name": props.active_pset_name,
"properties": properties,
"pset_template": blenderbim.bim.schema.ifc.psetqto.get_by_name(props.active_pset_name),
},
)
else:
@@ -1,7 +1,8 @@
import bpy
import blenderbim.bim.schema
from blenderbim.bim.prop import Attribute
from ifcopenshell.api.pset.data import Data
import blenderbim.bim.schema
from blenderbim.bim.ifc import IfcStore
from bpy.types import PropertyGroup
from bpy.props import (
PointerProperty,
@@ -29,16 +30,17 @@ def purge():
def getPsetNames(self, context):
global psetnames
obj = context.active_object
if "/" in obj.name:
ifc_class = obj.name.split("/")[0]
if ifc_class not in psetnames:
psets = blenderbim.bim.schema.ifc.psetqto.get_applicable(ifc_class, pset_only=True)
psetnames[ifc_class] = [(p.Name, p.Name, "") for p in psets]
assigned_names = [
Data.psets[p]["Name"] for p in Data.products[obj.BIMObjectProperties.ifc_definition_id]["psets"]
]
return [p for p in psetnames[ifc_class] if p[0] not in assigned_names]
return []
if not obj.BIMObjectProperties.ifc_definition_id:
return []
element = IfcStore.get_file().by_id(obj.BIMObjectProperties.ifc_definition_id)
ifc_class = element.is_a()
if ifc_class not in psetnames:
psets = blenderbim.bim.schema.ifc.psetqto.get_applicable(ifc_class, pset_only=True)
psetnames[ifc_class] = [(p.Name, p.Name, "") for p in psets]
assigned_names = [
Data.psets[p]["Name"] for p in Data.products[obj.BIMObjectProperties.ifc_definition_id]["psets"]
]
return [p for p in psetnames[ifc_class] if p[0] not in assigned_names]
def getMaterialPsetNames(self, context):
@@ -1,6 +1,8 @@
import bpy
import ifcopenshell
import ifcopenshell.api
import blenderbim.bim.schema
import blenderbim.bim.handler
from blenderbim.bim.module.pset_template.prop import updatePsetTemplateFiles, updatePsetTemplates
from ifcopenshell.api.pset_template.data import Data
from blenderbim.bim.ifc import IfcStore
@@ -165,6 +167,8 @@ class SavePsetTemplateFile(bpy.types.Operator):
def execute(self, context):
IfcStore.pset_template_file.write(IfcStore.pset_template_path)
blenderbim.bim.handler.purge_module_data()
blenderbim.bim.schema.reload()
return {"FINISHED"}
+4
View File
@@ -77,3 +77,7 @@ class IfcSchema:
ifc = IfcSchema()
def reload():
global ifc
ifc = IfcSchema()