mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-10 09:48:32 +00:00
New purge classifications feature, and imported systems shows up immediately
This commit is contained in:
@@ -184,6 +184,7 @@ if bpy is not None:
|
||||
operator.SaveDrawingStyle,
|
||||
operator.ActivateDrawingStyle,
|
||||
operator.EditVectorStyle,
|
||||
operator.PurgeProjectClassifications,
|
||||
prop.StrProperty,
|
||||
prop.Variable,
|
||||
prop.Role,
|
||||
|
||||
@@ -1431,11 +1431,16 @@ class IfcImporter():
|
||||
classification_filename = '{}-{}'.format(
|
||||
Path(os.path.basename(self.ifc_import_settings.input_file)).stem, element.Name)
|
||||
classification_file.write(os.path.join(
|
||||
bpy.context.scene.BIMProperties.schema_dir, 'classifications',
|
||||
bpy.context.scene.BIMProperties.schema_dir, 'project_classifications',
|
||||
'{}.ifc'.format(classification_filename)))
|
||||
classification.filename = classification_filename
|
||||
self.classifications[classification.filename] = classification
|
||||
|
||||
self.schema_dir = bpy.context.scene.BIMProperties.schema_dir
|
||||
from . import prop
|
||||
prop.classification_enum.clear()
|
||||
prop.getClassifications(self, bpy.context)
|
||||
|
||||
def get_classification_references(self, references):
|
||||
results = []
|
||||
for reference in references:
|
||||
|
||||
@@ -1871,7 +1871,7 @@ class AddClassification(bpy.types.Operator):
|
||||
'reference_tokens': 'ReferenceTokens'
|
||||
}
|
||||
for key, value in data_map.items():
|
||||
if getattr(data, value):
|
||||
if hasattr(data, value) and getattr(data, value):
|
||||
setattr(classification, key, str(getattr(data, value)))
|
||||
classification.filename = context.scene.BIMProperties.classification
|
||||
return {'FINISHED'}
|
||||
@@ -3572,10 +3572,25 @@ class RemoveDrawing(bpy.types.Operator):
|
||||
class EditVectorStyle(bpy.types.Operator):
|
||||
bl_idname = 'bim.edit_vector_style'
|
||||
bl_label = 'Edit Vector Style'
|
||||
index: bpy.props.IntProperty()
|
||||
|
||||
def execute(self, context):
|
||||
camera = context.scene.camera
|
||||
vector_style = context.scene.DocProperties.drawing_styles[camera.data.BIMCameraProperties.active_drawing_style_index].vector_style
|
||||
bpy.data.texts.load(os.path.join(context.scene.BIMProperties.data_dir, 'styles', vector_style + '.css'))
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
class PurgeProjectClassifications(bpy.types.Operator):
|
||||
bl_idname = 'bim.purge_project_classifications'
|
||||
bl_label = 'Purge Project Classifications'
|
||||
|
||||
def execute(self, context):
|
||||
self.schema_dir = bpy.context.scene.BIMProperties.schema_dir
|
||||
path = os.path.join(self.schema_dir, 'project_classifications')
|
||||
files = os.listdir(path)
|
||||
for f in files:
|
||||
os.remove(os.path.join(path, f))
|
||||
from . import prop
|
||||
prop.classification_enum.clear()
|
||||
prop.getClassifications(self, context)
|
||||
return {'FINISHED'}
|
||||
|
||||
@@ -304,6 +304,8 @@ def getClassifications(self, context):
|
||||
classification_enum.clear()
|
||||
files = os.listdir(os.path.join(self.schema_dir, 'classifications'))
|
||||
classification_enum.extend([(f.replace('.ifc', ''), f.replace('.ifc', ''), '') for f in files])
|
||||
files = os.listdir(os.path.join(self.schema_dir, 'project_classifications'))
|
||||
classification_enum.extend([(f.replace('.ifc', ''), f.replace('.ifc', ''), '') for f in files])
|
||||
return classification_enum
|
||||
|
||||
|
||||
|
||||
@@ -65,6 +65,8 @@ class IfcSchema():
|
||||
def load_classification(self, filename):
|
||||
if filename not in self.classifications:
|
||||
classification_path = os.path.join(self.schema_dir, 'classifications', '{}.ifc'.format(filename))
|
||||
if not os.path.isfile(classification_path):
|
||||
classification_path = os.path.join(self.schema_dir, 'project_classifications', '{}.ifc'.format(filename))
|
||||
self.classification_files[filename] = ifcopenshell.open(classification_path)
|
||||
self.classifications[filename] = self.classification_files[filename].by_type('IfcClassification')[0]
|
||||
classification = self.classifications[filename]
|
||||
|
||||
@@ -512,6 +512,7 @@ class BIM_PT_classifications(Panel):
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.prop(props, "classification", text='')
|
||||
row.operator("bim.purge_project_classifications", text='', icon='TRASH')
|
||||
row.operator("bim.add_classification", text='', icon='ADD')
|
||||
|
||||
if context.scene.BIMProperties.classification_references.raw_data:
|
||||
|
||||
Reference in New Issue
Block a user