mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-16 21:42:19 +00:00
Fix #3484. You can now have project-specific pset templates distributed with your project in a relative path. Defaults to pset/.
This commit is contained in:
@@ -715,6 +715,7 @@ class LoadProjectElements(bpy.types.Operator):
|
|||||||
print("Import finished in {:.2f} seconds".format(time.time() - start))
|
print("Import finished in {:.2f} seconds".format(time.time() - start))
|
||||||
context.scene.BIMProjectProperties.is_loading = False
|
context.scene.BIMProjectProperties.is_loading = False
|
||||||
|
|
||||||
|
tool.Project.load_pset_templates()
|
||||||
tool.Project.load_default_thumbnails()
|
tool.Project.load_default_thumbnails()
|
||||||
tool.Project.set_default_context()
|
tool.Project.set_default_context()
|
||||||
tool.Project.set_default_modeling_dimensions()
|
tool.Project.set_default_modeling_dimensions()
|
||||||
|
|||||||
@@ -327,6 +327,7 @@ class BIMProperties(PropertyGroup):
|
|||||||
data_dir: StringProperty(
|
data_dir: StringProperty(
|
||||||
default=os.path.join(cwd, "data") + os.path.sep, name="Data Directory", update=update_data_dir
|
default=os.path.join(cwd, "data") + os.path.sep, name="Data Directory", update=update_data_dir
|
||||||
)
|
)
|
||||||
|
pset_dir: StringProperty(default=os.path.join("psets") + os.path.sep, name="Default Psets Directory")
|
||||||
ifc_file: StringProperty(name="IFC File", update=update_ifc_file)
|
ifc_file: StringProperty(name="IFC File", update=update_ifc_file)
|
||||||
last_transaction: StringProperty(name="Last Transaction")
|
last_transaction: StringProperty(name="Last Transaction")
|
||||||
should_section_selected_objects: BoolProperty(name="Section Selected Objects", default=False)
|
should_section_selected_objects: BoolProperty(name="Section Selected Objects", default=False)
|
||||||
|
|||||||
@@ -17,10 +17,10 @@
|
|||||||
# along with BlenderBIM Add-on. If not, see <http://www.gnu.org/licenses/>.
|
# along with BlenderBIM Add-on. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import bpy
|
||||||
import json
|
import json
|
||||||
import ifcopenshell
|
import ifcopenshell
|
||||||
import ifcopenshell.util.pset
|
import ifcopenshell.util.pset
|
||||||
import bpy
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
cwd = os.path.dirname(os.path.realpath(__file__))
|
cwd = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
|||||||
@@ -246,6 +246,8 @@ class BIM_ADDON_preferences(bpy.types.AddonPreferences):
|
|||||||
row.prop(context.scene.BIMProperties, "data_dir")
|
row.prop(context.scene.BIMProperties, "data_dir")
|
||||||
row.operator("bim.select_data_dir", icon="FILE_FOLDER", text="")
|
row.operator("bim.select_data_dir", icon="FILE_FOLDER", text="")
|
||||||
|
|
||||||
|
row = self.layout.row(align=True)
|
||||||
|
row.prop(context.scene.BIMProperties, "psets_dir")
|
||||||
row = self.layout.row(align=True)
|
row = self.layout.row(align=True)
|
||||||
row.prop(context.scene.DocProperties, "sheets_dir")
|
row.prop(context.scene.DocProperties, "sheets_dir")
|
||||||
row = self.layout.row(align=True)
|
row = self.layout.row(align=True)
|
||||||
|
|||||||
@@ -21,8 +21,10 @@ import bpy
|
|||||||
import ifcopenshell
|
import ifcopenshell
|
||||||
import ifcopenshell.util.unit
|
import ifcopenshell.util.unit
|
||||||
import blenderbim.core.tool
|
import blenderbim.core.tool
|
||||||
|
import blenderbim.bim.schema
|
||||||
import blenderbim.tool as tool
|
import blenderbim.tool as tool
|
||||||
from blenderbim.bim.ifc import IfcStore
|
from blenderbim.bim.ifc import IfcStore
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
class Project(blenderbim.core.tool.Project):
|
class Project(blenderbim.core.tool.Project):
|
||||||
@@ -51,6 +53,13 @@ class Project(blenderbim.core.tool.Project):
|
|||||||
ifc_class = sorted(tool.Ifc.get().by_type("IfcElementType"), key=lambda e: e.is_a())[0].is_a()
|
ifc_class = sorted(tool.Ifc.get().by_type("IfcElementType"), key=lambda e: e.is_a())[0].is_a()
|
||||||
bpy.ops.bim.load_type_thumbnails(ifc_class=ifc_class, offset=0, limit=9)
|
bpy.ops.bim.load_type_thumbnails(ifc_class=ifc_class, offset=0, limit=9)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def load_pset_templates(cls):
|
||||||
|
pset_dir = tool.Ifc.resolve_uri(bpy.context.scene.BIMProperties.pset_dir)
|
||||||
|
if os.path.isdir(pset_dir):
|
||||||
|
for path in Path(pset_dir).glob("*.ifc"):
|
||||||
|
blenderbim.bim.schema.ifc.psetqto.templates.append(ifcopenshell.open(path))
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def run_aggregate_assign_object(cls, relating_obj=None, related_obj=None):
|
def run_aggregate_assign_object(cls, relating_obj=None, related_obj=None):
|
||||||
return blenderbim.core.aggregate.assign_object(
|
return blenderbim.core.aggregate.assign_object(
|
||||||
|
|||||||
Reference in New Issue
Block a user