Merge branch 'IfcOpenShell-v0.7.0' into v0.7.0

This commit is contained in:
Carlos Villagrasa
2022-07-26 01:39:49 +02:00
9 changed files with 33 additions and 22 deletions
@@ -768,6 +768,8 @@ class ActivateBcfViewpoint(bpy.types.Operator):
bcfxml = bcfstore.BcfStore.get_bcfxml()
props = context.scene.BCFProperties
blender_topic = props.active_topic
if blender_topic is None:
return False
topic = bcfxml.topics[blender_topic.name]
return topic.viewpoints
@@ -95,7 +95,7 @@ def getBcfViewpoints(self, context, force_update=False):
props = context.scene.BCFProperties
bcfxml = bcfstore.BcfStore.get_bcfxml()
topic = props.active_topic
viewpoints = bcfxml.get_viewpoints(topic.name)
viewpoints = bcfxml.get_viewpoints(topic.name) if topic else {}
bcfviewpoints_enum.extend([(v, f"Viewpoint {i+1}", "") for i, v in enumerate(viewpoints.keys())])
return bcfviewpoints_enum
@@ -132,7 +132,7 @@ class UpdateRepresentation(bpy.types.Operator):
@classmethod
def poll(cls, context):
return context.active_object.mode == "OBJECT"
return context.active_object and context.active_object.mode == "OBJECT"
def execute(self, context):
return IfcStore.execute_ifc_operator(self, context)
@@ -240,7 +240,7 @@ class UpdateParametricRepresentation(bpy.types.Operator):
@classmethod
def poll(cls, context):
return context.active_object.mode == "OBJECT"
return context.active_object and context.active_object.mode == "OBJECT"
def execute(self, context):
self.file = IfcStore.get_file()
@@ -678,7 +678,7 @@ class LinkIfc(bpy.types.Operator):
if self.use_relative_path:
filepath = os.path.relpath(filepath, bpy.path.abspath("//"))
new.name = filepath
bpy.ops.bim.load_link(filepath=self.filepath)
bpy.ops.bim.load_link(filepath=filepath)
return {"FINISHED"}
def invoke(self, context, event):
@@ -209,8 +209,8 @@ class EnablePsetEditing(bpy.types.Operator):
new.is_selected = enum in selected_enum_items
else:
value = prop["NominalValue"]
prop = self.props.properties.add()
metadata = prop.metadata
new_prop = self.props.properties.add()
metadata = new_prop.metadata
metadata.set_value(value)
metadata.name = prop["Name"]
metadata.is_null = value is None
@@ -41,7 +41,7 @@ def draw_property(prop, layout, copy_operator=None):
def draw_single_property(prop, layout, copy_operator=None):
value_name = prop.metadata.get_value_name()
if not value_name:
layout.label(text=prop.metadata.name)
layout.label(text=prop["Name"])
return
layout.prop(
prop.metadata,
+2 -2
View File
@@ -63,7 +63,7 @@ architecture flow charts and diagrams. The code and its comments will guide you
through the process.
Before playing with the demo module, you may want to switch to using a source
installation. See `blenderbim/installation <./installation.rst>`_ for details.
installation. See `blenderbim/installation <./installation.html>`_ for details.
To see the demo module in action, you'll need to enable it. In
``src/blenderbim/blenderbim/bim/__init__.py``, uncomment the line for the demo
@@ -95,7 +95,7 @@ and how to test and structure it so that you can build incredibly complex
features in a maintainable way.
Tests for quality checking also exist. The system is designed so that you can
do "Test Driven Development". For reference on how to run these tests, see `blenderbim/running_tests <./running_tests.rst>`_
do "Test Driven Development". For reference on how to run these tests, see `blenderbim/running_tests <./running_tests.html>`_
for details. You can find the tests here:
::
+13 -3
View File
@@ -7,11 +7,21 @@ Scenario: Select all walls
And the object "Cube" is selected
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
And I press "bim.assign_class"
And I add a new group to IfcSelector
And I add a new query to IfcSelector
And I add a new item to "scene.IfcSelectorProperties.groups"
And I add a new item to "scene.IfcSelectorProperties.groups[0].queries"
And I set "scene.IfcSelectorProperties.groups[0].queries[0].selector" to "IFC Class"
And I set "scene.IfcSelectorProperties.groups[0].queries[0].active_option" to "124: IfcWall"
When I press "bim.filter_model_elements(option='select')"
Then the object "IfcWall/Cube" is selected
Scenario: Add selection to IfcGroup
Given an empty IFC project
And I add a cube
And the object "Cube" is selected
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
And I press "bim.assign_class"
And I set "scene.IfcSelectorProperties.selector_query_syntax" to ".IfcWall"
And I set "scene.IfcSelectorProperties.manual_override" to "True"
When I press "bim.add_to_ifc_group(group_name='Walls')"
And I press "bim.load_groups"
Then "scene.BIMGroupProperties.groups[-1].name" is "Walls"
+9 -10
View File
@@ -89,7 +89,7 @@ def i_add_an_empty():
@given("I add a sun")
@when("I add an sun")
@when("I add a sun")
def i_add_a_sun():
bpy.ops.object.light_add(type="SUN")
@@ -100,17 +100,15 @@ def i_add_a_material():
bpy.context.active_object.active_material = bpy.data.materials.new("Material")
@given("I add a new group to IfcSelector")
@when("I add a new group to IfcSelector")
def i_add_a_new_collection_item():
bpy.data.scenes["Scene"].IfcSelectorProperties.groups.add()
@given(parsers.parse('I add a new item to "{collection}"'))
@when(parsers.parse('I add a new item to "{collection}"'))
def i_add_a_new_collection_item(collection):
try:
eval(f"bpy.context.{collection}.add()")
except:
assert False, "Collection does not exist"
@given("I add a new query to IfcSelector")
@when("I add a new query to IfcSelector")
def i_add_a_new_collection_item():
bpy.data.scenes["Scene"].IfcSelectorProperties.groups[0].queries.add()
@given(parsers.parse('the material "{name}" colour is set to "{colour}"'))
@when(parsers.parse('the material "{name}" colour is set to "{colour}"'))
@@ -489,6 +487,7 @@ def prop_is_value(prop, value):
except:
pass
if not is_value:
print(f"bpy.context.{prop}")
actual_value = eval(f"bpy.context.{prop}")
assert False, f"Value is {actual_value}"