mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-11 22:31:55 +00:00
Fix #3551. Project specific pset templates now show up in the pset template editor.
This commit is contained in:
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import bpy
|
import bpy
|
||||||
|
import pathlib
|
||||||
import ifcopenshell
|
import ifcopenshell
|
||||||
import blenderbim.tool as tool
|
import blenderbim.tool as tool
|
||||||
from blenderbim.bim.ifc import IfcStore
|
from blenderbim.bim.ifc import IfcStore
|
||||||
@@ -51,17 +52,23 @@ class PsetTemplatesData:
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def pset_template_files(cls):
|
def pset_template_files(cls):
|
||||||
files = os.listdir(os.path.join(bpy.context.scene.BIMProperties.data_dir, "pset"))
|
results = []
|
||||||
return [(f.replace(".ifc", ""), f.replace(".ifc", ""), "") for f in files]
|
pset_dir = os.path.join(bpy.context.scene.BIMProperties.data_dir, "pset")
|
||||||
|
files = os.listdir(pset_dir)
|
||||||
|
for f in files:
|
||||||
|
results.append((os.path.join(pset_dir, f), f.strip(".ifc"), "Global Pset Template"))
|
||||||
|
|
||||||
|
pset_dir = tool.Ifc.resolve_uri(bpy.context.scene.BIMProperties.pset_dir)
|
||||||
|
if os.path.isdir(pset_dir):
|
||||||
|
for path in pathlib.Path(pset_dir).glob("*.ifc"):
|
||||||
|
results.append((str(path), os.path.basename(str(path)).strip(".ifc"), "Project Pset Template"))
|
||||||
|
|
||||||
|
return sorted(results, key=lambda x: x[1])
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def pset_templates(cls):
|
def pset_templates(cls):
|
||||||
if not IfcStore.pset_template_file:
|
if not IfcStore.pset_template_file:
|
||||||
IfcStore.pset_template_path = os.path.join(
|
IfcStore.pset_template_path = bpy.context.scene.BIMPsetTemplateProperties.pset_template_files
|
||||||
bpy.context.scene.BIMProperties.data_dir,
|
|
||||||
"pset",
|
|
||||||
bpy.context.scene.BIMPsetTemplateProperties.pset_template_files + ".ifc",
|
|
||||||
)
|
|
||||||
IfcStore.pset_template_file = ifcopenshell.open(IfcStore.pset_template_path)
|
IfcStore.pset_template_file = ifcopenshell.open(IfcStore.pset_template_path)
|
||||||
return [(str(t.id()), t.Name, "") for t in IfcStore.pset_template_file.by_type("IfcPropertySetTemplate")]
|
return [(str(t.id()), t.Name, "") for t in IfcStore.pset_template_file.by_type("IfcPropertySetTemplate")]
|
||||||
|
|
||||||
|
|||||||
@@ -94,11 +94,7 @@ def an_empty_ifc_2x3_project():
|
|||||||
|
|
||||||
@when("I load a new pset template file")
|
@when("I load a new pset template file")
|
||||||
def i_load_a_new_pset_template_file():
|
def i_load_a_new_pset_template_file():
|
||||||
IfcStore.pset_template_path = os.path.join(
|
IfcStore.pset_template_path = bpy.context.scene.BIMPsetTemplateProperties.pset_template_files
|
||||||
bpy.context.scene.BIMProperties.data_dir,
|
|
||||||
"pset",
|
|
||||||
bpy.context.scene.BIMPsetTemplateProperties.pset_template_files + ".ifc",
|
|
||||||
)
|
|
||||||
IfcStore.pset_template_file = ifcopenshell.open(IfcStore.pset_template_path)
|
IfcStore.pset_template_file = ifcopenshell.open(IfcStore.pset_template_path)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user